@regex-designer/js 0.1.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,243 +1,249 @@
1
- # Regular Expression Designer
1
+ # Regular Expression Designer | JavaScript
2
2
 
3
- A small TypeScript library for composing JavaScript regular expressions in a readable, reusable way.
3
+ A small TypeScript library for composing native JavaScript regular expressions in a readable, reusable way.
4
4
 
5
5
  ## API
6
6
 
7
- The library exposes a default factory and a `RegexDesigner` class. Each builder acts like a lazy regex composer: methods return template objects that render their pattern only when stringified (e.g. `toString()`) or invoked to compile to a native `RegExp`.
7
+ - [default](#default)
8
+ - [set / var](#set--var)
9
+ - [tpl](#tpl)
10
+ - [raw](#raw)
11
+ - [start / end / whole](#start--end--whole)
12
+ - [group](#group)
13
+ - [named](#named)
14
+ - [ref](#ref)
15
+ - [opt](#opt)
16
+ - [qty](#qty)
17
+ - [or](#or)
18
+ - [ahead / ahead_pos / ahead_neg](#ahead--ahead_pos--ahead_neg)
19
+ - [behind / behind_pos / behind_neg](#behind--behind_pos--behind_neg)
20
+
21
+ The JavaScript package exposes a default factory and a `JSRegexDesigner` class. It extends the abstract `RegexDesigner` contract from `@regex-designer/core`. Templates are compiled to a native `RegExp`.
8
22
 
9
23
  ```ts
10
- import createDesigner from '@regex-designer/js';
24
+ import createDesigner from "@regex-designer/js";
25
+
26
+ const r$ = createDesigner();
11
27
 
12
- const r$ = createDesigner()
13
- .set('number', r$.qty([1, Infinity], /[0-9]/));
14
- .set('identifier', r$.qty([1, Infinity], /[a-z0-9-]/));
28
+ r$.set("number", r$.qty([1, Infinity], "[0-9]"));
29
+ r$.set("identifier", r$.qty([1, Infinity], "[a-z0-9-]"));
15
30
 
31
+ // (?<version>(?:[0-9]){1,}\.(?:[0-9]){1,}\.(?:[0-9]){1,}(?:-(?<prerelease>(?:[a-z0-9-]){1,}))?)
16
32
  const template = r$.named(
17
- 'version',
18
- r$.var('number'), /\./, r$.var('number'), /\./, r$.var('number'),
19
- r$.opt('-', r$.named('prerelease', r$.var('identifier'))),
33
+ "version",
34
+ r$.var("number"), "\\.", r$.var("number"), "\\.", r$.var("number"),
35
+ r$.opt("-", r$.named("prerelease", r$.var("identifier"))),
20
36
  );
21
- const regex = template('i'); // Compile template by using it as a function
22
- regex.test('12.3.4-beta-1'); // true
23
- regex.exec('12.3.4-beta-1')?.groups; // { version: '12.3.4-beta-1', prerelease: 'beta-1' }
24
- ```
37
+ const regex = template("i"); // Compile the template to a native RegExp
25
38
 
26
- ### tpl(...patterns)
27
-
28
- ```ts
29
- tpl(...patterns: RegexValue[]): RegexTemplate
30
- ```
31
-
32
- Concatenates pattern parts as-is, without adding grouping, alternation, or escaping:
33
-
34
- ```ts
35
- r$.tpl('A', r$.raw('B.C')); // AB\\.C
39
+ regex.test("12.3.4-beta-1"); // true
40
+ regex.exec("12.3.4-beta-1")?.groups; // { version: "12.3.4-beta-1", prerelease: "beta-1" }
36
41
  ```
37
42
 
38
43
  ### default
39
44
 
40
45
  ```ts
41
- default function(): RegexDesigner
46
+ default function(): JSRegexDesigner
42
47
  ```
43
48
 
44
- Examples:
49
+ Create a new JavaScript regex designer with its own variable scope.
45
50
 
46
51
  ```ts
47
- import createDesigner from '@regex-designer/js';
52
+ import createDesigner from "@regex-designer/js";
48
53
 
49
- const r$ = createDesigner();
50
- r$.named('user', /[^@]+/, '@', /[a-z]+/); // (?<user>[^@]+@[a-z]+)
54
+ const r$: JSRegexDesigner = createDesigner();
51
55
  ```
52
56
 
53
- ### or(...patterns)
57
+ ### set / var
54
58
 
55
59
  ```ts
56
- or(...patterns: RegexValue[]): RegexTemplate
60
+ set(name: string, ...patterns: RegexValue[]): this
61
+ var(name: string): RegexTemplate
57
62
  ```
58
63
 
59
- Examples:
64
+ Define a reusable lazy variable on a designer, then reference it when composing
65
+ a pattern. The variable resolves when the template is rendered. Rendering an unset variable or circular dependencies between variables throws an error.
60
66
 
61
67
  ```ts
62
- r$.or('A', 'B'); // A|B
63
- r$.or(/foo/, 'bar', r$.raw('baz')); // foo|bar|baz
68
+ r$.set("word", r$.or("cat", "dog"));
69
+ r$.var("word"); // cat|dog
64
70
  ```
65
71
 
66
- ### named(name, ...patterns)
72
+ ### tpl
67
73
 
68
74
  ```ts
69
- named(name: string, ...patterns: RegexValue[]): RegexTemplate
75
+ tpl(...patterns: RegexValue[]): RegexTemplate
70
76
  ```
71
77
 
72
- Examples:
78
+ Concatenate patterns without adding groups or escaping.
73
79
 
74
80
  ```ts
75
- r$.named('value', 'A', 'B'); // (?<value>AB)
76
- r$.named('word', r$.or('cat', 'dog')); // (?<word>cat|dog)
81
+ r$.tpl("A", "B"); // AB
77
82
  ```
78
83
 
79
- ### group(options, ...patterns)
84
+ ### raw
80
85
 
81
86
  ```ts
82
- group(options: GroupOptions, ...patterns: RegexValue[]): RegexTemplate
83
- type GroupOptions = boolean | { name: string } | { capture: boolean };
87
+ raw(...patterns: string[]): RegexTemplate
84
88
  ```
85
89
 
86
- Examples:
90
+ Escape literal text for use in a regex pattern.
87
91
 
88
92
  ```ts
89
- r$.group(false, 'A', 'B'); // (?:AB)
90
- r$.group({ name: 'part' }, 'A', 'B'); // (?<part>AB)
91
- r$.group({ capture: false }, 'A', 'B'); // (?:AB)
93
+ r$.raw("a.b", "*"); // \x61\.b\*
94
+ r$.raw("https://example.com"); // \x68ttps\x3a\/\/example\.com
92
95
  ```
93
96
 
94
- Options:
95
-
96
- - `options` can be a boolean or an object.
97
- - `true` creates a normal capturing group.
98
- - `false` creates a non-capturing group.
99
- - `group({ name: 'x' })` creates a named capturing group.
100
- - `name` and `capture` are mutually exclusive; passing both throws a `TypeError`.
101
-
102
- ### opt(...patterns)
97
+ ### start / end / whole
103
98
 
104
99
  ```ts
105
- opt(...patterns: RegexValue[]): RegexTemplate
100
+ start(...patterns: RegexValue[]): RegexTemplate
101
+ end(...patterns: RegexValue[]): RegexTemplate
102
+ whole(...patterns: RegexValue[]): RegexTemplate
106
103
  ```
107
104
 
108
- Examples:
105
+ Choose whether the concatenated patterns must match at the [start, end, or across the whole input](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Input_boundary_assertion).
109
106
 
110
107
  ```ts
111
- r$.opt('C'); // (?:C)?
112
- r$.opt(r$.named('value', 'A', 'B')); // (?:(?<value>AB))?
108
+ r$.start("foo"); // ^(?:foo)
109
+ r$.end("bar"); // (?:bar)$
110
+ r$.whole("baz"); // ^(?:baz)$
113
111
  ```
114
112
 
115
- ### qty(quantity, ...patterns)
113
+ ### group
116
114
 
117
115
  ```ts
118
- qty(quantity: QuantityOptions, ...patterns: RegexValue[]): RegexTemplate
119
- type QuantityOptions = number | [min: number, max?: number] | QuantityNamedOptions;
120
- type QuantityNamedOptions = ({ exact: number } | { min: number; max?: number; }) & { greedy?: boolean };
116
+ group(options: boolean, ...patterns: RegexValue[]): RegexTemplate
117
+ group(options: { name: string }, ...patterns: RegexValue[]): RegexTemplate
118
+ group(options: { capture?: boolean }, ...patterns: RegexValue[]): RegexTemplate
121
119
  ```
122
120
 
123
- Examples:
121
+ Group patterns using [capturing](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Capturing_group)
122
+ or [non-capturing groups](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Non-capturing_group),
123
+ optionally assigning a [capture name](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Named_capturing_group).
124
124
 
125
125
  ```ts
126
- r$.qty(3, 'A', 'B'); // (?:AB){3}
127
- r$.qty([1, 3], 'A', 'B'); // (?:AB){1,3}
128
- r$.qty({ min: 2, max: 5, greedy: false }, 'A', 'B'); // (?:AB){2,5}?
129
- r$.qty({ exact: 2 }, 'A', 'B'); // (?:AB){2}
126
+ r$.group(true, "A"); // (A)
127
+ r$.group(false, "A", "B"); // (?:AB)
128
+ r$.group({ name: "part" }, "A", "B"); // (?<part>AB)
129
+ r$.group({ capture: true }, "A"); // (A)
130
+ r$.group({ capture: false }, "A", "B"); // (?:AB)
130
131
  ```
131
132
 
132
- Options:
133
-
134
- - `number` means an exact repetition count.
135
- - `[min, max?]` means a range, with `max` omitted for open-ended repetition.
136
- - `{ exact }` is a shorthand for exact repetition.
137
- - `{ min, max? }` creates a bounded repetition.
138
- - `max` can be `Infinity` for open-ended repetition.
139
- - `{ greedy?: boolean }` for lazy quantifiers.
140
- - Quantifiers are greedy by default.
141
-
142
- ### raw(...strings)
133
+ ### named
143
134
 
144
135
  ```ts
145
- raw(...patterns: string[]): RegexTemplate
136
+ named(name: string, ...patterns: RegexValue[]): RegexTemplate
146
137
  ```
147
138
 
148
- Examples:
139
+ Create a [named capturing group](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Named_capturing_group)
140
+ around the concatenated patterns.
149
141
 
150
142
  ```ts
151
- r$.raw('a.b', '*').source; // a\.b\*
152
- r$.raw('https://example.com') // https://example\.com
143
+ r$.named("value", "A", "B"); // (?<value>AB)
144
+ r$.named("word", r$.or("cat", "dog")); // (?<word>cat|dog)
153
145
  ```
154
146
 
155
- ### ref(reference)
147
+ ### ref
156
148
 
157
149
  ```ts
158
150
  ref(reference: number | string): RegexTemplate
159
151
  ```
160
152
 
161
- Examples:
153
+ Create a [numeric](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Backreference) or [named](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Named_backreference) backreference.
162
154
 
163
155
  ```ts
164
- // (B)\1
165
156
  r$.tpl(
166
- r$.group(true, 'B'),
157
+ r$.group(true, "B"),
167
158
  r$.ref(1),
168
- );
159
+ ); // (B)\1
169
160
 
170
- // (?<name>B)\k<name>
171
161
  r$.tpl(
172
- r$.named('name', 'B'),
173
- r$.ref('name'),
174
- );
162
+ r$.named("name", "B"),
163
+ r$.ref("name"),
164
+ ); // (?<name>B)\k<name>
175
165
  ```
176
166
 
177
- ### ahead(...patterns) / ahead_pos(...patterns) / ahead_neg(...patterns)
167
+ ### opt
178
168
 
179
169
  ```ts
180
- ahead(positive: boolean, ...patterns: RegexValue[]): RegexTemplate
181
- ahead_pos(...patterns: RegexValue[]): RegexTemplate
182
- ahead_neg(...patterns: RegexValue[]): RegexTemplate
170
+ opt(...patterns: RegexValue[]): RegexTemplate
183
171
  ```
184
172
 
185
- Examples:
173
+ Make the concatenated patterns [optional](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Quantifier) using a non-capturing group.
186
174
 
187
175
  ```ts
188
- r$.ahead_pos('foo'); // (?=foo)
189
- r$.ahead_neg('bar'); // (?!bar)
176
+ r$.opt("C"); // (?:C)?
177
+ r$.opt(r$.named("value", "A", "B")); // (?:(?<value>AB))?
190
178
  ```
191
179
 
192
- ### behind(...patterns) / behind_pos(...patterns) / behind_neg(...patterns)
180
+ ### qty
193
181
 
194
182
  ```ts
195
- behind(positive: boolean, ...patterns: RegexValue[]): RegexTemplate
196
- behind_pos(...patterns: RegexValue[]): RegexTemplate
197
- behind_neg(...patterns: RegexValue[]): RegexTemplate
183
+ qty(quantity: number, ...patterns: RegexValue[]): RegexTemplate
184
+ qty(quantity: [min: number, max?: number], ...patterns: RegexValue[]): RegexTemplate
185
+ qty(quantity: { exact: number; greedy?: boolean }, ...patterns: RegexValue[]): RegexTemplate
186
+ qty(quantity: { min: number; max?: number; greedy?: boolean }, ...patterns: RegexValue[]): RegexTemplate
198
187
  ```
199
188
 
200
- Examples:
189
+ [Repeat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Quantifier) the concatenated patterns according to the supplied bounds.
201
190
 
202
191
  ```ts
203
- r$.behind_pos('foo'); // (?<=foo)
204
- r$.behind_neg('bar'); // (?<!bar)
192
+ r$.qty(3, "A", "B"); // (?:AB){3}
193
+ r$.qty([3, 3], "A", "B"); // (?:AB){3}
194
+ r$.qty([1, 3], "A", "B"); // (?:AB){1,3}
195
+ r$.qty([1, Infinity], "A", "B"); // (?:AB){1,}
196
+ r$.qty({ exact: 3 }, "A", "B"); // (?:AB){3}
197
+ r$.qty({ exact: 3, greedy: false }, "A", "B"); // (?:AB){3}?
198
+ r$.qty({ min: 2 }, "A", "B"); // (?:AB){2,}
199
+ r$.qty({ min: 2, max: 5 }, "A", "B"); // (?:AB){2,5}
200
+ r$.qty({ min: 2, max: 5, greedy: false }, "A", "B"); // (?:AB){2,5}?
205
201
  ```
206
202
 
207
- ### set(name, pattern) / var(name)
203
+ ### or
208
204
 
209
205
  ```ts
210
- set(name: string, patterns: ...RegexValue[]): this
211
- var(name: string): RegexTemplate
206
+ or(...patterns: RegexValue[]): RegexTemplate
212
207
  ```
213
208
 
214
- Examples:
209
+ Join patterns with [disjunction](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Disjunction)
210
+ without adding groups.
215
211
 
216
212
  ```ts
217
- r$.set('word', r$.or('cat', 'dog'));
218
- r$.var('word'); // cat|dog
213
+ r$.or("cat", "dog"); // cat|dog
214
+ r$.or("foo", "bar", r$.raw("baz")); // foo|bar|\x62az
219
215
  ```
220
216
 
221
- Options:
217
+ ### ahead / ahead_pos / ahead_neg
222
218
 
223
- - `set()` stores a reusable pattern..
224
- - `var()` resolves that pattern lazily when rendering.
225
- - Variables are scoped to the builder instance, so separate builders can reuse the same names without conflict.
226
- - Rendering an unset variable throws an error.
227
- - Circular dependencies between variables also throw an error.
219
+ ```ts
220
+ ahead(positive: boolean, ...patterns: RegexValue[]): RegexTemplate
221
+ ahead_pos(...patterns: RegexValue[]): RegexTemplate
222
+ ahead_neg(...patterns: RegexValue[]): RegexTemplate
223
+ ```
228
224
 
229
- ## Development
225
+ Create a positive or negative [lookahead assertion](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Lookahead_assertion).
230
226
 
231
- See [AGENTS.md](AGENTS.md) for design choices and contribution conventions shared
232
- by human contributors and AI coding assistants.
227
+ ```ts
228
+ r$.ahead(true, "foo"); // (?=foo)
229
+ r$.ahead(false, "foo"); // (?!foo)
230
+ r$.ahead_pos("foo"); // (?=foo)
231
+ r$.ahead_neg("bar"); // (?!bar)
232
+ ```
233
233
 
234
- The project relies on Node.js 24.x:
234
+ ### behind / behind_pos / behind_neg
235
235
 
236
- ```sh
237
- npm ci
238
- npm run check
236
+ ```ts
237
+ behind(positive: boolean, ...patterns: RegexValue[]): RegexTemplate
238
+ behind_pos(...patterns: RegexValue[]): RegexTemplate
239
+ behind_neg(...patterns: RegexValue[]): RegexTemplate
239
240
  ```
240
241
 
241
- The build emits ESM JavaScript, TypeScript declarations, and source maps in
242
- `dist/`. Tests are written in TypeScript, type-checked, and executed with the
243
- native Node.js test runner against the built library.
242
+ Create a positive or negative [lookbehind assertion](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Lookbehind_assertion).
243
+
244
+ ```ts
245
+ r$.behind(true, "foo"); // (?<=foo)
246
+ r$.behind(false, "foo"); // (?<!foo)
247
+ r$.behind_pos("foo"); // (?<=foo)
248
+ r$.behind_neg("bar"); // (?<!bar)
249
+ ```
package/dist/index.d.ts CHANGED
@@ -1,83 +1,55 @@
1
- /** A lazy regex template that can render pattern text or compile to a native RegExp. */
2
- export interface RegexTemplate {
3
- /** Compile the rendered pattern with the supplied flags. */
4
- (flags?: string): RegExp;
5
- /** Render the pattern; when compiling, validates embedded Unicode flags. */
6
- render(flags?: string, compiling?: boolean): string;
7
- /** Render the pattern text without compiling it. */
8
- toString(): string;
9
- }
10
- /** Check whether a value is a regex template. */
11
- export declare function isRegexTemplate(value: unknown): value is RegexTemplate;
12
1
  /**
13
- * A regex source string, native RegExp, or lazy regex template.
14
- * Strings are regex syntax, not escaped literals. Embedded RegExp values scope
15
- * their i, m, and s flags locally, require u or v when compiling, and do not
16
- * carry over d, g, or y.
2
+ * The JavaScript package exposes a default factory and a `JSRegexDesigner` class. It extends the abstract `RegexDesigner` contract from `@regex-designer/core`. Templates are compiled to a native `RegExp`.
3
+ */
4
+ import type { GroupOptions, QuantityOptions, RegexDesignerWithBackreferences, RegexDesignerWithLookarounds, RegexTemplate as CoreRegexTemplate, RegexValue as CoreRegexValue } from "@regex-designer/core";
5
+ import { RegexDesigner } from "@regex-designer/core";
6
+ export type { GroupNamedOptions, GroupOptions, QuantityNamedOptions, QuantityOptions, RegexDesignerWithBackreferences, RegexDesignerWithLookarounds, } from "@regex-designer/core";
7
+ export type RegexTemplate = CoreRegexTemplate<RegExp>;
8
+ export type RegexValue = CoreRegexValue<RegExp>;
9
+ export { isRegexTemplate } from "@regex-designer/core";
10
+ /**
11
+ * Create a new JavaScript regex designer with its own variable scope.
12
+ * @readme default
17
13
  */
18
- export type RegexValue = string | RegExp | RegexTemplate;
19
- /** Mutually exclusive settings for a named capturing group or an unnamed group. */
20
- export type GroupNamedOptions = {
21
- name: string;
22
- capture?: never;
23
- } | {
24
- name?: never;
25
- capture?: boolean;
26
- };
27
- /** Configure a group with a capture boolean or named-group options. */
28
- export type GroupOptions = GroupNamedOptions | boolean;
29
- /** Repetition bounds; specify either an exact count or a minimum and optional maximum. */
30
- export type QuantityNamedOptions = ({
31
- exact: number;
32
- min?: never;
33
- max?: never;
34
- } | {
35
- exact?: never;
36
- min: number;
37
- max?: number;
38
- }) & {
39
- greedy?: boolean;
40
- };
41
- /** Repetition count, [minimum, maximum] tuple, or named bounds. */
42
- export type QuantityOptions = number | [min: number, max?: number] | QuantityNamedOptions;
43
- /** Compose lazy regex templates and resolve reusable variables in an isolated scope. */
44
- export declare class RegexDesigner {
45
- private readonly variables;
46
- private readonly resolvingVariables;
14
+ export default function create(): JSRegexDesigner;
15
+ /**
16
+ * Templates are compiled to a native `RegExp`.
17
+ */
18
+ export declare class JSRegexDesigner extends RegexDesigner<RegExp> implements RegexDesignerWithBackreferences<RegExp>, RegexDesignerWithLookarounds<RegExp> {
19
+ protected createTemplate(render: (flags: string | undefined, compiling: boolean) => string): RegexTemplate;
47
20
  /** Concatenate patterns without adding groups or escaping. */
48
21
  tpl(...patterns: RegexValue[]): RegexTemplate;
49
- /** Join patterns with alternation without adding groups. */
50
- or(...patterns: RegexValue[]): RegexTemplate;
51
- /** Create a named capturing group around the concatenated patterns. */
52
- named(name: string, ...patterns: RegexValue[]): RegexTemplate;
22
+ /** Escape literal text for use in a regex pattern. */
23
+ raw(...patterns: string[]): RegexTemplate;
24
+ /** Match the concatenated patterns at the start of the input. */
25
+ start(...patterns: RegexValue[]): RegexTemplate;
26
+ /** Match the concatenated patterns at the end of the input. */
27
+ end(...patterns: RegexValue[]): RegexTemplate;
28
+ /** Match the concatenated patterns across the whole input. */
29
+ whole(...patterns: RegexValue[]): RegexTemplate;
53
30
  /** Group patterns, optionally capturing them or assigning a capture name. */
54
31
  group(options: GroupOptions, ...patterns: RegexValue[]): RegexTemplate;
32
+ /** Create a named capturing group around the concatenated patterns. */
33
+ named(name: string, ...patterns: RegexValue[]): RegexTemplate;
34
+ /** Create a numeric or named backreference. */
35
+ ref(reference: number | string): RegexTemplate;
55
36
  /** Make the concatenated patterns optional using a non-capturing group. */
56
37
  opt(...patterns: RegexValue[]): RegexTemplate;
57
38
  /** Repeat the concatenated patterns according to the supplied bounds. */
58
39
  qty(quantity: QuantityOptions, ...patterns: RegexValue[]): RegexTemplate;
59
- /** Escape literal text for use in a regex pattern. */
60
- raw(...patterns: string[]): RegexTemplate;
61
- /** Create a positive or negative lookahead assertion. */
40
+ /** Join patterns with alternation without adding groups. */
41
+ or(...patterns: RegexValue[]): RegexTemplate;
42
+ /** Create a positive or negative [lookahead assertion](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Lookahead_assertion). */
62
43
  ahead(positive: boolean, ...patterns: RegexValue[]): RegexTemplate;
63
- /** Create a positive lookahead assertion. */
44
+ /** Create a positive [lookahead assertion](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Lookahead_assertion). */
64
45
  ahead_pos(...patterns: RegexValue[]): RegexTemplate;
65
- /** Create a negative lookahead assertion. */
46
+ /** Create a negative [lookahead assertion](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Lookahead_assertion). */
66
47
  ahead_neg(...patterns: RegexValue[]): RegexTemplate;
67
- /** Create a positive or negative lookbehind assertion. */
48
+ /** Create a positive or negative [lookbehind assertion](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Lookbehind_assertion). */
68
49
  behind(positive: boolean, ...patterns: RegexValue[]): RegexTemplate;
69
- /** Create a positive lookbehind assertion. */
50
+ /** Create a positive [lookbehind assertion](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Lookbehind_assertion). */
70
51
  behind_pos(...patterns: RegexValue[]): RegexTemplate;
71
- /** Create a negative lookbehind assertion. */
52
+ /** Create a negative [lookbehind assertion](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Lookbehind_assertion). */
72
53
  behind_neg(...patterns: RegexValue[]): RegexTemplate;
73
- /** Create a numeric or named backreference. */
74
- ref(reference: number | string): RegexTemplate;
75
- /** Define or replace a lazy pattern variable on this designer. */
76
- set(name: string, ...patterns: RegexValue[]): this;
77
- private resolveVariable;
78
- /** Reference a variable, resolving it when this template is rendered. */
79
- var(name: string): RegexTemplate;
80
54
  }
81
- /** Create a new regex designer with its own variable scope. */
82
- export default function create(): RegexDesigner;
83
55
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,eAAe,EACf,+BAA+B,EAC/B,4BAA4B,EAC5B,aAAa,IAAI,iBAAiB,EAClC,UAAU,IAAI,cAAc,EAC7B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,aAAa,EAEd,MAAM,sBAAsB,CAAC;AAE9B,YAAY,EACV,iBAAiB,EACjB,YAAY,EACZ,oBAAoB,EACpB,eAAe,EACf,+BAA+B,EAC/B,4BAA4B,GAC7B,MAAM,sBAAsB,CAAC;AAC9B,MAAM,MAAM,aAAa,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;AACtD,MAAM,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AA8FvD;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,MAAM,IAAI,eAAe,CAEhD;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,aAAa,CAAC,MAAM,CAAE,YAAW,+BAA+B,CAAC,MAAM,CAAC,EAAE,4BAA4B,CAAC,MAAM,CAAC;cAC9H,cAAc,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,SAAS,EAAE,OAAO,KAAK,MAAM,GAAG,aAAa;IAInH,8DAA8D;IACrD,GAAG,CAAC,GAAG,QAAQ,EAAE,UAAU,EAAE,GAAG,aAAa;IAItD,sDAAsD;IAC7C,GAAG,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,aAAa;IAIlD,iEAAiE;IACxD,KAAK,CAAC,GAAG,QAAQ,EAAE,UAAU,EAAE,GAAG,aAAa;IAIxD,+DAA+D;IACtD,GAAG,CAAC,GAAG,QAAQ,EAAE,UAAU,EAAE,GAAG,aAAa;IAItD,8DAA8D;IACrD,KAAK,CAAC,GAAG,QAAQ,EAAE,UAAU,EAAE,GAAG,aAAa;IAIxD,6EAA6E;IACpE,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,QAAQ,EAAE,UAAU,EAAE,GAAG,aAAa;IAI/E,uEAAuE;IAC9D,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,UAAU,EAAE,GAAG,aAAa;IAItE,+CAA+C;IAC/C,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,aAAa;IAI9C,2EAA2E;IAClE,GAAG,CAAC,GAAG,QAAQ,EAAE,UAAU,EAAE,GAAG,aAAa;IAItD,yEAAyE;IAChE,GAAG,CAAC,QAAQ,EAAE,eAAe,EAAE,GAAG,QAAQ,EAAE,UAAU,EAAE,GAAG,aAAa;IAIjF,4DAA4D;IACnD,EAAE,CAAC,GAAG,QAAQ,EAAE,UAAU,EAAE,GAAG,aAAa;IAIrD,sKAAsK;IAC7J,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,QAAQ,EAAE,UAAU,EAAE,GAAG,aAAa;IAI3E,0JAA0J;IACjJ,SAAS,CAAC,GAAG,QAAQ,EAAE,UAAU,EAAE,GAAG,aAAa;IAI5D,0JAA0J;IACjJ,SAAS,CAAC,GAAG,QAAQ,EAAE,UAAU,EAAE,GAAG,aAAa;IAI5D,wKAAwK;IAC/J,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,QAAQ,EAAE,UAAU,EAAE,GAAG,aAAa;IAI5E,4JAA4J;IACnJ,UAAU,CAAC,GAAG,QAAQ,EAAE,UAAU,EAAE,GAAG,aAAa;IAI7D,4JAA4J;IACnJ,UAAU,CAAC,GAAG,QAAQ,EAAE,UAAU,EAAE,GAAG,aAAa;CAI9D"}
package/dist/index.js CHANGED
@@ -1,15 +1,16 @@
1
- /** Check whether a value is a regex template. */
2
- export function isRegexTemplate(value) {
3
- return typeof value === 'function' && 'render' in value && typeof value.render === 'function';
4
- }
1
+ /**
2
+ * The JavaScript package exposes a default factory and a `JSRegexDesigner` class. It extends the abstract `RegexDesigner` contract from `@regex-designer/core`. Templates are compiled to a native `RegExp`.
3
+ */
4
+ import { RegexDesigner, isRegexTemplate, } from "@regex-designer/core";
5
+ export { isRegexTemplate } from "@regex-designer/core";
5
6
  function patternString(pattern, flags, compiling) {
6
7
  if (pattern instanceof RegExp) {
7
- const unicodeFlag = pattern.flags.includes('v') ? 'v' : pattern.flags.includes('u') ? 'u' : undefined;
8
+ const unicodeFlag = pattern.flags.includes("v") ? "v" : pattern.flags.includes("u") ? "u" : undefined;
8
9
  if (compiling && unicodeFlag !== undefined && !flags?.includes(unicodeFlag)) {
9
10
  throw new TypeError(`RegExp flag "${unicodeFlag}" must be passed when compiling the composed pattern`);
10
11
  }
11
- const scopedFlags = pattern.flags.replace(/[dgyuv]/g, '');
12
- return scopedFlags === '' ? pattern.source : `(?${scopedFlags}:${pattern.source})`;
12
+ const scopedFlags = pattern.flags.replace(/[dgyuv]/g, "");
13
+ return scopedFlags === "" ? pattern.source : `(?${scopedFlags}:${pattern.source})`;
13
14
  }
14
15
  if (isRegexTemplate(pattern)) {
15
16
  return pattern.render(flags, compiling);
@@ -23,22 +24,25 @@ function template(render) {
23
24
  return regex;
24
25
  }
25
26
  function tpl(...patterns) {
26
- return template((flags, compiling) => patterns.map(pattern => patternString(pattern, flags, compiling)).join(''));
27
+ return template((flags, compiling) => patterns.map(pattern => patternString(pattern, flags, compiling)).join(""));
27
28
  }
28
29
  function or(...patterns) {
29
- return template((flags, compiling) => patterns.map(pattern => patternString(pattern, flags, compiling)).join('|'));
30
+ return template((flags, compiling) => patterns.map(pattern => patternString(pattern, flags, compiling)).join("|"));
30
31
  }
31
32
  function group(options, ...patterns) {
32
- if (typeof options !== 'boolean' && options.name !== undefined && options.capture !== undefined) {
33
- throw new TypeError('Group options "name" and "capture" are mutually exclusive');
33
+ if (typeof options !== "boolean" && options.name !== undefined && options.capture !== undefined) {
34
+ throw new TypeError("Group options \"name\" and \"capture\" are mutually exclusive");
34
35
  }
35
36
  return template((flags, compiling) => {
36
- const name = typeof options === 'boolean' ? undefined : options.name;
37
- const capture = typeof options === 'boolean' ? options : options.capture ?? true;
38
- const prefix = name !== undefined ? `?<${name}>` : capture ? '' : '?:';
39
- return `(${prefix}${patterns.map(pattern => patternString(pattern, flags, compiling)).join('')})`;
37
+ const name = typeof options === "boolean" ? undefined : options.name;
38
+ const capture = typeof options === "boolean" ? options : options.capture ?? true;
39
+ const prefix = name !== undefined ? `?<${name}>` : capture ? "" : "?:";
40
+ return `(${prefix}${patterns.map(pattern => patternString(pattern, flags, compiling)).join("")})`;
40
41
  });
41
42
  }
43
+ function anchor(start, end, patterns) {
44
+ return template((flags, compiling) => `${start ? "^" : ""}${patternString(group(false, ...patterns), flags, compiling)}${end ? "$" : ""}`);
45
+ }
42
46
  function named(name, ...patterns) {
43
47
  return group({ name }, ...patterns);
44
48
  }
@@ -49,14 +53,14 @@ function qty(quantity, ...patterns) {
49
53
  let min;
50
54
  let max;
51
55
  let greedy = true;
52
- if (typeof quantity === 'number') {
56
+ if (typeof quantity === "number") {
53
57
  min = quantity;
54
58
  max = quantity;
55
59
  }
56
60
  else if (Array.isArray(quantity)) {
57
61
  [min, max] = quantity;
58
62
  }
59
- else if ('exact' in quantity) {
63
+ else if ("exact" in quantity) {
60
64
  min = quantity.exact;
61
65
  max = quantity.exact;
62
66
  greedy = quantity.greedy ?? true;
@@ -67,36 +71,62 @@ function qty(quantity, ...patterns) {
67
71
  greedy = quantity.greedy ?? true;
68
72
  }
69
73
  if (!Number.isInteger(min) || min < 0 || (max !== undefined && max !== Infinity && (!Number.isInteger(max) || max < min))) {
70
- throw new RangeError('Quantity bounds must be non-negative integers with max >= min');
74
+ throw new RangeError("Quantity bounds must be non-negative integers with max >= min");
71
75
  }
72
- return template((flags, compiling) => `${patternString(group(false, ...patterns), flags, compiling)}{${min}${max === undefined || max === Infinity ? ',' : max === min ? '' : `,${max}`}}${greedy ? '' : '?'}`);
76
+ return template((flags, compiling) => `${patternString(group(false, ...patterns), flags, compiling)}{${min}${max === undefined || max === Infinity ? "," : max === min ? "" : `,${max}`}}${greedy ? "" : "?"}`);
73
77
  }
74
78
  function look(prefix, positive, patterns) {
75
- return template((flags, compiling) => `(${prefix}${positive ? '=' : '!'}${patterns.map(pattern => patternString(pattern, flags, compiling)).join('')})`);
79
+ return template((flags, compiling) => `(${prefix}${positive ? "=" : "!"}${patterns.map(pattern => patternString(pattern, flags, compiling)).join("")})`);
76
80
  }
77
81
  function raw(...patterns) {
78
- return template(() => patterns.map(p => RegExp.escape(p)).join(''));
82
+ return template(() => patterns.map(p => RegExp.escape(p)).join(""));
79
83
  }
80
- /** Compose lazy regex templates and resolve reusable variables in an isolated scope. */
81
- export class RegexDesigner {
82
- variables = new Map();
83
- resolvingVariables = [];
84
+ /**
85
+ * Create a new JavaScript regex designer with its own variable scope.
86
+ * @readme default
87
+ */
88
+ export default function create() {
89
+ return new JSRegexDesigner();
90
+ }
91
+ /**
92
+ * Templates are compiled to a native `RegExp`.
93
+ */
94
+ export class JSRegexDesigner extends RegexDesigner {
95
+ createTemplate(render) {
96
+ return template(render);
97
+ }
84
98
  /** Concatenate patterns without adding groups or escaping. */
85
99
  tpl(...patterns) {
86
100
  return tpl(...patterns);
87
101
  }
88
- /** Join patterns with alternation without adding groups. */
89
- or(...patterns) {
90
- return or(...patterns);
102
+ /** Escape literal text for use in a regex pattern. */
103
+ raw(...patterns) {
104
+ return raw(...patterns);
91
105
  }
92
- /** Create a named capturing group around the concatenated patterns. */
93
- named(name, ...patterns) {
94
- return named(name, ...patterns);
106
+ /** Match the concatenated patterns at the start of the input. */
107
+ start(...patterns) {
108
+ return anchor(true, false, patterns);
109
+ }
110
+ /** Match the concatenated patterns at the end of the input. */
111
+ end(...patterns) {
112
+ return anchor(false, true, patterns);
113
+ }
114
+ /** Match the concatenated patterns across the whole input. */
115
+ whole(...patterns) {
116
+ return anchor(true, true, patterns);
95
117
  }
96
118
  /** Group patterns, optionally capturing them or assigning a capture name. */
97
119
  group(options, ...patterns) {
98
120
  return group(options, ...patterns);
99
121
  }
122
+ /** Create a named capturing group around the concatenated patterns. */
123
+ named(name, ...patterns) {
124
+ return named(name, ...patterns);
125
+ }
126
+ /** Create a numeric or named backreference. */
127
+ ref(reference) {
128
+ return template(() => typeof reference === "number" ? `\\${reference}` : `\\k<${reference}>`);
129
+ }
100
130
  /** Make the concatenated patterns optional using a non-capturing group. */
101
131
  opt(...patterns) {
102
132
  return opt(...patterns);
@@ -105,68 +135,33 @@ export class RegexDesigner {
105
135
  qty(quantity, ...patterns) {
106
136
  return qty(quantity, ...patterns);
107
137
  }
108
- /** Escape literal text for use in a regex pattern. */
109
- raw(...patterns) {
110
- return raw(...patterns);
138
+ /** Join patterns with alternation without adding groups. */
139
+ or(...patterns) {
140
+ return or(...patterns);
111
141
  }
112
- /** Create a positive or negative lookahead assertion. */
142
+ /** Create a positive or negative [lookahead assertion](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Lookahead_assertion). */
113
143
  ahead(positive, ...patterns) {
114
- return look('?', positive, patterns);
144
+ return look("?", positive, patterns);
115
145
  }
116
- /** Create a positive lookahead assertion. */
146
+ /** Create a positive [lookahead assertion](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Lookahead_assertion). */
117
147
  ahead_pos(...patterns) {
118
- return look('?', true, patterns);
148
+ return look("?", true, patterns);
119
149
  }
120
- /** Create a negative lookahead assertion. */
150
+ /** Create a negative [lookahead assertion](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Lookahead_assertion). */
121
151
  ahead_neg(...patterns) {
122
- return look('?', false, patterns);
152
+ return look("?", false, patterns);
123
153
  }
124
- /** Create a positive or negative lookbehind assertion. */
154
+ /** Create a positive or negative [lookbehind assertion](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Lookbehind_assertion). */
125
155
  behind(positive, ...patterns) {
126
- return look('?<', positive, patterns);
156
+ return look("?<", positive, patterns);
127
157
  }
128
- /** Create a positive lookbehind assertion. */
158
+ /** Create a positive [lookbehind assertion](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Lookbehind_assertion). */
129
159
  behind_pos(...patterns) {
130
- return look('?<', true, patterns);
160
+ return look("?<", true, patterns);
131
161
  }
132
- /** Create a negative lookbehind assertion. */
162
+ /** Create a negative [lookbehind assertion](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Lookbehind_assertion). */
133
163
  behind_neg(...patterns) {
134
- return look('?<', false, patterns);
164
+ return look("?<", false, patterns);
135
165
  }
136
- /** Create a numeric or named backreference. */
137
- ref(reference) {
138
- return template(() => typeof reference === 'number' ? `\\${reference}` : `\\k<${reference}>`);
139
- }
140
- /** Define or replace a lazy pattern variable on this designer. */
141
- set(name, ...patterns) {
142
- this.variables.set(name, tpl(...patterns));
143
- return this;
144
- }
145
- resolveVariable(name, flags, compiling) {
146
- const cycleStart = this.resolvingVariables.indexOf(name);
147
- if (cycleStart !== -1) {
148
- const cycle = [...this.resolvingVariables.slice(cycleStart), name];
149
- throw new Error(`Circular variable dependency: ${cycle.join(' -> ')}`);
150
- }
151
- const pattern = this.variables.get(name);
152
- if (pattern === undefined) {
153
- throw new Error(`Variable "${name}" is not set`);
154
- }
155
- this.resolvingVariables.push(name);
156
- try {
157
- return patternString(pattern, flags, compiling);
158
- }
159
- finally {
160
- this.resolvingVariables.pop();
161
- }
162
- }
163
- /** Reference a variable, resolving it when this template is rendered. */
164
- var(name) {
165
- return template((flags, compiling) => this.resolveVariable(name, flags, compiling));
166
- }
167
- }
168
- /** Create a new regex designer with its own variable scope. */
169
- export default function create() {
170
- return new RegexDesigner();
171
166
  }
172
167
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,8 +1,7 @@
1
1
  {
2
2
  "name": "@regex-designer/js",
3
- "version": "0.1.0",
3
+ "version": "0.2.1",
4
4
  "description": "A small TypeScript library for composing JavaScript regular expressions in a readable, reusable way.",
5
- "private": false,
6
5
  "type": "module",
7
6
  "license": "MIT",
8
7
  "keywords": [
@@ -15,30 +14,24 @@
15
14
  "node": ">=24.0.0"
16
15
  },
17
16
  "files": [
18
- "dist",
19
- "LICENSE"
17
+ "dist"
20
18
  ],
21
19
  "types": "./dist/index.d.ts",
22
20
  "exports": {
23
21
  ".": {
24
22
  "types": "./dist/index.d.ts",
25
- "import": "./dist/index.js"
23
+ "import": "./dist/index.js",
24
+ "default": "./dist/index.js"
26
25
  }
27
26
  },
28
27
  "sideEffects": false,
28
+ "dependencies": {
29
+ "@regex-designer/core": "0.2.1"
30
+ },
29
31
  "scripts": {
30
32
  "build": "tsc -p tsconfig.json",
31
- "typecheck": "npm run build && tsc -p tsconfig.test.json",
32
- "lint": "eslint .",
33
- "test": "npm run typecheck && node --test test/*.test.ts",
33
+ "lint": "eslint --config ../../eslint.config.* .",
34
+ "test": "npm run build && tsc -p tsconfig.test.json && node --test test/*.test.ts",
34
35
  "check": "npm run lint && npm run test"
35
- },
36
- "devDependencies": {
37
- "@eslint/js": "10.0.1",
38
- "@types/node": "24.19.2",
39
- "eslint": "10.12.0",
40
- "globals": "17.13.0",
41
- "typescript": "6.0.3",
42
- "typescript-eslint": "8.71.1"
43
36
  }
44
37
  }
package/LICENSE DELETED
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2026 loganmzz
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.