@ptolemy2002/rgx 4.3.0 → 4.4.0

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
@@ -32,11 +32,12 @@ type ValidIdentifier = Branded<string, [ValidIdentifierBrandSymbol]>;
32
32
 
33
33
  type RGXTokenType = 'no-op' | 'literal' | 'native' | 'convertible' | 'class' | RGXTokenType[];
34
34
  type RGXTokenTypeFlat = Exclude<RGXTokenType, RGXTokenType[]> | "array";
35
- type RGXTokenTypeGuardInput = RGXTokenTypeFlat | null | RGXClassTokenConstructor | typeof ExtRegExp | RGXTokenTypeGuardInput[];
35
+ type RGXTokenTypeGuardInput = RGXTokenTypeFlat | null | RGXClassTokenConstructor | typeof ExtRegExp | typeof RGXTokenCollection | RGXTokenTypeGuardInput[];
36
36
  type RGXTokenFromType<T extends RGXTokenTypeGuardInput> =
37
37
  // Maps token type strings to their corresponding types, e.g.:
38
38
  // 'no-op' -> RGXNoOpToken, 'literal' -> RGXLiteralToken, etc.
39
- // Also maps RGXClassTokenConstructor to InstanceType<T> and typeof ExtRegExp to ExtRegExp.
39
+ // Also maps any constructor to InstanceType<T>,
40
+ // and preserves tuple types for constant arrays.
40
41
  // ... see source for full definition
41
42
  ;
42
43
 
package/dist/types.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import { Branded } from "@ptolemy2002/ts-brand-utils";
2
2
  import type { RGXClassToken } from "./class";
3
- import { ExtRegExp } from "./ExtRegExp";
3
+ import type { ExtRegExp } from "./ExtRegExp";
4
+ import type { RGXTokenCollection } from "./collection";
4
5
  export type RGXNoOpToken = null | undefined;
5
6
  export type RGXLiteralToken = RegExp;
6
7
  export type RGXNativeToken = string | number | boolean | RGXNoOpToken;
@@ -12,10 +13,10 @@ export type RGXToken = RGXNativeToken | RGXLiteralToken | RGXConvertibleToken |
12
13
  export type RGXClassTokenConstructor = new (...args: unknown[]) => RGXClassToken;
13
14
  export type RGXTokenType = 'no-op' | 'literal' | 'native' | 'convertible' | 'class' | RGXTokenType[];
14
15
  export type RGXTokenTypeFlat = Exclude<RGXTokenType, RGXTokenType[]> | "array";
15
- export type RGXTokenTypeGuardInput = RGXTokenTypeFlat | null | RGXClassTokenConstructor | typeof ExtRegExp | RGXTokenTypeGuardInput[];
16
- export type RGXTokenFromType<T extends RGXTokenTypeGuardInput> = T extends null ? RGXToken : T extends 'no-op' ? RGXNoOpToken : T extends 'literal' ? RGXLiteralToken : T extends 'native' ? RGXNativeToken : T extends 'convertible' ? RGXConvertibleToken : T extends 'class' ? RGXClassToken : T extends 'array' ? RGXToken[] : T extends RGXTokenTypeGuardInput[] ? {
16
+ export type RGXTokenTypeGuardInput = RGXTokenTypeFlat | null | RGXClassTokenConstructor | typeof ExtRegExp | typeof RGXTokenCollection | RGXTokenTypeGuardInput[];
17
+ export type RGXTokenFromType<T extends RGXTokenTypeGuardInput> = T extends null ? RGXToken : T extends 'no-op' ? RGXNoOpToken : T extends 'literal' ? RGXLiteralToken : T extends 'native' ? RGXNativeToken : T extends 'convertible' ? RGXConvertibleToken : T extends 'class' ? RGXClassToken : T extends 'array' ? RGXToken[] : T extends new (...args: unknown[]) => infer R ? R : T extends RGXTokenTypeGuardInput[] ? {
17
18
  [K in keyof T]: T[K] extends RGXTokenTypeGuardInput ? RGXTokenFromType<T[K]> : never;
18
- } : T extends RGXClassTokenConstructor ? InstanceType<T> : T extends typeof ExtRegExp ? ExtRegExp : never;
19
+ } : never;
19
20
  export type RangeObject = {
20
21
  min?: number | null;
21
22
  max?: number | null;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ptolemy2002/rgx",
3
- "version": "4.3.0",
3
+ "version": "4.4.0",
4
4
  "private": false,
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",