@typespec/http-server-js 0.58.0-alpha.12-dev.0 → 0.58.0-alpha.12-dev.1
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/generated-defs/helpers/datetime.d.ts +4 -0
- package/dist/generated-defs/helpers/datetime.d.ts.map +1 -0
- package/dist/generated-defs/helpers/datetime.js +256 -0
- package/dist/generated-defs/helpers/datetime.js.map +1 -0
- package/dist/generated-defs/helpers/index.d.ts.map +1 -1
- package/dist/generated-defs/helpers/index.js +1 -0
- package/dist/generated-defs/helpers/index.js.map +1 -1
- package/dist/src/common/declaration.js +1 -1
- package/dist/src/common/declaration.js.map +1 -1
- package/dist/src/common/reference.js +1 -1
- package/dist/src/common/reference.js.map +1 -1
- package/dist/src/common/scalar.d.ts +175 -22
- package/dist/src/common/scalar.d.ts.map +1 -1
- package/dist/src/common/scalar.js +420 -93
- package/dist/src/common/scalar.js.map +1 -1
- package/dist/src/common/serialization/index.d.ts +2 -2
- package/dist/src/common/serialization/index.d.ts.map +1 -1
- package/dist/src/common/serialization/index.js +9 -3
- package/dist/src/common/serialization/index.js.map +1 -1
- package/dist/src/common/serialization/json.d.ts +2 -2
- package/dist/src/common/serialization/json.d.ts.map +1 -1
- package/dist/src/common/serialization/json.js +144 -42
- package/dist/src/common/serialization/json.js.map +1 -1
- package/dist/src/helpers/datetime.d.ts +92 -0
- package/dist/src/helpers/datetime.d.ts.map +1 -0
- package/dist/src/helpers/datetime.js +151 -0
- package/dist/src/helpers/datetime.js.map +1 -0
- package/dist/src/http/server/index.d.ts.map +1 -1
- package/dist/src/http/server/index.js +17 -12
- package/dist/src/http/server/index.js.map +1 -1
- package/dist/src/http/server/multipart.js +1 -1
- package/dist/src/http/server/multipart.js.map +1 -1
- package/dist/src/lib.d.ts +10 -1
- package/dist/src/lib.d.ts.map +1 -1
- package/dist/src/lib.js +6 -0
- package/dist/src/lib.js.map +1 -1
- package/dist/src/util/case.d.ts +9 -0
- package/dist/src/util/case.d.ts.map +1 -1
- package/dist/src/util/case.js +18 -0
- package/dist/src/util/case.js.map +1 -1
- package/dist/src/util/differentiate.d.ts +4 -4
- package/dist/src/util/differentiate.d.ts.map +1 -1
- package/dist/src/util/differentiate.js +10 -10
- package/dist/src/util/differentiate.js.map +1 -1
- package/generated-defs/helpers/datetime.ts +263 -0
- package/generated-defs/helpers/index.ts +1 -0
- package/package.json +7 -7
- package/src/common/declaration.ts +1 -1
- package/src/common/reference.ts +1 -1
- package/src/common/scalar.ts +709 -103
- package/src/common/serialization/index.ts +11 -4
- package/src/common/serialization/json.ts +174 -52
- package/src/helpers/datetime.ts +235 -0
- package/src/http/server/index.ts +29 -15
- package/src/http/server/multipart.ts +1 -1
- package/src/lib.ts +6 -0
- package/src/util/case.ts +19 -0
- package/src/util/differentiate.ts +15 -8
- package/temp/tsconfig.tsbuildinfo +1 -1
- package/test/datetime.test.ts +226 -0
- package/test/scalar.test.ts +345 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Type } from "@typespec/compiler";
|
|
1
|
+
import { DiagnosticTarget, NoTarget, Type } from "@typespec/compiler";
|
|
2
2
|
import { JsContext, Module } from "../../ctx.js";
|
|
3
3
|
import { SerializableType, SerializationContext } from "./index.js";
|
|
4
|
-
export declare function requiresJsonSerialization(ctx: JsContext, type: Type): boolean;
|
|
4
|
+
export declare function requiresJsonSerialization(ctx: JsContext, module: Module, type: Type, diagnosticTarget?: DiagnosticTarget | typeof NoTarget): boolean;
|
|
5
5
|
export declare function emitJsonSerialization(ctx: SerializationContext, type: SerializableType, module: Module, typeName: string): Iterable<string>;
|
|
6
6
|
//# sourceMappingURL=json.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../../../src/common/serialization/json.ts"],"names":[],"mappings":"AAGA,OAAO,
|
|
1
|
+
{"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../../../src/common/serialization/json.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,gBAAgB,EAGhB,QAAQ,EAIR,IAAI,EAML,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAUjD,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAwB,MAAM,YAAY,CAAC;AAO1F,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,SAAS,EACd,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,IAAI,EACV,gBAAgB,GAAE,gBAAgB,GAAG,OAAO,QAAmB,GAC9D,OAAO,CAiDT;AAiCD,wBAAiB,qBAAqB,CACpC,GAAG,EAAE,oBAAoB,EACzB,IAAI,EAAE,gBAAgB,EACtB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,QAAQ,CAAC,MAAM,CAAC,CAQlB"}
|
|
@@ -2,18 +2,21 @@
|
|
|
2
2
|
// Licensed under the MIT license.
|
|
3
3
|
import { NoTarget, compilerAssert, getEncode, isArrayModelType, isRecordModelType, resolveEncodedName, } from "@typespec/compiler";
|
|
4
4
|
import { getHeaderFieldOptions, getPathParamOptions, getQueryParamOptions } from "@typespec/http";
|
|
5
|
-
import {
|
|
5
|
+
import { reportDiagnostic } from "../../lib.js";
|
|
6
|
+
import { access, parseCase } from "../../util/case.js";
|
|
6
7
|
import { differentiateUnion, writeCodeTree } from "../../util/differentiate.js";
|
|
7
8
|
import { UnimplementedError } from "../../util/error.js";
|
|
8
9
|
import { indent } from "../../util/iter.js";
|
|
10
|
+
import { keywordSafe } from "../../util/keywords.js";
|
|
11
|
+
import { getFullyQualifiedTypeName } from "../../util/name.js";
|
|
9
12
|
import { emitTypeReference, escapeUnsafeChars } from "../reference.js";
|
|
10
|
-
import { getJsScalar } from "../scalar.js";
|
|
13
|
+
import { JS_SCALAR_UNKNOWN, getJsScalar } from "../scalar.js";
|
|
11
14
|
import { requireSerialization } from "./index.js";
|
|
12
15
|
/**
|
|
13
16
|
* Memoization cache for requiresJsonSerialization.
|
|
14
17
|
*/
|
|
15
18
|
const _REQUIRES_JSON_SERIALIZATION = new WeakMap();
|
|
16
|
-
export function requiresJsonSerialization(ctx, type) {
|
|
19
|
+
export function requiresJsonSerialization(ctx, module, type, diagnosticTarget = NoTarget) {
|
|
17
20
|
if (!isSerializable(type))
|
|
18
21
|
return false;
|
|
19
22
|
if (_REQUIRES_JSON_SERIALIZATION.has(type)) {
|
|
@@ -28,33 +31,37 @@ export function requiresJsonSerialization(ctx, type) {
|
|
|
28
31
|
case "Model": {
|
|
29
32
|
if (isArrayModelType(ctx.program, type)) {
|
|
30
33
|
const argumentType = type.indexer.value;
|
|
31
|
-
requiresSerialization = requiresJsonSerialization(ctx, argumentType);
|
|
34
|
+
requiresSerialization = requiresJsonSerialization(ctx, module, argumentType);
|
|
32
35
|
break;
|
|
33
36
|
}
|
|
34
|
-
requiresSerialization = [...type.properties.values()].some((property) => propertyRequiresJsonSerialization(ctx, property));
|
|
37
|
+
requiresSerialization = [...type.properties.values()].some((property) => propertyRequiresJsonSerialization(ctx, module, property));
|
|
35
38
|
break;
|
|
36
39
|
}
|
|
37
40
|
case "Scalar": {
|
|
38
|
-
const scalar = getJsScalar(ctx
|
|
39
|
-
requiresSerialization =
|
|
41
|
+
const scalar = getJsScalar(ctx, module, type, diagnosticTarget);
|
|
42
|
+
requiresSerialization =
|
|
43
|
+
!scalar.isJsonCompatible ||
|
|
44
|
+
getEncode(ctx.program, type) !== undefined ||
|
|
45
|
+
scalar.getDefaultMimeEncoding("application/json") !== undefined;
|
|
40
46
|
break;
|
|
41
47
|
}
|
|
42
48
|
case "Union": {
|
|
43
|
-
requiresSerialization = [...type.variants.values()].some((variant) => requiresJsonSerialization(ctx, variant));
|
|
49
|
+
requiresSerialization = [...type.variants.values()].some((variant) => requiresJsonSerialization(ctx, module, variant));
|
|
44
50
|
break;
|
|
45
51
|
}
|
|
46
52
|
case "ModelProperty":
|
|
47
|
-
requiresSerialization = requiresJsonSerialization(ctx, type.type);
|
|
53
|
+
requiresSerialization = requiresJsonSerialization(ctx, module, type.type);
|
|
48
54
|
break;
|
|
49
55
|
}
|
|
50
56
|
_REQUIRES_JSON_SERIALIZATION.set(type, requiresSerialization);
|
|
51
57
|
return requiresSerialization;
|
|
52
58
|
}
|
|
53
|
-
function propertyRequiresJsonSerialization(ctx, property) {
|
|
59
|
+
function propertyRequiresJsonSerialization(ctx, module, property) {
|
|
54
60
|
return !!(isHttpMetadata(ctx, property) ||
|
|
55
61
|
getEncode(ctx.program, property) ||
|
|
56
62
|
resolveEncodedName(ctx.program, property, "application/json") !== property.name ||
|
|
57
|
-
(isSerializable(property.type) &&
|
|
63
|
+
(isSerializable(property.type) &&
|
|
64
|
+
requiresJsonSerialization(ctx, module, property.type, property)));
|
|
58
65
|
}
|
|
59
66
|
function isHttpMetadata(ctx, property) {
|
|
60
67
|
return (getQueryParamOptions(ctx.program, property) !== undefined ||
|
|
@@ -81,7 +88,33 @@ function* emitToJson(ctx, type, module) {
|
|
|
81
88
|
yield `return {`;
|
|
82
89
|
for (const property of type.properties.values()) {
|
|
83
90
|
const encodedName = resolveEncodedName(ctx.program, property, "application/json") ?? property.name;
|
|
84
|
-
const
|
|
91
|
+
const propertyName = keywordSafe(parseCase(property.name).camelCase);
|
|
92
|
+
let expr = access("input", propertyName);
|
|
93
|
+
const encoding = getEncode(ctx.program, property);
|
|
94
|
+
if (property.type.kind === "Scalar" && encoding) {
|
|
95
|
+
const scalar = getJsScalar(ctx, module, property.type, property.type);
|
|
96
|
+
const scalarEncoder = scalar.getEncoding(encoding.encoding ?? "default", encoding.type);
|
|
97
|
+
if (scalarEncoder) {
|
|
98
|
+
expr = transposeExpressionToJson(ctx,
|
|
99
|
+
// Assertion: scalarEncoder.target.scalar is defined because we resolved an encoder.
|
|
100
|
+
scalarEncoder.target.scalar, scalarEncoder.encode(expr), module);
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
reportDiagnostic(ctx.program, {
|
|
104
|
+
code: "unknown-encoding",
|
|
105
|
+
target: NoTarget,
|
|
106
|
+
format: {
|
|
107
|
+
encoding: encoding.encoding ?? "<default>",
|
|
108
|
+
type: getFullyQualifiedTypeName(property.type),
|
|
109
|
+
target: getFullyQualifiedTypeName(encoding.type),
|
|
110
|
+
},
|
|
111
|
+
});
|
|
112
|
+
// We treat this as unknown from here on out. The encoding was not deciphered.
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
expr = transposeExpressionToJson(ctx, property.type, expr, module);
|
|
117
|
+
}
|
|
85
118
|
yield ` ${encodedName}: ${expr},`;
|
|
86
119
|
}
|
|
87
120
|
yield `};`;
|
|
@@ -92,11 +125,11 @@ function* emitToJson(ctx, type, module) {
|
|
|
92
125
|
return;
|
|
93
126
|
}
|
|
94
127
|
case "Union": {
|
|
95
|
-
const codeTree = differentiateUnion(ctx, type);
|
|
128
|
+
const codeTree = differentiateUnion(ctx, module, type);
|
|
96
129
|
yield* writeCodeTree(ctx, codeTree, {
|
|
97
130
|
subject: "input",
|
|
98
131
|
referenceModelProperty(p) {
|
|
99
|
-
return "input
|
|
132
|
+
return access("input", parseCase(p.name).camelCase);
|
|
100
133
|
},
|
|
101
134
|
renderResult(type) {
|
|
102
135
|
return [`return ${transposeExpressionToJson(ctx, type, "input", module)};`];
|
|
@@ -111,8 +144,8 @@ function transposeExpressionToJson(ctx, type, expr, module) {
|
|
|
111
144
|
case "Model": {
|
|
112
145
|
if (isArrayModelType(ctx.program, type)) {
|
|
113
146
|
const argumentType = type.indexer.value;
|
|
114
|
-
if (requiresJsonSerialization(ctx, argumentType)) {
|
|
115
|
-
return
|
|
147
|
+
if (requiresJsonSerialization(ctx, module, argumentType)) {
|
|
148
|
+
return `(${expr})?.map((item) => ${transposeExpressionToJson(ctx, argumentType, "item", module)})`;
|
|
116
149
|
}
|
|
117
150
|
else {
|
|
118
151
|
return expr;
|
|
@@ -120,14 +153,14 @@ function transposeExpressionToJson(ctx, type, expr, module) {
|
|
|
120
153
|
}
|
|
121
154
|
else if (isRecordModelType(ctx.program, type)) {
|
|
122
155
|
const argumentType = type.indexer.value;
|
|
123
|
-
if (requiresJsonSerialization(ctx, argumentType)) {
|
|
156
|
+
if (requiresJsonSerialization(ctx, module, argumentType)) {
|
|
124
157
|
return `Object.fromEntries(Object.entries(${expr}).map(([key, value]) => [String(key), ${transposeExpressionToJson(ctx, argumentType, "value", module)}]))`;
|
|
125
158
|
}
|
|
126
159
|
else {
|
|
127
160
|
return expr;
|
|
128
161
|
}
|
|
129
162
|
}
|
|
130
|
-
else if (!requiresJsonSerialization(ctx, type)) {
|
|
163
|
+
else if (!requiresJsonSerialization(ctx, module, type)) {
|
|
131
164
|
return expr;
|
|
132
165
|
}
|
|
133
166
|
else {
|
|
@@ -137,17 +170,18 @@ function transposeExpressionToJson(ctx, type, expr, module) {
|
|
|
137
170
|
}
|
|
138
171
|
}
|
|
139
172
|
case "Scalar":
|
|
140
|
-
const scalar = getJsScalar(ctx
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
173
|
+
const scalar = getJsScalar(ctx, module, type, NoTarget);
|
|
174
|
+
const encoder = getScalarEncoder(ctx, type, scalar);
|
|
175
|
+
const encoded = encoder.encode(expr);
|
|
176
|
+
if (encoder.target.isJsonCompatible || !encoder.target.scalar) {
|
|
177
|
+
return encoded;
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
// Assertion: encoder.target.scalar is a scalar because "unknown" is JSON compatible.
|
|
181
|
+
return transposeExpressionToJson(ctx, encoder.target.scalar, encoded, module);
|
|
148
182
|
}
|
|
149
183
|
case "Union":
|
|
150
|
-
if (!requiresJsonSerialization(ctx, type)) {
|
|
184
|
+
if (!requiresJsonSerialization(ctx, module, type)) {
|
|
151
185
|
return expr;
|
|
152
186
|
}
|
|
153
187
|
else {
|
|
@@ -197,6 +231,45 @@ function transposeExpressionToJson(ctx, type, expr, module) {
|
|
|
197
231
|
throw new UnimplementedError(`transformJsonExprForType: ${type.kind}`);
|
|
198
232
|
}
|
|
199
233
|
}
|
|
234
|
+
function getScalarEncoder(ctx, type, scalar) {
|
|
235
|
+
const encoding = getEncode(ctx.program, type);
|
|
236
|
+
let encoder;
|
|
237
|
+
if (encoding) {
|
|
238
|
+
const encodingName = encoding.encoding ?? "default";
|
|
239
|
+
const scalarEncoder = scalar.getEncoding(encodingName, encoding.type);
|
|
240
|
+
// TODO - we should detect this before realizing models and use a transform to represent
|
|
241
|
+
// the defective scalar as the encoding target type.
|
|
242
|
+
// See: https://github.com/microsoft/typespec/issues/6376
|
|
243
|
+
if (!scalarEncoder) {
|
|
244
|
+
reportDiagnostic(ctx.program, {
|
|
245
|
+
code: "unknown-encoding",
|
|
246
|
+
target: NoTarget,
|
|
247
|
+
format: {
|
|
248
|
+
encoding: encoding.encoding ?? "<default>",
|
|
249
|
+
type: getFullyQualifiedTypeName(type),
|
|
250
|
+
target: getFullyQualifiedTypeName(encoding.type),
|
|
251
|
+
},
|
|
252
|
+
});
|
|
253
|
+
encoder = {
|
|
254
|
+
target: JS_SCALAR_UNKNOWN,
|
|
255
|
+
encode: (expr) => expr,
|
|
256
|
+
decode: (expr) => expr,
|
|
257
|
+
};
|
|
258
|
+
}
|
|
259
|
+
else {
|
|
260
|
+
encoder = scalarEncoder;
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
else {
|
|
264
|
+
// No encoding specified, use the default content type encoding for json
|
|
265
|
+
encoder = scalar.getDefaultMimeEncoding("application/json") ?? {
|
|
266
|
+
target: JS_SCALAR_UNKNOWN,
|
|
267
|
+
encode: (expr) => expr,
|
|
268
|
+
decode: (expr) => expr,
|
|
269
|
+
};
|
|
270
|
+
}
|
|
271
|
+
return encoder;
|
|
272
|
+
}
|
|
200
273
|
function literalToExpr(type) {
|
|
201
274
|
switch (type.kind) {
|
|
202
275
|
case "String":
|
|
@@ -212,8 +285,34 @@ function* emitFromJson(ctx, type, module) {
|
|
|
212
285
|
yield `return {`;
|
|
213
286
|
for (const property of type.properties.values()) {
|
|
214
287
|
const encodedName = resolveEncodedName(ctx.program, property, "application/json") ?? property.name;
|
|
215
|
-
|
|
216
|
-
|
|
288
|
+
let expr = access("input", encodedName);
|
|
289
|
+
const encoding = getEncode(ctx.program, property);
|
|
290
|
+
if (property.type.kind === "Scalar" && encoding) {
|
|
291
|
+
const scalar = getJsScalar(ctx, module, property.type, property.type);
|
|
292
|
+
const scalarEncoder = scalar.getEncoding(encoding.encoding ?? "default", encoding.type);
|
|
293
|
+
if (scalarEncoder) {
|
|
294
|
+
expr = transposeExpressionFromJson(ctx,
|
|
295
|
+
// Assertion: scalarEncoder.target.scalar is defined because we resolved an encoder.
|
|
296
|
+
scalarEncoder.target.scalar, scalarEncoder.decode(expr), module);
|
|
297
|
+
}
|
|
298
|
+
else {
|
|
299
|
+
reportDiagnostic(ctx.program, {
|
|
300
|
+
code: "unknown-encoding",
|
|
301
|
+
target: NoTarget,
|
|
302
|
+
format: {
|
|
303
|
+
encoding: encoding.encoding ?? "<default>",
|
|
304
|
+
type: getFullyQualifiedTypeName(property.type),
|
|
305
|
+
target: getFullyQualifiedTypeName(encoding.type),
|
|
306
|
+
},
|
|
307
|
+
});
|
|
308
|
+
// We treat this as unknown from here on out. The encoding was not deciphered.
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
else {
|
|
312
|
+
expr = transposeExpressionFromJson(ctx, property.type, expr, module);
|
|
313
|
+
}
|
|
314
|
+
const propertyName = keywordSafe(parseCase(property.name).camelCase);
|
|
315
|
+
yield ` ${propertyName}: ${expr},`;
|
|
217
316
|
}
|
|
218
317
|
yield "};";
|
|
219
318
|
return;
|
|
@@ -223,12 +322,12 @@ function* emitFromJson(ctx, type, module) {
|
|
|
223
322
|
return;
|
|
224
323
|
}
|
|
225
324
|
case "Union": {
|
|
226
|
-
const codeTree = differentiateUnion(ctx, type);
|
|
325
|
+
const codeTree = differentiateUnion(ctx, module, type);
|
|
227
326
|
yield* writeCodeTree(ctx, codeTree, {
|
|
228
327
|
subject: "input",
|
|
229
328
|
referenceModelProperty(p) {
|
|
230
329
|
const jsonName = resolveEncodedName(ctx.program, p, "application/json") ?? p.name;
|
|
231
|
-
return "input
|
|
330
|
+
return access("input", jsonName);
|
|
232
331
|
},
|
|
233
332
|
renderResult(type) {
|
|
234
333
|
return [`return ${transposeExpressionFromJson(ctx, type, "input", module)};`];
|
|
@@ -243,8 +342,8 @@ function transposeExpressionFromJson(ctx, type, expr, module) {
|
|
|
243
342
|
case "Model": {
|
|
244
343
|
if (isArrayModelType(ctx.program, type)) {
|
|
245
344
|
const argumentType = type.indexer.value;
|
|
246
|
-
if (requiresJsonSerialization(ctx, argumentType)) {
|
|
247
|
-
return
|
|
345
|
+
if (requiresJsonSerialization(ctx, module, argumentType)) {
|
|
346
|
+
return `(${expr})?.map((item: any) => ${transposeExpressionFromJson(ctx, argumentType, "item", module)})`;
|
|
248
347
|
}
|
|
249
348
|
else {
|
|
250
349
|
return expr;
|
|
@@ -252,14 +351,14 @@ function transposeExpressionFromJson(ctx, type, expr, module) {
|
|
|
252
351
|
}
|
|
253
352
|
else if (isRecordModelType(ctx.program, type)) {
|
|
254
353
|
const argumentType = type.indexer.value;
|
|
255
|
-
if (requiresJsonSerialization(ctx, argumentType)) {
|
|
354
|
+
if (requiresJsonSerialization(ctx, module, argumentType)) {
|
|
256
355
|
return `Object.fromEntries(Object.entries(${expr}).map(([key, value]) => [key, ${transposeExpressionFromJson(ctx, argumentType, "value", module)}]))`;
|
|
257
356
|
}
|
|
258
357
|
else {
|
|
259
358
|
return expr;
|
|
260
359
|
}
|
|
261
360
|
}
|
|
262
|
-
else if (!requiresJsonSerialization(ctx, type)) {
|
|
361
|
+
else if (!requiresJsonSerialization(ctx, module, type)) {
|
|
263
362
|
return `${expr} as ${emitTypeReference(ctx, type, NoTarget, module)}`;
|
|
264
363
|
}
|
|
265
364
|
else {
|
|
@@ -269,15 +368,18 @@ function transposeExpressionFromJson(ctx, type, expr, module) {
|
|
|
269
368
|
}
|
|
270
369
|
}
|
|
271
370
|
case "Scalar":
|
|
272
|
-
const scalar = getJsScalar(ctx
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
371
|
+
const scalar = getJsScalar(ctx, module, type, type);
|
|
372
|
+
const encoder = getScalarEncoder(ctx, type, scalar);
|
|
373
|
+
const decoded = encoder.decode(expr);
|
|
374
|
+
if (encoder.target.isJsonCompatible || !encoder.target.scalar) {
|
|
375
|
+
return decoded;
|
|
376
|
+
}
|
|
377
|
+
else {
|
|
378
|
+
// Assertion: encoder.target.scalar is a scalar because "unknown" is JSON compatible.
|
|
379
|
+
return transposeExpressionFromJson(ctx, encoder.target.scalar, decoded, module);
|
|
278
380
|
}
|
|
279
381
|
case "Union":
|
|
280
|
-
if (!requiresJsonSerialization(ctx, type)) {
|
|
382
|
+
if (!requiresJsonSerialization(ctx, module, type)) {
|
|
281
383
|
return expr;
|
|
282
384
|
}
|
|
283
385
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json.js","sourceRoot":"","sources":["../../../../src/common/serialization/json.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"json.js","sourceRoot":"","sources":["../../../../src/common/serialization/json.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A duration of time, measured in years, months, weeks, days, hours, minutes, and seconds.
|
|
3
|
+
*
|
|
4
|
+
* The values may be fractional and are not normalized (e.g. 36 hours is not the same duration as 1 day and 12 hours
|
|
5
|
+
* when accounting for Daylight Saving Time changes or leap seconds).
|
|
6
|
+
*
|
|
7
|
+
* @see https://en.wikipedia.org/wiki/ISO_8601#Durations
|
|
8
|
+
*/
|
|
9
|
+
export interface Duration {
|
|
10
|
+
/**
|
|
11
|
+
* "+" if the duration is positive, "-" if the duration is negative.
|
|
12
|
+
*/
|
|
13
|
+
sign: "+" | "-";
|
|
14
|
+
/**
|
|
15
|
+
* The number of years in the duration.
|
|
16
|
+
*/
|
|
17
|
+
years: number;
|
|
18
|
+
/**
|
|
19
|
+
* The number of months in the duration.
|
|
20
|
+
*/
|
|
21
|
+
months: number;
|
|
22
|
+
/**
|
|
23
|
+
* The number of weeks in the duration.
|
|
24
|
+
*/
|
|
25
|
+
weeks: number;
|
|
26
|
+
/**
|
|
27
|
+
* The number of days in the duration.
|
|
28
|
+
*/
|
|
29
|
+
days: number;
|
|
30
|
+
/**
|
|
31
|
+
* The number of hours in the duration.
|
|
32
|
+
*/
|
|
33
|
+
hours: number;
|
|
34
|
+
/**
|
|
35
|
+
* The number of minutes in the duration.
|
|
36
|
+
*/
|
|
37
|
+
minutes: number;
|
|
38
|
+
/**
|
|
39
|
+
* The number of seconds in the duration.
|
|
40
|
+
*/
|
|
41
|
+
seconds: number;
|
|
42
|
+
}
|
|
43
|
+
export declare const Duration: Readonly<{
|
|
44
|
+
/**
|
|
45
|
+
* Parses an ISO8601 duration string into an object.
|
|
46
|
+
*
|
|
47
|
+
* @see https://en.wikipedia.org/wiki/ISO_8601#Durations
|
|
48
|
+
*
|
|
49
|
+
* @param duration - the duration string to parse
|
|
50
|
+
* @returns an object containing the parsed duration
|
|
51
|
+
*/
|
|
52
|
+
parseISO8601(duration: string, maxLength?: number): Duration;
|
|
53
|
+
/**
|
|
54
|
+
* Writes a Duration to an ISO8601 duration string.
|
|
55
|
+
*
|
|
56
|
+
* @see https://en.wikipedia.org/wiki/ISO_8601#Durations
|
|
57
|
+
*
|
|
58
|
+
* @param duration - the duration to write to a string
|
|
59
|
+
* @returns a string in ISO8601 duration format
|
|
60
|
+
*/
|
|
61
|
+
toISO8601(duration: Duration): string;
|
|
62
|
+
/**
|
|
63
|
+
* Gets the total number of seconds in a duration.
|
|
64
|
+
*
|
|
65
|
+
* This method will throw an Error if the duration contains any years, months, weeks, or days, as those require a reference
|
|
66
|
+
* point to calculate the total number of seconds.
|
|
67
|
+
*
|
|
68
|
+
* WARNING: If the total number of seconds is larger than the maximum safe integer in JavaScript, this method will
|
|
69
|
+
* lose precision. @see Duration.totalSecondsBigInt for a BigInt alternative.
|
|
70
|
+
*
|
|
71
|
+
* @param duration - the duration to calculate the total number of seconds for
|
|
72
|
+
* @returns the total number of seconds in the duration
|
|
73
|
+
*/
|
|
74
|
+
totalSeconds(duration: Duration): number;
|
|
75
|
+
/**
|
|
76
|
+
* Gets the total number of seconds in a duration.
|
|
77
|
+
*
|
|
78
|
+
* This method will throw an Error if the duration contains any years, months, weeks, or days, as those require a reference
|
|
79
|
+
* point to calculate the total number of seconds. It will also throw an error if any of the components are not integers.
|
|
80
|
+
*
|
|
81
|
+
* @param duration - the duration to calculate the total number of seconds for
|
|
82
|
+
* @returns the total number of seconds in the duration
|
|
83
|
+
*/
|
|
84
|
+
totalSecondsBigInt(duration: Duration): bigint;
|
|
85
|
+
/**
|
|
86
|
+
* Creates a duration from a total number of seconds.
|
|
87
|
+
*
|
|
88
|
+
* The result is not normalized, so it will only contain a seconds field.
|
|
89
|
+
*/
|
|
90
|
+
fromTotalSeconds(seconds: number): Duration;
|
|
91
|
+
}>;
|
|
92
|
+
//# sourceMappingURL=datetime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"datetime.d.ts","sourceRoot":"","sources":["../../../src/helpers/datetime.ts"],"names":[],"mappings":"AAsBA;;;;;;;GAOG;AACH,MAAM,WAAW,QAAQ;IACvB;;OAEG;IACH,IAAI,EAAE,GAAG,GAAG,GAAG,CAAC;IAChB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,QAAQ;IACnB;;;;;;;OAOG;2BACoB,MAAM,cAAa,MAAM,GAAS,QAAQ;IAiCjE;;;;;;;OAOG;wBACiB,QAAQ,GAAG,MAAM;IA4BrC;;;;;;;;;;;OAWG;2BACoB,QAAQ,GAAG,MAAM;IAoBxC;;;;;;;;OAQG;iCAC0B,QAAQ,GAAG,MAAM;IA+B9C;;;;OAIG;8BACuB,MAAM,GAAG,QAAQ;EAY3C,CAAC"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
// Copyright (c) Microsoft Corporation
|
|
2
|
+
// Licensed under the MIT license.
|
|
3
|
+
// #region Duration
|
|
4
|
+
/**
|
|
5
|
+
* Regular expression for matching ISO8601 duration strings.
|
|
6
|
+
*
|
|
7
|
+
* Yields:
|
|
8
|
+
* - 0: the full match
|
|
9
|
+
* - 1: the sign (optional)
|
|
10
|
+
* - 2: years (optional)
|
|
11
|
+
* - 3: months (optional)
|
|
12
|
+
* - 4: weeks (optional)
|
|
13
|
+
* - 5: days (optional)
|
|
14
|
+
* - 6: hours (optional)
|
|
15
|
+
* - 7: minutes (optional)
|
|
16
|
+
* - 8: seconds (optional)
|
|
17
|
+
*/
|
|
18
|
+
const ISO8601_DURATION_REGEX = /^(-)?P(?:((?:\d*[.,])?\d+)Y)?(?:((?:\d*[.,])?\d+)M)?(?:((?:\d*[.,])?\d+)W)?(?:((?:\d*[.,])?\d+)D)?(?:T(?:((?:\d*[.,])?\d+)H)?(?:((?:\d*[.,])?\d+)M)?(?:((?:\d*[.,])?\d+)S)?)?$/;
|
|
19
|
+
export const Duration = Object.freeze({
|
|
20
|
+
/**
|
|
21
|
+
* Parses an ISO8601 duration string into an object.
|
|
22
|
+
*
|
|
23
|
+
* @see https://en.wikipedia.org/wiki/ISO_8601#Durations
|
|
24
|
+
*
|
|
25
|
+
* @param duration - the duration string to parse
|
|
26
|
+
* @returns an object containing the parsed duration
|
|
27
|
+
*/
|
|
28
|
+
parseISO8601(duration, maxLength = 100) {
|
|
29
|
+
duration = duration.trim();
|
|
30
|
+
if (duration.length > maxLength)
|
|
31
|
+
throw new Error(`ISO8601 duration string is too long: ${duration}`);
|
|
32
|
+
const match = duration.match(ISO8601_DURATION_REGEX);
|
|
33
|
+
if (!match)
|
|
34
|
+
throw new Error(`Invalid ISO8601 duration: ${duration}`);
|
|
35
|
+
return {
|
|
36
|
+
sign: match[1] === undefined ? "+" : match[1],
|
|
37
|
+
years: parseFloatNormal(match[2]),
|
|
38
|
+
months: parseFloatNormal(match[3]),
|
|
39
|
+
weeks: parseFloatNormal(match[4]),
|
|
40
|
+
days: parseFloatNormal(match[5]),
|
|
41
|
+
hours: parseFloatNormal(match[6]),
|
|
42
|
+
minutes: parseFloatNormal(match[7]),
|
|
43
|
+
seconds: parseFloatNormal(match[8]),
|
|
44
|
+
};
|
|
45
|
+
function parseFloatNormal(match) {
|
|
46
|
+
if (match === undefined)
|
|
47
|
+
return 0;
|
|
48
|
+
const normalized = match.replace(",", ".");
|
|
49
|
+
const parsed = parseFloat(normalized);
|
|
50
|
+
if (isNaN(parsed))
|
|
51
|
+
throw new Error(`Unreachable: Invalid number in ISO8601 duration string: ${match}`);
|
|
52
|
+
return parsed;
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
/**
|
|
56
|
+
* Writes a Duration to an ISO8601 duration string.
|
|
57
|
+
*
|
|
58
|
+
* @see https://en.wikipedia.org/wiki/ISO_8601#Durations
|
|
59
|
+
*
|
|
60
|
+
* @param duration - the duration to write to a string
|
|
61
|
+
* @returns a string in ISO8601 duration format
|
|
62
|
+
*/
|
|
63
|
+
toISO8601(duration) {
|
|
64
|
+
const sign = duration.sign === "+" ? "" : "-";
|
|
65
|
+
const years = duration.years !== 0 && !isNaN(Number(duration.years)) ? `${duration.years}Y` : "";
|
|
66
|
+
const months = duration.months !== 0 && !isNaN(Number(duration.months)) ? `${duration.months}M` : "";
|
|
67
|
+
const weeks = duration.weeks !== 0 && !isNaN(Number(duration.weeks)) ? `${duration.weeks}W` : "";
|
|
68
|
+
const days = duration.days !== 0 && !isNaN(Number(duration.days)) ? `${duration.days}D` : "";
|
|
69
|
+
let time = "";
|
|
70
|
+
const _hours = duration.hours !== 0 && !isNaN(Number(duration.hours));
|
|
71
|
+
const _minutes = duration.minutes !== 0 && !isNaN(Number(duration.minutes));
|
|
72
|
+
const _seconds = duration.seconds !== 0 && !isNaN(Number(duration.seconds));
|
|
73
|
+
if (_hours || _minutes || _seconds) {
|
|
74
|
+
const hours = _hours ? `${duration.hours}H` : "";
|
|
75
|
+
const minutes = _minutes ? `${duration.minutes}M` : "";
|
|
76
|
+
const seconds = _seconds ? `${duration.seconds}S` : "";
|
|
77
|
+
time = `T${hours}${minutes}${seconds}`;
|
|
78
|
+
}
|
|
79
|
+
return `${sign}P${years}${months}${weeks}${days}${time}`;
|
|
80
|
+
},
|
|
81
|
+
/**
|
|
82
|
+
* Gets the total number of seconds in a duration.
|
|
83
|
+
*
|
|
84
|
+
* This method will throw an Error if the duration contains any years, months, weeks, or days, as those require a reference
|
|
85
|
+
* point to calculate the total number of seconds.
|
|
86
|
+
*
|
|
87
|
+
* WARNING: If the total number of seconds is larger than the maximum safe integer in JavaScript, this method will
|
|
88
|
+
* lose precision. @see Duration.totalSecondsBigInt for a BigInt alternative.
|
|
89
|
+
*
|
|
90
|
+
* @param duration - the duration to calculate the total number of seconds for
|
|
91
|
+
* @returns the total number of seconds in the duration
|
|
92
|
+
*/
|
|
93
|
+
totalSeconds(duration) {
|
|
94
|
+
if (duration.years !== 0 ||
|
|
95
|
+
duration.months !== 0 ||
|
|
96
|
+
duration.weeks !== 0 ||
|
|
97
|
+
duration.days !== 0) {
|
|
98
|
+
throw new Error("Cannot calculate total seconds for a duration with years, months, weeks, or days.");
|
|
99
|
+
}
|
|
100
|
+
return (duration.seconds +
|
|
101
|
+
duration.minutes * 60 +
|
|
102
|
+
duration.hours * 60 * 60 +
|
|
103
|
+
duration.weeks * 7 * 24 * 60 * 60);
|
|
104
|
+
},
|
|
105
|
+
/**
|
|
106
|
+
* Gets the total number of seconds in a duration.
|
|
107
|
+
*
|
|
108
|
+
* This method will throw an Error if the duration contains any years, months, weeks, or days, as those require a reference
|
|
109
|
+
* point to calculate the total number of seconds. It will also throw an error if any of the components are not integers.
|
|
110
|
+
*
|
|
111
|
+
* @param duration - the duration to calculate the total number of seconds for
|
|
112
|
+
* @returns the total number of seconds in the duration
|
|
113
|
+
*/
|
|
114
|
+
totalSecondsBigInt(duration) {
|
|
115
|
+
if (duration.years !== 0 ||
|
|
116
|
+
duration.months !== 0 ||
|
|
117
|
+
duration.weeks !== 0 ||
|
|
118
|
+
duration.days !== 0) {
|
|
119
|
+
throw new Error("Cannot calculate total seconds for a duration with years, months, weeks, or days.");
|
|
120
|
+
}
|
|
121
|
+
if (!Number.isInteger(duration.seconds) ||
|
|
122
|
+
!Number.isInteger(duration.minutes) ||
|
|
123
|
+
!Number.isInteger(duration.hours) ||
|
|
124
|
+
!Number.isInteger(duration.weeks)) {
|
|
125
|
+
throw new Error("Cannot calculate total seconds as a BigInt for a duration with non-integer components.");
|
|
126
|
+
}
|
|
127
|
+
return (BigInt(duration.seconds) +
|
|
128
|
+
BigInt(duration.minutes) * 60n +
|
|
129
|
+
BigInt(duration.hours) * 60n * 60n +
|
|
130
|
+
BigInt(duration.weeks) * 7n * 24n * 60n * 60n);
|
|
131
|
+
},
|
|
132
|
+
/**
|
|
133
|
+
* Creates a duration from a total number of seconds.
|
|
134
|
+
*
|
|
135
|
+
* The result is not normalized, so it will only contain a seconds field.
|
|
136
|
+
*/
|
|
137
|
+
fromTotalSeconds(seconds) {
|
|
138
|
+
return {
|
|
139
|
+
sign: seconds < 0 ? "-" : "+",
|
|
140
|
+
years: 0,
|
|
141
|
+
months: 0,
|
|
142
|
+
weeks: 0,
|
|
143
|
+
days: 0,
|
|
144
|
+
hours: 0,
|
|
145
|
+
minutes: 0,
|
|
146
|
+
seconds: Math.abs(seconds),
|
|
147
|
+
};
|
|
148
|
+
},
|
|
149
|
+
});
|
|
150
|
+
// #endregion
|
|
151
|
+
//# sourceMappingURL=datetime.js.map
|