tedious 20.2.3 → 20.3.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 (113) hide show
  1. package/README.md +3 -0
  2. package/SECURITY.md +23 -0
  3. package/lib/always-encrypted/get-parameter-encryption-metadata.js +5 -2
  4. package/lib/always-encrypted/get-parameter-encryption-metadata.js.map +1 -1
  5. package/lib/bulk-load-payload.js +9 -5
  6. package/lib/bulk-load-payload.js.map +1 -1
  7. package/lib/bulk-load.js +17 -6
  8. package/lib/bulk-load.js.map +1 -1
  9. package/lib/connection.d.ts +5 -0
  10. package/lib/connection.js +34 -34
  11. package/lib/connection.js.map +1 -1
  12. package/lib/data-type.d.ts +47 -3
  13. package/lib/data-type.js +113 -2
  14. package/lib/data-type.js.map +1 -1
  15. package/lib/data-types/bigint.js +10 -17
  16. package/lib/data-types/bigint.js.map +1 -1
  17. package/lib/data-types/binary.js +10 -17
  18. package/lib/data-types/binary.js.map +1 -1
  19. package/lib/data-types/bit.js +10 -14
  20. package/lib/data-types/bit.js.map +1 -1
  21. package/lib/data-types/bitn.js +3 -6
  22. package/lib/data-types/bitn.js.map +1 -1
  23. package/lib/data-types/char.js +12 -17
  24. package/lib/data-types/char.js.map +1 -1
  25. package/lib/data-types/date.js +11 -27
  26. package/lib/data-types/date.js.map +1 -1
  27. package/lib/data-types/datetime.js +17 -37
  28. package/lib/data-types/datetime.js.map +1 -1
  29. package/lib/data-types/datetime2.js +12 -67
  30. package/lib/data-types/datetime2.js.map +1 -1
  31. package/lib/data-types/datetimen.js +3 -6
  32. package/lib/data-types/datetimen.js.map +1 -1
  33. package/lib/data-types/datetimeoffset.js +13 -60
  34. package/lib/data-types/datetimeoffset.js.map +1 -1
  35. package/lib/data-types/decimal-common.d.ts +18 -0
  36. package/lib/data-types/decimal-common.js +79 -0
  37. package/lib/data-types/decimal-common.js.map +1 -0
  38. package/lib/data-types/decimal.js +6 -67
  39. package/lib/data-types/decimal.js.map +1 -1
  40. package/lib/data-types/decimaln.js +3 -6
  41. package/lib/data-types/decimaln.js.map +1 -1
  42. package/lib/data-types/float.js +10 -15
  43. package/lib/data-types/float.js.map +1 -1
  44. package/lib/data-types/floatn.js +3 -6
  45. package/lib/data-types/floatn.js.map +1 -1
  46. package/lib/data-types/image.js +10 -17
  47. package/lib/data-types/image.js.map +1 -1
  48. package/lib/data-types/int.js +8 -15
  49. package/lib/data-types/int.js.map +1 -1
  50. package/lib/data-types/intn.js +3 -6
  51. package/lib/data-types/intn.js.map +1 -1
  52. package/lib/data-types/money.js +14 -18
  53. package/lib/data-types/money.js.map +1 -1
  54. package/lib/data-types/moneyn.js +3 -6
  55. package/lib/data-types/moneyn.js.map +1 -1
  56. package/lib/data-types/nchar.js +17 -31
  57. package/lib/data-types/nchar.js.map +1 -1
  58. package/lib/data-types/ntext.js +13 -17
  59. package/lib/data-types/ntext.js.map +1 -1
  60. package/lib/data-types/null.js +3 -6
  61. package/lib/data-types/null.js.map +1 -1
  62. package/lib/data-types/numeric.js +6 -67
  63. package/lib/data-types/numeric.js.map +1 -1
  64. package/lib/data-types/numericn.js +3 -6
  65. package/lib/data-types/numericn.js.map +1 -1
  66. package/lib/data-types/nvarchar.js +68 -57
  67. package/lib/data-types/nvarchar.js.map +1 -1
  68. package/lib/data-types/plp-stream.d.ts +19 -0
  69. package/lib/data-types/plp-stream.js +59 -0
  70. package/lib/data-types/plp-stream.js.map +1 -0
  71. package/lib/data-types/real.js +10 -16
  72. package/lib/data-types/real.js.map +1 -1
  73. package/lib/data-types/smalldatetime.js +17 -23
  74. package/lib/data-types/smalldatetime.js.map +1 -1
  75. package/lib/data-types/smallint.js +10 -16
  76. package/lib/data-types/smallint.js.map +1 -1
  77. package/lib/data-types/smallmoney.js +10 -16
  78. package/lib/data-types/smallmoney.js.map +1 -1
  79. package/lib/data-types/sql-variant.js +3 -6
  80. package/lib/data-types/sql-variant.js.map +1 -1
  81. package/lib/data-types/temporal.d.ts +22 -0
  82. package/lib/data-types/temporal.js +72 -0
  83. package/lib/data-types/temporal.js.map +1 -0
  84. package/lib/data-types/text.js +12 -18
  85. package/lib/data-types/text.js.map +1 -1
  86. package/lib/data-types/time.js +11 -55
  87. package/lib/data-types/time.js.map +1 -1
  88. package/lib/data-types/tinyint.js +10 -16
  89. package/lib/data-types/tinyint.js.map +1 -1
  90. package/lib/data-types/tvp.js +145 -87
  91. package/lib/data-types/tvp.js.map +1 -1
  92. package/lib/data-types/udt.js +3 -6
  93. package/lib/data-types/udt.js.map +1 -1
  94. package/lib/data-types/uniqueidentifier.js +12 -14
  95. package/lib/data-types/uniqueidentifier.js.map +1 -1
  96. package/lib/data-types/varbinary.js +58 -48
  97. package/lib/data-types/varbinary.js.map +1 -1
  98. package/lib/data-types/varchar.js +84 -50
  99. package/lib/data-types/varchar.js.map +1 -1
  100. package/lib/data-types/xml.js +3 -6
  101. package/lib/data-types/xml.js.map +1 -1
  102. package/lib/request.d.ts +23 -3
  103. package/lib/request.js +29 -3
  104. package/lib/request.js.map +1 -1
  105. package/lib/rpcrequest-payload.d.ts +21 -9
  106. package/lib/rpcrequest-payload.js +62 -51
  107. package/lib/rpcrequest-payload.js.map +1 -1
  108. package/lib/tedious.d.ts +2 -2
  109. package/lib/tedious.js +7 -1
  110. package/lib/tedious.js.map +1 -1
  111. package/lib/token/handler.js +9 -1
  112. package/lib/token/handler.js.map +1 -1
  113. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"datetime.js","names":["_datetimen","_interopRequireDefault","require","_core","e","__esModule","default","EPOCH_DATE","LocalDate","ofYearDay","NULL_LENGTH","Buffer","from","DATA_LENGTH","DateTime","id","type","name","declaration","generateTypeInfo","DateTimeN","generateParameterLength","parameter","options","value","generateParameterData","date","useUTC","of","getUTCFullYear","getUTCMonth","getUTCDate","getFullYear","getMonth","getDate","days","until","ChronoUnit","DAYS","milliseconds","threeHundredthsOfSecond","seconds","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","getHours","getMinutes","getSeconds","getMilliseconds","Math","round","buffer","alloc","writeInt32LE","writeUInt32LE","validate","collation","Date","parse","year","TypeError","isNaN","_default","exports","module"],"sources":["../../src/data-types/datetime.ts"],"sourcesContent":["import { type DataType } from '../data-type';\nimport DateTimeN from './datetimen';\nimport { ChronoUnit, LocalDate } from '@js-joda/core';\n\nconst EPOCH_DATE = LocalDate.ofYearDay(1900, 1);\nconst NULL_LENGTH = Buffer.from([0x00]);\nconst DATA_LENGTH = Buffer.from([0x08]);\n\nconst DateTime: DataType = {\n id: 0x3D,\n type: 'DATETIME',\n name: 'DateTime',\n\n declaration: function() {\n return 'datetime';\n },\n\n generateTypeInfo() {\n return Buffer.from([DateTimeN.id, 0x08]);\n },\n\n generateParameterLength(parameter, options) {\n if (parameter.value == null) {\n return NULL_LENGTH;\n }\n\n return DATA_LENGTH;\n },\n\n generateParameterData: function*(parameter, options) {\n if (parameter.value == null) {\n return;\n }\n\n const value = parameter.value as any; // Temporary solution. Remove 'any' later.\n\n let date: LocalDate;\n if (options.useUTC) {\n date = LocalDate.of(value.getUTCFullYear(), value.getUTCMonth() + 1, value.getUTCDate());\n } else {\n date = LocalDate.of(value.getFullYear(), value.getMonth() + 1, value.getDate());\n }\n\n let days = EPOCH_DATE.until(date, ChronoUnit.DAYS);\n\n let milliseconds, threeHundredthsOfSecond;\n if (options.useUTC) {\n let seconds = value.getUTCHours() * 60 * 60;\n seconds += value.getUTCMinutes() * 60;\n seconds += value.getUTCSeconds();\n milliseconds = (seconds * 1000) + value.getUTCMilliseconds();\n } else {\n let seconds = value.getHours() * 60 * 60;\n seconds += value.getMinutes() * 60;\n seconds += value.getSeconds();\n milliseconds = (seconds * 1000) + value.getMilliseconds();\n }\n\n threeHundredthsOfSecond = milliseconds / (3 + (1 / 3));\n threeHundredthsOfSecond = Math.round(threeHundredthsOfSecond);\n\n // 25920000 equals one day\n if (threeHundredthsOfSecond === 25920000) {\n days += 1;\n threeHundredthsOfSecond = 0;\n }\n\n const buffer = Buffer.alloc(8);\n buffer.writeInt32LE(days, 0);\n buffer.writeUInt32LE(threeHundredthsOfSecond, 4);\n yield buffer;\n },\n\n // TODO: type 'any' needs to be revisited.\n validate: function(value: any, collation, options): null | number {\n if (value == null) {\n return null;\n }\n\n if (!(value instanceof Date)) {\n value = new Date(Date.parse(value));\n }\n\n value = value as Date;\n\n let year;\n if (options && options.useUTC) {\n year = value.getUTCFullYear();\n } else {\n year = value.getFullYear();\n }\n\n if (year < 1753 || year > 9999) {\n throw new TypeError('Out of range.');\n }\n\n if (isNaN(value)) {\n throw new TypeError('Invalid date.');\n }\n\n return value;\n }\n};\n\nexport default DateTime;\nmodule.exports = DateTime;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"datetime.js","names":["_datetimen","_interopRequireDefault","require","_core","e","__esModule","default","EPOCH_DATE","LocalDate","ofYearDay","TYPE_INFO","Buffer","from","DateTimeN","id","DateTime","type","name","declaration","writeTypeInfo","buffer","writeBuffer","writeValue","parameter","options","value","writeUInt8","days","milliseconds","useUTC","until","of","getUTCFullYear","getUTCMonth","getUTCDate","ChronoUnit","DAYS","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","threeHundredthsOfSecond","Math","round","writeInt32LE","writeUInt32LE","validate","collation","Date","parse","year","TypeError","isNaN","_default","exports","module"],"sources":["../../src/data-types/datetime.ts"],"sourcesContent":["import { type DataType } from '../data-type';\nimport DateTimeN from './datetimen';\nimport { ChronoUnit, LocalDate } from '@js-joda/core';\n\nconst EPOCH_DATE = LocalDate.ofYearDay(1900, 1);\nconst TYPE_INFO = Buffer.from([DateTimeN.id, 0x08]);\n\nconst DateTime: DataType = {\n id: 0x3D,\n type: 'DATETIME',\n name: 'DateTime',\n\n declaration: function() {\n return 'datetime';\n },\n\n writeTypeInfo(buffer) {\n buffer.writeBuffer(TYPE_INFO);\n },\n\n writeValue(buffer, parameter, options) {\n const value = parameter.value as Date | null;\n if (value == null) {\n buffer.writeUInt8(0x00);\n return;\n }\n\n let days: number, milliseconds: number;\n if (options.useUTC) {\n days = EPOCH_DATE.until(LocalDate.of(value.getUTCFullYear(), value.getUTCMonth() + 1, value.getUTCDate()), ChronoUnit.DAYS);\n milliseconds = ((value.getUTCHours() * 60 + value.getUTCMinutes()) * 60 + value.getUTCSeconds()) * 1000 + value.getUTCMilliseconds();\n } else {\n days = EPOCH_DATE.until(LocalDate.of(value.getFullYear(), value.getMonth() + 1, value.getDate()), ChronoUnit.DAYS);\n milliseconds = ((value.getHours() * 60 + value.getMinutes()) * 60 + value.getSeconds()) * 1000 + value.getMilliseconds();\n }\n\n let threeHundredthsOfSecond = Math.round(milliseconds / (3 + (1 / 3)));\n\n // 25920000 equals one day\n if (threeHundredthsOfSecond === 25920000) {\n days += 1;\n threeHundredthsOfSecond = 0;\n }\n\n buffer.writeUInt8(0x08);\n buffer.writeInt32LE(days);\n buffer.writeUInt32LE(threeHundredthsOfSecond);\n },\n\n // TODO: type 'any' needs to be revisited.\n validate: function(value: any, collation, options): null | number {\n if (value == null) {\n return null;\n }\n\n if (!(value instanceof Date)) {\n value = new Date(Date.parse(value));\n }\n\n value = value as Date;\n\n let year;\n if (options && options.useUTC) {\n year = value.getUTCFullYear();\n } else {\n year = value.getFullYear();\n }\n\n if (year < 1753 || year > 9999) {\n throw new TypeError('Out of range.');\n }\n\n if (isNaN(value)) {\n throw new TypeError('Invalid date.');\n }\n\n return value;\n }\n};\n\nexport default DateTime;\nmodule.exports = DateTime;\n"],"mappings":"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","ignoreList":[]}
@@ -4,11 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
- var _core = require("@js-joda/core");
8
- var _writableTrackingBuffer = _interopRequireDefault(require("../tracking-buffer/writable-tracking-buffer"));
9
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
- const EPOCH_DATE = _core.LocalDate.ofYearDay(1, 1);
11
- const NULL_LENGTH = Buffer.from([0x00]);
7
+ var _temporal = require("./temporal");
12
8
  const DateTime2 = {
13
9
  id: 0x2A,
14
10
  type: 'DATETIME2N',
@@ -25,70 +21,19 @@ const DateTime2 = {
25
21
  return 7;
26
22
  }
27
23
  },
28
- generateTypeInfo(parameter, _options) {
29
- return Buffer.from([this.id, parameter.scale]);
24
+ writeTypeInfo(buffer, parameter) {
25
+ buffer.writeUInt8(this.id);
26
+ buffer.writeUInt8(parameter.scale);
30
27
  },
31
- generateParameterLength(parameter, options) {
32
- if (parameter.value == null) {
33
- return NULL_LENGTH;
34
- }
35
- switch (parameter.scale) {
36
- case 0:
37
- case 1:
38
- case 2:
39
- return Buffer.from([0x06]);
40
- case 3:
41
- case 4:
42
- return Buffer.from([0x07]);
43
- case 5:
44
- case 6:
45
- case 7:
46
- return Buffer.from([0x08]);
47
- default:
48
- throw new Error('invalid scale');
49
- }
50
- },
51
- *generateParameterData(parameter, options) {
52
- if (parameter.value == null) {
53
- return;
54
- }
28
+ writeValue(buffer, parameter, options) {
55
29
  const value = parameter.value;
56
- let scale = parameter.scale;
57
- const buffer = new _writableTrackingBuffer.default();
58
- scale = scale;
59
- let timestamp;
60
- if (options.useUTC) {
61
- timestamp = ((value.getUTCHours() * 60 + value.getUTCMinutes()) * 60 + value.getUTCSeconds()) * 1000 + value.getUTCMilliseconds();
62
- } else {
63
- timestamp = ((value.getHours() * 60 + value.getMinutes()) * 60 + value.getSeconds()) * 1000 + value.getMilliseconds();
64
- }
65
- timestamp = timestamp * Math.pow(10, scale - 3);
66
- timestamp += (value.nanosecondDelta != null ? value.nanosecondDelta : 0) * Math.pow(10, scale);
67
- timestamp = Math.round(timestamp);
68
- switch (scale) {
69
- case 0:
70
- case 1:
71
- case 2:
72
- buffer.writeUInt24LE(timestamp);
73
- break;
74
- case 3:
75
- case 4:
76
- buffer.writeUInt32LE(timestamp);
77
- break;
78
- case 5:
79
- case 6:
80
- case 7:
81
- buffer.writeUInt40LE(timestamp);
82
- }
83
- let date;
84
- if (options.useUTC) {
85
- date = _core.LocalDate.of(value.getUTCFullYear(), value.getUTCMonth() + 1, value.getUTCDate());
86
- } else {
87
- date = _core.LocalDate.of(value.getFullYear(), value.getMonth() + 1, value.getDate());
30
+ if (value == null) {
31
+ buffer.writeUInt8(0x00);
32
+ return;
88
33
  }
89
- const days = EPOCH_DATE.until(date, _core.ChronoUnit.DAYS);
90
- buffer.writeUInt24LE(days);
91
- yield buffer.data;
34
+ buffer.writeUInt8((0, _temporal.timeLength)(parameter.scale) + 3);
35
+ (0, _temporal.writeTimeOfDay)(buffer, value, parameter.scale, options.useUTC);
36
+ buffer.writeUInt24LE((0, _temporal.daysSinceYearOne)(value, options.useUTC));
92
37
  },
93
38
  validate: function (value, collation, options) {
94
39
  if (value == null) {
@@ -115,4 +60,4 @@ const DateTime2 = {
115
60
  };
116
61
  var _default = exports.default = DateTime2;
117
62
  module.exports = DateTime2;
118
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29yZSIsInJlcXVpcmUiLCJfd3JpdGFibGVUcmFja2luZ0J1ZmZlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJFUE9DSF9EQVRFIiwiTG9jYWxEYXRlIiwib2ZZZWFyRGF5IiwiTlVMTF9MRU5HVEgiLCJCdWZmZXIiLCJmcm9tIiwiRGF0ZVRpbWUyIiwiaWQiLCJ0eXBlIiwibmFtZSIsImRlY2xhcmF0aW9uIiwicGFyYW1ldGVyIiwicmVzb2x2ZVNjYWxlIiwic2NhbGUiLCJ2YWx1ZSIsImdlbmVyYXRlVHlwZUluZm8iLCJfb3B0aW9ucyIsImdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoIiwib3B0aW9ucyIsIkVycm9yIiwiZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhIiwiYnVmZmVyIiwiV3JpdGFibGVUcmFja2luZ0J1ZmZlciIsInRpbWVzdGFtcCIsInVzZVVUQyIsImdldFVUQ0hvdXJzIiwiZ2V0VVRDTWludXRlcyIsImdldFVUQ1NlY29uZHMiLCJnZXRVVENNaWxsaXNlY29uZHMiLCJnZXRIb3VycyIsImdldE1pbnV0ZXMiLCJnZXRTZWNvbmRzIiwiZ2V0TWlsbGlzZWNvbmRzIiwiTWF0aCIsInBvdyIsIm5hbm9zZWNvbmREZWx0YSIsInJvdW5kIiwid3JpdGVVSW50MjRMRSIsIndyaXRlVUludDMyTEUiLCJ3cml0ZVVJbnQ0MExFIiwiZGF0ZSIsIm9mIiwiZ2V0VVRDRnVsbFllYXIiLCJnZXRVVENNb250aCIsImdldFVUQ0RhdGUiLCJnZXRGdWxsWWVhciIsImdldE1vbnRoIiwiZ2V0RGF0ZSIsImRheXMiLCJ1bnRpbCIsIkNocm9ub1VuaXQiLCJEQVlTIiwiZGF0YSIsInZhbGlkYXRlIiwiY29sbGF0aW9uIiwiRGF0ZSIsInBhcnNlIiwieWVhciIsIlR5cGVFcnJvciIsImlzTmFOIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwibW9kdWxlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RhdGEtdHlwZXMvZGF0ZXRpbWUyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgRGF0YVR5cGUgfSBmcm9tICcuLi9kYXRhLXR5cGUnO1xuaW1wb3J0IHsgQ2hyb25vVW5pdCwgTG9jYWxEYXRlIH0gZnJvbSAnQGpzLWpvZGEvY29yZSc7XG5pbXBvcnQgV3JpdGFibGVUcmFja2luZ0J1ZmZlciBmcm9tICcuLi90cmFja2luZy1idWZmZXIvd3JpdGFibGUtdHJhY2tpbmctYnVmZmVyJztcblxuY29uc3QgRVBPQ0hfREFURSA9IExvY2FsRGF0ZS5vZlllYXJEYXkoMSwgMSk7XG5jb25zdCBOVUxMX0xFTkdUSCA9IEJ1ZmZlci5mcm9tKFsweDAwXSk7XG5cbmNvbnN0IERhdGVUaW1lMjogRGF0YVR5cGUgJiB7IHJlc29sdmVTY2FsZTogTm9uTnVsbGFibGU8RGF0YVR5cGVbJ3Jlc29sdmVTY2FsZSddPiB9ID0ge1xuICBpZDogMHgyQSxcbiAgdHlwZTogJ0RBVEVUSU1FMk4nLFxuICBuYW1lOiAnRGF0ZVRpbWUyJyxcblxuICBkZWNsYXJhdGlvbjogZnVuY3Rpb24ocGFyYW1ldGVyKSB7XG4gICAgcmV0dXJuICdkYXRldGltZTIoJyArICh0aGlzLnJlc29sdmVTY2FsZShwYXJhbWV0ZXIpKSArICcpJztcbiAgfSxcblxuICByZXNvbHZlU2NhbGU6IGZ1bmN0aW9uKHBhcmFtZXRlcikge1xuICAgIGlmIChwYXJhbWV0ZXIuc2NhbGUgIT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHBhcmFtZXRlci5zY2FsZTtcbiAgICB9IGVsc2UgaWYgKHBhcmFtZXRlci52YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiA3O1xuICAgIH1cbiAgfSxcblxuICBnZW5lcmF0ZVR5cGVJbmZvKHBhcmFtZXRlciwgX29wdGlvbnMpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20oW3RoaXMuaWQsIHBhcmFtZXRlci5zY2FsZSFdKTtcbiAgfSxcblxuICBnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aChwYXJhbWV0ZXIsIG9wdGlvbnMpIHtcbiAgICBpZiAocGFyYW1ldGVyLnZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiBOVUxMX0xFTkdUSDtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHBhcmFtZXRlci5zY2FsZSEpIHtcbiAgICAgIGNhc2UgMDpcbiAgICAgIGNhc2UgMTpcbiAgICAgIGNhc2UgMjpcbiAgICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKFsweDA2XSk7XG5cbiAgICAgIGNhc2UgMzpcbiAgICAgIGNhc2UgNDpcbiAgICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKFsweDA3XSk7XG5cbiAgICAgIGNhc2UgNTpcbiAgICAgIGNhc2UgNjpcbiAgICAgIGNhc2UgNzpcbiAgICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKFsweDA4XSk7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBzY2FsZScpO1xuICAgIH1cbiAgfSxcblxuICAqZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhKHBhcmFtZXRlciwgb3B0aW9ucykge1xuICAgIGlmIChwYXJhbWV0ZXIudmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbHVlID0gcGFyYW1ldGVyLnZhbHVlO1xuICAgIGxldCBzY2FsZSA9IHBhcmFtZXRlci5zY2FsZTtcblxuICAgIGNvbnN0IGJ1ZmZlciA9IG5ldyBXcml0YWJsZVRyYWNraW5nQnVmZmVyKCk7XG4gICAgc2NhbGUgPSBzY2FsZSE7XG5cbiAgICBsZXQgdGltZXN0YW1wOiBudW1iZXI7XG4gICAgaWYgKG9wdGlvbnMudXNlVVRDKSB7XG4gICAgICB0aW1lc3RhbXAgPSAoKHZhbHVlLmdldFVUQ0hvdXJzKCkgKiA2MCArIHZhbHVlLmdldFVUQ01pbnV0ZXMoKSkgKiA2MCArIHZhbHVlLmdldFVUQ1NlY29uZHMoKSkgKiAxMDAwICsgdmFsdWUuZ2V0VVRDTWlsbGlzZWNvbmRzKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRpbWVzdGFtcCA9ICgodmFsdWUuZ2V0SG91cnMoKSAqIDYwICsgdmFsdWUuZ2V0TWludXRlcygpKSAqIDYwICsgdmFsdWUuZ2V0U2Vjb25kcygpKSAqIDEwMDAgKyB2YWx1ZS5nZXRNaWxsaXNlY29uZHMoKTtcbiAgICB9XG4gICAgdGltZXN0YW1wID0gdGltZXN0YW1wICogTWF0aC5wb3coMTAsIHNjYWxlIC0gMyk7XG4gICAgdGltZXN0YW1wICs9ICh2YWx1ZS5uYW5vc2Vjb25kRGVsdGEgIT0gbnVsbCA/IHZhbHVlLm5hbm9zZWNvbmREZWx0YSA6IDApICogTWF0aC5wb3coMTAsIHNjYWxlKTtcbiAgICB0aW1lc3RhbXAgPSBNYXRoLnJvdW5kKHRpbWVzdGFtcCk7XG5cbiAgICBzd2l0Y2ggKHNjYWxlKSB7XG4gICAgICBjYXNlIDA6XG4gICAgICBjYXNlIDE6XG4gICAgICBjYXNlIDI6XG4gICAgICAgIGJ1ZmZlci53cml0ZVVJbnQyNExFKHRpbWVzdGFtcCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAzOlxuICAgICAgY2FzZSA0OlxuICAgICAgICBidWZmZXIud3JpdGVVSW50MzJMRSh0aW1lc3RhbXApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgNTpcbiAgICAgIGNhc2UgNjpcbiAgICAgIGNhc2UgNzpcbiAgICAgICAgYnVmZmVyLndyaXRlVUludDQwTEUodGltZXN0YW1wKTtcbiAgICB9XG5cbiAgICBsZXQgZGF0ZTtcbiAgICBpZiAob3B0aW9ucy51c2VVVEMpIHtcbiAgICAgIGRhdGUgPSBMb2NhbERhdGUub2YodmFsdWUuZ2V0VVRDRnVsbFllYXIoKSwgdmFsdWUuZ2V0VVRDTW9udGgoKSArIDEsIHZhbHVlLmdldFVUQ0RhdGUoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRhdGUgPSBMb2NhbERhdGUub2YodmFsdWUuZ2V0RnVsbFllYXIoKSwgdmFsdWUuZ2V0TW9udGgoKSArIDEsIHZhbHVlLmdldERhdGUoKSk7XG4gICAgfVxuXG4gICAgY29uc3QgZGF5cyA9IEVQT0NIX0RBVEUudW50aWwoZGF0ZSwgQ2hyb25vVW5pdC5EQVlTKTtcbiAgICBidWZmZXIud3JpdGVVSW50MjRMRShkYXlzKTtcbiAgICB5aWVsZCBidWZmZXIuZGF0YTtcbiAgfSxcblxuICB2YWxpZGF0ZTogZnVuY3Rpb24odmFsdWU6IGFueSwgY29sbGF0aW9uLCBvcHRpb25zKTogbnVsbCB8IG51bWJlciB7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmICghKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkpIHtcbiAgICAgIHZhbHVlID0gbmV3IERhdGUoRGF0ZS5wYXJzZSh2YWx1ZSkpO1xuICAgIH1cblxuICAgIHZhbHVlID0gdmFsdWUgYXMgRGF0ZTtcblxuICAgIGxldCB5ZWFyO1xuICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMudXNlVVRDKSB7XG4gICAgICB5ZWFyID0gdmFsdWUuZ2V0VVRDRnVsbFllYXIoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgeWVhciA9IHZhbHVlLmdldEZ1bGxZZWFyKCk7XG4gICAgfVxuXG4gICAgaWYgKHllYXIgPCAxIHx8IHllYXIgPiA5OTk5KSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdPdXQgb2YgcmFuZ2UuJyk7XG4gICAgfVxuXG4gICAgaWYgKGlzTmFOKHZhbHVlKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBkYXRlLicpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgRGF0ZVRpbWUyO1xubW9kdWxlLmV4cG9ydHMgPSBEYXRlVGltZTI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLElBQUFBLEtBQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLHVCQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFBaUYsU0FBQUUsdUJBQUFDLENBQUEsV0FBQUEsQ0FBQSxJ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
63
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdGVtcG9yYWwiLCJyZXF1aXJlIiwiRGF0ZVRpbWUyIiwiaWQiLCJ0eXBlIiwibmFtZSIsImRlY2xhcmF0aW9uIiwicGFyYW1ldGVyIiwicmVzb2x2ZVNjYWxlIiwic2NhbGUiLCJ2YWx1ZSIsIndyaXRlVHlwZUluZm8iLCJidWZmZXIiLCJ3cml0ZVVJbnQ4Iiwid3JpdGVWYWx1ZSIsIm9wdGlvbnMiLCJ0aW1lTGVuZ3RoIiwid3JpdGVUaW1lT2ZEYXkiLCJ1c2VVVEMiLCJ3cml0ZVVJbnQyNExFIiwiZGF5c1NpbmNlWWVhck9uZSIsInZhbGlkYXRlIiwiY29sbGF0aW9uIiwiRGF0ZSIsInBhcnNlIiwieWVhciIsImdldFVUQ0Z1bGxZZWFyIiwiZ2V0RnVsbFllYXIiLCJUeXBlRXJyb3IiLCJpc05hTiIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsImRlZmF1bHQiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YS10eXBlcy9kYXRldGltZTIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBEYXRhVHlwZSB9IGZyb20gJy4uL2RhdGEtdHlwZSc7XG5pbXBvcnQgeyBkYXlzU2luY2VZZWFyT25lLCB0aW1lTGVuZ3RoLCB3cml0ZVRpbWVPZkRheSwgdHlwZSBUZW1wb3JhbFZhbHVlIH0gZnJvbSAnLi90ZW1wb3JhbCc7XG5cbmNvbnN0IERhdGVUaW1lMjogRGF0YVR5cGUgJiB7IHJlc29sdmVTY2FsZTogTm9uTnVsbGFibGU8RGF0YVR5cGVbJ3Jlc29sdmVTY2FsZSddPiB9ID0ge1xuICBpZDogMHgyQSxcbiAgdHlwZTogJ0RBVEVUSU1FMk4nLFxuICBuYW1lOiAnRGF0ZVRpbWUyJyxcblxuICBkZWNsYXJhdGlvbjogZnVuY3Rpb24ocGFyYW1ldGVyKSB7XG4gICAgcmV0dXJuICdkYXRldGltZTIoJyArICh0aGlzLnJlc29sdmVTY2FsZShwYXJhbWV0ZXIpKSArICcpJztcbiAgfSxcblxuICByZXNvbHZlU2NhbGU6IGZ1bmN0aW9uKHBhcmFtZXRlcikge1xuICAgIGlmIChwYXJhbWV0ZXIuc2NhbGUgIT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHBhcmFtZXRlci5zY2FsZTtcbiAgICB9IGVsc2UgaWYgKHBhcmFtZXRlci52YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiA3O1xuICAgIH1cbiAgfSxcblxuICB3cml0ZVR5cGVJbmZvKGJ1ZmZlciwgcGFyYW1ldGVyKSB7XG4gICAgYnVmZmVyLndyaXRlVUludDgodGhpcy5pZCk7XG4gICAgYnVmZmVyLndyaXRlVUludDgocGFyYW1ldGVyLnNjYWxlISk7XG4gIH0sXG5cbiAgd3JpdGVWYWx1ZShidWZmZXIsIHBhcmFtZXRlciwgb3B0aW9ucykge1xuICAgIGNvbnN0IHZhbHVlID0gcGFyYW1ldGVyLnZhbHVlIGFzIFRlbXBvcmFsVmFsdWUgfCBudWxsO1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICBidWZmZXIud3JpdGVVSW50OCgweDAwKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBidWZmZXIud3JpdGVVSW50OCh0aW1lTGVuZ3RoKHBhcmFtZXRlci5zY2FsZSkgKyAzKTtcbiAgICB3cml0ZVRpbWVPZkRheShidWZmZXIsIHZhbHVlLCBwYXJhbWV0ZXIuc2NhbGUhLCBvcHRpb25zLnVzZVVUQyk7XG4gICAgYnVmZmVyLndyaXRlVUludDI0TEUoZGF5c1NpbmNlWWVhck9uZSh2YWx1ZSwgb3B0aW9ucy51c2VVVEMpKTtcbiAgfSxcblxuICB2YWxpZGF0ZTogZnVuY3Rpb24odmFsdWU6IGFueSwgY29sbGF0aW9uLCBvcHRpb25zKTogbnVsbCB8IG51bWJlciB7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmICghKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkpIHtcbiAgICAgIHZhbHVlID0gbmV3IERhdGUoRGF0ZS5wYXJzZSh2YWx1ZSkpO1xuICAgIH1cblxuICAgIHZhbHVlID0gdmFsdWUgYXMgRGF0ZTtcblxuICAgIGxldCB5ZWFyO1xuICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMudXNlVVRDKSB7XG4gICAgICB5ZWFyID0gdmFsdWUuZ2V0VVRDRnVsbFllYXIoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgeWVhciA9IHZhbHVlLmdldEZ1bGxZZWFyKCk7XG4gICAgfVxuXG4gICAgaWYgKHllYXIgPCAxIHx8IHllYXIgPiA5OTk5KSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdPdXQgb2YgcmFuZ2UuJyk7XG4gICAgfVxuXG4gICAgaWYgKGlzTmFOKHZhbHVlKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBkYXRlLicpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgRGF0ZVRpbWUyO1xubW9kdWxlLmV4cG9ydHMgPSBEYXRlVGltZTI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLElBQUFBLFNBQUEsR0FBQUMsT0FBQTtBQUVBLE1BQU1DLFNBQTZFLEdBQUc7RUFDcEZDLEVBQUUsRUFBRSxJQUFJO0VBQ1JDLElBQUksRUFBRSxZQUFZO0VBQ2xCQyxJQUFJLEVBQUUsV0FBVztFQUVqQkMsV0FBVyxFQUFFLFNBQUFBLENBQVNDLFNBQVMsRUFBRTtJQUMvQixPQUFPLFlBQVksR0FBSSxJQUFJLENBQUNDLFlBQVksQ0FBQ0QsU0FBUyxDQUFFLEdBQUcsR0FBRztFQUM1RCxDQUFDO0VBRURDLFlBQVksRUFBRSxTQUFBQSxDQUFTRCxTQUFTLEVBQUU7SUFDaEMsSUFBSUEsU0FBUyxDQUFDRSxLQUFLLElBQUksSUFBSSxFQUFFO01BQzNCLE9BQU9GLFNBQVMsQ0FBQ0UsS0FBSztJQUN4QixDQUFDLE1BQU0sSUFBSUYsU0FBUyxDQUFDRyxLQUFLLEtBQUssSUFBSSxFQUFFO01BQ25DLE9BQU8sQ0FBQztJQUNWLENBQUMsTUFBTTtNQUNMLE9BQU8sQ0FBQztJQUNWO0VBQ0YsQ0FBQztFQUVEQyxhQUFhQSxDQUFDQyxNQUFNLEVBQUVMLFNBQVMsRUFBRTtJQUMvQkssTUFBTSxDQUFDQyxVQUFVLENBQUMsSUFBSSxDQUFDVixFQUFFLENBQUM7SUFDMUJTLE1BQU0sQ0FBQ0MsVUFBVSxDQUFDTixTQUFTLENBQUNFLEtBQU0sQ0FBQztFQUNyQyxDQUFDO0VBRURLLFVBQVVBLENBQUNGLE1BQU0sRUFBRUwsU0FBUyxFQUFFUSxPQUFPLEVBQUU7SUFDckMsTUFBTUwsS0FBSyxHQUFHSCxTQUFTLENBQUNHLEtBQTZCO0lBQ3JELElBQUlBLEtBQUssSUFBSSxJQUFJLEVBQUU7TUFDakJFLE1BQU0sQ0FBQ0MsVUFBVSxDQUFDLElBQUksQ0FBQztNQUN2QjtJQUNGO0lBRUFELE1BQU0sQ0FBQ0MsVUFBVSxDQUFDLElBQUFHLG9CQUFVLEVBQUNULFNBQVMsQ0FBQ0UsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xELElBQUFRLHdCQUFjLEVBQUNMLE1BQU0sRUFBRUYsS0FBSyxFQUFFSCxTQUFTLENBQUNFLEtBQUssRUFBR00sT0FBTyxDQUFDRyxNQUFNLENBQUM7SUFDL0ROLE1BQU0sQ0FBQ08sYUFBYSxDQUFDLElBQUFDLDBCQUFnQixFQUFDVixLQUFLLEVBQUVLLE9BQU8sQ0FBQ0csTUFBTSxDQUFDLENBQUM7RUFDL0QsQ0FBQztFQUVERyxRQUFRLEVBQUUsU0FBQUEsQ0FBU1gsS0FBVSxFQUFFWSxTQUFTLEVBQUVQLE9BQU8sRUFBaUI7SUFDaEUsSUFBSUwsS0FBSyxJQUFJLElBQUksRUFBRTtNQUNqQixPQUFPLElBQUk7SUFDYjtJQUVBLElBQUksRUFBRUEsS0FBSyxZQUFZYSxJQUFJLENBQUMsRUFBRTtNQUM1QmIsS0FBSyxHQUFHLElBQUlhLElBQUksQ0FBQ0EsSUFBSSxDQUFDQyxLQUFLLENBQUNkLEtBQUssQ0FBQyxDQUFDO0lBQ3JDO0lBRUFBLEtBQUssR0FBR0EsS0FBYTtJQUVyQixJQUFJZSxJQUFJO0lBQ1IsSUFBSVYsT0FBTyxJQUFJQSxPQUFPLENBQUNHLE1BQU0sRUFBRTtNQUM3Qk8sSUFBSSxHQUFHZixLQUFLLENBQUNnQixjQUFjLENBQUMsQ0FBQztJQUMvQixDQUFDLE1BQU07TUFDTEQsSUFBSSxHQUFHZixLQUFLLENBQUNpQixXQUFXLENBQUMsQ0FBQztJQUM1QjtJQUVBLElBQUlGLElBQUksR0FBRyxDQUFDLElBQUlBLElBQUksR0FBRyxJQUFJLEVBQUU7TUFDM0IsTUFBTSxJQUFJRyxTQUFTLENBQUMsZUFBZSxDQUFDO0lBQ3RDO0lBRUEsSUFBSUMsS0FBSyxDQUFDbkIsS0FBSyxDQUFDLEVBQUU7TUFDaEIsTUFBTSxJQUFJa0IsU0FBUyxDQUFDLGVBQWUsQ0FBQztJQUN0QztJQUVBLE9BQU9sQixLQUFLO0VBQ2Q7QUFDRixDQUFDO0FBQUMsSUFBQW9CLFFBQUEsR0FBQUMsT0FBQSxDQUFBQyxPQUFBLEdBRWE5QixTQUFTO0FBQ3hCK0IsTUFBTSxDQUFDRixPQUFPLEdBQUc3QixTQUFTIiwiaWdub3JlTGlzdCI6W119
@@ -1 +1 @@
1
- {"version":3,"file":"datetime2.js","names":["_core","require","_writableTrackingBuffer","_interopRequireDefault","e","__esModule","default","EPOCH_DATE","LocalDate","ofYearDay","NULL_LENGTH","Buffer","from","DateTime2","id","type","name","declaration","parameter","resolveScale","scale","value","generateTypeInfo","_options","generateParameterLength","options","Error","generateParameterData","buffer","WritableTrackingBuffer","timestamp","useUTC","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","getHours","getMinutes","getSeconds","getMilliseconds","Math","pow","nanosecondDelta","round","writeUInt24LE","writeUInt32LE","writeUInt40LE","date","of","getUTCFullYear","getUTCMonth","getUTCDate","getFullYear","getMonth","getDate","days","until","ChronoUnit","DAYS","data","validate","collation","Date","parse","year","TypeError","isNaN","_default","exports","module"],"sources":["../../src/data-types/datetime2.ts"],"sourcesContent":["import { type DataType } from '../data-type';\nimport { ChronoUnit, LocalDate } from '@js-joda/core';\nimport WritableTrackingBuffer from '../tracking-buffer/writable-tracking-buffer';\n\nconst EPOCH_DATE = LocalDate.ofYearDay(1, 1);\nconst NULL_LENGTH = Buffer.from([0x00]);\n\nconst DateTime2: DataType & { resolveScale: NonNullable<DataType['resolveScale']> } = {\n id: 0x2A,\n type: 'DATETIME2N',\n name: 'DateTime2',\n\n declaration: function(parameter) {\n return 'datetime2(' + (this.resolveScale(parameter)) + ')';\n },\n\n resolveScale: function(parameter) {\n if (parameter.scale != null) {\n return parameter.scale;\n } else if (parameter.value === null) {\n return 0;\n } else {\n return 7;\n }\n },\n\n generateTypeInfo(parameter, _options) {\n return Buffer.from([this.id, parameter.scale!]);\n },\n\n generateParameterLength(parameter, options) {\n if (parameter.value == null) {\n return NULL_LENGTH;\n }\n\n switch (parameter.scale!) {\n case 0:\n case 1:\n case 2:\n return Buffer.from([0x06]);\n\n case 3:\n case 4:\n return Buffer.from([0x07]);\n\n case 5:\n case 6:\n case 7:\n return Buffer.from([0x08]);\n\n default:\n throw new Error('invalid scale');\n }\n },\n\n *generateParameterData(parameter, options) {\n if (parameter.value == null) {\n return;\n }\n\n const value = parameter.value;\n let scale = parameter.scale;\n\n const buffer = new WritableTrackingBuffer();\n scale = scale!;\n\n let timestamp: number;\n if (options.useUTC) {\n timestamp = ((value.getUTCHours() * 60 + value.getUTCMinutes()) * 60 + value.getUTCSeconds()) * 1000 + value.getUTCMilliseconds();\n } else {\n timestamp = ((value.getHours() * 60 + value.getMinutes()) * 60 + value.getSeconds()) * 1000 + value.getMilliseconds();\n }\n timestamp = timestamp * Math.pow(10, scale - 3);\n timestamp += (value.nanosecondDelta != null ? value.nanosecondDelta : 0) * Math.pow(10, scale);\n timestamp = Math.round(timestamp);\n\n switch (scale) {\n case 0:\n case 1:\n case 2:\n buffer.writeUInt24LE(timestamp);\n break;\n case 3:\n case 4:\n buffer.writeUInt32LE(timestamp);\n break;\n case 5:\n case 6:\n case 7:\n buffer.writeUInt40LE(timestamp);\n }\n\n let date;\n if (options.useUTC) {\n date = LocalDate.of(value.getUTCFullYear(), value.getUTCMonth() + 1, value.getUTCDate());\n } else {\n date = LocalDate.of(value.getFullYear(), value.getMonth() + 1, value.getDate());\n }\n\n const days = EPOCH_DATE.until(date, ChronoUnit.DAYS);\n buffer.writeUInt24LE(days);\n yield buffer.data;\n },\n\n validate: function(value: any, collation, options): null | number {\n if (value == null) {\n return null;\n }\n\n if (!(value instanceof Date)) {\n value = new Date(Date.parse(value));\n }\n\n value = value as Date;\n\n let year;\n if (options && options.useUTC) {\n year = value.getUTCFullYear();\n } else {\n year = value.getFullYear();\n }\n\n if (year < 1 || year > 9999) {\n throw new TypeError('Out of range.');\n }\n\n if (isNaN(value)) {\n throw new TypeError('Invalid date.');\n }\n\n return value;\n }\n};\n\nexport default DateTime2;\nmodule.exports = DateTime2;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"datetime2.js","names":["_temporal","require","DateTime2","id","type","name","declaration","parameter","resolveScale","scale","value","writeTypeInfo","buffer","writeUInt8","writeValue","options","timeLength","writeTimeOfDay","useUTC","writeUInt24LE","daysSinceYearOne","validate","collation","Date","parse","year","getUTCFullYear","getFullYear","TypeError","isNaN","_default","exports","default","module"],"sources":["../../src/data-types/datetime2.ts"],"sourcesContent":["import { type DataType } from '../data-type';\nimport { daysSinceYearOne, timeLength, writeTimeOfDay, type TemporalValue } from './temporal';\n\nconst DateTime2: DataType & { resolveScale: NonNullable<DataType['resolveScale']> } = {\n id: 0x2A,\n type: 'DATETIME2N',\n name: 'DateTime2',\n\n declaration: function(parameter) {\n return 'datetime2(' + (this.resolveScale(parameter)) + ')';\n },\n\n resolveScale: function(parameter) {\n if (parameter.scale != null) {\n return parameter.scale;\n } else if (parameter.value === null) {\n return 0;\n } else {\n return 7;\n }\n },\n\n writeTypeInfo(buffer, parameter) {\n buffer.writeUInt8(this.id);\n buffer.writeUInt8(parameter.scale!);\n },\n\n writeValue(buffer, parameter, options) {\n const value = parameter.value as TemporalValue | null;\n if (value == null) {\n buffer.writeUInt8(0x00);\n return;\n }\n\n buffer.writeUInt8(timeLength(parameter.scale) + 3);\n writeTimeOfDay(buffer, value, parameter.scale!, options.useUTC);\n buffer.writeUInt24LE(daysSinceYearOne(value, options.useUTC));\n },\n\n validate: function(value: any, collation, options): null | number {\n if (value == null) {\n return null;\n }\n\n if (!(value instanceof Date)) {\n value = new Date(Date.parse(value));\n }\n\n value = value as Date;\n\n let year;\n if (options && options.useUTC) {\n year = value.getUTCFullYear();\n } else {\n year = value.getFullYear();\n }\n\n if (year < 1 || year > 9999) {\n throw new TypeError('Out of range.');\n }\n\n if (isNaN(value)) {\n throw new TypeError('Invalid date.');\n }\n\n return value;\n }\n};\n\nexport default DateTime2;\nmodule.exports = DateTime2;\n"],"mappings":";;;;;;AACA,IAAAA,SAAA,GAAAC,OAAA;AAEA,MAAMC,SAA6E,GAAG;EACpFC,EAAE,EAAE,IAAI;EACRC,IAAI,EAAE,YAAY;EAClBC,IAAI,EAAE,WAAW;EAEjBC,WAAW,EAAE,SAAAA,CAASC,SAAS,EAAE;IAC/B,OAAO,YAAY,GAAI,IAAI,CAACC,YAAY,CAACD,SAAS,CAAE,GAAG,GAAG;EAC5D,CAAC;EAEDC,YAAY,EAAE,SAAAA,CAASD,SAAS,EAAE;IAChC,IAAIA,SAAS,CAACE,KAAK,IAAI,IAAI,EAAE;MAC3B,OAAOF,SAAS,CAACE,KAAK;IACxB,CAAC,MAAM,IAAIF,SAAS,CAACG,KAAK,KAAK,IAAI,EAAE;MACnC,OAAO,CAAC;IACV,CAAC,MAAM;MACL,OAAO,CAAC;IACV;EACF,CAAC;EAEDC,aAAaA,CAACC,MAAM,EAAEL,SAAS,EAAE;IAC/BK,MAAM,CAACC,UAAU,CAAC,IAAI,CAACV,EAAE,CAAC;IAC1BS,MAAM,CAACC,UAAU,CAACN,SAAS,CAACE,KAAM,CAAC;EACrC,CAAC;EAEDK,UAAUA,CAACF,MAAM,EAAEL,SAAS,EAAEQ,OAAO,EAAE;IACrC,MAAML,KAAK,GAAGH,SAAS,CAACG,KAA6B;IACrD,IAAIA,KAAK,IAAI,IAAI,EAAE;MACjBE,MAAM,CAACC,UAAU,CAAC,IAAI,CAAC;MACvB;IACF;IAEAD,MAAM,CAACC,UAAU,CAAC,IAAAG,oBAAU,EAACT,SAAS,CAACE,KAAK,CAAC,GAAG,CAAC,CAAC;IAClD,IAAAQ,wBAAc,EAACL,MAAM,EAAEF,KAAK,EAAEH,SAAS,CAACE,KAAK,EAAGM,OAAO,CAACG,MAAM,CAAC;IAC/DN,MAAM,CAACO,aAAa,CAAC,IAAAC,0BAAgB,EAACV,KAAK,EAAEK,OAAO,CAACG,MAAM,CAAC,CAAC;EAC/D,CAAC;EAEDG,QAAQ,EAAE,SAAAA,CAASX,KAAU,EAAEY,SAAS,EAAEP,OAAO,EAAiB;IAChE,IAAIL,KAAK,IAAI,IAAI,EAAE;MACjB,OAAO,IAAI;IACb;IAEA,IAAI,EAAEA,KAAK,YAAYa,IAAI,CAAC,EAAE;MAC5Bb,KAAK,GAAG,IAAIa,IAAI,CAACA,IAAI,CAACC,KAAK,CAACd,KAAK,CAAC,CAAC;IACrC;IAEAA,KAAK,GAAGA,KAAa;IAErB,IAAIe,IAAI;IACR,IAAIV,OAAO,IAAIA,OAAO,CAACG,MAAM,EAAE;MAC7BO,IAAI,GAAGf,KAAK,CAACgB,cAAc,CAAC,CAAC;IAC/B,CAAC,MAAM;MACLD,IAAI,GAAGf,KAAK,CAACiB,WAAW,CAAC,CAAC;IAC5B;IAEA,IAAIF,IAAI,GAAG,CAAC,IAAIA,IAAI,GAAG,IAAI,EAAE;MAC3B,MAAM,IAAIG,SAAS,CAAC,eAAe,CAAC;IACtC;IAEA,IAAIC,KAAK,CAACnB,KAAK,CAAC,EAAE;MAChB,MAAM,IAAIkB,SAAS,CAAC,eAAe,CAAC;IACtC;IAEA,OAAOlB,KAAK;EACd;AACF,CAAC;AAAC,IAAAoB,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEa9B,SAAS;AACxB+B,MAAM,CAACF,OAAO,GAAG7B,SAAS","ignoreList":[]}
@@ -11,13 +11,10 @@ const DateTimeN = {
11
11
  declaration() {
12
12
  throw new Error('not implemented');
13
13
  },
14
- generateTypeInfo() {
14
+ writeTypeInfo() {
15
15
  throw new Error('not implemented');
16
16
  },
17
- generateParameterLength() {
18
- throw new Error('not implemented');
19
- },
20
- generateParameterData() {
17
+ writeValue() {
21
18
  throw new Error('not implemented');
22
19
  },
23
20
  validate() {
@@ -26,4 +23,4 @@ const DateTimeN = {
26
23
  };
27
24
  var _default = exports.default = DateTimeN;
28
25
  module.exports = DateTimeN;
29
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEYXRlVGltZU4iLCJpZCIsInR5cGUiLCJuYW1lIiwiZGVjbGFyYXRpb24iLCJFcnJvciIsImdlbmVyYXRlVHlwZUluZm8iLCJnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aCIsImdlbmVyYXRlUGFyYW1ldGVyRGF0YSIsInZhbGlkYXRlIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwiZGVmYXVsdCIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhLXR5cGVzL2RhdGV0aW1lbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIERhdGFUeXBlIH0gZnJvbSAnLi4vZGF0YS10eXBlJztcblxuY29uc3QgRGF0ZVRpbWVOOiBEYXRhVHlwZSA9IHtcbiAgaWQ6IDB4NkYsXG4gIHR5cGU6ICdEQVRFVElNTicsXG4gIG5hbWU6ICdEYXRlVGltZU4nLFxuXG4gIGRlY2xhcmF0aW9uKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignbm90IGltcGxlbWVudGVkJyk7XG4gIH0sXG5cbiAgZ2VuZXJhdGVUeXBlSW5mbygpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCBpbXBsZW1lbnRlZCcpO1xuICB9LFxuXG4gIGdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignbm90IGltcGxlbWVudGVkJyk7XG4gIH0sXG5cbiAgZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignbm90IGltcGxlbWVudGVkJyk7XG4gIH0sXG5cbiAgdmFsaWRhdGUoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgRGF0ZVRpbWVOO1xubW9kdWxlLmV4cG9ydHMgPSBEYXRlVGltZU47XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUVBLE1BQU1BLFNBQW1CLEdBQUc7RUFDMUJDLEVBQUUsRUFBRSxJQUFJO0VBQ1JDLElBQUksRUFBRSxVQUFVO0VBQ2hCQyxJQUFJLEVBQUUsV0FBVztFQUVqQkMsV0FBV0EsQ0FBQSxFQUFHO0lBQ1osTUFBTSxJQUFJQyxLQUFLLENBQUMsaUJBQWlCLENBQUM7RUFDcEMsQ0FBQztFQUVEQyxnQkFBZ0JBLENBQUEsRUFBRztJQUNqQixNQUFNLElBQUlELEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztFQUNwQyxDQUFDO0VBRURFLHVCQUF1QkEsQ0FBQSxFQUFHO0lBQ3hCLE1BQU0sSUFBSUYsS0FBSyxDQUFDLGlCQUFpQixDQUFDO0VBQ3BDLENBQUM7RUFFREcscUJBQXFCQSxDQUFBLEVBQUc7SUFDdEIsTUFBTSxJQUFJSCxLQUFLLENBQUMsaUJBQWlCLENBQUM7RUFDcEMsQ0FBQztFQUVESSxRQUFRQSxDQUFBLEVBQUc7SUFDVCxNQUFNLElBQUlKLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztFQUNwQztBQUNGLENBQUM7QUFBQyxJQUFBSyxRQUFBLEdBQUFDLE9BQUEsQ0FBQUMsT0FBQSxHQUVhWixTQUFTO0FBQ3hCYSxNQUFNLENBQUNGLE9BQU8sR0FBR1gsU0FBUyIsImlnbm9yZUxpc3QiOltdfQ==
26
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEYXRlVGltZU4iLCJpZCIsInR5cGUiLCJuYW1lIiwiZGVjbGFyYXRpb24iLCJFcnJvciIsIndyaXRlVHlwZUluZm8iLCJ3cml0ZVZhbHVlIiwidmFsaWRhdGUiLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJkZWZhdWx0IiwibW9kdWxlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RhdGEtdHlwZXMvZGF0ZXRpbWVuLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgRGF0YVR5cGUgfSBmcm9tICcuLi9kYXRhLXR5cGUnO1xuXG5jb25zdCBEYXRlVGltZU46IERhdGFUeXBlID0ge1xuICBpZDogMHg2RixcbiAgdHlwZTogJ0RBVEVUSU1OJyxcbiAgbmFtZTogJ0RhdGVUaW1lTicsXG5cbiAgZGVjbGFyYXRpb24oKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdub3QgaW1wbGVtZW50ZWQnKTtcbiAgfSxcblxuICB3cml0ZVR5cGVJbmZvKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignbm90IGltcGxlbWVudGVkJyk7XG4gIH0sXG5cbiAgd3JpdGVWYWx1ZSgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCBpbXBsZW1lbnRlZCcpO1xuICB9LFxuXG4gIHZhbGlkYXRlKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignbm90IGltcGxlbWVudGVkJyk7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IERhdGVUaW1lTjtcbm1vZHVsZS5leHBvcnRzID0gRGF0ZVRpbWVOO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFFQSxNQUFNQSxTQUFtQixHQUFHO0VBQzFCQyxFQUFFLEVBQUUsSUFBSTtFQUNSQyxJQUFJLEVBQUUsVUFBVTtFQUNoQkMsSUFBSSxFQUFFLFdBQVc7RUFFakJDLFdBQVdBLENBQUEsRUFBRztJQUNaLE1BQU0sSUFBSUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDO0VBQ3BDLENBQUM7RUFFREMsYUFBYUEsQ0FBQSxFQUFHO0lBQ2QsTUFBTSxJQUFJRCxLQUFLLENBQUMsaUJBQWlCLENBQUM7RUFDcEMsQ0FBQztFQUVERSxVQUFVQSxDQUFBLEVBQUc7SUFDWCxNQUFNLElBQUlGLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztFQUNwQyxDQUFDO0VBRURHLFFBQVFBLENBQUEsRUFBRztJQUNULE1BQU0sSUFBSUgsS0FBSyxDQUFDLGlCQUFpQixDQUFDO0VBQ3BDO0FBQ0YsQ0FBQztBQUFDLElBQUFJLFFBQUEsR0FBQUMsT0FBQSxDQUFBQyxPQUFBLEdBRWFYLFNBQVM7QUFDeEJZLE1BQU0sQ0FBQ0YsT0FBTyxHQUFHVixTQUFTIiwiaWdub3JlTGlzdCI6W119
@@ -1 +1 @@
1
- {"version":3,"file":"datetimen.js","names":["DateTimeN","id","type","name","declaration","Error","generateTypeInfo","generateParameterLength","generateParameterData","validate","_default","exports","default","module"],"sources":["../../src/data-types/datetimen.ts"],"sourcesContent":["import { type DataType } from '../data-type';\n\nconst DateTimeN: DataType = {\n id: 0x6F,\n type: 'DATETIMN',\n name: 'DateTimeN',\n\n declaration() {\n throw new Error('not implemented');\n },\n\n generateTypeInfo() {\n throw new Error('not implemented');\n },\n\n generateParameterLength() {\n throw new Error('not implemented');\n },\n\n generateParameterData() {\n throw new Error('not implemented');\n },\n\n validate() {\n throw new Error('not implemented');\n }\n};\n\nexport default DateTimeN;\nmodule.exports = DateTimeN;\n"],"mappings":";;;;;;AAEA,MAAMA,SAAmB,GAAG;EAC1BC,EAAE,EAAE,IAAI;EACRC,IAAI,EAAE,UAAU;EAChBC,IAAI,EAAE,WAAW;EAEjBC,WAAWA,CAAA,EAAG;IACZ,MAAM,IAAIC,KAAK,CAAC,iBAAiB,CAAC;EACpC,CAAC;EAEDC,gBAAgBA,CAAA,EAAG;IACjB,MAAM,IAAID,KAAK,CAAC,iBAAiB,CAAC;EACpC,CAAC;EAEDE,uBAAuBA,CAAA,EAAG;IACxB,MAAM,IAAIF,KAAK,CAAC,iBAAiB,CAAC;EACpC,CAAC;EAEDG,qBAAqBA,CAAA,EAAG;IACtB,MAAM,IAAIH,KAAK,CAAC,iBAAiB,CAAC;EACpC,CAAC;EAEDI,QAAQA,CAAA,EAAG;IACT,MAAM,IAAIJ,KAAK,CAAC,iBAAiB,CAAC;EACpC;AACF,CAAC;AAAC,IAAAK,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEaZ,SAAS;AACxBa,MAAM,CAACF,OAAO,GAAGX,SAAS","ignoreList":[]}
1
+ {"version":3,"file":"datetimen.js","names":["DateTimeN","id","type","name","declaration","Error","writeTypeInfo","writeValue","validate","_default","exports","default","module"],"sources":["../../src/data-types/datetimen.ts"],"sourcesContent":["import { type DataType } from '../data-type';\n\nconst DateTimeN: DataType = {\n id: 0x6F,\n type: 'DATETIMN',\n name: 'DateTimeN',\n\n declaration() {\n throw new Error('not implemented');\n },\n\n writeTypeInfo() {\n throw new Error('not implemented');\n },\n\n writeValue() {\n throw new Error('not implemented');\n },\n\n validate() {\n throw new Error('not implemented');\n }\n};\n\nexport default DateTimeN;\nmodule.exports = DateTimeN;\n"],"mappings":";;;;;;AAEA,MAAMA,SAAmB,GAAG;EAC1BC,EAAE,EAAE,IAAI;EACRC,IAAI,EAAE,UAAU;EAChBC,IAAI,EAAE,WAAW;EAEjBC,WAAWA,CAAA,EAAG;IACZ,MAAM,IAAIC,KAAK,CAAC,iBAAiB,CAAC;EACpC,CAAC;EAEDC,aAAaA,CAAA,EAAG;IACd,MAAM,IAAID,KAAK,CAAC,iBAAiB,CAAC;EACpC,CAAC;EAEDE,UAAUA,CAAA,EAAG;IACX,MAAM,IAAIF,KAAK,CAAC,iBAAiB,CAAC;EACpC,CAAC;EAEDG,QAAQA,CAAA,EAAG;IACT,MAAM,IAAIH,KAAK,CAAC,iBAAiB,CAAC;EACpC;AACF,CAAC;AAAC,IAAAI,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEaX,SAAS;AACxBY,MAAM,CAACF,OAAO,GAAGV,SAAS","ignoreList":[]}
@@ -4,11 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
- var _core = require("@js-joda/core");
8
- var _writableTrackingBuffer = _interopRequireDefault(require("../tracking-buffer/writable-tracking-buffer"));
9
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
- const EPOCH_DATE = _core.LocalDate.ofYearDay(1, 1);
11
- const NULL_LENGTH = Buffer.from([0x00]);
7
+ var _temporal = require("./temporal");
12
8
  const DateTimeOffset = {
13
9
  id: 0x2B,
14
10
  type: 'DATETIMEOFFSETN',
@@ -25,63 +21,20 @@ const DateTimeOffset = {
25
21
  return 7;
26
22
  }
27
23
  },
28
- generateTypeInfo(parameter) {
29
- return Buffer.from([this.id, parameter.scale]);
24
+ writeTypeInfo(buffer, parameter) {
25
+ buffer.writeUInt8(this.id);
26
+ buffer.writeUInt8(parameter.scale);
30
27
  },
31
- generateParameterLength(parameter, options) {
32
- if (parameter.value == null) {
33
- return NULL_LENGTH;
34
- }
35
- switch (parameter.scale) {
36
- case 0:
37
- case 1:
38
- case 2:
39
- return Buffer.from([0x08]);
40
- case 3:
41
- case 4:
42
- return Buffer.from([0x09]);
43
- case 5:
44
- case 6:
45
- case 7:
46
- return Buffer.from([0x0A]);
47
- default:
48
- throw new Error('invalid scale');
49
- }
50
- },
51
- *generateParameterData(parameter, options) {
52
- if (parameter.value == null) {
53
- return;
54
- }
28
+ writeValue(buffer, parameter) {
55
29
  const value = parameter.value;
56
- let scale = parameter.scale;
57
- const buffer = new _writableTrackingBuffer.default();
58
- scale = scale;
59
- let timestamp;
60
- timestamp = ((value.getUTCHours() * 60 + value.getUTCMinutes()) * 60 + value.getUTCSeconds()) * 1000 + value.getMilliseconds();
61
- timestamp = timestamp * Math.pow(10, scale - 3);
62
- timestamp += (value.nanosecondDelta != null ? value.nanosecondDelta : 0) * Math.pow(10, scale);
63
- timestamp = Math.round(timestamp);
64
- switch (scale) {
65
- case 0:
66
- case 1:
67
- case 2:
68
- buffer.writeUInt24LE(timestamp);
69
- break;
70
- case 3:
71
- case 4:
72
- buffer.writeUInt32LE(timestamp);
73
- break;
74
- case 5:
75
- case 6:
76
- case 7:
77
- buffer.writeUInt40LE(timestamp);
30
+ if (value == null) {
31
+ buffer.writeUInt8(0x00);
32
+ return;
78
33
  }
79
- const date = _core.LocalDate.of(value.getUTCFullYear(), value.getUTCMonth() + 1, value.getUTCDate());
80
- const days = EPOCH_DATE.until(date, _core.ChronoUnit.DAYS);
81
- buffer.writeUInt24LE(days);
82
- const offset = -value.getTimezoneOffset();
83
- buffer.writeInt16LE(offset);
84
- yield buffer.data;
34
+ buffer.writeUInt8((0, _temporal.timeLength)(parameter.scale) + 5);
35
+ (0, _temporal.writeTimeOfDay)(buffer, value, parameter.scale, true);
36
+ buffer.writeUInt24LE((0, _temporal.daysSinceYearOne)(value, true));
37
+ buffer.writeInt16LE(-value.getTimezoneOffset());
85
38
  },
86
39
  validate: function (value, collation, options) {
87
40
  if (value == null) {
@@ -108,4 +61,4 @@ const DateTimeOffset = {
108
61
  };
109
62
  var _default = exports.default = DateTimeOffset;
110
63
  module.exports = DateTimeOffset;
111
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29yZSIsInJlcXVpcmUiLCJfd3JpdGFibGVUcmFja2luZ0J1ZmZlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJFUE9DSF9EQVRFIiwiTG9jYWxEYXRlIiwib2ZZZWFyRGF5IiwiTlVMTF9MRU5HVEgiLCJCdWZmZXIiLCJmcm9tIiwiRGF0ZVRpbWVPZmZzZXQiLCJpZCIsInR5cGUiLCJuYW1lIiwiZGVjbGFyYXRpb24iLCJwYXJhbWV0ZXIiLCJyZXNvbHZlU2NhbGUiLCJzY2FsZSIsInZhbHVlIiwiZ2VuZXJhdGVUeXBlSW5mbyIsImdlbmVyYXRlUGFyYW1ldGVyTGVuZ3RoIiwib3B0aW9ucyIsIkVycm9yIiwiZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhIiwiYnVmZmVyIiwiV3JpdGFibGVUcmFja2luZ0J1ZmZlciIsInRpbWVzdGFtcCIsImdldFVUQ0hvdXJzIiwiZ2V0VVRDTWludXRlcyIsImdldFVUQ1NlY29uZHMiLCJnZXRNaWxsaXNlY29uZHMiLCJNYXRoIiwicG93IiwibmFub3NlY29uZERlbHRhIiwicm91bmQiLCJ3cml0ZVVJbnQyNExFIiwid3JpdGVVSW50MzJMRSIsIndyaXRlVUludDQwTEUiLCJkYXRlIiwib2YiLCJnZXRVVENGdWxsWWVhciIsImdldFVUQ01vbnRoIiwiZ2V0VVRDRGF0ZSIsImRheXMiLCJ1bnRpbCIsIkNocm9ub1VuaXQiLCJEQVlTIiwib2Zmc2V0IiwiZ2V0VGltZXpvbmVPZmZzZXQiLCJ3cml0ZUludDE2TEUiLCJkYXRhIiwidmFsaWRhdGUiLCJjb2xsYXRpb24iLCJEYXRlIiwicGFyc2UiLCJ5ZWFyIiwidXNlVVRDIiwiZ2V0RnVsbFllYXIiLCJUeXBlRXJyb3IiLCJpc05hTiIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhLXR5cGVzL2RhdGV0aW1lb2Zmc2V0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgRGF0YVR5cGUgfSBmcm9tICcuLi9kYXRhLXR5cGUnO1xuaW1wb3J0IHsgQ2hyb25vVW5pdCwgTG9jYWxEYXRlIH0gZnJvbSAnQGpzLWpvZGEvY29yZSc7XG5pbXBvcnQgV3JpdGFibGVUcmFja2luZ0J1ZmZlciBmcm9tICcuLi90cmFja2luZy1idWZmZXIvd3JpdGFibGUtdHJhY2tpbmctYnVmZmVyJztcblxuY29uc3QgRVBPQ0hfREFURSA9IExvY2FsRGF0ZS5vZlllYXJEYXkoMSwgMSk7XG5jb25zdCBOVUxMX0xFTkdUSCA9IEJ1ZmZlci5mcm9tKFsweDAwXSk7XG5cbmNvbnN0IERhdGVUaW1lT2Zmc2V0OiBEYXRhVHlwZSAmIHsgcmVzb2x2ZVNjYWxlOiBOb25OdWxsYWJsZTxEYXRhVHlwZVsncmVzb2x2ZVNjYWxlJ10+IH0gPSB7XG4gIGlkOiAweDJCLFxuICB0eXBlOiAnREFURVRJTUVPRkZTRVROJyxcbiAgbmFtZTogJ0RhdGVUaW1lT2Zmc2V0JyxcbiAgZGVjbGFyYXRpb246IGZ1bmN0aW9uKHBhcmFtZXRlcikge1xuICAgIHJldHVybiAnZGF0ZXRpbWVvZmZzZXQoJyArICh0aGlzLnJlc29sdmVTY2FsZShwYXJhbWV0ZXIpKSArICcpJztcbiAgfSxcbiAgcmVzb2x2ZVNjYWxlOiBmdW5jdGlvbihwYXJhbWV0ZXIpIHtcbiAgICBpZiAocGFyYW1ldGVyLnNjYWxlICE9IG51bGwpIHtcbiAgICAgIHJldHVybiBwYXJhbWV0ZXIuc2NhbGU7XG4gICAgfSBlbHNlIGlmIChwYXJhbWV0ZXIudmFsdWUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gNztcbiAgICB9XG4gIH0sXG5cbiAgZ2VuZXJhdGVUeXBlSW5mbyhwYXJhbWV0ZXIpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20oW3RoaXMuaWQsIHBhcmFtZXRlci5zY2FsZSFdKTtcbiAgfSxcblxuICBnZW5lcmF0ZVBhcmFtZXRlckxlbmd0aChwYXJhbWV0ZXIsIG9wdGlvbnMpIHtcbiAgICBpZiAocGFyYW1ldGVyLnZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiBOVUxMX0xFTkdUSDtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHBhcmFtZXRlci5zY2FsZSkge1xuICAgICAgY2FzZSAwOlxuICAgICAgY2FzZSAxOlxuICAgICAgY2FzZSAyOlxuICAgICAgICByZXR1cm4gQnVmZmVyLmZyb20oWzB4MDhdKTtcblxuICAgICAgY2FzZSAzOlxuICAgICAgY2FzZSA0OlxuICAgICAgICByZXR1cm4gQnVmZmVyLmZyb20oWzB4MDldKTtcblxuICAgICAgY2FzZSA1OlxuICAgICAgY2FzZSA2OlxuICAgICAgY2FzZSA3OlxuICAgICAgICByZXR1cm4gQnVmZmVyLmZyb20oWzB4MEFdKTtcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHNjYWxlJyk7XG4gICAgfVxuICB9LFxuXG4gICogZ2VuZXJhdGVQYXJhbWV0ZXJEYXRhKHBhcmFtZXRlciwgb3B0aW9ucykge1xuICAgIGlmIChwYXJhbWV0ZXIudmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbHVlID0gcGFyYW1ldGVyLnZhbHVlO1xuICAgIGxldCBzY2FsZSA9IHBhcmFtZXRlci5zY2FsZTtcblxuICAgIGNvbnN0IGJ1ZmZlciA9IG5ldyBXcml0YWJsZVRyYWNraW5nQnVmZmVyKCk7XG4gICAgc2NhbGUgPSBzY2FsZSE7XG5cbiAgICBsZXQgdGltZXN0YW1wOiBudW1iZXI7XG4gICAgdGltZXN0YW1wID0gKCh2YWx1ZS5nZXRVVENIb3VycygpICogNjAgKyB2YWx1ZS5nZXRVVENNaW51dGVzKCkpICogNjAgKyB2YWx1ZS5nZXRVVENTZWNvbmRzKCkpICogMTAwMCArIHZhbHVlLmdldE1pbGxpc2Vjb25kcygpO1xuICAgIHRpbWVzdGFtcCA9IHRpbWVzdGFtcCAqIE1hdGgucG93KDEwLCBzY2FsZSAtIDMpO1xuICAgIHRpbWVzdGFtcCArPSAodmFsdWUubmFub3NlY29uZERlbHRhICE9IG51bGwgPyB2YWx1ZS5uYW5vc2Vjb25kRGVsdGEgOiAwKSAqIE1hdGgucG93KDEwLCBzY2FsZSk7XG4gICAgdGltZXN0YW1wID0gTWF0aC5yb3VuZCh0aW1lc3RhbXApO1xuXG4gICAgc3dpdGNoIChzY2FsZSkge1xuICAgICAgY2FzZSAwOlxuICAgICAgY2FzZSAxOlxuICAgICAgY2FzZSAyOlxuICAgICAgICBidWZmZXIud3JpdGVVSW50MjRMRSh0aW1lc3RhbXApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMzpcbiAgICAgIGNhc2UgNDpcbiAgICAgICAgYnVmZmVyLndyaXRlVUludDMyTEUodGltZXN0YW1wKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDU6XG4gICAgICBjYXNlIDY6XG4gICAgICBjYXNlIDc6XG4gICAgICAgIGJ1ZmZlci53cml0ZVVJbnQ0MExFKHRpbWVzdGFtcCk7XG4gICAgfVxuXG4gICAgY29uc3QgZGF0ZSA9IExvY2FsRGF0ZS5vZih2YWx1ZS5nZXRVVENGdWxsWWVhcigpLCB2YWx1ZS5nZXRVVENNb250aCgpICsgMSwgdmFsdWUuZ2V0VVRDRGF0ZSgpKTtcbiAgICBjb25zdCBkYXlzID0gRVBPQ0hfREFURS51bnRpbChkYXRlLCBDaHJvbm9Vbml0LkRBWVMpO1xuICAgIGJ1ZmZlci53cml0ZVVJbnQyNExFKGRheXMpO1xuXG4gICAgY29uc3Qgb2Zmc2V0ID0gLXZhbHVlLmdldFRpbWV6b25lT2Zmc2V0KCk7XG4gICAgYnVmZmVyLndyaXRlSW50MTZMRShvZmZzZXQpO1xuICAgIHlpZWxkIGJ1ZmZlci5kYXRhO1xuICB9LFxuICB2YWxpZGF0ZTogZnVuY3Rpb24odmFsdWU6IGFueSwgY29sbGF0aW9uLCBvcHRpb25zKTogbnVsbCB8IG51bWJlciB7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmICghKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkpIHtcbiAgICAgIHZhbHVlID0gbmV3IERhdGUoRGF0ZS5wYXJzZSh2YWx1ZSkpO1xuICAgIH1cblxuICAgIHZhbHVlID0gdmFsdWUgYXMgRGF0ZTtcblxuICAgIGxldCB5ZWFyO1xuICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMudXNlVVRDKSB7XG4gICAgICB5ZWFyID0gdmFsdWUuZ2V0VVRDRnVsbFllYXIoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgeWVhciA9IHZhbHVlLmdldEZ1bGxZZWFyKCk7XG4gICAgfVxuXG4gICAgaWYgKHllYXIgPCAxIHx8IHllYXIgPiA5OTk5KSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdPdXQgb2YgcmFuZ2UuJyk7XG4gICAgfVxuXG4gICAgaWYgKGlzTmFOKHZhbHVlKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBkYXRlLicpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgRGF0ZVRpbWVPZmZzZXQ7XG5tb2R1bGUuZXhwb3J0cyA9IERhdGVUaW1lT2Zmc2V0O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSxJQUFBQSxLQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyx1QkFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQWlGLFNBQUFFLHVCQUFBQyxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBRWpGLE1BQU1HLFVBQVUsR0FBR0MsZUFBUyxDQUFDQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUM1QyxNQUFNQyxXQUFXLEdBQUdDLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFdkMsTUFBTUMsY0FBa0YsR0FBRztFQUN6RkMsRUFBRSxFQUFFLElBQUk7RUFDUkMsSUFBSSxFQUFFLGlCQUFpQjtFQUN2QkMsSUFBSSxFQUFF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
64
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdGVtcG9yYWwiLCJyZXF1aXJlIiwiRGF0ZVRpbWVPZmZzZXQiLCJpZCIsInR5cGUiLCJuYW1lIiwiZGVjbGFyYXRpb24iLCJwYXJhbWV0ZXIiLCJyZXNvbHZlU2NhbGUiLCJzY2FsZSIsInZhbHVlIiwid3JpdGVUeXBlSW5mbyIsImJ1ZmZlciIsIndyaXRlVUludDgiLCJ3cml0ZVZhbHVlIiwidGltZUxlbmd0aCIsIndyaXRlVGltZU9mRGF5Iiwid3JpdGVVSW50MjRMRSIsImRheXNTaW5jZVllYXJPbmUiLCJ3cml0ZUludDE2TEUiLCJnZXRUaW1lem9uZU9mZnNldCIsInZhbGlkYXRlIiwiY29sbGF0aW9uIiwib3B0aW9ucyIsIkRhdGUiLCJwYXJzZSIsInllYXIiLCJ1c2VVVEMiLCJnZXRVVENGdWxsWWVhciIsImdldEZ1bGxZZWFyIiwiVHlwZUVycm9yIiwiaXNOYU4iLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJkZWZhdWx0IiwibW9kdWxlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RhdGEtdHlwZXMvZGF0ZXRpbWVvZmZzZXQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBEYXRhVHlwZSB9IGZyb20gJy4uL2RhdGEtdHlwZSc7XG5pbXBvcnQgeyBkYXlzU2luY2VZZWFyT25lLCB0aW1lTGVuZ3RoLCB3cml0ZVRpbWVPZkRheSwgdHlwZSBUZW1wb3JhbFZhbHVlIH0gZnJvbSAnLi90ZW1wb3JhbCc7XG5cbmNvbnN0IERhdGVUaW1lT2Zmc2V0OiBEYXRhVHlwZSAmIHsgcmVzb2x2ZVNjYWxlOiBOb25OdWxsYWJsZTxEYXRhVHlwZVsncmVzb2x2ZVNjYWxlJ10+IH0gPSB7XG4gIGlkOiAweDJCLFxuICB0eXBlOiAnREFURVRJTUVPRkZTRVROJyxcbiAgbmFtZTogJ0RhdGVUaW1lT2Zmc2V0JyxcbiAgZGVjbGFyYXRpb246IGZ1bmN0aW9uKHBhcmFtZXRlcikge1xuICAgIHJldHVybiAnZGF0ZXRpbWVvZmZzZXQoJyArICh0aGlzLnJlc29sdmVTY2FsZShwYXJhbWV0ZXIpKSArICcpJztcbiAgfSxcbiAgcmVzb2x2ZVNjYWxlOiBmdW5jdGlvbihwYXJhbWV0ZXIpIHtcbiAgICBpZiAocGFyYW1ldGVyLnNjYWxlICE9IG51bGwpIHtcbiAgICAgIHJldHVybiBwYXJhbWV0ZXIuc2NhbGU7XG4gICAgfSBlbHNlIGlmIChwYXJhbWV0ZXIudmFsdWUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gNztcbiAgICB9XG4gIH0sXG5cbiAgd3JpdGVUeXBlSW5mbyhidWZmZXIsIHBhcmFtZXRlcikge1xuICAgIGJ1ZmZlci53cml0ZVVJbnQ4KHRoaXMuaWQpO1xuICAgIGJ1ZmZlci53cml0ZVVJbnQ4KHBhcmFtZXRlci5zY2FsZSEpO1xuICB9LFxuXG4gIHdyaXRlVmFsdWUoYnVmZmVyLCBwYXJhbWV0ZXIpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHBhcmFtZXRlci52YWx1ZSBhcyBUZW1wb3JhbFZhbHVlIHwgbnVsbDtcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgYnVmZmVyLndyaXRlVUludDgoMHgwMCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYnVmZmVyLndyaXRlVUludDgodGltZUxlbmd0aChwYXJhbWV0ZXIuc2NhbGUpICsgNSk7XG4gICAgd3JpdGVUaW1lT2ZEYXkoYnVmZmVyLCB2YWx1ZSwgcGFyYW1ldGVyLnNjYWxlISwgdHJ1ZSk7XG4gICAgYnVmZmVyLndyaXRlVUludDI0TEUoZGF5c1NpbmNlWWVhck9uZSh2YWx1ZSwgdHJ1ZSkpO1xuICAgIGJ1ZmZlci53cml0ZUludDE2TEUoLXZhbHVlLmdldFRpbWV6b25lT2Zmc2V0KCkpO1xuICB9LFxuXG4gIHZhbGlkYXRlOiBmdW5jdGlvbih2YWx1ZTogYW55LCBjb2xsYXRpb24sIG9wdGlvbnMpOiBudWxsIHwgbnVtYmVyIHtcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKCEodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSkge1xuICAgICAgdmFsdWUgPSBuZXcgRGF0ZShEYXRlLnBhcnNlKHZhbHVlKSk7XG4gICAgfVxuXG4gICAgdmFsdWUgPSB2YWx1ZSBhcyBEYXRlO1xuXG4gICAgbGV0IHllYXI7XG4gICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy51c2VVVEMpIHtcbiAgICAgIHllYXIgPSB2YWx1ZS5nZXRVVENGdWxsWWVhcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB5ZWFyID0gdmFsdWUuZ2V0RnVsbFllYXIoKTtcbiAgICB9XG5cbiAgICBpZiAoeWVhciA8IDEgfHwgeWVhciA+IDk5OTkpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ091dCBvZiByYW5nZS4nKTtcbiAgICB9XG5cbiAgICBpZiAoaXNOYU4odmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIGRhdGUuJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBEYXRlVGltZU9mZnNldDtcbm1vZHVsZS5leHBvcnRzID0gRGF0ZVRpbWVPZmZzZXQ7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLElBQUFBLFNBQUEsR0FBQUMsT0FBQTtBQUVBLE1BQU1DLGNBQWtGLEdBQUc7RUFDekZDLEVBQUUsRUFBRSxJQUFJO0VBQ1JDLElBQUksRUFBRSxpQkFBaUI7RUFDdkJDLElBQUksRUFBRSxnQkFBZ0I7RUFDdEJDLFdBQVcsRUFBRSxTQUFBQSxDQUFTQyxTQUFTLEVBQUU7SUFDL0IsT0FBTyxpQkFBaUIsR0FBSSxJQUFJLENBQUNDLFlBQVksQ0FBQ0QsU0FBUyxDQUFFLEdBQUcsR0FBRztFQUNqRSxDQUFDO0VBQ0RDLFlBQVksRUFBRSxTQUFBQSxDQUFTRCxTQUFTLEVBQUU7SUFDaEMsSUFBSUEsU0FBUyxDQUFDRSxLQUFLLElBQUksSUFBSSxFQUFFO01BQzNCLE9BQU9GLFNBQVMsQ0FBQ0UsS0FBSztJQUN4QixDQUFDLE1BQU0sSUFBSUYsU0FBUyxDQUFDRyxLQUFLLEtBQUssSUFBSSxFQUFFO01BQ25DLE9BQU8sQ0FBQztJQUNWLENBQUMsTUFBTTtNQUNMLE9BQU8sQ0FBQztJQUNWO0VBQ0YsQ0FBQztFQUVEQyxhQUFhQSxDQUFDQyxNQUFNLEVBQUVMLFNBQVMsRUFBRTtJQUMvQkssTUFBTSxDQUFDQyxVQUFVLENBQUMsSUFBSSxDQUFDVixFQUFFLENBQUM7SUFDMUJTLE1BQU0sQ0FBQ0MsVUFBVSxDQUFDTixTQUFTLENBQUNFLEtBQU0sQ0FBQztFQUNyQyxDQUFDO0VBRURLLFVBQVVBLENBQUNGLE1BQU0sRUFBRUwsU0FBUyxFQUFFO0lBQzVCLE1BQU1HLEtBQUssR0FBR0gsU0FBUyxDQUFDRyxLQUE2QjtJQUNyRCxJQUFJQSxLQUFLLElBQUksSUFBSSxFQUFFO01BQ2pCRSxNQUFNLENBQUNDLFVBQVUsQ0FBQyxJQUFJLENBQUM7TUFDdkI7SUFDRjtJQUVBRCxNQUFNLENBQUNDLFVBQVUsQ0FBQyxJQUFBRSxvQkFBVSxFQUFDUixTQUFTLENBQUNFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsRCxJQUFBTyx3QkFBYyxFQUFDSixNQUFNLEVBQUVGLEtBQUssRUFBRUgsU0FBUyxDQUFDRSxLQUFLLEVBQUcsSUFBSSxDQUFDO0lBQ3JERyxNQUFNLENBQUNLLGFBQWEsQ0FBQyxJQUFBQywwQkFBZ0IsRUFBQ1IsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ25ERSxNQUFNLENBQUNPLFlBQVksQ0FBQyxDQUFDVCxLQUFLLENBQUNVLGlCQUFpQixDQUFDLENBQUMsQ0FBQztFQUNqRCxDQUFDO0VBRURDLFFBQVEsRUFBRSxTQUFBQSxDQUFTWCxLQUFVLEVBQUVZLFNBQVMsRUFBRUMsT0FBTyxFQUFpQjtJQUNoRSxJQUFJYixLQUFLLElBQUksSUFBSSxFQUFFO01BQ2pCLE9BQU8sSUFBSTtJQUNiO0lBRUEsSUFBSSxFQUFFQSxLQUFLLFlBQVljLElBQUksQ0FBQyxFQUFFO01BQzVCZCxLQUFLLEdBQUcsSUFBSWMsSUFBSSxDQUFDQSxJQUFJLENBQUNDLEtBQUssQ0FBQ2YsS0FBSyxDQUFDLENBQUM7SUFDckM7SUFFQUEsS0FBSyxHQUFHQSxLQUFhO0lBRXJCLElBQUlnQixJQUFJO0lBQ1IsSUFBSUgsT0FBTyxJQUFJQSxPQUFPLENBQUNJLE1BQU0sRUFBRTtNQUM3QkQsSUFBSSxHQUFHaEIsS0FBSyxDQUFDa0IsY0FBYyxDQUFDLENBQUM7SUFDL0IsQ0FBQyxNQUFNO01BQ0xGLElBQUksR0FBR2hCLEtBQUssQ0FBQ21CLFdBQVcsQ0FBQyxDQUFDO0lBQzVCO0lBRUEsSUFBSUgsSUFBSSxHQUFHLENBQUMsSUFBSUEsSUFBSSxHQUFHLElBQUksRUFBRTtNQUMzQixNQUFNLElBQUlJLFNBQVMsQ0FBQyxlQUFlLENBQUM7SUFDdEM7SUFFQSxJQUFJQyxLQUFLLENBQUNyQixLQUFLLENBQUMsRUFBRTtNQUNoQixNQUFNLElBQUlvQixTQUFTLENBQUMsZUFBZSxDQUFDO0lBQ3RDO0lBRUEsT0FBT3BCLEtBQUs7RUFDZDtBQUNGLENBQUM7QUFBQyxJQUFBc0IsUUFBQSxHQUFBQyxPQUFBLENBQUFDLE9BQUEsR0FFYWhDLGNBQWM7QUFDN0JpQyxNQUFNLENBQUNGLE9BQU8sR0FBRy9CLGNBQWMiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -1 +1 @@
1
- {"version":3,"file":"datetimeoffset.js","names":["_core","require","_writableTrackingBuffer","_interopRequireDefault","e","__esModule","default","EPOCH_DATE","LocalDate","ofYearDay","NULL_LENGTH","Buffer","from","DateTimeOffset","id","type","name","declaration","parameter","resolveScale","scale","value","generateTypeInfo","generateParameterLength","options","Error","generateParameterData","buffer","WritableTrackingBuffer","timestamp","getUTCHours","getUTCMinutes","getUTCSeconds","getMilliseconds","Math","pow","nanosecondDelta","round","writeUInt24LE","writeUInt32LE","writeUInt40LE","date","of","getUTCFullYear","getUTCMonth","getUTCDate","days","until","ChronoUnit","DAYS","offset","getTimezoneOffset","writeInt16LE","data","validate","collation","Date","parse","year","useUTC","getFullYear","TypeError","isNaN","_default","exports","module"],"sources":["../../src/data-types/datetimeoffset.ts"],"sourcesContent":["import { type DataType } from '../data-type';\nimport { ChronoUnit, LocalDate } from '@js-joda/core';\nimport WritableTrackingBuffer from '../tracking-buffer/writable-tracking-buffer';\n\nconst EPOCH_DATE = LocalDate.ofYearDay(1, 1);\nconst NULL_LENGTH = Buffer.from([0x00]);\n\nconst DateTimeOffset: DataType & { resolveScale: NonNullable<DataType['resolveScale']> } = {\n id: 0x2B,\n type: 'DATETIMEOFFSETN',\n name: 'DateTimeOffset',\n declaration: function(parameter) {\n return 'datetimeoffset(' + (this.resolveScale(parameter)) + ')';\n },\n resolveScale: function(parameter) {\n if (parameter.scale != null) {\n return parameter.scale;\n } else if (parameter.value === null) {\n return 0;\n } else {\n return 7;\n }\n },\n\n generateTypeInfo(parameter) {\n return Buffer.from([this.id, parameter.scale!]);\n },\n\n generateParameterLength(parameter, options) {\n if (parameter.value == null) {\n return NULL_LENGTH;\n }\n\n switch (parameter.scale) {\n case 0:\n case 1:\n case 2:\n return Buffer.from([0x08]);\n\n case 3:\n case 4:\n return Buffer.from([0x09]);\n\n case 5:\n case 6:\n case 7:\n return Buffer.from([0x0A]);\n\n default:\n throw new Error('invalid scale');\n }\n },\n\n * generateParameterData(parameter, options) {\n if (parameter.value == null) {\n return;\n }\n\n const value = parameter.value;\n let scale = parameter.scale;\n\n const buffer = new WritableTrackingBuffer();\n scale = scale!;\n\n let timestamp: number;\n timestamp = ((value.getUTCHours() * 60 + value.getUTCMinutes()) * 60 + value.getUTCSeconds()) * 1000 + value.getMilliseconds();\n timestamp = timestamp * Math.pow(10, scale - 3);\n timestamp += (value.nanosecondDelta != null ? value.nanosecondDelta : 0) * Math.pow(10, scale);\n timestamp = Math.round(timestamp);\n\n switch (scale) {\n case 0:\n case 1:\n case 2:\n buffer.writeUInt24LE(timestamp);\n break;\n case 3:\n case 4:\n buffer.writeUInt32LE(timestamp);\n break;\n case 5:\n case 6:\n case 7:\n buffer.writeUInt40LE(timestamp);\n }\n\n const date = LocalDate.of(value.getUTCFullYear(), value.getUTCMonth() + 1, value.getUTCDate());\n const days = EPOCH_DATE.until(date, ChronoUnit.DAYS);\n buffer.writeUInt24LE(days);\n\n const offset = -value.getTimezoneOffset();\n buffer.writeInt16LE(offset);\n yield buffer.data;\n },\n validate: function(value: any, collation, options): null | number {\n if (value == null) {\n return null;\n }\n\n if (!(value instanceof Date)) {\n value = new Date(Date.parse(value));\n }\n\n value = value as Date;\n\n let year;\n if (options && options.useUTC) {\n year = value.getUTCFullYear();\n } else {\n year = value.getFullYear();\n }\n\n if (year < 1 || year > 9999) {\n throw new TypeError('Out of range.');\n }\n\n if (isNaN(value)) {\n throw new TypeError('Invalid date.');\n }\n\n return value;\n }\n};\n\nexport default DateTimeOffset;\nmodule.exports = DateTimeOffset;\n"],"mappings":";;;;;;AACA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,uBAAA,GAAAC,sBAAA,CAAAF,OAAA;AAAiF,SAAAE,uBAAAC,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEjF,MAAMG,UAAU,GAAGC,eAAS,CAACC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;AAC5C,MAAMC,WAAW,GAAGC,MAAM,CAACC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AAEvC,MAAMC,cAAkF,GAAG;EACzFC,EAAE,EAAE,IAAI;EACRC,IAAI,EAAE,iBAAiB;EACvBC,IAAI,EAAE,gBAAgB;EACtBC,WAAW,EAAE,SAAAA,CAASC,SAAS,EAAE;IAC/B,OAAO,iBAAiB,GAAI,IAAI,CAACC,YAAY,CAACD,SAAS,CAAE,GAAG,GAAG;EACjE,CAAC;EACDC,YAAY,EAAE,SAAAA,CAASD,SAAS,EAAE;IAChC,IAAIA,SAAS,CAACE,KAAK,IAAI,IAAI,EAAE;MAC3B,OAAOF,SAAS,CAACE,KAAK;IACxB,CAAC,MAAM,IAAIF,SAAS,CAACG,KAAK,KAAK,IAAI,EAAE;MACnC,OAAO,CAAC;IACV,CAAC,MAAM;MACL,OAAO,CAAC;IACV;EACF,CAAC;EAEDC,gBAAgBA,CAACJ,SAAS,EAAE;IAC1B,OAAOP,MAAM,CAACC,IAAI,CAAC,CAAC,IAAI,CAACE,EAAE,EAAEI,SAAS,CAACE,KAAK,CAAE,CAAC;EACjD,CAAC;EAEDG,uBAAuBA,CAACL,SAAS,EAAEM,OAAO,EAAE;IAC1C,IAAIN,SAAS,CAACG,KAAK,IAAI,IAAI,EAAE;MAC3B,OAAOX,WAAW;IACpB;IAEA,QAAQQ,SAAS,CAACE,KAAK;MACrB,KAAK,CAAC;MACN,KAAK,CAAC;MACN,KAAK,CAAC;QACJ,OAAOT,MAAM,CAACC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;MAE5B,KAAK,CAAC;MACN,KAAK,CAAC;QACJ,OAAOD,MAAM,CAACC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;MAE5B,KAAK,CAAC;MACN,KAAK,CAAC;MACN,KAAK,CAAC;QACJ,OAAOD,MAAM,CAACC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;MAE5B;QACE,MAAM,IAAIa,KAAK,CAAC,eAAe,CAAC;IACpC;EACF,CAAC;EAED,CAAEC,qBAAqBA,CAACR,SAAS,EAAEM,OAAO,EAAE;IAC1C,IAAIN,SAAS,CAACG,KAAK,IAAI,IAAI,EAAE;MAC3B;IACF;IAEA,MAAMA,KAAK,GAAGH,SAAS,CAACG,KAAK;IAC7B,IAAID,KAAK,GAAGF,SAAS,CAACE,KAAK;IAE3B,MAAMO,MAAM,GAAG,IAAIC,+BAAsB,CAAC,CAAC;IAC3CR,KAAK,GAAGA,KAAM;IAEd,IAAIS,SAAiB;IACrBA,SAAS,GAAG,CAAC,CAACR,KAAK,CAACS,WAAW,CAAC,CAAC,GAAG,EAAE,GAAGT,KAAK,CAACU,aAAa,CAAC,CAAC,IAAI,EAAE,GAAGV,KAAK,CAACW,aAAa,CAAC,CAAC,IAAI,IAAI,GAAGX,KAAK,CAACY,eAAe,CAAC,CAAC;IAC9HJ,SAAS,GAAGA,SAAS,GAAGK,IAAI,CAACC,GAAG,CAAC,EAAE,EAAEf,KAAK,GAAG,CAAC,CAAC;IAC/CS,SAAS,IAAI,CAACR,KAAK,CAACe,eAAe,IAAI,IAAI,GAAGf,KAAK,CAACe,eAAe,GAAG,CAAC,IAAIF,IAAI,CAACC,GAAG,CAAC,EAAE,EAAEf,KAAK,CAAC;IAC9FS,SAAS,GAAGK,IAAI,CAACG,KAAK,CAACR,SAAS,CAAC;IAEjC,QAAQT,KAAK;MACX,KAAK,CAAC;MACN,KAAK,CAAC;MACN,KAAK,CAAC;QACJO,MAAM,CAACW,aAAa,CAACT,SAAS,CAAC;QAC/B;MACF,KAAK,CAAC;MACN,KAAK,CAAC;QACJF,MAAM,CAACY,aAAa,CAACV,SAAS,CAAC;QAC/B;MACF,KAAK,CAAC;MACN,KAAK,CAAC;MACN,KAAK,CAAC;QACJF,MAAM,CAACa,aAAa,CAACX,SAAS,CAAC;IACnC;IAEA,MAAMY,IAAI,GAAGjC,eAAS,CAACkC,EAAE,CAACrB,KAAK,CAACsB,cAAc,CAAC,CAAC,EAAEtB,KAAK,CAACuB,WAAW,CAAC,CAAC,GAAG,CAAC,EAAEvB,KAAK,CAACwB,UAAU,CAAC,CAAC,CAAC;IAC9F,MAAMC,IAAI,GAAGvC,UAAU,CAACwC,KAAK,CAACN,IAAI,EAAEO,gBAAU,CAACC,IAAI,CAAC;IACpDtB,MAAM,CAACW,aAAa,CAACQ,IAAI,CAAC;IAE1B,MAAMI,MAAM,GAAG,CAAC7B,KAAK,CAAC8B,iBAAiB,CAAC,CAAC;IACzCxB,MAAM,CAACyB,YAAY,CAACF,MAAM,CAAC;IAC3B,MAAMvB,MAAM,CAAC0B,IAAI;EACnB,CAAC;EACDC,QAAQ,EAAE,SAAAA,CAASjC,KAAU,EAAEkC,SAAS,EAAE/B,OAAO,EAAiB;IAChE,IAAIH,KAAK,IAAI,IAAI,EAAE;MACjB,OAAO,IAAI;IACb;IAEA,IAAI,EAAEA,KAAK,YAAYmC,IAAI,CAAC,EAAE;MAC5BnC,KAAK,GAAG,IAAImC,IAAI,CAACA,IAAI,CAACC,KAAK,CAACpC,KAAK,CAAC,CAAC;IACrC;IAEAA,KAAK,GAAGA,KAAa;IAErB,IAAIqC,IAAI;IACR,IAAIlC,OAAO,IAAIA,OAAO,CAACmC,MAAM,EAAE;MAC7BD,IAAI,GAAGrC,KAAK,CAACsB,cAAc,CAAC,CAAC;IAC/B,CAAC,MAAM;MACLe,IAAI,GAAGrC,KAAK,CAACuC,WAAW,CAAC,CAAC;IAC5B;IAEA,IAAIF,IAAI,GAAG,CAAC,IAAIA,IAAI,GAAG,IAAI,EAAE;MAC3B,MAAM,IAAIG,SAAS,CAAC,eAAe,CAAC;IACtC;IAEA,IAAIC,KAAK,CAACzC,KAAK,CAAC,EAAE;MAChB,MAAM,IAAIwC,SAAS,CAAC,eAAe,CAAC;IACtC;IAEA,OAAOxC,KAAK;EACd;AACF,CAAC;AAAC,IAAA0C,QAAA,GAAAC,OAAA,CAAA1D,OAAA,GAEaO,cAAc;AAC7BoD,MAAM,CAACD,OAAO,GAAGnD,cAAc","ignoreList":[]}
1
+ {"version":3,"file":"datetimeoffset.js","names":["_temporal","require","DateTimeOffset","id","type","name","declaration","parameter","resolveScale","scale","value","writeTypeInfo","buffer","writeUInt8","writeValue","timeLength","writeTimeOfDay","writeUInt24LE","daysSinceYearOne","writeInt16LE","getTimezoneOffset","validate","collation","options","Date","parse","year","useUTC","getUTCFullYear","getFullYear","TypeError","isNaN","_default","exports","default","module"],"sources":["../../src/data-types/datetimeoffset.ts"],"sourcesContent":["import { type DataType } from '../data-type';\nimport { daysSinceYearOne, timeLength, writeTimeOfDay, type TemporalValue } from './temporal';\n\nconst DateTimeOffset: DataType & { resolveScale: NonNullable<DataType['resolveScale']> } = {\n id: 0x2B,\n type: 'DATETIMEOFFSETN',\n name: 'DateTimeOffset',\n declaration: function(parameter) {\n return 'datetimeoffset(' + (this.resolveScale(parameter)) + ')';\n },\n resolveScale: function(parameter) {\n if (parameter.scale != null) {\n return parameter.scale;\n } else if (parameter.value === null) {\n return 0;\n } else {\n return 7;\n }\n },\n\n writeTypeInfo(buffer, parameter) {\n buffer.writeUInt8(this.id);\n buffer.writeUInt8(parameter.scale!);\n },\n\n writeValue(buffer, parameter) {\n const value = parameter.value as TemporalValue | null;\n if (value == null) {\n buffer.writeUInt8(0x00);\n return;\n }\n\n buffer.writeUInt8(timeLength(parameter.scale) + 5);\n writeTimeOfDay(buffer, value, parameter.scale!, true);\n buffer.writeUInt24LE(daysSinceYearOne(value, true));\n buffer.writeInt16LE(-value.getTimezoneOffset());\n },\n\n validate: function(value: any, collation, options): null | number {\n if (value == null) {\n return null;\n }\n\n if (!(value instanceof Date)) {\n value = new Date(Date.parse(value));\n }\n\n value = value as Date;\n\n let year;\n if (options && options.useUTC) {\n year = value.getUTCFullYear();\n } else {\n year = value.getFullYear();\n }\n\n if (year < 1 || year > 9999) {\n throw new TypeError('Out of range.');\n }\n\n if (isNaN(value)) {\n throw new TypeError('Invalid date.');\n }\n\n return value;\n }\n};\n\nexport default DateTimeOffset;\nmodule.exports = DateTimeOffset;\n"],"mappings":";;;;;;AACA,IAAAA,SAAA,GAAAC,OAAA;AAEA,MAAMC,cAAkF,GAAG;EACzFC,EAAE,EAAE,IAAI;EACRC,IAAI,EAAE,iBAAiB;EACvBC,IAAI,EAAE,gBAAgB;EACtBC,WAAW,EAAE,SAAAA,CAASC,SAAS,EAAE;IAC/B,OAAO,iBAAiB,GAAI,IAAI,CAACC,YAAY,CAACD,SAAS,CAAE,GAAG,GAAG;EACjE,CAAC;EACDC,YAAY,EAAE,SAAAA,CAASD,SAAS,EAAE;IAChC,IAAIA,SAAS,CAACE,KAAK,IAAI,IAAI,EAAE;MAC3B,OAAOF,SAAS,CAACE,KAAK;IACxB,CAAC,MAAM,IAAIF,SAAS,CAACG,KAAK,KAAK,IAAI,EAAE;MACnC,OAAO,CAAC;IACV,CAAC,MAAM;MACL,OAAO,CAAC;IACV;EACF,CAAC;EAEDC,aAAaA,CAACC,MAAM,EAAEL,SAAS,EAAE;IAC/BK,MAAM,CAACC,UAAU,CAAC,IAAI,CAACV,EAAE,CAAC;IAC1BS,MAAM,CAACC,UAAU,CAACN,SAAS,CAACE,KAAM,CAAC;EACrC,CAAC;EAEDK,UAAUA,CAACF,MAAM,EAAEL,SAAS,EAAE;IAC5B,MAAMG,KAAK,GAAGH,SAAS,CAACG,KAA6B;IACrD,IAAIA,KAAK,IAAI,IAAI,EAAE;MACjBE,MAAM,CAACC,UAAU,CAAC,IAAI,CAAC;MACvB;IACF;IAEAD,MAAM,CAACC,UAAU,CAAC,IAAAE,oBAAU,EAACR,SAAS,CAACE,KAAK,CAAC,GAAG,CAAC,CAAC;IAClD,IAAAO,wBAAc,EAACJ,MAAM,EAAEF,KAAK,EAAEH,SAAS,CAACE,KAAK,EAAG,IAAI,CAAC;IACrDG,MAAM,CAACK,aAAa,CAAC,IAAAC,0BAAgB,EAACR,KAAK,EAAE,IAAI,CAAC,CAAC;IACnDE,MAAM,CAACO,YAAY,CAAC,CAACT,KAAK,CAACU,iBAAiB,CAAC,CAAC,CAAC;EACjD,CAAC;EAEDC,QAAQ,EAAE,SAAAA,CAASX,KAAU,EAAEY,SAAS,EAAEC,OAAO,EAAiB;IAChE,IAAIb,KAAK,IAAI,IAAI,EAAE;MACjB,OAAO,IAAI;IACb;IAEA,IAAI,EAAEA,KAAK,YAAYc,IAAI,CAAC,EAAE;MAC5Bd,KAAK,GAAG,IAAIc,IAAI,CAACA,IAAI,CAACC,KAAK,CAACf,KAAK,CAAC,CAAC;IACrC;IAEAA,KAAK,GAAGA,KAAa;IAErB,IAAIgB,IAAI;IACR,IAAIH,OAAO,IAAIA,OAAO,CAACI,MAAM,EAAE;MAC7BD,IAAI,GAAGhB,KAAK,CAACkB,cAAc,CAAC,CAAC;IAC/B,CAAC,MAAM;MACLF,IAAI,GAAGhB,KAAK,CAACmB,WAAW,CAAC,CAAC;IAC5B;IAEA,IAAIH,IAAI,GAAG,CAAC,IAAIA,IAAI,GAAG,IAAI,EAAE;MAC3B,MAAM,IAAII,SAAS,CAAC,eAAe,CAAC;IACtC;IAEA,IAAIC,KAAK,CAACrB,KAAK,CAAC,EAAE;MAChB,MAAM,IAAIoB,SAAS,CAAC,eAAe,CAAC;IACtC;IAEA,OAAOpB,KAAK;EACd;AACF,CAAC;AAAC,IAAAsB,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEahC,cAAc;AAC7BiC,MAAM,CAACF,OAAO,GAAG/B,cAAc","ignoreList":[]}
@@ -0,0 +1,18 @@
1
+ import type WritableTrackingBuffer from '../tracking-buffer/writable-tracking-buffer';
2
+ /**
3
+ * The number of bytes the magnitude of a `decimal` or `numeric` value takes
4
+ * at `precision`.
5
+ */
6
+ export declare function decimalLength(precision: number | undefined): 4 | 8 | 12 | 16;
7
+ /**
8
+ * Writes the TYPE_INFO of a `decimal` or `numeric` column: the nullable type
9
+ * id, the length of a value, and the precision and scale.
10
+ */
11
+ export declare function writeDecimalTypeInfo(buffer: WritableTrackingBuffer, id: number, precision: number | undefined, scale: number | undefined): void;
12
+ /**
13
+ * Writes a validated `decimal` or `numeric` value: the length, the sign,
14
+ * and the scaled magnitude as a little-endian unsigned integer spanning the
15
+ * full width for the precision. `name` names the type in the error for a
16
+ * value that does not fit.
17
+ */
18
+ export declare function writeDecimal(buffer: WritableTrackingBuffer, value: number | null, precision: number | undefined, scale: number | undefined, name: string): void;
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.decimalLength = decimalLength;
7
+ exports.writeDecimal = writeDecimal;
8
+ exports.writeDecimalTypeInfo = writeDecimalTypeInfo;
9
+ const MASK_64 = (1n << 64n) - 1n;
10
+
11
+ /**
12
+ * The number of bytes the magnitude of a `decimal` or `numeric` value takes
13
+ * at `precision`.
14
+ */
15
+ function decimalLength(precision) {
16
+ if (precision <= 9) {
17
+ return 4;
18
+ } else if (precision <= 19) {
19
+ return 8;
20
+ } else if (precision <= 28) {
21
+ return 12;
22
+ } else {
23
+ return 16;
24
+ }
25
+ }
26
+
27
+ /**
28
+ * Writes the TYPE_INFO of a `decimal` or `numeric` column: the nullable type
29
+ * id, the length of a value, and the precision and scale.
30
+ */
31
+ function writeDecimalTypeInfo(buffer, id, precision, scale) {
32
+ buffer.writeUInt8(id);
33
+ buffer.writeUInt8(decimalLength(precision) + 1);
34
+ buffer.writeUInt8(precision);
35
+ buffer.writeUInt8(scale);
36
+ }
37
+
38
+ /**
39
+ * Writes a validated `decimal` or `numeric` value: the length, the sign,
40
+ * and the scaled magnitude as a little-endian unsigned integer spanning the
41
+ * full width for the precision. `name` names the type in the error for a
42
+ * value that does not fit.
43
+ */
44
+ function writeDecimal(buffer, value, precision, scale, name) {
45
+ if (value == null) {
46
+ buffer.writeUInt8(0x00);
47
+ return;
48
+ }
49
+ const dataLength = decimalLength(precision);
50
+
51
+ // A BigInt holds magnitudes beyond 2^64 for high-precision columns.
52
+ // See https://github.com/tediousjs/tedious/issues/1733
53
+ const magnitude = BigInt(Math.round(Math.abs(value * Math.pow(10, scale))));
54
+
55
+ // Throwing surfaces a catchable error to the caller instead of silently
56
+ // truncating the magnitude.
57
+ if (magnitude >= 1n << BigInt(8 * dataLength)) {
58
+ throw new RangeError(`Value ${value} is out of range for ${name}(${precision}, ${scale}).`);
59
+ }
60
+ buffer.writeUInt8(dataLength + 1);
61
+ buffer.writeUInt8(value < 0 ? 0 : 1);
62
+ switch (dataLength) {
63
+ case 4:
64
+ buffer.writeUInt32LE(Number(magnitude));
65
+ break;
66
+ case 8:
67
+ buffer.writeBigUInt64LE(magnitude);
68
+ break;
69
+ case 12:
70
+ buffer.writeBigUInt64LE(magnitude & MASK_64);
71
+ buffer.writeUInt32LE(Number(magnitude >> 64n));
72
+ break;
73
+ case 16:
74
+ buffer.writeBigUInt64LE(magnitude & MASK_64);
75
+ buffer.writeBigUInt64LE(magnitude >> 64n);
76
+ break;
77
+ }
78
+ }
79
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNQVNLXzY0IiwiZGVjaW1hbExlbmd0aCIsInByZWNpc2lvbiIsIndyaXRlRGVjaW1hbFR5cGVJbmZvIiwiYnVmZmVyIiwiaWQiLCJzY2FsZSIsIndyaXRlVUludDgiLCJ3cml0ZURlY2ltYWwiLCJ2YWx1ZSIsIm5hbWUiLCJkYXRhTGVuZ3RoIiwibWFnbml0dWRlIiwiQmlnSW50IiwiTWF0aCIsInJvdW5kIiwiYWJzIiwicG93IiwiUmFuZ2VFcnJvciIsIndyaXRlVUludDMyTEUiLCJOdW1iZXIiLCJ3cml0ZUJpZ1VJbnQ2NExFIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RhdGEtdHlwZXMvZGVjaW1hbC1jb21tb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgV3JpdGFibGVUcmFja2luZ0J1ZmZlciBmcm9tICcuLi90cmFja2luZy1idWZmZXIvd3JpdGFibGUtdHJhY2tpbmctYnVmZmVyJztcblxuY29uc3QgTUFTS182NCA9ICgxbiA8PCA2NG4pIC0gMW47XG5cbi8qKlxuICogVGhlIG51bWJlciBvZiBieXRlcyB0aGUgbWFnbml0dWRlIG9mIGEgYGRlY2ltYWxgIG9yIGBudW1lcmljYCB2YWx1ZSB0YWtlc1xuICogYXQgYHByZWNpc2lvbmAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNpbWFsTGVuZ3RoKHByZWNpc2lvbjogbnVtYmVyIHwgdW5kZWZpbmVkKTogNCB8IDggfCAxMiB8IDE2IHtcbiAgaWYgKHByZWNpc2lvbiEgPD0gOSkge1xuICAgIHJldHVybiA0O1xuICB9IGVsc2UgaWYgKHByZWNpc2lvbiEgPD0gMTkpIHtcbiAgICByZXR1cm4gODtcbiAgfSBlbHNlIGlmIChwcmVjaXNpb24hIDw9IDI4KSB7XG4gICAgcmV0dXJuIDEyO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAxNjtcbiAgfVxufVxuXG4vKipcbiAqIFdyaXRlcyB0aGUgVFlQRV9JTkZPIG9mIGEgYGRlY2ltYWxgIG9yIGBudW1lcmljYCBjb2x1bW46IHRoZSBudWxsYWJsZSB0eXBlXG4gKiBpZCwgdGhlIGxlbmd0aCBvZiBhIHZhbHVlLCBhbmQgdGhlIHByZWNpc2lvbiBhbmQgc2NhbGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZURlY2ltYWxUeXBlSW5mbyhidWZmZXI6IFdyaXRhYmxlVHJhY2tpbmdCdWZmZXIsIGlkOiBudW1iZXIsIHByZWNpc2lvbjogbnVtYmVyIHwgdW5kZWZpbmVkLCBzY2FsZTogbnVtYmVyIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gIGJ1ZmZlci53cml0ZVVJbnQ4KGlkKTtcbiAgYnVmZmVyLndyaXRlVUludDgoZGVjaW1hbExlbmd0aChwcmVjaXNpb24pICsgMSk7XG4gIGJ1ZmZlci53cml0ZVVJbnQ4KHByZWNpc2lvbiEpO1xuICBidWZmZXIud3JpdGVVSW50OChzY2FsZSEpO1xufVxuXG4vKipcbiAqIFdyaXRlcyBhIHZhbGlkYXRlZCBgZGVjaW1hbGAgb3IgYG51bWVyaWNgIHZhbHVlOiB0aGUgbGVuZ3RoLCB0aGUgc2lnbixcbiAqIGFuZCB0aGUgc2NhbGVkIG1hZ25pdHVkZSBhcyBhIGxpdHRsZS1lbmRpYW4gdW5zaWduZWQgaW50ZWdlciBzcGFubmluZyB0aGVcbiAqIGZ1bGwgd2lkdGggZm9yIHRoZSBwcmVjaXNpb24uIGBuYW1lYCBuYW1lcyB0aGUgdHlwZSBpbiB0aGUgZXJyb3IgZm9yIGFcbiAqIHZhbHVlIHRoYXQgZG9lcyBub3QgZml0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVEZWNpbWFsKGJ1ZmZlcjogV3JpdGFibGVUcmFja2luZ0J1ZmZlciwgdmFsdWU6IG51bWJlciB8IG51bGwsIHByZWNpc2lvbjogbnVtYmVyIHwgdW5kZWZpbmVkLCBzY2FsZTogbnVtYmVyIHwgdW5kZWZpbmVkLCBuYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICBidWZmZXIud3JpdGVVSW50OCgweDAwKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBkYXRhTGVuZ3RoID0gZGVjaW1hbExlbmd0aChwcmVjaXNpb24pO1xuXG4gIC8vIEEgQmlnSW50IGhvbGRzIG1hZ25pdHVkZXMgYmV5b25kIDJeNjQgZm9yIGhpZ2gtcHJlY2lzaW9uIGNvbHVtbnMuXG4gIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vdGVkaW91c2pzL3RlZGlvdXMvaXNzdWVzLzE3MzNcbiAgY29uc3QgbWFnbml0dWRlID0gQmlnSW50KE1hdGgucm91bmQoTWF0aC5hYnModmFsdWUgKiBNYXRoLnBvdygxMCwgc2NhbGUhKSkpKTtcblxuICAvLyBUaHJvd2luZyBzdXJmYWNlcyBhIGNhdGNoYWJsZSBlcnJvciB0byB0aGUgY2FsbGVyIGluc3RlYWQgb2Ygc2lsZW50bHlcbiAgLy8gdHJ1bmNhdGluZyB0aGUgbWFnbml0dWRlLlxuICBpZiAobWFnbml0dWRlID49ICgxbiA8PCBCaWdJbnQoOCAqIGRhdGFMZW5ndGgpKSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKGBWYWx1ZSAke3ZhbHVlfSBpcyBvdXQgb2YgcmFuZ2UgZm9yICR7bmFtZX0oJHtwcmVjaXNpb259LCAke3NjYWxlfSkuYCk7XG4gIH1cblxuICBidWZmZXIud3JpdGVVSW50OChkYXRhTGVuZ3RoICsgMSk7XG4gIGJ1ZmZlci53cml0ZVVJbnQ4KHZhbHVlIDwgMCA/IDAgOiAxKTtcblxuICBzd2l0Y2ggKGRhdGFMZW5ndGgpIHtcbiAgICBjYXNlIDQ6XG4gICAgICBidWZmZXIud3JpdGVVSW50MzJMRShOdW1iZXIobWFnbml0dWRlKSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDg6XG4gICAgICBidWZmZXIud3JpdGVCaWdVSW50NjRMRShtYWduaXR1ZGUpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAxMjpcbiAgICAgIGJ1ZmZlci53cml0ZUJpZ1VJbnQ2NExFKG1hZ25pdHVkZSAmIE1BU0tfNjQpO1xuICAgICAgYnVmZmVyLndyaXRlVUludDMyTEUoTnVtYmVyKG1hZ25pdHVkZSA+PiA2NG4pKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTY6XG4gICAgICBidWZmZXIud3JpdGVCaWdVSW50NjRMRShtYWduaXR1ZGUgJiBNQVNLXzY0KTtcbiAgICAgIGJ1ZmZlci53cml0ZUJpZ1VJbnQ2NExFKG1hZ25pdHVkZSA+PiA2NG4pO1xuICAgICAgYnJlYWs7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFFQSxNQUFNQSxPQUFPLEdBQUcsQ0FBQyxFQUFFLElBQUksR0FBRyxJQUFJLEVBQUU7O0FBRWhDO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU0MsYUFBYUEsQ0FBQ0MsU0FBNkIsRUFBbUI7RUFDNUUsSUFBSUEsU0FBUyxJQUFLLENBQUMsRUFBRTtJQUNuQixPQUFPLENBQUM7RUFDVixDQUFDLE1BQU0sSUFBSUEsU0FBUyxJQUFLLEVBQUUsRUFBRTtJQUMzQixPQUFPLENBQUM7RUFDVixDQUFDLE1BQU0sSUFBSUEsU0FBUyxJQUFLLEVBQUUsRUFBRTtJQUMzQixPQUFPLEVBQUU7RUFDWCxDQUFDLE1BQU07SUFDTCxPQUFPLEVBQUU7RUFDWDtBQUNGOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU0Msb0JBQW9CQSxDQUFDQyxNQUE4QixFQUFFQyxFQUFVLEVBQUVILFNBQTZCLEVBQUVJLEtBQXlCLEVBQVE7RUFDL0lGLE1BQU0sQ0FBQ0csVUFBVSxDQUFDRixFQUFFLENBQUM7RUFDckJELE1BQU0sQ0FBQ0csVUFBVSxDQUFDTixhQUFhLENBQUNDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztFQUMvQ0UsTUFBTSxDQUFDRyxVQUFVLENBQUNMLFNBQVUsQ0FBQztFQUM3QkUsTUFBTSxDQUFDRyxVQUFVLENBQUNELEtBQU0sQ0FBQztBQUMzQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTRSxZQUFZQSxDQUFDSixNQUE4QixFQUFFSyxLQUFvQixFQUFFUCxTQUE2QixFQUFFSSxLQUF5QixFQUFFSSxJQUFZLEVBQVE7RUFDL0osSUFBSUQsS0FBSyxJQUFJLElBQUksRUFBRTtJQUNqQkwsTUFBTSxDQUFDRyxVQUFVLENBQUMsSUFBSSxDQUFDO0lBQ3ZCO0VBQ0Y7RUFFQSxNQUFNSSxVQUFVLEdBQUdWLGFBQWEsQ0FBQ0MsU0FBUyxDQUFDOztFQUUzQztFQUNBO0VBQ0EsTUFBTVUsU0FBUyxHQUFHQyxNQUFNLENBQUNDLElBQUksQ0FBQ0MsS0FBSyxDQUFDRCxJQUFJLENBQUNFLEdBQUcsQ0FBQ1AsS0FBSyxHQUFHSyxJQUFJLENBQUNHLEdBQUcsQ0FBQyxFQUFFLEVBQUVYLEtBQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQzs7RUFFNUU7RUFDQTtFQUNBLElBQUlNLFNBQVMsSUFBSyxFQUFFLElBQUlDLE1BQU0sQ0FBQyxDQUFDLEdBQUdGLFVBQVUsQ0FBRSxFQUFFO0lBQy9DLE1BQU0sSUFBSU8sVUFBVSxDQUFDLFNBQVNULEtBQUssd0JBQXdCQyxJQUFJLElBQUlSLFNBQVMsS0FBS0ksS0FBSyxJQUFJLENBQUM7RUFDN0Y7RUFFQUYsTUFBTSxDQUFDRyxVQUFVLENBQUNJLFVBQVUsR0FBRyxDQUFDLENBQUM7RUFDakNQLE1BQU0sQ0FBQ0csVUFBVSxDQUFDRSxLQUFLLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7RUFFcEMsUUFBUUUsVUFBVTtJQUNoQixLQUFLLENBQUM7TUFDSlAsTUFBTSxDQUFDZSxhQUFhLENBQUNDLE1BQU0sQ0FBQ1IsU0FBUyxDQUFDLENBQUM7TUFDdkM7SUFDRixLQUFLLENBQUM7TUFDSlIsTUFBTSxDQUFDaUIsZ0JBQWdCLENBQUNULFNBQVMsQ0FBQztNQUNsQztJQUNGLEtBQUssRUFBRTtNQUNMUixNQUFNLENBQUNpQixnQkFBZ0IsQ0FBQ1QsU0FBUyxHQUFHWixPQUFPLENBQUM7TUFDNUNJLE1BQU0sQ0FBQ2UsYUFBYSxDQUFDQyxNQUFNLENBQUNSLFNBQVMsSUFBSSxHQUFHLENBQUMsQ0FBQztNQUM5QztJQUNGLEtBQUssRUFBRTtNQUNMUixNQUFNLENBQUNpQixnQkFBZ0IsQ0FBQ1QsU0FBUyxHQUFHWixPQUFPLENBQUM7TUFDNUNJLE1BQU0sQ0FBQ2lCLGdCQUFnQixDQUFDVCxTQUFTLElBQUksR0FBRyxDQUFDO01BQ3pDO0VBQ0o7QUFDRiIsImlnbm9yZUxpc3QiOltdfQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decimal-common.js","names":["MASK_64","decimalLength","precision","writeDecimalTypeInfo","buffer","id","scale","writeUInt8","writeDecimal","value","name","dataLength","magnitude","BigInt","Math","round","abs","pow","RangeError","writeUInt32LE","Number","writeBigUInt64LE"],"sources":["../../src/data-types/decimal-common.ts"],"sourcesContent":["import type WritableTrackingBuffer from '../tracking-buffer/writable-tracking-buffer';\n\nconst MASK_64 = (1n << 64n) - 1n;\n\n/**\n * The number of bytes the magnitude of a `decimal` or `numeric` value takes\n * at `precision`.\n */\nexport function decimalLength(precision: number | undefined): 4 | 8 | 12 | 16 {\n if (precision! <= 9) {\n return 4;\n } else if (precision! <= 19) {\n return 8;\n } else if (precision! <= 28) {\n return 12;\n } else {\n return 16;\n }\n}\n\n/**\n * Writes the TYPE_INFO of a `decimal` or `numeric` column: the nullable type\n * id, the length of a value, and the precision and scale.\n */\nexport function writeDecimalTypeInfo(buffer: WritableTrackingBuffer, id: number, precision: number | undefined, scale: number | undefined): void {\n buffer.writeUInt8(id);\n buffer.writeUInt8(decimalLength(precision) + 1);\n buffer.writeUInt8(precision!);\n buffer.writeUInt8(scale!);\n}\n\n/**\n * Writes a validated `decimal` or `numeric` value: the length, the sign,\n * and the scaled magnitude as a little-endian unsigned integer spanning the\n * full width for the precision. `name` names the type in the error for a\n * value that does not fit.\n */\nexport function writeDecimal(buffer: WritableTrackingBuffer, value: number | null, precision: number | undefined, scale: number | undefined, name: string): void {\n if (value == null) {\n buffer.writeUInt8(0x00);\n return;\n }\n\n const dataLength = decimalLength(precision);\n\n // A BigInt holds magnitudes beyond 2^64 for high-precision columns.\n // See https://github.com/tediousjs/tedious/issues/1733\n const magnitude = BigInt(Math.round(Math.abs(value * Math.pow(10, scale!))));\n\n // Throwing surfaces a catchable error to the caller instead of silently\n // truncating the magnitude.\n if (magnitude >= (1n << BigInt(8 * dataLength))) {\n throw new RangeError(`Value ${value} is out of range for ${name}(${precision}, ${scale}).`);\n }\n\n buffer.writeUInt8(dataLength + 1);\n buffer.writeUInt8(value < 0 ? 0 : 1);\n\n switch (dataLength) {\n case 4:\n buffer.writeUInt32LE(Number(magnitude));\n break;\n case 8:\n buffer.writeBigUInt64LE(magnitude);\n break;\n case 12:\n buffer.writeBigUInt64LE(magnitude & MASK_64);\n buffer.writeUInt32LE(Number(magnitude >> 64n));\n break;\n case 16:\n buffer.writeBigUInt64LE(magnitude & MASK_64);\n buffer.writeBigUInt64LE(magnitude >> 64n);\n break;\n }\n}\n"],"mappings":";;;;;;;;AAEA,MAAMA,OAAO,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE;;AAEhC;AACA;AACA;AACA;AACO,SAASC,aAAaA,CAACC,SAA6B,EAAmB;EAC5E,IAAIA,SAAS,IAAK,CAAC,EAAE;IACnB,OAAO,CAAC;EACV,CAAC,MAAM,IAAIA,SAAS,IAAK,EAAE,EAAE;IAC3B,OAAO,CAAC;EACV,CAAC,MAAM,IAAIA,SAAS,IAAK,EAAE,EAAE;IAC3B,OAAO,EAAE;EACX,CAAC,MAAM;IACL,OAAO,EAAE;EACX;AACF;;AAEA;AACA;AACA;AACA;AACO,SAASC,oBAAoBA,CAACC,MAA8B,EAAEC,EAAU,EAAEH,SAA6B,EAAEI,KAAyB,EAAQ;EAC/IF,MAAM,CAACG,UAAU,CAACF,EAAE,CAAC;EACrBD,MAAM,CAACG,UAAU,CAACN,aAAa,CAACC,SAAS,CAAC,GAAG,CAAC,CAAC;EAC/CE,MAAM,CAACG,UAAU,CAACL,SAAU,CAAC;EAC7BE,MAAM,CAACG,UAAU,CAACD,KAAM,CAAC;AAC3B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASE,YAAYA,CAACJ,MAA8B,EAAEK,KAAoB,EAAEP,SAA6B,EAAEI,KAAyB,EAAEI,IAAY,EAAQ;EAC/J,IAAID,KAAK,IAAI,IAAI,EAAE;IACjBL,MAAM,CAACG,UAAU,CAAC,IAAI,CAAC;IACvB;EACF;EAEA,MAAMI,UAAU,GAAGV,aAAa,CAACC,SAAS,CAAC;;EAE3C;EACA;EACA,MAAMU,SAAS,GAAGC,MAAM,CAACC,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,GAAG,CAACP,KAAK,GAAGK,IAAI,CAACG,GAAG,CAAC,EAAE,EAAEX,KAAM,CAAC,CAAC,CAAC,CAAC;;EAE5E;EACA;EACA,IAAIM,SAAS,IAAK,EAAE,IAAIC,MAAM,CAAC,CAAC,GAAGF,UAAU,CAAE,EAAE;IAC/C,MAAM,IAAIO,UAAU,CAAC,SAAST,KAAK,wBAAwBC,IAAI,IAAIR,SAAS,KAAKI,KAAK,IAAI,CAAC;EAC7F;EAEAF,MAAM,CAACG,UAAU,CAACI,UAAU,GAAG,CAAC,CAAC;EACjCP,MAAM,CAACG,UAAU,CAACE,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;EAEpC,QAAQE,UAAU;IAChB,KAAK,CAAC;MACJP,MAAM,CAACe,aAAa,CAACC,MAAM,CAACR,SAAS,CAAC,CAAC;MACvC;IACF,KAAK,CAAC;MACJR,MAAM,CAACiB,gBAAgB,CAACT,SAAS,CAAC;MAClC;IACF,KAAK,EAAE;MACLR,MAAM,CAACiB,gBAAgB,CAACT,SAAS,GAAGZ,OAAO,CAAC;MAC5CI,MAAM,CAACe,aAAa,CAACC,MAAM,CAACR,SAAS,IAAI,GAAG,CAAC,CAAC;MAC9C;IACF,KAAK,EAAE;MACLR,MAAM,CAACiB,gBAAgB,CAACT,SAAS,GAAGZ,OAAO,CAAC;MAC5CI,MAAM,CAACiB,gBAAgB,CAACT,SAAS,IAAI,GAAG,CAAC;MACzC;EACJ;AACF","ignoreList":[]}