@eslinted/core 0.0.1-rc.0 → 0.0.1-rc.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.
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[]>;