@typespec/versioning 0.57.0-dev.5 → 0.57.0-dev.6
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/decorators.d.ts +64 -0
- package/dist/src/decorators.d.ts.map +1 -0
- package/dist/src/decorators.js +304 -0
- package/dist/src/decorators.js.map +1 -0
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/internal-projection-functions.d.ts +21 -0
- package/dist/src/internal-projection-functions.d.ts.map +1 -0
- package/dist/src/internal-projection-functions.js +88 -0
- package/dist/src/internal-projection-functions.js.map +1 -0
- package/dist/src/lib.d.ts +45 -45
- package/dist/src/lib.d.ts.map +1 -1
- package/dist/src/lib.js +15 -3
- package/dist/src/lib.js.map +1 -1
- package/dist/src/projection.d.ts +10 -0
- package/dist/src/projection.d.ts.map +1 -0
- package/dist/src/projection.js +38 -0
- package/dist/src/projection.js.map +1 -0
- package/dist/src/testing/index.d.ts +1 -1
- package/dist/src/testing/index.d.ts.map +1 -1
- package/dist/src/types.d.ts +1 -1
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/validate.d.ts +1 -1
- package/dist/src/validate.d.ts.map +1 -1
- package/dist/src/validate.js +3 -2
- package/dist/src/validate.js.map +1 -1
- package/dist/src/versioning-timeline.d.ts +2 -2
- package/dist/src/versioning-timeline.d.ts.map +1 -1
- package/dist/src/versioning-timeline.js.map +1 -1
- package/dist/src/versioning.d.ts +3 -89
- package/dist/src/versioning.d.ts.map +1 -1
- package/dist/src/versioning.js +4 -445
- package/dist/src/versioning.js.map +1 -1
- package/lib/decorators.tsp +180 -212
- package/lib/main.tsp +3 -0
- package/lib/{versioning.tsp → projection.tsp} +34 -2
- package/package.json +2 -2
package/lib/decorators.tsp
CHANGED
|
@@ -1,224 +1,192 @@
|
|
|
1
|
-
import "../dist/src/
|
|
1
|
+
import "../dist/src/decorators.js";
|
|
2
2
|
|
|
3
3
|
using TypeSpec.Reflection;
|
|
4
4
|
|
|
5
|
-
namespace TypeSpec
|
|
6
|
-
namespace Versioning {
|
|
7
|
-
/**
|
|
8
|
-
* Identifies that the decorated namespace is versioned by the provided enum.
|
|
9
|
-
* @param versions The enum that describes the supported versions.
|
|
10
|
-
*
|
|
11
|
-
* @example
|
|
12
|
-
*
|
|
13
|
-
* ```tsp
|
|
14
|
-
* @versioned(Versions)
|
|
15
|
-
* namespace MyService;
|
|
16
|
-
* enum Versions {
|
|
17
|
-
* v1,
|
|
18
|
-
* v2,
|
|
19
|
-
* v3,
|
|
20
|
-
* }
|
|
21
|
-
* ```
|
|
22
|
-
*/
|
|
23
|
-
extern dec versioned(target: Namespace, versions: Enum);
|
|
5
|
+
namespace TypeSpec.Versioning;
|
|
24
6
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
* @useDependency(MyLib.Versions.v1_1) // V1 use lib v1_1
|
|
43
|
-
* v1,
|
|
44
|
-
* @useDependency(MyLib.Versions.v1_1) // V2 use lib v1_1
|
|
45
|
-
* v2,
|
|
46
|
-
* @useDependency(MyLib.Versions.v2) // V3 use lib v2
|
|
47
|
-
* v3,
|
|
48
|
-
* }
|
|
49
|
-
* ```
|
|
50
|
-
*/
|
|
51
|
-
extern dec useDependency(target: EnumMember | Namespace, ...versionRecords: EnumMember[]);
|
|
7
|
+
/**
|
|
8
|
+
* Identifies that the decorated namespace is versioned by the provided enum.
|
|
9
|
+
* @param versions The enum that describes the supported versions.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
*
|
|
13
|
+
* ```tsp
|
|
14
|
+
* @versioned(Versions)
|
|
15
|
+
* namespace MyService;
|
|
16
|
+
* enum Versions {
|
|
17
|
+
* v1,
|
|
18
|
+
* v2,
|
|
19
|
+
* v3,
|
|
20
|
+
* }
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
extern dec versioned(target: Namespace, versions: Enum);
|
|
52
24
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
| EnumMember
|
|
81
|
-
| Union
|
|
82
|
-
| UnionVariant
|
|
83
|
-
| Scalar
|
|
84
|
-
| Interface,
|
|
85
|
-
version: EnumMember
|
|
86
|
-
);
|
|
25
|
+
/**
|
|
26
|
+
* Identifies that a namespace or a given versioning enum member relies upon a versioned package.
|
|
27
|
+
* @param versionRecords The dependent library version(s) for the target namespace or version.
|
|
28
|
+
*
|
|
29
|
+
* @example Select a single version of `MyLib` to use
|
|
30
|
+
*
|
|
31
|
+
* ```tsp
|
|
32
|
+
* @useDependency(MyLib.Versions.v1_1)
|
|
33
|
+
* namespace NonVersionedService;
|
|
34
|
+
* ```
|
|
35
|
+
*
|
|
36
|
+
* @example Select which version of the library match to which version of the service.
|
|
37
|
+
*
|
|
38
|
+
* ```tsp
|
|
39
|
+
* @versioned(Versions)
|
|
40
|
+
* namespace MyService1;
|
|
41
|
+
* enum Version {
|
|
42
|
+
* @useDependency(MyLib.Versions.v1_1) // V1 use lib v1_1
|
|
43
|
+
* v1,
|
|
44
|
+
* @useDependency(MyLib.Versions.v1_1) // V2 use lib v1_1
|
|
45
|
+
* v2,
|
|
46
|
+
* @useDependency(MyLib.Versions.v2) // V3 use lib v2
|
|
47
|
+
* v3,
|
|
48
|
+
* }
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
extern dec useDependency(target: EnumMember | Namespace, ...versionRecords: EnumMember[]);
|
|
87
52
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
53
|
+
/**
|
|
54
|
+
* Identifies when the target was added.
|
|
55
|
+
* @param version The version that the target was added in.
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
*
|
|
59
|
+
* ```tsp
|
|
60
|
+
* @added(Versions.v2)
|
|
61
|
+
* op addedInV2(): void;
|
|
62
|
+
*
|
|
63
|
+
* @added(Versions.v2)
|
|
64
|
+
* model AlsoAddedInV2 {}
|
|
65
|
+
*
|
|
66
|
+
* model Foo {
|
|
67
|
+
* name: string;
|
|
68
|
+
*
|
|
69
|
+
* @added(Versions.v3)
|
|
70
|
+
* addedInV3: string;
|
|
71
|
+
* }
|
|
72
|
+
* ```
|
|
73
|
+
*/
|
|
74
|
+
extern dec added(
|
|
75
|
+
target:
|
|
76
|
+
| Model
|
|
77
|
+
| ModelProperty
|
|
78
|
+
| Operation
|
|
79
|
+
| Enum
|
|
80
|
+
| EnumMember
|
|
81
|
+
| Union
|
|
82
|
+
| UnionVariant
|
|
83
|
+
| Scalar
|
|
84
|
+
| Interface,
|
|
85
|
+
version: EnumMember
|
|
86
|
+
);
|
|
121
87
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
88
|
+
/**
|
|
89
|
+
* Identifies when the target was removed.
|
|
90
|
+
* @param version The version that the target was removed in.
|
|
91
|
+
*
|
|
92
|
+
* @example
|
|
93
|
+
* ```tsp
|
|
94
|
+
* @removed(Versions.v2)
|
|
95
|
+
* op removedInV2(): void;
|
|
96
|
+
*
|
|
97
|
+
* @removed(Versions.v2)
|
|
98
|
+
* model AlsoRemovedInV2 {}
|
|
99
|
+
*
|
|
100
|
+
* model Foo {
|
|
101
|
+
* name: string;
|
|
102
|
+
*
|
|
103
|
+
* @removed(Versions.v3)
|
|
104
|
+
* removedInV3: string;
|
|
105
|
+
* }
|
|
106
|
+
* ```
|
|
107
|
+
*/
|
|
108
|
+
extern dec removed(
|
|
109
|
+
target:
|
|
110
|
+
| Model
|
|
111
|
+
| ModelProperty
|
|
112
|
+
| Operation
|
|
113
|
+
| Enum
|
|
114
|
+
| EnumMember
|
|
115
|
+
| Union
|
|
116
|
+
| UnionVariant
|
|
117
|
+
| Scalar
|
|
118
|
+
| Interface,
|
|
119
|
+
version: EnumMember
|
|
120
|
+
);
|
|
147
121
|
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
122
|
+
/**
|
|
123
|
+
* Identifies when the target has been renamed.
|
|
124
|
+
* @param version The version that the target was renamed in.
|
|
125
|
+
* @param oldName The previous name of the target.
|
|
126
|
+
*
|
|
127
|
+
* @example
|
|
128
|
+
* ```tsp
|
|
129
|
+
* @renamedFrom(Versions.v2, "oldName")
|
|
130
|
+
* op newName(): void;
|
|
131
|
+
* ```
|
|
132
|
+
*/
|
|
133
|
+
extern dec renamedFrom(
|
|
134
|
+
target:
|
|
135
|
+
| Model
|
|
136
|
+
| ModelProperty
|
|
137
|
+
| Operation
|
|
138
|
+
| Enum
|
|
139
|
+
| EnumMember
|
|
140
|
+
| Union
|
|
141
|
+
| UnionVariant
|
|
142
|
+
| Scalar
|
|
143
|
+
| Interface,
|
|
144
|
+
version: EnumMember,
|
|
145
|
+
oldName: valueof string
|
|
146
|
+
);
|
|
163
147
|
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
148
|
+
/**
|
|
149
|
+
* Identifies when a target was made optional.
|
|
150
|
+
* @param version The version that the target was made optional in.
|
|
151
|
+
*
|
|
152
|
+
* @example
|
|
153
|
+
*
|
|
154
|
+
* ```tsp
|
|
155
|
+
* model Foo {
|
|
156
|
+
* name: string;
|
|
157
|
+
* @madeOptional(Versions.v2)
|
|
158
|
+
* nickname: string;
|
|
159
|
+
* }
|
|
160
|
+
* ```
|
|
161
|
+
*/
|
|
162
|
+
extern dec madeOptional(target: ModelProperty, version: EnumMember);
|
|
179
163
|
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
164
|
+
/**
|
|
165
|
+
* Identifies when a target was made required.
|
|
166
|
+
* @param version The version that the target was made required in.
|
|
167
|
+
*
|
|
168
|
+
* @example
|
|
169
|
+
*
|
|
170
|
+
* ```tsp
|
|
171
|
+
* model Foo {
|
|
172
|
+
* name: string;
|
|
173
|
+
* @madeRequired(Versions.v2)
|
|
174
|
+
* nickname: string;
|
|
175
|
+
* }
|
|
176
|
+
* ```
|
|
177
|
+
*/
|
|
178
|
+
extern dec madeRequired(target: ModelProperty, version: EnumMember);
|
|
186
179
|
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
180
|
+
/**
|
|
181
|
+
* Identifies when the target type changed.
|
|
182
|
+
* @param version The version that the target type changed in.
|
|
183
|
+
* @param oldType The previous type of the target.
|
|
184
|
+
*/
|
|
185
|
+
extern dec typeChangedFrom(target: ModelProperty, version: EnumMember, oldType: unknown);
|
|
193
186
|
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
/**
|
|
201
|
-
* Returns whether the target has a different name for the given version.
|
|
202
|
-
* @param version The version to check.
|
|
203
|
-
*/
|
|
204
|
-
extern fn hasDifferentNameAtVersion(target: unknown, version: EnumMember): boolean;
|
|
205
|
-
|
|
206
|
-
/**
|
|
207
|
-
* Returns whether the target was made optional after the given version.
|
|
208
|
-
* @param version The version to check.
|
|
209
|
-
*/
|
|
210
|
-
extern fn madeOptionalAfter(target: unknown, version: EnumMember): boolean;
|
|
211
|
-
|
|
212
|
-
/**
|
|
213
|
-
* Returns whether the target was made required after the given version.
|
|
214
|
-
* @param version The version to check.
|
|
215
|
-
*/
|
|
216
|
-
extern fn madeRequiredAfter(target: unknown, version: EnumMember): boolean;
|
|
217
|
-
|
|
218
|
-
/**
|
|
219
|
-
* Returns whether the version exists for the provided enum member.
|
|
220
|
-
* @param version The version to check.
|
|
221
|
-
*/
|
|
222
|
-
extern fn getVersionForEnumMember(target: unknown, version: EnumMember): boolean;
|
|
223
|
-
}
|
|
224
|
-
}
|
|
187
|
+
/**
|
|
188
|
+
* Identifies when the target type changed.
|
|
189
|
+
* @param version The version that the target type changed in.
|
|
190
|
+
* @param oldType The previous type of the target.
|
|
191
|
+
*/
|
|
192
|
+
extern dec returnTypeChangedFrom(target: Operation, version: EnumMember, oldType: unknown);
|
package/lib/main.tsp
ADDED
|
@@ -1,7 +1,39 @@
|
|
|
1
|
-
import "
|
|
2
|
-
import "../dist/src/validate.js";
|
|
1
|
+
import "../dist/src/internal-projection-functions.js";
|
|
3
2
|
|
|
4
3
|
using TypeSpec.Versioning;
|
|
4
|
+
using TypeSpec.Reflection;
|
|
5
|
+
|
|
6
|
+
namespace TypeSpec.Versioning;
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Returns whether the target exists for the given version.
|
|
10
|
+
* @param version The version to check.
|
|
11
|
+
*/
|
|
12
|
+
extern fn existsAtVersion(target: unknown, version: EnumMember): boolean;
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Returns whether the target has a different name for the given version.
|
|
16
|
+
* @param version The version to check.
|
|
17
|
+
*/
|
|
18
|
+
extern fn hasDifferentNameAtVersion(target: unknown, version: EnumMember): boolean;
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Returns whether the target has a different return type for the given version.
|
|
22
|
+
* @param version The version to check.
|
|
23
|
+
*/
|
|
24
|
+
extern fn hasDifferentReturnTypeAtVersion(target: unknown, version: EnumMember): boolean;
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Returns whether the target was made optional after the given version.
|
|
28
|
+
* @param version The version to check.
|
|
29
|
+
*/
|
|
30
|
+
extern fn madeOptionalAfter(target: unknown, version: EnumMember): boolean;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Returns whether the target was made required after the given version.
|
|
34
|
+
* @param version The version to check.
|
|
35
|
+
*/
|
|
36
|
+
extern fn madeRequiredAfter(target: unknown, version: EnumMember): boolean;
|
|
5
37
|
|
|
6
38
|
#suppress "projections-are-experimental"
|
|
7
39
|
projection op#v {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@typespec/versioning",
|
|
3
|
-
"version": "0.57.0-dev.
|
|
3
|
+
"version": "0.57.0-dev.6",
|
|
4
4
|
"author": "Microsoft Corporation",
|
|
5
5
|
"description": "TypeSpec library for declaring and emitting versioned APIs",
|
|
6
6
|
"homepage": "https://typespec.io",
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
],
|
|
19
19
|
"type": "module",
|
|
20
20
|
"main": "dist/src/index.js",
|
|
21
|
-
"tspMain": "lib/
|
|
21
|
+
"tspMain": "lib/main.tsp",
|
|
22
22
|
"exports": {
|
|
23
23
|
".": {
|
|
24
24
|
"types": "./dist/src/index.d.ts",
|