@comunica/utils-expression-evaluator 4.5.0 → 5.0.2

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 (58) hide show
  1. package/lib/expressions/Aggregate.d.ts +1 -1
  2. package/lib/expressions/Aggregate.js +3 -1
  3. package/lib/expressions/Aggregate.js.map +1 -1
  4. package/lib/expressions/Existence.d.ts +1 -1
  5. package/lib/expressions/Existence.js +2 -1
  6. package/lib/expressions/Existence.js.map +1 -1
  7. package/lib/expressions/Expressions.d.ts +0 -0
  8. package/lib/expressions/Expressions.js +1 -2
  9. package/lib/expressions/Expressions.js.map +1 -1
  10. package/lib/expressions/Operator.d.ts +0 -0
  11. package/lib/expressions/Operator.js +4 -1
  12. package/lib/expressions/Operator.js.map +1 -1
  13. package/lib/expressions/Term.d.ts +9 -1
  14. package/lib/expressions/Term.js +76 -21
  15. package/lib/expressions/Term.js.map +1 -1
  16. package/lib/expressions/Variable.d.ts +0 -0
  17. package/lib/expressions/Variable.js +2 -1
  18. package/lib/expressions/Variable.js.map +1 -1
  19. package/lib/expressions/index.d.ts +0 -0
  20. package/lib/expressions/index.js +0 -0
  21. package/lib/expressions/index.js.map +0 -0
  22. package/lib/functions/Helpers.d.ts +2 -0
  23. package/lib/functions/Helpers.js +20 -11
  24. package/lib/functions/Helpers.js.map +1 -1
  25. package/lib/functions/OverloadTree.d.ts +0 -0
  26. package/lib/functions/OverloadTree.js +8 -0
  27. package/lib/functions/OverloadTree.js.map +1 -1
  28. package/lib/index.d.ts +0 -0
  29. package/lib/index.js +0 -0
  30. package/lib/index.js.map +0 -0
  31. package/lib/transformers/TermTransformer.d.ts +2 -2
  32. package/lib/transformers/TermTransformer.js +7 -3
  33. package/lib/transformers/TermTransformer.js.map +1 -1
  34. package/lib/util/Consts.d.ts +5 -0
  35. package/lib/util/Consts.js +7 -3
  36. package/lib/util/Consts.js.map +1 -1
  37. package/lib/util/Context.d.ts +0 -0
  38. package/lib/util/Context.js +1 -2
  39. package/lib/util/Context.js.map +1 -1
  40. package/lib/util/DateTimeHelpers.d.ts +0 -0
  41. package/lib/util/DateTimeHelpers.js +15 -16
  42. package/lib/util/DateTimeHelpers.js.map +1 -1
  43. package/lib/util/Errors.d.ts +5 -0
  44. package/lib/util/Errors.js +28 -2
  45. package/lib/util/Errors.js.map +1 -1
  46. package/lib/util/Parsing.d.ts +0 -1
  47. package/lib/util/Parsing.js +8 -11
  48. package/lib/util/Parsing.js.map +1 -1
  49. package/lib/util/Serialization.d.ts +0 -0
  50. package/lib/util/Serialization.js +4 -5
  51. package/lib/util/Serialization.js.map +1 -1
  52. package/lib/util/SpecAlgos.d.ts +0 -0
  53. package/lib/util/SpecAlgos.js +3 -4
  54. package/lib/util/SpecAlgos.js.map +1 -1
  55. package/lib/util/TypeHandling.d.ts +0 -0
  56. package/lib/util/TypeHandling.js +11 -10
  57. package/lib/util/TypeHandling.js.map +1 -1
  58. package/package.json +8 -8
@@ -1 +1 @@
1
- {"version":3,"file":"Context.js","sourceRoot":"","sources":["Context.ts"],"names":[],"mappings":";;;AAAA,+DAAmF;AAGnF,yCAAqC;AACrC,uDAAoD;AAEpD,SAAgB,6BAA6B,CAAC,UAA0B;IACtE,IAAI,OAAO,GAAG,UAAU,CAAC;IAEzB,uDAAuD;IACvD,IAAI,OAAO,CAAC,GAAG,CAAC,+BAAa,CAAC,wBAAwB,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,+BAAa,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACzG,MAAM,IAAI,KAAK,CAAC,0FAA0F,CAAC,CAAC;IAC9G,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,CAAC,+BAAa,CAAC,wBAAwB,CAAC,EAAE,CAAC;QACxD,OAAO,GAAG,OAAO,CAAC,GAAG,CACnB,yCAAuB,CAAC,wBAAwB,EAChD,OAAO,CAAC,GAAG,CAAC,+BAAa,CAAC,wBAAwB,CAAC,CACpD,CAAC;IACJ,CAAC;SAAM,IAAI,OAAO,CAAC,GAAG,CAAC,+BAAa,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACzD,MAAM,kBAAkB,GAA2C,OAAO,CAAC,OAAO,CAChF,+BAAa,CAAC,kBAAkB,CACjC,CAAC;QACF,OAAO,GAAG,OAAO,CAAC,GAAG,CACnB,yCAAuB,CAAC,wBAAwB,EAChD,KAAK,EAAC,iBAAgC,EAAE,EAAE,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,KAAK,CAAC,CACvF,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,wDAAwD;QACxD,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,yCAAuB,CAAC,wBAAwB,EAAE,KAAK,IAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACvG,CAAC;IAED,OAAO,GAAG,OAAO,CAAC,UAAU,CAC1B,yCAAuB,CAAC,eAAe,EACvC,IAAA,iCAAe,EAAC,OAAO,CAAC,OAAO,CAAC,+BAAa,CAAC,cAAc,CAAC,CAAC,CAC/D,CAAC;IAEF,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,yCAAuB,CAAC,iBAAiB,EAAE;QACtE,KAAK,EAAE,IAAI,oBAAQ,CAA+B,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;QACjE,UAAU,EAAE,GAAG,EAAE,CAAC,MAAM;KACzB,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC;AApCD,sEAoCC","sourcesContent":["import { KeysExpressionEvaluator, KeysInitQuery } from '@comunica/context-entries';\nimport type { AsyncExtensionFunction, GeneralSuperTypeDict, IActionContext } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { LRUCache } from 'lru-cache';\nimport { extractTimeZone } from './DateTimeHelpers';\n\nexport function prepareEvaluatorActionContext(orgContext: IActionContext): IActionContext {\n let context = orgContext;\n\n // Handle two variants of providing extension functions\n if (context.has(KeysInitQuery.extensionFunctionCreator) && context.has(KeysInitQuery.extensionFunctions)) {\n throw new Error('Illegal simultaneous usage of extensionFunctionCreator and extensionFunctions in context');\n }\n if (context.has(KeysInitQuery.extensionFunctionCreator)) {\n context = context.set(\n KeysExpressionEvaluator.extensionFunctionCreator,\n context.get(KeysInitQuery.extensionFunctionCreator),\n );\n } else if (context.has(KeysInitQuery.extensionFunctions)) {\n const extensionFunctions: Record<string, AsyncExtensionFunction> = context.getSafe(\n KeysInitQuery.extensionFunctions,\n );\n context = context.set(\n KeysExpressionEvaluator.extensionFunctionCreator,\n async(functionNamedNode: RDF.NamedNode) => extensionFunctions[functionNamedNode.value],\n );\n } else {\n // eslint-disable-next-line unicorn/no-useless-undefined\n context = context.setDefault(KeysExpressionEvaluator.extensionFunctionCreator, async() => undefined);\n }\n\n context = context.setDefault(\n KeysExpressionEvaluator.defaultTimeZone,\n extractTimeZone(context.getSafe(KeysInitQuery.queryTimestamp)),\n );\n\n context = context.setDefault(KeysExpressionEvaluator.superTypeProvider, {\n cache: new LRUCache<string, GeneralSuperTypeDict>({ max: 1_000 }),\n discoverer: () => 'term',\n });\n\n return context;\n}\n"]}
1
+ {"version":3,"file":"Context.js","sourceRoot":"","sources":["Context.ts"],"names":[],"mappings":";;AAMA,sEAoCC;AA1CD,+DAAmF;AAGnF,yCAAqC;AACrC,uDAAoD;AAEpD,SAAgB,6BAA6B,CAAC,UAA0B;IACtE,IAAI,OAAO,GAAG,UAAU,CAAC;IAEzB,uDAAuD;IACvD,IAAI,OAAO,CAAC,GAAG,CAAC,+BAAa,CAAC,wBAAwB,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,+BAAa,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACzG,MAAM,IAAI,KAAK,CAAC,0FAA0F,CAAC,CAAC;IAC9G,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,CAAC,+BAAa,CAAC,wBAAwB,CAAC,EAAE,CAAC;QACxD,OAAO,GAAG,OAAO,CAAC,GAAG,CACnB,yCAAuB,CAAC,wBAAwB,EAChD,OAAO,CAAC,GAAG,CAAC,+BAAa,CAAC,wBAAwB,CAAC,CACpD,CAAC;IACJ,CAAC;SAAM,IAAI,OAAO,CAAC,GAAG,CAAC,+BAAa,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACzD,MAAM,kBAAkB,GAA2C,OAAO,CAAC,OAAO,CAChF,+BAAa,CAAC,kBAAkB,CACjC,CAAC;QACF,OAAO,GAAG,OAAO,CAAC,GAAG,CACnB,yCAAuB,CAAC,wBAAwB,EAChD,KAAK,EAAC,iBAAgC,EAAE,EAAE,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,KAAK,CAAC,CACvF,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,wDAAwD;QACxD,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,yCAAuB,CAAC,wBAAwB,EAAE,KAAK,IAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACvG,CAAC;IAED,OAAO,GAAG,OAAO,CAAC,UAAU,CAC1B,yCAAuB,CAAC,eAAe,EACvC,IAAA,iCAAe,EAAC,OAAO,CAAC,OAAO,CAAC,+BAAa,CAAC,cAAc,CAAC,CAAC,CAC/D,CAAC;IAEF,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,yCAAuB,CAAC,iBAAiB,EAAE;QACtE,KAAK,EAAE,IAAI,oBAAQ,CAA+B,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;QACjE,UAAU,EAAE,GAAG,EAAE,CAAC,MAAM;KACzB,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC","sourcesContent":["import { KeysExpressionEvaluator, KeysInitQuery } from '@comunica/context-entries';\nimport type { AsyncExtensionFunction, GeneralSuperTypeDict, IActionContext } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { LRUCache } from 'lru-cache';\nimport { extractTimeZone } from './DateTimeHelpers';\n\nexport function prepareEvaluatorActionContext(orgContext: IActionContext): IActionContext {\n let context = orgContext;\n\n // Handle two variants of providing extension functions\n if (context.has(KeysInitQuery.extensionFunctionCreator) && context.has(KeysInitQuery.extensionFunctions)) {\n throw new Error('Illegal simultaneous usage of extensionFunctionCreator and extensionFunctions in context');\n }\n if (context.has(KeysInitQuery.extensionFunctionCreator)) {\n context = context.set(\n KeysExpressionEvaluator.extensionFunctionCreator,\n context.get(KeysInitQuery.extensionFunctionCreator),\n );\n } else if (context.has(KeysInitQuery.extensionFunctions)) {\n const extensionFunctions: Record<string, AsyncExtensionFunction> = context.getSafe(\n KeysInitQuery.extensionFunctions,\n );\n context = context.set(\n KeysExpressionEvaluator.extensionFunctionCreator,\n async(functionNamedNode: RDF.NamedNode) => extensionFunctions[functionNamedNode.value],\n );\n } else {\n // eslint-disable-next-line unicorn/no-useless-undefined\n context = context.setDefault(KeysExpressionEvaluator.extensionFunctionCreator, async() => undefined);\n }\n\n context = context.setDefault(\n KeysExpressionEvaluator.defaultTimeZone,\n extractTimeZone(context.getSafe(KeysInitQuery.queryTimestamp)),\n );\n\n context = context.setDefault(KeysExpressionEvaluator.superTypeProvider, {\n cache: new LRUCache<string, GeneralSuperTypeDict>({ max: 1_000 }),\n discoverer: () => 'term',\n });\n\n return context;\n}\n"]}
File without changes
@@ -1,6 +1,20 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.extractTimeZone = exports.extractRawTimeZone = exports.dayTimeDurationsToSeconds = exports.yearMonthDurationsToMonths = exports.trimToDayTimeDuration = exports.trimToYearMonthDuration = exports.toUTCDate = exports.toJSDate = exports.negateDuration = exports.toDateTimeRepresentation = exports.defaultedDateTimeRepresentation = exports.simplifyDurationRepresentation = exports.defaultedDurationRepresentation = exports.defaultedYearMonthDurationRepresentation = exports.defaultedDayTimeDurationRepresentation = void 0;
3
+ exports.defaultedDayTimeDurationRepresentation = defaultedDayTimeDurationRepresentation;
4
+ exports.defaultedYearMonthDurationRepresentation = defaultedYearMonthDurationRepresentation;
5
+ exports.defaultedDurationRepresentation = defaultedDurationRepresentation;
6
+ exports.simplifyDurationRepresentation = simplifyDurationRepresentation;
7
+ exports.defaultedDateTimeRepresentation = defaultedDateTimeRepresentation;
8
+ exports.toDateTimeRepresentation = toDateTimeRepresentation;
9
+ exports.negateDuration = negateDuration;
10
+ exports.toJSDate = toJSDate;
11
+ exports.toUTCDate = toUTCDate;
12
+ exports.trimToYearMonthDuration = trimToYearMonthDuration;
13
+ exports.trimToDayTimeDuration = trimToDayTimeDuration;
14
+ exports.yearMonthDurationsToMonths = yearMonthDurationsToMonths;
15
+ exports.dayTimeDurationsToSeconds = dayTimeDurationsToSeconds;
16
+ exports.extractRawTimeZone = extractRawTimeZone;
17
+ exports.extractTimeZone = extractTimeZone;
4
18
  // Important is to notice JS and XSD datatypes have different defaulted values
5
19
  // | Field | Default in JS | Default in XSD_DayTime | Default in XSD_Duration |
6
20
  // | Month | 0 | 1 | 0 |
@@ -13,21 +27,18 @@ function defaultedDayTimeDurationRepresentation(rep) {
13
27
  seconds: rep.seconds ?? 0,
14
28
  };
15
29
  }
16
- exports.defaultedDayTimeDurationRepresentation = defaultedDayTimeDurationRepresentation;
17
30
  function defaultedYearMonthDurationRepresentation(rep) {
18
31
  return {
19
32
  year: rep.year ?? 0,
20
33
  month: rep.month ?? 0,
21
34
  };
22
35
  }
23
- exports.defaultedYearMonthDurationRepresentation = defaultedYearMonthDurationRepresentation;
24
36
  function defaultedDurationRepresentation(rep) {
25
37
  return {
26
38
  ...defaultedDayTimeDurationRepresentation(rep),
27
39
  ...defaultedYearMonthDurationRepresentation(rep),
28
40
  };
29
41
  }
30
- exports.defaultedDurationRepresentation = defaultedDurationRepresentation;
31
42
  function simplifyDurationRepresentation(rep) {
32
43
  const temp = defaultedDurationRepresentation(rep);
33
44
  const res = {};
@@ -66,7 +77,6 @@ function simplifyDurationRepresentation(rep) {
66
77
  }
67
78
  return res;
68
79
  }
69
- exports.simplifyDurationRepresentation = simplifyDurationRepresentation;
70
80
  function defaultedDateTimeRepresentation(rep) {
71
81
  return {
72
82
  ...rep,
@@ -78,7 +88,6 @@ function defaultedDateTimeRepresentation(rep) {
78
88
  minutes: rep.minutes ?? 0,
79
89
  };
80
90
  }
81
- exports.defaultedDateTimeRepresentation = defaultedDateTimeRepresentation;
82
91
  function toDateTimeRepresentation({ date, timeZone }) {
83
92
  return {
84
93
  year: date.getFullYear(),
@@ -91,7 +100,6 @@ function toDateTimeRepresentation({ date, timeZone }) {
91
100
  zoneMinutes: timeZone.zoneMinutes,
92
101
  };
93
102
  }
94
- exports.toDateTimeRepresentation = toDateTimeRepresentation;
95
103
  function negateDuration(dur) {
96
104
  return {
97
105
  year: dur.year === undefined ? undefined : -1 * dur.year,
@@ -102,7 +110,6 @@ function negateDuration(dur) {
102
110
  seconds: dur.seconds === undefined ? undefined : -1 * dur.seconds,
103
111
  };
104
112
  }
105
- exports.negateDuration = negateDuration;
106
113
  function toJSDate(date) {
107
114
  // The given hours will be assumed to be local time.
108
115
  const res = new Date(date.year, date.month - 1, date.day, date.hours, date.minutes, Math.trunc(date.seconds), (date.seconds % 1) * 1_000);
@@ -114,7 +121,6 @@ function toJSDate(date) {
114
121
  }
115
122
  return res;
116
123
  }
117
- exports.toJSDate = toJSDate;
118
124
  function toUTCDate(date, defaultTimezone) {
119
125
  const localTime = toJSDate(defaultedDateTimeRepresentation(date));
120
126
  // This date has been constructed in machine local time, now we alter it to become UTC and convert to correct timezone
@@ -125,14 +131,12 @@ function toUTCDate(date, defaultTimezone) {
125
131
  const minutesCorrectionUTC = date.zoneMinutes ?? defaultTimezone.zoneMinutes;
126
132
  return new Date(localTime.getTime() - (minutesCorrectionLocal + hourCorrectionUTC * 60 + minutesCorrectionUTC) * 60 * 1_000);
127
133
  }
128
- exports.toUTCDate = toUTCDate;
129
134
  function trimToYearMonthDuration(dur) {
130
135
  return {
131
136
  year: dur.year,
132
137
  month: dur.month,
133
138
  };
134
139
  }
135
- exports.trimToYearMonthDuration = trimToYearMonthDuration;
136
140
  function trimToDayTimeDuration(dur) {
137
141
  return {
138
142
  day: dur.day,
@@ -141,26 +145,21 @@ function trimToDayTimeDuration(dur) {
141
145
  seconds: dur.seconds,
142
146
  };
143
147
  }
144
- exports.trimToDayTimeDuration = trimToDayTimeDuration;
145
148
  function yearMonthDurationsToMonths(dur) {
146
149
  return dur.year * 12 + dur.month;
147
150
  }
148
- exports.yearMonthDurationsToMonths = yearMonthDurationsToMonths;
149
151
  function dayTimeDurationsToSeconds(dur) {
150
152
  return (((dur.day * 24) + dur.hours) * 60 + dur.minutes) * 60 + dur.seconds;
151
153
  }
152
- exports.dayTimeDurationsToSeconds = dayTimeDurationsToSeconds;
153
154
  function extractRawTimeZone(zoneContained) {
154
155
  const extraction = /(Z|([+-]\d\d:\d\d))?$/u.exec(zoneContained);
155
156
  // It is safe to cast here because the empty string can always match.
156
157
  return extraction[0];
157
158
  }
158
- exports.extractRawTimeZone = extractRawTimeZone;
159
159
  function extractTimeZone(date) {
160
160
  return {
161
161
  zoneHours: date.getTimezoneOffset() / 60,
162
162
  zoneMinutes: date.getTimezoneOffset() % 60,
163
163
  };
164
164
  }
165
- exports.extractTimeZone = extractTimeZone;
166
165
  //# sourceMappingURL=DateTimeHelpers.js.map
@@ -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"]}
@@ -99,6 +99,11 @@ export declare class IncompatibleLanguageOperation extends ExpressionError {
99
99
  arg2: E.LangStringLiteral;
100
100
  constructor(arg1: E.LangStringLiteral, arg2: E.LangStringLiteral);
101
101
  }
102
+ export declare class IncompatibleDirectionalLanguageOperation extends ExpressionError {
103
+ arg1: E.DirLangStringLiteral;
104
+ arg2: E.DirLangStringLiteral;
105
+ constructor(arg1: E.DirLangStringLiteral, arg2: E.DirLangStringLiteral);
106
+ }
102
107
  export declare class EmptyAggregateError extends ExpressionError {
103
108
  constructor();
104
109
  }
@@ -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.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;
@@ -132,6 +145,16 @@ class IncompatibleLanguageOperation extends ExpressionError {
132
145
  }
133
146
  }
134
147
  exports.IncompatibleLanguageOperation = IncompatibleLanguageOperation;
148
+ class IncompatibleDirectionalLanguageOperation extends ExpressionError {
149
+ arg1;
150
+ arg2;
151
+ constructor(arg1, arg2) {
152
+ super(`Operation on incompatible directional language literals '${pp(arg1)}' and '${pp(arg2)}'`);
153
+ this.arg1 = arg1;
154
+ this.arg2 = arg2;
155
+ }
156
+ }
157
+ exports.IncompatibleDirectionalLanguageOperation = IncompatibleDirectionalLanguageOperation;
135
158
  class EmptyAggregateError extends ExpressionError {
136
159
  constructor() {
137
160
  super('Empty aggregate expression');
@@ -151,6 +174,7 @@ exports.ParseError = ParseError;
151
174
  * mistake has been made.
152
175
  */
153
176
  class UnexpectedError extends Error {
177
+ payload;
154
178
  constructor(message, payload) {
155
179
  super(`Programmer Error '${message}'`);
156
180
  this.payload = payload;
@@ -158,6 +182,8 @@ class UnexpectedError extends Error {
158
182
  }
159
183
  exports.UnexpectedError = UnexpectedError;
160
184
  class InvalidArity extends Error {
185
+ args;
186
+ op;
161
187
  constructor(args, op) {
162
188
  super(`The number of args does not match the arity of the operator '${pp(op)}'.`);
163
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 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"]}
File without changes
@@ -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"]}
File without changes