@microsoft/typespec-msgraph 0.0.1-Preview.8 → 0.0.1-Preview.9
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/components/annotations.d.ts +4 -1
- package/dist/src/components/annotations.d.ts.map +1 -1
- package/dist/src/components/annotations.js +18 -1
- package/dist/src/components/annotations.js.map +1 -1
- package/dist/src/components/index.js +3 -3
- package/dist/src/components/index.js.map +1 -1
- package/dist/src/components/schema-element.d.ts.map +1 -1
- package/dist/src/components/schema-element.js +3 -2
- package/dist/src/components/schema-element.js.map +1 -1
- package/dist/src/decorators/allowed-values.d.ts +13 -0
- package/dist/src/decorators/allowed-values.d.ts.map +1 -0
- package/dist/src/decorators/allowed-values.js +35 -0
- package/dist/src/decorators/allowed-values.js.map +1 -0
- package/dist/src/decorators/filter.d.ts +1 -1
- package/dist/src/decorators/filter.d.ts.map +1 -1
- package/dist/src/decorators/filter.js +4 -4
- package/dist/src/decorators/filter.js.map +1 -1
- package/dist/src/decorators/graph-route.d.ts +8 -1
- package/dist/src/decorators/graph-route.d.ts.map +1 -1
- package/dist/src/decorators/graph-route.js +18 -9
- package/dist/src/decorators/graph-route.js.map +1 -1
- package/dist/src/decorators/index.d.ts +2 -0
- package/dist/src/decorators/index.d.ts.map +1 -1
- package/dist/src/decorators/index.js +2 -0
- package/dist/src/decorators/index.js.map +1 -1
- package/dist/src/decorators/public-namespace.d.ts +10 -0
- package/dist/src/decorators/public-namespace.d.ts.map +1 -0
- package/dist/src/decorators/public-namespace.js +16 -0
- package/dist/src/decorators/public-namespace.js.map +1 -0
- package/dist/src/emitter.d.ts +2 -1
- package/dist/src/emitter.d.ts.map +1 -1
- package/dist/src/emitter.js +3 -1
- package/dist/src/emitter.js.map +1 -1
- package/dist/src/entities/annotations.d.ts +6 -0
- package/dist/src/entities/annotations.d.ts.map +1 -1
- package/dist/src/entities/annotations.js +19 -0
- package/dist/src/entities/annotations.js.map +1 -1
- package/dist/src/entities/model.d.ts +5 -0
- package/dist/src/entities/model.d.ts.map +1 -1
- package/dist/src/entities/model.js +3 -2
- package/dist/src/entities/model.js.map +1 -1
- package/dist/src/entities/namespace.d.ts +3 -1
- package/dist/src/entities/namespace.d.ts.map +1 -1
- package/dist/src/entities/namespace.js +11 -15
- package/dist/src/entities/namespace.js.map +1 -1
- package/dist/src/entities/operation.js +1 -1
- package/dist/src/entities/operation.js.map +1 -1
- package/dist/src/lib.d.ts +33 -2
- package/dist/src/lib.d.ts.map +1 -1
- package/dist/src/lib.js +20 -1
- package/dist/src/lib.js.map +1 -1
- package/dist/src/linter.d.ts.map +1 -1
- package/dist/src/linter.js +4 -0
- package/dist/src/linter.js.map +1 -1
- package/dist/src/rules/allowed-values.d.ts +6 -0
- package/dist/src/rules/allowed-values.d.ts.map +1 -0
- package/dist/src/rules/allowed-values.js +59 -0
- package/dist/src/rules/allowed-values.js.map +1 -0
- package/dist/src/rules/graph-route.d.ts +1 -0
- package/dist/src/rules/graph-route.d.ts.map +1 -1
- package/dist/src/rules/graph-route.js +61 -12
- package/dist/src/rules/graph-route.js.map +1 -1
- package/dist/src/rules/index.d.ts +3 -0
- package/dist/src/rules/index.d.ts.map +1 -1
- package/dist/src/rules/index.js +3 -0
- package/dist/src/rules/index.js.map +1 -1
- package/dist/src/rules/namespace.d.ts +3 -0
- package/dist/src/rules/namespace.d.ts.map +1 -0
- package/dist/src/rules/namespace.js +58 -0
- package/dist/src/rules/namespace.js.map +1 -0
- package/dist/src/utils.d.ts +1 -11
- package/dist/src/utils.d.ts.map +1 -1
- package/dist/src/utils.js +49 -29
- package/dist/src/utils.js.map +1 -1
- package/lib/decorators.tsp +79 -65
- package/lib/deployment.tsp +1 -1
- package/lib/lib.tsp +1 -1
- package/lib/porcelain.tsp +4 -4
- package/lib/responses.tsp +6 -6
- package/lib/shared-models.tsp +4 -3
- package/package.json +11 -11
package/dist/src/rules/index.js
CHANGED
|
@@ -11,7 +11,9 @@ export * from "./expand.js";
|
|
|
11
11
|
export * from "./extends-on-same-type.js";
|
|
12
12
|
export * from "./filter.js";
|
|
13
13
|
export * from "./function.js";
|
|
14
|
+
export * from "./graph-route.js";
|
|
14
15
|
export * from "./has-stream.js";
|
|
16
|
+
export * from "./namespace.js";
|
|
15
17
|
export * from "./open.js";
|
|
16
18
|
export * from "./operation-inside-interface.js";
|
|
17
19
|
export * from "./order-by.js";
|
|
@@ -20,5 +22,6 @@ export * from "./required-for-create.js";
|
|
|
20
22
|
export * from "./search.js";
|
|
21
23
|
export * from "./skip.js";
|
|
22
24
|
export * from "./top.js";
|
|
25
|
+
export * from "./allowed-values.js";
|
|
23
26
|
export * from "./graph-route.js";
|
|
24
27
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/rules/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,oDAAoD,CAAC;AACnE,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,qCAAqC,CAAC;AACpD,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,iCAAiC,CAAC;AAChD,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/rules/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,oDAAoD,CAAC;AACnE,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,qCAAqC,CAAC;AACpD,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,iCAAiC,CAAC;AAChD,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"namespace.d.ts","sourceRoot":"","sources":["../../../src/rules/namespace.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,uBAAuB,mCA2BlC,CAAC;AAEH,eAAO,MAAM,8BAA8B,mCA6BzC,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { createRule } from "@typespec/lint";
|
|
2
|
+
import { reportDiagnostic } from "../lib.js";
|
|
3
|
+
import { getPublicNamespaceName, hasPublicNamespace } from "../index.js";
|
|
4
|
+
import { getNamespaceFullName } from "@typespec/compiler";
|
|
5
|
+
export const namespaceIsRequiredRule = createRule({
|
|
6
|
+
name: "namespace-is-required",
|
|
7
|
+
create({ program }) {
|
|
8
|
+
return {
|
|
9
|
+
model: (model) => {
|
|
10
|
+
if (model.namespace && model.namespace.name) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
while (model.baseModel) {
|
|
14
|
+
model = model.baseModel;
|
|
15
|
+
if (model.namespace && model.namespace.name) {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
reportDiagnostic(program, {
|
|
20
|
+
code: "element-missing-dependencies",
|
|
21
|
+
target: model,
|
|
22
|
+
messageId: "modelMissingNamespace",
|
|
23
|
+
format: {
|
|
24
|
+
model: model.name,
|
|
25
|
+
},
|
|
26
|
+
});
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
},
|
|
30
|
+
});
|
|
31
|
+
export const invalidPublicNamespaceNameRule = createRule({
|
|
32
|
+
name: "invalid-public-namespace-name",
|
|
33
|
+
create({ program }) {
|
|
34
|
+
return {
|
|
35
|
+
namespace: (namespace) => {
|
|
36
|
+
if (!hasPublicNamespace(program, namespace)) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
// publicNamespace name should either be "microsoft.graph"
|
|
40
|
+
// or match the pattern "microsoft.graph.<string_token>"
|
|
41
|
+
const namespaceRegex = /microsoft\.graph\.[\w]+/;
|
|
42
|
+
const publicNamespaceName = getPublicNamespaceName(program, namespace);
|
|
43
|
+
if (publicNamespaceName === "microsoft.graph" || namespaceRegex.test(publicNamespaceName)) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
reportDiagnostic(program, {
|
|
47
|
+
code: "decorator-invalid-use",
|
|
48
|
+
target: namespace,
|
|
49
|
+
messageId: "invalidPublicNamespaceName",
|
|
50
|
+
format: {
|
|
51
|
+
namespace: getNamespaceFullName(namespace),
|
|
52
|
+
},
|
|
53
|
+
});
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
},
|
|
57
|
+
});
|
|
58
|
+
//# sourceMappingURL=namespace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"namespace.js","sourceRoot":"","sources":["../../../src/rules/namespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE1D,MAAM,CAAC,MAAM,uBAAuB,GAAG,UAAU,CAAC;IAChD,IAAI,EAAE,uBAAuB;IAC7B,MAAM,CAAC,EAAE,OAAO,EAAE;QAChB,OAAO;YACL,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;gBACf,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE;oBAC3C,OAAO;iBACR;gBAED,OAAO,KAAK,CAAC,SAAS,EAAE;oBACtB,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC;oBACxB,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE;wBAC3C,OAAO;qBACR;iBACF;gBAED,gBAAgB,CAAC,OAAO,EAAE;oBACxB,IAAI,EAAE,8BAA8B;oBACpC,MAAM,EAAE,KAAK;oBACb,SAAS,EAAE,uBAAuB;oBAClC,MAAM,EAAE;wBACN,KAAK,EAAE,KAAK,CAAC,IAAI;qBAClB;iBACF,CAAC,CAAC;YACL,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,8BAA8B,GAAG,UAAU,CAAC;IACvD,IAAI,EAAE,+BAA+B;IACrC,MAAM,CAAC,EAAE,OAAO,EAAE;QAChB,OAAO;YACL,SAAS,EAAE,CAAC,SAAS,EAAE,EAAE;gBACvB,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE;oBAC3C,OAAO;iBACR;gBAED,0DAA0D;gBAC1D,wDAAwD;gBACxD,MAAM,cAAc,GAAG,yBAAyB,CAAC;gBACjD,MAAM,mBAAmB,GAAG,sBAAsB,CAAC,OAAO,EAAE,SAAS,CAAE,CAAC;gBAExE,IAAI,mBAAmB,KAAK,iBAAiB,IAAI,cAAc,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE;oBACzF,OAAO;iBACR;gBAED,gBAAgB,CAAC,OAAO,EAAE;oBACxB,IAAI,EAAE,uBAAuB;oBAC7B,MAAM,EAAE,SAAS;oBACjB,SAAS,EAAE,4BAA4B;oBACvC,MAAM,EAAE;wBACN,SAAS,EAAE,oBAAoB,CAAC,SAAS,CAAC;qBAC3C;iBACF,CAAC,CAAC;YACL,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
|
package/dist/src/utils.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ export interface MsGraphInterface {
|
|
|
6
6
|
}
|
|
7
7
|
export declare function getNameForType(program: Program, type: Type): string;
|
|
8
8
|
export declare function getNameForModelType(program: Program, type: Model | Scalar): string;
|
|
9
|
+
export declare function getCSDLPrimitiveType(typespecType: string): string;
|
|
9
10
|
export declare function getIdForType(program: Program, type: Type): string;
|
|
10
11
|
export declare function getNavigationTypeId(program: Program, getOperation: Operation): string;
|
|
11
12
|
export declare function getInterfacesOfKinds(program: Program, navigationSources: Map<string, Interface>, kinds: string[]): Map<string, MsGraphInterface>;
|
|
@@ -39,17 +40,6 @@ export declare function isExcludedLibraryType(program: Program, type: Model | Sc
|
|
|
39
40
|
export declare function isNavigationProperty(program: Program, property: ModelProperty): boolean;
|
|
40
41
|
export declare function isNavigationSource(theInterface: Interface): boolean;
|
|
41
42
|
export declare function isTopLevelNavigationSource(program: Program, theInterface: MsGraphInterface): boolean;
|
|
42
|
-
/**
|
|
43
|
-
* Check if a @graphRoute returns a single resource of a collection.
|
|
44
|
-
*
|
|
45
|
-
* `Example`
|
|
46
|
-
*
|
|
47
|
-
* @graphRoute("users/{id}")
|
|
48
|
-
* interface UsersById extends Resource<user> {
|
|
49
|
-
* get is GraphOps.GetResource;
|
|
50
|
-
* }
|
|
51
|
-
*/
|
|
52
|
-
export declare function isCollectionResource(program: Program, theInterface: MsGraphInterface): boolean;
|
|
53
43
|
export declare function getInterfaceNavigationSourceType(program: Program, theInterface: Interface): Model | undefined;
|
|
54
44
|
export declare function getNavigationSourceType(program: Program, operation: Operation): Model | undefined;
|
|
55
45
|
//# sourceMappingURL=utils.d.ts.map
|
package/dist/src/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EAEJ,SAAS,EAET,KAAK,EACL,aAAa,EACb,SAAS,EACT,SAAS,EACT,OAAO,EACP,MAAM,EACN,IAAI,EACJ,KAAK,EACN,MAAM,oBAAoB,CAAC;AAG5B,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,SAAS,CAAC;IACxB,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,GAAG,MAAM,CAqBnE;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,GAAG,MAAM,UAyCzE;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EAEJ,SAAS,EAET,KAAK,EACL,aAAa,EACb,SAAS,EACT,SAAS,EACT,OAAO,EACP,MAAM,EACN,IAAI,EACJ,KAAK,EACN,MAAM,oBAAoB,CAAC;AAG5B,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,SAAS,CAAC;IACxB,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,GAAG,MAAM,CAqBnE;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,GAAG,MAAM,UAyCzE;AAED,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,UAqCxD;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,GAAG,MAAM,CAsBjE;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,GAAG,MAAM,CAOrF;AAED,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,OAAO,EAChB,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,EACzC,KAAK,EAAE,MAAM,EAAE,GACd,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAwC/B;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,GAAG,MAAM,CAgBxE;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAOpE;AAgBD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,CAEzD;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,OAAO,EAChB,aAAa,EAAE,MAAM,GAAG,IAAI,EAC5B,YAAY,EAAE,SAAS,GAAG,SAAS,GAClC,MAAM,GAAG,SAAS,CAMpB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAoBtE;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,KAAK,GAAG,MAAM,GAAG,SAAS,GAAG,aAAa,GAAG,SAAS,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,GAC1F,MAAM,CAsBR;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,KAAK,GAAG,MAAM,GAAG,SAAS,GAAG,aAAa,GAAG,SAAS,GAAG,SAAS,GAAG,IAAI,GAC9E,OAAO,CAOT;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,KAAK,GAAG,MAAM,GAAG,SAAS,GAAG,aAAa,GAAG,SAAS,GAAG,SAAS,GAAG,IAAI,GAC9E,OAAO,CAIT;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,WAuB7E;AAED,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,SAAS,GAAG,OAAO,CAEnE;AAED,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,gBAAgB,GAC7B,OAAO,CAET;AAID,wBAAgB,gCAAgC,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,GAAG,KAAK,GAAE,SAAS,CAQ5G;AAGD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,GAAG,KAAK,GAAE,SAAS,CAE/F"}
|
package/dist/src/utils.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { getNamespaceFullName, isArrayModelType, } from "@typespec/compiler";
|
|
2
|
-
import { getEntity,
|
|
2
|
+
import { getEntity, getGraphRoutePaths, getPublicNamespaceName, hasPublicNamespace, isEntity } from "./decorators/index.js";
|
|
3
3
|
export function getNameForType(program, type) {
|
|
4
4
|
switch (type.kind) {
|
|
5
5
|
case "Union":
|
|
@@ -62,15 +62,55 @@ export function getNameForModelType(program, type) {
|
|
|
62
62
|
}
|
|
63
63
|
return `Collection(${getPropertyTypeName(program, type.indexer.value)})`;
|
|
64
64
|
}
|
|
65
|
+
export function getCSDLPrimitiveType(typespecType) {
|
|
66
|
+
switch (typespecType) {
|
|
67
|
+
case "string":
|
|
68
|
+
return "String";
|
|
69
|
+
case "int8":
|
|
70
|
+
return "Byte";
|
|
71
|
+
case "int16":
|
|
72
|
+
return "Int16";
|
|
73
|
+
case "int32":
|
|
74
|
+
return "Int32";
|
|
75
|
+
case "int64":
|
|
76
|
+
return "Int64";
|
|
77
|
+
case "integer":
|
|
78
|
+
return "Int64";
|
|
79
|
+
case "float32":
|
|
80
|
+
return "Single";
|
|
81
|
+
case "float64":
|
|
82
|
+
return "Double";
|
|
83
|
+
case "decimal":
|
|
84
|
+
return "Decimal";
|
|
85
|
+
case "guid":
|
|
86
|
+
return "Guid";
|
|
87
|
+
case "plainDate":
|
|
88
|
+
return "Date";
|
|
89
|
+
case "plainTime":
|
|
90
|
+
return "TimeOfDay";
|
|
91
|
+
case "zonedDateTime":
|
|
92
|
+
return "DateTimeOffset";
|
|
93
|
+
case "duration":
|
|
94
|
+
return "Duration";
|
|
95
|
+
case "boolean":
|
|
96
|
+
return "Bool";
|
|
97
|
+
case "stream":
|
|
98
|
+
return "Stream";
|
|
99
|
+
default:
|
|
100
|
+
return typespecType;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
65
103
|
export function getIdForType(program, type) {
|
|
66
104
|
switch (type.kind) {
|
|
67
105
|
case "Namespace":
|
|
68
|
-
return
|
|
106
|
+
return hasPublicNamespace(program, type)
|
|
107
|
+
? getPublicNamespaceName(program, type)
|
|
108
|
+
: getNamespaceFullName(type);
|
|
69
109
|
case "Model":
|
|
70
110
|
case "Enum":
|
|
71
111
|
case "Operation":
|
|
72
112
|
case "Interface":
|
|
73
|
-
return `${
|
|
113
|
+
return `${getIdForType(program, type.namespace)}.${type.name}`;
|
|
74
114
|
case "String":
|
|
75
115
|
case "Number":
|
|
76
116
|
case "Boolean":
|
|
@@ -98,21 +138,14 @@ export function getInterfacesOfKinds(program, navigationSources, kinds) {
|
|
|
98
138
|
// if source interfaces DO NOT have the kinds.
|
|
99
139
|
return;
|
|
100
140
|
}
|
|
101
|
-
const
|
|
102
|
-
|
|
103
|
-
if (!graphRoutePath) {
|
|
141
|
+
const graphRoutePaths = getGraphRoutePaths(program, theInterface);
|
|
142
|
+
if (!graphRoutePaths) {
|
|
104
143
|
return;
|
|
105
144
|
}
|
|
106
|
-
|
|
107
|
-
graphRoutes = graphRoutePath;
|
|
108
|
-
}
|
|
109
|
-
else {
|
|
110
|
-
graphRoutes = [graphRoutePath];
|
|
111
|
-
}
|
|
112
|
-
if (!graphRoutes.length) {
|
|
145
|
+
if (!graphRoutePaths.length) {
|
|
113
146
|
return;
|
|
114
147
|
}
|
|
115
|
-
|
|
148
|
+
graphRoutePaths.forEach((graphRoute) => {
|
|
116
149
|
const path = removeRoutePathParams(graphRoute);
|
|
117
150
|
if (!path) {
|
|
118
151
|
return;
|
|
@@ -231,12 +264,12 @@ export function isExcludedCoreType(program, type) {
|
|
|
231
264
|
// https://github.com/Azure/typespec-azure/issues/801#issuecomment-1194454247
|
|
232
265
|
//
|
|
233
266
|
const nsName = getNamespaceName(program, type);
|
|
234
|
-
const excludedNamespaces = ["TypeSpec"];
|
|
267
|
+
const excludedNamespaces = ["TypeSpec", "MsGraph"];
|
|
235
268
|
return excludedNamespaces.find((ns) => nsName.startsWith(ns)) !== undefined;
|
|
236
269
|
}
|
|
237
270
|
export function isExcludedLibraryType(program, type) {
|
|
238
271
|
const nsName = getNamespaceName(program, type);
|
|
239
|
-
const excludedNamespaces = ["TypeSpec", "
|
|
272
|
+
const excludedNamespaces = ["TypeSpec", "MsGraph"];
|
|
240
273
|
return excludedNamespaces.find((ns) => nsName.startsWith(ns)) !== undefined;
|
|
241
274
|
}
|
|
242
275
|
export function isNavigationProperty(program, property) {
|
|
@@ -266,19 +299,6 @@ export function isNavigationSource(theInterface) {
|
|
|
266
299
|
export function isTopLevelNavigationSource(program, theInterface) {
|
|
267
300
|
return removeRoutePathParams(theInterface.path).split("/").length === 1;
|
|
268
301
|
}
|
|
269
|
-
/**
|
|
270
|
-
* Check if a @graphRoute returns a single resource of a collection.
|
|
271
|
-
*
|
|
272
|
-
* `Example`
|
|
273
|
-
*
|
|
274
|
-
* @graphRoute("users/{id}")
|
|
275
|
-
* interface UsersById extends Resource<user> {
|
|
276
|
-
* get is GraphOps.GetResource;
|
|
277
|
-
* }
|
|
278
|
-
*/
|
|
279
|
-
export function isCollectionResource(program, theInterface) {
|
|
280
|
-
return (isTopLevelNavigationSource(program, theInterface) && theInterface.path.split("/").length === 2);
|
|
281
|
-
}
|
|
282
302
|
// Get the type returned by all operations in an interface representing a navigation source.
|
|
283
303
|
// This is the 'T' in Collection<T> and friends.
|
|
284
304
|
export function getInterfaceNavigationSourceType(program, theInterface) {
|
package/dist/src/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,oBAAoB,EAEpB,gBAAgB,GASjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
|
package/lib/decorators.tsp
CHANGED
|
@@ -14,6 +14,31 @@ extern dec abstract(target: Model);
|
|
|
14
14
|
*/
|
|
15
15
|
extern dec action(target: Operation, name?: valueof string);
|
|
16
16
|
|
|
17
|
+
/**
|
|
18
|
+
* `@additionalQueryParameters` - Appends a key=value pair to the query string of the mapped internal URL for all models defined within the namespace.
|
|
19
|
+
*
|
|
20
|
+
* `@additionalQueryParameters` can only be applied to namespaces
|
|
21
|
+
*/
|
|
22
|
+
extern dec additionalQueryParameters(target: Namespace, name: valueof string, value: valueof string);
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* `@agsAttribute` - Allows all AGS CSDL extensions that are not yet modelled explicitly in TypeSpec to be maintained
|
|
26
|
+
*
|
|
27
|
+
* `@agsAttribute` - Applies to models.
|
|
28
|
+
*/
|
|
29
|
+
extern dec agsAttribute(
|
|
30
|
+
target: Model | ModelProperty | Enum | EnumMember | Operation | Interface,
|
|
31
|
+
name: valueof string,
|
|
32
|
+
value: valueof string
|
|
33
|
+
);
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* `@allowedValues` - mark model property with allowedValues.
|
|
37
|
+
*
|
|
38
|
+
* `@allowedValues` - can only be applied to model properties.
|
|
39
|
+
*/
|
|
40
|
+
extern dec allowedValues(target: ModelProperty, ...values: valueof unknown[]);
|
|
41
|
+
|
|
17
42
|
/**
|
|
18
43
|
* `@alternateKey` - mark a model property as an alternateKey
|
|
19
44
|
*
|
|
@@ -49,6 +74,13 @@ extern dec contains(target: ModelProperty);
|
|
|
49
74
|
*/
|
|
50
75
|
extern dec count(target: Operation);
|
|
51
76
|
|
|
77
|
+
/**
|
|
78
|
+
* `@deltaCollection` - mark a model as representing a delta paged collection.
|
|
79
|
+
*
|
|
80
|
+
* `@deltaCollection` can only be applied to models.
|
|
81
|
+
*/
|
|
82
|
+
extern dec deltaCollection(target: Model);
|
|
83
|
+
|
|
52
84
|
/**
|
|
53
85
|
* `@deprecatedDefinition` - Allow us create a reusable deprecation definition.
|
|
54
86
|
* `@deprecatedDefinition` - Applies only to namespaces.
|
|
@@ -82,10 +114,10 @@ extern dec expand(target: Operation, property: valueof string, ...otherPropertie
|
|
|
82
114
|
* `@filter` - Applies to: get operations that return collections of @entity or @complex models.
|
|
83
115
|
* Indicates that the get operation supports OData $filter query parameter.
|
|
84
116
|
*
|
|
85
|
-
* `properties` -
|
|
117
|
+
* `properties` - array of property names in the model returned
|
|
86
118
|
* from the get operation that can be used in $filter query parameter.
|
|
87
119
|
*/
|
|
88
|
-
extern dec filter(target: Operation, properties: valueof string);
|
|
120
|
+
extern dec filter(target: Operation, property: valueof string, ...properties: valueof string[]);
|
|
89
121
|
|
|
90
122
|
|
|
91
123
|
/**
|
|
@@ -102,6 +134,16 @@ extern dec flags(target: Enum);
|
|
|
102
134
|
*/
|
|
103
135
|
extern dec function(target: Operation, name?: valueof string);
|
|
104
136
|
|
|
137
|
+
/**
|
|
138
|
+
* `@graphRoute` - mark an interface or operation with an HTTP route.
|
|
139
|
+
*
|
|
140
|
+
* `@graphRoute` - can only be applied to interfaces or operations.
|
|
141
|
+
*/
|
|
142
|
+
// TODO: Using @graphRoute on an operation currently does not work due to the following TypeSpec core issue
|
|
143
|
+
// https://github.com/microsoft/typespec/issues/2106
|
|
144
|
+
// Disabling all related features while we await the outcome.
|
|
145
|
+
extern dec graphRoute(target: Interface /* | Operation */, path: valueof string);
|
|
146
|
+
|
|
105
147
|
/**
|
|
106
148
|
* `@hasStream` - indicates that an `@entity` model has a stream.
|
|
107
149
|
*
|
|
@@ -109,6 +151,13 @@ extern dec function(target: Operation, name?: valueof string);
|
|
|
109
151
|
*/
|
|
110
152
|
extern dec hasStream(target: Model, ...mediaTypes: valueof string[]);
|
|
111
153
|
|
|
154
|
+
/**
|
|
155
|
+
* `@immutable` - mark a model property as immutable.
|
|
156
|
+
*
|
|
157
|
+
* `@immutable` can only be applied to model properties.
|
|
158
|
+
*/
|
|
159
|
+
extern dec immutable(target: ModelProperty);
|
|
160
|
+
|
|
112
161
|
/**
|
|
113
162
|
* `@open` - mark a model type as open
|
|
114
163
|
*
|
|
@@ -134,6 +183,13 @@ extern dec operationParameters(target: Model);
|
|
|
134
183
|
*/
|
|
135
184
|
extern dec orderBy(target: Operation, property: valueof string, ...otherProperties: valueof string[]);
|
|
136
185
|
|
|
186
|
+
/**
|
|
187
|
+
* `@pagedCollection` - mark a model as representing a paged collection.
|
|
188
|
+
*
|
|
189
|
+
* `@pagedCollection` can only be applied to models.
|
|
190
|
+
*/
|
|
191
|
+
extern dec pagedCollection(target: Model);
|
|
192
|
+
|
|
137
193
|
/**
|
|
138
194
|
* `@privatePreview` - Allow us define a privatePreview element.
|
|
139
195
|
* `@privatePreview` - Applies to models, model properties, enums, enum members, namespaces and operations.
|
|
@@ -152,20 +208,22 @@ extern dec privatePreviewDefinition(
|
|
|
152
208
|
name: valueof string,
|
|
153
209
|
announcementDate: valueof string,
|
|
154
210
|
removalDate: valueof string,
|
|
155
|
-
owner
|
|
211
|
+
owner?: valueof string
|
|
156
212
|
);
|
|
157
213
|
|
|
158
214
|
/**
|
|
159
|
-
* `@
|
|
160
|
-
*
|
|
215
|
+
* `@privileged` - mark the entity as privileged
|
|
216
|
+
*
|
|
217
|
+
* `@privileged` can be applied to Model, ModelProperty, Enum, EnumMember, Operation, Namespace.
|
|
161
218
|
*/
|
|
162
|
-
extern dec
|
|
219
|
+
extern dec privileged(target: Model | ModelProperty | Enum | EnumMember | Operation | Namespace);
|
|
163
220
|
|
|
164
221
|
/**
|
|
165
|
-
* `@
|
|
166
|
-
*
|
|
222
|
+
* `@publicNamespace` - defines the namespace to be used in generating CSDL output for all elements contained within the namespace
|
|
223
|
+
*
|
|
224
|
+
* `@publicNamespace` can only be applied to namespaces.
|
|
167
225
|
*/
|
|
168
|
-
extern dec
|
|
226
|
+
extern dec publicNamespace(target: Namespace, name: valueof string);
|
|
169
227
|
|
|
170
228
|
/**
|
|
171
229
|
* `@readOnly` - mark a model property as readOnly property
|
|
@@ -189,6 +247,18 @@ extern dec references(target: ModelProperty);
|
|
|
189
247
|
*/
|
|
190
248
|
extern dec requiredForCreate(target: ModelProperty);
|
|
191
249
|
|
|
250
|
+
/**
|
|
251
|
+
* `@search` - Applies to: get operations that return collections.
|
|
252
|
+
* Indicates that the get operation supports the OData $search query parameter.
|
|
253
|
+
*/
|
|
254
|
+
extern dec search(target: Operation);
|
|
255
|
+
|
|
256
|
+
/**
|
|
257
|
+
* `@skip` - Applies to: get operations that return collections.
|
|
258
|
+
* Indicates that the get operation supports the OData $skip query parameter.
|
|
259
|
+
*/
|
|
260
|
+
extern dec skip(target: Operation);
|
|
261
|
+
|
|
192
262
|
/**
|
|
193
263
|
* `@top` - Applies to: get operations that return collections.
|
|
194
264
|
* Indicates that the get operation supports the OData $top query parameter.
|
|
@@ -202,24 +272,6 @@ extern dec top(target: Operation);
|
|
|
202
272
|
*/
|
|
203
273
|
extern dec writeOnly(target: ModelProperty);
|
|
204
274
|
|
|
205
|
-
/**
|
|
206
|
-
* `@additionalQueryParameters` - Appends a key=value pair to the query string of the mapped internal URL for all models defined within the namespace.
|
|
207
|
-
*
|
|
208
|
-
* `@additionalQueryParameters` can only be applied to namespaces
|
|
209
|
-
*/
|
|
210
|
-
extern dec additionalQueryParameters(target: Namespace, name: valueof string, value: valueof string);
|
|
211
|
-
|
|
212
|
-
/**
|
|
213
|
-
* `@agsAttribute` - Allows all AGS CSDL extensions that are not yet modelled explicitly in TypeSpec to be maintained
|
|
214
|
-
*
|
|
215
|
-
* `@agsAttribute` - Applies to models.
|
|
216
|
-
*/
|
|
217
|
-
extern dec agsAttribute(
|
|
218
|
-
target: Model | ModelProperty | Enum | EnumMember | Operation | Interface,
|
|
219
|
-
name: valueof string,
|
|
220
|
-
value: valueof string
|
|
221
|
-
);
|
|
222
|
-
|
|
223
275
|
/**
|
|
224
276
|
* `@isOwner` - specify that this workload is the primary owner of this entity model
|
|
225
277
|
*
|
|
@@ -227,13 +279,6 @@ extern dec agsAttribute(
|
|
|
227
279
|
*/
|
|
228
280
|
extern dec isOwner(target: Model | ModelProperty);
|
|
229
281
|
|
|
230
|
-
/**
|
|
231
|
-
* `@privileged` - mark the entity as privileged
|
|
232
|
-
*
|
|
233
|
-
* `@privileged` can be applied to Model, ModelProperty, Enum, EnumMember, Operation, Namespace.
|
|
234
|
-
*/
|
|
235
|
-
extern dec privileged(target: Model | ModelProperty | Enum | EnumMember | Operation | Namespace);
|
|
236
|
-
|
|
237
282
|
/**
|
|
238
283
|
* `@workloadName` - specifies the name used by the underlying workload
|
|
239
284
|
*
|
|
@@ -253,34 +298,3 @@ extern dec workloadNameMsa(
|
|
|
253
298
|
target: Model | ModelProperty | Enum | EnumMember,
|
|
254
299
|
workloadNameMsa: valueof string
|
|
255
300
|
);
|
|
256
|
-
|
|
257
|
-
/**
|
|
258
|
-
* `@pagedCollection` - mark a model as representing a paged collection.
|
|
259
|
-
*
|
|
260
|
-
* `@pagedCollection` can only be applied to models.
|
|
261
|
-
*/
|
|
262
|
-
extern dec pagedCollection(target: Model);
|
|
263
|
-
|
|
264
|
-
/**
|
|
265
|
-
* `@deltaCollection` - mark a model as representing a delta paged collection.
|
|
266
|
-
*
|
|
267
|
-
* `@deltaCollection` can only be applied to models.
|
|
268
|
-
*/
|
|
269
|
-
extern dec deltaCollection(target: Model);
|
|
270
|
-
|
|
271
|
-
/**
|
|
272
|
-
* `@graphRoute` - mark an interface or operation with an HTTP route.
|
|
273
|
-
*
|
|
274
|
-
* `@graphRoute` - can only be applied to interfaces or operations.
|
|
275
|
-
*/
|
|
276
|
-
// TODO: Using @graphRoute on an operation currently does not work due to the following TypeSpec core issue
|
|
277
|
-
// https://github.com/microsoft/typespec/issues/2106
|
|
278
|
-
// Disabling all related features while we await the outcome.
|
|
279
|
-
extern dec graphRoute(target: Interface /* | Operation */, path: valueof string);
|
|
280
|
-
|
|
281
|
-
/**
|
|
282
|
-
* `@immutable` - mark a model property as immutable.
|
|
283
|
-
*
|
|
284
|
-
* `@immutable` can only be applied to model properties.
|
|
285
|
-
*/
|
|
286
|
-
extern dec immutable(target: ModelProperty);
|
package/lib/deployment.tsp
CHANGED
package/lib/lib.tsp
CHANGED
package/lib/porcelain.tsp
CHANGED
|
@@ -8,11 +8,11 @@ import "./shared-models.tsp";
|
|
|
8
8
|
import "./responses.tsp";
|
|
9
9
|
|
|
10
10
|
using TypeSpec.Http;
|
|
11
|
-
using
|
|
12
|
-
using
|
|
13
|
-
using
|
|
11
|
+
using MsGraph;
|
|
12
|
+
using MsGraph.SharedModels;
|
|
13
|
+
using MsGraph.Responses;
|
|
14
14
|
|
|
15
|
-
namespace
|
|
15
|
+
namespace MsGraph;
|
|
16
16
|
|
|
17
17
|
namespace Foundations {
|
|
18
18
|
|
package/lib/responses.tsp
CHANGED
|
@@ -7,14 +7,14 @@ import "@microsoft/typespec-msgraph";
|
|
|
7
7
|
import "./shared-models.tsp";
|
|
8
8
|
|
|
9
9
|
using TypeSpec.Http;
|
|
10
|
-
using
|
|
11
|
-
using
|
|
10
|
+
using MsGraph;
|
|
11
|
+
using MsGraph.SharedModels;
|
|
12
12
|
|
|
13
13
|
// Raw body models represent the content of the response body, without any additional metadata.
|
|
14
14
|
// Note that these are primarily marker types. CSDL has no notion of what actual body content is returned in such types,
|
|
15
15
|
// but by passing markers through, HIDI can translate to OpenAPI.
|
|
16
16
|
// The content of the types exists for other future emitters that run directly off TypeSpec.
|
|
17
|
-
namespace
|
|
17
|
+
namespace MsGraph.Responses.Bodies {
|
|
18
18
|
|
|
19
19
|
@error
|
|
20
20
|
model ErrorBody {
|
|
@@ -32,18 +32,18 @@ namespace TypeSpec.MsGraph.Responses.Bodies {
|
|
|
32
32
|
|
|
33
33
|
@pagedCollection
|
|
34
34
|
model PagedCollectionBody<TResource> is CollectionBody<TResource> {
|
|
35
|
-
`@odata.nextLink`?: url;
|
|
35
|
+
`@odata.nextLink`?: MsGraph.SharedModels.url;
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
@pagedCollection
|
|
39
39
|
@deltaCollection
|
|
40
40
|
model DeltaCollectionBody<TResource> is PagedCollectionBody<TResource> {
|
|
41
|
-
`@odata.deltaLink`?: url;
|
|
41
|
+
`@odata.deltaLink`?: MsGraph.SharedModels.url;
|
|
42
42
|
}
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
// Response models represent the response as a whole, including the status code, headers, and body.
|
|
46
|
-
namespace
|
|
46
|
+
namespace MsGraph.Responses {
|
|
47
47
|
@doc("Response to represent a Microsoft Graph collection response payload.")
|
|
48
48
|
model CollectionResponse<TResource, TStatus = 200, TBody = Bodies.CollectionBody<TResource>>
|
|
49
49
|
is Http.Response<TStatus> {
|
package/lib/shared-models.tsp
CHANGED
|
@@ -4,14 +4,15 @@
|
|
|
4
4
|
// -------------------------------------------------
|
|
5
5
|
import "@microsoft/typespec-msgraph";
|
|
6
6
|
|
|
7
|
-
using
|
|
7
|
+
using MsGraph;
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
@publicNamespace("microsoft.graph")
|
|
10
|
+
namespace MsGraph.SharedModels;
|
|
10
11
|
|
|
11
12
|
// TODO: Spec how to deal with specified and unspecified ultimate base entities w.r.t. AGS runtime replacement policies. See #140
|
|
12
13
|
@doc("The primary entity base model for Microsoft Graph.")
|
|
13
14
|
@entity
|
|
14
|
-
model
|
|
15
|
+
model entity {
|
|
15
16
|
@key id: string;
|
|
16
17
|
}
|
|
17
18
|
|