@comunica/utils-expression-evaluator 4.4.2-alpha.49.0 → 5.0.0

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 (36) hide show
  1. package/lib/expressions/Aggregate.js +3 -1
  2. package/lib/expressions/Aggregate.js.map +1 -1
  3. package/lib/expressions/Existence.js +2 -1
  4. package/lib/expressions/Existence.js.map +1 -1
  5. package/lib/expressions/Expressions.js +1 -2
  6. package/lib/expressions/Expressions.js.map +1 -1
  7. package/lib/expressions/Operator.js +4 -1
  8. package/lib/expressions/Operator.js.map +1 -1
  9. package/lib/expressions/Term.js +56 -11
  10. package/lib/expressions/Term.js.map +1 -1
  11. package/lib/expressions/Variable.js +2 -1
  12. package/lib/expressions/Variable.js.map +1 -1
  13. package/lib/functions/Helpers.js +14 -12
  14. package/lib/functions/Helpers.js.map +1 -1
  15. package/lib/functions/OverloadTree.js +8 -0
  16. package/lib/functions/OverloadTree.js.map +1 -1
  17. package/lib/transformers/TermTransformer.js +1 -0
  18. package/lib/transformers/TermTransformer.js.map +1 -1
  19. package/lib/util/Consts.js +2 -3
  20. package/lib/util/Consts.js.map +1 -1
  21. package/lib/util/Context.js +1 -2
  22. package/lib/util/Context.js.map +1 -1
  23. package/lib/util/DateTimeHelpers.js +15 -16
  24. package/lib/util/DateTimeHelpers.js.map +1 -1
  25. package/lib/util/Errors.js +20 -2
  26. package/lib/util/Errors.js.map +1 -1
  27. package/lib/util/Parsing.d.ts +0 -1
  28. package/lib/util/Parsing.js +8 -11
  29. package/lib/util/Parsing.js.map +1 -1
  30. package/lib/util/Serialization.js +4 -5
  31. package/lib/util/Serialization.js.map +1 -1
  32. package/lib/util/SpecAlgos.js +3 -4
  33. package/lib/util/SpecAlgos.js.map +1 -1
  34. package/lib/util/TypeHandling.js +10 -10
  35. package/lib/util/TypeHandling.js.map +1 -1
  36. package/package.json +6 -6
@@ -1 +1 @@
1
- {"version":3,"file":"DateTimeHelpers.js","sourceRoot":"","sources":["DateTimeHelpers.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n IDateTimeRepresentation,\n IDayTimeDurationRepresentation,\n IDurationRepresentation,\n ITimeZoneRepresentation,\n IYearMonthDurationRepresentation,\n} from '@comunica/types';\n\n// Important is to notice JS and XSD datatypes have different defaulted values\n// | Field | Default in JS | Default in XSD_DayTime | Default in XSD_Duration |\n// | Month | 0 | 1 | 0 |\n// | Day | 1 | 1 | 0 |\n\nexport function defaultedDayTimeDurationRepresentation(rep: Partial<IDayTimeDurationRepresentation>):\nIDayTimeDurationRepresentation {\n return {\n day: rep.day ?? 0,\n hours: rep.hours ?? 0,\n minutes: rep.minutes ?? 0,\n seconds: rep.seconds ?? 0,\n };\n}\n\nexport function defaultedYearMonthDurationRepresentation(rep: Partial<IYearMonthDurationRepresentation>):\nIYearMonthDurationRepresentation {\n return {\n year: rep.year ?? 0,\n month: rep.month ?? 0,\n };\n}\n\nexport function defaultedDurationRepresentation(\n rep: Partial<IDurationRepresentation>,\n): IDurationRepresentation {\n return {\n ...defaultedDayTimeDurationRepresentation(rep),\n ...defaultedYearMonthDurationRepresentation(rep),\n };\n}\n\nexport function simplifyDurationRepresentation(rep: Partial<IDurationRepresentation>):\nPartial<IDurationRepresentation> {\n const temp = defaultedDurationRepresentation(rep);\n const res: Partial<IDurationRepresentation> = {};\n\n // Simplify year part\n const years = temp.year + Math.trunc(temp.month / 12);\n if (years) {\n res.year = years;\n temp.month %= 12;\n }\n if (temp.month) {\n res.month = temp.month;\n }\n\n // Simplify day part\n const days = temp.day + Math.trunc(temp.hours / 24) +\n Math.trunc(temp.minutes / (24 * 60)) + Math.trunc(temp.seconds / (24 * 60 * 60));\n if (days) {\n res.day = days;\n temp.hours %= 24;\n temp.minutes %= 24 * 60;\n temp.seconds %= 24 * 60 * 60;\n }\n const hours = temp.hours + Math.trunc(temp.minutes / 60) +\n Math.trunc(temp.seconds / (60 * 60));\n if (hours) {\n res.hours = hours;\n temp.minutes %= 60;\n temp.seconds %= 60 * 60;\n }\n const minutes = temp.minutes + Math.trunc(temp.seconds / 60);\n if (minutes) {\n res.minutes = minutes;\n temp.seconds %= 60;\n }\n if (temp.seconds) {\n res.seconds = temp.seconds;\n }\n return res;\n}\n\nexport function defaultedDateTimeRepresentation(rep: Partial<IDateTimeRepresentation>): IDateTimeRepresentation {\n return {\n ...rep,\n day: rep.day ?? 1,\n hours: rep.hours ?? 0,\n month: rep.month ?? 1,\n year: rep.year ?? 0,\n seconds: rep.seconds ?? 0,\n minutes: rep.minutes ?? 0,\n };\n}\n\nexport function toDateTimeRepresentation({ date, timeZone }:\n{ date: Date; timeZone: ITimeZoneRepresentation }): IDateTimeRepresentation {\n return {\n year: date.getFullYear(),\n month: date.getMonth() + 1,\n day: date.getDate(),\n hours: date.getHours(),\n minutes: date.getMinutes(),\n seconds: date.getSeconds(),\n zoneHours: timeZone.zoneHours,\n zoneMinutes: timeZone.zoneMinutes,\n };\n}\n\nexport function negateDuration(dur: Partial<IDurationRepresentation>): Partial<IDurationRepresentation> {\n return {\n year: dur.year === undefined ? undefined : -1 * dur.year,\n month: dur.month === undefined ? undefined : -1 * dur.month,\n day: dur.day === undefined ? undefined : -1 * dur.day,\n hours: dur.hours === undefined ? undefined : -1 * dur.hours,\n minutes: dur.minutes === undefined ? undefined : -1 * dur.minutes,\n seconds: dur.seconds === undefined ? undefined : -1 * dur.seconds,\n };\n}\n\nexport function toJSDate(date: IDateTimeRepresentation): Date {\n // The given hours will be assumed to be local time.\n const res = new Date(\n date.year,\n date.month - 1,\n date.day,\n date.hours,\n date.minutes,\n Math.trunc(date.seconds),\n (date.seconds % 1) * 1_000,\n );\n if (date.year >= 0 && date.year < 100) {\n // Special rule of date has gone int action:\n\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/Date#individual_date_and_time_component_values\n\n const jumpDeltaOfDate = 1_900;\n res.setFullYear(res.getFullYear() - jumpDeltaOfDate);\n }\n return res;\n}\n\nexport function toUTCDate(date: Partial<IDateTimeRepresentation>, defaultTimezone: ITimeZoneRepresentation): Date {\n const localTime = toJSDate(defaultedDateTimeRepresentation(date));\n // This date has been constructed in machine local time, now we alter it to become UTC and convert to correct timezone\n\n // Correction needed from local machine timezone to UTC\n const minutesCorrectionLocal = localTime.getTimezoneOffset();\n // Correction needed from UTC to provided timeZone\n const hourCorrectionUTC = date.zoneHours ?? defaultTimezone.zoneHours;\n const minutesCorrectionUTC = date.zoneMinutes ?? defaultTimezone.zoneMinutes;\n return new Date(\n localTime.getTime() - (minutesCorrectionLocal + hourCorrectionUTC * 60 + minutesCorrectionUTC) * 60 * 1_000,\n );\n}\n\nexport function trimToYearMonthDuration(dur: Partial<IDurationRepresentation>):\nPartial<IYearMonthDurationRepresentation> {\n return {\n year: dur.year,\n month: dur.month,\n };\n}\n\nexport function trimToDayTimeDuration(dur: Partial<IDurationRepresentation>): Partial<IDayTimeDurationRepresentation> {\n return {\n day: dur.day,\n hours: dur.hours,\n minutes: dur.minutes,\n seconds: dur.seconds,\n };\n}\n\nexport function yearMonthDurationsToMonths(dur: IYearMonthDurationRepresentation): number {\n return dur.year * 12 + dur.month;\n}\n\nexport function dayTimeDurationsToSeconds(dur: IDayTimeDurationRepresentation): number {\n return (((dur.day * 24) + dur.hours) * 60 + dur.minutes) * 60 + dur.seconds;\n}\n\nexport function extractRawTimeZone(zoneContained: string): string {\n const extraction = /(Z|([+-]\\d\\d:\\d\\d))?$/u.exec(zoneContained);\n // It is safe to cast here because the empty string can always match.\n return extraction![0];\n}\n\nexport function extractTimeZone(date: Date): ITimeZoneRepresentation {\n return {\n zoneHours: date.getTimezoneOffset() / 60,\n zoneMinutes: date.getTimezoneOffset() % 60,\n };\n}\n"]}
1
+ {"version":3,"file":"DateTimeHelpers.js","sourceRoot":"","sources":["DateTimeHelpers.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n IDateTimeRepresentation,\n IDayTimeDurationRepresentation,\n IDurationRepresentation,\n ITimeZoneRepresentation,\n IYearMonthDurationRepresentation,\n} from '@comunica/types';\n\n// Important is to notice JS and XSD datatypes have different defaulted values\n// | Field | Default in JS | Default in XSD_DayTime | Default in XSD_Duration |\n// | Month | 0 | 1 | 0 |\n// | Day | 1 | 1 | 0 |\n\nexport function defaultedDayTimeDurationRepresentation(rep: Partial<IDayTimeDurationRepresentation>):\nIDayTimeDurationRepresentation {\n return {\n day: rep.day ?? 0,\n hours: rep.hours ?? 0,\n minutes: rep.minutes ?? 0,\n seconds: rep.seconds ?? 0,\n };\n}\n\nexport function defaultedYearMonthDurationRepresentation(rep: Partial<IYearMonthDurationRepresentation>):\nIYearMonthDurationRepresentation {\n return {\n year: rep.year ?? 0,\n month: rep.month ?? 0,\n };\n}\n\nexport function defaultedDurationRepresentation(\n rep: Partial<IDurationRepresentation>,\n): IDurationRepresentation {\n return {\n ...defaultedDayTimeDurationRepresentation(rep),\n ...defaultedYearMonthDurationRepresentation(rep),\n };\n}\n\nexport function simplifyDurationRepresentation(rep: Partial<IDurationRepresentation>):\nPartial<IDurationRepresentation> {\n const temp = defaultedDurationRepresentation(rep);\n const res: Partial<IDurationRepresentation> = {};\n\n // Simplify year part\n const years = temp.year + Math.trunc(temp.month / 12);\n if (years) {\n res.year = years;\n temp.month %= 12;\n }\n if (temp.month) {\n res.month = temp.month;\n }\n\n // Simplify day part\n const days = temp.day + Math.trunc(temp.hours / 24) +\n Math.trunc(temp.minutes / (24 * 60)) + Math.trunc(temp.seconds / (24 * 60 * 60));\n if (days) {\n res.day = days;\n temp.hours %= 24;\n temp.minutes %= 24 * 60;\n temp.seconds %= 24 * 60 * 60;\n }\n const hours = temp.hours + Math.trunc(temp.minutes / 60) +\n Math.trunc(temp.seconds / (60 * 60));\n if (hours) {\n res.hours = hours;\n temp.minutes %= 60;\n temp.seconds %= 60 * 60;\n }\n const minutes = temp.minutes + Math.trunc(temp.seconds / 60);\n if (minutes) {\n res.minutes = minutes;\n temp.seconds %= 60;\n }\n if (temp.seconds) {\n res.seconds = temp.seconds;\n }\n return res;\n}\n\nexport function defaultedDateTimeRepresentation(rep: Partial<IDateTimeRepresentation>): IDateTimeRepresentation {\n return {\n ...rep,\n day: rep.day ?? 1,\n hours: rep.hours ?? 0,\n month: rep.month ?? 1,\n year: rep.year ?? 0,\n seconds: rep.seconds ?? 0,\n minutes: rep.minutes ?? 0,\n };\n}\n\nexport function toDateTimeRepresentation({ date, timeZone }:\n{ date: Date; timeZone: ITimeZoneRepresentation }): IDateTimeRepresentation {\n return {\n year: date.getFullYear(),\n month: date.getMonth() + 1,\n day: date.getDate(),\n hours: date.getHours(),\n minutes: date.getMinutes(),\n seconds: date.getSeconds(),\n zoneHours: timeZone.zoneHours,\n zoneMinutes: timeZone.zoneMinutes,\n };\n}\n\nexport function negateDuration(dur: Partial<IDurationRepresentation>): Partial<IDurationRepresentation> {\n return {\n year: dur.year === undefined ? undefined : -1 * dur.year,\n month: dur.month === undefined ? undefined : -1 * dur.month,\n day: dur.day === undefined ? undefined : -1 * dur.day,\n hours: dur.hours === undefined ? undefined : -1 * dur.hours,\n minutes: dur.minutes === undefined ? undefined : -1 * dur.minutes,\n seconds: dur.seconds === undefined ? undefined : -1 * dur.seconds,\n };\n}\n\nexport function toJSDate(date: IDateTimeRepresentation): Date {\n // The given hours will be assumed to be local time.\n const res = new Date(\n date.year,\n date.month - 1,\n date.day,\n date.hours,\n date.minutes,\n Math.trunc(date.seconds),\n (date.seconds % 1) * 1_000,\n );\n if (date.year >= 0 && date.year < 100) {\n // Special rule of date has gone int action:\n\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/Date#individual_date_and_time_component_values\n\n const jumpDeltaOfDate = 1_900;\n res.setFullYear(res.getFullYear() - jumpDeltaOfDate);\n }\n return res;\n}\n\nexport function toUTCDate(date: Partial<IDateTimeRepresentation>, defaultTimezone: ITimeZoneRepresentation): Date {\n const localTime = toJSDate(defaultedDateTimeRepresentation(date));\n // This date has been constructed in machine local time, now we alter it to become UTC and convert to correct timezone\n\n // Correction needed from local machine timezone to UTC\n const minutesCorrectionLocal = localTime.getTimezoneOffset();\n // Correction needed from UTC to provided timeZone\n const hourCorrectionUTC = date.zoneHours ?? defaultTimezone.zoneHours;\n const minutesCorrectionUTC = date.zoneMinutes ?? defaultTimezone.zoneMinutes;\n return new Date(\n localTime.getTime() - (minutesCorrectionLocal + hourCorrectionUTC * 60 + minutesCorrectionUTC) * 60 * 1_000,\n );\n}\n\nexport function trimToYearMonthDuration(dur: Partial<IDurationRepresentation>):\nPartial<IYearMonthDurationRepresentation> {\n return {\n year: dur.year,\n month: dur.month,\n };\n}\n\nexport function trimToDayTimeDuration(dur: Partial<IDurationRepresentation>): Partial<IDayTimeDurationRepresentation> {\n return {\n day: dur.day,\n hours: dur.hours,\n minutes: dur.minutes,\n seconds: dur.seconds,\n };\n}\n\nexport function yearMonthDurationsToMonths(dur: IYearMonthDurationRepresentation): number {\n return dur.year * 12 + dur.month;\n}\n\nexport function dayTimeDurationsToSeconds(dur: IDayTimeDurationRepresentation): number {\n return (((dur.day * 24) + dur.hours) * 60 + dur.minutes) * 60 + dur.seconds;\n}\n\nexport function extractRawTimeZone(zoneContained: string): string {\n const extraction = /(Z|([+-]\\d\\d:\\d\\d))?$/u.exec(zoneContained);\n // It is safe to cast here because the empty string can always match.\n return extraction![0];\n}\n\nexport function extractTimeZone(date: Date): ITimeZoneRepresentation {\n return {\n zoneHours: date.getTimezoneOffset() / 60,\n zoneMinutes: date.getTimezoneOffset() % 60,\n };\n}\n"]}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NoAggregator = exports.ExtensionFunctionError = exports.InvalidExpression = exports.InvalidArity = exports.UnexpectedError = exports.ParseError = exports.EmptyAggregateError = exports.IncompatibleDirectionalLanguageOperation = exports.IncompatibleLanguageOperation = exports.InvalidTimezoneCall = exports.CastError = exports.InvalidArgumentTypes = exports.InError = exports.CoalesceError = exports.RDFEqualTypeError = exports.EBVCoercionError = exports.UnboundVariableError = exports.InvalidLexicalForm = exports.isExpressionError = exports.ExpressionError = void 0;
3
+ exports.NoAggregator = exports.ExtensionFunctionError = exports.InvalidExpression = exports.InvalidArity = exports.UnexpectedError = exports.ParseError = exports.EmptyAggregateError = exports.IncompatibleDirectionalLanguageOperation = exports.IncompatibleLanguageOperation = exports.InvalidTimezoneCall = exports.CastError = exports.InvalidArgumentTypes = exports.InError = exports.CoalesceError = exports.RDFEqualTypeError = exports.EBVCoercionError = exports.UnboundVariableError = exports.InvalidLexicalForm = exports.ExpressionError = void 0;
4
+ exports.isExpressionError = isExpressionError;
4
5
  /**
5
6
  * This class of error will be thrown when an expression errors.
6
7
  * Various reasons this could happen are:
@@ -27,13 +28,13 @@ exports.ExpressionError = ExpressionError;
27
28
  function isExpressionError(error) {
28
29
  return error instanceof ExpressionError;
29
30
  }
30
- exports.isExpressionError = isExpressionError;
31
31
  /**
32
32
  * A literal has an invalid lexical form for the datatype it is accompanied by.
33
33
  * This error is only thrown when the term is as function argument that requires
34
34
  * a valid lexical form.
35
35
  */
36
36
  class InvalidLexicalForm extends ExpressionError {
37
+ arg;
37
38
  constructor(arg) {
38
39
  super(`Invalid lexical form '${pp(arg)}'`);
39
40
  this.arg = arg;
@@ -44,6 +45,8 @@ exports.InvalidLexicalForm = InvalidLexicalForm;
44
45
  * A variable in the expression was not bound.
45
46
  */
46
47
  class UnboundVariableError extends ExpressionError {
48
+ variable;
49
+ bindings;
47
50
  constructor(variable, bindings) {
48
51
  super(`Unbound variable '${pp(variable)}'`);
49
52
  this.variable = variable;
@@ -58,6 +61,7 @@ exports.UnboundVariableError = UnboundVariableError;
58
61
  * on EBVs.
59
62
  */
60
63
  class EBVCoercionError extends ExpressionError {
64
+ arg;
61
65
  constructor(arg) {
62
66
  super(`Cannot coerce term to EBV '${pp(arg)}'`);
63
67
  this.arg = arg;
@@ -70,6 +74,7 @@ exports.EBVCoercionError = EBVCoercionError;
70
74
  * See {@link https://www.w3.org/TR/sparql11-query/#func-RDFterm-equal | term equality spec}.
71
75
  */
72
76
  class RDFEqualTypeError extends ExpressionError {
77
+ args;
73
78
  constructor(args) {
74
79
  super('Equality test for literals with unsupported datatypes');
75
80
  this.args = args;
@@ -80,6 +85,7 @@ exports.RDFEqualTypeError = RDFEqualTypeError;
80
85
  * All the expressions in a COALESCE call threw errors.
81
86
  */
82
87
  class CoalesceError extends ExpressionError {
88
+ errors;
83
89
  constructor(errors) {
84
90
  super('All COALESCE arguments threw errors');
85
91
  this.errors = errors;
@@ -90,6 +96,7 @@ exports.CoalesceError = CoalesceError;
90
96
  * No arguments to an IN call where equal, and at least one threw an error.
91
97
  */
92
98
  class InError extends ExpressionError {
99
+ errors;
93
100
  constructor(errors) {
94
101
  super(`Some argument to IN errorred and none where equal. ${errors.map(err => `(${err.toString()}) `).join('and ')}`);
95
102
  this.errors = errors;
@@ -100,6 +107,8 @@ exports.InError = InError;
100
107
  * Literals were passed to an operator that doesn't support their datatypes.
101
108
  */
102
109
  class InvalidArgumentTypes extends ExpressionError {
110
+ args;
111
+ op;
103
112
  constructor(args, op) {
104
113
  super(`Argument types not valid for operator: '${pp(op)}' with '${pp(args)}`);
105
114
  this.args = args;
@@ -111,6 +120,7 @@ exports.InvalidArgumentTypes = InvalidArgumentTypes;
111
120
  * An invalid typecast happened.
112
121
  */
113
122
  class CastError extends ExpressionError {
123
+ arg;
114
124
  constructor(arg, cast) {
115
125
  super(`Invalid cast: '${pp(arg)}' to '${pp(cast)}'`);
116
126
  this.arg = arg;
@@ -118,6 +128,7 @@ class CastError extends ExpressionError {
118
128
  }
119
129
  exports.CastError = CastError;
120
130
  class InvalidTimezoneCall extends ExpressionError {
131
+ dateString;
121
132
  constructor(dateString) {
122
133
  super(`TIMEZONE call on ${dateString} which has no timezone`);
123
134
  this.dateString = dateString;
@@ -125,6 +136,8 @@ class InvalidTimezoneCall extends ExpressionError {
125
136
  }
126
137
  exports.InvalidTimezoneCall = InvalidTimezoneCall;
127
138
  class IncompatibleLanguageOperation extends ExpressionError {
139
+ arg1;
140
+ arg2;
128
141
  constructor(arg1, arg2) {
129
142
  super(`Operation on incompatible language literals '${pp(arg1)}' and '${pp(arg2)}'`);
130
143
  this.arg1 = arg1;
@@ -133,6 +146,8 @@ class IncompatibleLanguageOperation extends ExpressionError {
133
146
  }
134
147
  exports.IncompatibleLanguageOperation = IncompatibleLanguageOperation;
135
148
  class IncompatibleDirectionalLanguageOperation extends ExpressionError {
149
+ arg1;
150
+ arg2;
136
151
  constructor(arg1, arg2) {
137
152
  super(`Operation on incompatible directional language literals '${pp(arg1)}' and '${pp(arg2)}'`);
138
153
  this.arg1 = arg1;
@@ -159,6 +174,7 @@ exports.ParseError = ParseError;
159
174
  * mistake has been made.
160
175
  */
161
176
  class UnexpectedError extends Error {
177
+ payload;
162
178
  constructor(message, payload) {
163
179
  super(`Programmer Error '${message}'`);
164
180
  this.payload = payload;
@@ -166,6 +182,8 @@ class UnexpectedError extends Error {
166
182
  }
167
183
  exports.UnexpectedError = UnexpectedError;
168
184
  class InvalidArity extends Error {
185
+ args;
186
+ op;
169
187
  constructor(args, op) {
170
188
  super(`The number of args does not match the arity of the operator '${pp(op)}'.`);
171
189
  this.args = args;
@@ -1 +1 @@
1
- {"version":3,"file":"Errors.js","sourceRoot":"","sources":["Errors.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Expression } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type * as E from '../expressions';\nimport type * as C from './Consts';\n\n/**\n * This class of error will be thrown when an expression errors.\n * Various reasons this could happen are:\n * - invalid types for the given operator\n * - unbound variables\n * - invalid lexical forms\n * - ...\n *\n * The distinction is made so that one can catch this specific type\n * and handle it accordingly to the SPARQL spec (relevant for e.g. FILTER, EXTEND),\n * while others (programming errors) can be re-thrown.\n *\n * @see isExpressionError\n */\nexport class ExpressionError extends Error {}\n\n/**\n * Checks whether a given error is an {@link ExpressionError}.\n * Also useful for mocking in tests for covering all branches.\n *\n * @see ExpressionError\n */\nexport function isExpressionError(error: Error): boolean {\n return error instanceof ExpressionError;\n}\n\n/**\n * A literal has an invalid lexical form for the datatype it is accompanied by.\n * This error is only thrown when the term is as function argument that requires\n * a valid lexical form.\n */\nexport class InvalidLexicalForm extends ExpressionError {\n public constructor(public arg: RDF.Term) {\n super(`Invalid lexical form '${pp(arg)}'`);\n }\n}\n\n/**\n * A variable in the expression was not bound.\n */\nexport class UnboundVariableError extends ExpressionError {\n public constructor(public variable: string, public bindings: RDF.Bindings) {\n super(`Unbound variable '${pp(variable)}'`);\n }\n}\n\n/**\n * An invalid term was being coerced to an Effective Boolean Value.\n *\n * See the {@link https://www.w3.org/TR/sparql11-query/#ebv | SPARQL docs}\n * on EBVs.\n */\nexport class EBVCoercionError extends ExpressionError {\n public constructor(public arg: E.Term) {\n super(`Cannot coerce term to EBV '${pp(arg)}'`);\n }\n}\n\n/**\n * An equality test was done on literals with unsupported datatypes.\n *\n * See {@link https://www.w3.org/TR/sparql11-query/#func-RDFterm-equal | term equality spec}.\n */\nexport class RDFEqualTypeError extends ExpressionError {\n public constructor(public args: Expression[]) {\n super('Equality test for literals with unsupported datatypes');\n }\n}\n\n/**\n * All the expressions in a COALESCE call threw errors.\n */\nexport class CoalesceError extends ExpressionError {\n public constructor(public errors: Error[]) {\n super('All COALESCE arguments threw errors');\n }\n}\n\n/**\n * No arguments to an IN call where equal, and at least one threw an error.\n */\nexport class InError extends ExpressionError {\n public constructor(public errors: (Error | false)[]) {\n super(\n `Some argument to IN errorred and none where equal. ${\n\n errors.map(err => `(${err.toString()}) `).join('and ')}`,\n );\n }\n}\n\n/**\n * Literals were passed to an operator that doesn't support their datatypes.\n */\nexport class InvalidArgumentTypes extends ExpressionError {\n public constructor(public args: Expression[], public op: C.GeneralOperator) {\n super(`Argument types not valid for operator: '${pp(op)}' with '${pp(args)}`);\n }\n}\n\n/**\n * An invalid typecast happened.\n */\nexport class CastError<T> extends ExpressionError {\n public constructor(public arg: T, cast: C.TypeURL) {\n super(`Invalid cast: '${pp(arg)}' to '${pp(cast)}'`);\n }\n}\n\nexport class InvalidTimezoneCall extends ExpressionError {\n public constructor(public dateString: string) {\n super(`TIMEZONE call on ${dateString} which has no timezone`);\n }\n}\n\nexport class IncompatibleLanguageOperation extends ExpressionError {\n public constructor(public arg1: E.LangStringLiteral, public arg2: E.LangStringLiteral) {\n super(`Operation on incompatible language literals '${pp(arg1)}' and '${pp(arg2)}'`);\n }\n}\n\nexport class IncompatibleDirectionalLanguageOperation extends ExpressionError {\n public constructor(public arg1: E.DirLangStringLiteral, public arg2: E.DirLangStringLiteral) {\n super(`Operation on incompatible directional language literals '${pp(arg1)}' and '${pp(arg2)}'`);\n }\n}\n\nexport class EmptyAggregateError extends ExpressionError {\n public constructor() {\n super('Empty aggregate expression');\n }\n}\n\nexport class ParseError extends ExpressionError {\n public constructor(str: string, type: string) {\n super(`Failed to parse \"${str}\" as ${type}.`);\n }\n}\n\n// Non Expression Errors ------------------------------------------------------\n\n/**\n * An error that arises when we detect a 'should-be-impossible' state.\n * Given that this error is thrown, it clearly wasn't impossible, and some\n * mistake has been made.\n */\nexport class UnexpectedError<T> extends Error {\n public constructor(message: string, public payload?: T) {\n super(`Programmer Error '${message}'`);\n }\n}\n\nexport class InvalidArity extends Error {\n public constructor(public args: Expression[], public op: C.GeneralOperator) {\n super(`The number of args does not match the arity of the operator '${pp(op)}'.`);\n }\n}\n\nexport class InvalidExpression<T> extends Error {\n public constructor(expr: T) {\n super(`Invalid SPARQL Expression '${pp(expr)}'`);\n }\n}\n\nexport class ExtensionFunctionError extends Error {\n public constructor(name: string, functionError: unknown) {\n if (functionError instanceof Error) {\n super(`Error thrown in ${name}: ${functionError.message}${functionError.stack ? `\\n${functionError.stack}` : ''}`);\n } else {\n super(`Error thrown in ${name}`);\n }\n }\n}\n\nexport class NoAggregator extends Error {\n public constructor(name?: string) {\n super(`Aggregate expression ${pp(name)} found, but no aggregate hook provided.`);\n }\n}\n\nfunction pp<T>(object: T): string {\n return JSON.stringify(object);\n}\n"]}
1
+ {"version":3,"file":"Errors.js","sourceRoot":"","sources":["Errors.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Expression } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type * as E from '../expressions';\nimport type * as C from './Consts';\n\n/**\n * This class of error will be thrown when an expression errors.\n * Various reasons this could happen are:\n * - invalid types for the given operator\n * - unbound variables\n * - invalid lexical forms\n * - ...\n *\n * The distinction is made so that one can catch this specific type\n * and handle it accordingly to the SPARQL spec (relevant for e.g. FILTER, EXTEND),\n * while others (programming errors) can be re-thrown.\n *\n * @see isExpressionError\n */\nexport class ExpressionError extends Error {}\n\n/**\n * Checks whether a given error is an {@link ExpressionError}.\n * Also useful for mocking in tests for covering all branches.\n *\n * @see ExpressionError\n */\nexport function isExpressionError(error: Error): boolean {\n return error instanceof ExpressionError;\n}\n\n/**\n * A literal has an invalid lexical form for the datatype it is accompanied by.\n * This error is only thrown when the term is as function argument that requires\n * a valid lexical form.\n */\nexport class InvalidLexicalForm extends ExpressionError {\n public constructor(public arg: RDF.Term) {\n super(`Invalid lexical form '${pp(arg)}'`);\n }\n}\n\n/**\n * A variable in the expression was not bound.\n */\nexport class UnboundVariableError extends ExpressionError {\n public constructor(public variable: string, public bindings: RDF.Bindings) {\n super(`Unbound variable '${pp(variable)}'`);\n }\n}\n\n/**\n * An invalid term was being coerced to an Effective Boolean Value.\n *\n * See the {@link https://www.w3.org/TR/sparql11-query/#ebv | SPARQL docs}\n * on EBVs.\n */\nexport class EBVCoercionError extends ExpressionError {\n public constructor(public arg: E.Term) {\n super(`Cannot coerce term to EBV '${pp(arg)}'`);\n }\n}\n\n/**\n * An equality test was done on literals with unsupported datatypes.\n *\n * See {@link https://www.w3.org/TR/sparql11-query/#func-RDFterm-equal | term equality spec}.\n */\nexport class RDFEqualTypeError extends ExpressionError {\n public constructor(public args: Expression[]) {\n super('Equality test for literals with unsupported datatypes');\n }\n}\n\n/**\n * All the expressions in a COALESCE call threw errors.\n */\nexport class CoalesceError extends ExpressionError {\n public constructor(public errors: Error[]) {\n super('All COALESCE arguments threw errors');\n }\n}\n\n/**\n * No arguments to an IN call where equal, and at least one threw an error.\n */\nexport class InError extends ExpressionError {\n public constructor(public errors: (Error | false)[]) {\n super(\n `Some argument to IN errorred and none where equal. ${\n\n errors.map(err => `(${err.toString()}) `).join('and ')}`,\n );\n }\n}\n\n/**\n * Literals were passed to an operator that doesn't support their datatypes.\n */\nexport class InvalidArgumentTypes extends ExpressionError {\n public constructor(public args: Expression[], public op: C.GeneralOperator) {\n super(`Argument types not valid for operator: '${pp(op)}' with '${pp(args)}`);\n }\n}\n\n/**\n * An invalid typecast happened.\n */\nexport class CastError<T> extends ExpressionError {\n public constructor(public arg: T, cast: C.TypeURL) {\n super(`Invalid cast: '${pp(arg)}' to '${pp(cast)}'`);\n }\n}\n\nexport class InvalidTimezoneCall extends ExpressionError {\n public constructor(public dateString: string) {\n super(`TIMEZONE call on ${dateString} which has no timezone`);\n }\n}\n\nexport class IncompatibleLanguageOperation extends ExpressionError {\n public constructor(public arg1: E.LangStringLiteral, public arg2: E.LangStringLiteral) {\n super(`Operation on incompatible language literals '${pp(arg1)}' and '${pp(arg2)}'`);\n }\n}\n\nexport class IncompatibleDirectionalLanguageOperation extends ExpressionError {\n public constructor(public arg1: E.DirLangStringLiteral, public arg2: E.DirLangStringLiteral) {\n super(`Operation on incompatible directional language literals '${pp(arg1)}' and '${pp(arg2)}'`);\n }\n}\n\nexport class EmptyAggregateError extends ExpressionError {\n public constructor() {\n super('Empty aggregate expression');\n }\n}\n\nexport class ParseError extends ExpressionError {\n public constructor(str: string, type: string) {\n super(`Failed to parse \"${str}\" as ${type}.`);\n }\n}\n\n// Non Expression Errors ------------------------------------------------------\n\n/**\n * An error that arises when we detect a 'should-be-impossible' state.\n * Given that this error is thrown, it clearly wasn't impossible, and some\n * mistake has been made.\n */\nexport class UnexpectedError<T> extends Error {\n public constructor(message: string, public payload?: T) {\n super(`Programmer Error '${message}'`);\n }\n}\n\nexport class InvalidArity extends Error {\n public constructor(public args: Expression[], public op: C.GeneralOperator) {\n super(`The number of args does not match the arity of the operator '${pp(op)}'.`);\n }\n}\n\nexport class InvalidExpression<T> extends Error {\n public constructor(expr: T) {\n super(`Invalid SPARQL Expression '${pp(expr)}'`);\n }\n}\n\nexport class ExtensionFunctionError extends Error {\n public constructor(name: string, functionError: unknown) {\n if (functionError instanceof Error) {\n super(`Error thrown in ${name}: ${functionError.message}${functionError.stack ? `\\n${functionError.stack}` : ''}`);\n } else {\n super(`Error thrown in ${name}`);\n }\n }\n}\n\nexport class NoAggregator extends Error {\n public constructor(name?: string) {\n super(`Aggregate expression ${pp(name)} found, but no aggregate hook provided.`);\n }\n}\n\nfunction pp<T>(object: T): string {\n return JSON.stringify(object);\n}\n"]}
@@ -1,6 +1,5 @@
1
1
  import type { IDateRepresentation, IDateTimeRepresentation, IDayTimeDurationRepresentation, IDurationRepresentation, ITimeRepresentation, IYearMonthDurationRepresentation } from '@comunica/types';
2
2
  /**
3
- * TODO: Fix decently
4
3
  * Parses float datatypes (double, float).
5
4
  *
6
5
  * All invalid lexical values return undefined.
@@ -1,12 +1,17 @@
1
1
  "use strict";
2
- // TODO: Find a library for this, because this is basically an xsd datatypes parser
3
2
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.parseDayTimeDuration = exports.parseYearMonthDuration = exports.parseDuration = exports.parseTime = exports.parseDate = exports.parseDateTime = exports.parseXSDDecimal = exports.parseXSDFloat = void 0;
3
+ exports.parseXSDFloat = parseXSDFloat;
4
+ exports.parseXSDDecimal = parseXSDDecimal;
5
+ exports.parseDateTime = parseDateTime;
6
+ exports.parseDate = parseDate;
7
+ exports.parseTime = parseTime;
8
+ exports.parseDuration = parseDuration;
9
+ exports.parseYearMonthDuration = parseYearMonthDuration;
10
+ exports.parseDayTimeDuration = parseDayTimeDuration;
5
11
  const DateTimeHelpers_1 = require("./DateTimeHelpers");
6
12
  const Errors_1 = require("./Errors");
7
13
  const SpecAlgos_1 = require("./SpecAlgos");
8
14
  /**
9
- * TODO: Fix decently
10
15
  * Parses float datatypes (double, float).
11
16
  *
12
17
  * All invalid lexical values return undefined.
@@ -29,7 +34,6 @@ function parseXSDFloat(value) {
29
34
  }
30
35
  return numb;
31
36
  }
32
- exports.parseXSDFloat = parseXSDFloat;
33
37
  /**
34
38
  * Parses decimal datatypes (decimal, int, byte, nonPositiveInteger, etc...).
35
39
  *
@@ -42,7 +46,6 @@ function parseXSDDecimal(value) {
42
46
  const numb = Number(value);
43
47
  return Number.isNaN(numb) ? undefined : numb;
44
48
  }
45
- exports.parseXSDDecimal = parseXSDDecimal;
46
49
  function parseDateTime(dateTimeStr) {
47
50
  // https://www.w3.org/TR/xmlschema-2/#dateTime
48
51
  const [date, time] = dateTimeStr.split('T');
@@ -51,7 +54,6 @@ function parseDateTime(dateTimeStr) {
51
54
  }
52
55
  return { ...parseDate(date), ...__parseTime(time) };
53
56
  }
54
- exports.parseDateTime = parseDateTime;
55
57
  function parseTimeZone(timeZoneStr) {
56
58
  // https://www.w3.org/TR/xmlschema-2/#dateTime-timezones
57
59
  if (timeZoneStr === '') {
@@ -86,7 +88,6 @@ function parseDate(dateStr) {
86
88
  }
87
89
  return res;
88
90
  }
89
- exports.parseDate = parseDate;
90
91
  function __parseTime(timeStr) {
91
92
  // https://www.w3.org/TR/xmlschema-2/#time-lexical-repr
92
93
  const formatted = timeStr.replaceAll(/^(\d\d):(\d\d):(\d\d(\.\d+)?)(Z|([+-]\d\d:\d\d))?$/gu, '$1!$2!$3!$5');
@@ -115,7 +116,6 @@ function parseTime(timeStr) {
115
116
  res.hours %= 24;
116
117
  return res;
117
118
  }
118
- exports.parseTime = parseTime;
119
119
  function parseDuration(durationStr) {
120
120
  // https://www.w3.org/TR/xmlschema-2/#duration-lexical-repr
121
121
  const [dayNotation, timeNotation] = durationStr.split('T');
@@ -146,7 +146,6 @@ function parseDuration(durationStr) {
146
146
  seconds: duration[6] ? sign * Number(duration[6]) : undefined,
147
147
  });
148
148
  }
149
- exports.parseDuration = parseDuration;
150
149
  function parseYearMonthDuration(durationStr) {
151
150
  const res = parseDuration(durationStr);
152
151
  if (['hours', 'minutes', 'seconds', 'day'].some(key => Boolean(res[key]))) {
@@ -154,7 +153,6 @@ function parseYearMonthDuration(durationStr) {
154
153
  }
155
154
  return res;
156
155
  }
157
- exports.parseYearMonthDuration = parseYearMonthDuration;
158
156
  function parseDayTimeDuration(durationStr) {
159
157
  const res = parseDuration(durationStr);
160
158
  if (['year', 'month'].some(key => Boolean(res[key]))) {
@@ -162,5 +160,4 @@ function parseDayTimeDuration(durationStr) {
162
160
  }
163
161
  return res;
164
162
  }
165
- exports.parseDayTimeDuration = parseDayTimeDuration;
166
163
  //# sourceMappingURL=Parsing.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Parsing.js","sourceRoot":"","sources":["Parsing.ts"],"names":[],"mappings":"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","sourcesContent":["// TODO: Find a library for this, because this is basically an xsd datatypes parser\n\nimport type {\n IDateRepresentation,\n IDateTimeRepresentation,\n IDayTimeDurationRepresentation,\n IDurationRepresentation,\n ITimeRepresentation,\n ITimeZoneRepresentation,\n IYearMonthDurationRepresentation,\n} from '@comunica/types';\nimport { simplifyDurationRepresentation } from './DateTimeHelpers';\nimport { ParseError } from './Errors';\nimport { maximumDayInMonthFor } from './SpecAlgos';\n\n/**\n * TODO: Fix decently\n * Parses float datatypes (double, float).\n *\n * All invalid lexical values return undefined.\n *\n * @param value the string to interpret as a number\n */\nexport function parseXSDFloat(value: string): number | undefined {\n const numb = Number(value);\n if (Number.isNaN(numb)) {\n if (value === 'NaN') {\n return Number.NaN;\n }\n if (value === 'INF' || value === '+INF') {\n return Number.POSITIVE_INFINITY;\n }\n if (value === '-INF') {\n return Number.NEGATIVE_INFINITY;\n }\n return undefined;\n }\n return numb;\n}\n\n/**\n * Parses decimal datatypes (decimal, int, byte, nonPositiveInteger, etc...).\n *\n * All other values, including NaN, INF, and floating point numbers all\n * return undefined;\n *\n * @param value the string to interpret as a number\n */\nexport function parseXSDDecimal(value: string): number | undefined {\n const numb = Number(value);\n return Number.isNaN(numb) ? undefined : numb;\n}\n\nexport function parseDateTime(dateTimeStr: string): IDateTimeRepresentation {\n // https://www.w3.org/TR/xmlschema-2/#dateTime\n const [ date, time ] = dateTimeStr.split('T');\n if (time === undefined) {\n throw new ParseError(dateTimeStr, 'dateTime');\n }\n return { ...parseDate(date), ...__parseTime(time) };\n}\n\nfunction parseTimeZone(timeZoneStr: string): Partial<ITimeZoneRepresentation> {\n // https://www.w3.org/TR/xmlschema-2/#dateTime-timezones\n if (timeZoneStr === '') {\n return { zoneHours: undefined, zoneMinutes: undefined };\n }\n if (timeZoneStr === 'Z') {\n return { zoneHours: 0, zoneMinutes: 0 };\n }\n const timeZoneStrings = timeZoneStr.replaceAll(/^([+|-])(\\d\\d):(\\d\\d)$/gu, '$11!$2!$3').split('!');\n const timeZone = timeZoneStrings.map(Number);\n return {\n zoneHours: timeZone[0] * timeZone[1],\n zoneMinutes: timeZone[0] * timeZone[2],\n };\n}\n\nexport function parseDate(dateStr: string): IDateRepresentation {\n // https://www.w3.org/TR/xmlschema-2/#date-lexical-representation\n const formatted = dateStr.replaceAll(\n /^(-)?([123456789]*\\d{4})-(\\d\\d)-(\\d\\d)(Z|([+-]\\d\\d:\\d\\d))?$/gu,\n '$11!$2!$3!$4!$5',\n );\n if (formatted === dateStr) {\n throw new ParseError(dateStr, 'date');\n }\n const dateStrings = formatted.split('!');\n const date = dateStrings.slice(0, -1).map(Number);\n\n const res = {\n year: date[0] * date[1],\n month: date[2],\n day: date[3],\n ...parseTimeZone(dateStrings[4]),\n };\n if (!(res.month >= 1 && res.month <= 12) || !(res.day >= 1 && res.day <= maximumDayInMonthFor(res.year, res.month))) {\n throw new ParseError(dateStr, 'date');\n }\n return res;\n}\n\nfunction __parseTime(timeStr: string): ITimeRepresentation {\n // https://www.w3.org/TR/xmlschema-2/#time-lexical-repr\n const formatted = timeStr.replaceAll(/^(\\d\\d):(\\d\\d):(\\d\\d(\\.\\d+)?)(Z|([+-]\\d\\d:\\d\\d))?$/gu, '$1!$2!$3!$5');\n if (formatted === timeStr) {\n throw new ParseError(timeStr, 'time');\n }\n const timeStrings = formatted.split('!');\n const time = timeStrings.slice(0, -1).map(Number);\n\n const res = {\n hours: time[0],\n minutes: time[1],\n seconds: time[2],\n ...parseTimeZone(timeStrings[3]),\n };\n\n if (res.seconds >= 60 || res.minutes >= 60 || res.hours > 24 ||\n (res.hours === 24 && (res.minutes !== 0 || res.seconds !== 0))) {\n throw new ParseError(timeStr, 'time');\n }\n return res;\n}\n\n// We make a separation in internal and external since dateTime will have hour-date rollover,\n// but time just does modulo the time.\nexport function parseTime(timeStr: string): ITimeRepresentation {\n // https://www.w3.org/TR/xmlschema-2/#time-lexical-repr\n const res = __parseTime(timeStr);\n res.hours %= 24;\n return res;\n}\n\nexport function parseDuration(durationStr: string): Partial<IDurationRepresentation> {\n // https://www.w3.org/TR/xmlschema-2/#duration-lexical-repr\n const [ dayNotation, timeNotation ] = durationStr.split('T');\n\n // Handle date part\n const formattedDayDur = dayNotation.replaceAll(/^(-)?P(\\d+Y)?(\\d+M)?(\\d+D)?$/gu, '$11S!$2!$3!$4');\n if (formattedDayDur === dayNotation) {\n throw new ParseError(durationStr, 'duration');\n }\n\n const durationStrings = formattedDayDur.split('!');\n if (timeNotation !== undefined) {\n const formattedTimeDur = timeNotation.replaceAll(/^(\\d+H)?(\\d+M)?(\\d+(\\.\\d+)?S)?$/gu, '$1!$2!$3');\n\n if (timeNotation === '' || timeNotation === formattedTimeDur) {\n throw new ParseError(durationStr, 'duration');\n }\n durationStrings.push(...formattedTimeDur.split('!'));\n }\n const duration = durationStrings.map(str => str.slice(0, -1));\n if (!duration.slice(1).some(Boolean)) {\n throw new ParseError(durationStr, 'duration');\n }\n\n const sign = <-1 | 1> Number(duration[0]);\n return simplifyDurationRepresentation({\n year: duration[1] ? sign * Number(duration[1]) : undefined,\n month: duration[2] ? sign * Number(duration[2]) : undefined,\n day: duration[3] ? sign * Number(duration[3]) : undefined,\n hours: duration[4] ? sign * Number(duration[4]) : undefined,\n minutes: duration[5] ? sign * Number(duration[5]) : undefined,\n seconds: duration[6] ? sign * Number(duration[6]) : undefined,\n });\n}\n\nexport function parseYearMonthDuration(durationStr: string): Partial<IYearMonthDurationRepresentation> {\n const res = parseDuration(durationStr);\n if ([ 'hours', 'minutes', 'seconds', 'day' ].some(key => Boolean((<any> res)[key]))) {\n throw new ParseError(durationStr, 'yearMonthDuration');\n }\n return res;\n}\n\nexport function parseDayTimeDuration(durationStr: string): Partial<IDayTimeDurationRepresentation> {\n const res = parseDuration(durationStr);\n if ([ 'year', 'month' ].some(key => Boolean((<any> res)[key]))) {\n throw new ParseError(durationStr, 'dayTimeDuration');\n }\n return res;\n}\n"]}
1
+ {"version":3,"file":"Parsing.js","sourceRoot":"","sources":["Parsing.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n IDateRepresentation,\n IDateTimeRepresentation,\n IDayTimeDurationRepresentation,\n IDurationRepresentation,\n ITimeRepresentation,\n ITimeZoneRepresentation,\n IYearMonthDurationRepresentation,\n} from '@comunica/types';\nimport { simplifyDurationRepresentation } from './DateTimeHelpers';\nimport { ParseError } from './Errors';\nimport { maximumDayInMonthFor } from './SpecAlgos';\n\n/**\n * Parses float datatypes (double, float).\n *\n * All invalid lexical values return undefined.\n *\n * @param value the string to interpret as a number\n */\nexport function parseXSDFloat(value: string): number | undefined {\n const numb = Number(value);\n if (Number.isNaN(numb)) {\n if (value === 'NaN') {\n return Number.NaN;\n }\n if (value === 'INF' || value === '+INF') {\n return Number.POSITIVE_INFINITY;\n }\n if (value === '-INF') {\n return Number.NEGATIVE_INFINITY;\n }\n return undefined;\n }\n return numb;\n}\n\n/**\n * Parses decimal datatypes (decimal, int, byte, nonPositiveInteger, etc...).\n *\n * All other values, including NaN, INF, and floating point numbers all\n * return undefined;\n *\n * @param value the string to interpret as a number\n */\nexport function parseXSDDecimal(value: string): number | undefined {\n const numb = Number(value);\n return Number.isNaN(numb) ? undefined : numb;\n}\n\nexport function parseDateTime(dateTimeStr: string): IDateTimeRepresentation {\n // https://www.w3.org/TR/xmlschema-2/#dateTime\n const [ date, time ] = dateTimeStr.split('T');\n if (time === undefined) {\n throw new ParseError(dateTimeStr, 'dateTime');\n }\n return { ...parseDate(date), ...__parseTime(time) };\n}\n\nfunction parseTimeZone(timeZoneStr: string): Partial<ITimeZoneRepresentation> {\n // https://www.w3.org/TR/xmlschema-2/#dateTime-timezones\n if (timeZoneStr === '') {\n return { zoneHours: undefined, zoneMinutes: undefined };\n }\n if (timeZoneStr === 'Z') {\n return { zoneHours: 0, zoneMinutes: 0 };\n }\n const timeZoneStrings = timeZoneStr.replaceAll(/^([+|-])(\\d\\d):(\\d\\d)$/gu, '$11!$2!$3').split('!');\n const timeZone = timeZoneStrings.map(Number);\n return {\n zoneHours: timeZone[0] * timeZone[1],\n zoneMinutes: timeZone[0] * timeZone[2],\n };\n}\n\nexport function parseDate(dateStr: string): IDateRepresentation {\n // https://www.w3.org/TR/xmlschema-2/#date-lexical-representation\n const formatted = dateStr.replaceAll(\n /^(-)?([123456789]*\\d{4})-(\\d\\d)-(\\d\\d)(Z|([+-]\\d\\d:\\d\\d))?$/gu,\n '$11!$2!$3!$4!$5',\n );\n if (formatted === dateStr) {\n throw new ParseError(dateStr, 'date');\n }\n const dateStrings = formatted.split('!');\n const date = dateStrings.slice(0, -1).map(Number);\n\n const res = {\n year: date[0] * date[1],\n month: date[2],\n day: date[3],\n ...parseTimeZone(dateStrings[4]),\n };\n if (!(res.month >= 1 && res.month <= 12) || !(res.day >= 1 && res.day <= maximumDayInMonthFor(res.year, res.month))) {\n throw new ParseError(dateStr, 'date');\n }\n return res;\n}\n\nfunction __parseTime(timeStr: string): ITimeRepresentation {\n // https://www.w3.org/TR/xmlschema-2/#time-lexical-repr\n const formatted = timeStr.replaceAll(/^(\\d\\d):(\\d\\d):(\\d\\d(\\.\\d+)?)(Z|([+-]\\d\\d:\\d\\d))?$/gu, '$1!$2!$3!$5');\n if (formatted === timeStr) {\n throw new ParseError(timeStr, 'time');\n }\n const timeStrings = formatted.split('!');\n const time = timeStrings.slice(0, -1).map(Number);\n\n const res = {\n hours: time[0],\n minutes: time[1],\n seconds: time[2],\n ...parseTimeZone(timeStrings[3]),\n };\n\n if (res.seconds >= 60 || res.minutes >= 60 || res.hours > 24 ||\n (res.hours === 24 && (res.minutes !== 0 || res.seconds !== 0))) {\n throw new ParseError(timeStr, 'time');\n }\n return res;\n}\n\n// We make a separation in internal and external since dateTime will have hour-date rollover,\n// but time just does modulo the time.\nexport function parseTime(timeStr: string): ITimeRepresentation {\n // https://www.w3.org/TR/xmlschema-2/#time-lexical-repr\n const res = __parseTime(timeStr);\n res.hours %= 24;\n return res;\n}\n\nexport function parseDuration(durationStr: string): Partial<IDurationRepresentation> {\n // https://www.w3.org/TR/xmlschema-2/#duration-lexical-repr\n const [ dayNotation, timeNotation ] = durationStr.split('T');\n\n // Handle date part\n const formattedDayDur = dayNotation.replaceAll(/^(-)?P(\\d+Y)?(\\d+M)?(\\d+D)?$/gu, '$11S!$2!$3!$4');\n if (formattedDayDur === dayNotation) {\n throw new ParseError(durationStr, 'duration');\n }\n\n const durationStrings = formattedDayDur.split('!');\n if (timeNotation !== undefined) {\n const formattedTimeDur = timeNotation.replaceAll(/^(\\d+H)?(\\d+M)?(\\d+(\\.\\d+)?S)?$/gu, '$1!$2!$3');\n\n if (timeNotation === '' || timeNotation === formattedTimeDur) {\n throw new ParseError(durationStr, 'duration');\n }\n durationStrings.push(...formattedTimeDur.split('!'));\n }\n const duration = durationStrings.map(str => str.slice(0, -1));\n if (!duration.slice(1).some(Boolean)) {\n throw new ParseError(durationStr, 'duration');\n }\n\n const sign = <-1 | 1> Number(duration[0]);\n return simplifyDurationRepresentation({\n year: duration[1] ? sign * Number(duration[1]) : undefined,\n month: duration[2] ? sign * Number(duration[2]) : undefined,\n day: duration[3] ? sign * Number(duration[3]) : undefined,\n hours: duration[4] ? sign * Number(duration[4]) : undefined,\n minutes: duration[5] ? sign * Number(duration[5]) : undefined,\n seconds: duration[6] ? sign * Number(duration[6]) : undefined,\n });\n}\n\nexport function parseYearMonthDuration(durationStr: string): Partial<IYearMonthDurationRepresentation> {\n const res = parseDuration(durationStr);\n if ([ 'hours', 'minutes', 'seconds', 'day' ].some(key => Boolean((<any> res)[key]))) {\n throw new ParseError(durationStr, 'yearMonthDuration');\n }\n return res;\n}\n\nexport function parseDayTimeDuration(durationStr: string): Partial<IDayTimeDurationRepresentation> {\n const res = parseDuration(durationStr);\n if ([ 'year', 'month' ].some(key => Boolean((<any> res)[key]))) {\n throw new ParseError(durationStr, 'dayTimeDuration');\n }\n return res;\n}\n"]}
@@ -1,6 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.serializeDuration = exports.serializeTime = exports.serializeDate = exports.serializeDateTime = void 0;
3
+ exports.serializeDateTime = serializeDateTime;
4
+ exports.serializeDate = serializeDate;
5
+ exports.serializeTime = serializeTime;
6
+ exports.serializeDuration = serializeDuration;
4
7
  function numSerializer(num, min = 2) {
5
8
  return num.toLocaleString(undefined, { minimumIntegerDigits: min, useGrouping: false });
6
9
  }
@@ -9,7 +12,6 @@ function serializeDateTime(date) {
9
12
  // Extraction is needed because the date serializer can not add timezone y
10
13
  return `${serializeDate({ year: date.year, month: date.month, day: date.day })}T${serializeTime(date)}`;
11
14
  }
12
- exports.serializeDateTime = serializeDateTime;
13
15
  function serializeTimeZone(tz) {
14
16
  // https://www.w3.org/TR/xmlschema-2/#dateTime-timezones
15
17
  if (tz.zoneHours === undefined || tz.zoneMinutes === undefined) {
@@ -25,12 +27,10 @@ function serializeDate(date) {
25
27
  // https://www.w3.org/TR/xmlschema-2/#date-lexical-representation
26
28
  return `${numSerializer(date.year, 4)}-${numSerializer(date.month)}-${numSerializer(date.day)}${serializeTimeZone(date)}`;
27
29
  }
28
- exports.serializeDate = serializeDate;
29
30
  function serializeTime(time) {
30
31
  // https://www.w3.org/TR/xmlschema-2/#time-lexical-repr
31
32
  return `${numSerializer(time.hours)}:${numSerializer(time.minutes)}:${numSerializer(time.seconds)}${serializeTimeZone(time)}`;
32
33
  }
33
- exports.serializeTime = serializeTime;
34
34
  function serializeDuration(dur, zeroString = 'PT0S') {
35
35
  // https://www.w3.org/TR/xmlschema-2/#duration-lexical-repr
36
36
  if (!Object.values(dur).some(val => (val || 0) !== 0)) {
@@ -50,5 +50,4 @@ function serializeDuration(dur, zeroString = 'PT0S') {
50
50
  const second = dur.seconds ? `${Math.abs(dur.seconds)}S` : '';
51
51
  return `${dayNotation}T${hour}${minute}${second}`;
52
52
  }
53
- exports.serializeDuration = serializeDuration;
54
53
  //# sourceMappingURL=Serialization.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Serialization.js","sourceRoot":"","sources":["Serialization.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n IDateRepresentation,\n IDateTimeRepresentation,\n IDurationRepresentation,\n ITimeRepresentation,\n ITimeZoneRepresentation,\n} from '@comunica/types';\n\nfunction numSerializer(num: number, min = 2): string {\n return num.toLocaleString(undefined, { minimumIntegerDigits: min, useGrouping: false });\n}\n\nexport function serializeDateTime(date: IDateTimeRepresentation): string {\n // https://www.w3.org/TR/xmlschema-2/#dateTime\n // Extraction is needed because the date serializer can not add timezone y\n return `${serializeDate({ year: date.year, month: date.month, day: date.day })}T${serializeTime(date)}`;\n}\n\nfunction serializeTimeZone(tz: Partial<ITimeZoneRepresentation>): string {\n // https://www.w3.org/TR/xmlschema-2/#dateTime-timezones\n if (tz.zoneHours === undefined || tz.zoneMinutes === undefined) {\n return '';\n }\n if (tz.zoneHours === 0 && tz.zoneMinutes === 0) {\n return 'Z';\n }\n // SerializeTimeZone({ zoneHours: 5, zoneMinutes: 4 }) returns +05:04\n return `${tz.zoneHours >= 0 ? `+${numSerializer(tz.zoneHours)}` : numSerializer(tz.zoneHours)}:${numSerializer(Math.abs(tz.zoneMinutes))}`;\n}\n\nexport function serializeDate(date: IDateRepresentation): string {\n // https://www.w3.org/TR/xmlschema-2/#date-lexical-representation\n return `${numSerializer(date.year, 4)}-${numSerializer(date.month)}-${numSerializer(date.day)}${serializeTimeZone(date)}`;\n}\n\nexport function serializeTime(time: ITimeRepresentation): string {\n // https://www.w3.org/TR/xmlschema-2/#time-lexical-repr\n return `${numSerializer(time.hours)}:${numSerializer(time.minutes)}:${numSerializer(time.seconds)}${serializeTimeZone(time)}`;\n}\n\nexport function serializeDuration(dur: Partial<IDurationRepresentation>, zeroString: 'PT0S' | 'P0M' = 'PT0S'): string {\n // https://www.w3.org/TR/xmlschema-2/#duration-lexical-repr\n if (!Object.values(dur).some(val => (val || 0) !== 0)) {\n return zeroString;\n }\n\n const sign = Object.values(dur).some(val => (val || 0) < 0) ? '-' : '';\n const year = dur.year ? `${Math.abs(dur.year)}Y` : '';\n const month = dur.month ? `${Math.abs(dur.month)}M` : '';\n const day = dur.day ? `${Math.abs(dur.day)}D` : '';\n\n const dayNotation = `${sign}P${year}${month}${day}`;\n // eslint-disable-next-line ts/prefer-nullish-coalescing\n if (!(dur.hours || dur.minutes || dur.seconds)) {\n return dayNotation;\n }\n\n const hour = dur.hours ? `${Math.abs(dur.hours)}H` : '';\n const minute = dur.minutes ? `${Math.abs(dur.minutes)}M` : '';\n const second = dur.seconds ? `${Math.abs(dur.seconds)}S` : '';\n\n return `${dayNotation}T${hour}${minute}${second}`;\n}\n"]}
1
+ {"version":3,"file":"Serialization.js","sourceRoot":"","sources":["Serialization.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n IDateRepresentation,\n IDateTimeRepresentation,\n IDurationRepresentation,\n ITimeRepresentation,\n ITimeZoneRepresentation,\n} from '@comunica/types';\n\nfunction numSerializer(num: number, min = 2): string {\n return num.toLocaleString(undefined, { minimumIntegerDigits: min, useGrouping: false });\n}\n\nexport function serializeDateTime(date: IDateTimeRepresentation): string {\n // https://www.w3.org/TR/xmlschema-2/#dateTime\n // Extraction is needed because the date serializer can not add timezone y\n return `${serializeDate({ year: date.year, month: date.month, day: date.day })}T${serializeTime(date)}`;\n}\n\nfunction serializeTimeZone(tz: Partial<ITimeZoneRepresentation>): string {\n // https://www.w3.org/TR/xmlschema-2/#dateTime-timezones\n if (tz.zoneHours === undefined || tz.zoneMinutes === undefined) {\n return '';\n }\n if (tz.zoneHours === 0 && tz.zoneMinutes === 0) {\n return 'Z';\n }\n // SerializeTimeZone({ zoneHours: 5, zoneMinutes: 4 }) returns +05:04\n return `${tz.zoneHours >= 0 ? `+${numSerializer(tz.zoneHours)}` : numSerializer(tz.zoneHours)}:${numSerializer(Math.abs(tz.zoneMinutes))}`;\n}\n\nexport function serializeDate(date: IDateRepresentation): string {\n // https://www.w3.org/TR/xmlschema-2/#date-lexical-representation\n return `${numSerializer(date.year, 4)}-${numSerializer(date.month)}-${numSerializer(date.day)}${serializeTimeZone(date)}`;\n}\n\nexport function serializeTime(time: ITimeRepresentation): string {\n // https://www.w3.org/TR/xmlschema-2/#time-lexical-repr\n return `${numSerializer(time.hours)}:${numSerializer(time.minutes)}:${numSerializer(time.seconds)}${serializeTimeZone(time)}`;\n}\n\nexport function serializeDuration(dur: Partial<IDurationRepresentation>, zeroString: 'PT0S' | 'P0M' = 'PT0S'): string {\n // https://www.w3.org/TR/xmlschema-2/#duration-lexical-repr\n if (!Object.values(dur).some(val => (val || 0) !== 0)) {\n return zeroString;\n }\n\n const sign = Object.values(dur).some(val => (val || 0) < 0) ? '-' : '';\n const year = dur.year ? `${Math.abs(dur.year)}Y` : '';\n const month = dur.month ? `${Math.abs(dur.month)}M` : '';\n const day = dur.day ? `${Math.abs(dur.day)}D` : '';\n\n const dayNotation = `${sign}P${year}${month}${day}`;\n // eslint-disable-next-line ts/prefer-nullish-coalescing\n if (!(dur.hours || dur.minutes || dur.seconds)) {\n return dayNotation;\n }\n\n const hour = dur.hours ? `${Math.abs(dur.hours)}H` : '';\n const minute = dur.minutes ? `${Math.abs(dur.minutes)}M` : '';\n const second = dur.seconds ? `${Math.abs(dur.seconds)}S` : '';\n\n return `${dayNotation}T${hour}${minute}${second}`;\n}\n"]}
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.elapsedDuration = exports.addDurationToDateTime = exports.maximumDayInMonthFor = void 0;
3
+ exports.maximumDayInMonthFor = maximumDayInMonthFor;
4
+ exports.addDurationToDateTime = addDurationToDateTime;
5
+ exports.elapsedDuration = elapsedDuration;
4
6
  const DateTimeHelpers_1 = require("./DateTimeHelpers");
5
7
  function fDiv(arg, high, low = 0) {
6
8
  // Adds the 4 spec functions into one since they are highly related,
@@ -25,7 +27,6 @@ function maximumDayInMonthFor(yearValue, monthValue) {
25
27
  }
26
28
  return 28;
27
29
  }
28
- exports.maximumDayInMonthFor = maximumDayInMonthFor;
29
30
  // https://www.w3.org/TR/xmlschema-2/#adding-durations-to-dateTimes
30
31
  function addDurationToDateTime(date, duration) {
31
32
  // Used to cary over optional fields like timezone
@@ -65,7 +66,6 @@ function addDurationToDateTime(date, duration) {
65
66
  }
66
67
  return newDate;
67
68
  }
68
- exports.addDurationToDateTime = addDurationToDateTime;
69
69
  function elapsedDuration(first, second, defaultTimeZone) {
70
70
  const d1 = (0, DateTimeHelpers_1.toUTCDate)(first, defaultTimeZone);
71
71
  const d2 = (0, DateTimeHelpers_1.toUTCDate)(second, defaultTimeZone);
@@ -77,5 +77,4 @@ function elapsedDuration(first, second, defaultTimeZone) {
77
77
  seconds: diff % (1_000 * 60),
78
78
  };
79
79
  }
80
- exports.elapsedDuration = elapsedDuration;
81
80
  //# sourceMappingURL=SpecAlgos.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SpecAlgos.js","sourceRoot":"","sources":["SpecAlgos.ts"],"names":[],"mappings":"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","sourcesContent":["import type { IDateTimeRepresentation, IDurationRepresentation, ITimeZoneRepresentation } from '@comunica/types';\nimport { toUTCDate } from './DateTimeHelpers';\n\nfunction fDiv(arg: number, high: number, low = 0): { intDiv: number; remainder: number } {\n // Adds the 4 spec functions into one since they are highly related,\n // and fQuotient and modulo are almost always called in pairs.\n const first = arg - low;\n const second = high - low;\n const intDiv = Math.floor(first / second);\n return { intDiv, remainder: arg - intDiv * second };\n}\n\nexport function maximumDayInMonthFor(yearValue: number, monthValue: number): number {\n const { intDiv: additionalYears, remainder: month } = fDiv(monthValue, 13, 1);\n const year = yearValue + additionalYears;\n\n if ([ 1, 3, 5, 7, 8, 10, 12 ].includes(month)) {\n return 31;\n }\n if ([ 4, 6, 9, 11 ].includes(month)) {\n return 30;\n }\n if (month === 2 && (\n fDiv(year, 400).remainder === 0 ||\n (fDiv(year, 100).remainder !== 0 && fDiv(year, 4).remainder === 0))) {\n return 29;\n }\n return 28;\n}\n\n// https://www.w3.org/TR/xmlschema-2/#adding-durations-to-dateTimes\nexport function addDurationToDateTime(date: IDateTimeRepresentation, duration: IDurationRepresentation):\nIDateTimeRepresentation {\n // Used to cary over optional fields like timezone\n const newDate: IDateTimeRepresentation = { ...date };\n\n // Month\n let tempDiv = fDiv(date.month + duration.month, 13, 1);\n newDate.month = tempDiv.remainder;\n // Year\n newDate.year = date.year + duration.year + tempDiv.intDiv;\n // Seconds\n tempDiv = fDiv(date.seconds + duration.seconds, 60);\n newDate.seconds = tempDiv.remainder;\n // Minutes\n tempDiv = fDiv(date.minutes + duration.minutes + tempDiv.intDiv, 60);\n newDate.minutes = tempDiv.remainder;\n // Hours\n tempDiv = fDiv(date.hours + duration.hours + tempDiv.intDiv, 24);\n newDate.hours = tempDiv.remainder;\n\n // We skip a part of the spec code since: Defined spec code can not happen since it would be an invalid literal\n\n newDate.day = date.day + duration.day + tempDiv.intDiv;\n\n while (true) {\n let carry;\n if (newDate.day < 1) {\n newDate.day += maximumDayInMonthFor(newDate.year, newDate.month - 1);\n carry = -1;\n } else if (newDate.day > maximumDayInMonthFor(newDate.year, newDate.month)) {\n newDate.day -= maximumDayInMonthFor(newDate.year, newDate.month);\n carry = 1;\n } else {\n break;\n }\n tempDiv = fDiv(newDate.month + carry, 13, 1);\n newDate.month = tempDiv.remainder;\n newDate.year += tempDiv.intDiv;\n }\n return newDate;\n}\n\nexport function elapsedDuration(\n first: IDateTimeRepresentation,\n second: IDateTimeRepresentation,\n defaultTimeZone: ITimeZoneRepresentation,\n): Partial<IDurationRepresentation> {\n const d1 = toUTCDate(first, defaultTimeZone);\n const d2 = toUTCDate(second, defaultTimeZone);\n const diff = d1.getTime() - d2.getTime();\n return {\n day: Math.floor(diff / (1_000 * 60 * 60 * 24)),\n hours: Math.floor((diff % (1_000 * 60 * 60 * 24)) / (1_000 * 60 * 60)),\n minutes: Math.floor(diff % (1_000 * 60 * 60) / (1_000 * 60)),\n seconds: diff % (1_000 * 60),\n };\n}\n"]}
1
+ {"version":3,"file":"SpecAlgos.js","sourceRoot":"","sources":["SpecAlgos.ts"],"names":[],"mappings":"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","sourcesContent":["import type { IDateTimeRepresentation, IDurationRepresentation, ITimeZoneRepresentation } from '@comunica/types';\nimport { toUTCDate } from './DateTimeHelpers';\n\nfunction fDiv(arg: number, high: number, low = 0): { intDiv: number; remainder: number } {\n // Adds the 4 spec functions into one since they are highly related,\n // and fQuotient and modulo are almost always called in pairs.\n const first = arg - low;\n const second = high - low;\n const intDiv = Math.floor(first / second);\n return { intDiv, remainder: arg - intDiv * second };\n}\n\nexport function maximumDayInMonthFor(yearValue: number, monthValue: number): number {\n const { intDiv: additionalYears, remainder: month } = fDiv(monthValue, 13, 1);\n const year = yearValue + additionalYears;\n\n if ([ 1, 3, 5, 7, 8, 10, 12 ].includes(month)) {\n return 31;\n }\n if ([ 4, 6, 9, 11 ].includes(month)) {\n return 30;\n }\n if (month === 2 && (\n fDiv(year, 400).remainder === 0 ||\n (fDiv(year, 100).remainder !== 0 && fDiv(year, 4).remainder === 0))) {\n return 29;\n }\n return 28;\n}\n\n// https://www.w3.org/TR/xmlschema-2/#adding-durations-to-dateTimes\nexport function addDurationToDateTime(date: IDateTimeRepresentation, duration: IDurationRepresentation):\nIDateTimeRepresentation {\n // Used to cary over optional fields like timezone\n const newDate: IDateTimeRepresentation = { ...date };\n\n // Month\n let tempDiv = fDiv(date.month + duration.month, 13, 1);\n newDate.month = tempDiv.remainder;\n // Year\n newDate.year = date.year + duration.year + tempDiv.intDiv;\n // Seconds\n tempDiv = fDiv(date.seconds + duration.seconds, 60);\n newDate.seconds = tempDiv.remainder;\n // Minutes\n tempDiv = fDiv(date.minutes + duration.minutes + tempDiv.intDiv, 60);\n newDate.minutes = tempDiv.remainder;\n // Hours\n tempDiv = fDiv(date.hours + duration.hours + tempDiv.intDiv, 24);\n newDate.hours = tempDiv.remainder;\n\n // We skip a part of the spec code since: Defined spec code can not happen since it would be an invalid literal\n\n newDate.day = date.day + duration.day + tempDiv.intDiv;\n\n while (true) {\n let carry;\n if (newDate.day < 1) {\n newDate.day += maximumDayInMonthFor(newDate.year, newDate.month - 1);\n carry = -1;\n } else if (newDate.day > maximumDayInMonthFor(newDate.year, newDate.month)) {\n newDate.day -= maximumDayInMonthFor(newDate.year, newDate.month);\n carry = 1;\n } else {\n break;\n }\n tempDiv = fDiv(newDate.month + carry, 13, 1);\n newDate.month = tempDiv.remainder;\n newDate.year += tempDiv.intDiv;\n }\n return newDate;\n}\n\nexport function elapsedDuration(\n first: IDateTimeRepresentation,\n second: IDateTimeRepresentation,\n defaultTimeZone: ITimeZoneRepresentation,\n): Partial<IDurationRepresentation> {\n const d1 = toUTCDate(first, defaultTimeZone);\n const d2 = toUTCDate(second, defaultTimeZone);\n const diff = d1.getTime() - d2.getTime();\n return {\n day: Math.floor(diff / (1_000 * 60 * 60 * 24)),\n hours: Math.floor((diff % (1_000 * 60 * 60 * 24)) / (1_000 * 60 * 60)),\n minutes: Math.floor(diff % (1_000 * 60 * 60) / (1_000 * 60)),\n seconds: diff % (1_000 * 60),\n };\n}\n"]}
@@ -1,6 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.typePromotion = exports.isSubTypeOf = exports.getSuperTypeDict = exports.isInternalSubType = exports.asGeneralType = exports.asOverrideType = exports.asKnownLiteralType = exports.asTypeAlias = exports.typeAliasCheck = exports.extensionTableInit = exports.getSuperTypes = exports.superTypeDictTable = exports.extensionTableInput = void 0;
3
+ exports.typePromotion = exports.typeAliasCheck = exports.superTypeDictTable = exports.extensionTableInput = void 0;
4
+ exports.getSuperTypes = getSuperTypes;
5
+ exports.extensionTableInit = extensionTableInit;
6
+ exports.asTypeAlias = asTypeAlias;
7
+ exports.asKnownLiteralType = asKnownLiteralType;
8
+ exports.asOverrideType = asOverrideType;
9
+ exports.asGeneralType = asGeneralType;
10
+ exports.isInternalSubType = isInternalSubType;
11
+ exports.getSuperTypeDict = getSuperTypeDict;
12
+ exports.isSubTypeOf = isSubTypeOf;
4
13
  const expressions_1 = require("../expressions");
5
14
  const Helpers_1 = require("../functions/Helpers");
6
15
  const Consts_1 = require("./Consts");
@@ -106,7 +115,6 @@ function getSuperTypes(type, openWorldType) {
106
115
  openWorldType.cache.set(type, subExtension);
107
116
  return subExtension;
108
117
  }
109
- exports.getSuperTypes = getSuperTypes;
110
118
  // No circular structure allowed! & No other keys allowed!
111
119
  function extensionTableInit() {
112
120
  for (const [_key, value] of Object.entries(exports.extensionTableInput)) {
@@ -117,7 +125,6 @@ function extensionTableInit() {
117
125
  extensionTableBuilderInitKey(key, value, exports.superTypeDictTable);
118
126
  }
119
127
  }
120
- exports.extensionTableInit = extensionTableInit;
121
128
  extensionTableInit();
122
129
  function extensionTableBuilderInitKey(key, value, res) {
123
130
  if (value === 'term' || value === undefined) {
@@ -145,28 +152,24 @@ function asTypeAlias(type) {
145
152
  }
146
153
  return undefined;
147
154
  }
148
- exports.asTypeAlias = asTypeAlias;
149
155
  function asKnownLiteralType(type) {
150
156
  if (type in exports.superTypeDictTable) {
151
157
  return type;
152
158
  }
153
159
  return undefined;
154
160
  }
155
- exports.asKnownLiteralType = asKnownLiteralType;
156
161
  function asOverrideType(type) {
157
162
  if (asKnownLiteralType(type) ?? type === 'term') {
158
163
  return type;
159
164
  }
160
165
  return undefined;
161
166
  }
162
- exports.asOverrideType = asOverrideType;
163
167
  function asGeneralType(type) {
164
168
  if (type === 'term' || (0, expressions_1.asTermType)(type)) {
165
169
  return type;
166
170
  }
167
171
  return undefined;
168
172
  }
169
- exports.asGeneralType = asGeneralType;
170
173
  /**
171
174
  * Internal type of @see isSubTypeOf This only takes knownTypes but doesn't need an enabler
172
175
  */
@@ -174,7 +177,6 @@ function isInternalSubType(baseType, argumentType) {
174
177
  return baseType !== 'term' &&
175
178
  (exports.superTypeDictTable[baseType] && exports.superTypeDictTable[baseType][argumentType] !== undefined);
176
179
  }
177
- exports.isInternalSubType = isInternalSubType;
178
180
  /**
179
181
  * This function can be used to check the base type is a restriction on a type in the dict.
180
182
  * If we want to check if type x is a restriction on string we do this by calling:
@@ -191,7 +193,6 @@ function getSuperTypeDict(baseType, superTypeProvider) {
191
193
  // Datatype is a custom datatype
192
194
  return getSuperTypes(baseType, superTypeProvider);
193
195
  }
194
- exports.getSuperTypeDict = getSuperTypeDict;
195
196
  /**
196
197
  * This function needs to be O(1)! The execution time of this function is vital!
197
198
  * We define typeA isSubtypeOf typeA as true.
@@ -206,7 +207,6 @@ function isSubTypeOf(baseType, argumentType, superTypeProvider) {
206
207
  }
207
208
  return getSuperTypeDict(baseType, superTypeProvider)[argumentType] !== undefined;
208
209
  }
209
- exports.isSubTypeOf = isSubTypeOf;
210
210
  // Defined by https://www.w3.org/TR/xpath-31/#promotion .
211
211
  // e.g. When a function takes a string, it can also accept a XSD_ANY_URI if it's cast first.
212
212
  exports.typePromotion = {