@typespec/rest 0.52.0-dev.1 → 0.52.0-dev.3

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.
package/dist/src/lib.d.ts CHANGED
@@ -20,7 +20,7 @@ declare const restLib: import("@typespec/compiler").TypeSpecLibrary<{
20
20
  "shared-route-unspecified-action-name": {
21
21
  readonly default: import("@typespec/compiler").CallableMessage<["decoratorName"]>;
22
22
  };
23
- }, Record<string, any>>;
23
+ }, Record<string, any>, never>;
24
24
  declare const reportDiagnostic: <C extends "not-key-type" | "resource-missing-key" | "resource-missing-error" | "duplicate-key" | "duplicate-parent-key" | "invalid-action-name" | "shared-route-unspecified-action-name", M extends keyof {
25
25
  "not-key-type": {
26
26
  readonly default: "Cannot copy keys from a non-key type (KeysOf<T> or ParentKeysOf<T>)";
@@ -1 +1 @@
1
- {"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../../src/lib.ts"],"names":[],"mappings":"AAkDA,QAAA,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;uBAAuC,CAAC;AACrD,QAAA,MAAQ,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAAE,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sDAAE,iBAAiB,0BAAY,CAAC;AAE1E,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../../src/lib.ts"],"names":[],"mappings":"AAkDA,QAAA,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;8BAAuC,CAAC;AACrD,QAAA,MAAQ,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAAE,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sDAAE,iBAAiB,0BAAY,CAAC;AAE1E,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/testing/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAqB,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAGpF,eAAO,MAAM,eAAe,EAAE,mBAG5B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/testing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,mBAAmB,EACpB,MAAM,4BAA4B,CAAC;AAEpC,eAAO,MAAM,eAAe,EAAE,mBAG5B,CAAC"}
@@ -1,8 +1,6 @@
1
- import { resolvePath } from "@typespec/compiler";
2
- import { createTestLibrary } from "@typespec/compiler/testing";
3
- import { fileURLToPath } from "url";
1
+ import { createTestLibrary, findTestPackageRoot, } from "@typespec/compiler/testing";
4
2
  export const RestTestLibrary = createTestLibrary({
5
3
  name: "@typespec/rest",
6
- packageRoot: resolvePath(fileURLToPath(import.meta.url), "../../../../"),
4
+ packageRoot: await findTestPackageRoot(import.meta.url),
7
5
  });
8
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/testing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAuB,MAAM,4BAA4B,CAAC;AACpF,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,CAAC,MAAM,eAAe,GAAwB,iBAAiB,CAAC;IACpE,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE,WAAW,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,cAAc,CAAC;CACzE,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/testing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,mBAAmB,GAEpB,MAAM,4BAA4B,CAAC;AAEpC,MAAM,CAAC,MAAM,eAAe,GAAwB,iBAAiB,CAAC;IACpE,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE,MAAM,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;CACxD,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ declare const _default: import("vite").UserConfig;
2
+ export default _default;
3
+ //# sourceMappingURL=vitest.config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vitest.config.d.ts","sourceRoot":"","sources":["../vitest.config.ts"],"names":[],"mappings":";AAEA,wBAWG"}
@@ -0,0 +1,14 @@
1
+ import { defineConfig } from "vitest/config";
2
+ export default defineConfig({
3
+ test: {
4
+ environment: "node",
5
+ isolate: false,
6
+ coverage: {
7
+ reporter: ["cobertura", "json", "text"],
8
+ },
9
+ outputFile: {
10
+ junit: "./test-results.xml",
11
+ },
12
+ },
13
+ });
14
+ //# sourceMappingURL=vitest.config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vitest.config.js","sourceRoot":"","sources":["../vitest.config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,eAAe,YAAY,CAAC;IAC1B,IAAI,EAAE;QACJ,WAAW,EAAE,MAAM;QACnB,OAAO,EAAE,KAAK;QACd,QAAQ,EAAE;YACR,QAAQ,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC;SACxC;QACD,UAAU,EAAE;YACV,KAAK,EAAE,oBAAoB;SAC5B;KACF;CACF,CAAC,CAAC"}
package/lib/resource.tsp CHANGED
@@ -16,165 +16,182 @@ model ResourceError {
16
16
  }
17
17
 
18
18
  /**
19
- * Dynamically gathers keys of the model type T.
20
- * @template T The target model.
19
+ * Dynamically gathers keys of the model type `Resource`.
20
+ *
21
+ * @template Resource The target resource model.
21
22
  */
22
- @doc("Dynamically gathers keys of the model type T.")
23
+ @doc("Dynamically gathers keys of the model type Resource.")
23
24
  @copyResourceKeyParameters
24
- @friendlyName("{name}Key", T)
25
- model KeysOf<T> {}
25
+ @friendlyName("{name}Key", Resource)
26
+ model KeysOf<Resource> {}
26
27
 
27
28
  /**
28
- * Dynamically gathers parent keys of the model type T.
29
- * @template T The target model.
29
+ * Dynamically gathers parent keys of the model type `Resource`.
30
+ *
31
+ * @template Resource The target resource model.
30
32
  */
31
- @doc("Dynamically gathers parent keys of the model type T.")
33
+ @doc("Dynamically gathers parent keys of the model type Resource.")
32
34
  @copyResourceKeyParameters("parent")
33
- @friendlyName("{name}ParentKey", T)
34
- model ParentKeysOf<T> {}
35
+ @friendlyName("{name}ParentKey", Resource)
36
+ model ParentKeysOf<Resource> {}
35
37
 
36
38
  /**
37
- * Represents operation parameters for resource TResource.
38
- * @template TResource The resource model.
39
+ * Represents operation parameters for the resource of type `Resource`.
40
+ *
41
+ * @template Resource The resource model.
39
42
  */
40
- @doc("Represents operation parameters for resource TResource.")
41
- model ResourceParameters<TResource extends {}> {
42
- ...KeysOf<TResource>;
43
+ @doc("Represents operation parameters for resource Resource.")
44
+ model ResourceParameters<Resource extends {}> {
45
+ ...KeysOf<Resource>;
43
46
  }
44
47
 
45
48
  /**
46
- * Represents collection operation parameters for resource TResource.
47
- * @template TResource The resource model.
49
+ * Represents collection operation parameters for the resource of type `Resource`.
50
+ *
51
+ * @template Resource The resource model.
48
52
  */
49
- @doc("Represents collection operation parameters for resource TResource.")
50
- model ResourceCollectionParameters<TResource extends {}> {
51
- ...ParentKeysOf<TResource>;
53
+ @doc("Represents collection operation parameters for resource Resource.")
54
+ model ResourceCollectionParameters<Resource extends {}> {
55
+ ...ParentKeysOf<Resource>;
52
56
  }
53
57
 
54
58
  /**
55
- * Represent the resource GET operation.
56
- * @template TResource The resource model.
57
- * @template TError The error response.
59
+ * Represents the resource GET operation.
60
+ *
61
+ * @template Resource The resource model.
62
+ * @template Error The error response.
58
63
  */
59
- @Private.validateHasKey(TResource)
60
- @Private.validateIsError(TError)
61
- interface ResourceRead<TResource extends {}, TError> {
64
+ @Private.validateHasKey(Resource)
65
+ @Private.validateIsError(Error)
66
+ interface ResourceRead<Resource extends {}, Error> {
62
67
  /**
63
68
  * Gets an instance of the resource.
64
- * @template TResource The resource model.
69
+ *
70
+ * @template Resource The resource model.
65
71
  */
66
72
  @autoRoute
67
73
  @doc("Gets an instance of the resource.")
68
- @readsResource(TResource)
69
- get(...ResourceParameters<TResource>): TResource | TError;
74
+ @readsResource(Resource)
75
+ get(...ResourceParameters<Resource>): Resource | Error;
70
76
  }
71
77
 
72
78
  /**
73
79
  * Resource create operation completed successfully.
74
- * @template T The resource model that was created.
80
+ *
81
+ * @template Resource The resource model that was created.
75
82
  */
76
83
  @doc("Resource create operation completed successfully.")
77
- model ResourceCreatedResponse<T> {
84
+ model ResourceCreatedResponse<Resource> {
78
85
  ...CreatedResponse;
79
- @body body: T;
86
+ @body body: Resource;
80
87
  }
81
88
 
82
89
  /**
83
90
  * Resource create or replace operation template.
84
- * @template TResource The resource model to create or replace.
85
- * @template TError The error response.
91
+ *
92
+ * @template Resource The resource model to create or replace.
93
+ * @template Error The error response.
86
94
  */
87
- interface ResourceCreateOrReplace<TResource extends {}, TError> {
95
+ interface ResourceCreateOrReplace<Resource extends {}, Error> {
88
96
  /**
89
97
  * Creates or replaces a instance of the resource.
90
- * @template TResource The resource model to create or replace.
91
- * @template TError The error response.
98
+ *
99
+ * @template Resource The resource model to create or replace.
100
+ * @template Error The error response.
92
101
  */
93
102
  @autoRoute
94
103
  @doc("Creates or replaces an instance of the resource.")
95
- @createsOrReplacesResource(TResource)
104
+ @createsOrReplacesResource(Resource)
96
105
  createOrReplace(
97
- ...ResourceParameters<TResource>,
98
- @body resource: ResourceCreateModel<TResource>,
99
- ): TResource | ResourceCreatedResponse<TResource> | TError;
106
+ ...ResourceParameters<Resource>,
107
+ @body resource: ResourceCreateModel<Resource>,
108
+ ): Resource | ResourceCreatedResponse<Resource> | Error;
100
109
  }
101
110
 
102
111
  /**
103
112
  * Resource create or update operation model.
104
- * @template TResource The resource model to create or update.
113
+ *
114
+ * @template Resource The resource model to create or update.
105
115
  */
106
- @friendlyName("{name}Update", TResource)
107
- model ResourceCreateOrUpdateModel<TResource extends {}>
108
- is OptionalProperties<UpdateableProperties<DefaultKeyVisibility<TResource, "read">>>;
116
+ @friendlyName("{name}Update", Resource)
117
+ model ResourceCreateOrUpdateModel<Resource extends {}>
118
+ is OptionalProperties<UpdateableProperties<DefaultKeyVisibility<Resource, "read">>>;
109
119
 
110
120
  /**
111
121
  * Resource create or update operation template.
112
- * @template TResource The resource model to create or update.
113
- * @template TError The error response.
122
+ *
123
+ * @template Resource The resource model to create or update.
124
+ * @template Error The error response.
114
125
  */
115
- interface ResourceCreateOrUpdate<TResource extends {}, TError> {
126
+ interface ResourceCreateOrUpdate<Resource extends {}, Error> {
116
127
  /**
117
128
  * Creates or update an instance of the resource.
118
- * @template TResource The resource model to create or update.
119
- * @template TError The error response.
129
+ *
130
+ * @template Resource The resource model to create or update.
131
+ * @template Error The error response.
120
132
  */
121
133
  @autoRoute
122
134
  @doc("Creates or update an instance of the resource.")
123
- @createsOrUpdatesResource(TResource)
135
+ @createsOrUpdatesResource(Resource)
124
136
  createOrUpdate(
125
- ...ResourceParameters<TResource>,
126
- @body resource: ResourceCreateOrUpdateModel<TResource>,
127
- ): TResource | ResourceCreatedResponse<TResource> | TError;
137
+ ...ResourceParameters<Resource>,
138
+ @body resource: ResourceCreateOrUpdateModel<Resource>,
139
+ ): Resource | ResourceCreatedResponse<Resource> | Error;
128
140
  }
129
141
 
130
142
  /**
131
143
  * Resource create operation model.
132
- * @template TResource The resource model to create.
144
+ *
145
+ * @template Resource The resource model to create.
133
146
  */
134
- @friendlyName("{name}Create", TResource)
147
+ @friendlyName("{name}Create", Resource)
135
148
  @withVisibility("create")
136
- model ResourceCreateModel<TResource extends {}> is DefaultKeyVisibility<TResource, "read">;
149
+ model ResourceCreateModel<Resource extends {}> is DefaultKeyVisibility<Resource, "read">;
137
150
 
138
151
  /**
139
152
  * Resource create operation template.
140
- * @template TResource The resource model to create.
141
- * @template TError The error response.
153
+ *
154
+ * @template Resource The resource model to create.
155
+ * @template Error The error response.
142
156
  */
143
- interface ResourceCreate<TResource extends {}, TError> {
157
+ interface ResourceCreate<Resource extends {}, Error> {
144
158
  /**
145
159
  * Creates a new instance of the resource.
146
- * @template TResource The resource model to create.
147
- * @template TError The error response.
160
+ *
161
+ * @template Resource The resource model to create.
162
+ * @template Error The error response.
148
163
  */
149
164
  @autoRoute
150
165
  @doc("Creates a new instance of the resource.")
151
- @createsResource(TResource)
166
+ @createsResource(Resource)
152
167
  create(
153
- ...ResourceCollectionParameters<TResource>,
154
- @body resource: ResourceCreateModel<TResource>,
155
- ): TResource | ResourceCreatedResponse<TResource> | TError;
168
+ ...ResourceCollectionParameters<Resource>,
169
+ @body resource: ResourceCreateModel<Resource>,
170
+ ): Resource | ResourceCreatedResponse<Resource> | Error;
156
171
  }
157
172
 
158
173
  /**
159
174
  * Resource update operation template.
160
- * @template TResource The resource model to update.
161
- * @template TError The error response.
175
+ *
176
+ * @template Resource The resource model to update.
177
+ * @template Error The error response.
162
178
  */
163
- @Private.validateHasKey(TResource)
164
- @Private.validateIsError(TError)
165
- interface ResourceUpdate<TResource extends {}, TError> {
179
+ @Private.validateHasKey(Resource)
180
+ @Private.validateIsError(Error)
181
+ interface ResourceUpdate<Resource extends {}, Error> {
166
182
  /**
167
183
  * Updates an existing instance of the resource.
168
- * @template TResource The resource model to update.
169
- * @template TError The error response.
184
+ *
185
+ * @template Resource The resource model to update.
186
+ * @template Error The error response.
170
187
  */
171
188
  @autoRoute
172
189
  @doc("Updates an existing instance of the resource.")
173
- @updatesResource(TResource)
190
+ @updatesResource(Resource)
174
191
  update(
175
- ...ResourceParameters<TResource>,
176
- @body properties: ResourceCreateOrUpdateModel<TResource>,
177
- ): TResource | TError;
192
+ ...ResourceParameters<Resource>,
193
+ @body properties: ResourceCreateOrUpdateModel<Resource>,
194
+ ): Resource | Error;
178
195
  }
179
196
 
180
197
  @doc("Resource deleted successfully.")
@@ -186,303 +203,332 @@ model ResourceDeletedResponse {
186
203
 
187
204
  /**
188
205
  * Resource delete operation template.
189
- * @template TResource The resource model to delete.
190
- * @template TError The error response.
206
+ *
207
+ * @template Resource The resource model to delete.
208
+ * @template Error The error response.
191
209
  */
192
- @Private.validateHasKey(TResource)
193
- @Private.validateIsError(TError)
194
- interface ResourceDelete<TResource extends {}, TError> {
210
+ @Private.validateHasKey(Resource)
211
+ @Private.validateIsError(Error)
212
+ interface ResourceDelete<Resource extends {}, Error> {
195
213
  /**
196
214
  * Deletes an existing instance of the resource.
197
- * @template TResource The resource model to delete.
198
- * @template TError The error response.
215
+ *
216
+ * @template Resource The resource model to delete.
217
+ * @template Error The error response.
199
218
  */
200
219
  @autoRoute
201
220
  @doc("Deletes an existing instance of the resource.")
202
- @deletesResource(TResource)
203
- delete(...ResourceParameters<TResource>): ResourceDeletedResponse | TError;
221
+ @deletesResource(Resource)
222
+ delete(...ResourceParameters<Resource>): ResourceDeletedResponse | Error;
204
223
  }
205
224
 
206
225
  /**
207
226
  * Structure for a paging response using `value` and `nextLink` to represent pagination.
208
- * This only provides the model structure and not actual pagination support.
209
- * See https://github.com/microsoft/typespec/issues/705 for general paging support.
210
- * @template T The resource type of the collection.
227
+ *
228
+ * This only provides the model structure and not actual pagination support. See
229
+ * https://github.com/microsoft/typespec/issues/705 for general paging support.
230
+ *
231
+ * @template Resource The resource type of the collection.
211
232
  */
212
- @doc("Paged response of {name} items", T)
213
- @friendlyName("{name}CollectionWithNextLink", T)
214
- model CollectionWithNextLink<T extends {}> {
233
+ @doc("Paged response of {name} items", Resource)
234
+ @friendlyName("{name}CollectionWithNextLink", Resource)
235
+ model CollectionWithNextLink<Resource extends {}> {
215
236
  @doc("The items on this page")
216
- value: T[];
237
+ value: Resource[];
217
238
 
218
239
  @doc("The link to the next page of items")
219
- nextLink?: ResourceLocation<T>;
240
+ nextLink?: ResourceLocation<Resource>;
220
241
  }
221
242
 
222
243
  /**
223
244
  * Resource list operation template.
224
- * @template TResource The resource model to list.
225
- * @template TError The error response.
245
+ *
246
+ * @template Resource The resource model to list.
247
+ * @template Error The error response.
226
248
  */
227
- interface ResourceList<TResource extends {}, TError> {
249
+ interface ResourceList<Resource extends {}, Error> {
228
250
  /**
229
251
  * Lists all instances of the resource.
230
- * @template TResource The resource model to list.
231
- * @template TError The error response.
252
+ *
253
+ * @template Resource The resource model to list.
254
+ * @template Error The error response.
232
255
  */
233
256
  @autoRoute
234
257
  @doc("Lists all instances of the resource.")
235
- @listsResource(TResource)
236
- list(...ResourceCollectionParameters<TResource>): CollectionWithNextLink<TResource> | TError;
258
+ @listsResource(Resource)
259
+ list(...ResourceCollectionParameters<Resource>): CollectionWithNextLink<Resource> | Error;
237
260
  }
238
261
 
239
262
  /**
240
263
  * Resource operation templates for resource instances.
241
- * @template TResource The resource model.
242
- * @template TError The error response.
264
+ *
265
+ * @template Resource The resource model.
266
+ * @template Error The error response.
243
267
  */
244
- @Private.validateHasKey(TResource)
245
- @Private.validateIsError(TError)
246
- interface ResourceInstanceOperations<TResource extends {}, TError>
247
- extends ResourceRead<TResource, TError>,
248
- ResourceUpdate<TResource, TError>,
249
- ResourceDelete<TResource, TError> {}
268
+ @Private.validateHasKey(Resource)
269
+ @Private.validateIsError(Error)
270
+ interface ResourceInstanceOperations<Resource extends {}, Error>
271
+ extends ResourceRead<Resource, Error>,
272
+ ResourceUpdate<Resource, Error>,
273
+ ResourceDelete<Resource, Error> {}
250
274
 
251
275
  /**
252
276
  * Resource operation templates for resource collections.
253
- * @template TResource The resource model.
254
- * @template TError The error response.
277
+ *
278
+ * @template Resource The resource model.
279
+ * @template Error The error response.
255
280
  */
256
- @Private.validateHasKey(TResource)
257
- @Private.validateIsError(TError)
258
- interface ResourceCollectionOperations<TResource extends {}, TError>
259
- extends ResourceCreate<TResource, TError>,
260
- ResourceList<TResource, TError> {}
281
+ @Private.validateHasKey(Resource)
282
+ @Private.validateIsError(Error)
283
+ interface ResourceCollectionOperations<Resource extends {}, Error>
284
+ extends ResourceCreate<Resource, Error>,
285
+ ResourceList<Resource, Error> {}
261
286
 
262
287
  /**
263
288
  * Resource operation templates for resources.
264
- * @template TResource The resource model.
265
- * @template TError The error response.
289
+ *
290
+ * @template Resource The resource model.
291
+ * @template Error The error response.
266
292
  */
267
- @Private.validateHasKey(TResource)
268
- @Private.validateIsError(TError)
269
- interface ResourceOperations<TResource extends {}, TError>
270
- extends ResourceInstanceOperations<TResource, TError>,
271
- ResourceCollectionOperations<TResource, TError> {}
293
+ @Private.validateHasKey(Resource)
294
+ @Private.validateIsError(Error)
295
+ interface ResourceOperations<Resource extends {}, Error>
296
+ extends ResourceInstanceOperations<Resource, Error>,
297
+ ResourceCollectionOperations<Resource, Error> {}
272
298
 
273
299
  /**
274
300
  * Singleton resource read operation template.
275
- * @template TSingleton The singleton resource model.
276
- * @template TResource The resource model.
277
- * @template TError The error response.
301
+ *
302
+ * @template Singleton The singleton resource model.
303
+ * @template Resource The resource model.
304
+ * @template Error The error response.
278
305
  */
279
- @Private.validateHasKey(TResource)
280
- @Private.validateIsError(TError)
281
- interface SingletonResourceRead<TSingleton extends {}, TResource extends {}, TError> {
306
+ @Private.validateHasKey(Resource)
307
+ @Private.validateIsError(Error)
308
+ interface SingletonResourceRead<Singleton extends {}, Resource extends {}, Error> {
282
309
  /**
283
310
  * Gets the singleton resource.
284
- * @template TSingleton The singleton resource model.
285
- * @template TResource The resource model.
311
+ *
312
+ * @template Singleton The singleton resource model.
313
+ * @template Resource The resource model.
286
314
  */
287
315
  @autoRoute
288
316
  @doc("Gets the singleton resource.")
289
- @segmentOf(TSingleton)
290
- @readsResource(TSingleton)
291
- get(...ResourceParameters<TResource>): TSingleton | TError;
317
+ @segmentOf(Singleton)
318
+ @readsResource(Singleton)
319
+ get(...ResourceParameters<Resource>): Singleton | Error;
292
320
  }
293
321
 
294
322
  /**
295
323
  * Singleton resource update operation template.
296
- * @template TSingleton The singleton resource model.
297
- * @template TResource The resource model.
298
- * @template TError The error response.
324
+ *
325
+ * @template Singleton The singleton resource model.
326
+ * @template Resource The resource model.
327
+ * @template Error The error response.
299
328
  */
300
- @Private.validateHasKey(TResource)
301
- @Private.validateIsError(TError)
302
- interface SingletonResourceUpdate<TSingleton extends {}, TResource extends {}, TError> {
329
+ @Private.validateHasKey(Resource)
330
+ @Private.validateIsError(Error)
331
+ interface SingletonResourceUpdate<Singleton extends {}, Resource extends {}, Error> {
303
332
  /**
304
333
  * Updates the singleton resource.
305
- * @template TSingleton The singleton resource model.
306
- * @template TResource The resource model.
334
+ *
335
+ * @template Singleton The singleton resource model.
336
+ * @template Resource The resource model.
307
337
  */
308
338
  @autoRoute
309
339
  @doc("Updates the singleton resource.")
310
- @segmentOf(TSingleton)
311
- @updatesResource(TSingleton)
340
+ @segmentOf(Singleton)
341
+ @updatesResource(Singleton)
312
342
  update(
313
- ...ResourceParameters<TResource>,
343
+ ...ResourceParameters<Resource>,
314
344
 
315
345
  @body
316
- properties: ResourceCreateOrUpdateModel<TSingleton>,
317
- ): TSingleton | TError;
346
+ properties: ResourceCreateOrUpdateModel<Singleton>,
347
+ ): Singleton | Error;
318
348
  }
319
349
 
320
350
  /**
321
351
  * Singleton resource operation templates for singleton resource instances.
322
- * @template TSingleton The singleton resource model.
323
- * @template TResource The resource model.
324
- * @template TError The error response.
352
+ *
353
+ * @template Singleton The singleton resource model.
354
+ * @template Resource The resource model.
355
+ * @template Error The error response.
325
356
  */
326
- interface SingletonResourceOperations<TSingleton extends {}, TResource extends {}, TError>
327
- extends SingletonResourceRead<TSingleton, TResource, TError>,
328
- SingletonResourceUpdate<TSingleton, TResource, TError> {}
357
+ interface SingletonResourceOperations<Singleton extends {}, Resource extends {}, Error>
358
+ extends SingletonResourceRead<Singleton, Resource, Error>,
359
+ SingletonResourceUpdate<Singleton, Resource, Error> {}
329
360
 
330
361
  /**
331
362
  * Extension resource read operation template.
332
- * @template TExtension The extension resource model.
333
- * @template TResource The resource model.
334
- * @template TError The error response.
363
+ *
364
+ * @template Extension The extension resource model.
365
+ * @template Resource The resource model.
366
+ * @template Error The error response.
335
367
  */
336
- @Private.validateHasKey(TResource)
337
- @Private.validateIsError(TError)
338
- interface ExtensionResourceRead<TExtension extends {}, TResource extends {}, TError> {
368
+ @Private.validateHasKey(Resource)
369
+ @Private.validateIsError(Error)
370
+ interface ExtensionResourceRead<Extension extends {}, Resource extends {}, Error> {
339
371
  /**
340
372
  * Gets an instance of the extension resource.
341
- * @template TExtension The extension resource model.
342
- * @template TResource The resource model.
373
+ *
374
+ * @template Extension The extension resource model.
375
+ * @template Resource The resource model.
343
376
  */
344
377
  @autoRoute
345
378
  @doc("Gets an instance of the extension resource.")
346
- @readsResource(TExtension)
347
- get(...ResourceParameters<TResource>, ...ResourceParameters<TExtension>): TExtension | TError;
379
+ @readsResource(Extension)
380
+ get(...ResourceParameters<Resource>, ...ResourceParameters<Extension>): Extension | Error;
348
381
  }
349
382
 
350
383
  /**
351
384
  * Extension resource create or update operation template.
352
- * @template TExtension The extension resource model.
353
- * @template TResource The resource model.
354
- * @template TError The error response.
385
+ *
386
+ * @template Extension The extension resource model.
387
+ * @template Resource The resource model.
388
+ * @template Error The error response.
355
389
  */
356
- interface ExtensionResourceCreateOrUpdate<TExtension extends {}, TResource extends {}, TError> {
390
+ interface ExtensionResourceCreateOrUpdate<Extension extends {}, Resource extends {}, Error> {
357
391
  /**
358
392
  * Creates or update an instance of the extension resource.
359
- * @template TExtension The extension resource model.
360
- * @template TResource The resource model.
393
+ *
394
+ * @template Extension The extension resource model.
395
+ * @template Resource The resource model.
361
396
  */
362
397
  @autoRoute
363
398
  @doc("Creates or update an instance of the extension resource.")
364
- @createsOrUpdatesResource(TExtension)
399
+ @createsOrUpdatesResource(Extension)
365
400
  createOrUpdate(
366
- ...ResourceParameters<TResource>,
367
- ...ResourceParameters<TExtension>,
368
- @body resource: ResourceCreateOrUpdateModel<TExtension>,
369
- ): TExtension | ResourceCreatedResponse<TExtension> | TError;
401
+ ...ResourceParameters<Resource>,
402
+ ...ResourceParameters<Extension>,
403
+ @body resource: ResourceCreateOrUpdateModel<Extension>,
404
+ ): Extension | ResourceCreatedResponse<Extension> | Error;
370
405
  }
371
406
 
372
407
  /**
373
408
  * Extension resource create operation template.
374
- * @template TExtension The extension resource model.
375
- * @template TResource The resource model.
376
- * @template TError The error response.
409
+ *
410
+ * @template Extension The extension resource model.
411
+ * @template Resource The resource model.
412
+ * @template Error The error response.
377
413
  */
378
- interface ExtensionResourceCreate<TExtension extends {}, TResource extends {}, TError> {
414
+ interface ExtensionResourceCreate<Extension extends {}, Resource extends {}, Error> {
379
415
  /**
380
416
  * Creates a new instance of the extension resource.
381
- * @template TExtension The extension resource model.
382
- * @template TResource The resource model.
417
+ *
418
+ * @template Extension The extension resource model.
419
+ * @template Resource The resource model.
383
420
  */
384
421
  @autoRoute
385
422
  @doc("Creates a new instance of the extension resource.")
386
- @createsResource(TExtension)
423
+ @createsResource(Extension)
387
424
  create(
388
- ...ResourceParameters<TResource>,
389
- @body resource: ResourceCreateModel<TExtension>,
390
- ): TExtension | ResourceCreatedResponse<TExtension> | TError;
425
+ ...ResourceParameters<Resource>,
426
+ @body resource: ResourceCreateModel<Extension>,
427
+ ): Extension | ResourceCreatedResponse<Extension> | Error;
391
428
  }
392
429
 
393
430
  /**
394
431
  * Extension resource update operation template.
395
- * @template TExtension The extension resource model.
396
- * @template TResource The resource model.
397
- * @template TError The error response.
432
+ *
433
+ * @template Extension The extension resource model.
434
+ * @template Resource The resource model.
435
+ * @template Error The error response.
398
436
  */
399
- interface ExtensionResourceUpdate<TExtension extends {}, TResource extends {}, TError> {
437
+ interface ExtensionResourceUpdate<Extension extends {}, Resource extends {}, Error> {
400
438
  /**
401
439
  * Updates an existing instance of the extension resource.
402
- * @template TExtension The extension resource model.
403
- * @template TResource The resource model.
440
+ *
441
+ * @template Extension The extension resource model.
442
+ * @template Resource The resource model.
404
443
  */
405
444
  @autoRoute
406
445
  @doc("Updates an existing instance of the extension resource.")
407
- @updatesResource(TExtension)
446
+ @updatesResource(Extension)
408
447
  update(
409
- ...ResourceParameters<TResource>,
410
- ...ResourceParameters<TExtension>,
448
+ ...ResourceParameters<Resource>,
449
+ ...ResourceParameters<Extension>,
411
450
 
412
451
  @body
413
- properties: ResourceCreateOrUpdateModel<TExtension>,
414
- ): TExtension | TError;
452
+ properties: ResourceCreateOrUpdateModel<Extension>,
453
+ ): Extension | Error;
415
454
  }
416
455
 
417
456
  /**
418
457
  * Extension resource delete operation template.
419
- * @template TExtension The extension resource model.
420
- * @template TResource The resource model.
421
- * @template TError The error response.
458
+ *
459
+ * @template Extension The extension resource model.
460
+ * @template Resource The resource model.
461
+ * @template Error The error response.
422
462
  */
423
- interface ExtensionResourceDelete<TExtension extends {}, TResource extends {}, TError> {
463
+ interface ExtensionResourceDelete<Extension extends {}, Resource extends {}, Error> {
424
464
  /**
425
465
  * Deletes an existing instance of the extension resource.
426
- * @template TExtension The extension resource model.
427
- * @template TResource The resource model.
466
+ *
467
+ * @template Extension The extension resource model.
468
+ * @template Resource The resource model.
428
469
  */
429
470
  @autoRoute
430
471
  @doc("Deletes an existing instance of the extension resource.")
431
- @deletesResource(TExtension)
472
+ @deletesResource(Extension)
432
473
  delete(
433
- ...ResourceParameters<TResource>,
434
- ...ResourceParameters<TExtension>,
435
- ): ResourceDeletedResponse | TError;
474
+ ...ResourceParameters<Resource>,
475
+ ...ResourceParameters<Extension>,
476
+ ): ResourceDeletedResponse | Error;
436
477
  }
437
478
 
438
479
  /**
439
480
  * Extension resource list operation template.
440
- * @template TExtension The extension resource model.
441
- * @template TResource The resource model.
442
- * @template TError The error response.
481
+ *
482
+ * @template Extension The extension resource model.
483
+ * @template Resource The resource model.
484
+ * @template Error The error response.
443
485
  */
444
- interface ExtensionResourceList<TExtension extends {}, TResource extends {}, TError> {
486
+ interface ExtensionResourceList<Extension extends {}, Resource extends {}, Error> {
445
487
  /**
446
488
  * Lists all instances of the extension resource.
447
- * @template TExtension The extension resource model.
448
- * @template TResource The resource model.
489
+ *
490
+ * @template Extension The extension resource model.
491
+ * @template Resource The resource model.
449
492
  */
450
493
  @autoRoute
451
494
  @doc("Lists all instances of the extension resource.")
452
- @listsResource(TExtension)
495
+ @listsResource(Extension)
453
496
  list(
454
- ...ResourceParameters<TResource>,
455
- ...ResourceCollectionParameters<TExtension>,
456
- ): CollectionWithNextLink<TExtension> | TError;
497
+ ...ResourceParameters<Resource>,
498
+ ...ResourceCollectionParameters<Extension>,
499
+ ): CollectionWithNextLink<Extension> | Error;
457
500
  }
458
501
 
459
502
  /**
460
503
  * Extension resource operation templates for extension resource instances.
461
- * @template TExtension The extension resource model.
462
- * @template TResource The resource model.
463
- * @template TError The error response.
504
+ *
505
+ * @template Extension The extension resource model.
506
+ * @template Resource The resource model.
507
+ * @template Error The error response.
464
508
  */
465
- interface ExtensionResourceInstanceOperations<TExtension extends {}, TResource extends {}, TError>
466
- extends ExtensionResourceRead<TExtension, TResource, TError>,
467
- ExtensionResourceUpdate<TExtension, TResource, TError>,
468
- ExtensionResourceDelete<TExtension, TResource, TError> {}
509
+ interface ExtensionResourceInstanceOperations<Extension extends {}, Resource extends {}, Error>
510
+ extends ExtensionResourceRead<Extension, Resource, Error>,
511
+ ExtensionResourceUpdate<Extension, Resource, Error>,
512
+ ExtensionResourceDelete<Extension, Resource, Error> {}
469
513
 
470
514
  /**
471
515
  * Extension resource operation templates for extension resource collections.
472
- * @template TExtension The extension resource model.
473
- * @template TResource The resource model.
474
- * @template TError The error response.
516
+ *
517
+ * @template Extension The extension resource model.
518
+ * @template Resource The resource model.
519
+ * @template Error The error response.
475
520
  */
476
- interface ExtensionResourceCollectionOperations<TExtension extends {}, TResource extends {}, TError>
477
- extends ExtensionResourceCreate<TExtension, TResource, TError>,
478
- ExtensionResourceList<TExtension, TResource, TError> {}
521
+ interface ExtensionResourceCollectionOperations<Extension extends {}, Resource extends {}, Error>
522
+ extends ExtensionResourceCreate<Extension, Resource, Error>,
523
+ ExtensionResourceList<Extension, Resource, Error> {}
479
524
 
480
525
  /**
481
526
  * Extension resource operation templates for extension resource instances and collections.
482
- * @template TExtension The extension resource model.
483
- * @template TResource The resource model.
484
- * @template TError The error response.
527
+ *
528
+ * @template Extension The extension resource model.
529
+ * @template Resource The resource model.
530
+ * @template Error The error response.
485
531
  */
486
- interface ExtensionResourceOperations<TExtension extends {}, TResource extends {}, TError>
487
- extends ExtensionResourceInstanceOperations<TExtension, TResource, TError>,
488
- ExtensionResourceCollectionOperations<TExtension, TResource, TError> {}
532
+ interface ExtensionResourceOperations<Extension extends {}, Resource extends {}, Error>
533
+ extends ExtensionResourceInstanceOperations<Extension, Resource, Error>,
534
+ ExtensionResourceCollectionOperations<Extension, Resource, Error> {}
package/lib/rest.tsp CHANGED
@@ -6,8 +6,8 @@ namespace TypeSpec.Rest;
6
6
 
7
7
  /**
8
8
  * A URL that points to a resource.
9
- * @template TResource The type of resource that the URL points to.
9
+ * @template Resource The type of resource that the URL points to.
10
10
  */
11
- @doc("The location of an instance of {name}", TResource)
12
- @Private.resourceLocation(TResource)
13
- scalar ResourceLocation<TResource extends {}> extends url;
11
+ @doc("The location of an instance of {name}", Resource)
12
+ @Private.resourceLocation(Resource)
13
+ scalar ResourceLocation<Resource extends {}> extends url;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@typespec/rest",
3
- "version": "0.52.0-dev.1",
3
+ "version": "0.52.0-dev.3",
4
4
  "author": "Microsoft Corporation",
5
5
  "description": "TypeSpec REST protocol binding",
6
6
  "homepage": "https://microsoft.github.io/typespec",
@@ -42,7 +42,6 @@
42
42
  "@typespec/http": "~0.51.0 || >=0.52.0-dev <0.52.0"
43
43
  },
44
44
  "devDependencies": {
45
- "@types/mocha": "~10.0.6",
46
45
  "@types/node": "~18.11.9",
47
46
  "@typespec/compiler": "~0.51.0 || >=0.52.0-dev <0.52.0",
48
47
  "@typespec/http": "~0.51.0 || >=0.52.0-dev <0.52.0",
@@ -51,9 +50,8 @@
51
50
  "@typespec/eslint-plugin": "~0.51.0 || >=0.52.0-dev <0.52.0",
52
51
  "@typespec/tspd": "~0.46.0 || >=0.47.0-dev <0.47.0",
53
52
  "eslint": "^8.55.0",
54
- "mocha": "~10.2.0",
55
- "mocha-junit-reporter": "~2.2.1",
56
- "mocha-multi-reporters": "~1.5.1",
53
+ "vitest": "^1.1.0",
54
+ "@vitest/coverage-v8": "^1.1.0",
57
55
  "c8": "~8.0.1",
58
56
  "rimraf": "~5.0.1",
59
57
  "typescript": "~5.3.3"
@@ -64,8 +62,9 @@
64
62
  "build": "tsc -p . && npm run lint-typespec-library",
65
63
  "watch": "tsc -p . --watch",
66
64
  "lint-typespec-library": "tsp compile . --warn-as-error --import @typespec/library-linter --no-emit",
67
- "test": "mocha",
68
- "test-official": "c8 mocha --forbid-only --reporter mocha-multi-reporters",
65
+ "test": "vitest run",
66
+ "test:watch": "vitest -w",
67
+ "test-official": "vitest run --coverage --reporter=junit --reporter=default --no-file-parallelism",
69
68
  "lint": "eslint . --ext .ts --max-warnings=0",
70
69
  "lint:fix": "eslint . --fix --ext .ts",
71
70
  "regen-docs": "tspd doc . --enable-experimental --output-dir ../../docs/libraries/rest/reference"