@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.
Files changed (39) hide show
  1. package/dist/src/decorators.d.ts +64 -0
  2. package/dist/src/decorators.d.ts.map +1 -0
  3. package/dist/src/decorators.js +304 -0
  4. package/dist/src/decorators.js.map +1 -0
  5. package/dist/src/index.d.ts +2 -0
  6. package/dist/src/index.d.ts.map +1 -1
  7. package/dist/src/index.js +2 -0
  8. package/dist/src/index.js.map +1 -1
  9. package/dist/src/internal-projection-functions.d.ts +21 -0
  10. package/dist/src/internal-projection-functions.d.ts.map +1 -0
  11. package/dist/src/internal-projection-functions.js +88 -0
  12. package/dist/src/internal-projection-functions.js.map +1 -0
  13. package/dist/src/lib.d.ts +45 -45
  14. package/dist/src/lib.d.ts.map +1 -1
  15. package/dist/src/lib.js +15 -3
  16. package/dist/src/lib.js.map +1 -1
  17. package/dist/src/projection.d.ts +10 -0
  18. package/dist/src/projection.d.ts.map +1 -0
  19. package/dist/src/projection.js +38 -0
  20. package/dist/src/projection.js.map +1 -0
  21. package/dist/src/testing/index.d.ts +1 -1
  22. package/dist/src/testing/index.d.ts.map +1 -1
  23. package/dist/src/types.d.ts +1 -1
  24. package/dist/src/types.d.ts.map +1 -1
  25. package/dist/src/validate.d.ts +1 -1
  26. package/dist/src/validate.d.ts.map +1 -1
  27. package/dist/src/validate.js +3 -2
  28. package/dist/src/validate.js.map +1 -1
  29. package/dist/src/versioning-timeline.d.ts +2 -2
  30. package/dist/src/versioning-timeline.d.ts.map +1 -1
  31. package/dist/src/versioning-timeline.js.map +1 -1
  32. package/dist/src/versioning.d.ts +3 -89
  33. package/dist/src/versioning.d.ts.map +1 -1
  34. package/dist/src/versioning.js +4 -445
  35. package/dist/src/versioning.js.map +1 -1
  36. package/lib/decorators.tsp +180 -212
  37. package/lib/main.tsp +3 -0
  38. package/lib/{versioning.tsp → projection.tsp} +34 -2
  39. package/package.json +2 -2
@@ -1,224 +1,192 @@
1
- import "../dist/src/versioning.js";
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
- * 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[]);
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
- * 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
- );
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
- * 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
- );
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
- * 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
- );
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
- * 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);
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
- * 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);
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
- * 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);
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
- * 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);
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
- * Returns whether the target exists for the given version.
196
- * @param version The version to check.
197
- */
198
- extern fn existsAtVersion(target: unknown, version: EnumMember): boolean;
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
@@ -0,0 +1,3 @@
1
+ import "./decorators.tsp";
2
+ import "./projection.tsp";
3
+ import "../dist/src/validate.js";
@@ -1,7 +1,39 @@
1
- import "./decorators.tsp";
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.5",
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/versioning.tsp",
21
+ "tspMain": "lib/main.tsp",
22
22
  "exports": {
23
23
  ".": {
24
24
  "types": "./dist/src/index.d.ts",