@azure-tools/typespec-go 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +16 -0
  3. package/dist/codegen.go/src/clientFactory.d.ts +3 -0
  4. package/dist/codegen.go/src/clientFactory.d.ts.map +1 -0
  5. package/dist/codegen.go/src/clientFactory.js +77 -0
  6. package/dist/codegen.go/src/clientFactory.js.map +1 -0
  7. package/dist/codegen.go/src/constants.d.ts +3 -0
  8. package/dist/codegen.go/src/constants.d.ts.map +1 -0
  9. package/dist/codegen.go/src/constants.js +59 -0
  10. package/dist/codegen.go/src/constants.js.map +1 -0
  11. package/dist/codegen.go/src/fake/factory.d.ts +3 -0
  12. package/dist/codegen.go/src/fake/factory.d.ts.map +1 -0
  13. package/dist/codegen.go/src/fake/factory.js +69 -0
  14. package/dist/codegen.go/src/fake/factory.js.map +1 -0
  15. package/dist/codegen.go/src/fake/internal.d.ts +14 -0
  16. package/dist/codegen.go/src/fake/internal.d.ts.map +1 -0
  17. package/dist/codegen.go/src/fake/internal.js +197 -0
  18. package/dist/codegen.go/src/fake/internal.js.map +1 -0
  19. package/dist/codegen.go/src/fake/servers.d.ts +14 -0
  20. package/dist/codegen.go/src/fake/servers.d.ts.map +1 -0
  21. package/dist/codegen.go/src/fake/servers.js +1255 -0
  22. package/dist/codegen.go/src/fake/servers.js.map +1 -0
  23. package/dist/codegen.go/src/gomod.d.ts +3 -0
  24. package/dist/codegen.go/src/gomod.d.ts.map +1 -0
  25. package/dist/codegen.go/src/gomod.js +55 -0
  26. package/dist/codegen.go/src/gomod.js.map +1 -0
  27. package/dist/codegen.go/src/helpers.d.ts +32 -0
  28. package/dist/codegen.go/src/helpers.d.ts.map +1 -0
  29. package/dist/codegen.go/src/helpers.js +586 -0
  30. package/dist/codegen.go/src/helpers.js.map +1 -0
  31. package/dist/codegen.go/src/imports.d.ts +11 -0
  32. package/dist/codegen.go/src/imports.d.ts.map +1 -0
  33. package/dist/codegen.go/src/imports.js +65 -0
  34. package/dist/codegen.go/src/imports.js.map +1 -0
  35. package/dist/codegen.go/src/interfaces.d.ts +3 -0
  36. package/dist/codegen.go/src/interfaces.d.ts.map +1 -0
  37. package/dist/codegen.go/src/interfaces.js +36 -0
  38. package/dist/codegen.go/src/interfaces.js.map +1 -0
  39. package/dist/codegen.go/src/models.d.ts +9 -0
  40. package/dist/codegen.go/src/models.d.ts.map +1 -0
  41. package/dist/codegen.go/src/models.js +849 -0
  42. package/dist/codegen.go/src/models.js.map +1 -0
  43. package/dist/codegen.go/src/operations.d.ts +9 -0
  44. package/dist/codegen.go/src/operations.d.ts.map +1 -0
  45. package/dist/codegen.go/src/operations.js +1337 -0
  46. package/dist/codegen.go/src/operations.js.map +1 -0
  47. package/dist/codegen.go/src/options.d.ts +3 -0
  48. package/dist/codegen.go/src/options.d.ts.map +1 -0
  49. package/dist/codegen.go/src/options.js +64 -0
  50. package/dist/codegen.go/src/options.js.map +1 -0
  51. package/dist/codegen.go/src/polymorphics.d.ts +3 -0
  52. package/dist/codegen.go/src/polymorphics.d.ts.map +1 -0
  53. package/dist/codegen.go/src/polymorphics.js +169 -0
  54. package/dist/codegen.go/src/polymorphics.js.map +1 -0
  55. package/dist/codegen.go/src/responses.d.ts +7 -0
  56. package/dist/codegen.go/src/responses.d.ts.map +1 -0
  57. package/dist/codegen.go/src/responses.js +167 -0
  58. package/dist/codegen.go/src/responses.js.map +1 -0
  59. package/dist/codegen.go/src/time.d.ts +8 -0
  60. package/dist/codegen.go/src/time.d.ts.map +1 -0
  61. package/dist/codegen.go/src/time.js +511 -0
  62. package/dist/codegen.go/src/time.js.map +1 -0
  63. package/dist/codemodel.go/src/client.d.ts +96 -0
  64. package/dist/codemodel.go/src/client.d.ts.map +1 -0
  65. package/dist/codemodel.go/src/client.js +114 -0
  66. package/dist/codemodel.go/src/client.js.map +1 -0
  67. package/dist/codemodel.go/src/index.d.ts +6 -0
  68. package/dist/codemodel.go/src/index.d.ts.map +1 -0
  69. package/dist/codemodel.go/src/index.js +10 -0
  70. package/dist/codemodel.go/src/index.js.map +1 -0
  71. package/dist/codemodel.go/src/package.d.ts +49 -0
  72. package/dist/codemodel.go/src/package.d.ts.map +1 -0
  73. package/dist/codemodel.go/src/package.js +86 -0
  74. package/dist/codemodel.go/src/package.js.map +1 -0
  75. package/dist/codemodel.go/src/param.d.ts +162 -0
  76. package/dist/codemodel.go/src/param.d.ts.map +1 -0
  77. package/dist/codemodel.go/src/param.js +189 -0
  78. package/dist/codemodel.go/src/param.js.map +1 -0
  79. package/dist/codemodel.go/src/result.d.ts +102 -0
  80. package/dist/codemodel.go/src/result.d.ts.map +1 -0
  81. package/dist/codemodel.go/src/result.js +119 -0
  82. package/dist/codemodel.go/src/result.js.map +1 -0
  83. package/dist/codemodel.go/src/type.d.ts +181 -0
  84. package/dist/codemodel.go/src/type.d.ts.map +1 -0
  85. package/dist/codemodel.go/src/type.js +242 -0
  86. package/dist/codemodel.go/src/type.js.map +1 -0
  87. package/dist/naming.go/src/mappings.d.ts +3 -0
  88. package/dist/naming.go/src/mappings.d.ts.map +1 -0
  89. package/dist/naming.go/src/mappings.js +128 -0
  90. package/dist/naming.go/src/mappings.js.map +1 -0
  91. package/dist/naming.go/src/naming.d.ts +10 -0
  92. package/dist/naming.go/src/naming.d.ts.map +1 -0
  93. package/dist/naming.go/src/naming.js +114 -0
  94. package/dist/naming.go/src/naming.js.map +1 -0
  95. package/dist/typespec-go/src/emitter.d.ts +5 -0
  96. package/dist/typespec-go/src/emitter.d.ts.map +1 -0
  97. package/dist/typespec-go/src/emitter.js +122 -0
  98. package/dist/typespec-go/src/emitter.js.map +1 -0
  99. package/dist/typespec-go/src/index.d.ts +3 -0
  100. package/dist/typespec-go/src/index.d.ts.map +1 -0
  101. package/dist/typespec-go/src/index.js +7 -0
  102. package/dist/typespec-go/src/index.js.map +1 -0
  103. package/dist/typespec-go/src/lib.d.ts +25 -0
  104. package/dist/typespec-go/src/lib.d.ts.map +1 -0
  105. package/dist/typespec-go/src/lib.js +36 -0
  106. package/dist/typespec-go/src/lib.js.map +1 -0
  107. package/dist/typespec-go/src/tcgcadapter/adapter.d.ts +5 -0
  108. package/dist/typespec-go/src/tcgcadapter/adapter.d.ts.map +1 -0
  109. package/dist/typespec-go/src/tcgcadapter/adapter.js +119 -0
  110. package/dist/typespec-go/src/tcgcadapter/adapter.js.map +1 -0
  111. package/dist/typespec-go/src/tcgcadapter/clients.d.ts +26 -0
  112. package/dist/typespec-go/src/tcgcadapter/clients.d.ts.map +1 -0
  113. package/dist/typespec-go/src/tcgcadapter/clients.js +621 -0
  114. package/dist/typespec-go/src/tcgcadapter/clients.js.map +1 -0
  115. package/dist/typespec-go/src/tcgcadapter/types.d.ts +29 -0
  116. package/dist/typespec-go/src/tcgcadapter/types.d.ts.map +1 -0
  117. package/dist/typespec-go/src/tcgcadapter/types.js +975 -0
  118. package/dist/typespec-go/src/tcgcadapter/types.js.map +1 -0
  119. package/package.json +77 -0
@@ -0,0 +1,511 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the MIT License. See License.txt in the project root for license information.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ import { values } from '@azure-tools/linq';
6
+ import * as go from '../../codemodel.go/src/index.js';
7
+ import { contentPreamble, recursiveUnwrapMapSlice } from './helpers.js';
8
+ import { ImportManager } from './imports.js';
9
+ // represents the generated content for an operation group
10
+ export class Content {
11
+ constructor(name, content) {
12
+ this.name = name;
13
+ this.content = content;
14
+ }
15
+ }
16
+ // Creates the content for required time marshalling helpers.
17
+ // Will be empty if no helpers are required.
18
+ export async function generateTimeHelpers(codeModel, packageName) {
19
+ let needsDateHelper = false;
20
+ let needsDateTimeRFC1123Helper = false;
21
+ let needsDateTimeRFC3339Helper = false;
22
+ let needsTimeRFC3339Helper = false;
23
+ let needsUnixTimeHelper = false;
24
+ const setHelper = function (dateTimeFormat) {
25
+ switch (dateTimeFormat) {
26
+ case 'dateTimeRFC1123':
27
+ needsDateTimeRFC1123Helper = true;
28
+ break;
29
+ case 'dateTimeRFC3339':
30
+ needsDateTimeRFC3339Helper = true;
31
+ break;
32
+ case 'dateType':
33
+ needsDateHelper = true;
34
+ break;
35
+ case 'timeRFC3339':
36
+ needsTimeRFC3339Helper = true;
37
+ break;
38
+ case 'timeUnix':
39
+ needsUnixTimeHelper = true;
40
+ break;
41
+ default:
42
+ throw new Error(`unhandled date-time format ${dateTimeFormat}`);
43
+ }
44
+ };
45
+ // find the required helpers. we must check params, response envelopes, and models
46
+ for (const client of codeModel.clients) {
47
+ for (const method of client.methods) {
48
+ for (const param of method.parameters) {
49
+ const unwrappedParam = recursiveUnwrapMapSlice(param.type);
50
+ if (!go.isTimeType(unwrappedParam)) {
51
+ continue;
52
+ }
53
+ // for body params, the helpers are always required.
54
+ // for header/path/query params, the conversion happens in place. the only
55
+ // exceptions are for timeRFC3339 and timeUnix
56
+ // TODO: clean this up when moving to DateTime type in azcore
57
+ if (go.isBodyParameter(param) || (unwrappedParam.dateTimeFormat === 'timeRFC3339' || unwrappedParam.dateTimeFormat === 'timeUnix')) {
58
+ setHelper(unwrappedParam.dateTimeFormat);
59
+ }
60
+ }
61
+ }
62
+ }
63
+ for (const respEnv of codeModel.responseEnvelopes) {
64
+ if (!respEnv.result || !go.isMonomorphicResult(respEnv.result) || respEnv.result.format !== 'JSON') {
65
+ continue;
66
+ }
67
+ const unwrappedResult = recursiveUnwrapMapSlice(respEnv.result.monomorphicType);
68
+ if (!go.isTimeType(unwrappedResult)) {
69
+ continue;
70
+ }
71
+ setHelper(unwrappedResult.dateTimeFormat);
72
+ }
73
+ // needsSerDeHelpers is only required when time.Time is a struct field
74
+ let needsSerDeHelpers = false;
75
+ for (const model of codeModel.models) {
76
+ for (const field of values(model.fields)) {
77
+ const unwrappedField = recursiveUnwrapMapSlice(field.type);
78
+ if (!go.isTimeType(unwrappedField)) {
79
+ continue;
80
+ }
81
+ if (model.format === 'json') {
82
+ // needsSerDeHelpers helpers are for JSON only
83
+ needsSerDeHelpers = true;
84
+ }
85
+ setHelper(unwrappedField.dateTimeFormat);
86
+ }
87
+ }
88
+ const content = new Array();
89
+ if (!needsDateHelper &&
90
+ !needsDateTimeRFC1123Helper &&
91
+ !needsDateTimeRFC3339Helper &&
92
+ !needsTimeRFC3339Helper &&
93
+ !needsUnixTimeHelper) {
94
+ return content;
95
+ }
96
+ const preamble = contentPreamble(codeModel, packageName);
97
+ if (needsDateTimeRFC1123Helper) {
98
+ content.push(new Content('time_rfc1123', generateRFC1123Helper(preamble, needsSerDeHelpers)));
99
+ }
100
+ if (needsDateTimeRFC3339Helper || needsTimeRFC3339Helper) {
101
+ content.push(new Content('time_rfc3339', generateRFC3339Helper(preamble, needsDateTimeRFC3339Helper, needsTimeRFC3339Helper, needsSerDeHelpers)));
102
+ }
103
+ if (needsUnixTimeHelper) {
104
+ content.push(new Content('time_unix', generateUnixTimeHelper(preamble, needsSerDeHelpers)));
105
+ }
106
+ if (needsDateHelper) {
107
+ content.push(new Content('date_type', generateDateHelper(preamble, needsSerDeHelpers)));
108
+ }
109
+ return content;
110
+ }
111
+ function generateRFC1123Helper(preamble, needsPopulate) {
112
+ const imports = new ImportManager();
113
+ imports.add('strings');
114
+ imports.add('time');
115
+ if (needsPopulate) {
116
+ imports.add('encoding/json');
117
+ imports.add('fmt');
118
+ imports.add('github.com/Azure/azure-sdk-for-go/sdk/azcore');
119
+ imports.add('reflect');
120
+ }
121
+ let text = `${preamble}
122
+
123
+ ${imports.text()}
124
+
125
+ const (
126
+ dateTimeRFC1123JSON = \`"\` + time.RFC1123 + \`"\`
127
+ )
128
+
129
+ type dateTimeRFC1123 time.Time
130
+
131
+ func (t dateTimeRFC1123) MarshalJSON() ([]byte, error) {
132
+ b := []byte(time.Time(t).Format(dateTimeRFC1123JSON))
133
+ return b, nil
134
+ }
135
+
136
+ func (t dateTimeRFC1123) MarshalText() ([]byte, error) {
137
+ b := []byte(time.Time(t).Format(time.RFC1123))
138
+ return b, nil
139
+ }
140
+
141
+ func (t *dateTimeRFC1123) UnmarshalJSON(data []byte) error {
142
+ p, err := time.Parse(dateTimeRFC1123JSON, strings.ToUpper(string(data)))
143
+ *t = dateTimeRFC1123(p)
144
+ return err
145
+ }
146
+
147
+ func (t *dateTimeRFC1123) UnmarshalText(data []byte) error {
148
+ if len(data) == 0 {
149
+ return nil
150
+ }
151
+ p, err := time.Parse(time.RFC1123, string(data))
152
+ *t = dateTimeRFC1123(p)
153
+ return err
154
+ }
155
+
156
+ func (t dateTimeRFC1123) String() string {
157
+ return time.Time(t).Format(time.RFC1123)
158
+ }
159
+ `;
160
+ if (needsPopulate) {
161
+ text +=
162
+ `
163
+
164
+ func populateDateTimeRFC1123(m map[string]any, k string, t *time.Time) {
165
+ if t == nil {
166
+ return
167
+ } else if azcore.IsNullValue(t) {
168
+ m[k] = nil
169
+ return
170
+ } else if reflect.ValueOf(t).IsNil() {
171
+ return
172
+ }
173
+ m[k] = (*dateTimeRFC1123)(t)
174
+ }
175
+
176
+ func unpopulateDateTimeRFC1123(data json.RawMessage, fn string, t **time.Time) error {
177
+ if data == nil || string(data) == "null" {
178
+ return nil
179
+ }
180
+ var aux dateTimeRFC1123
181
+ if err := json.Unmarshal(data, &aux); err != nil {
182
+ return fmt.Errorf("struct field %s: %v", fn, err)
183
+ }
184
+ *t = (*time.Time)(&aux)
185
+ return nil
186
+ }
187
+ `;
188
+ }
189
+ return text;
190
+ }
191
+ function generateRFC3339Helper(preamble, dateTime, time, needsPopulate) {
192
+ const imports = new ImportManager();
193
+ imports.add('regexp');
194
+ imports.add('strings');
195
+ imports.add('time');
196
+ if (needsPopulate) {
197
+ imports.add('encoding/json');
198
+ imports.add('fmt');
199
+ imports.add('github.com/Azure/azure-sdk-for-go/sdk/azcore');
200
+ imports.add('reflect');
201
+ }
202
+ let text = `${preamble}
203
+
204
+ ${imports.text()}
205
+
206
+ // Azure reports time in UTC but it doesn't include the 'Z' time zone suffix in some cases.
207
+ var tzOffsetRegex = regexp.MustCompile(\`(?:Z|z|\\+|-)(?:\\d+:\\d+)*"*$\`)
208
+ `;
209
+ if (dateTime) {
210
+ text +=
211
+ `
212
+ const (
213
+ utcDateTime = "2006-01-02T15:04:05.999999999"
214
+ utcDateTimeJSON = \`"\` + utcDateTime + \`"\`
215
+ utcDateTimeNoT = "2006-01-02 15:04:05.999999999"
216
+ utcDateTimeJSONNoT = \`"\` + utcDateTimeNoT + \`"\`
217
+ dateTimeNoT = \`2006-01-02 15:04:05.999999999Z07:00\`
218
+ dateTimeJSON = \`"\` + time.RFC3339Nano + \`"\`
219
+ dateTimeJSONNoT = \`"\` + dateTimeNoT + \`"\`
220
+ )
221
+
222
+ type dateTimeRFC3339 time.Time
223
+
224
+ func (t dateTimeRFC3339) MarshalJSON() ([]byte, error) {
225
+ tt := time.Time(t)
226
+ return tt.MarshalJSON()
227
+ }
228
+
229
+ func (t dateTimeRFC3339) MarshalText() ([]byte, error) {
230
+ tt := time.Time(t)
231
+ return tt.MarshalText()
232
+ }
233
+
234
+ func (t *dateTimeRFC3339) UnmarshalJSON(data []byte) error {
235
+ tzOffset := tzOffsetRegex.Match(data)
236
+ hasT := strings.Contains(string(data), "T") || strings.Contains(string(data), "t")
237
+ var layout string
238
+ if tzOffset && hasT {
239
+ layout = dateTimeJSON
240
+ } else if tzOffset {
241
+ layout = dateTimeJSONNoT
242
+ } else if hasT {
243
+ layout = utcDateTimeJSON
244
+ } else {
245
+ layout = utcDateTimeJSONNoT
246
+ }
247
+ return t.Parse(layout, string(data))
248
+ }
249
+
250
+ func (t *dateTimeRFC3339) UnmarshalText(data []byte) error {
251
+ if len(data) == 0 {
252
+ return nil
253
+ }
254
+ tzOffset := tzOffsetRegex.Match(data)
255
+ hasT := strings.Contains(string(data), "T") || strings.Contains(string(data), "t")
256
+ var layout string
257
+ if tzOffset && hasT {
258
+ layout = time.RFC3339Nano
259
+ } else if tzOffset {
260
+ layout = dateTimeNoT
261
+ } else if hasT {
262
+ layout = utcDateTime
263
+ } else {
264
+ layout = utcDateTimeNoT
265
+ }
266
+ return t.Parse(layout, string(data))
267
+ }
268
+
269
+ func (t *dateTimeRFC3339) Parse(layout, value string) error {
270
+ p, err := time.Parse(layout, strings.ToUpper(value))
271
+ *t = dateTimeRFC3339(p)
272
+ return err
273
+ }
274
+
275
+ func (t dateTimeRFC3339) String() string {
276
+ return time.Time(t).Format(time.RFC3339Nano)
277
+ }
278
+ `;
279
+ if (needsPopulate) {
280
+ text +=
281
+ `
282
+
283
+ func populateDateTimeRFC3339(m map[string]any, k string, t *time.Time) {
284
+ if t == nil {
285
+ return
286
+ } else if azcore.IsNullValue(t) {
287
+ m[k] = nil
288
+ return
289
+ } else if reflect.ValueOf(t).IsNil() {
290
+ return
291
+ }
292
+ m[k] = (*dateTimeRFC3339)(t)
293
+ }
294
+
295
+ func unpopulateDateTimeRFC3339(data json.RawMessage, fn string, t **time.Time) error {
296
+ if data == nil || string(data) == "null" {
297
+ return nil
298
+ }
299
+ var aux dateTimeRFC3339
300
+ if err := json.Unmarshal(data, &aux); err != nil {
301
+ return fmt.Errorf("struct field %s: %v", fn, err)
302
+ }
303
+ *t = (*time.Time)(&aux)
304
+ return nil
305
+ }
306
+ `;
307
+ }
308
+ }
309
+ if (time) {
310
+ text += `
311
+ const (
312
+ utcTimeJSON = \`"15:04:05.999999999"\`
313
+ utcTime = "15:04:05.999999999"
314
+ timeFormat = "15:04:05.999999999Z07:00"
315
+ )
316
+
317
+ type timeRFC3339 time.Time
318
+
319
+ func (t timeRFC3339) MarshalJSON() ([]byte, error) {
320
+ s, _ := t.MarshalText()
321
+ return []byte(fmt.Sprintf("\\"%s\\"", s)), nil
322
+ }
323
+
324
+ func (t timeRFC3339) MarshalText() ([]byte, error) {
325
+ tt := time.Time(t)
326
+ return []byte(tt.Format(timeFormat)), nil
327
+ }
328
+
329
+ func (t *timeRFC3339) UnmarshalJSON(data []byte) error {
330
+ layout := utcTimeJSON
331
+ if tzOffsetRegex.Match(data) {
332
+ layout = timeFormat
333
+ }
334
+ return t.Parse(layout, string(data))
335
+ }
336
+
337
+ func (t *timeRFC3339) UnmarshalText(data []byte) error {
338
+ if len(data) == 0 {
339
+ return nil
340
+ }
341
+ layout := utcTime
342
+ if tzOffsetRegex.Match(data) {
343
+ layout = timeFormat
344
+ }
345
+ return t.Parse(layout, string(data))
346
+ }
347
+
348
+ func (t *timeRFC3339) Parse(layout, value string) error {
349
+ p, err := time.Parse(layout, strings.ToUpper(value))
350
+ *t = timeRFC3339(p)
351
+ return err
352
+ }
353
+
354
+ func (t timeRFC3339) String() string {
355
+ tt := time.Time(t)
356
+ return tt.Format(timeFormat)
357
+ }
358
+ `;
359
+ if (needsPopulate) {
360
+ text += `
361
+ func populateTimeRFC3339(m map[string]any, k string, t *time.Time) {
362
+ if t == nil {
363
+ return
364
+ } else if azcore.IsNullValue(t) {
365
+ m[k] = nil
366
+ return
367
+ } else if reflect.ValueOf(t).IsNil() {
368
+ return
369
+ }
370
+ m[k] = (*timeRFC3339)(t)
371
+ }
372
+
373
+ func unpopulateTimeRFC3339(data json.RawMessage, fn string, t **time.Time) error {
374
+ if data == nil || string(data) == "null" {
375
+ return nil
376
+ }
377
+ var aux timeRFC3339
378
+ if err := json.Unmarshal(data, &aux); err != nil {
379
+ return fmt.Errorf("struct field %s: %v", fn, err)
380
+ }
381
+ *t = (*time.Time)(&aux)
382
+ return nil
383
+ }
384
+ `;
385
+ }
386
+ }
387
+ return text;
388
+ }
389
+ function generateUnixTimeHelper(preamble, needsPopulate) {
390
+ const imports = new ImportManager();
391
+ imports.add('encoding/json');
392
+ imports.add('fmt');
393
+ imports.add('time');
394
+ if (needsPopulate) {
395
+ imports.add('github.com/Azure/azure-sdk-for-go/sdk/azcore');
396
+ imports.add('reflect');
397
+ }
398
+ let text = `${preamble}
399
+
400
+ ${imports.text()}
401
+
402
+ type timeUnix time.Time
403
+
404
+ func (t timeUnix) MarshalJSON() ([]byte, error) {
405
+ return json.Marshal(time.Time(t).Unix())
406
+ }
407
+
408
+ func (t *timeUnix) UnmarshalJSON(data []byte) error {
409
+ var seconds int64
410
+ if err := json.Unmarshal(data, &seconds); err != nil {
411
+ return err
412
+ }
413
+ *t = timeUnix(time.Unix(seconds, 0))
414
+ return nil
415
+ }
416
+
417
+ func (t timeUnix) String() string {
418
+ return fmt.Sprintf("%d", time.Time(t).Unix())
419
+ }
420
+ `;
421
+ if (needsPopulate) {
422
+ text +=
423
+ `
424
+ func populateTimeUnix(m map[string]any, k string, t *time.Time) {
425
+ if t == nil {
426
+ return
427
+ } else if azcore.IsNullValue(t) {
428
+ m[k] = nil
429
+ return
430
+ } else if reflect.ValueOf(t).IsNil() {
431
+ return
432
+ }
433
+ m[k] = (*timeUnix)(t)
434
+ }
435
+
436
+ func unpopulateTimeUnix(data json.RawMessage, fn string, t **time.Time) error {
437
+ if data == nil || string(data) == "null" {
438
+ return nil
439
+ }
440
+ var aux timeUnix
441
+ if err := json.Unmarshal(data, &aux); err != nil {
442
+ return fmt.Errorf("struct field %s: %v", fn, err)
443
+ }
444
+ *t = (*time.Time)(&aux)
445
+ return nil
446
+ }
447
+ `;
448
+ }
449
+ return text;
450
+ }
451
+ function generateDateHelper(preamble, needsPopulate) {
452
+ const imports = new ImportManager();
453
+ imports.add('fmt');
454
+ imports.add('time');
455
+ if (needsPopulate) {
456
+ imports.add('encoding/json');
457
+ imports.add('github.com/Azure/azure-sdk-for-go/sdk/azcore');
458
+ imports.add('reflect');
459
+ }
460
+ let text = `${preamble}
461
+
462
+ ${imports.text()}
463
+
464
+ const (
465
+ fullDateJSON = \`"2006-01-02"\`
466
+ jsonFormat = \`"%04d-%02d-%02d"\`
467
+ )
468
+
469
+ type dateType time.Time
470
+
471
+ func (t dateType) MarshalJSON() ([]byte, error) {
472
+ return []byte(fmt.Sprintf(jsonFormat, time.Time(t).Year(), time.Time(t).Month(), time.Time(t).Day())), nil
473
+ }
474
+
475
+ func (d *dateType) UnmarshalJSON(data []byte) (err error) {
476
+ t, err := time.Parse(fullDateJSON, string(data))
477
+ *d = (dateType)(t)
478
+ return err
479
+ }
480
+ `;
481
+ if (needsPopulate) {
482
+ text +=
483
+ `
484
+ func populateDateType(m map[string]any, k string, t *time.Time) {
485
+ if t == nil {
486
+ return
487
+ } else if azcore.IsNullValue(t) {
488
+ m[k] = nil
489
+ return
490
+ } else if reflect.ValueOf(t).IsNil() {
491
+ return
492
+ }
493
+ m[k] = (*dateType)(t)
494
+ }
495
+
496
+ func unpopulateDateType(data json.RawMessage, fn string, t **time.Time) error {
497
+ if data == nil || string(data) == "null" {
498
+ return nil
499
+ }
500
+ var aux dateType
501
+ if err := json.Unmarshal(data, &aux); err != nil {
502
+ return fmt.Errorf("struct field %s: %v", fn, err)
503
+ }
504
+ *t = (*time.Time)(&aux)
505
+ return nil
506
+ }
507
+ `;
508
+ }
509
+ return text;
510
+ }
511
+ //# sourceMappingURL=time.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time.js","sourceRoot":"","sources":["../../../../codegen.go/src/time.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,96 @@
1
+ import * as pkg from './package.js';
2
+ import * as param from './param.js';
3
+ import * as result from './result.js';
4
+ export interface Client {
5
+ name: string;
6
+ description: string;
7
+ options: ClientOptions;
8
+ parameters: Array<param.Parameter>;
9
+ constructors: Array<Constructor>;
10
+ methods: Array<Method | LROMethod | PageableMethod | LROPageableMethod>;
11
+ clientAccessors: Array<ClientAccessor>;
12
+ host?: string;
13
+ templatedHost: boolean;
14
+ parent?: Client;
15
+ }
16
+ export type ClientOptions = param.ParameterGroup | param.Parameter;
17
+ export interface Constructor {
18
+ name: string;
19
+ parameters: Array<param.Parameter>;
20
+ }
21
+ export interface ClientAccessor {
22
+ name: string;
23
+ subClient: Client;
24
+ }
25
+ export interface Method {
26
+ name: string;
27
+ description?: string;
28
+ httpPath: string;
29
+ httpMethod: HTTPMethod;
30
+ parameters: Array<param.Parameter>;
31
+ optionalParamsGroup: param.ParameterGroup;
32
+ responseEnvelope: result.ResponseEnvelope;
33
+ httpStatusCodes: Array<number>;
34
+ client: Client;
35
+ naming: MethodNaming;
36
+ apiVersions: Array<string>;
37
+ }
38
+ export type HTTPMethod = 'delete' | 'get' | 'head' | 'patch' | 'post' | 'put';
39
+ export interface MethodNaming {
40
+ internalMethod: string;
41
+ requestMethod: string;
42
+ responseMethod: string;
43
+ }
44
+ export interface LROMethod extends Method {
45
+ finalStateVia?: 'azure-async-operation' | 'location' | 'operation-location' | 'original-uri';
46
+ isLRO: true;
47
+ }
48
+ export interface PageableMethod extends Method {
49
+ nextLinkName?: string;
50
+ nextPageMethod?: NextPageMethod;
51
+ isPageable: true;
52
+ }
53
+ export interface NextPageMethod {
54
+ name: string;
55
+ httpPath: string;
56
+ httpMethod: HTTPMethod;
57
+ parameters: Array<param.Parameter>;
58
+ httpStatusCodes: Array<number>;
59
+ client: Client;
60
+ apiVersions: Array<string>;
61
+ isNextPageMethod: true;
62
+ }
63
+ export interface LROPageableMethod extends LROMethod, PageableMethod {
64
+ }
65
+ export declare function isMethod(method: Method | NextPageMethod): method is Method;
66
+ export declare function isLROMethod(method: Method | LROMethod | PageableMethod): method is LROMethod;
67
+ export declare function isPageableMethod(method: Method | LROMethod | PageableMethod): method is PageableMethod;
68
+ export declare function newClientOptions(modelType: pkg.CodeModelType, clientName: string): ClientOptions;
69
+ export declare class Method implements Method {
70
+ constructor(name: string, client: Client, httpPath: string, httpMethod: HTTPMethod, statusCodes: Array<number>, naming: MethodNaming);
71
+ }
72
+ export declare class Client implements Client {
73
+ constructor(name: string, description: string, options: ClientOptions);
74
+ }
75
+ export declare class Constructor implements Constructor {
76
+ constructor(name: string);
77
+ }
78
+ export declare class ClientAccessor implements ClientAccessor {
79
+ constructor(name: string, subClient: Client);
80
+ }
81
+ export declare class MethodNaming implements MethodNaming {
82
+ constructor(internalMethod: string, requestMethod: string, responseMethod: string);
83
+ }
84
+ export declare class LROMethod extends Method implements LROMethod {
85
+ constructor(name: string, client: Client, httpPath: string, httpMethod: HTTPMethod, statusCodes: Array<number>, naming: MethodNaming);
86
+ }
87
+ export declare class PageableMethod extends Method implements PageableMethod {
88
+ constructor(name: string, client: Client, httpPath: string, httpMethod: HTTPMethod, statusCodes: Array<number>, naming: MethodNaming);
89
+ }
90
+ export declare class LROPageableMethod extends Method implements LROPageableMethod {
91
+ constructor(name: string, client: Client, httpPath: string, httpMethod: HTTPMethod, statusCodes: Array<number>, naming: MethodNaming);
92
+ }
93
+ export declare class NextPageMethod implements NextPageMethod {
94
+ constructor(name: string, client: Client, httpPath: string, httpMethod: HTTPMethod, statusCodes: Array<number>);
95
+ }
96
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../codemodel.go/src/client.ts"],"names":[],"mappings":"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"}