@theahaco/ts-config 0.0.0-semantically-released

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.
@@ -0,0 +1,75 @@
1
+ name: Release
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+
8
+ concurrency:
9
+ group: ${{ github.workflow }}-${{ github.ref }}
10
+ cancel-in-progress: true
11
+
12
+ permissions:
13
+ contents: write # to be able to publish a GitHub release
14
+ issues: write # to be able to comment on released issues
15
+ pull-requests: write # to be able to comment on released pull requests
16
+ id-token: write # to enable use of OIDC for trusted publishing and npm provenance
17
+
18
+ jobs:
19
+ validate:
20
+ name: 🔍 Validate
21
+ runs-on: ubuntu-latest
22
+ steps:
23
+ - name: ⬇️ Checkout repo
24
+ uses: actions/checkout@v5
25
+
26
+ - name: ⎔ Setup node
27
+ uses: actions/setup-node@v6
28
+ with:
29
+ node-version: lts/*
30
+
31
+ - name: 📥 Download deps
32
+ uses: bahmutov/npm-install@v1
33
+ with:
34
+ useLockFile: false # better for libraries
35
+
36
+ - name: 🔍 Validate
37
+ run: npm run validate
38
+
39
+ release:
40
+ name: 🚀 Release
41
+ needs: [validate]
42
+ runs-on: ubuntu-latest
43
+ steps:
44
+ - name: ⬇️ Checkout repo
45
+ uses: actions/checkout@v5
46
+
47
+ - name: ⎔ Setup node
48
+ uses: actions/setup-node@v6
49
+ with:
50
+ node-version: lts/*
51
+
52
+ - name: 📥 Download deps
53
+ uses: bahmutov/npm-install@v1
54
+ with:
55
+ useLockFile: false # better for libraries
56
+
57
+ - name: ✍️ Verify signatures
58
+ run: npm audit signatures
59
+
60
+ - name: 🚀 Release
61
+ uses: cycjimmy/semantic-release-action@v6
62
+ with:
63
+ semantic_version: 25
64
+ branches: |
65
+ [
66
+ '+([0-9])?(.{+([0-9]),x}).x',
67
+ 'main',
68
+ 'next',
69
+ 'next-major',
70
+ {name: 'beta', prerelease: true},
71
+ {name: 'alpha', prerelease: true}
72
+ ]
73
+ env:
74
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
75
+ NPM_CONFIG_PROVENANCE: true
@@ -0,0 +1,295 @@
1
+ Info 0 [15:22:46.520] Starting TS Server
2
+ Info 1 [15:22:46.521] Version: 5.9.3
3
+ Info 2 [15:22:46.521] Arguments: /usr/local/bin/node /Users/zach/code/aha-co-config/node_modules/typescript/lib/tsserver.js --logFile /Users/zach/code/aha-co-config/.log/tsserver.log --logVerbosity info --cancellationPipeName /private/var/folders/kj/7j5kc5nx1_n4yfpdg0h_p1qc0000gn/T/523dcdd216387eb6ae926bb36fe455e5/tscancellation*
4
+ Info 3 [15:22:46.521] Platform: darwin NodeVersion: v22.20.0 CaseSensitive: false
5
+ Info 4 [15:22:46.521] ServerMode: undefined hasUnknownServerMode: undefined
6
+ Info 5 [15:22:46.523] currentDirectory:: /Users/zach/code/aha-co-config useCaseSensitiveFileNames:: false
7
+ Info 6 [15:22:46.523] libs Location:: /Users/zach/code/aha-co-config/node_modules/typescript/lib
8
+ Info 7 [15:22:46.523] globalTypingsCacheLocation:: /Users/zach/Library/Caches/typescript/5.9
9
+ Info 8 [15:22:46.526] Format host information updated
10
+ Info 9 [15:22:46.532] getConfigFileNameForFile:: File: /Users/zach/code/aha-co-config/index.d.ts ProjectRootPath: /Users/zach/code/aha-co-config:: Result: /Users/zach/code/aha-co-config/tsconfig.json
11
+ Info 10 [15:22:46.532] Creating ConfiguredProject: /Users/zach/code/aha-co-config/tsconfig.json, currentDirectory: /Users/zach/code/aha-co-config
12
+ Info 11 [15:22:46.542] Config: /Users/zach/code/aha-co-config/tsconfig.json : {
13
+ "rootNames": [
14
+ "/Users/zach/code/aha-co-config/eslint.config.d.ts",
15
+ "/Users/zach/code/aha-co-config/index.d.ts",
16
+ "/Users/zach/code/aha-co-config/prettier.d.ts",
17
+ "/Users/zach/code/aha-co-config/reset.d.ts"
18
+ ],
19
+ "options": {
20
+ "module": 101,
21
+ "target": 7,
22
+ "strict": true,
23
+ "verbatimModuleSyntax": true,
24
+ "declaration": true,
25
+ "sourceMap": true,
26
+ "declarationMap": true,
27
+ "outDir": "/Users/zach/code/aha-co-config/dist",
28
+ "configFilePath": "/Users/zach/code/aha-co-config/tsconfig.json"
29
+ }
30
+ }
31
+ Info 12 [15:22:46.545] Starting updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json
32
+ Info 13 [15:22:46.944] Finishing updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json projectStateVersion: 1 projectProgramVersion: 0 structureChanged: true structureIsReused:: Not Elapsed: 398.94770800000003ms
33
+ Info 14 [15:22:46.944] Project '/Users/zach/code/aha-co-config/tsconfig.json' (Configured)
34
+ Info 15 [15:22:46.944] Files (84)
35
+
36
+ Info 16 [15:22:46.944] -----------------------------------------------
37
+ Info 17 [15:22:46.954] AutoImportProviderProject: found 110 root files in 10 dependencies 0 referenced projects in 9.216625000000022 ms
38
+ Info 18 [15:22:46.955] Creating AutoImportProviderProject: /dev/null/autoImportProviderProject1*, currentDirectory: /Users/zach/code/aha-co-config
39
+ Info 19 [15:22:46.961] Starting updateGraphWorker: Project: /dev/null/autoImportProviderProject1*
40
+ Info 20 [15:22:47.159] Finishing updateGraphWorker: Project: /dev/null/autoImportProviderProject1* projectStateVersion: 1 projectProgramVersion: 0 structureChanged: true structureIsReused:: Not Elapsed: 198.32741700000003ms
41
+ Info 21 [15:22:47.159] Project '/dev/null/autoImportProviderProject1*' (AutoImportProvider)
42
+ Info 22 [15:22:47.159] Files (266)
43
+
44
+ Info 23 [15:22:47.159] -----------------------------------------------
45
+ Info 24 [15:22:52.845] Starting updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json
46
+ Info 25 [15:22:52.856] Finishing updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json projectStateVersion: 2 projectProgramVersion: 1 structureChanged: false structureIsReused:: Completely Elapsed: 11.41400000000067ms
47
+ Info 26 [15:22:52.857] Different program with same set of files
48
+ Info 27 [15:22:52.951] getCompletionData: Get current token: 0.009750000000167347
49
+ Info 28 [15:22:52.951] getCompletionData: Is inside comment: 0.12308299999949668
50
+ Info 29 [15:22:54.439] Starting updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json
51
+ Info 30 [15:22:54.452] Finishing updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json projectStateVersion: 3 projectProgramVersion: 1 structureChanged: false structureIsReused:: Completely Elapsed: 12.866291999999703ms
52
+ Info 31 [15:22:54.452] Different program with same set of files
53
+ Info 32 [15:22:56.063] Starting updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json
54
+ Info 33 [15:22:56.078] Finishing updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json projectStateVersion: 4 projectProgramVersion: 1 structureChanged: false structureIsReused:: Completely Elapsed: 14.547416999999768ms
55
+ Info 34 [15:22:56.078] Different program with same set of files
56
+ Info 35 [15:22:56.161] getCompletionData: Get current token: 0.009125000000494765
57
+ Info 36 [15:22:56.161] getCompletionData: Is inside comment: 0.026707999999416643
58
+ Info 37 [15:22:56.161] Returning an empty list because completion was inside a regular comment or plain text part of a JsDoc comment.
59
+ Info 38 [15:22:56.169] getCompletionData: Get current token: 0.006166999999550171
60
+ Info 39 [15:22:56.169] getCompletionData: Is inside comment: 0.0238340000014432
61
+ Info 40 [15:22:56.169] Returning an empty list because completion was inside a regular comment or plain text part of a JsDoc comment.
62
+ Info 41 [15:22:56.173] getCompletionData: Get current token: 0.006167000001369161
63
+ Info 42 [15:22:56.173] getCompletionData: Is inside comment: 0.02674999999908323
64
+ Info 43 [15:22:56.173] Returning an empty list because completion was inside a regular comment or plain text part of a JsDoc comment.
65
+ Info 44 [15:22:56.177] getCompletionData: Get current token: 0.0157920000001468
66
+ Info 45 [15:22:56.177] getCompletionData: Is inside comment: 0.02845800000068266
67
+ Info 46 [15:22:56.177] Returning an empty list because completion was inside a regular comment or plain text part of a JsDoc comment.
68
+ Info 47 [15:22:56.382] Starting updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json
69
+ Info 48 [15:22:56.395] Finishing updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json projectStateVersion: 5 projectProgramVersion: 1 structureChanged: false structureIsReused:: Completely Elapsed: 13.018541999999798ms
70
+ Info 49 [15:22:56.395] Different program with same set of files
71
+ Info 50 [15:22:56.483] getCompletionData: Get current token: 0.009374999999636202
72
+ Info 51 [15:22:56.483] getCompletionData: Is inside comment: 0.02904099999977916
73
+ Info 52 [15:22:56.483] Returning an empty list because completion was inside a regular comment or plain text part of a JsDoc comment.
74
+ Info 53 [15:22:56.490] getCompletionData: Get current token: 0.008667000000059488
75
+ Info 54 [15:22:56.490] getCompletionData: Is inside comment: 0.026041999999506515
76
+ Info 55 [15:22:56.490] Returning an empty list because completion was inside a regular comment or plain text part of a JsDoc comment.
77
+ Info 56 [15:22:56.494] getCompletionData: Get current token: 0.007832999999664025
78
+ Info 57 [15:22:56.494] getCompletionData: Is inside comment: 0.024166999999579275
79
+ Info 58 [15:22:56.495] Returning an empty list because completion was inside a regular comment or plain text part of a JsDoc comment.
80
+ Info 59 [15:22:56.502] getCompletionData: Get current token: 0.008832999999867752
81
+ Info 60 [15:22:56.502] getCompletionData: Is inside comment: 0.023166999999375548
82
+ Info 61 [15:22:56.502] Returning an empty list because completion was inside a regular comment or plain text part of a JsDoc comment.
83
+ Info 62 [15:22:57.105] Starting updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json
84
+ Info 63 [15:22:57.118] Finishing updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json projectStateVersion: 6 projectProgramVersion: 1 structureChanged: false structureIsReused:: Completely Elapsed: 12.323166000000128ms
85
+ Info 64 [15:22:57.118] Different program with same set of files
86
+ Info 65 [15:23:31.111] Starting updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json
87
+ Info 66 [15:23:31.151] Finishing updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json projectStateVersion: 7 projectProgramVersion: 1 structureChanged: false structureIsReused:: Completely Elapsed: 38.854999999995925ms
88
+ Info 67 [15:23:31.151] Different program with same set of files
89
+ Info 68 [15:23:38.510] Starting updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json
90
+ Info 69 [15:23:38.529] Finishing updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json projectStateVersion: 8 projectProgramVersion: 1 structureChanged: false structureIsReused:: Completely Elapsed: 18.122666999996ms
91
+ Info 70 [15:23:38.529] Different program with same set of files
92
+ Info 71 [15:23:41.536] Starting updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json
93
+ Info 72 [15:23:41.546] Finishing updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json projectStateVersion: 9 projectProgramVersion: 1 structureChanged: false structureIsReused:: Completely Elapsed: 10.030833999997412ms
94
+ Info 73 [15:23:41.546] Different program with same set of files
95
+ Info 74 [15:23:41.873] Starting updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json
96
+ Info 75 [15:23:41.885] Finishing updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json projectStateVersion: 10 projectProgramVersion: 1 structureChanged: false structureIsReused:: Completely Elapsed: 11.24725000000035ms
97
+ Info 76 [15:23:41.885] Different program with same set of files
98
+ Info 77 [15:23:42.112] Starting updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json
99
+ Info 78 [15:23:42.124] Finishing updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json projectStateVersion: 11 projectProgramVersion: 1 structureChanged: false structureIsReused:: Completely Elapsed: 11.568624999999884ms
100
+ Info 79 [15:23:42.124] Different program with same set of files
101
+ Info 80 [15:23:46.474] Starting updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json
102
+ Info 81 [15:23:46.484] Finishing updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json projectStateVersion: 12 projectProgramVersion: 1 structureChanged: false structureIsReused:: Completely Elapsed: 9.286791000005906ms
103
+ Info 82 [15:23:46.484] Different program with same set of files
104
+ Info 83 [15:23:46.920] Starting updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json
105
+ Info 84 [15:23:46.931] Finishing updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json projectStateVersion: 13 projectProgramVersion: 1 structureChanged: false structureIsReused:: Completely Elapsed: 11.309207999998762ms
106
+ Info 85 [15:23:46.931] Different program with same set of files
107
+ Info 86 [15:23:47.269] Starting updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json
108
+ Info 87 [15:23:47.278] Finishing updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json projectStateVersion: 14 projectProgramVersion: 1 structureChanged: false structureIsReused:: Completely Elapsed: 8.60320800000045ms
109
+ Info 88 [15:23:47.278] Different program with same set of files
110
+ Info 89 [15:23:47.974] Starting updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json
111
+ Info 90 [15:23:47.986] Finishing updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json projectStateVersion: 15 projectProgramVersion: 1 structureChanged: false structureIsReused:: Completely Elapsed: 11.670875000003434ms
112
+ Info 91 [15:23:47.986] Different program with same set of files
113
+ Info 92 [15:23:48.732] Starting updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json
114
+ Info 93 [15:23:48.743] Finishing updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json projectStateVersion: 16 projectProgramVersion: 1 structureChanged: false structureIsReused:: Completely Elapsed: 10.749958000000333ms
115
+ Info 94 [15:23:48.743] Different program with same set of files
116
+ Info 95 [15:23:48.836] getCompletionData: Get current token: 0.004457999995793216
117
+ Info 96 [15:23:48.836] getCompletionData: Is inside comment: 0.015957999996317085
118
+ Info 97 [15:23:48.836] Returning an empty list because completion was inside a regular comment or plain text part of a JsDoc comment.
119
+ Info 98 [15:23:48.843] getCompletionData: Get current token: 0.0037500000034924597
120
+ Info 99 [15:23:48.843] getCompletionData: Is inside comment: 0.013416999994660728
121
+ Info 100 [15:23:48.843] Returning an empty list because completion was inside a regular comment or plain text part of a JsDoc comment.
122
+ Info 101 [15:23:48.846] getCompletionData: Get current token: 0.003541999998560641
123
+ Info 102 [15:23:48.846] getCompletionData: Is inside comment: 0.012583000003360212
124
+ Info 103 [15:23:48.846] Returning an empty list because completion was inside a regular comment or plain text part of a JsDoc comment.
125
+ Info 104 [15:23:48.852] getCompletionData: Get current token: 0.003250000001571607
126
+ Info 105 [15:23:48.852] getCompletionData: Is inside comment: 0.011458000000857282
127
+ Info 106 [15:23:48.852] Returning an empty list because completion was inside a regular comment or plain text part of a JsDoc comment.
128
+ Info 107 [15:23:49.441] Starting updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json
129
+ Info 108 [15:23:49.449] Finishing updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json projectStateVersion: 17 projectProgramVersion: 1 structureChanged: false structureIsReused:: Completely Elapsed: 8.520916000001307ms
130
+ Info 109 [15:23:49.450] Different program with same set of files
131
+ Info 110 [15:23:49.997] Starting updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json
132
+ Info 111 [15:23:50.007] Finishing updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json projectStateVersion: 18 projectProgramVersion: 1 structureChanged: false structureIsReused:: Completely Elapsed: 9.836208000000624ms
133
+ Info 112 [15:23:50.008] Different program with same set of files
134
+ Info 113 [15:23:50.096] getCompletionData: Get current token: 0.006458000003476627
135
+ Info 114 [15:23:50.096] getCompletionData: Is inside comment: 0.02204199999687262
136
+ Info 115 [15:23:50.096] Returning an empty list because completion was inside a regular comment or plain text part of a JsDoc comment.
137
+ Info 116 [15:23:50.102] getCompletionData: Get current token: 0.006207999998878222
138
+ Info 117 [15:23:50.102] getCompletionData: Is inside comment: 0.02237500000046566
139
+ Info 118 [15:23:50.102] Returning an empty list because completion was inside a regular comment or plain text part of a JsDoc comment.
140
+ Info 119 [15:23:50.106] getCompletionData: Get current token: 0.005292000001645647
141
+ Info 120 [15:23:50.107] getCompletionData: Is inside comment: 0.019083999999566004
142
+ Info 121 [15:23:50.107] Returning an empty list because completion was inside a regular comment or plain text part of a JsDoc comment.
143
+ Info 122 [15:23:50.110] getCompletionData: Get current token: 0.005292000001645647
144
+ Info 123 [15:23:50.111] getCompletionData: Is inside comment: 0.01929099999688333
145
+ Info 124 [15:23:50.111] Returning an empty list because completion was inside a regular comment or plain text part of a JsDoc comment.
146
+ Info 125 [15:23:51.519] Starting updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json
147
+ Info 126 [15:23:51.525] Finishing updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json projectStateVersion: 19 projectProgramVersion: 1 structureChanged: false structureIsReused:: Completely Elapsed: 5.935708999997587ms
148
+ Info 127 [15:23:51.525] Different program with same set of files
149
+ Info 128 [15:23:52.251] Starting updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json
150
+ Info 129 [15:23:52.264] Finishing updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json projectStateVersion: 20 projectProgramVersion: 1 structureChanged: false structureIsReused:: Completely Elapsed: 12.354584000000614ms
151
+ Info 130 [15:23:52.264] Different program with same set of files
152
+ Info 131 [15:23:52.471] Starting updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json
153
+ Info 132 [15:23:52.479] Finishing updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json projectStateVersion: 21 projectProgramVersion: 1 structureChanged: false structureIsReused:: Completely Elapsed: 7.87729100001161ms
154
+ Info 133 [15:23:52.479] Different program with same set of files
155
+ Info 134 [15:23:52.792] Starting updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json
156
+ Info 135 [15:23:52.805] Finishing updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json projectStateVersion: 22 projectProgramVersion: 1 structureChanged: false structureIsReused:: Completely Elapsed: 12.923666000002413ms
157
+ Info 136 [15:23:52.806] Different program with same set of files
158
+ Info 137 [15:23:53.089] Starting updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json
159
+ Info 138 [15:23:53.099] Finishing updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json projectStateVersion: 23 projectProgramVersion: 1 structureChanged: false structureIsReused:: Completely Elapsed: 9.199542000002111ms
160
+ Info 139 [15:23:53.099] Different program with same set of files
161
+ Info 140 [15:23:53.190] getCompletionData: Get current token: 0.007458000007318333
162
+ Info 141 [15:23:53.190] getCompletionData: Is inside comment: 0.03175000000919681
163
+ Info 142 [15:23:53.190] Returning an empty list because completion was inside a regular comment or plain text part of a JsDoc comment.
164
+ Info 143 [15:23:53.197] getCompletionData: Get current token: 0.006208999999216758
165
+ Info 144 [15:23:53.197] getCompletionData: Is inside comment: 0.026959000009810552
166
+ Info 145 [15:23:53.197] Returning an empty list because completion was inside a regular comment or plain text part of a JsDoc comment.
167
+ Info 146 [15:23:53.203] getCompletionData: Get current token: 0.006041000000550412
168
+ Info 147 [15:23:53.203] getCompletionData: Is inside comment: 0.026333000001613982
169
+ Info 148 [15:23:53.203] Returning an empty list because completion was inside a regular comment or plain text part of a JsDoc comment.
170
+ Info 149 [15:23:53.207] getCompletionData: Get current token: 0.004459000003407709
171
+ Info 150 [15:23:53.207] getCompletionData: Is inside comment: 0.04695899999933317
172
+ Info 151 [15:23:53.207] Returning an empty list because completion was inside a regular comment or plain text part of a JsDoc comment.
173
+ Info 152 [15:23:53.929] Starting updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json
174
+ Info 153 [15:23:53.931] Finishing updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json projectStateVersion: 24 projectProgramVersion: 1 structureChanged: false structureIsReused:: Completely Elapsed: 2.3606659999932162ms
175
+ Info 154 [15:23:53.931] Different program with same set of files
176
+ Info 155 [15:23:54.439] Starting updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json
177
+ Info 156 [15:23:54.449] Finishing updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json projectStateVersion: 25 projectProgramVersion: 1 structureChanged: false structureIsReused:: Completely Elapsed: 9.186916000006022ms
178
+ Info 157 [15:23:54.449] Different program with same set of files
179
+ Info 158 [15:24:01.899] Starting updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json
180
+ Info 159 [15:24:01.918] Finishing updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json projectStateVersion: 26 projectProgramVersion: 1 structureChanged: false structureIsReused:: Completely Elapsed: 17.65312499999709ms
181
+ Info 160 [15:24:01.918] Different program with same set of files
182
+ Info 161 [15:24:02.773] Starting updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json
183
+ Info 162 [15:24:02.783] Finishing updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json projectStateVersion: 27 projectProgramVersion: 1 structureChanged: false structureIsReused:: Completely Elapsed: 9.170834000004106ms
184
+ Info 163 [15:24:02.783] Different program with same set of files
185
+ Info 164 [15:24:04.794] Starting updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json
186
+ Info 165 [15:24:04.802] Finishing updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json projectStateVersion: 28 projectProgramVersion: 1 structureChanged: false structureIsReused:: Completely Elapsed: 8.111292000001413ms
187
+ Info 166 [15:24:04.802] Different program with same set of files
188
+ Info 167 [15:24:04.813] Starting updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json
189
+ Info 168 [15:24:04.816] Finishing updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json projectStateVersion: 29 projectProgramVersion: 1 structureChanged: false structureIsReused:: Completely Elapsed: 3.042457999996259ms
190
+ Info 169 [15:24:04.816] Different program with same set of files
191
+ Info 170 [15:24:07.307] Starting updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json
192
+ Info 171 [15:24:07.318] Finishing updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json projectStateVersion: 30 projectProgramVersion: 1 structureChanged: false structureIsReused:: Completely Elapsed: 10.42020799999591ms
193
+ Info 172 [15:24:07.318] Different program with same set of files
194
+ Info 173 [15:24:07.602] Starting updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json
195
+ Info 174 [15:24:07.609] Finishing updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json projectStateVersion: 31 projectProgramVersion: 1 structureChanged: false structureIsReused:: Completely Elapsed: 6.5748339999991ms
196
+ Info 175 [15:24:07.609] Different program with same set of files
197
+ Info 176 [15:24:08.031] Starting updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json
198
+ Info 177 [15:24:08.042] Finishing updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json projectStateVersion: 32 projectProgramVersion: 1 structureChanged: false structureIsReused:: Completely Elapsed: 9.974667000002228ms
199
+ Info 178 [15:24:08.042] Different program with same set of files
200
+ Info 179 [15:24:13.222] Starting updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json
201
+ Info 180 [15:24:13.232] Finishing updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json projectStateVersion: 33 projectProgramVersion: 1 structureChanged: false structureIsReused:: Completely Elapsed: 9.860874999998487ms
202
+ Info 181 [15:24:13.232] Different program with same set of files
203
+ Info 182 [15:24:13.456] Starting updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json
204
+ Info 183 [15:24:13.462] Finishing updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json projectStateVersion: 34 projectProgramVersion: 1 structureChanged: false structureIsReused:: Completely Elapsed: 4.743958000006387ms
205
+ Info 184 [15:24:13.462] Different program with same set of files
206
+ Info 185 [15:24:14.762] Starting updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json
207
+ Info 186 [15:24:14.765] Finishing updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json projectStateVersion: 35 projectProgramVersion: 1 structureChanged: false structureIsReused:: Completely Elapsed: 3.6396249999961583ms
208
+ Info 187 [15:24:14.765] Different program with same set of files
209
+ Info 188 [15:24:15.288] Starting updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json
210
+ Info 189 [15:24:15.296] Finishing updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json projectStateVersion: 36 projectProgramVersion: 1 structureChanged: false structureIsReused:: Completely Elapsed: 7.26524999999674ms
211
+ Info 190 [15:24:15.296] Different program with same set of files
212
+ Info 191 [15:24:15.593] Starting updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json
213
+ Info 192 [15:24:15.601] Finishing updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json projectStateVersion: 37 projectProgramVersion: 1 structureChanged: false structureIsReused:: Completely Elapsed: 7.582292000006419ms
214
+ Info 193 [15:24:15.601] Different program with same set of files
215
+ Info 194 [15:24:16.181] Starting updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json
216
+ Info 195 [15:24:16.189] Finishing updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json projectStateVersion: 38 projectProgramVersion: 1 structureChanged: false structureIsReused:: Completely Elapsed: 7.835584000000381ms
217
+ Info 196 [15:24:16.190] Different program with same set of files
218
+ Info 197 [15:24:17.370] DirectoryWatcher:: Triggered with /Users/zach/code/aha-co-config/.git/index.lock :: WatchInfo: /Users/zach/code/aha-co-config 1 undefined Config: /Users/zach/code/aha-co-config/tsconfig.json WatchType: Wild card directory
219
+ Info 198 [15:24:17.371] Project: /Users/zach/code/aha-co-config/tsconfig.json Detected ignored path: /Users/zach/code/aha-co-config/.git/index.lock
220
+ Info 199 [15:24:17.371] Elapsed:: 0.5048749999987194ms DirectoryWatcher:: Triggered with /Users/zach/code/aha-co-config/.git/index.lock :: WatchInfo: /Users/zach/code/aha-co-config 1 undefined Config: /Users/zach/code/aha-co-config/tsconfig.json WatchType: Wild card directory
221
+ Info 200 [15:24:26.465] Starting updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json
222
+ Info 201 [15:24:26.482] Finishing updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json projectStateVersion: 39 projectProgramVersion: 1 structureChanged: false structureIsReused:: Completely Elapsed: 16.274499999999534ms
223
+ Info 202 [15:24:26.482] Different program with same set of files
224
+ Info 203 [15:24:26.563] getCompletionData: Get current token: 0.0048749999987194315
225
+ Info 204 [15:24:26.563] getCompletionData: Is inside comment: 0.027041999986977316
226
+ Info 205 [15:24:26.563] Returning an empty list because completion was inside a regular comment or plain text part of a JsDoc comment.
227
+ Info 206 [15:24:26.569] getCompletionData: Get current token: 0.00433300000440795
228
+ Info 207 [15:24:26.569] getCompletionData: Is inside comment: 0.03208300001278985
229
+ Info 208 [15:24:26.569] Returning an empty list because completion was inside a regular comment or plain text part of a JsDoc comment.
230
+ Info 209 [15:24:26.573] getCompletionData: Get current token: 0.0035420000058365986
231
+ Info 210 [15:24:26.573] getCompletionData: Is inside comment: 0.020208000001730397
232
+ Info 211 [15:24:26.573] Returning an empty list because completion was inside a regular comment or plain text part of a JsDoc comment.
233
+ Info 212 [15:24:26.577] getCompletionData: Get current token: 0.003499999991618097
234
+ Info 213 [15:24:26.577] getCompletionData: Is inside comment: 0.02004099999612663
235
+ Info 214 [15:24:26.577] Returning an empty list because completion was inside a regular comment or plain text part of a JsDoc comment.
236
+ Info 215 [15:24:28.772] Starting updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json
237
+ Info 216 [15:24:28.783] Finishing updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json projectStateVersion: 40 projectProgramVersion: 1 structureChanged: false structureIsReused:: Completely Elapsed: 10.284957999989274ms
238
+ Info 217 [15:24:28.783] Different program with same set of files
239
+ Info 218 [15:25:23.123] Starting updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json
240
+ Info 219 [15:25:23.147] Finishing updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json projectStateVersion: 41 projectProgramVersion: 1 structureChanged: false structureIsReused:: Completely Elapsed: 23.04608400000143ms
241
+ Info 220 [15:25:23.147] Different program with same set of files
242
+ Info 221 [15:25:27.299] Starting updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json
243
+ Info 222 [15:25:27.315] Finishing updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json projectStateVersion: 42 projectProgramVersion: 1 structureChanged: false structureIsReused:: Completely Elapsed: 16.08116699999664ms
244
+ Info 223 [15:25:27.316] Different program with same set of files
245
+ Info 224 [15:25:27.541] Starting updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json
246
+ Info 225 [15:25:27.556] Finishing updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json projectStateVersion: 43 projectProgramVersion: 1 structureChanged: false structureIsReused:: Completely Elapsed: 14.502000000007683ms
247
+ Info 226 [15:25:27.556] Different program with same set of files
248
+ Info 227 [15:25:27.643] getCompletionData: Get current token: 0.004875000013271347
249
+ Info 228 [15:25:27.643] getCompletionData: Is inside comment: 0.026458999986061826
250
+ Info 229 [15:25:27.643] Returning an empty list because completion was inside a regular comment or plain text part of a JsDoc comment.
251
+ Info 230 [15:25:27.648] getCompletionData: Get current token: 0.004458999988855794
252
+ Info 231 [15:25:27.649] getCompletionData: Is inside comment: 0.025292000005720183
253
+ Info 232 [15:25:27.649] Returning an empty list because completion was inside a regular comment or plain text part of a JsDoc comment.
254
+ Info 233 [15:25:27.654] getCompletionData: Get current token: 0.0033750000002328306
255
+ Info 234 [15:25:27.654] getCompletionData: Is inside comment: 0.020334000000730157
256
+ Info 235 [15:25:27.654] Returning an empty list because completion was inside a regular comment or plain text part of a JsDoc comment.
257
+ Info 236 [15:25:27.658] getCompletionData: Get current token: 0.0032919999794103205
258
+ Info 237 [15:25:27.658] getCompletionData: Is inside comment: 0.01999999998952262
259
+ Info 238 [15:25:27.658] Returning an empty list because completion was inside a regular comment or plain text part of a JsDoc comment.
260
+ Info 239 [15:25:28.382] Starting updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json
261
+ Info 240 [15:25:28.393] Finishing updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json projectStateVersion: 44 projectProgramVersion: 1 structureChanged: false structureIsReused:: Completely Elapsed: 10.979042000020854ms
262
+ Info 241 [15:25:28.393] Different program with same set of files
263
+ Info 242 [15:25:33.507] DirectoryWatcher:: Triggered with /Users/zach/code/aha-co-config/.git/index.lock :: WatchInfo: /Users/zach/code/aha-co-config 1 undefined Config: /Users/zach/code/aha-co-config/tsconfig.json WatchType: Wild card directory
264
+ Info 243 [15:25:33.508] Project: /Users/zach/code/aha-co-config/tsconfig.json Detected ignored path: /Users/zach/code/aha-co-config/.git/index.lock
265
+ Info 244 [15:25:33.508] Elapsed:: 0.2692920000117738ms DirectoryWatcher:: Triggered with /Users/zach/code/aha-co-config/.git/index.lock :: WatchInfo: /Users/zach/code/aha-co-config 1 undefined Config: /Users/zach/code/aha-co-config/tsconfig.json WatchType: Wild card directory
266
+ Info 245 [15:26:28.885] DirectoryWatcher:: Triggered with /Users/zach/code/aha-co-config/.git/index.lock :: WatchInfo: /Users/zach/code/aha-co-config 1 undefined Config: /Users/zach/code/aha-co-config/tsconfig.json WatchType: Wild card directory
267
+ Info 246 [15:26:28.886] Project: /Users/zach/code/aha-co-config/tsconfig.json Detected ignored path: /Users/zach/code/aha-co-config/.git/index.lock
268
+ Info 247 [15:26:28.886] Elapsed:: 0.802125000016531ms DirectoryWatcher:: Triggered with /Users/zach/code/aha-co-config/.git/index.lock :: WatchInfo: /Users/zach/code/aha-co-config 1 undefined Config: /Users/zach/code/aha-co-config/tsconfig.json WatchType: Wild card directory
269
+ Info 248 [15:27:17.960] FileWatcher:: Triggered with /Users/zach/code/aha-co-config/package.json 1:: WatchInfo: /Users/zach/code/aha-co-config/package.json 2000 undefined Project: /Users/zach/code/aha-co-config/tsconfig.json WatchType: File location affecting resolution
270
+ Info 249 [15:27:17.962] Elapsed:: 0.8957079999963753ms FileWatcher:: Triggered with /Users/zach/code/aha-co-config/package.json 1:: WatchInfo: /Users/zach/code/aha-co-config/package.json 2000 undefined Project: /Users/zach/code/aha-co-config/tsconfig.json WatchType: File location affecting resolution
271
+ Info 250 [15:27:17.962] FileWatcher:: Triggered with /Users/zach/code/aha-co-config/package.json 1:: WatchInfo: /Users/zach/code/aha-co-config/package.json 250 undefined WatchType: package.json file
272
+ Info 251 [15:27:17.963] Elapsed:: 0.7984580000047572ms FileWatcher:: Triggered with /Users/zach/code/aha-co-config/package.json 1:: WatchInfo: /Users/zach/code/aha-co-config/package.json 250 undefined WatchType: package.json file
273
+ Info 252 [15:27:18.018] DirectoryWatcher:: Triggered with /Users/zach/code/aha-co-config/.git/index.lock :: WatchInfo: /Users/zach/code/aha-co-config 1 undefined Config: /Users/zach/code/aha-co-config/tsconfig.json WatchType: Wild card directory
274
+ Info 253 [15:27:18.019] Project: /Users/zach/code/aha-co-config/tsconfig.json Detected ignored path: /Users/zach/code/aha-co-config/.git/index.lock
275
+ Info 254 [15:27:18.019] Elapsed:: 0.7499169999500737ms DirectoryWatcher:: Triggered with /Users/zach/code/aha-co-config/.git/index.lock :: WatchInfo: /Users/zach/code/aha-co-config 1 undefined Config: /Users/zach/code/aha-co-config/tsconfig.json WatchType: Wild card directory
276
+ Info 255 [15:27:18.120] FileWatcher:: Triggered with /Users/zach/code/aha-co-config/package.json 1:: WatchInfo: /Users/zach/code/aha-co-config/package.json 2000 undefined Project: /Users/zach/code/aha-co-config/tsconfig.json WatchType: File location affecting resolution
277
+ Info 256 [15:27:18.121] Elapsed:: 0.1567079999949783ms FileWatcher:: Triggered with /Users/zach/code/aha-co-config/package.json 1:: WatchInfo: /Users/zach/code/aha-co-config/package.json 2000 undefined Project: /Users/zach/code/aha-co-config/tsconfig.json WatchType: File location affecting resolution
278
+ Info 257 [15:27:18.121] FileWatcher:: Triggered with /Users/zach/code/aha-co-config/package.json 1:: WatchInfo: /Users/zach/code/aha-co-config/package.json 250 undefined WatchType: package.json file
279
+ Info 258 [15:27:18.121] Elapsed:: 0.23387499997625127ms FileWatcher:: Triggered with /Users/zach/code/aha-co-config/package.json 1:: WatchInfo: /Users/zach/code/aha-co-config/package.json 250 undefined WatchType: package.json file
280
+ Info 259 [15:27:18.175] DirectoryWatcher:: Triggered with /Users/zach/code/aha-co-config/.git/index.lock :: WatchInfo: /Users/zach/code/aha-co-config 1 undefined Config: /Users/zach/code/aha-co-config/tsconfig.json WatchType: Wild card directory
281
+ Info 260 [15:27:18.175] Project: /Users/zach/code/aha-co-config/tsconfig.json Detected ignored path: /Users/zach/code/aha-co-config/.git/index.lock
282
+ Info 261 [15:27:18.175] Elapsed:: 0.18562499998370185ms DirectoryWatcher:: Triggered with /Users/zach/code/aha-co-config/.git/index.lock :: WatchInfo: /Users/zach/code/aha-co-config 1 undefined Config: /Users/zach/code/aha-co-config/tsconfig.json WatchType: Wild card directory
283
+ Info 262 [15:27:19.376] Starting updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json
284
+ Info 263 [15:27:19.406] Finishing updateGraphWorker: Project: /Users/zach/code/aha-co-config/tsconfig.json projectStateVersion: 45 projectProgramVersion: 1 structureChanged: true structureIsReused:: SafeModules Elapsed: 29.41841599997133ms
285
+ Info 264 [15:27:19.406] Different program with same set of files
286
+ Info 265 [15:27:21.627] Before ensureProjectForOpenFiles:
287
+ Info 266 [15:27:21.628] After ensureProjectForOpenFiles:
288
+ Info 267 [15:27:21.628] got projects updated in background /Users/zach/code/aha-co-config/index.d.ts
289
+ Info 268 [15:27:21.628] Queueing diagnostics update for /Users/zach/code/aha-co-config/index.d.ts
290
+ Info 269 [15:27:53.311] DirectoryWatcher:: Triggered with /Users/zach/code/aha-co-config/.git/index.lock :: WatchInfo: /Users/zach/code/aha-co-config 1 undefined Config: /Users/zach/code/aha-co-config/tsconfig.json WatchType: Wild card directory
291
+ Info 270 [15:27:53.316] Project: /Users/zach/code/aha-co-config/tsconfig.json Detected ignored path: /Users/zach/code/aha-co-config/.git/index.lock
292
+ Info 271 [15:27:53.316] Elapsed:: 0.8259580000303686ms DirectoryWatcher:: Triggered with /Users/zach/code/aha-co-config/.git/index.lock :: WatchInfo: /Users/zach/code/aha-co-config 1 undefined Config: /Users/zach/code/aha-co-config/tsconfig.json WatchType: Wild card directory
293
+ Info 272 [15:28:31.484] DirectoryWatcher:: Triggered with /Users/zach/code/aha-co-config/.git/index.lock :: WatchInfo: /Users/zach/code/aha-co-config 1 undefined Config: /Users/zach/code/aha-co-config/tsconfig.json WatchType: Wild card directory
294
+ Info 273 [15:28:31.485] Project: /Users/zach/code/aha-co-config/tsconfig.json Detected ignored path: /Users/zach/code/aha-co-config/.git/index.lock
295
+ Info 274 [15:28:31.485] Elapsed:: 0.6879169999738224ms DirectoryWatcher:: Triggered with /Users/zach/code/aha-co-config/.git/index.lock :: WatchInfo: /Users/zach/code/aha-co-config 1 undefined Config: /Users/zach/code/aha-co-config/tsconfig.json WatchType: Wild card directory
package/README.md ADDED
@@ -0,0 +1,83 @@
1
+ <div align="center">
2
+ <a
3
+ alt="The Aha Co"
4
+ href="https://theaha.co"
5
+ >
6
+ <img
7
+ width="300px"
8
+ src="logo.svg"
9
+ />
10
+ </a>
11
+ </div>
12
+
13
+ # @theahaco/ts-config
14
+
15
+ Standardized set of configuration files for TypeScript projects so we don't have
16
+ to think about them. Heavily inspired by
17
+ [@epic-web/config](https://github.com/epicweb-dev/config).
18
+
19
+ ## Usage
20
+
21
+ These are a set of defaults and everything can be overridden as needed per
22
+ project.
23
+
24
+ ```
25
+ npm install @theahaco/ts-config
26
+ ```
27
+
28
+ ### TypeScript
29
+
30
+ Create a `tsconfig.json` file in the project root and
31
+ [extend this config file](https://www.typescriptlang.org/tsconfig/#extends):
32
+
33
+ ```json
34
+ {
35
+ "extends": ["@theahaco/ts-config/typescript"],
36
+ "include": ["**/*.ts", "**/*.tsx", "**/*.js", "**/*.jsx"],
37
+ "compilerOptions": {
38
+ // override here
39
+ }
40
+ }
41
+ ```
42
+
43
+ Create a `reset.d.ts` file:
44
+
45
+ ```ts
46
+ import "@theahaco/ts-config/reset.d.ts"
47
+ ```
48
+
49
+ #### TS for Libraries
50
+
51
+ The configuration above assumes you're using a bundler to create an application.
52
+ If you're creating a library, you'll want the configuration to be more strict to
53
+ be consumable in as many setups as possible. You can extend a different config
54
+ instead:
55
+
56
+ ```json
57
+ extends: ["@theahaco/ts-config/typescript.lib"],
58
+ ```
59
+
60
+ ### ESLint
61
+
62
+ Create a `eslint.config.js` file in the project root and
63
+ [extend this config file](https://eslint.org/docs/latest/extend/shareable-configs#overriding-settings-from-shareable-configs):
64
+
65
+ ```js
66
+ import { config } from "@theahaco/ts-config/eslint"
67
+
68
+ /** @type {import("eslint").Linter.Config[]} */
69
+ export default [
70
+ ...config,
71
+ // override here
72
+ ]
73
+ ```
74
+
75
+ ### Prettier
76
+
77
+ Add a line in `package.json` to point to this config file:
78
+
79
+ ```json
80
+ "prettier": "@theahaco/ts-config/prettier",
81
+ ```
82
+
83
+ You can add a `.prettierignore` file to your project root if needed.
@@ -0,0 +1,15 @@
1
+ import { type Linter } from "eslint"
2
+
3
+ /**
4
+ * Check if a package is installed by attempting to resolve it
5
+ * @param pkg - The package name to check
6
+ * @returns True if the package is installed, false otherwise
7
+ */
8
+ export declare const has: (pkg: string) => boolean
9
+
10
+ /**
11
+ * ESLint configuration for Aha projects
12
+ */
13
+ export declare const config: Linter.Config[]
14
+
15
+ export default config
@@ -0,0 +1,353 @@
1
+ import { defineConfig } from "eslint/config"
2
+ import globals from "globals"
3
+
4
+ /**
5
+ * Check if a package is installed by attempting to resolve it
6
+ * @param {string} pkg - The package name to check
7
+ * @returns {boolean} - True if the package is installed, false otherwise
8
+ */
9
+ export const has = (pkg) => {
10
+ try {
11
+ import.meta.resolve(pkg, import.meta.url)
12
+ return true
13
+ } catch {
14
+ return false
15
+ }
16
+ }
17
+
18
+ const hasReact = has("react")
19
+ const hasTypeScript = has("typescript")
20
+ const hasVitest = has("vitest")
21
+ const hasTestingLibrary = has("@testing-library/dom")
22
+ const hasJestDom = has("@testing-library/jest-dom")
23
+ const hasPlaywright = has("playwright")
24
+
25
+ const testFiles = ["**/tests/**", "**/*.test.*"]
26
+ const playwrightFiles = ["**/tests/e2e/**"]
27
+
28
+ const ERROR = "error"
29
+ const WARN = "warn"
30
+
31
+ export const config = defineConfig(
32
+ [
33
+ {
34
+ ignores: [
35
+ "**/.cache/**",
36
+ "**/node_modules/**",
37
+ "**/public/**",
38
+ "**/*.json",
39
+ "**/playwright-report/**",
40
+ "**/dist/**",
41
+ "**/coverage/**",
42
+ "**/*.tsbuildinfo",
43
+ "**/.react-router/**",
44
+ ],
45
+ },
46
+
47
+ // all files
48
+ {
49
+ plugins: {
50
+ import: (await import("eslint-plugin-import-x")).default,
51
+ },
52
+ languageOptions: {
53
+ globals: {
54
+ ...globals.browser,
55
+ ...globals.node,
56
+ },
57
+ },
58
+ rules: {
59
+ "no-unexpected-multiline": ERROR,
60
+ "no-warning-comments": [
61
+ ERROR,
62
+ { terms: ["FIXME"], location: "anywhere" },
63
+ ],
64
+ "import/no-duplicates": [WARN, { "prefer-inline": true }],
65
+ "import/order": [
66
+ WARN,
67
+ {
68
+ alphabetize: { order: "asc", caseInsensitive: true },
69
+ pathGroups: [{ pattern: "#*/**", group: "internal" }],
70
+ groups: [
71
+ "builtin",
72
+ "external",
73
+ "internal",
74
+ "parent",
75
+ "sibling",
76
+ "index",
77
+ ],
78
+ },
79
+ ],
80
+ },
81
+ },
82
+
83
+ // JSX/TSX files
84
+ hasReact
85
+ ? {
86
+ files: ["**/*.tsx", "**/*.jsx"],
87
+ plugins: {
88
+ react: (await import("eslint-plugin-react")).default,
89
+ },
90
+ languageOptions: {
91
+ parser: hasTypeScript
92
+ ? (await import("typescript-eslint")).parser
93
+ : undefined,
94
+ parserOptions: {
95
+ jsx: true,
96
+ },
97
+ },
98
+ rules: {
99
+ "react/jsx-key": WARN,
100
+ },
101
+ }
102
+ : null,
103
+
104
+ // react-hook rules are applicable in ts/js/tsx/jsx, but only with React as a
105
+ // dep
106
+ hasReact
107
+ ? {
108
+ files: ["**/*.ts?(x)", "**/*.js?(x)"],
109
+ plugins: {
110
+ "react-hooks": (await import("eslint-plugin-react-hooks")).default,
111
+ },
112
+ rules: {
113
+ "react-hooks/rules-of-hooks": ERROR,
114
+ "react-hooks/exhaustive-deps": WARN,
115
+ },
116
+ }
117
+ : null,
118
+
119
+ // JS and JSX files
120
+ {
121
+ files: ["**/*.js?(x)"],
122
+ rules: {
123
+ "no-undef": ERROR,
124
+
125
+ // most of these rules are useful for JS but not TS because TS handles these better
126
+ // if it weren't for https://github.com/import-js/eslint-plugin-import/issues/2132
127
+ // we could enable this :(
128
+ // 'import/no-unresolved': ERROR,
129
+ "no-unused-vars": [
130
+ WARN,
131
+ {
132
+ args: "after-used",
133
+ argsIgnorePattern: "^_",
134
+ ignoreRestSiblings: true,
135
+ varsIgnorePattern: "^ignored",
136
+ },
137
+ ],
138
+ },
139
+ },
140
+
141
+ // TS and TSX files
142
+ hasTypeScript
143
+ ? {
144
+ files: ["**/*.ts?(x)"],
145
+ languageOptions: {
146
+ parser: (await import("typescript-eslint")).parser,
147
+ parserOptions: {
148
+ projectService: true,
149
+ },
150
+ },
151
+ plugins: {
152
+ "@typescript-eslint": (await import("typescript-eslint")).plugin,
153
+ },
154
+ rules: {
155
+ "@typescript-eslint/no-unused-vars": [
156
+ WARN,
157
+ {
158
+ args: "after-used",
159
+ argsIgnorePattern: "^_",
160
+ ignoreRestSiblings: true,
161
+ varsIgnorePattern: "^ignored",
162
+ },
163
+ ],
164
+ "import/consistent-type-specifier-style": [WARN, "prefer-inline"],
165
+ "@typescript-eslint/consistent-type-imports": [
166
+ WARN,
167
+ {
168
+ prefer: "type-imports",
169
+ disallowTypeAnnotations: true,
170
+ fixStyle: "inline-type-imports",
171
+ },
172
+ ],
173
+
174
+ "@typescript-eslint/no-misused-promises": [
175
+ ERROR,
176
+ { checksVoidReturn: false },
177
+ ],
178
+
179
+ "@typescript-eslint/no-floating-promises": ERROR,
180
+
181
+ // here are rules we've decided to not enable. Commented out rather
182
+ // than setting them to disabled to avoid them being referenced at all
183
+ // when config resolution happens.
184
+
185
+ // @typescript-eslint/require-await - sometimes you really do want
186
+ // async without await to make a function async. TypeScript will ensure
187
+ // it's treated as an async function by consumers and that's enough for me.
188
+
189
+ // @typescript-eslint/prefer-promise-reject-errors - sometimes you
190
+ // aren't the one creating the error, and you just want to propagate an
191
+ // error object with an unknown type.
192
+
193
+ // @typescript-eslint/only-throw-error - same reason as above.
194
+ // However, this rule supports options to allow you to throw `any` and
195
+ // `unknown`. Unfortunately, in Remix you can throw Response objects,
196
+ // and we don't want to enable this rule for those cases.
197
+
198
+ // @typescript-eslint/no-unsafe-declaration-merging - this is a rare
199
+ // enough problem (especially if you focus on types over interfaces)
200
+ // that it's not worth enabling.
201
+
202
+ // @typescript-eslint/no-unsafe-enum-comparison - enums are not
203
+ // recommended or used in epic projects, so it's not worth enabling.
204
+
205
+ // @typescript-eslint/no-unsafe-unary-minus - this is a rare enough
206
+ // problem that it's not worth enabling.
207
+
208
+ // @typescript-eslint/no-base-to-string - this doesn't handle when
209
+ // your object actually does implement toString unless you do so with
210
+ // a class which is not 100% of the time. For example, the timings
211
+ // object in the epic stack uses defineProperty to implement toString.
212
+ // It's not high enough risk/impact to enable.
213
+
214
+ // @typescript-eslint/no-non-null-assertion - normally you should not
215
+ // use ! to tell TS to ignore the null case, but you're a responsible
216
+ // adult and if you're going to do that, the linter shouldn't yell at
217
+ // you about it.
218
+
219
+ // @typescript-eslint/restrict-template-expressions - toString is a
220
+ // feature of many built-in objects and custom ones. It's not worth
221
+ // enabling.
222
+
223
+ // @typescript-eslint/no-confusing-void-expression - what's confusing
224
+ // to one person isn't necessarily confusing to others. Arrow
225
+ // functions that call something that returns void is not confusing
226
+ // and the types will make sure you don't mess something up.
227
+
228
+ // these each protect you from `any` and while it's best to avoid
229
+ // using `any`, it's not worth having a lint rule yell at you when you
230
+ // do:
231
+ // - @typescript-eslint/no-unsafe-argument
232
+ // - @typescript-eslint/no-unsafe-call
233
+ // - @typescript-eslint/no-unsafe-member-access
234
+ // - @typescript-eslint/no-unsafe-return
235
+ // - @typescript-eslint/no-unsafe-assignment
236
+ },
237
+ }
238
+ : null,
239
+
240
+ // This assumes test files are those which are in the test directory or have
241
+ // *.test.* or *.spec.* in the filename. If a file doesn't match this assumption,
242
+ // then it will not be allowed to import test files.
243
+ {
244
+ files: ["**/*.ts?(x)", "**/*.js?(x)"],
245
+ ignores: testFiles,
246
+ rules: {
247
+ "no-restricted-imports": [
248
+ ERROR,
249
+ {
250
+ patterns: [
251
+ {
252
+ group: testFiles,
253
+ message: "Do not import test files in source files",
254
+ },
255
+ ],
256
+ },
257
+ ],
258
+ },
259
+ },
260
+
261
+ hasTestingLibrary
262
+ ? {
263
+ files: testFiles,
264
+ ignores: [...playwrightFiles],
265
+ plugins: {
266
+ "testing-library": (await import("eslint-plugin-testing-library"))
267
+ .default,
268
+ },
269
+ rules: {
270
+ "testing-library/no-unnecessary-act": [ERROR, { isStrict: false }],
271
+ "testing-library/no-wait-for-side-effects": ERROR,
272
+ "testing-library/prefer-find-by": ERROR,
273
+ },
274
+ }
275
+ : null,
276
+
277
+ hasJestDom
278
+ ? {
279
+ files: testFiles,
280
+ ignores: [...playwrightFiles],
281
+ plugins: {
282
+ "jest-dom": (await import("eslint-plugin-jest-dom")).default,
283
+ },
284
+ rules: {
285
+ "jest-dom/prefer-checked": ERROR,
286
+ "jest-dom/prefer-enabled-disabled": ERROR,
287
+ "jest-dom/prefer-focus": ERROR,
288
+ "jest-dom/prefer-required": ERROR,
289
+ },
290
+ }
291
+ : null,
292
+
293
+ hasVitest
294
+ ? {
295
+ files: testFiles,
296
+ ignores: [...playwrightFiles],
297
+ plugins: {
298
+ vitest: (await import("@vitest/eslint-plugin")).default,
299
+ },
300
+ rules: {
301
+ // you don't want the editor to autofix this, but we do want to be
302
+ // made aware of it
303
+ "vitest/no-focused-tests": [WARN, { fixable: false }],
304
+ "vitest/no-import-node-test": ERROR,
305
+ "vitest/prefer-comparison-matcher": ERROR,
306
+ "vitest/prefer-equality-matcher": ERROR,
307
+ "vitest/prefer-to-be": ERROR,
308
+ "vitest/prefer-to-contain": ERROR,
309
+ "vitest/prefer-to-have-length": ERROR,
310
+ "vitest/valid-expect-in-promise": ERROR,
311
+ "vitest/valid-expect": ERROR,
312
+
313
+ // vitest/expect-expect - we don't enable this because it's fine to
314
+ // rely on testing-library to throw errors if elements aren't found.
315
+ },
316
+ }
317
+ : null,
318
+
319
+ hasPlaywright
320
+ ? {
321
+ files: [...playwrightFiles],
322
+ plugins: {
323
+ playwright: (await import("eslint-plugin-playwright")).default,
324
+ },
325
+ rules: {
326
+ "playwright/max-nested-describe": ERROR,
327
+ "playwright/missing-playwright-await": ERROR,
328
+ "playwright/no-focused-test": WARN,
329
+ "playwright/no-page-pause": ERROR,
330
+ "playwright/no-raw-locators": [WARN, { allowed: ["iframe"] }],
331
+ "playwright/no-slowed-test": ERROR,
332
+ "playwright/no-standalone-expect": ERROR,
333
+ "playwright/no-unsafe-references": ERROR,
334
+ "playwright/prefer-comparison-matcher": ERROR,
335
+ "playwright/prefer-equality-matcher": ERROR,
336
+ "playwright/prefer-native-locators": ERROR,
337
+ "playwright/prefer-to-be": ERROR,
338
+ "playwright/prefer-to-contain": ERROR,
339
+ "playwright/prefer-to-have-count": ERROR,
340
+ "playwright/prefer-to-have-length": ERROR,
341
+ "playwright/prefer-web-first-assertions": ERROR,
342
+ "playwright/valid-expect-in-promise": ERROR,
343
+ "playwright/valid-expect": ERROR,
344
+
345
+ // playwright/expect-expect - we don't enable this because it's fine to
346
+ // rely on thrown errors if elements aren't found.
347
+ },
348
+ }
349
+ : null,
350
+ ].filter(Boolean),
351
+ )
352
+
353
+ export default config
package/index.d.ts ADDED
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @theahaco/ts-config main entry point
3
+ *
4
+ * This package provides standardized configurations for Aha TypeScript and JavaScript
5
+ * projects. The main entry point intentionally throws an error as there is no default
6
+ * export. Import specific configurations using the named exports instead:
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * import { config as prettierConfig } from '@theahaco/ts-config/prettier'
11
+ * import { config as eslintConfig } from '@theahaco/ts-config/eslint'
12
+ * ```
13
+ */
14
+
15
+ declare const _default: never
16
+ export default _default
package/index.js ADDED
@@ -0,0 +1 @@
1
+ throw new Error("there is no default export module")
package/logo.svg ADDED
@@ -0,0 +1,29 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 130 45" fill="none" class="nav_logo_svg">
2
+ <g clip-path="url(#clip0_227_556)">
3
+ <path d="M4.5895 22.0971C3.80747 21.3129 2.37745 19.6408 0.00976562 18.876V28.7521C1.78207 27.0507 3.31954 24.6409 4.5895 22.0966V22.0971Z" fill="currentColor"></path>
4
+ <path d="M31.9084 31.2354C31.1341 31.8264 30.1671 32.1758 29.1203 32.1758C28.1993 32.1758 27.3453 31.9056 26.622 31.4353C25.9972 31.9128 25.2301 32.1758 24.4105 32.1758C22.3457 32.1758 20.6626 30.4949 20.6626 28.428V25.6349C20.6626 24.6053 19.823 23.7657 18.7934 23.7657C17.7638 23.7657 16.9242 24.6048 16.9242 25.6349V31.9997H14.1793V22.6348C13.7429 22.9095 13.3109 23.1437 12.8839 23.3393V32.0003H10.1418V24.0703C9.05902 24.1501 7.99065 23.9712 6.94112 23.5325C5.20482 26.9631 2.90581 30.3265 0.00976562 32.2656V36.9023H36.7623V31.9969L33.5849 31.9958C32.9169 31.9958 32.3188 31.7017 31.9084 31.236V31.2354Z" fill="currentColor"></path>
5
+ <path d="M18.1805 12.168C17.8548 12.1802 16.9238 12.7418 16.9238 15.0912V16.5793C18.998 14.1651 18.8916 12.168 18.1805 12.168Z" fill="currentColor"></path>
6
+ <path d="M8.28696 12.1683H12.8839V20.2168C13.2965 19.9493 13.7279 19.6308 14.1793 19.2592V15.0915C14.1793 10.6126 16.7984 9.42845 18.1803 9.42845C19.4608 9.42845 20.5729 10.1905 21.0841 11.4184C21.5205 12.4746 22.0827 15.3784 17.8934 19.5704C17.5605 19.9011 17.2398 20.2118 16.9236 20.5014V21.4253C17.493 21.1694 18.1249 21.027 18.7928 21.027C21.3322 21.027 23.3991 23.094 23.3991 25.6361V28.4292C23.4135 29.2948 24.323 29.6327 24.858 29.3242C24.6314 28.7842 24.5107 28.1905 24.5107 27.5685V25.6367C24.5107 23.0945 26.5777 21.0276 29.1198 21.0276C29.9328 21.0276 30.6971 21.2375 31.3606 21.6113V21.0132H33.8856V28.1666C33.8856 29.0024 34.4505 29.2594 34.8067 29.2594H36.7617V0.149902H0.00976562V16.0818C2.0324 16.5968 4.02679 17.7139 5.78359 19.5023C6.95109 16.7552 7.79515 14.078 8.28696 12.1678V12.1683Z" fill="currentColor"></path>
7
+ <path d="M10.1419 21.3196V15.5796C9.65232 17.1209 8.97497 19.0406 8.10156 21.0521C8.90962 21.3678 9.59196 21.3922 10.1419 21.3196Z" fill="currentColor"></path>
8
+ <path d="M29.121 23.7656C28.0886 23.7656 27.2495 24.6047 27.2495 25.6348V27.5667C27.2495 28.5963 28.0886 29.4359 29.121 29.4359C30.1533 29.4359 30.9902 28.5963 30.9902 27.5667V25.6348C30.9902 24.6053 30.1533 23.7656 29.121 23.7656Z" fill="currentColor"></path>
9
+ <path d="M5.16605 44.7302H36.7623V38.1201H0.00976562L5.16605 44.7302Z" fill="currentColor"></path>
10
+ <path d="M48.6092 19.7812V8.90208H44.7622V6.89551H54.6655V8.90208H50.8185V19.7812H48.6098H48.6092Z" fill="currentColor"></path>
11
+ <path d="M56.3955 19.7812V6.89551H58.6231V12.3071H63.7035V6.89551H65.931V19.7812H63.7035V14.3325H58.6231V19.7812H56.3955Z" fill="currentColor"></path>
12
+ <path d="M68.4713 19.7812V6.89551H76.6809V8.90208H70.6983V12.2888H76.1653V14.2954H70.6983V17.7747H76.7728V19.7812H68.4707H68.4713Z" fill="currentColor"></path>
13
+ <path d="M82.2769 19.7812L85.811 6.89551H89.658L93.1921 19.7812H90.9097L90.1365 16.8359H85.3319L84.5588 19.7812H82.2764H82.2769ZM85.8481 14.811H89.6214L87.8912 8.27624H87.5783L85.8481 14.811Z" fill="currentColor"></path>
14
+ <path d="M94.8311 19.7812V6.89551H97.0586V12.3071H102.139V6.89551H104.367V19.7812H102.139V14.3325H97.0586V19.7812H94.8311Z" fill="currentColor"></path>
15
+ <path d="M106.005 19.7812L109.539 6.89551H113.386L116.92 19.7812H114.638L113.865 16.8359H109.06L108.287 19.7812H106.004H106.005ZM109.576 14.811H113.349L111.619 8.27624H111.306L109.576 14.811Z" fill="currentColor"></path>
16
+ <path d="M50.4133 37.9849C48.8421 37.9849 47.5904 37.5401 46.6583 36.6501C45.7256 35.7606 45.2593 34.4812 45.2593 32.812V29.7564C45.2593 28.0877 45.7256 26.8083 46.6583 25.9183C47.591 25.0288 48.8426 24.5835 50.4133 24.5835C51.984 24.5835 53.1959 25.0133 54.0488 25.8723C54.9017 26.7313 55.3282 27.9093 55.3282 29.4064V29.5166H53.156V29.351C53.156 28.5413 52.9317 27.8755 52.4842 27.3538C52.0361 26.8327 51.346 26.5718 50.4133 26.5718C49.4807 26.5718 48.79 26.8509 48.2689 27.4092C47.7471 27.968 47.4863 28.7379 47.4863 29.7193V32.8485C47.4863 33.8183 47.7471 34.5854 48.2689 35.1497C48.7906 35.7141 49.505 35.9966 50.4133 35.9966C51.3216 35.9966 52.0361 35.7357 52.4842 35.214C52.9322 34.6928 53.156 34.0265 53.156 33.2168V32.9039H55.3282V33.1614C55.3282 34.659 54.9017 35.837 54.0488 36.6955C53.1959 37.5545 51.984 37.9843 50.4133 37.9843V37.9849Z" fill="currentColor"></path>
17
+ <path d="M62.3413 37.9849C60.7457 37.9849 59.4724 37.5401 58.5214 36.6501C57.5705 35.7606 57.0947 34.4812 57.0947 32.812V29.7564C57.0947 28.0877 57.5699 26.8083 58.5214 25.9183C59.4724 25.0288 60.7457 24.5835 62.3413 24.5835C63.9369 24.5835 65.2252 25.0282 66.17 25.9183C67.1149 26.8083 67.5873 28.0877 67.5873 29.7564V32.812C67.5873 34.4812 67.1149 35.7606 66.17 36.6501C65.2252 37.5401 63.9485 37.9849 62.3413 37.9849ZM62.3413 35.9971C63.2983 35.9971 64.0438 35.718 64.5777 35.1597C65.1116 34.6014 65.3786 33.8438 65.3786 32.8862V29.6833C65.3786 28.7262 65.1116 27.9686 64.5777 27.4098C64.0438 26.8515 63.2983 26.5723 62.3413 26.5723C61.3842 26.5723 60.6571 26.8515 60.1231 27.4098C59.5892 27.9686 59.3223 28.7257 59.3223 29.6833V32.8862C59.3223 33.8432 59.5892 34.6014 60.1231 35.1597C60.6571 35.7185 61.3964 35.9971 62.3413 35.9971Z" fill="currentColor"></path>
18
+ <path d="M69.8154 37.7275V24.8418H73.9571L76.4604 36.236H76.7734L79.295 24.8418H83.4184V37.7275H81.2833V26.4435H80.9704L78.467 37.7275H74.7856L72.2822 26.4435H71.9693V37.7275H69.8154Z" fill="currentColor"></path>
19
+ <path d="M85.9771 37.7275V24.8418H91.1865C91.9962 24.8418 92.7079 25.0013 93.3216 25.3203C93.9352 25.6399 94.4198 26.0907 94.776 26.6734C95.1315 27.2566 95.3099 27.9466 95.3099 28.7442V29.0017C95.3099 29.7871 95.1288 30.4744 94.7671 31.0631C94.4049 31.6519 93.9142 32.1066 93.2944 32.425C92.6747 32.7446 91.9719 32.9035 91.1865 32.9035H88.2046V37.7264H85.9771V37.7275ZM88.2046 30.8981H90.9655C91.6036 30.8981 92.1159 30.7264 92.5024 30.383C92.889 30.0396 93.0823 29.5672 93.0823 28.9657V28.7818C93.0823 28.1804 92.8918 27.7079 92.5119 27.3646C92.1314 27.0212 91.6157 26.8495 90.9655 26.8495H88.2046V30.8992V30.8981Z" fill="currentColor"></path>
20
+ <path d="M95.1632 37.7275L98.6972 24.8418H102.544L106.078 37.7275H103.796L103.023 34.7822H98.2182L97.445 37.7275H95.1626H95.1632ZM98.7338 32.7573H102.507L100.777 26.2225H100.464L98.7338 32.7573Z" fill="currentColor"></path>
21
+ <path d="M107.717 37.7275V24.8418H111.95L114.988 36.236H115.282V24.8418H117.473V37.7275H113.257L110.22 26.3333H109.907V37.7275H107.717Z" fill="currentColor"></path>
22
+ <path d="M123.345 37.727V33.1805L118.909 24.8418H121.394L124.303 30.5298H124.615L127.524 24.8418H129.99L125.554 33.1805V37.727H123.345Z" fill="currentColor"></path>
23
+ </g>
24
+ <defs>
25
+ <clipPath id="clip0_227_556">
26
+ <rect width="129.981" height="44.5803" fill="currentColor" transform="translate(0.00976562 0.149902)"></rect>
27
+ </clipPath>
28
+ </defs>
29
+ </svg>
package/package.json ADDED
@@ -0,0 +1,84 @@
1
+ {
2
+ "$schema": "https://json.schemastore.org/package",
3
+ "name": "@theahaco/ts-config",
4
+ "version": "0.0.0-semantically-released",
5
+ "description": "Standardized configs for The Aha Co TS/JS projects",
6
+ "main": "index.js",
7
+ "types": "index.d.ts",
8
+ "type": "module",
9
+ "imports": {
10
+ "#/*": "./*"
11
+ },
12
+ "exports": {
13
+ ".": {
14
+ "types": "./index.d.ts",
15
+ "import": "./index.js"
16
+ },
17
+ "./prettier": {
18
+ "types": "./prettier.d.ts",
19
+ "import": "./prettier.js"
20
+ },
21
+ "./typescript": "./typescript.app.json",
22
+ "./typescript.app": "./typescript.app.json",
23
+ "./typescript.lib": "./typescript.lib.json",
24
+ "./reset.d.ts": "./reset.d.ts",
25
+ "./eslint": {
26
+ "types": "./eslint.config.d.ts",
27
+ "import": "./eslint.config.js"
28
+ }
29
+ },
30
+ "publishConfig": {
31
+ "access": "public"
32
+ },
33
+ "prettier": "./prettier.js",
34
+ "scripts": {
35
+ "format": "prettier . --write",
36
+ "lint": "eslint .",
37
+ "typecheck": "tsc",
38
+ "validate": "run-p -l format lint typecheck",
39
+ "prepack": "npm run validate"
40
+ },
41
+ "keywords": [
42
+ "config",
43
+ "eslint",
44
+ "prettier",
45
+ "typescript",
46
+ "javascript",
47
+ "theahaco"
48
+ ],
49
+ "author": {
50
+ "name": "The Aha Co",
51
+ "email": "engineering@theaha.co",
52
+ "url": "https://theaha.co"
53
+ },
54
+ "repository": {
55
+ "type": "git",
56
+ "url": "git+https://github.com/theahaco/ts-config.git"
57
+ },
58
+ "homepage": "https://github.com/theahaco/ts-config",
59
+ "license": "MIT",
60
+ "dependencies": {
61
+ "@total-typescript/ts-reset": "^0.6.1",
62
+ "@vitest/eslint-plugin": "^1.3.4",
63
+ "eslint-plugin-import-x": "^4.16.1",
64
+ "eslint-plugin-jest-dom": "^5.5.0",
65
+ "eslint-plugin-playwright": "^2.2.0",
66
+ "eslint-plugin-react": "^7.37.5",
67
+ "eslint-plugin-react-hooks": "^7.0.0",
68
+ "eslint-plugin-testing-library": "^7.6.1",
69
+ "globals": "^16.3.0",
70
+ "tslib": "^2.8.1",
71
+ "typescript-eslint": "^8.38.0"
72
+ },
73
+ "devDependencies": {
74
+ "@playwright/test": "^1.54.1",
75
+ "@types/eslint": "^9.6.1",
76
+ "@types/react": "^19.1.8",
77
+ "eslint": "^9.32.0",
78
+ "npm-run-all": "^4.1.5",
79
+ "prettier": "^3.6.2",
80
+ "react": "^19.1.0",
81
+ "typescript": "^5.8.3",
82
+ "vitest": "^4.0.16"
83
+ }
84
+ }
package/prettier.d.ts ADDED
@@ -0,0 +1,8 @@
1
+ import { type Options } from "prettier"
2
+
3
+ /**
4
+ * Prettier configuration for Aha projects
5
+ */
6
+ export declare const config: Options
7
+
8
+ export default config
package/prettier.js ADDED
@@ -0,0 +1,33 @@
1
+ /** @type {import("prettier").Config} */
2
+ export const config = {
3
+ arrowParens: "always",
4
+ bracketSameLine: false,
5
+ bracketSpacing: true,
6
+ embeddedLanguageFormatting: "auto",
7
+ endOfLine: "lf",
8
+ htmlWhitespaceSensitivity: "css",
9
+ insertPragma: false,
10
+ jsxSingleQuote: false,
11
+ printWidth: 80,
12
+ proseWrap: "always",
13
+ quoteProps: "as-needed",
14
+ requirePragma: false,
15
+ semi: false,
16
+ singleAttributePerLine: false,
17
+ singleQuote: false,
18
+ tabWidth: 2,
19
+ trailingComma: "all",
20
+ useTabs: true,
21
+ overrides: [
22
+ // formatting the package.json with anything other than spaces will cause
23
+ // issues when running install...
24
+ {
25
+ files: ["**/package.json"],
26
+ options: {
27
+ useTabs: false,
28
+ },
29
+ },
30
+ ],
31
+ }
32
+
33
+ export default config
package/reset.d.ts ADDED
@@ -0,0 +1,10 @@
1
+ import "@total-typescript/ts-reset/dom"
2
+
3
+ import "react"
4
+
5
+ declare module "react" {
6
+ // support css variables
7
+ interface CSSProperties {
8
+ [key: `--${string}`]: string | number
9
+ }
10
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,4 @@
1
+ {
2
+ "extends": "./typescript.lib.json",
3
+ "include": ["**/*.ts", "**/*.tsx", "**/*.js", "**/*.jsx"]
4
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "$schema": "https://json.schemastore.org/tsconfig",
3
+ "compilerOptions": {
4
+ "isolatedModules": true,
5
+ "jsx": "react-jsx",
6
+ "module": "preserve",
7
+ "target": "ES2022",
8
+ "strict": true,
9
+ "skipLibCheck": true,
10
+ "allowImportingTsExtensions": true,
11
+ "noUncheckedIndexedAccess": true,
12
+ "forceConsistentCasingInFileNames": true,
13
+ "noEmit": true,
14
+ "moduleResolution": "bundler",
15
+ "allowSyntheticDefaultImports": true,
16
+ "esModuleInterop": true
17
+ }
18
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "$schema": "https://json.schemastore.org/tsconfig",
3
+ "compilerOptions": {
4
+ "module": "node18",
5
+ "target": "es2020",
6
+ "strict": true,
7
+ "verbatimModuleSyntax": true,
8
+ "declaration": true,
9
+ "sourceMap": true,
10
+ "declarationMap": true,
11
+ "outDir": "dist"
12
+ }
13
+ }