@azure-tools/typespec-azure-core 0.62.0-dev.4 → 0.62.0-dev.5

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.
@@ -1 +1 @@
1
- {"version":3,"file":"unique-items.d.ts","sourceRoot":"","sources":["../../../src/decorators/unique-items.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4D,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAEpG,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAG/E,eAAO,MAAM,YAAY,EAAE,oBAwB1B,CAAC;AAEF,eAAO,MAAO,cAAc,sFAAE,cAAc,qFAE3C,CAAC"}
1
+ {"version":3,"file":"unique-items.d.ts","sourceRoot":"","sources":["../../../src/decorators/unique-items.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,IAAI,EACL,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAG/E,eAAO,MAAM,YAAY,EAAE,oBA0B1B,CAAC;AAEF,eAAO,MAAO,cAAc,sFAAE,cAAc,qFAE3C,CAAC"}
@@ -1,10 +1,10 @@
1
- import { isArrayModelType } from "@typespec/compiler";
1
+ import { isArrayModelType, isNullType, } from "@typespec/compiler";
2
2
  import { useStateMap } from "@typespec/compiler/utils";
3
3
  import { AzureCoreStateKeys, reportDiagnostic } from "../lib.js";
4
4
  export const $uniqueItems = (context, entity) => {
5
5
  const { program } = context;
6
6
  if (entity.kind === "ModelProperty") {
7
- if (entity.type.kind !== "Model" || !isArrayModelType(program, entity.type)) {
7
+ if (!isTypeOrNullableType(entity.type, (t) => t.kind === "Model" && isArrayModelType(program, t))) {
8
8
  reportDiagnostic(program, {
9
9
  code: "unique-items-invalid-type",
10
10
  target: entity,
@@ -24,4 +24,18 @@ export const $uniqueItems = (context, entity) => {
24
24
  setUniqueItems(program, entity, true);
25
25
  };
26
26
  export const [getUniqueItems, setUniqueItems] = useStateMap(AzureCoreStateKeys.uniqueItems);
27
+ function isTypeOrNullableType(type, filter) {
28
+ if (filter(type)) {
29
+ return true;
30
+ }
31
+ if (type.kind !== "Union") {
32
+ return false;
33
+ }
34
+ if (type.variants.size !== 2)
35
+ return false;
36
+ const variants = [...type.variants.values()];
37
+ if (!filter(variants[0].type))
38
+ return false;
39
+ return isNullType(variants[1].type);
40
+ }
27
41
  //# sourceMappingURL=unique-items.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"unique-items.js","sourceRoot":"","sources":["../../../src/decorators/unique-items.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,gBAAgB,EAA8B,MAAM,oBAAoB,CAAC;AACpG,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAEjE,MAAM,CAAC,MAAM,YAAY,GAAyB,CAChD,OAAyB,EACzB,MAA6B,EAC7B,EAAE;IACF,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAC5B,IAAI,MAAM,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QACpC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5E,gBAAgB,CAAC,OAAO,EAAE;gBACxB,IAAI,EAAE,2BAA2B;gBACjC,MAAM,EAAE,MAAM;aACf,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QACD,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACtC,OAAO;IACT,CAAC;IACD,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC;QACvC,gBAAgB,CAAC,OAAO,EAAE;YACxB,IAAI,EAAE,2BAA2B;YACjC,MAAM,EAAE,MAAM;SACf,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IACD,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AACxC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,cAAc,CAAC,GAAG,WAAW,CACzD,kBAAkB,CAAC,WAAW,CAC/B,CAAC"}
1
+ {"version":3,"file":"unique-items.js","sourceRoot":"","sources":["../../../src/decorators/unique-items.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,gBAAgB,EAChB,UAAU,GAIX,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAEjE,MAAM,CAAC,MAAM,YAAY,GAAyB,CAChD,OAAyB,EACzB,MAA6B,EAC7B,EAAE;IACF,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAC5B,IAAI,MAAM,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QACpC,IACE,CAAC,oBAAoB,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAC7F,CAAC;YACD,gBAAgB,CAAC,OAAO,EAAE;gBACxB,IAAI,EAAE,2BAA2B;gBACjC,MAAM,EAAE,MAAM;aACf,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QACD,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACtC,OAAO;IACT,CAAC;IACD,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC;QACvC,gBAAgB,CAAC,OAAO,EAAE;YACxB,IAAI,EAAE,2BAA2B;YACjC,MAAM,EAAE,MAAM;SACf,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IACD,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AACxC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,cAAc,CAAC,GAAG,WAAW,CACzD,kBAAkB,CAAC,WAAW,CAC/B,CAAC;AAEF,SAAS,oBAAoB,CAAC,IAAU,EAAE,MAA+B;IACvE,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3C,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5C,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACtC,CAAC"}
@@ -1,4 +1,4 @@
1
- import { DecoratorContext, Model, ModelProperty, Program } from "@typespec/compiler";
1
+ import { DecoratorContext, Model, ModelProperty, Program, Type } from "@typespec/compiler";
2
2
  export declare const $requestParameter: (context: DecoratorContext, entity: Model, name: string) => void;
3
3
  export declare function getRequestParameter(program: Program, entity: ModelProperty): string | undefined;
4
4
  export declare const $responseProperty: (context: DecoratorContext, entity: Model, name: string) => void;
@@ -9,5 +9,5 @@ export declare function getResponseProperty(program: Program, entity: ModelPrope
9
9
  * @param type The model or model property to check.
10
10
  * @returns True if the model or model property has unique items, false otherwise.
11
11
  */
12
- export declare function hasUniqueItems(program: Program, type: Model | ModelProperty): boolean;
12
+ export declare function hasUniqueItems(program: Program, type: Type): boolean;
13
13
  //# sourceMappingURL=decorators.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../src/decorators.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAGrF,eAAO,MAAM,iBAAiB,GAAI,SAAS,gBAAgB,EAAE,QAAQ,KAAK,EAAE,MAAM,MAAM,SAEvF,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,GAAG,MAAM,GAAG,SAAS,CAM/F;AAED,eAAO,MAAM,iBAAiB,GAAI,SAAS,gBAAgB,EAAE,QAAQ,KAAK,EAAE,MAAM,MAAM,SAEvF,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,GAAG,MAAM,GAAG,SAAS,CAM/F;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,GAAG,aAAa,GAAG,OAAO,CA4BrF"}
1
+ {"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../src/decorators.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAG3F,eAAO,MAAM,iBAAiB,GAAI,SAAS,gBAAgB,EAAE,QAAQ,KAAK,EAAE,MAAM,MAAM,SAEvF,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,GAAG,MAAM,GAAG,SAAS,CAM/F;AAED,eAAO,MAAM,iBAAiB,GAAI,SAAS,gBAAgB,EAAE,QAAQ,KAAK,EAAE,MAAM,MAAM,SAEvF,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,GAAG,MAAM,GAAG,SAAS,CAM/F;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CA4BpE"}
@@ -47,7 +47,7 @@ export function hasUniqueItems(program, type) {
47
47
  type.sourceModels.some((sourceModel) => hasUniqueItemsCached(sourceModel.model))));
48
48
  }
49
49
  else {
50
- if (type.type.kind !== "Model") {
50
+ if (type.kind !== "ModelProperty") {
51
51
  return cacheResult(type, false);
52
52
  }
53
53
  return cacheResult(type, getUniqueItems(program, type) || hasUniqueItemsCached(type.type));
@@ -1 +1 @@
1
- {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../src/decorators.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../src/decorators.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@azure-tools/typespec-azure-core",
3
- "version": "0.62.0-dev.4",
3
+ "version": "0.62.0-dev.5",
4
4
  "author": "Microsoft Corporation",
5
5
  "description": "TypeSpec Azure Core library",
6
6
  "homepage": "https://azure.github.io/typespec-azure",