Skip to content

Commit 3865f36

Browse files
committed
Fix typescript linter
1 parent 2379c21 commit 3865f36

File tree

2 files changed

+43
-64
lines changed

2 files changed

+43
-64
lines changed

scripts/apitypings/main.go

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -268,8 +268,9 @@ func (g *Generator) buildStruct(obj types.Object, st *types.Struct) (string, err
268268
}
269269
}
270270

271-
if tsType.Comment != "" {
272-
_, _ = s.WriteString(fmt.Sprintf("%s// %s\n", indent, tsType.Comment))
271+
if tsType.AboveTypeLine != "" {
272+
_, _ = s.WriteString(tsType.AboveTypeLine)
273+
_, _ = s.WriteRune('\n')
273274
}
274275
optional := ""
275276
if tsType.Optional {
@@ -283,7 +284,9 @@ func (g *Generator) buildStruct(obj types.Object, st *types.Struct) (string, err
283284

284285
type TypescriptType struct {
285286
ValueType string
286-
Comment string
287+
// AboveTypeLine lets you put whatever text you want above the typescript
288+
// type line.
289+
AboveTypeLine string
287290
// Optional indicates the value is an optional field in typescript.
288291
Optional bool
289292
}
@@ -304,7 +307,7 @@ func (g *Generator) typescriptType(ty types.Type) (TypescriptType, error) {
304307
return TypescriptType{ValueType: "boolean"}, nil
305308
case bs.Kind() == types.Byte:
306309
// TODO: @emyrk What is a byte for typescript? A string? A uint8?
307-
return TypescriptType{ValueType: "number", Comment: "This is a byte in golang"}, nil
310+
return TypescriptType{ValueType: "number", AboveTypeLine: indentedComment("This is a byte in golang")}, nil
308311
default:
309312
return TypescriptType{ValueType: bs.Name()}, nil
310313
}
@@ -316,7 +319,13 @@ func (g *Generator) typescriptType(ty types.Type) (TypescriptType, error) {
316319
// Field string `json:"field"`
317320
// }
318321
// }
319-
return TypescriptType{ValueType: "any", Comment: "Embedded struct, please fix by naming it"}, nil
322+
return TypescriptType{
323+
ValueType: "any",
324+
AboveTypeLine: fmt.Sprintf("%s\n%s",
325+
indentedComment("Embedded struct, please fix by naming it"),
326+
indentedComment("eslint-disable-next-line @typescript-eslint/no-explicit-any"),
327+
),
328+
}, nil
320329
case *types.Map:
321330
// map[string][string] -> Record<string, string>
322331
m := ty
@@ -352,7 +361,7 @@ func (g *Generator) typescriptType(ty types.Type) (TypescriptType, error) {
352361
if err != nil {
353362
return TypescriptType{}, xerrors.Errorf("array: %w", err)
354363
}
355-
return TypescriptType{ValueType: underlying.ValueType + "[]", Comment: underlying.Comment}, nil
364+
return TypescriptType{ValueType: underlying.ValueType + "[]", AboveTypeLine: underlying.AboveTypeLine}, nil
356365
}
357366
case *types.Named:
358367
n := ty
@@ -377,19 +386,24 @@ func (g *Generator) typescriptType(ty types.Type) (TypescriptType, error) {
377386
return TypescriptType{ValueType: "string", Optional: true}, nil
378387
case "github.com/google/uuid.NullUUID":
379388
return TypescriptType{ValueType: "string", Optional: true}, nil
389+
case "github.com/google/uuid.UUID":
390+
return TypescriptType{ValueType: "string"}, nil
380391
}
381392

382393
// If it's a struct, just use the name of the struct type
383394
if _, ok := n.Underlying().(*types.Struct); ok {
384-
return TypescriptType{ValueType: "any", Comment: fmt.Sprintf("Named type %q unknown, using \"any\"", n.String())}, nil
395+
return TypescriptType{ValueType: "any", AboveTypeLine: fmt.Sprintf("%s\n%s",
396+
indentedComment(fmt.Sprintf("Named type %q unknown, using \"any\"", n.String())),
397+
indentedComment("eslint-disable-next-line @typescript-eslint/no-explicit-any"),
398+
)}, nil
385399
}
386400

387401
// Defer to the underlying type.
388402
ts, err := g.typescriptType(ty.Underlying())
389403
if err != nil {
390404
return TypescriptType{}, xerrors.Errorf("named underlying: %w", err)
391405
}
392-
ts.Comment = "This is likely an enum in an external package"
406+
ts.AboveTypeLine = indentedComment(fmt.Sprintf("This is likely an enum in an external package (%q)", n.String()))
393407
return ts, nil
394408
case *types.Pointer:
395409
// Dereference pointers.
@@ -406,3 +420,7 @@ func (g *Generator) typescriptType(ty types.Type) (TypescriptType, error) {
406420
// time.Time, uuid, etc.
407421
return TypescriptType{}, xerrors.Errorf("unknown type: %s", ty.String())
408422
}
423+
424+
func indentedComment(comment string) string {
425+
return fmt.Sprintf("%s// %s", indent, comment)
426+
}

site/src/api/typesGenerated.ts

Lines changed: 17 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,7 @@ export interface CreateFirstUserRequest {
4040

4141
// From codersdk/users.go:56:6
4242
export interface CreateFirstUserResponse {
43-
// This is likely an enum in an external package
4443
readonly user_id: string
45-
// This is likely an enum in an external package
4644
readonly organization_id: string
4745
}
4846

@@ -55,28 +53,26 @@ export interface CreateOrganizationRequest {
5553
export interface CreateParameterRequest {
5654
readonly name: string
5755
readonly source_value: string
58-
// This is likely an enum in an external package
56+
// This is likely an enum in an external package ("github.com/coder/coder/coderd/database.ParameterSourceScheme")
5957
readonly source_scheme: string
60-
// This is likely an enum in an external package
58+
// This is likely an enum in an external package ("github.com/coder/coder/coderd/database.ParameterDestinationScheme")
6159
readonly destination_scheme: string
6260
}
6361

6462
// From codersdk/organizations.go:38:6
6563
export interface CreateTemplateRequest {
6664
readonly name: string
67-
// This is likely an enum in an external package
6865
readonly template_version_id: string
6966
readonly parameter_values: CreateParameterRequest[]
7067
}
7168

7269
// From codersdk/organizations.go:25:6
7370
export interface CreateTemplateVersionRequest {
74-
// This is likely an enum in an external package
7571
readonly template_id: string
76-
// This is likely an enum in an external package
72+
// This is likely an enum in an external package ("github.com/coder/coder/coderd/database.ProvisionerStorageMethod")
7773
readonly storage_method: string
7874
readonly storage_source: string
79-
// This is likely an enum in an external package
75+
// This is likely an enum in an external package ("github.com/coder/coder/coderd/database.ProvisionerType")
8076
readonly provisioner: string
8177
readonly parameter_values: CreateParameterRequest[]
8278
}
@@ -86,22 +82,19 @@ export interface CreateUserRequest {
8682
readonly email: string
8783
readonly username: string
8884
readonly password: string
89-
// This is likely an enum in an external package
9085
readonly organization_id: string
9186
}
9287

9388
// From codersdk/workspaces.go:33:6
9489
export interface CreateWorkspaceBuildRequest {
95-
// This is likely an enum in an external package
9690
readonly template_version_id: string
97-
// This is likely an enum in an external package
91+
// This is likely an enum in an external package ("github.com/coder/coder/coderd/database.WorkspaceTransition")
9892
readonly transition: string
9993
readonly dry_run: boolean
10094
}
10195

10296
// From codersdk/organizations.go:52:6
10397
export interface CreateWorkspaceRequest {
104-
// This is likely an enum in an external package
10598
readonly template_id: string
10699
readonly name: string
107100
readonly parameter_values: CreateParameterRequest[]
@@ -114,7 +107,6 @@ export interface GenerateAPIKeyResponse {
114107

115108
// From codersdk/gitsshkey.go:14:6
116109
export interface GitSSHKey {
117-
// This is likely an enum in an external package
118110
readonly user_id: string
119111
readonly created_at: string
120112
readonly updated_at: string
@@ -139,7 +131,6 @@ export interface LoginWithPasswordResponse {
139131

140132
// From codersdk/organizations.go:17:6
141133
export interface Organization {
142-
// This is likely an enum in an external package
143134
readonly id: string
144135
readonly name: string
145136
readonly created_at: string
@@ -148,79 +139,68 @@ export interface Organization {
148139

149140
// From codersdk/parameters.go:26:6
150141
export interface Parameter {
151-
// This is likely an enum in an external package
152142
readonly id: string
153143
readonly created_at: string
154144
readonly updated_at: string
155145
readonly scope: ParameterScope
156-
// This is likely an enum in an external package
157146
readonly scope_id: string
158147
readonly name: string
159-
// This is likely an enum in an external package
148+
// This is likely an enum in an external package ("github.com/coder/coder/coderd/database.ParameterSourceScheme")
160149
readonly source_scheme: string
161-
// This is likely an enum in an external package
150+
// This is likely an enum in an external package ("github.com/coder/coder/coderd/database.ParameterDestinationScheme")
162151
readonly destination_scheme: string
163152
}
164153

165154
// From codersdk/provisionerdaemons.go:23:6
166155
export interface ProvisionerDaemon {
167-
// This is likely an enum in an external package
168156
readonly id: string
169157
readonly created_at: string
170158
readonly updated_at?: string
171159
readonly organization_id?: string
172160
readonly name: string
173-
// This is likely an enum in an external package
161+
// This is likely an enum in an external package ("github.com/coder/coder/coderd/database.ProvisionerType")
174162
readonly provisioners: string[]
175163
}
176164

177165
// From codersdk/provisionerdaemons.go:46:6
178166
export interface ProvisionerJob {
179-
// This is likely an enum in an external package
180167
readonly id: string
181168
readonly created_at: string
182169
readonly started_at?: string
183170
readonly completed_at?: string
184171
readonly error: string
185172
readonly status: ProvisionerJobStatus
186-
// This is likely an enum in an external package
187173
readonly worker_id?: string
188174
}
189175

190176
// From codersdk/provisionerdaemons.go:56:6
191177
export interface ProvisionerJobLog {
192-
// This is likely an enum in an external package
193178
readonly id: string
194179
readonly created_at: string
195-
// This is likely an enum in an external package
180+
// This is likely an enum in an external package ("github.com/coder/coder/coderd/database.LogSource")
196181
readonly log_source: string
197-
// This is likely an enum in an external package
182+
// This is likely an enum in an external package ("github.com/coder/coder/coderd/database.LogLevel")
198183
readonly log_level: string
199184
readonly stage: string
200185
readonly output: string
201186
}
202187

203188
// From codersdk/templates.go:17:6
204189
export interface Template {
205-
// This is likely an enum in an external package
206190
readonly id: string
207191
readonly created_at: string
208192
readonly updated_at: string
209-
// This is likely an enum in an external package
210193
readonly organization_id: string
211194
readonly name: string
212-
// This is likely an enum in an external package
195+
// This is likely an enum in an external package ("github.com/coder/coder/coderd/database.ProvisionerType")
213196
readonly provisioner: string
214-
// This is likely an enum in an external package
215197
readonly active_version_id: string
216198
readonly workspace_owner_count: number
217199
}
218200

219201
// From codersdk/templateversions.go:17:6
220202
export interface TemplateVersion {
221-
// This is likely an enum in an external package
222203
readonly id: string
223-
// This is likely an enum in an external package
224204
readonly template_id?: string
225205
readonly created_at: string
226206
readonly updated_at: string
@@ -231,40 +211,37 @@ export interface TemplateVersion {
231211
// From codersdk/templateversions.go:30:6
232212
export interface TemplateVersionParameter {
233213
// Named type "github.com/coder/coder/coderd/database.ParameterValue" unknown, using "any"
214+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
234215
readonly ParameterValue: any
235-
// This is likely an enum in an external package
236216
readonly schema_id: string
237217
readonly default_source_value: boolean
238218
}
239219

240220
// From codersdk/templateversions.go:27:6
241221
export interface TemplateVersionParameterSchema {
242-
// This is likely an enum in an external package
243222
readonly id: string
244223
readonly created_at: string
245-
// This is likely an enum in an external package
246224
readonly job_id: string
247225
readonly name: string
248226
readonly description: string
249-
// This is likely an enum in an external package
227+
// This is likely an enum in an external package ("github.com/coder/coder/coderd/database.ParameterSourceScheme")
250228
readonly default_source_scheme: string
251229
readonly default_source_value: string
252230
readonly allow_override_source: boolean
253-
// This is likely an enum in an external package
231+
// This is likely an enum in an external package ("github.com/coder/coder/coderd/database.ParameterDestinationScheme")
254232
readonly default_destination_scheme: string
255233
readonly allow_override_destination: boolean
256234
readonly default_refresh: string
257235
readonly redisplay_value: boolean
258236
readonly validation_error: string
259237
readonly validation_condition: string
260-
// This is likely an enum in an external package
238+
// This is likely an enum in an external package ("github.com/coder/coder/coderd/database.ParameterTypeSystem")
261239
readonly validation_type_system: string
262240
readonly validation_value_type: string
263241
}
264242

265243
// From codersdk/templates.go:28:6
266244
export interface UpdateActiveTemplateVersion {
267-
// This is likely an enum in an external package
268245
readonly id: string
269246
}
270247

@@ -291,19 +268,16 @@ export interface UploadResponse {
291268

292269
// From codersdk/users.go:39:6
293270
export interface User {
294-
// This is likely an enum in an external package
295271
readonly id: string
296272
readonly email: string
297273
readonly created_at: string
298274
readonly username: string
299275
readonly status: UserStatus
300-
// This is likely an enum in an external package
301276
readonly organization_ids: string[]
302277
}
303278

304279
// From codersdk/users.go:17:6
305280
export interface UsersRequest {
306-
// This is likely an enum in an external package
307281
readonly after_user: string
308282
readonly search: string
309283
readonly limit: number
@@ -312,13 +286,10 @@ export interface UsersRequest {
312286

313287
// From codersdk/workspaces.go:18:6
314288
export interface Workspace {
315-
// This is likely an enum in an external package
316289
readonly id: string
317290
readonly created_at: string
318291
readonly updated_at: string
319-
// This is likely an enum in an external package
320292
readonly owner_id: string
321-
// This is likely an enum in an external package
322293
readonly template_id: string
323294
readonly template_name: string
324295
readonly latest_build: WorkspaceBuild
@@ -330,7 +301,6 @@ export interface Workspace {
330301

331302
// From codersdk/workspaceresources.go:33:6
332303
export interface WorkspaceAgent {
333-
// This is likely an enum in an external package
334304
readonly id: string
335305
readonly created_at: string
336306
readonly updated_at: string
@@ -339,7 +309,6 @@ export interface WorkspaceAgent {
339309
readonly disconnected_at?: string
340310
readonly status: WorkspaceAgentStatus
341311
readonly name: string
342-
// This is likely an enum in an external package
343312
readonly resource_id: string
344313
readonly instance_id: string
345314
readonly architecture: string
@@ -377,34 +346,26 @@ export interface WorkspaceAgentResourceMetadata {
377346

378347
// From codersdk/workspacebuilds.go:17:6
379348
export interface WorkspaceBuild {
380-
// This is likely an enum in an external package
381349
readonly id: string
382350
readonly created_at: string
383351
readonly updated_at: string
384-
// This is likely an enum in an external package
385352
readonly workspace_id: string
386-
// This is likely an enum in an external package
387353
readonly template_version_id: string
388-
// This is likely an enum in an external package
389354
readonly before_id: string
390-
// This is likely an enum in an external package
391355
readonly after_id: string
392356
readonly name: string
393-
// This is likely an enum in an external package
357+
// This is likely an enum in an external package ("github.com/coder/coder/coderd/database.WorkspaceTransition")
394358
readonly transition: string
395-
// This is likely an enum in an external package
396359
readonly initiator_id: string
397360
readonly job: ProvisionerJob
398361
}
399362

400363
// From codersdk/workspaceresources.go:23:6
401364
export interface WorkspaceResource {
402-
// This is likely an enum in an external package
403365
readonly id: string
404366
readonly created_at: string
405-
// This is likely an enum in an external package
406367
readonly job_id: string
407-
// This is likely an enum in an external package
368+
// This is likely an enum in an external package ("github.com/coder/coder/coderd/database.WorkspaceTransition")
408369
readonly workspace_transition: string
409370
readonly type: string
410371
readonly name: string

0 commit comments

Comments
 (0)