@eslinted/core 0.0.1-rc.0 → 0.0.1-rc.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (84) hide show
  1. package/interface/IConfig.d.ts +21 -0
  2. package/interface/files/IFiles.d.ts +1 -0
  3. package/interface/option/IOption.d.ts +25 -0
  4. package/interface/option/language/IOLanguage.d.ts +15 -0
  5. package/interface/option/language/ecma/IOLanguageEcma.d.ts +20 -0
  6. package/interface/option/language/globals/IOLanguageGlobals.d.ts +3 -0
  7. package/interface/option/language/parser/IOLanguageParser.d.ts +3 -0
  8. package/interface/option/language/parserOptions/IOLanguageParserOptions.d.ts +5 -0
  9. package/interface/option/language/source/IOLanguageSource.d.ts +12 -0
  10. package/interface/option/linter/IOLinter.d.ts +30 -0
  11. package/interface/option/name/IOName.d.ts +3 -0
  12. package/interface/option/plugins/IOPlugins.d.ts +3 -0
  13. package/interface/option/processor/IOProcessor.d.ts +3 -0
  14. package/interface/rules/IRules.d.ts +1 -0
  15. package/interface/rules/rule/IRule.d.ts +1 -0
  16. package/interface/rules/rule/state/RuleSeverity.d.ts +5 -0
  17. package/package.json +2 -2
  18. package/tsconfig.json +4 -2
  19. package/types/literal/number/base32.d.ts +19 -0
  20. package/types/literal/number/base64.d.ts +35 -0
  21. package/types/literal/number/binary.d.ts +4 -0
  22. package/types/literal/number/decimal.d.ts +5 -0
  23. package/types/literal/number/hex.d.ts +10 -0
  24. package/types/literal/number/octal.d.ts +7 -0
  25. package/types/literal/number/quatral.d.ts +4 -0
  26. package/types/literal/number/ternary.d.ts +4 -0
  27. package/types/literal/string/base64char.d.ts +13 -0
  28. package/types/literal/string/digit.d.ts +12 -0
  29. package/types/literal/string/hexchar.d.ts +9 -0
  30. package/types/literal/string/letter.d.ts +35 -0
  31. package/types/safe/Safe.d.ts +2 -0
  32. package/types/safe/numbers/finite/Finite.d.ts +2 -0
  33. package/types/safe/numbers/finite.d.ts +1 -0
  34. package/types/safe/numbers/fint.d.ts +1 -0
  35. package/types/safe/numbers/int/Int.d.ts +2 -0
  36. package/types/safe/numbers/int.d.ts +1 -0
  37. package/types/safe/numbers/numberful.d.ts +1 -0
  38. package/types/safe/numbers/polarity/Negative.d.ts +4 -0
  39. package/types/safe/numbers/polarity/Positive.d.ts +4 -0
  40. package/types/safe/numbers/polarity/pole/Pole.d.ts +18 -0
  41. package/types/safe/primitive.d.ts +5 -0
  42. package/types/safe/strings/char.d.ts +1 -0
  43. package/types/safe/strings/length/PropLength.d.ts +3 -0
  44. package/types/safe/strings/stringful.d.ts +1 -0
  45. package/types/utility/interface/construct/Particord.d.ts +1 -0
  46. package/types/utility/interface/construct/Property.d.ts +8 -0
  47. package/types/utility/interface/construct/Recordful.d.ts +5 -0
  48. package/types/utility/interface/construct/Table.d.ts +3 -0
  49. package/types/utility/interface/construct/properties/Field.d.ts +1 -0
  50. package/types/utility/interface/construct/properties/Flag.d.ts +1 -0
  51. package/types/utility/interface/construct/properties/Limit.d.ts +8 -0
  52. package/types/utility/interface/construct/properties/List.d.ts +1 -0
  53. package/types/utility/interface/construct/properties/Listish.d.ts +1 -0
  54. package/types/utility/interface/construct/properties/Scalar.d.ts +1 -0
  55. package/types/utility/interface/construct/tables/FieldTable.d.ts +1 -0
  56. package/types/utility/interface/construct/tables/FlagTable.d.ts +1 -0
  57. package/types/utility/interface/construct/tables/ListTable.d.ts +1 -0
  58. package/types/utility/interface/construct/tables/ListishTable.d.ts +1 -0
  59. package/types/utility/interface/construct/tables/ScalarTable.d.ts +1 -0
  60. package/types/utility/interface/identity/Interface.d.ts +80 -0
  61. package/types/utility/interface/identity/Keys.d.ts +71 -0
  62. package/types/utility/interface/transform/Unrequire.d.ts +45 -0
  63. package/types/utility/iterable/construct/ArrayN.d.ts +12 -0
  64. package/types/utility/iterable/construct/Tuple.d.ts +27 -0
  65. package/types/utility/iterable/construct/arrays/Arrays.d.ts +1 -0
  66. package/types/utility/iterable/construct/tuples/Tuples.d.ts +9 -0
  67. package/types/utility/iterable/identity/DyadType.d.ts +3 -0
  68. package/types/utility/iterable/identity/MonadType.d.ts +48 -0
  69. package/types/utility/iterable/identity/TriadType.d.ts +3 -0
  70. package/types/utility/iterable/identity/array/ArrayType.d.ts +65 -0
  71. package/types/utility/iterable/identity/array/length/ArrayLength.d.ts +16 -0
  72. package/types/utility/iterable/transform/Join.d.ts +19 -0
  73. package/types/utility/iterable/transform/Unflat.d.ts +3 -0
  74. package/types/utility/iterable/transform/stringarray/Chain.d.ts +30 -0
  75. package/types/utility/iterable/transform/stringarray/PathN.d.ts +3 -0
  76. package/types/utility/iterable/transform/stringarray/stringify/Stringify.d.ts +5 -0
  77. package/types/utility/length/Length.d.ts +35 -0
  78. package/types/utility/null/null.d.ts +1 -0
  79. package/types/utility/null/nullable.d.ts +1 -0
  80. package/types/utility/primitive/Primeval.d.ts +42 -0
  81. package/types/utility/primitive/boolean/True.d.ts +30 -0
  82. package/types/utility/primitive/number/Numbered.d.ts +35 -0
  83. package/types/utility/primitive/string/literal.d.ts +22 -0
  84. package/types/utility/primitive/string/literalful.d.ts +28 -0
@@ -0,0 +1,21 @@
1
+ declare interface IConfig {
2
+ rules: IRule;
3
+ files: string[];
4
+ name: `linted/scope:${string}`;
5
+ linterOptions: {
6
+ noInlineConfig: true;
7
+ reportUnusedDisableDirectives: "error";
8
+ };
9
+ languageOptions: {
10
+ sourceType?:
11
+ | "module"
12
+ | "script"
13
+ ;
14
+ ecmaVersion?: "latest";
15
+ globals?: Record<string, true>;
16
+ parser?: unknown;
17
+ parserOptions?: Record<string, unknown>;
18
+ };
19
+ plugins: Record<string, Record<"configs", unknown>>;
20
+ processor?: string;
21
+ }
@@ -0,0 +1 @@
1
+ declare interface IFiles { files: string[] }
@@ -0,0 +1,25 @@
1
+ declare type IOption<
2
+ Name extends string,
3
+ NoInline extends boolean,
4
+ ReportUnused extends boolean | IOLinter.States,
5
+ PluginId extends string,
6
+ Ecma extends number | IOLanguageEcma.Ecma,
7
+ Source extends IOLanguageSource.Source,
8
+ UseParser extends boolean,
9
+ ParserOptions extends object,
10
+ GlobalTypes extends string,
11
+ ProcessorId extends string,
12
+ > =
13
+ & IFiles
14
+ & IOName<Name>
15
+ & IOLinter<NoInline, ReportUnused>
16
+ & IOPlugins<PluginId>
17
+ & IOLanguage<
18
+ Ecma,
19
+ Source,
20
+ UseParser,
21
+ ParserOptions,
22
+ GlobalTypes
23
+ >
24
+ & IOProcessor<ProcessorId>
25
+ ;
@@ -0,0 +1,15 @@
1
+ declare type IOLanguage<
2
+ Ecma extends number | IOLanguageEcma.Ecma,
3
+ Source extends IOLanguageSource.Source,
4
+ UseParser extends boolean,
5
+ ParserOptions extends object,
6
+ GlobalTypes extends string,
7
+ > = {
8
+ languageOptions:
9
+ & IOLanguageEcma<Ecma>
10
+ & IOLanguageSource<Source>
11
+ & IOLanguageGlobals<GlobalTypes>
12
+ & IOLanguageParser<UseParser>
13
+ & IOLanguageParserOptions<ParserOptions>
14
+ ;
15
+ };
@@ -0,0 +1,20 @@
1
+ declare type IOLanguageEcma<Ecma extends number | IOLanguageEcma.Ecma> = [Ecma] extends [number]
2
+ ? Numbered<Ecma> extends never
3
+ ? object
4
+ : { ecmaVersion: Numbered<Ecma> }
5
+
6
+ : [Ecma] extends [string]
7
+ ? literalful<Ecma> extends never
8
+ ? object
9
+ : literalful<Ecma> extends IOLanguageEcma.Ecma
10
+ ? { ecmaVersion: literalful<Ecma> }
11
+ : object
12
+ : object;
13
+
14
+ declare namespace IOLanguageEcma {
15
+ export type Ecma =
16
+ | `${number}`
17
+ | `ES${number}`
18
+ | `es${number}`
19
+ | "latest";
20
+ }
@@ -0,0 +1,3 @@
1
+ declare type IOLanguageGlobals<GlobalTypes extends string> = literalful<GlobalTypes> extends never
2
+ ? object
3
+ : { globals: Record<literalful<GlobalTypes>, true> };
@@ -0,0 +1,3 @@
1
+ declare type IOLanguageParser<UseParser extends boolean> = True<UseParser> extends never
2
+ ? object
3
+ : { parser: unknown };
@@ -0,0 +1,5 @@
1
+ declare type IOLanguageParserOptions<ParserOptions extends object> = Interface<ParserOptions> extends never
2
+ ? object
3
+ : Keys<ParserOptions> extends never
4
+ ? object
5
+ : { parserOptions: Interface<ParserOptions> };
@@ -0,0 +1,12 @@
1
+ declare type IOLanguageSource<Source extends IOLanguageSource.Source> = literalful<Source> extends never
2
+ ? object
3
+ : literalful<Source> extends IOLanguageSource.Source
4
+ ? { sourceType: literalful<Source> }
5
+ : object;
6
+
7
+ declare namespace IOLanguageSource {
8
+ export type Source =
9
+ | "module"
10
+ | "script"
11
+ | "commonjs";
12
+ }
@@ -0,0 +1,30 @@
1
+ declare type IOLinter<
2
+ NoInline extends boolean,
3
+ ReportUnused extends
4
+ | boolean
5
+ | IOLinter.States,
6
+ > = {
7
+ linterOptions: {
8
+ noInlineConfig: True<NoInline> extends never
9
+ ? false
10
+ : True<NoInline>;
11
+ reportUnusedDisableDirectives: [ReportUnused] extends [boolean]
12
+ ? True<ReportUnused> extends never
13
+ ? false
14
+ : True<ReportUnused>
15
+ : [ReportUnused] extends [string]
16
+ ? literalful<ReportUnused> extends never
17
+ ? false
18
+ : literalful<ReportUnused> extends IOLinter.States
19
+ ? literalful<ReportUnused>
20
+ : false
21
+ : false;
22
+ };
23
+ };
24
+
25
+ declare namespace IOLinter {
26
+ export type States =
27
+ | "error"
28
+ | "warn"
29
+ | "off";
30
+ }
@@ -0,0 +1,3 @@
1
+ declare type IOName<Name extends string> = literalful<Name> extends never
2
+ ? never
3
+ : { name: literalful<Name> };
@@ -0,0 +1,3 @@
1
+ declare type IOPlugins<PluginId extends string> = literalful<PluginId> extends never
2
+ ? never
3
+ : { plugins: Record<literalful<PluginId>, { configs: unknown }> };
@@ -0,0 +1,3 @@
1
+ declare type IOProcessor<ProcessorId extends string> = literalful<ProcessorId> extends never
2
+ ? object
3
+ : { processor: literalful<ProcessorId> };
@@ -0,0 +1 @@
1
+ declare interface IRules { rules: IRule }
@@ -0,0 +1 @@
1
+ type IRule = Record<string, RuleSeverity | [RuleSeverity, ...unknown[]]>;
@@ -0,0 +1,5 @@
1
+ declare type RuleSeverity =
2
+ | "error"
3
+ | "warn"
4
+ | "off"
5
+ ;
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@eslinted/core",
3
- "version": "0.0.1-rc.0",
3
+ "version": "0.0.1-rc.1",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "license": "MIT",
7
7
  "type": "module",
8
8
  "private": false,
9
9
  "config": {
10
- "PACKAGE_JSON_VERSION": "20.9.0"
10
+ "PACKAGE_JSON_VERSION": "20.9.1"
11
11
  },
12
12
  "repository": {
13
13
  "type": "git",
package/tsconfig.json CHANGED
@@ -1,10 +1,12 @@
1
1
  {
2
2
  "display": "@jimbojet/tsc",
3
- "_version": "5.5.7",
3
+ "_version": "5.5.8",
4
4
  "$schema": "https://json.schemastore.org/tsconfig",
5
5
  "include": [
6
- "src/**/*.ts",
7
6
  "*.config.ts",
7
+ "src/**/*.ts",
8
+ "interface/**/*.d.ts",
9
+ "types/**/*.d.ts",
8
10
  ],
9
11
  "compilerOptions": {
10
12
  /* Visit https://aka.ms/tsconfig to read more about this file */
@@ -0,0 +1,19 @@
1
+ declare type base32 =
2
+ | hex
3
+ | 16
4
+ | 17
5
+ | 18
6
+ | 19
7
+ | 20
8
+ | 21
9
+ | 22
10
+ | 23
11
+ | 24
12
+ | 25
13
+ | 26
14
+ | 27
15
+ | 28
16
+ | 29
17
+ | 30
18
+ | 31
19
+ ;
@@ -0,0 +1,35 @@
1
+ declare type base64 =
2
+ | base32
3
+ | 32
4
+ | 33
5
+ | 34
6
+ | 35
7
+ | 36
8
+ | 37
9
+ | 38
10
+ | 39
11
+ | 40
12
+ | 41
13
+ | 42
14
+ | 43
15
+ | 44
16
+ | 45
17
+ | 46
18
+ | 47
19
+ | 48
20
+ | 49
21
+ | 50
22
+ | 51
23
+ | 52
24
+ | 53
25
+ | 54
26
+ | 55
27
+ | 56
28
+ | 57
29
+ | 58
30
+ | 59
31
+ | 60
32
+ | 61
33
+ | 62
34
+ | 63
35
+ ;
@@ -0,0 +1,4 @@
1
+ declare type binary =
2
+ | 0
3
+ | 1
4
+ ;
@@ -0,0 +1,5 @@
1
+ declare type decimal =
2
+ | octal
3
+ | 8
4
+ | 9
5
+ ;
@@ -0,0 +1,10 @@
1
+ declare type hex =
2
+ | decimal
3
+ | 9
4
+ | 10
5
+ | 11
6
+ | 12
7
+ | 13
8
+ | 14
9
+ | 15
10
+ ;
@@ -0,0 +1,7 @@
1
+ declare type octal =
2
+ | quatral
3
+ | 4
4
+ | 5
5
+ | 6
6
+ | 7
7
+ ;
@@ -0,0 +1,4 @@
1
+ declare type quatral =
2
+ | ternary
3
+ | 3
4
+ ;
@@ -0,0 +1,4 @@
1
+ declare type ternary =
2
+ | binary
3
+ | 2
4
+ ;
@@ -0,0 +1,13 @@
1
+ declare type base64char =
2
+ | letter
3
+ | digit
4
+ | "+"
5
+ | "/"
6
+ ;
7
+
8
+ declare type base64pad = "=";
9
+
10
+ declare type base64paddedchar =
11
+ | base64char
12
+ | base64pad
13
+ ;
@@ -0,0 +1,12 @@
1
+ declare type digit =
2
+ | "0"
3
+ | "1"
4
+ | "2"
5
+ | "3"
6
+ | "4"
7
+ | "5"
8
+ | "6"
9
+ | "7"
10
+ | "8"
11
+ | "9"
12
+ ;
@@ -0,0 +1,9 @@
1
+ declare type hexchar =
2
+ | digit
3
+ | "A"
4
+ | "B"
5
+ | "C"
6
+ | "D"
7
+ | "E"
8
+ | "F"
9
+ ;
@@ -0,0 +1,35 @@
1
+ declare type letter =
2
+ | lower
3
+ | upper
4
+ ;
5
+
6
+ declare type lower = Lowercase<upper>;
7
+
8
+ declare type upper =
9
+ | "A"
10
+ | "B"
11
+ | "C"
12
+ | "D"
13
+ | "E"
14
+ | "F"
15
+ | "G"
16
+ | "H"
17
+ | "I"
18
+ | "J"
19
+ | "K"
20
+ | "L"
21
+ | "M"
22
+ | "N"
23
+ | "O"
24
+ | "P"
25
+ | "Q"
26
+ | "R"
27
+ | "S"
28
+ | "T"
29
+ | "U"
30
+ | "V"
31
+ | "W"
32
+ | "X"
33
+ | "Y"
34
+ | "Z"
35
+ ;
@@ -0,0 +1,2 @@
1
+ declare const p: unique symbol;
2
+ declare type Safe<P extends primitive, Check> = P & { [p]: Check };
@@ -0,0 +1,2 @@
1
+ declare const finite: unique symbol;
2
+ declare type Finite<N extends number> = N & { [finite]: 1 };
@@ -0,0 +1 @@
1
+ declare type finite = Finite<numberful>;
@@ -0,0 +1 @@
1
+ declare type fint = Finite<int>;
@@ -0,0 +1,2 @@
1
+ declare const int: unique symbol;
2
+ declare type Int<N extends number> = N & { [int]: 1 };
@@ -0,0 +1 @@
1
+ declare type int = Int<numberful>;
@@ -0,0 +1 @@
1
+ declare type numberful = Safe<number, "numberful">;
@@ -0,0 +1,4 @@
1
+ declare type Negative<
2
+ N extends number,
3
+ Zero = true,
4
+ > = Pole<N, "-", Zero>;
@@ -0,0 +1,4 @@
1
+ declare type Positive<
2
+ N extends number,
3
+ Zero = true,
4
+ > = Pole<N, "+", Zero>;
@@ -0,0 +1,18 @@
1
+ declare const pole: unique symbol;
2
+ declare const min: unique symbol;
3
+ declare type Pole<
4
+ N extends number,
5
+ P extends
6
+ | "-"
7
+ | "+"
8
+ ,
9
+ Zero,
10
+ > =
11
+ & N
12
+ & {
13
+ [pole]: P;
14
+ [min]: Zero extends false
15
+ ? P extends "+" ? 1 : -1
16
+ : 0;
17
+ }
18
+ ;
@@ -0,0 +1,5 @@
1
+ declare type primitive =
2
+ | string
3
+ | number
4
+ | boolean
5
+ ;
@@ -0,0 +1 @@
1
+ declare type char = stringful & PropLength<1>;
@@ -0,0 +1,3 @@
1
+ declare type PropLength<L extends number> = Length<L> extends never
2
+ ? never
3
+ : { length: Length<L> };
@@ -0,0 +1 @@
1
+ declare type stringful = Safe<string, "stringful"> & { 0: stringful & PropLength<1> };
@@ -0,0 +1 @@
1
+ declare type Particord<K extends string, V> = Partial<Recordful<K, V>>;
@@ -0,0 +1,8 @@
1
+ declare type Property<K extends string, OK extends string, V> = literalful<K> extends never
2
+ ? Particord<OK, V>
3
+ : Recordful<K, V>
4
+ & (
5
+ literalful<OK> extends never
6
+ ? object
7
+ : Particord<OK, V>
8
+ );
@@ -0,0 +1,5 @@
1
+ declare type Recordful<K extends string, V> = [V] extends [never]
2
+ ? never
3
+ : literalful<K> extends never
4
+ ? never
5
+ : Record<literalful<K>, V>;
@@ -0,0 +1,3 @@
1
+ declare type Table<V = unknown> = [V] extends [never]
2
+ ? never
3
+ : Record<string, V>;
@@ -0,0 +1 @@
1
+ declare type Field<K extends string, OK extends string = never> = Property<K, OK, string>;
@@ -0,0 +1 @@
1
+ declare type Flag<OK extends string, K extends string = never> = Property<K, OK, boolean>;
@@ -0,0 +1,8 @@
1
+ declare type Limit<K extends string, OK extends string = never> = Property<K, OK, Boundary>;
2
+
3
+ type Boundary = Recordful<
4
+ | "min"
5
+ | "max"
6
+ ,
7
+ number
8
+ >;
@@ -0,0 +1 @@
1
+ declare type List<K extends string, OK extends string = never> = Property<K, OK, readonly string[]>;
@@ -0,0 +1 @@
1
+ declare type Listish<K extends string, OK extends string = never> = Property<K, OK, Unflat>;
@@ -0,0 +1 @@
1
+ declare type Scalar<K extends string, OK extends string = never> = Property<K, OK, number>;
@@ -0,0 +1 @@
1
+ declare type FieldTable = Table<string>;
@@ -0,0 +1 @@
1
+ declare type FlagTable = Table<boolean>;
@@ -0,0 +1 @@
1
+ declare type ListTable = Table<readonly string[]>;
@@ -0,0 +1 @@
1
+ declare type ListishTable = Table<Unflat>;
@@ -0,0 +1 @@
1
+ declare type ScalarTable = Table<number>;
@@ -0,0 +1,80 @@
1
+ declare type Interface<R extends object> = [R] extends [object]
2
+ ? [Extract<R, readonly unknown[]>] extends [never]
3
+ ? Required<R> extends Record<infer K, unknown>
4
+ ? Exclude<K, string> extends never
5
+ ? literalful<K & string> extends never
6
+ ? never
7
+ : R
8
+ : never
9
+ : never
10
+ : never
11
+ : never;
12
+
13
+ declare namespace InterfaceTest {
14
+ export type T = Interface<{ a: 5 }>;
15
+ export type T0 = Interface<{
16
+ a: 1;
17
+ b?: 2;
18
+ }>;
19
+ export type T1 = Interface<{
20
+ a: 1;
21
+ b: 2;
22
+ }>;
23
+ export type T2 = Interface<Record<"a", unknown>>;
24
+ export type T3 = Interface<Record<"a" | "b", unknown>>;
25
+ }
26
+
27
+ declare namespace NotInterface {
28
+ export type N = Interface<never>;
29
+ export type N0 = Interface<object>;
30
+ export type N0a = Interface<Record<"a" | "b" | 5, unknown>>;
31
+ export type N0b = Interface<Record<"a" | "b" | number, unknown>>;
32
+ export type N0c = Interface<Record<string, unknown>>;
33
+ export type N0d = Interface<Record<string | number, unknown>>;
34
+ export type N0e = Interface<Record<stringful, string>>;
35
+ export type N0f = Interface<Record<stringful | "5", string>>;
36
+ export type N1 = Interface<[]>;
37
+ export type N1b = Interface<[1]>;
38
+ export type N1c = Interface<[1, 1]>;
39
+ export type N1d = Interface<number[]>;
40
+ export type N1e = Interface<readonly []>;
41
+ export type N1f = Interface<readonly [1]>;
42
+ export type N1g = Interface<readonly [1, 1]>;
43
+ export type N1h = Interface<readonly number[]>;
44
+ export type N2 = Interface<()=> void>;
45
+ export type N2a = Interface<(a: string)=> boolean>;
46
+ export type N2b = Interface<(a: string)=> string[]>;
47
+ export type N2c = Interface<(a: string)=> object>;
48
+ export type N5 = Interface<[] | { a: 1 }>;
49
+ export type N5a = Interface<[30] | { a: 1 }>;
50
+ export type N5b = Interface<object | []>;
51
+ export type N5c = Interface<
52
+ | {
53
+ a: 1;
54
+ b: 2;
55
+ }
56
+ | {
57
+ a: 1;
58
+ b: 2;
59
+ c: 2;
60
+ }
61
+ >;
62
+
63
+ // export type N3 = Interface<stringful>;
64
+ // export type N3b = Interface<numberful>;
65
+ // export type N13c = Interface<string>;
66
+ // export type N13d = Interface<"cool">;
67
+ // export type N13e = Interface<number>;
68
+ // export type N13f = Interface<0>;
69
+ // export type N13g = Interface<1>;
70
+ // export type N13h = Interface<true>;
71
+ // export type N13i = Interface<false>;
72
+ // export type N13j = Interface<boolean>;
73
+ // export type N14 = Interface<null>;
74
+ // export type N14a = Interface<undefined>;
75
+ // export type N14c = Interface<unknown>;
76
+ // export type N15 = Interface<string | { a: cool }>;
77
+ // export type N15b = Interface<Record<"a" | "b" | string, unknown>>;
78
+ }
79
+
80
+ type gg = Extract<{ a: 5 }, readonly unknown[]>;