@typespec/compiler 0.59.0-dev.0 → 0.59.0-dev.10

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 (44) hide show
  1. package/dist/generated-defs/TypeSpec.d.ts +20 -5
  2. package/dist/generated-defs/TypeSpec.d.ts.map +1 -1
  3. package/dist/manifest.js +2 -2
  4. package/dist/src/config/config-loader.js +7 -0
  5. package/dist/src/config/config-loader.js.map +1 -1
  6. package/dist/src/core/checker.d.ts.map +1 -1
  7. package/dist/src/core/checker.js +31 -9
  8. package/dist/src/core/checker.js.map +1 -1
  9. package/dist/src/core/cli/actions/compile/compile.d.ts.map +1 -1
  10. package/dist/src/core/cli/actions/compile/compile.js +10 -6
  11. package/dist/src/core/cli/actions/compile/compile.js.map +1 -1
  12. package/dist/src/core/cli/utils.d.ts +2 -1
  13. package/dist/src/core/cli/utils.d.ts.map +1 -1
  14. package/dist/src/core/cli/utils.js +14 -11
  15. package/dist/src/core/cli/utils.js.map +1 -1
  16. package/dist/src/core/helpers/discriminator-utils.js +1 -1
  17. package/dist/src/core/helpers/discriminator-utils.js.map +1 -1
  18. package/dist/src/core/library.d.ts +2 -2
  19. package/dist/src/core/library.d.ts.map +1 -1
  20. package/dist/src/core/messages.d.ts +25 -2
  21. package/dist/src/core/messages.d.ts.map +1 -1
  22. package/dist/src/core/messages.js +7 -0
  23. package/dist/src/core/messages.js.map +1 -1
  24. package/dist/src/core/numeric.js +3 -2
  25. package/dist/src/core/numeric.js.map +1 -1
  26. package/dist/src/core/param-message.d.ts +1 -1
  27. package/dist/src/core/param-message.d.ts.map +1 -1
  28. package/dist/src/core/scanner.d.ts.map +1 -1
  29. package/dist/src/core/scanner.js +5 -2
  30. package/dist/src/core/scanner.js.map +1 -1
  31. package/dist/src/core/schema-validator.d.ts.map +1 -1
  32. package/dist/src/core/schema-validator.js +26 -8
  33. package/dist/src/core/schema-validator.js.map +1 -1
  34. package/dist/src/lib/decorators.d.ts +7 -6
  35. package/dist/src/lib/decorators.d.ts.map +1 -1
  36. package/dist/src/lib/decorators.js +32 -25
  37. package/dist/src/lib/decorators.js.map +1 -1
  38. package/dist/src/lib/examples.d.ts +1 -1
  39. package/dist/src/lib/examples.d.ts.map +1 -1
  40. package/dist/src/lib/examples.js +35 -2
  41. package/dist/src/lib/examples.js.map +1 -1
  42. package/lib/std/decorators.tsp +10 -2
  43. package/package.json +10 -10
  44. package/templates/scaffolding.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"examples.d.ts","sourceRoot":"","sources":["../../../src/lib/examples.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAA2C,IAAI,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC7F,OAAO,EAAa,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7D;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,IAAI,EACV,QAAQ,CAAC,EAAE,UAAU,GACpB,OAAO,CAqBT"}
1
+ {"version":3,"file":"examples.d.ts","sourceRoot":"","sources":["../../../src/lib/examples.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAIL,KAAK,IAAI,EACT,KAAK,KAAK,EACX,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAa,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7D;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,IAAI,EACV,QAAQ,CAAC,EAAE,UAAU,GACpB,OAAO,CA6BT"}
@@ -1,4 +1,6 @@
1
1
  import { Temporal } from "temporal-polyfill";
2
+ import { ignoreDiagnostics } from "../core/diagnostics.js";
3
+ import { isArrayModelType, isUnknownType } from "../core/type-utils.js";
2
4
  import { getEncode } from "./decorators.js";
3
5
  /**
4
6
  * Serialize the given TypeSpec value as a JSON object using the given type and its encoding annotations.
@@ -19,17 +21,48 @@ export function serializeValueAsJson(program, value, type, encodeAs) {
19
21
  case "EnumValue":
20
22
  return value.value.value ?? value.value.name;
21
23
  case "ArrayValue":
22
- return value.values.map((v) => serializeValueAsJson(program, v, type));
24
+ return value.values.map((v) => serializeValueAsJson(program, v, type.kind === "Model" && isArrayModelType(program, type)
25
+ ? type.indexer.value
26
+ : program.checker.anyType));
23
27
  case "ObjectValue":
24
28
  return serializeObjectValueAsJson(program, value, type);
25
29
  case "ScalarValue":
26
30
  return serializeScalarValueAsJson(program, value, type, encodeAs);
27
31
  }
28
32
  }
33
+ /** Try to get the property of the type */
34
+ function getPropertyOfType(type, name) {
35
+ switch (type.kind) {
36
+ case "Model":
37
+ return type.properties.get(name) ?? type.indexer?.value;
38
+ case "Intrinsic":
39
+ if (isUnknownType(type)) {
40
+ return type;
41
+ }
42
+ else {
43
+ return;
44
+ }
45
+ default:
46
+ return undefined;
47
+ }
48
+ }
49
+ function resolveUnions(program, value, type) {
50
+ if (type.kind !== "Union") {
51
+ return type;
52
+ }
53
+ for (const variant of type.variants.values()) {
54
+ if (variant.type.kind === "Model" &&
55
+ ignoreDiagnostics(program.checker.isTypeAssignableTo(value, { entityKind: "MixedParameterConstraint", valueType: variant.type }, value))) {
56
+ return variant.type;
57
+ }
58
+ }
59
+ return type;
60
+ }
29
61
  function serializeObjectValueAsJson(program, value, type) {
62
+ type = resolveUnions(program, value, type) ?? type;
30
63
  const obj = {};
31
64
  for (const propValue of value.properties.values()) {
32
- const definition = type.properties.get(propValue.name);
65
+ const definition = getPropertyOfType(type, propValue.name);
33
66
  if (definition) {
34
67
  obj[propValue.name] = serializeValueAsJson(program, propValue.value, definition);
35
68
  }
@@ -1 +1 @@
1
- {"version":3,"file":"examples.js","sourceRoot":"","sources":["../../../src/lib/examples.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"examples.js","sourceRoot":"","sources":["../../../src/lib/examples.ts"],"names":[],"mappings":"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"}
@@ -477,7 +477,7 @@ enum BytesKnownEncoding {
477
477
 
478
478
  /**
479
479
  * Specify how to encode the target type.
480
- * @param encoding Known name of an encoding.
480
+ * @param encodingOrEncodeAs Known name of an encoding or a scalar type to encode as(Only for numeric types to encode as string).
481
481
  * @param encodedAs What target type is this being encoded as. Default to string.
482
482
  *
483
483
  * @example offsetDateTime encoded with rfc7231
@@ -493,10 +493,18 @@ enum BytesKnownEncoding {
493
493
  * @encode("unixTimestamp", int32)
494
494
  * scalar myDateTime extends unixTimestamp;
495
495
  * ```
496
+ *
497
+ * @example encode numeric type to string
498
+ *
499
+ * ```tsp
500
+ * model Pet {
501
+ * @encode(string) id: int64;
502
+ * }
503
+ * ```
496
504
  */
497
505
  extern dec encode(
498
506
  target: Scalar | ModelProperty,
499
- encoding: string | EnumMember,
507
+ encodingOrEncodeAs: (valueof string | EnumMember) | Scalar,
500
508
  encodedAs?: Scalar
501
509
  );
502
510
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@typespec/compiler",
3
- "version": "0.59.0-dev.0",
3
+ "version": "0.59.0-dev.10",
4
4
  "description": "TypeSpec Compiler Preview",
5
5
  "author": "Microsoft Corporation",
6
6
  "license": "MIT",
@@ -62,14 +62,14 @@
62
62
  ],
63
63
  "dependencies": {
64
64
  "@babel/code-frame": "~7.24.7",
65
- "ajv": "~8.16.0",
65
+ "ajv": "~8.17.1",
66
66
  "change-case": "~5.4.4",
67
67
  "globby": "~14.0.2",
68
68
  "mustache": "~4.2.0",
69
69
  "picocolors": "~1.0.1",
70
- "prettier": "~3.3.2",
70
+ "prettier": "~3.3.3",
71
71
  "prompts": "~2.4.2",
72
- "semver": "^7.6.2",
72
+ "semver": "^7.6.3",
73
73
  "temporal-polyfill": "^0.2.5",
74
74
  "vscode-languageserver": "~9.0.1",
75
75
  "vscode-languageserver-textdocument": "~1.0.11",
@@ -84,18 +84,18 @@
84
84
  "@types/semver": "^7.5.8",
85
85
  "@types/yargs": "~17.0.32",
86
86
  "@typespec/internal-build-utils": "~0.58.0 || >=0.59.0-dev <0.59.0",
87
- "@vitest/coverage-v8": "^1.6.0",
88
- "@vitest/ui": "^1.6.0",
87
+ "@vitest/coverage-v8": "^2.0.4",
88
+ "@vitest/ui": "^2.0.4",
89
89
  "c8": "^10.1.2",
90
90
  "grammarkdown": "~3.3.2",
91
- "rimraf": "~5.0.7",
91
+ "rimraf": "~6.0.1",
92
92
  "source-map-support": "~0.5.21",
93
93
  "tmlanguage-generator": "~0.5.7 || >=0.6.0-dev <0.6.0",
94
94
  "ts-node": "~10.9.2",
95
- "typescript": "~5.5.3",
96
- "vitest": "^1.6.0",
95
+ "typescript": "~5.5.4",
96
+ "vitest": "^2.0.4",
97
97
  "vscode-oniguruma": "~2.0.1",
98
- "vscode-textmate": "~9.0.0"
98
+ "vscode-textmate": "~9.1.0"
99
99
  },
100
100
  "peerDependencies": {},
101
101
  "scripts": {
@@ -3,12 +3,12 @@
3
3
  "title": "Empty project",
4
4
  "description": "Create an empty project.",
5
5
  "libraries": [],
6
- "compilerVersion": "0.58.0"
6
+ "compilerVersion": "0.58.1"
7
7
  },
8
8
  "rest": {
9
9
  "title": "Generic REST API",
10
10
  "description": "Create a project representing a generic REST API",
11
- "compilerVersion": "0.58.0",
11
+ "compilerVersion": "0.58.1",
12
12
  "libraries": [
13
13
  "@typespec/http",
14
14
  "@typespec/rest",
@@ -23,7 +23,7 @@
23
23
  "library-ts": {
24
24
  "title": "TypeSpec Library (With TypeScript)",
25
25
  "description": "Create a new package to add decorators or linters to typespec.",
26
- "compilerVersion": "0.58.0",
26
+ "compilerVersion": "0.58.1",
27
27
  "libraries": [],
28
28
  "files": [
29
29
  {
@@ -99,7 +99,7 @@
99
99
  "emitter-ts": {
100
100
  "title": "TypeSpec Emitter (With TypeScript)",
101
101
  "description": "Create a new package that will be emitting typespec",
102
- "compilerVersion": "0.58.0",
102
+ "compilerVersion": "0.58.1",
103
103
  "libraries": [],
104
104
  "files": [
105
105
  {