@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.
Files changed (61) hide show
  1. package/dist/generated-defs/helpers/datetime.d.ts +4 -0
  2. package/dist/generated-defs/helpers/datetime.d.ts.map +1 -0
  3. package/dist/generated-defs/helpers/datetime.js +256 -0
  4. package/dist/generated-defs/helpers/datetime.js.map +1 -0
  5. package/dist/generated-defs/helpers/index.d.ts.map +1 -1
  6. package/dist/generated-defs/helpers/index.js +1 -0
  7. package/dist/generated-defs/helpers/index.js.map +1 -1
  8. package/dist/src/common/declaration.js +1 -1
  9. package/dist/src/common/declaration.js.map +1 -1
  10. package/dist/src/common/reference.js +1 -1
  11. package/dist/src/common/reference.js.map +1 -1
  12. package/dist/src/common/scalar.d.ts +175 -22
  13. package/dist/src/common/scalar.d.ts.map +1 -1
  14. package/dist/src/common/scalar.js +420 -93
  15. package/dist/src/common/scalar.js.map +1 -1
  16. package/dist/src/common/serialization/index.d.ts +2 -2
  17. package/dist/src/common/serialization/index.d.ts.map +1 -1
  18. package/dist/src/common/serialization/index.js +9 -3
  19. package/dist/src/common/serialization/index.js.map +1 -1
  20. package/dist/src/common/serialization/json.d.ts +2 -2
  21. package/dist/src/common/serialization/json.d.ts.map +1 -1
  22. package/dist/src/common/serialization/json.js +144 -42
  23. package/dist/src/common/serialization/json.js.map +1 -1
  24. package/dist/src/helpers/datetime.d.ts +92 -0
  25. package/dist/src/helpers/datetime.d.ts.map +1 -0
  26. package/dist/src/helpers/datetime.js +151 -0
  27. package/dist/src/helpers/datetime.js.map +1 -0
  28. package/dist/src/http/server/index.d.ts.map +1 -1
  29. package/dist/src/http/server/index.js +17 -12
  30. package/dist/src/http/server/index.js.map +1 -1
  31. package/dist/src/http/server/multipart.js +1 -1
  32. package/dist/src/http/server/multipart.js.map +1 -1
  33. package/dist/src/lib.d.ts +10 -1
  34. package/dist/src/lib.d.ts.map +1 -1
  35. package/dist/src/lib.js +6 -0
  36. package/dist/src/lib.js.map +1 -1
  37. package/dist/src/util/case.d.ts +9 -0
  38. package/dist/src/util/case.d.ts.map +1 -1
  39. package/dist/src/util/case.js +18 -0
  40. package/dist/src/util/case.js.map +1 -1
  41. package/dist/src/util/differentiate.d.ts +4 -4
  42. package/dist/src/util/differentiate.d.ts.map +1 -1
  43. package/dist/src/util/differentiate.js +10 -10
  44. package/dist/src/util/differentiate.js.map +1 -1
  45. package/generated-defs/helpers/datetime.ts +263 -0
  46. package/generated-defs/helpers/index.ts +1 -0
  47. package/package.json +7 -7
  48. package/src/common/declaration.ts +1 -1
  49. package/src/common/reference.ts +1 -1
  50. package/src/common/scalar.ts +709 -103
  51. package/src/common/serialization/index.ts +11 -4
  52. package/src/common/serialization/json.ts +174 -52
  53. package/src/helpers/datetime.ts +235 -0
  54. package/src/http/server/index.ts +29 -15
  55. package/src/http/server/multipart.ts +1 -1
  56. package/src/lib.ts +6 -0
  57. package/src/util/case.ts +19 -0
  58. package/src/util/differentiate.ts +15 -8
  59. package/temp/tsconfig.tsbuildinfo +1 -1
  60. package/test/datetime.test.ts +226 -0
  61. 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,EAOL,IAAI,EAML,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAOjD,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAwB,MAAM,YAAY,CAAC;AAO1F,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CA8C7E;AA4BD,wBAAiB,qBAAqB,CACpC,GAAG,EAAE,oBAAoB,EACzB,IAAI,EAAE,gBAAgB,EACtB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,QAAQ,CAAC,MAAM,CAAC,CAQlB"}
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 { parseCase } from "../../util/case.js";
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.program, type, type);
39
- requiresSerialization = scalar === "Uint8Array" || getEncode(ctx.program, type) !== undefined;
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) && requiresJsonSerialization(ctx, 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 expr = transposeExpressionToJson(ctx, property.type, `input.${property.name}`, module);
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." + parseCase(p.name).camelCase;
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 `${expr}?.map((item) => ${transposeExpressionToJson(ctx, argumentType, "item", module)})`;
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.program, type, type);
141
- switch (scalar) {
142
- case "Uint8Array":
143
- // Coerce to Buffer if we aren't given a buffer. This avoids having to do unholy things to
144
- // convert through an intermediate and use globalThis.btoa. v8 does not support Uint8Array.toBase64
145
- return `((${expr} instanceof Buffer) ? ${expr} : Buffer.from(${expr})).toString('base64')`;
146
- default:
147
- return expr;
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
- const expr = transposeExpressionFromJson(ctx, property.type, `input["${encodedName}"]`, module);
216
- yield ` ${property.name}: ${expr},`;
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[" + JSON.stringify(jsonName) + "]";
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 `${expr}?.map((item: any) => ${transposeExpressionFromJson(ctx, argumentType, "item", module)})`;
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.program, type, type);
273
- switch (scalar) {
274
- case "Uint8Array":
275
- return `Buffer.from(${expr}, 'base64')`;
276
- default:
277
- return expr;
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