bare-script 3.0.0 → 3.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 (2) hide show
  1. package/lib/value.js +25 -6
  2. package/package.json +1 -1
package/lib/value.js CHANGED
@@ -54,7 +54,29 @@ export function valueString(value) {
54
54
  } else if (type === 'number') {
55
55
  return `${value}`;
56
56
  } else if (value instanceof Date) {
57
- return value.toISOString().replaceAll(rValueStringDatetimeZulu, '+00:00');
57
+ const year = value.getFullYear();
58
+ const month = value.getMonth() + 1;
59
+ const monthStr = `${month < 10 ? '0' : ''}${month}`;
60
+ const day = value.getDate();
61
+ const dayStr = `${day < 10 ? '0' : ''}${day}`;
62
+ const hour = value.getHours();
63
+ const hourStr = `${hour < 10 ? '0' : ''}${hour}`;
64
+ const minute = value.getMinutes();
65
+ const minuteStr = `${minute < 10 ? '0' : ''}${minute}`;
66
+ const second = value.getSeconds();
67
+ const secondStr = `${second < 10 ? '0' : ''}${second}`;
68
+ const millisecond = value.getMilliseconds();
69
+ const millisecondStr = millisecond === 0 ? '' : `.${millisecond < 100 ? '0' : ''}${millisecond < 10 ? '0' : ''}${millisecond}`;
70
+ const tzOffset = value.getTimezoneOffset();
71
+ /* c8 ignore next */
72
+ const tzSign = tzOffset < 0 ? '+' : '-';
73
+ const tzHour = Math.floor(Math.abs(tzOffset) / 60);
74
+ /* c8 ignore next */
75
+ const tzHourStr = `${tzHour < 10 ? '0' : ''}${tzHour}`;
76
+ const tzMinute = Math.abs(tzOffset) - tzHour * 60;
77
+ /* c8 ignore next */
78
+ const tzMinuteStr = `${tzMinute < 10 ? '0' : ''}${tzMinute}`;
79
+ return `${year}-${monthStr}-${dayStr}T${hourStr}:${minuteStr}:${secondStr}${millisecondStr}${tzSign}${tzHourStr}:${tzMinuteStr}`;
58
80
  } else if (Array.isArray(value)) {
59
81
  return valueJSON(value);
60
82
  } else if (value instanceof RegExp) {
@@ -70,9 +92,6 @@ export function valueString(value) {
70
92
  }
71
93
 
72
94
 
73
- const rValueStringDatetimeZulu = /(?:\.000)?Z$/g;
74
-
75
-
76
95
  /**
77
96
  * Get a value's JSON string representation
78
97
  *
@@ -91,7 +110,7 @@ function valueJSONSort(value) {
91
110
  if (value === null || type === 'undefined' || type === 'string' || type === 'boolean' || type === 'number') {
92
111
  return value;
93
112
  } else if (value instanceof Date) {
94
- return value.toISOString().replaceAll(rValueStringDatetimeZulu, '+00:00');
113
+ return valueString(value);
95
114
  } else if (Array.isArray(value)) {
96
115
  return value.map(valueJSONSort);
97
116
  } else if (type === 'object' && Object.getPrototypeOf(value) === Object.prototype) {
@@ -265,4 +284,4 @@ export function valueParseDatetime(text) {
265
284
 
266
285
 
267
286
  const rDate = /^(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})$/;
268
- const rDatetime = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{3})?(?:Z|[+-]\d{2}:\d{2})$/;
287
+ const rDatetime = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{1,6})?(?:Z|[+-]\d{2}:\d{2})$/;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "type": "module",
3
3
  "name": "bare-script",
4
- "version": "3.0.0",
4
+ "version": "3.0.2",
5
5
  "description": "BareScript; a lightweight scripting and expression language",
6
6
  "keywords": [
7
7
  "expression",