@markuplint/types 3.8.0 → 4.0.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/lib/check-multi-types.d.ts +2 -2
  2. package/lib/check-multi-types.js +9 -14
  3. package/lib/check.d.ts +1 -1
  4. package/lib/check.js +20 -30
  5. package/lib/css-syntax.d.ts +1 -1
  6. package/lib/css-syntax.js +18 -23
  7. package/lib/debug.js +2 -6
  8. package/lib/defs.d.ts +1 -1
  9. package/lib/defs.js +82 -85
  10. package/lib/enum.d.ts +2 -2
  11. package/lib/enum.js +6 -11
  12. package/lib/get-candidate.js +3 -8
  13. package/lib/index.d.ts +3 -3
  14. package/lib/index.js +3 -6
  15. package/lib/keyword-type.d.ts +2 -2
  16. package/lib/keyword-type.js +17 -22
  17. package/lib/list.d.ts +2 -2
  18. package/lib/list.js +9 -14
  19. package/lib/match-result.d.ts +1 -1
  20. package/lib/match-result.js +6 -13
  21. package/lib/number.d.ts +2 -2
  22. package/lib/number.js +11 -15
  23. package/lib/primitive/index.d.ts +7 -7
  24. package/lib/primitive/index.js +7 -17
  25. package/lib/primitive/is-float.js +1 -5
  26. package/lib/primitive/is-int.js +1 -5
  27. package/lib/primitive/is-non-zero-uint.js +1 -5
  28. package/lib/primitive/is-quantity.js +9 -13
  29. package/lib/primitive/is-uint.js +1 -5
  30. package/lib/primitive/range.js +1 -5
  31. package/lib/primitive/split-unit.js +3 -7
  32. package/lib/rfc/is-bcp-47.d.ts +1 -1
  33. package/lib/rfc/is-bcp-47.js +3 -7
  34. package/lib/token/index.d.ts +2 -2
  35. package/lib/token/index.js +2 -7
  36. package/lib/token/token-collection.d.ts +4 -5
  37. package/lib/token/token-collection.js +35 -43
  38. package/lib/token/token.d.ts +2 -2
  39. package/lib/token/token.js +6 -13
  40. package/lib/token/types.js +1 -2
  41. package/lib/types.d.ts +2 -2
  42. package/lib/types.js +1 -2
  43. package/lib/types.schema.js +1 -2
  44. package/lib/w3c/check-serialized-permissions-policy.d.ts +1 -1
  45. package/lib/w3c/check-serialized-permissions-policy.js +16 -20
  46. package/lib/whatwg/check-autocomplete.d.ts +1 -1
  47. package/lib/whatwg/check-autocomplete.js +24 -28
  48. package/lib/whatwg/check-datetime/date-string.d.ts +1 -1
  49. package/lib/whatwg/check-datetime/date-string.js +9 -13
  50. package/lib/whatwg/check-datetime/datetime-tokens.d.ts +1 -1
  51. package/lib/whatwg/check-datetime/datetime-tokens.js +40 -46
  52. package/lib/whatwg/check-datetime/duration-string.d.ts +1 -1
  53. package/lib/whatwg/check-datetime/duration-string.js +38 -44
  54. package/lib/whatwg/check-datetime/global-date-and-time-string.d.ts +1 -1
  55. package/lib/whatwg/check-datetime/global-date-and-time-string.js +17 -21
  56. package/lib/whatwg/check-datetime/index.d.ts +1 -1
  57. package/lib/whatwg/check-datetime/index.js +25 -29
  58. package/lib/whatwg/check-datetime/local-date-and-time-string.d.ts +1 -1
  59. package/lib/whatwg/check-datetime/local-date-and-time-string.js +20 -25
  60. package/lib/whatwg/check-datetime/month-string.d.ts +1 -1
  61. package/lib/whatwg/check-datetime/month-string.js +9 -13
  62. package/lib/whatwg/check-datetime/time-string.d.ts +1 -1
  63. package/lib/whatwg/check-datetime/time-string.js +9 -13
  64. package/lib/whatwg/check-datetime/time-zone-offset-string.d.ts +3 -3
  65. package/lib/whatwg/check-datetime/time-zone-offset-string.js +16 -22
  66. package/lib/whatwg/check-datetime/week-string.d.ts +1 -1
  67. package/lib/whatwg/check-datetime/week-string.js +9 -13
  68. package/lib/whatwg/check-datetime/year-string.d.ts +1 -1
  69. package/lib/whatwg/check-datetime/year-string.js +9 -13
  70. package/lib/whatwg/check-datetime/yearless-date-string.d.ts +1 -1
  71. package/lib/whatwg/check-datetime/yearless-date-string.js +9 -13
  72. package/lib/whatwg/check-mime-type.d.ts +1 -1
  73. package/lib/whatwg/check-mime-type.js +11 -17
  74. package/lib/whatwg/is-abs-url.d.ts +1 -1
  75. package/lib/whatwg/is-abs-url.js +1 -5
  76. package/lib/whatwg/is-browser-context-name.d.ts +1 -1
  77. package/lib/whatwg/is-browser-context-name.js +1 -5
  78. package/lib/whatwg/is-custom-element-name.d.ts +1 -1
  79. package/lib/whatwg/is-custom-element-name.js +1 -5
  80. package/lib/whatwg/is-itemprop-name.d.ts +1 -1
  81. package/lib/whatwg/is-itemprop-name.js +1 -5
  82. package/package.json +13 -8
  83. package/test/check.spec.js +0 -89
  84. package/test/css-syntax.spec.js +0 -170
  85. package/test/list.spec.js +0 -133
  86. package/test/primitive/index.spec.js +0 -65
  87. package/test/rfc/is-bcp-47.spec.js +0 -23
  88. package/test/token/token-collection.spec.js +0 -146
  89. package/test/w3c/check-serialized-permissions-policy.spec.js +0 -36
  90. package/test/whatwg/check-autocomplete.spec.js +0 -387
  91. package/test/whatwg/check-datetime/index.spec.js +0 -336
  92. package/test/whatwg/check-mime-type.spec.js +0 -59
  93. package/test/whatwg/is-abs-url.spec.js +0 -8
@@ -1,336 +0,0 @@
1
- const { checkDateTime } = require('../../../lib/whatwg/check-datetime');
2
- const { checkDateString } = require('../../../lib/whatwg/check-datetime/date-string');
3
- const { getMaxWeekNum } = require('../../../lib/whatwg/check-datetime/datetime-tokens');
4
- const {
5
- checkDurationISO8601LikeString,
6
- checkDurationComponentListString,
7
- } = require('../../../lib/whatwg/check-datetime/duration-string');
8
- const { checkGlobalDateAndTimeString } = require('../../../lib/whatwg/check-datetime/global-date-and-time-string');
9
- const {
10
- checkLocalDateAndTimeString,
11
- checkNormalizedLocalDateAndTimeString,
12
- } = require('../../../lib/whatwg/check-datetime/local-date-and-time-string');
13
- const { checkMonthString } = require('../../../lib/whatwg/check-datetime/month-string');
14
- const { checkTimeString } = require('../../../lib/whatwg/check-datetime/time-string');
15
- const { checkTimeZoneOffsetString } = require('../../../lib/whatwg/check-datetime/time-zone-offset-string');
16
- const { checkWeekString } = require('../../../lib/whatwg/check-datetime/week-string');
17
- const { checkYearString } = require('../../../lib/whatwg/check-datetime/year-string');
18
- const { checkYearlessDateString } = require('../../../lib/whatwg/check-datetime/yearless-date-string');
19
-
20
- const isMonth = checkMonthString();
21
- const isDate = checkDateString();
22
- const isYearlessDate = checkYearlessDateString();
23
- const isTimeString = checkTimeString();
24
- const isLocalDateAndTime = checkLocalDateAndTimeString();
25
- const isNormalizedLocalDateAndTime = checkNormalizedLocalDateAndTimeString();
26
- const isTimeZoneOffset = checkTimeZoneOffsetString();
27
- const isGlobalDateAndTime = checkGlobalDateAndTimeString();
28
- const isWeek = checkWeekString();
29
- const isYear = checkYearString();
30
- const isDurationISO8601Like = checkDurationISO8601LikeString();
31
- const isDurationComponentList = checkDurationComponentListString();
32
- const isDateTime = checkDateTime();
33
-
34
- test('max-week', () => {
35
- expect(getMaxWeekNum(1976)).toBe(53);
36
- expect(getMaxWeekNum(1977)).toBe(52);
37
- expect(getMaxWeekNum(1978)).toBe(52);
38
- expect(getMaxWeekNum(1979)).toBe(52);
39
- expect(getMaxWeekNum(1981)).toBe(53);
40
- });
41
-
42
- test('month-string', () => {
43
- expect(isMonth('').reason).toBe('empty-token');
44
- expect(isMonth(' ').reason).toBe('unexpected-token');
45
- expect(isMonth('a').reason).toBe('unexpected-token');
46
- expect(isMonth('0').reason).toStrictEqual({ type: 'out-of-range-length-digit', gte: 4 });
47
- expect(isMonth('0000').reason).toStrictEqual({ type: 'out-of-range', gt: 0 });
48
- expect(isMonth('0001').reason).toBe('missing-token');
49
- expect(isMonth('0001:').reason).toBe('unexpected-token');
50
- expect(isMonth('0001-').reason).toBe('missing-token');
51
- expect(isMonth('0001-a').reason).toBe('unexpected-token');
52
- expect(isMonth('0001-0').reason).toStrictEqual({ type: 'out-of-range-length-digit', gte: 2, lte: 2 });
53
- expect(isMonth('0001-001').reason).toStrictEqual({ type: 'out-of-range-length-digit', gte: 2, lte: 2 });
54
- expect(isMonth('0001-00').reason).toStrictEqual({ type: 'out-of-range', gte: 1, lte: 12 });
55
- expect(isMonth('0001-13').reason).toStrictEqual({ type: 'out-of-range', gte: 1, lte: 12 });
56
- expect(isMonth('0001-01').matched).toBe(true);
57
- expect(isMonth('0001-12').matched).toBe(true);
58
- expect(isMonth('10001-01').matched).toBe(true);
59
- expect(isMonth('0001-01-').reason).toBe('extra-token');
60
- });
61
-
62
- test('date-string', () => {
63
- expect(isDate('').reason).toBe('empty-token');
64
- expect(isDate(' ').reason).toBe('unexpected-token');
65
- expect(isDate('a').reason).toBe('unexpected-token');
66
- expect(isDate('0').reason).toStrictEqual({ type: 'out-of-range-length-digit', gte: 4 });
67
- expect(isDate('0000').reason).toStrictEqual({ type: 'out-of-range', gt: 0 });
68
- expect(isDate('2000').reason).toBe('missing-token');
69
- expect(isDate('2000:').reason).toBe('unexpected-token');
70
- expect(isDate('2000-').reason).toBe('missing-token');
71
- expect(isDate('2000-a').reason).toBe('unexpected-token');
72
- expect(isDate('2000-0').reason).toStrictEqual({ type: 'out-of-range-length-digit', gte: 2, lte: 2 });
73
- expect(isDate('2000-00').reason).toStrictEqual({ type: 'out-of-range', gte: 1, lte: 12 });
74
- expect(isDate('2000-01').reason).toBe('missing-token');
75
- expect(isDate('2000-01:').reason).toBe('unexpected-token');
76
- expect(isDate('2000-01-').reason).toBe('missing-token');
77
- expect(isDate('2000-01-a').reason).toBe('unexpected-token');
78
- expect(isDate('2000-01-0').reason).toStrictEqual({ type: 'out-of-range-length-digit', gte: 2, lte: 2 });
79
- expect(isDate('2000-01-001').reason).toStrictEqual({ type: 'out-of-range-length-digit', gte: 2, lte: 2 });
80
- expect(isDate('2000-01-00').reason).toStrictEqual({ type: 'out-of-range', gte: 1, lte: 31 });
81
- expect(isDate('2000-01-01').matched).toBe(true);
82
- expect(isDate('2000-01-31').matched).toBe(true);
83
- expect(isDate('2000-01-32').reason).toStrictEqual({ type: 'out-of-range', gte: 1, lte: 31 });
84
- expect(isDate('2000-02-28').matched).toBe(true);
85
- expect(isDate('2000-02-29').matched).toBe(true);
86
- expect(isDate('2000-02-30').reason).toStrictEqual({ type: 'out-of-range', gte: 1, lte: 29 });
87
- expect(isDate('2001-02-28').matched).toBe(true);
88
- expect(isDate('2001-02-29').reason).toStrictEqual({ type: 'out-of-range', gte: 1, lte: 28 });
89
- });
90
-
91
- test('yearless-date-string', () => {
92
- expect(isYearlessDate('').reason).toBe('empty-token');
93
- expect(isYearlessDate(' ').reason).toBe('unexpected-token');
94
- expect(isYearlessDate('a').reason).toBe('unexpected-token');
95
- expect(isYearlessDate('0').reason).toStrictEqual({ type: 'out-of-range-length-digit', gte: 2, lte: 2 });
96
- expect(isYearlessDate('00').reason).toStrictEqual({ type: 'out-of-range', gte: 1, lte: 12 });
97
- expect(isYearlessDate('01').reason).toBe('missing-token');
98
- expect(isYearlessDate('01:').reason).toBe('unexpected-token');
99
- expect(isYearlessDate('01-').reason).toBe('missing-token');
100
- expect(isYearlessDate('01-a').reason).toBe('unexpected-token');
101
- expect(isYearlessDate('01-0').reason).toStrictEqual({ type: 'out-of-range-length-digit', gte: 2, lte: 2 });
102
- expect(isYearlessDate('01-00').reason).toStrictEqual({ type: 'out-of-range', gte: 1, lte: 31 });
103
- expect(isYearlessDate('01-01').matched).toBe(true);
104
- expect(isYearlessDate('01-31').matched).toBe(true);
105
- expect(isYearlessDate('01-32').reason).toStrictEqual({ type: 'out-of-range', gte: 1, lte: 31 });
106
- expect(isYearlessDate('02-28').matched).toBe(true);
107
- expect(isYearlessDate('02-29').matched).toBe(true);
108
- expect(isYearlessDate('02-30').reason).toStrictEqual({ type: 'out-of-range', gte: 1, lte: 29 });
109
- });
110
-
111
- test('time-string', () => {
112
- expect(isTimeString('').reason).toBe('empty-token');
113
- expect(isTimeString(' ').reason).toBe('unexpected-token');
114
- expect(isTimeString('a').reason).toBe('unexpected-token');
115
- expect(isTimeString('0').reason).toStrictEqual({ type: 'out-of-range-length-digit', gte: 2, lte: 2 });
116
- expect(isTimeString('000').reason).toStrictEqual({ type: 'out-of-range-length-digit', gte: 2, lte: 2 });
117
- expect(isTimeString('24').reason).toStrictEqual({ type: 'out-of-range', gte: 0, lte: 23 });
118
- expect(isTimeString('00').reason).toBe('missing-token');
119
- expect(isTimeString('00-').reason).toBe('unexpected-token');
120
- expect(isTimeString('00:').reason).toBe('missing-token');
121
- expect(isTimeString('00:a').reason).toBe('unexpected-token');
122
- expect(isTimeString('00:0').reason).toStrictEqual({ type: 'out-of-range-length-digit', gte: 2, lte: 2 });
123
- expect(isTimeString('00:000').reason).toStrictEqual({ type: 'out-of-range-length-digit', gte: 2, lte: 2 });
124
- expect(isTimeString('00:00').matched).toBe(true);
125
- expect(isTimeString('00:59').matched).toBe(true);
126
- expect(isTimeString('00:60').reason).toStrictEqual({ type: 'out-of-range', gte: 0, lte: 59 });
127
- expect(isTimeString('00:00-').reason).toBe('unexpected-token');
128
- expect(isTimeString('00:00:').reason).toBe('missing-token');
129
- expect(isTimeString('00:00:a').reason).toBe('unexpected-token');
130
- expect(isTimeString('00:00:0').reason).toStrictEqual({ type: 'out-of-range-length-digit', gte: 2, lte: 2 });
131
- expect(isTimeString('00:00:000').reason).toStrictEqual({ type: 'out-of-range-length-digit', gte: 2, lte: 2 });
132
- expect(isTimeString('00:00:00').matched).toBe(true);
133
- expect(isTimeString('00:00:59').matched).toBe(true);
134
- expect(isTimeString('00:00:60').reason).toStrictEqual({ type: 'out-of-range', gte: 0, lte: 59 });
135
- expect(isTimeString('00:00:00:').reason).toBe('unexpected-token');
136
- expect(isTimeString('00:00:00.').reason).toBe('missing-token');
137
- expect(isTimeString('00:00:00.a').reason).toBe('unexpected-token');
138
- expect(isTimeString('00:00:00.0').matched).toBe(true);
139
- expect(isTimeString('00:00:00.9').matched).toBe(true);
140
- expect(isTimeString('00:00:00.00').matched).toBe(true);
141
- expect(isTimeString('00:00:00.99').matched).toBe(true);
142
- expect(isTimeString('00:00:00.000').matched).toBe(true);
143
- expect(isTimeString('00:00:00.999').matched).toBe(true);
144
- expect(isTimeString('00:00:00.0000').reason).toStrictEqual({ type: 'out-of-range-length-digit', gte: 1, lte: 3 });
145
- expect(isTimeString('00:00:00.1000').reason).toStrictEqual({ type: 'out-of-range-length-digit', gte: 1, lte: 3 });
146
- });
147
-
148
- test('local-date-and-time-string', () => {
149
- expect(isLocalDateAndTime('').reason).toBe('empty-token');
150
- expect(isLocalDateAndTime(' ').reason).toBe('unexpected-token');
151
- expect(isLocalDateAndTime('2020-12-31').reason).toBe('missing-token');
152
- expect(isLocalDateAndTime('2020-12-31:').reason).toBe('unexpected-token');
153
- expect(isLocalDateAndTime('2020-12-31T').reason).toBe('missing-token');
154
- expect(isLocalDateAndTime('2020-12-31 ').reason).toBe('missing-token');
155
- expect(isLocalDateAndTime('2020-12-31 ').reason).toBe('unexpected-token');
156
- expect(isLocalDateAndTime('2020-12-31T00:00:00.000').matched).toBe(true);
157
- });
158
-
159
- test('normalized-local-date-and-time-string', () => {
160
- expect(isNormalizedLocalDateAndTime('').reason).toBe('empty-token');
161
- expect(isNormalizedLocalDateAndTime(' ').reason).toBe('unexpected-token');
162
- expect(isNormalizedLocalDateAndTime('2020-12-31').reason).toBe('missing-token');
163
- expect(isNormalizedLocalDateAndTime('2020-12-31:').reason).toBe('unexpected-token');
164
- expect(isNormalizedLocalDateAndTime('2020-12-31T').reason).toBe('missing-token');
165
- expect(isNormalizedLocalDateAndTime('2020-12-31 ').reason).toBe('unexpected-token');
166
- expect(isNormalizedLocalDateAndTime('2020-12-31T00:00').matched).toBe(true);
167
- expect(isNormalizedLocalDateAndTime('2020-12-31T00:00:00').reason).toBe('extra-token');
168
- expect(isNormalizedLocalDateAndTime('2020-12-31T00:00:01').matched).toBe(true);
169
- expect(isNormalizedLocalDateAndTime('2020-12-31T00:00:00.0').reason).toBe('extra-token');
170
- expect(isNormalizedLocalDateAndTime('2020-12-31T00:00:00.00').reason).toBe('extra-token');
171
- expect(isNormalizedLocalDateAndTime('2020-12-31T00:00:00.000').reason).toBe('extra-token');
172
- expect(isNormalizedLocalDateAndTime('2020-12-31T00:00:00.001').matched).toBe(true);
173
- });
174
-
175
- test('time-zone-offset', () => {
176
- expect(isTimeZoneOffset('').reason).toBe('empty-token');
177
- expect(isTimeZoneOffset(' ').reason).toBe('unexpected-token');
178
- expect(isTimeZoneOffset('a').reason).toBe('unexpected-token');
179
- expect(isTimeZoneOffset('z').reason).toBe('unexpected-token');
180
- expect(isTimeZoneOffset('Z').matched).toBe(true);
181
- expect(isTimeZoneOffset('Z:').reason).toBe('extra-token');
182
- expect(isTimeZoneOffset('ZZ').reason).toBe('extra-token');
183
- expect(isTimeZoneOffset('+').reason).toBe('missing-token');
184
- expect(isTimeZoneOffset('-').reason).toBe('missing-token');
185
- expect(isTimeZoneOffset('+-').reason).toBe('unexpected-token');
186
- expect(isTimeZoneOffset('+00').reason).toBe('missing-token');
187
- expect(isTimeZoneOffset('+00:').reason).toBe('missing-token');
188
- expect(isTimeZoneOffset('+00:00').matched).toBe(true);
189
- expect(isTimeZoneOffset('+24:00').matched).toBe(false);
190
- expect(isTimeZoneOffset('+00:60').matched).toBe(false);
191
- expect(isTimeZoneOffset('+000:00').matched).toBe(false);
192
- expect(isTimeZoneOffset('+00:000').matched).toBe(false);
193
- expect(isTimeZoneOffset('+00:00:').reason).toBe('extra-token');
194
- expect(isTimeZoneOffset('+0000').matched).toBe(true);
195
- expect(isTimeZoneOffset('+2400').matched).toBe(false);
196
- expect(isTimeZoneOffset('+0060').matched).toBe(false);
197
- expect(isTimeZoneOffset('+00000').matched).toBe(false);
198
- expect(isTimeZoneOffset('+0000:').reason).toBe('extra-token');
199
- });
200
-
201
- test('global-date-and-time-string', () => {
202
- expect(isGlobalDateAndTime('2000-01-01').reason).toBe('missing-token');
203
- expect(isGlobalDateAndTime('2000-01-01T00:00').reason).toBe('missing-token');
204
- expect(isGlobalDateAndTime('2000-01-01T00:00').reason).toBe('missing-token');
205
- expect(isGlobalDateAndTime('2000-01-01T00:00+').reason).toBe('missing-token');
206
- expect(isGlobalDateAndTime('2000-01-01T00:00Z').matched).toBe(true);
207
- expect(isGlobalDateAndTime('2000-01-01T00:00+00').reason).toBe('missing-token');
208
- expect(isGlobalDateAndTime('2000-01-01T00:00+0000').matched).toBe(true);
209
- expect(isGlobalDateAndTime('2000-01-01T00:00+00:00').matched).toBe(true);
210
- expect(isGlobalDateAndTime('2000-01-01T00:00-2359').matched).toBe(true);
211
- expect(isGlobalDateAndTime('2000-01-01T00:00-23:59').matched).toBe(true);
212
- expect(isGlobalDateAndTime('2000-01-01T00:00:00+0000').matched).toBe(true);
213
- expect(isGlobalDateAndTime('2000-01-01T00:00:00.000+0000').matched).toBe(true);
214
- expect(isGlobalDateAndTime('2000-01-01T00:00:00.000+0000a').reason).toBe('extra-token');
215
- });
216
-
217
- test('week-string', () => {
218
- expect(isWeek('').reason).toBe('empty-token');
219
- expect(isWeek(' ').reason).toBe('unexpected-token');
220
- expect(isWeek('a').reason).toBe('unexpected-token');
221
- expect(isWeek('2000').reason).toBe('missing-token');
222
- expect(isWeek('2000-').reason).toBe('missing-token');
223
- expect(isWeek('2000-a').reason).toBe('unexpected-token');
224
- expect(isWeek('2000-W').reason).toBe('missing-token');
225
- expect(isWeek('2000-Wa').reason).toBe('unexpected-token');
226
- expect(isWeek('2000-W0').reason).toStrictEqual({ type: 'out-of-range-length-digit', gte: 2, lte: 2 });
227
- expect(isWeek('2000-W00').reason).toStrictEqual({ type: 'out-of-range', gte: 1, lte: 52 });
228
- expect(isWeek('2000-W53').reason).toStrictEqual({ type: 'out-of-range', gte: 1, lte: 52 });
229
- expect(isWeek('2000-W01').matched).toBe(true);
230
- expect(isWeek('2000-W52').matched).toBe(true);
231
- expect(isWeek('2004-W00').reason).toStrictEqual({ type: 'out-of-range', gte: 1, lte: 53 });
232
- expect(isWeek('2004-W54').reason).toStrictEqual({ type: 'out-of-range', gte: 1, lte: 53 });
233
- expect(isWeek('2004-W01').matched).toBe(true);
234
- expect(isWeek('2004-W53').matched).toBe(true);
235
- expect(isWeek('2000-W01a').reason).toBe('extra-token');
236
- });
237
-
238
- test('year-string', () => {
239
- expect(isYear('').reason).toBe('empty-token');
240
- expect(isYear(' ').reason).toBe('unexpected-token');
241
- expect(isYear('a').reason).toBe('unexpected-token');
242
- expect(isYear('200').reason).toStrictEqual({ type: 'out-of-range-length-digit', gte: 4 });
243
- expect(isYear('2000').matched).toBe(true);
244
- expect(isYear('20000').matched).toBe(true);
245
- });
246
-
247
- test('duration-string (IS08601 like)', () => {
248
- expect(isDurationISO8601Like('').reason).toBe('empty-token');
249
- expect(isDurationISO8601Like(' ').reason).toBe('unexpected-token');
250
- expect(isDurationISO8601Like('a').reason).toBe('unexpected-token');
251
- expect(isDurationISO8601Like('P').reason).toBe('missing-token');
252
- expect(isDurationISO8601Like('P0').reason).toBe('missing-token');
253
- expect(isDurationISO8601Like('P0D').reason).toBe('missing-token');
254
- expect(isDurationISO8601Like('P0H').reason).toBe('unexpected-token');
255
- expect(isDurationISO8601Like('P0Dt').reason).toBe('unexpected-token');
256
- expect(isDurationISO8601Like('P0DT').reason).toBe('missing-token');
257
- expect(isDurationISO8601Like('P0DT0').reason).toBe('missing-token');
258
- expect(isDurationISO8601Like('P0DT0H').matched).toBe(true);
259
- expect(isDurationISO8601Like('P0DT0H0').reason).toBe('missing-token');
260
- expect(isDurationISO8601Like('P0DT0H0M').matched).toBe(true);
261
- expect(isDurationISO8601Like('P0DT0H0M0').reason).toBe('missing-token');
262
- expect(isDurationISO8601Like('P0DT0H0M0S').matched).toBe(true);
263
- expect(isDurationISO8601Like('P0DT0H0M0.').reason).toBe('missing-token');
264
- expect(isDurationISO8601Like('P0DT0H0M0M').reason).toBe('unexpected-token');
265
- expect(isDurationISO8601Like('P0DT0H0M0.0').reason).toBe('missing-token');
266
- expect(isDurationISO8601Like('P0DT0H0M0.0M').reason).toBe('unexpected-token');
267
- expect(isDurationISO8601Like('P0DT0H0M0.000').reason).toBe('missing-token');
268
- expect(isDurationISO8601Like('P0DT0H0M0.0000').reason).toStrictEqual({
269
- gte: 1,
270
- lte: 3,
271
- type: 'out-of-range-length-digit',
272
- });
273
- expect(isDurationISO8601Like('P0DT0H0M0.000S').matched).toBe(true);
274
- expect(isDurationISO8601Like('P0DT0H0M0.000S0').reason).toBe('extra-token');
275
- expect(isDurationISO8601Like('P0DT0H0M0.000S0H').reason).toBe('extra-token');
276
- expect(isDurationISO8601Like('P0DT0M').matched).toBe(true);
277
- expect(isDurationISO8601Like('P0DT0S').matched).toBe(true);
278
- expect(isDurationISO8601Like('P0DT0.0S').matched).toBe(true);
279
- expect(isDurationISO8601Like('P0DT0M0S').matched).toBe(true);
280
- expect(isDurationISO8601Like('P0DT0H0S').matched).toBe(true);
281
- expect(isDurationISO8601Like('P0DT0H0.0S').matched).toBe(true);
282
- expect(isDurationISO8601Like('P0DT0M0H').reason).toBe('unexpected-token');
283
- expect(isDurationISO8601Like('P0DT0S0M').reason).toBe('extra-token');
284
- expect(isDurationISO8601Like('P0DT0.0S0M').reason).toBe('extra-token');
285
- expect(isDurationISO8601Like('PT4H18M3S').matched).toBe(true);
286
- });
287
-
288
- test('duration-string (duration component list)', () => {
289
- expect(isDurationComponentList('').reason).toBe('empty-token');
290
- expect(isDurationComponentList(' ').reason).toBe('missing-token');
291
- expect(isDurationComponentList(' a').reason).toBe('unexpected-token');
292
- expect(isDurationComponentList(' 0').reason).toBe('missing-token');
293
- expect(isDurationComponentList(' 0a').reason).toBe('unexpected-token');
294
- expect(isDurationComponentList(' 0w').matched).toBe(true);
295
- expect(isDurationComponentList(' 0ww').reason).toBe('unexpected-token');
296
- expect(isDurationComponentList('0w').matched).toBe(true);
297
- expect(isDurationComponentList('0w ').matched).toBe(true);
298
- expect(isDurationComponentList('0w 0').reason).toBe('missing-token');
299
- expect(isDurationComponentList('0w 0w').reason).toBe('duplicated');
300
- expect(isDurationComponentList('0w 0d').matched).toBe(true);
301
- expect(isDurationComponentList('0w 0d').matched).toBe(true);
302
- expect(isDurationComponentList(' 0w 0d').matched).toBe(true);
303
- expect(isDurationComponentList(' 0w 0d ').matched).toBe(true);
304
- expect(isDurationComponentList('0w 0d ').matched).toBe(true);
305
- expect(isDurationComponentList('\n0w\n0d\n').matched).toBe(true);
306
- expect(isDurationComponentList('0w 0.').reason).toBe('missing-token');
307
- expect(isDurationComponentList('0w 0.0').reason).toBe('missing-token');
308
- expect(isDurationComponentList('0w 0.0s').matched).toBe(true);
309
- expect(isDurationComponentList('0w 0.0d').reason).toBe('unexpected-token');
310
- expect(isDurationComponentList('0s 0.').reason).toBe('unexpected-token');
311
- expect(isDurationComponentList('0s 0.0').reason).toBe('unexpected-token');
312
- expect(isDurationComponentList('0s 0.0s').reason).toBe('unexpected-token');
313
- expect(isDurationComponentList('0w 0.00s').matched).toBe(true);
314
- expect(isDurationComponentList('0w 0.000s').matched).toBe(true);
315
- expect(isDurationComponentList('0w 0.0000s').reason).toStrictEqual({
316
- gte: 1,
317
- lte: 3,
318
- type: 'out-of-range-length-digit',
319
- });
320
- expect(isDurationComponentList('0s 0.000s').reason).toBe('unexpected-token');
321
- expect(isDurationComponentList('0.000s 0s').reason).toBe('duplicated');
322
- expect(isDurationComponentList('0w0d0h0m0.000s').matched).toBe(true);
323
- expect(isDurationComponentList('0w 0d 0h 0m 0.000s').matched).toBe(true);
324
- expect(isDurationComponentList('0w 0d0h 0m0.000s').matched).toBe(true);
325
- expect(isDurationComponentList(' 2w 3d6m 3.4s 93xxxxxxx').reason).toBe('unexpected-token');
326
- });
327
-
328
- test('date-time', () => {
329
- expect(isDateTime('200-1-1').reason).toStrictEqual({ type: 'out-of-range-length-digit', gte: 4 });
330
- expect(isDateTime('2001-02-29').reason).toStrictEqual({ type: 'out-of-range', gte: 1, lte: 28 });
331
- expect(isDateTime('2001-02-28T').reason).toBe('missing-token');
332
- expect(isDateTime('2001-02-28T00').reason).toBe('missing-token');
333
- expect(isDateTime('2001-02-28T00:0').reason).toStrictEqual({ gte: 2, lte: 2, type: 'out-of-range-length-digit' });
334
- expect(isDateTime('2000-01-01T00:00:00.000+0000a').reason).toBe('extra-token');
335
- expect(isDateTime('P0DT0M0H').reason).toBe('unexpected-token');
336
- });
@@ -1,59 +0,0 @@
1
- const { checkMIMEType } = require('../../lib/whatwg/check-mime-type');
2
-
3
- const check = checkMIMEType();
4
- const checkNoParam = checkMIMEType({ withoutParameters: true });
5
-
6
- test('valid', () => {
7
- expect(check('x/y').matched).toBe(true);
8
- expect(check('x/y;a=b;c=D;E="F"').matched).toBe(true);
9
- });
10
-
11
- test('excrescence-token', () => {
12
- expect(check('xy;')).toStrictEqual({
13
- column: 1,
14
- expects: [{ type: 'format', value: 'MIME Type' }],
15
- length: 3,
16
- line: 1,
17
- matched: false,
18
- offset: 0,
19
- raw: 'xy;',
20
- reason: 'syntax-error',
21
- ref: null,
22
- });
23
- expect(check('x/y;')).toStrictEqual({
24
- candidate: 'x/y',
25
- column: 4,
26
- expects: [{ type: 'format', value: 'MIME Type' }],
27
- length: 1,
28
- line: 1,
29
- matched: false,
30
- offset: 3,
31
- raw: ';',
32
- reason: 'extra-token',
33
- ref: null,
34
- });
35
- expect(checkNoParam('x/y;')).toStrictEqual({
36
- candidate: 'x/y',
37
- column: 4,
38
- expects: [{ type: 'format', value: 'MIME Type with no parameters' }],
39
- length: 1,
40
- line: 1,
41
- matched: false,
42
- offset: 3,
43
- raw: ';',
44
- reason: 'extra-token',
45
- ref: null,
46
- });
47
- expect(checkNoParam('x/y;a=b;c=D;E="F"')).toStrictEqual({
48
- candidate: 'x/y',
49
- column: 4,
50
- expects: [{ type: 'format', value: 'MIME Type with no parameters' }],
51
- length: 14,
52
- line: 1,
53
- matched: false,
54
- offset: 3,
55
- raw: ';a=b;c=D;E="F"',
56
- reason: 'extra-token',
57
- ref: null,
58
- });
59
- });
@@ -1,8 +0,0 @@
1
- const { isAbsURL } = require('../../lib/whatwg/is-abs-url');
2
-
3
- const is = isAbsURL();
4
-
5
- test('valid', () => {
6
- expect(is('https://markuplint.dev')).toBe(true);
7
- expect(is('markuplint.dev')).toBe(false);
8
- });