| OLD | NEW |
| (Empty) |
| 1 var core; | |
| 2 (function(exports) { | |
| 3 'use strict'; | |
| 4 class Object { | |
| 5 Object() { | |
| 6 var name = this.constructor.name; | |
| 7 var init = this[name]; | |
| 8 var result = void 0; | |
| 9 if (init) | |
| 10 result = init.apply(this, arguments); | |
| 11 return result === void 0 ? this : result; | |
| 12 } | |
| 13 ['=='](other) { | |
| 14 return identical(this, other); | |
| 15 } | |
| 16 get hashCode() { | |
| 17 return _js_helper.Primitives.objectHashCode(this); | |
| 18 } | |
| 19 toString() { | |
| 20 return _js_helper.Primitives.objectToString(this); | |
| 21 } | |
| 22 noSuchMethod(invocation) { | |
| 23 throw new NoSuchMethodError(this, invocation.memberName, invocation.positi
onalArguments, invocation.namedArguments); | |
| 24 } | |
| 25 get runtimeType() { | |
| 26 return _js_helper.getRuntimeType(this); | |
| 27 } | |
| 28 } | |
| 29 class Deprecated extends Object { | |
| 30 Deprecated(expires) { | |
| 31 this.expires = expires; | |
| 32 } | |
| 33 toString() { | |
| 34 return `Deprecated feature. Will be removed ${this.expires}`; | |
| 35 } | |
| 36 } | |
| 37 class _Override extends Object { | |
| 38 _Override() { | |
| 39 } | |
| 40 } | |
| 41 let deprecated = new Deprecated("next release"); | |
| 42 let override = new _Override(); | |
| 43 class _Proxy extends Object { | |
| 44 _Proxy() { | |
| 45 } | |
| 46 } | |
| 47 let proxy = new _Proxy(); | |
| 48 class bool extends Object { | |
| 49 bool$fromEnvironment(name, opt$) { | |
| 50 let defaultValue = opt$.defaultValue === void 0 ? false : opt$.defaultValu
e; | |
| 51 throw new UnsupportedError('bool.fromEnvironment can only be used as a con
st constructor'); | |
| 52 } | |
| 53 toString() { | |
| 54 return this ? "true" : "false"; | |
| 55 } | |
| 56 } | |
| 57 dart.defineNamedConstructor(bool, 'fromEnvironment'); | |
| 58 let Comparable$ = dart.generic(function(T) { | |
| 59 class Comparable extends Object { | |
| 60 static compare(a, b) { | |
| 61 return a.compareTo(b); | |
| 62 } | |
| 63 } | |
| 64 return Comparable; | |
| 65 }); | |
| 66 let Comparable = Comparable$(dart.dynamic); | |
| 67 let _fourDigits = Symbol('_fourDigits'); | |
| 68 let _sixDigits = Symbol('_sixDigits'); | |
| 69 let _threeDigits = Symbol('_threeDigits'); | |
| 70 let _twoDigits = Symbol('_twoDigits'); | |
| 71 let _brokenDownDateToMillisecondsSinceEpoch = Symbol('_brokenDownDateToMillise
condsSinceEpoch'); | |
| 72 class DateTime extends Object { | |
| 73 DateTime(year, month, day, hour, minute, second, millisecond) { | |
| 74 if (month === void 0) | |
| 75 month = 1; | |
| 76 if (day === void 0) | |
| 77 day = 1; | |
| 78 if (hour === void 0) | |
| 79 hour = 0; | |
| 80 if (minute === void 0) | |
| 81 minute = 0; | |
| 82 if (second === void 0) | |
| 83 second = 0; | |
| 84 if (millisecond === void 0) | |
| 85 millisecond = 0; | |
| 86 this.DateTime$_internal(year, month, day, hour, minute, second, millisecon
d, false); | |
| 87 } | |
| 88 DateTime$utc(year, month, day, hour, minute, second, millisecond) { | |
| 89 if (month === void 0) | |
| 90 month = 1; | |
| 91 if (day === void 0) | |
| 92 day = 1; | |
| 93 if (hour === void 0) | |
| 94 hour = 0; | |
| 95 if (minute === void 0) | |
| 96 minute = 0; | |
| 97 if (second === void 0) | |
| 98 second = 0; | |
| 99 if (millisecond === void 0) | |
| 100 millisecond = 0; | |
| 101 this.DateTime$_internal(year, month, day, hour, minute, second, millisecon
d, true); | |
| 102 } | |
| 103 DateTime$now() { | |
| 104 this.DateTime$_now(); | |
| 105 } | |
| 106 static parse(formattedString) { | |
| 107 let re = new RegExp('^([+-]?\\d{4,6})-?(\\d\\d)-?(\\d\\d)' + '(?:[ T](\\d\
\d)(?::?(\\d\\d)(?::?(\\d\\d)(.\\d{1,6})?)?)?' + '( ?[zZ]| ?([-+])(\\d\\d)(?::?(
\\d\\d))?)?)?$'); | |
| 108 let match = re.firstMatch(formattedString); | |
| 109 if (match !== null) { | |
| 110 // Function parseIntOrZero: (String) → int | |
| 111 function parseIntOrZero(matched) { | |
| 112 if (matched === null) | |
| 113 return 0; | |
| 114 return int.parse(matched); | |
| 115 } | |
| 116 // Function parseDoubleOrZero: (String) → double | |
| 117 function parseDoubleOrZero(matched) { | |
| 118 if (matched === null) | |
| 119 return 0.0; | |
| 120 return double.parse(matched); | |
| 121 } | |
| 122 let years = int.parse(match.get(1)); | |
| 123 let month = int.parse(match.get(2)); | |
| 124 let day = int.parse(match.get(3)); | |
| 125 let hour = parseIntOrZero(match.get(4)); | |
| 126 let minute = parseIntOrZero(match.get(5)); | |
| 127 let second = parseIntOrZero(match.get(6)); | |
| 128 let addOneMillisecond = false; | |
| 129 let millisecond = (dart.notNull(parseDoubleOrZero(match.get(7))) * 1000)
.round(); | |
| 130 if (millisecond === 1000) { | |
| 131 addOneMillisecond = true; | |
| 132 millisecond = 999; | |
| 133 } | |
| 134 let isUtc = false; | |
| 135 if (match.get(8) !== null) { | |
| 136 isUtc = true; | |
| 137 if (match.get(9) !== null) { | |
| 138 let sign = dart.equals(match.get(9), '-') ? -1 : 1; | |
| 139 let hourDifference = int.parse(match.get(10)); | |
| 140 let minuteDifference = parseIntOrZero(match.get(11)); | |
| 141 minuteDifference = 60 * dart.notNull(hourDifference); | |
| 142 minute = dart.notNull(sign) * dart.notNull(minuteDifference); | |
| 143 } | |
| 144 } | |
| 145 let millisecondsSinceEpoch = _brokenDownDateToMillisecondsSinceEpoch(yea
rs, month, day, hour, minute, second, millisecond, isUtc); | |
| 146 if (millisecondsSinceEpoch === null) { | |
| 147 throw new FormatException("Time out of range", formattedString); | |
| 148 } | |
| 149 if (addOneMillisecond) | |
| 150 millisecondsSinceEpoch = dart.notNull(millisecondsSinceEpoch) + 1; | |
| 151 return new DateTime.fromMillisecondsSinceEpoch(millisecondsSinceEpoch, {
isUtc: isUtc}); | |
| 152 } else { | |
| 153 throw new FormatException("Invalid date format", formattedString); | |
| 154 } | |
| 155 } | |
| 156 DateTime$fromMillisecondsSinceEpoch(millisecondsSinceEpoch, opt$) { | |
| 157 let isUtc = opt$.isUtc === void 0 ? false : opt$.isUtc; | |
| 158 this.millisecondsSinceEpoch = millisecondsSinceEpoch; | |
| 159 this.isUtc = isUtc; | |
| 160 if (dart.notNull(millisecondsSinceEpoch.abs()) > dart.notNull(DateTime._MA
X_MILLISECONDS_SINCE_EPOCH)) { | |
| 161 throw new ArgumentError(millisecondsSinceEpoch); | |
| 162 } | |
| 163 if (isUtc === null) | |
| 164 throw new ArgumentError(isUtc); | |
| 165 } | |
| 166 ['=='](other) { | |
| 167 if (!dart.notNull(dart.is(other, DateTime))) | |
| 168 return false; | |
| 169 return this.millisecondsSinceEpoch === dart.dload(other, 'millisecondsSinc
eEpoch') && this.isUtc === dart.dload(other, 'isUtc'); | |
| 170 } | |
| 171 isBefore(other) { | |
| 172 return dart.notNull(this.millisecondsSinceEpoch) < dart.notNull(other.mill
isecondsSinceEpoch); | |
| 173 } | |
| 174 isAfter(other) { | |
| 175 return dart.notNull(this.millisecondsSinceEpoch) > dart.notNull(other.mill
isecondsSinceEpoch); | |
| 176 } | |
| 177 isAtSameMomentAs(other) { | |
| 178 return this.millisecondsSinceEpoch === other.millisecondsSinceEpoch; | |
| 179 } | |
| 180 compareTo(other) { | |
| 181 return this.millisecondsSinceEpoch.compareTo(other.millisecondsSinceEpoch)
; | |
| 182 } | |
| 183 get hashCode() { | |
| 184 return this.millisecondsSinceEpoch; | |
| 185 } | |
| 186 toLocal() { | |
| 187 if (this.isUtc) { | |
| 188 return new DateTime.fromMillisecondsSinceEpoch(this.millisecondsSinceEpo
ch, {isUtc: false}); | |
| 189 } | |
| 190 return this; | |
| 191 } | |
| 192 toUtc() { | |
| 193 if (this.isUtc) | |
| 194 return this; | |
| 195 return new DateTime.fromMillisecondsSinceEpoch(this.millisecondsSinceEpoch
, {isUtc: true}); | |
| 196 } | |
| 197 static [_fourDigits](n) { | |
| 198 let absN = n.abs(); | |
| 199 let sign = dart.notNull(n) < 0 ? "-" : ""; | |
| 200 if (dart.notNull(absN) >= 1000) | |
| 201 return `${n}`; | |
| 202 if (dart.notNull(absN) >= 100) | |
| 203 return `${sign}0${absN}`; | |
| 204 if (dart.notNull(absN) >= 10) | |
| 205 return `${sign}00${absN}`; | |
| 206 return `${sign}000${absN}`; | |
| 207 } | |
| 208 static [_sixDigits](n) { | |
| 209 dart.assert(dart.notNull(n) < -9999 || dart.notNull(n) > 9999); | |
| 210 let absN = n.abs(); | |
| 211 let sign = dart.notNull(n) < 0 ? "-" : "+"; | |
| 212 if (dart.notNull(absN) >= 100000) | |
| 213 return `${sign}${absN}`; | |
| 214 return `${sign}0${absN}`; | |
| 215 } | |
| 216 static [_threeDigits](n) { | |
| 217 if (dart.notNull(n) >= 100) | |
| 218 return `${n}`; | |
| 219 if (dart.notNull(n) >= 10) | |
| 220 return `0${n}`; | |
| 221 return `00${n}`; | |
| 222 } | |
| 223 static [_twoDigits](n) { | |
| 224 if (dart.notNull(n) >= 10) | |
| 225 return `${n}`; | |
| 226 return `0${n}`; | |
| 227 } | |
| 228 toString() { | |
| 229 let y = _fourDigits(this.year); | |
| 230 let m = _twoDigits(this.month); | |
| 231 let d = _twoDigits(this.day); | |
| 232 let h = _twoDigits(this.hour); | |
| 233 let min = _twoDigits(this.minute); | |
| 234 let sec = _twoDigits(this.second); | |
| 235 let ms = _threeDigits(this.millisecond); | |
| 236 if (this.isUtc) { | |
| 237 return `${y}-${m}-${d} ${h}:${min}:${sec}.${ms}Z`; | |
| 238 } else { | |
| 239 return `${y}-${m}-${d} ${h}:${min}:${sec}.${ms}`; | |
| 240 } | |
| 241 } | |
| 242 toIso8601String() { | |
| 243 let y = dart.notNull(this.year) >= -9999 && dart.notNull(this.year) <= 999
9 ? _fourDigits(this.year) : _sixDigits(this.year); | |
| 244 let m = _twoDigits(this.month); | |
| 245 let d = _twoDigits(this.day); | |
| 246 let h = _twoDigits(this.hour); | |
| 247 let min = _twoDigits(this.minute); | |
| 248 let sec = _twoDigits(this.second); | |
| 249 let ms = _threeDigits(this.millisecond); | |
| 250 if (this.isUtc) { | |
| 251 return `${y}-${m}-${d}T${h}:${min}:${sec}.${ms}Z`; | |
| 252 } else { | |
| 253 return `${y}-${m}-${d}T${h}:${min}:${sec}.${ms}`; | |
| 254 } | |
| 255 } | |
| 256 add(duration) { | |
| 257 let ms = this.millisecondsSinceEpoch; | |
| 258 return new DateTime.fromMillisecondsSinceEpoch(dart.notNull(ms) + dart.not
Null(duration.inMilliseconds), {isUtc: this.isUtc}); | |
| 259 } | |
| 260 subtract(duration) { | |
| 261 let ms = this.millisecondsSinceEpoch; | |
| 262 return new DateTime.fromMillisecondsSinceEpoch(dart.notNull(ms) - dart.not
Null(duration.inMilliseconds), {isUtc: this.isUtc}); | |
| 263 } | |
| 264 difference(other) { | |
| 265 let ms = this.millisecondsSinceEpoch; | |
| 266 let otherMs = other.millisecondsSinceEpoch; | |
| 267 return new Duration({milliseconds: dart.notNull(ms) - dart.notNull(otherMs
)}); | |
| 268 } | |
| 269 DateTime$_internal(year, month, day, hour, minute, second, millisecond, isUt
c) { | |
| 270 this.isUtc = typeof isUtc == boolean ? isUtc : dart.throw_(new ArgumentErr
or(isUtc)); | |
| 271 this.millisecondsSinceEpoch = dart.as(_js_helper.checkInt(_js_helper.Primi
tives.valueFromDecomposedDate(year, month, day, hour, minute, second, millisecon
d, isUtc)), int); | |
| 272 } | |
| 273 DateTime$_now() { | |
| 274 this.isUtc = false; | |
| 275 this.millisecondsSinceEpoch = _js_helper.Primitives.dateNow(); | |
| 276 } | |
| 277 static [_brokenDownDateToMillisecondsSinceEpoch](year, month, day, hour, min
ute, second, millisecond, isUtc) { | |
| 278 return dart.as(_js_helper.Primitives.valueFromDecomposedDate(year, month,
day, hour, minute, second, millisecond, isUtc), int); | |
| 279 } | |
| 280 get timeZoneName() { | |
| 281 if (this.isUtc) | |
| 282 return "UTC"; | |
| 283 return _js_helper.Primitives.getTimeZoneName(this); | |
| 284 } | |
| 285 get timeZoneOffset() { | |
| 286 if (this.isUtc) | |
| 287 return new Duration(); | |
| 288 return new Duration({minutes: _js_helper.Primitives.getTimeZoneOffsetInMin
utes(this)}); | |
| 289 } | |
| 290 get year() { | |
| 291 return dart.as(_js_helper.Primitives.getYear(this), int); | |
| 292 } | |
| 293 get month() { | |
| 294 return dart.as(_js_helper.Primitives.getMonth(this), int); | |
| 295 } | |
| 296 get day() { | |
| 297 return dart.as(_js_helper.Primitives.getDay(this), int); | |
| 298 } | |
| 299 get hour() { | |
| 300 return dart.as(_js_helper.Primitives.getHours(this), int); | |
| 301 } | |
| 302 get minute() { | |
| 303 return dart.as(_js_helper.Primitives.getMinutes(this), int); | |
| 304 } | |
| 305 get second() { | |
| 306 return dart.as(_js_helper.Primitives.getSeconds(this), int); | |
| 307 } | |
| 308 get millisecond() { | |
| 309 return dart.as(_js_helper.Primitives.getMilliseconds(this), int); | |
| 310 } | |
| 311 get weekday() { | |
| 312 return dart.as(_js_helper.Primitives.getWeekday(this), int); | |
| 313 } | |
| 314 } | |
| 315 dart.defineNamedConstructor(DateTime, 'utc'); | |
| 316 dart.defineNamedConstructor(DateTime, 'now'); | |
| 317 dart.defineNamedConstructor(DateTime, 'fromMillisecondsSinceEpoch'); | |
| 318 dart.defineNamedConstructor(DateTime, '_internal'); | |
| 319 dart.defineNamedConstructor(DateTime, '_now'); | |
| 320 DateTime.MONDAY = 1; | |
| 321 DateTime.TUESDAY = 2; | |
| 322 DateTime.WEDNESDAY = 3; | |
| 323 DateTime.THURSDAY = 4; | |
| 324 DateTime.FRIDAY = 5; | |
| 325 DateTime.SATURDAY = 6; | |
| 326 DateTime.SUNDAY = 7; | |
| 327 DateTime.DAYS_PER_WEEK = 7; | |
| 328 DateTime.JANUARY = 1; | |
| 329 DateTime.FEBRUARY = 2; | |
| 330 DateTime.MARCH = 3; | |
| 331 DateTime.APRIL = 4; | |
| 332 DateTime.MAY = 5; | |
| 333 DateTime.JUNE = 6; | |
| 334 DateTime.JULY = 7; | |
| 335 DateTime.AUGUST = 8; | |
| 336 DateTime.SEPTEMBER = 9; | |
| 337 DateTime.OCTOBER = 10; | |
| 338 DateTime.NOVEMBER = 11; | |
| 339 DateTime.DECEMBER = 12; | |
| 340 DateTime.MONTHS_PER_YEAR = 12; | |
| 341 DateTime._MAX_MILLISECONDS_SINCE_EPOCH = 8640000000000000; | |
| 342 let _onParseErrorInt = Symbol('_onParseErrorInt'); | |
| 343 let _onParseErrorDouble = Symbol('_onParseErrorDouble'); | |
| 344 class num extends Object { | |
| 345 static parse(input, onError) { | |
| 346 if (onError === void 0) | |
| 347 onError = null; | |
| 348 let source = input.trim(); | |
| 349 _parseError = false; | |
| 350 let result = int.parse(source, {onError: _onParseErrorInt}); | |
| 351 if (!dart.notNull(_parseError)) | |
| 352 return result; | |
| 353 _parseError = false; | |
| 354 result = double.parse(source, _onParseErrorDouble); | |
| 355 if (!dart.notNull(_parseError)) | |
| 356 return result; | |
| 357 if (onError === null) | |
| 358 throw new FormatException(input); | |
| 359 return onError(input); | |
| 360 } | |
| 361 static [_onParseErrorInt](_) { | |
| 362 _parseError = true; | |
| 363 return 0; | |
| 364 } | |
| 365 static [_onParseErrorDouble](_) { | |
| 366 _parseError = true; | |
| 367 return 0.0; | |
| 368 } | |
| 369 } | |
| 370 num._parseError = false; | |
| 371 class double extends num { | |
| 372 static parse(source, onError) { | |
| 373 if (onError === void 0) | |
| 374 onError = null; | |
| 375 return _js_helper.Primitives.parseDouble(source, onError); | |
| 376 } | |
| 377 } | |
| 378 double.NAN = 0.0 / 0.0; | |
| 379 double.INFINITY = 1.0 / 0.0; | |
| 380 double.NEGATIVE_INFINITY = -dart.notNull(double.INFINITY); | |
| 381 double.MIN_POSITIVE = 5e-324; | |
| 382 double.MAX_FINITE = 1.7976931348623157e+308; | |
| 383 let _duration = Symbol('_duration'); | |
| 384 class Duration extends Object { | |
| 385 Duration(opt$) { | |
| 386 let days = opt$.days === void 0 ? 0 : opt$.days; | |
| 387 let hours = opt$.hours === void 0 ? 0 : opt$.hours; | |
| 388 let minutes = opt$.minutes === void 0 ? 0 : opt$.minutes; | |
| 389 let seconds = opt$.seconds === void 0 ? 0 : opt$.seconds; | |
| 390 let milliseconds = opt$.milliseconds === void 0 ? 0 : opt$.milliseconds; | |
| 391 let microseconds = opt$.microseconds === void 0 ? 0 : opt$.microseconds; | |
| 392 this.Duration$_microseconds(dart.notNull(days) * dart.notNull(Duration.MIC
ROSECONDS_PER_DAY) + dart.notNull(hours) * dart.notNull(Duration.MICROSECONDS_PE
R_HOUR) + dart.notNull(minutes) * dart.notNull(Duration.MICROSECONDS_PER_MINUTE)
+ dart.notNull(seconds) * dart.notNull(Duration.MICROSECONDS_PER_SECOND) + dart
.notNull(milliseconds) * dart.notNull(Duration.MICROSECONDS_PER_MILLISECOND) + d
art.notNull(microseconds)); | |
| 393 } | |
| 394 Duration$_microseconds($_duration) { | |
| 395 this[_duration] = $_duration; | |
| 396 } | |
| 397 ['+'](other) { | |
| 398 return new Duration._microseconds(dart.notNull(this[_duration]) + dart.not
Null(other[_duration])); | |
| 399 } | |
| 400 ['-'](other) { | |
| 401 return new Duration._microseconds(dart.notNull(this[_duration]) - dart.not
Null(other[_duration])); | |
| 402 } | |
| 403 ['*'](factor) { | |
| 404 return new Duration._microseconds((dart.notNull(this[_duration]) * dart.no
tNull(factor)).round()); | |
| 405 } | |
| 406 ['~/'](quotient) { | |
| 407 if (quotient === 0) | |
| 408 throw new IntegerDivisionByZeroException(); | |
| 409 return new Duration._microseconds((dart.notNull(this[_duration]) / dart.no
tNull(quotient)).truncate()); | |
| 410 } | |
| 411 ['<'](other) { | |
| 412 return dart.notNull(this[_duration]) < dart.notNull(other[_duration]); | |
| 413 } | |
| 414 ['>'](other) { | |
| 415 return dart.notNull(this[_duration]) > dart.notNull(other[_duration]); | |
| 416 } | |
| 417 ['<='](other) { | |
| 418 return dart.notNull(this[_duration]) <= dart.notNull(other[_duration]); | |
| 419 } | |
| 420 ['>='](other) { | |
| 421 return dart.notNull(this[_duration]) >= dart.notNull(other[_duration]); | |
| 422 } | |
| 423 get inDays() { | |
| 424 return (dart.notNull(this[_duration]) / dart.notNull(Duration.MICROSECONDS
_PER_DAY)).truncate(); | |
| 425 } | |
| 426 get inHours() { | |
| 427 return (dart.notNull(this[_duration]) / dart.notNull(Duration.MICROSECONDS
_PER_HOUR)).truncate(); | |
| 428 } | |
| 429 get inMinutes() { | |
| 430 return (dart.notNull(this[_duration]) / dart.notNull(Duration.MICROSECONDS
_PER_MINUTE)).truncate(); | |
| 431 } | |
| 432 get inSeconds() { | |
| 433 return (dart.notNull(this[_duration]) / dart.notNull(Duration.MICROSECONDS
_PER_SECOND)).truncate(); | |
| 434 } | |
| 435 get inMilliseconds() { | |
| 436 return (dart.notNull(this[_duration]) / dart.notNull(Duration.MICROSECONDS
_PER_MILLISECOND)).truncate(); | |
| 437 } | |
| 438 get inMicroseconds() { | |
| 439 return this[_duration]; | |
| 440 } | |
| 441 ['=='](other) { | |
| 442 if (!dart.is(other, Duration)) | |
| 443 return false; | |
| 444 return this[_duration] === dart.dload(other, '_duration'); | |
| 445 } | |
| 446 get hashCode() { | |
| 447 return this[_duration].hashCode; | |
| 448 } | |
| 449 compareTo(other) { | |
| 450 return this[_duration].compareTo(other[_duration]); | |
| 451 } | |
| 452 toString() { | |
| 453 // Function sixDigits: (int) → String | |
| 454 function sixDigits(n) { | |
| 455 if (dart.notNull(n) >= 100000) | |
| 456 return `${n}`; | |
| 457 if (dart.notNull(n) >= 10000) | |
| 458 return `0${n}`; | |
| 459 if (dart.notNull(n) >= 1000) | |
| 460 return `00${n}`; | |
| 461 if (dart.notNull(n) >= 100) | |
| 462 return `000${n}`; | |
| 463 if (dart.notNull(n) >= 10) | |
| 464 return `0000${n}`; | |
| 465 return `00000${n}`; | |
| 466 } | |
| 467 // Function twoDigits: (int) → String | |
| 468 function twoDigits(n) { | |
| 469 if (dart.notNull(n) >= 10) | |
| 470 return `${n}`; | |
| 471 return `0${n}`; | |
| 472 } | |
| 473 if (dart.notNull(this.inMicroseconds) < 0) { | |
| 474 return `-${this['unary-']()}`; | |
| 475 } | |
| 476 let twoDigitMinutes = twoDigits(this.inMinutes.remainder(Duration.MINUTES_
PER_HOUR)); | |
| 477 let twoDigitSeconds = twoDigits(this.inSeconds.remainder(Duration.SECONDS_
PER_MINUTE)); | |
| 478 let sixDigitUs = sixDigits(this.inMicroseconds.remainder(Duration.MICROSEC
ONDS_PER_SECOND)); | |
| 479 return `${this.inHours}:${twoDigitMinutes}:${twoDigitSeconds}.${sixDigitUs
}`; | |
| 480 } | |
| 481 get isNegative() { | |
| 482 return dart.notNull(this[_duration]) < 0; | |
| 483 } | |
| 484 abs() { | |
| 485 return new Duration._microseconds(this[_duration].abs()); | |
| 486 } | |
| 487 ['-']() { | |
| 488 return new Duration._microseconds(-dart.notNull(this[_duration])); | |
| 489 } | |
| 490 } | |
| 491 dart.defineNamedConstructor(Duration, '_microseconds'); | |
| 492 Duration.MICROSECONDS_PER_MILLISECOND = 1000; | |
| 493 Duration.MILLISECONDS_PER_SECOND = 1000; | |
| 494 Duration.SECONDS_PER_MINUTE = 60; | |
| 495 Duration.MINUTES_PER_HOUR = 60; | |
| 496 Duration.HOURS_PER_DAY = 24; | |
| 497 Duration.MICROSECONDS_PER_SECOND = dart.notNull(Duration.MICROSECONDS_PER_MILL
ISECOND) * dart.notNull(Duration.MILLISECONDS_PER_SECOND); | |
| 498 Duration.MICROSECONDS_PER_MINUTE = dart.notNull(Duration.MICROSECONDS_PER_SECO
ND) * dart.notNull(Duration.SECONDS_PER_MINUTE); | |
| 499 Duration.MICROSECONDS_PER_HOUR = dart.notNull(Duration.MICROSECONDS_PER_MINUTE
) * dart.notNull(Duration.MINUTES_PER_HOUR); | |
| 500 Duration.MICROSECONDS_PER_DAY = dart.notNull(Duration.MICROSECONDS_PER_HOUR) *
dart.notNull(Duration.HOURS_PER_DAY); | |
| 501 Duration.MILLISECONDS_PER_MINUTE = dart.notNull(Duration.MILLISECONDS_PER_SECO
ND) * dart.notNull(Duration.SECONDS_PER_MINUTE); | |
| 502 Duration.MILLISECONDS_PER_HOUR = dart.notNull(Duration.MILLISECONDS_PER_MINUTE
) * dart.notNull(Duration.MINUTES_PER_HOUR); | |
| 503 Duration.MILLISECONDS_PER_DAY = dart.notNull(Duration.MILLISECONDS_PER_HOUR) *
dart.notNull(Duration.HOURS_PER_DAY); | |
| 504 Duration.SECONDS_PER_HOUR = dart.notNull(Duration.SECONDS_PER_MINUTE) * dart.n
otNull(Duration.MINUTES_PER_HOUR); | |
| 505 Duration.SECONDS_PER_DAY = dart.notNull(Duration.SECONDS_PER_HOUR) * dart.notN
ull(Duration.HOURS_PER_DAY); | |
| 506 Duration.MINUTES_PER_DAY = dart.notNull(Duration.MINUTES_PER_HOUR) * dart.notN
ull(Duration.HOURS_PER_DAY); | |
| 507 Duration.ZERO = new Duration({seconds: 0}); | |
| 508 let _stringToSafeString = Symbol('_stringToSafeString'); | |
| 509 let _objectToString = Symbol('_objectToString'); | |
| 510 class Error extends Object { | |
| 511 Error() { | |
| 512 } | |
| 513 static safeToString(object) { | |
| 514 if (dart.notNull(dart.is(object, num)) || dart.notNull(typeof object == bo
olean) || dart.notNull(null === object)) { | |
| 515 return object.toString(); | |
| 516 } | |
| 517 if (typeof object == string) { | |
| 518 return _stringToSafeString(object); | |
| 519 } | |
| 520 return _objectToString(object); | |
| 521 } | |
| 522 static [_stringToSafeString](string) { | |
| 523 return _js_helper.jsonEncodeNative(string); | |
| 524 } | |
| 525 static [_objectToString](object) { | |
| 526 return _js_helper.Primitives.objectToString(object); | |
| 527 } | |
| 528 get stackTrace() { | |
| 529 return _js_helper.Primitives.extractStackTrace(this); | |
| 530 } | |
| 531 } | |
| 532 class AssertionError extends Error { | |
| 533 } | |
| 534 class TypeError extends AssertionError { | |
| 535 } | |
| 536 class CastError extends Error { | |
| 537 } | |
| 538 class NullThrownError extends Error { | |
| 539 toString() { | |
| 540 return "Throw of null."; | |
| 541 } | |
| 542 } | |
| 543 let _hasValue = Symbol('_hasValue'); | |
| 544 class ArgumentError extends Error { | |
| 545 ArgumentError(message) { | |
| 546 if (message === void 0) | |
| 547 message = null; | |
| 548 this.message = message; | |
| 549 this.invalidValue = null; | |
| 550 this[_hasValue] = false; | |
| 551 this.name = null; | |
| 552 super.Error(); | |
| 553 } | |
| 554 ArgumentError$value(value, name, message) { | |
| 555 if (name === void 0) | |
| 556 name = null; | |
| 557 if (message === void 0) | |
| 558 message = "Invalid argument"; | |
| 559 this.name = name; | |
| 560 this.message = message; | |
| 561 this.invalidValue = value; | |
| 562 this[_hasValue] = true; | |
| 563 super.Error(); | |
| 564 } | |
| 565 ArgumentError$notNull(name) { | |
| 566 if (name === void 0) | |
| 567 name = null; | |
| 568 this.ArgumentError$value(null, name, "Must not be null"); | |
| 569 } | |
| 570 toString() { | |
| 571 if (!dart.notNull(this[_hasValue])) { | |
| 572 let result = "Invalid arguments(s)"; | |
| 573 if (this.message !== null) { | |
| 574 result = `${result}: ${this.message}`; | |
| 575 } | |
| 576 return result; | |
| 577 } | |
| 578 let nameString = ""; | |
| 579 if (this.name !== null) { | |
| 580 nameString = ` (${this.name})`; | |
| 581 } | |
| 582 return `${this.message}${nameString}: ${Error.safeToString(this.invalidVal
ue)}`; | |
| 583 } | |
| 584 } | |
| 585 dart.defineNamedConstructor(ArgumentError, 'value'); | |
| 586 dart.defineNamedConstructor(ArgumentError, 'notNull'); | |
| 587 class RangeError extends ArgumentError { | |
| 588 RangeError(message) { | |
| 589 this.start = null; | |
| 590 this.end = null; | |
| 591 super.ArgumentError(message); | |
| 592 } | |
| 593 RangeError$value(value, name, message) { | |
| 594 if (name === void 0) | |
| 595 name = null; | |
| 596 if (message === void 0) | |
| 597 message = null; | |
| 598 this.start = null; | |
| 599 this.end = null; | |
| 600 super.ArgumentError$value(value, name, message !== null ? message : "Value
not in range"); | |
| 601 } | |
| 602 RangeError$range(invalidValue, minValue, maxValue, name, message) { | |
| 603 if (name === void 0) | |
| 604 name = null; | |
| 605 if (message === void 0) | |
| 606 message = null; | |
| 607 this.start = minValue; | |
| 608 this.end = maxValue; | |
| 609 super.ArgumentError$value(invalidValue, name, message !== null ? message :
"Invalid value"); | |
| 610 } | |
| 611 RangeError$index(index, indexable, name, message, length) { | |
| 612 return new IndexError(index, indexable, name, message, length); | |
| 613 } | |
| 614 static checkValueInInterval(value, minValue, maxValue, name, message) { | |
| 615 if (name === void 0) | |
| 616 name = null; | |
| 617 if (message === void 0) | |
| 618 message = null; | |
| 619 if (dart.notNull(value) < dart.notNull(minValue) || dart.notNull(value) >
dart.notNull(maxValue)) { | |
| 620 throw new RangeError.range(value, minValue, maxValue, name, message); | |
| 621 } | |
| 622 } | |
| 623 static checkValidIndex(index, indexable, name, length, message) { | |
| 624 if (name === void 0) | |
| 625 name = null; | |
| 626 if (length === void 0) | |
| 627 length = null; | |
| 628 if (message === void 0) | |
| 629 message = null; | |
| 630 if (length === null) | |
| 631 length = dart.as(dart.dload(indexable, 'length'), int); | |
| 632 if (dart.notNull(index) < 0 || dart.notNull(index) >= dart.notNull(length)
) { | |
| 633 if (name === null) | |
| 634 name = "index"; | |
| 635 throw new RangeError.index(index, indexable, name, message, length); | |
| 636 } | |
| 637 } | |
| 638 static checkValidRange(start, end, length, startName, endName, message) { | |
| 639 if (startName === void 0) | |
| 640 startName = null; | |
| 641 if (endName === void 0) | |
| 642 endName = null; | |
| 643 if (message === void 0) | |
| 644 message = null; | |
| 645 if (dart.notNull(start) < 0 || dart.notNull(start) > dart.notNull(length))
{ | |
| 646 if (startName === null) | |
| 647 startName = "start"; | |
| 648 throw new RangeError.range(start, 0, length, startName, message); | |
| 649 } | |
| 650 if (end !== null && (dart.notNull(end) < dart.notNull(start) || dart.notNu
ll(end) > dart.notNull(length))) { | |
| 651 if (endName === null) | |
| 652 endName = "end"; | |
| 653 throw new RangeError.range(end, start, length, endName, message); | |
| 654 } | |
| 655 } | |
| 656 static checkNotNegative(value, name, message) { | |
| 657 if (name === void 0) | |
| 658 name = null; | |
| 659 if (message === void 0) | |
| 660 message = null; | |
| 661 if (dart.notNull(value) < 0) | |
| 662 throw new RangeError.range(value, 0, null, name, message); | |
| 663 } | |
| 664 toString() { | |
| 665 if (!dart.notNull(this[_hasValue])) | |
| 666 return `RangeError: ${this.message}`; | |
| 667 let value = Error.safeToString(this.invalidValue); | |
| 668 let explanation = ""; | |
| 669 if (this.start === null) { | |
| 670 if (this.end !== null) { | |
| 671 explanation = `: Not less than or equal to ${this.end}`; | |
| 672 } | |
| 673 } else if (this.end === null) { | |
| 674 explanation = `: Not greater than or equal to ${this.start}`; | |
| 675 } else if (dart.notNull(this.end) > dart.notNull(this.start)) { | |
| 676 explanation = `: Not in range ${this.start}..${this.end}, inclusive.`; | |
| 677 } else if (dart.notNull(this.end) < dart.notNull(this.start)) { | |
| 678 explanation = ": Valid value range is empty"; | |
| 679 } else { | |
| 680 explanation = `: Only valid value is ${this.start}`; | |
| 681 } | |
| 682 return `RangeError: ${this.message} (${value})${explanation}`; | |
| 683 } | |
| 684 } | |
| 685 dart.defineNamedConstructor(RangeError, 'value'); | |
| 686 dart.defineNamedConstructor(RangeError, 'range'); | |
| 687 dart.defineNamedConstructor(RangeError, 'index'); | |
| 688 class IndexError extends ArgumentError { | |
| 689 IndexError(invalidValue, indexable, name, message, length) { | |
| 690 if (name === void 0) | |
| 691 name = null; | |
| 692 if (message === void 0) | |
| 693 message = null; | |
| 694 if (length === void 0) | |
| 695 length = null; | |
| 696 this.indexable = indexable; | |
| 697 this.length = dart.as(length !== null ? length : dart.dload(indexable, 'le
ngth'), int); | |
| 698 super.ArgumentError$value(invalidValue, name, message !== null ? message :
"Index out of range"); | |
| 699 } | |
| 700 get start() { | |
| 701 return 0; | |
| 702 } | |
| 703 get end() { | |
| 704 return dart.notNull(this.length) - 1; | |
| 705 } | |
| 706 toString() { | |
| 707 dart.assert(this[_hasValue]); | |
| 708 let target = Error.safeToString(this.indexable); | |
| 709 let explanation = `index should be less than ${this.length}`; | |
| 710 if (dart.dbinary(this.invalidValue, '<', 0)) { | |
| 711 explanation = "index must not be negative"; | |
| 712 } | |
| 713 return `RangeError: ${this.message} (${target}[${this.invalidValue}]): ${e
xplanation}`; | |
| 714 } | |
| 715 } | |
| 716 class FallThroughError extends Error { | |
| 717 FallThroughError() { | |
| 718 super.Error(); | |
| 719 } | |
| 720 } | |
| 721 let _className = Symbol('_className'); | |
| 722 class AbstractClassInstantiationError extends Error { | |
| 723 AbstractClassInstantiationError($_className) { | |
| 724 this[_className] = $_className; | |
| 725 super.Error(); | |
| 726 } | |
| 727 toString() { | |
| 728 return `Cannot instantiate abstract class: '${this[_className]}'`; | |
| 729 } | |
| 730 } | |
| 731 let _receiver = Symbol('_receiver'); | |
| 732 let _memberName = Symbol('_memberName'); | |
| 733 let _arguments = Symbol('_arguments'); | |
| 734 let _namedArguments = Symbol('_namedArguments'); | |
| 735 let _existingArgumentNames = Symbol('_existingArgumentNames'); | |
| 736 class NoSuchMethodError extends Error { | |
| 737 NoSuchMethodError(receiver, memberName, positionalArguments, namedArguments,
existingArgumentNames) { | |
| 738 if (existingArgumentNames === void 0) | |
| 739 existingArgumentNames = null; | |
| 740 this[_receiver] = receiver; | |
| 741 this[_memberName] = memberName; | |
| 742 this[_arguments] = positionalArguments; | |
| 743 this[_namedArguments] = namedArguments; | |
| 744 this[_existingArgumentNames] = existingArgumentNames; | |
| 745 super.Error(); | |
| 746 } | |
| 747 toString() { | |
| 748 let sb = new StringBuffer(); | |
| 749 let i = 0; | |
| 750 if (this[_arguments] !== null) { | |
| 751 for (; dart.notNull(i) < dart.notNull(this[_arguments].length); i = dart
.notNull(i) + 1) { | |
| 752 if (dart.notNull(i) > 0) { | |
| 753 sb.write(", "); | |
| 754 } | |
| 755 sb.write(Error.safeToString(this[_arguments].get(i))); | |
| 756 } | |
| 757 } | |
| 758 if (this[_namedArguments] !== null) { | |
| 759 this[_namedArguments].forEach(((key, value) => { | |
| 760 if (dart.notNull(i) > 0) { | |
| 761 sb.write(", "); | |
| 762 } | |
| 763 sb.write(_symbolToString(key)); | |
| 764 sb.write(": "); | |
| 765 sb.write(Error.safeToString(value)); | |
| 766 i = dart.notNull(i) + 1; | |
| 767 }).bind(this)); | |
| 768 } | |
| 769 if (this[_existingArgumentNames] === null) { | |
| 770 return `NoSuchMethodError : method not found: '${this[_memberName]}'\n`
+ `Receiver: ${Error.safeToString(this[_receiver])}\n` + `Arguments: [${sb}]`; | |
| 771 } else { | |
| 772 let actualParameters = sb.toString(); | |
| 773 sb = new StringBuffer(); | |
| 774 for (let i = 0; dart.notNull(i) < dart.notNull(this[_existingArgumentNam
es].length); i = dart.notNull(i) + 1) { | |
| 775 if (dart.notNull(i) > 0) { | |
| 776 sb.write(", "); | |
| 777 } | |
| 778 sb.write(this[_existingArgumentNames].get(i)); | |
| 779 } | |
| 780 let formalParameters = sb.toString(); | |
| 781 return "NoSuchMethodError: incorrect number of arguments passed to " + `
method named '${this[_memberName]}'\n` + `Receiver: ${Error.safeToString(this[_r
eceiver])}\n` + `Tried calling: ${this[_memberName]}(${actualParameters})\n` + `
Found: ${this[_memberName]}(${formalParameters})`; | |
| 782 } | |
| 783 } | |
| 784 } | |
| 785 class UnsupportedError extends Error { | |
| 786 UnsupportedError(message) { | |
| 787 this.message = message; | |
| 788 super.Error(); | |
| 789 } | |
| 790 toString() { | |
| 791 return `Unsupported operation: ${this.message}`; | |
| 792 } | |
| 793 } | |
| 794 class UnimplementedError extends Error { | |
| 795 UnimplementedError(message) { | |
| 796 if (message === void 0) | |
| 797 message = null; | |
| 798 this.message = message; | |
| 799 super.Error(); | |
| 800 } | |
| 801 toString() { | |
| 802 return this.message !== null ? `UnimplementedError: ${this.message}` : "Un
implementedError"; | |
| 803 } | |
| 804 } | |
| 805 class StateError extends Error { | |
| 806 StateError(message) { | |
| 807 this.message = message; | |
| 808 super.Error(); | |
| 809 } | |
| 810 toString() { | |
| 811 return `Bad state: ${this.message}`; | |
| 812 } | |
| 813 } | |
| 814 class ConcurrentModificationError extends Error { | |
| 815 ConcurrentModificationError(modifiedObject) { | |
| 816 if (modifiedObject === void 0) | |
| 817 modifiedObject = null; | |
| 818 this.modifiedObject = modifiedObject; | |
| 819 super.Error(); | |
| 820 } | |
| 821 toString() { | |
| 822 if (this.modifiedObject === null) { | |
| 823 return "Concurrent modification during iteration."; | |
| 824 } | |
| 825 return "Concurrent modification during iteration: " + `${Error.safeToStrin
g(this.modifiedObject)}.`; | |
| 826 } | |
| 827 } | |
| 828 class OutOfMemoryError extends Object { | |
| 829 OutOfMemoryError() { | |
| 830 } | |
| 831 toString() { | |
| 832 return "Out of Memory"; | |
| 833 } | |
| 834 get stackTrace() { | |
| 835 return null; | |
| 836 } | |
| 837 } | |
| 838 class StackOverflowError extends Object { | |
| 839 StackOverflowError() { | |
| 840 } | |
| 841 toString() { | |
| 842 return "Stack Overflow"; | |
| 843 } | |
| 844 get stackTrace() { | |
| 845 return null; | |
| 846 } | |
| 847 } | |
| 848 class CyclicInitializationError extends Error { | |
| 849 CyclicInitializationError(variableName) { | |
| 850 if (variableName === void 0) | |
| 851 variableName = null; | |
| 852 this.variableName = variableName; | |
| 853 super.Error(); | |
| 854 } | |
| 855 toString() { | |
| 856 return this.variableName === null ? "Reading static variable during its in
itialization" : `Reading static variable '${this.variableName}' during its initi
alization`; | |
| 857 } | |
| 858 } | |
| 859 class Exception extends Object { | |
| 860 Exception(message) { | |
| 861 if (message === void 0) | |
| 862 message = null; | |
| 863 return new _ExceptionImplementation(message); | |
| 864 } | |
| 865 } | |
| 866 class _ExceptionImplementation extends Object { | |
| 867 _ExceptionImplementation(message) { | |
| 868 if (message === void 0) | |
| 869 message = null; | |
| 870 this.message = message; | |
| 871 } | |
| 872 toString() { | |
| 873 if (this.message === null) | |
| 874 return "Exception"; | |
| 875 return `Exception: ${this.message}`; | |
| 876 } | |
| 877 } | |
| 878 class FormatException extends Object { | |
| 879 FormatException(message, source, offset) { | |
| 880 if (message === void 0) | |
| 881 message = ""; | |
| 882 if (source === void 0) | |
| 883 source = null; | |
| 884 if (offset === void 0) | |
| 885 offset = -1; | |
| 886 this.message = message; | |
| 887 this.source = source; | |
| 888 this.offset = offset; | |
| 889 } | |
| 890 toString() { | |
| 891 let report = "FormatException"; | |
| 892 if (dart.notNull(this.message !== null) && dart.notNull(!dart.equals("", t
his.message))) { | |
| 893 report = `${report}: ${this.message}`; | |
| 894 } | |
| 895 let offset = this.offset; | |
| 896 if (!(typeof this.source == string)) { | |
| 897 if (offset !== -1) { | |
| 898 report = ` (at offset ${offset})`; | |
| 899 } | |
| 900 return report; | |
| 901 } | |
| 902 if (offset !== -1 && (dart.notNull(offset) < 0 || offset['>'](dart.dload(t
his.source, 'length')))) { | |
| 903 offset = -1; | |
| 904 } | |
| 905 if (offset === -1) { | |
| 906 let source = dart.as(this.source, String); | |
| 907 if (dart.notNull(source.length) > 78) { | |
| 908 source = String['+'](source.substring(0, 75), "..."); | |
| 909 } | |
| 910 return `${report}\n${source}`; | |
| 911 } | |
| 912 let lineNum = 1; | |
| 913 let lineStart = 0; | |
| 914 let lastWasCR = null; | |
| 915 for (let i = 0; dart.notNull(i) < dart.notNull(offset); i = dart.notNull(i
) + 1) { | |
| 916 let char = dart.as(dart.dinvoke(this.source, 'codeUnitAt', i), int); | |
| 917 if (char === 10) { | |
| 918 if (lineStart !== i || !dart.notNull(lastWasCR)) { | |
| 919 lineNum = dart.notNull(lineNum) + 1; | |
| 920 } | |
| 921 lineStart = dart.notNull(i) + 1; | |
| 922 lastWasCR = false; | |
| 923 } else if (char === 13) { | |
| 924 lineNum = dart.notNull(lineNum) + 1; | |
| 925 lineStart = dart.notNull(i) + 1; | |
| 926 lastWasCR = true; | |
| 927 } | |
| 928 } | |
| 929 if (dart.notNull(lineNum) > 1) { | |
| 930 report = ` (at line ${lineNum}, character ${dart.notNull(offset) - dart.
notNull(lineStart) + 1})\n`; | |
| 931 } else { | |
| 932 report = ` (at character ${dart.notNull(offset) + 1})\n`; | |
| 933 } | |
| 934 let lineEnd = dart.as(dart.dload(this.source, 'length'), int); | |
| 935 for (let i = offset; i['<'](dart.dload(this.source, 'length')); i = dart.n
otNull(i) + 1) { | |
| 936 let char = dart.as(dart.dinvoke(this.source, 'codeUnitAt', i), int); | |
| 937 if (char === 10 || char === 13) { | |
| 938 lineEnd = i; | |
| 939 break; | |
| 940 } | |
| 941 } | |
| 942 let length = dart.notNull(lineEnd) - dart.notNull(lineStart); | |
| 943 let start = lineStart; | |
| 944 let end = lineEnd; | |
| 945 let prefix = ""; | |
| 946 let postfix = ""; | |
| 947 if (dart.notNull(length) > 78) { | |
| 948 let index = dart.notNull(offset) - dart.notNull(lineStart); | |
| 949 if (dart.notNull(index) < 75) { | |
| 950 end = dart.notNull(start) + 75; | |
| 951 postfix = "..."; | |
| 952 } else if (dart.notNull(end) - dart.notNull(offset) < 75) { | |
| 953 start = dart.notNull(end) - 75; | |
| 954 prefix = "..."; | |
| 955 } else { | |
| 956 start = dart.notNull(offset) - 36; | |
| 957 end = dart.notNull(offset) + 36; | |
| 958 prefix = postfix = "..."; | |
| 959 } | |
| 960 } | |
| 961 let slice = dart.as(dart.dinvoke(this.source, 'substring', start, end), St
ring); | |
| 962 let markOffset = dart.notNull(offset) - dart.notNull(start) + dart.notNull
(prefix.length); | |
| 963 return `${report}${prefix}${slice}${postfix}\n${String['*'](" ", markOffse
t)}^\n`; | |
| 964 } | |
| 965 } | |
| 966 class IntegerDivisionByZeroException extends Object { | |
| 967 IntegerDivisionByZeroException() { | |
| 968 } | |
| 969 toString() { | |
| 970 return "IntegerDivisionByZeroException"; | |
| 971 } | |
| 972 } | |
| 973 let _getKey = Symbol('_getKey'); | |
| 974 let Expando$ = dart.generic(function(T) { | |
| 975 class Expando extends Object { | |
| 976 Expando(name) { | |
| 977 if (name === void 0) | |
| 978 name = null; | |
| 979 this.name = name; | |
| 980 } | |
| 981 toString() { | |
| 982 return `Expando:${this.name}`; | |
| 983 } | |
| 984 get(object) { | |
| 985 let values = _js_helper.Primitives.getProperty(object, Expando._EXPANDO_
PROPERTY_NAME); | |
| 986 return dart.as(values === null ? null : _js_helper.Primitives.getPropert
y(values, this[_getKey]()), T); | |
| 987 } | |
| 988 set(object, value) { | |
| 989 let values = _js_helper.Primitives.getProperty(object, Expando._EXPANDO_
PROPERTY_NAME); | |
| 990 if (values === null) { | |
| 991 values = new Object(); | |
| 992 _js_helper.Primitives.setProperty(object, Expando._EXPANDO_PROPERTY_NA
ME, values); | |
| 993 } | |
| 994 _js_helper.Primitives.setProperty(values, this[_getKey](), value); | |
| 995 } | |
| 996 [_getKey]() { | |
| 997 let key = dart.as(_js_helper.Primitives.getProperty(this, Expando._KEY_P
ROPERTY_NAME), String); | |
| 998 if (key === null) { | |
| 999 key = `expando$key$${(($tmp) => _keyCount = dart.notNull($tmp) + 1, $t
mp)(_keyCount)}`; | |
| 1000 _js_helper.Primitives.setProperty(this, Expando._KEY_PROPERTY_NAME, ke
y); | |
| 1001 } | |
| 1002 return key; | |
| 1003 } | |
| 1004 } | |
| 1005 Expando._KEY_PROPERTY_NAME = 'expando$key'; | |
| 1006 Expando._EXPANDO_PROPERTY_NAME = 'expando$values'; | |
| 1007 Expando._keyCount = 0; | |
| 1008 return Expando; | |
| 1009 }); | |
| 1010 let Expando = Expando$(dart.dynamic); | |
| 1011 let _toMangledNames = Symbol('_toMangledNames'); | |
| 1012 class Function extends Object { | |
| 1013 static apply(function, positionalArguments, namedArguments) { | |
| 1014 if (namedArguments === void 0) | |
| 1015 namedArguments = null; | |
| 1016 return _js_helper.Primitives.applyFunction(function, positionalArguments,
namedArguments === null ? null : _toMangledNames(namedArguments)); | |
| 1017 } | |
| 1018 static [_toMangledNames](namedArguments) { | |
| 1019 let result = dart.as(dart.map(), Map$(String, dynamic)); | |
| 1020 namedArguments.forEach(dart.closureWrap((symbol, value) => { | |
| 1021 result.set(_symbolToString(dart.as(symbol, Symbol)), value); | |
| 1022 }, "(Symbol, dynamic) → void")); | |
| 1023 return result; | |
| 1024 } | |
| 1025 } | |
| 1026 // Function identical: (Object, Object) → bool | |
| 1027 function identical(a, b) { | |
| 1028 return _js_helper.Primitives.identicalImplementation(a, b); | |
| 1029 } | |
| 1030 // Function identityHashCode: (Object) → int | |
| 1031 function identityHashCode(object) { | |
| 1032 return _js_helper.objectHashCode(object); | |
| 1033 } | |
| 1034 class int extends num { | |
| 1035 int$fromEnvironment(name, opt$) { | |
| 1036 let defaultValue = opt$.defaultValue === void 0 ? null : opt$.defaultValue
; | |
| 1037 throw new UnsupportedError('int.fromEnvironment can only be used as a cons
t constructor'); | |
| 1038 } | |
| 1039 static parse(source, opt$) { | |
| 1040 let radix = opt$.radix === void 0 ? null : opt$.radix; | |
| 1041 let onError = opt$.onError === void 0 ? null : opt$.onError; | |
| 1042 return _js_helper.Primitives.parseInt(source, radix, onError); | |
| 1043 } | |
| 1044 } | |
| 1045 dart.defineNamedConstructor(int, 'fromEnvironment'); | |
| 1046 class Invocation extends Object { | |
| 1047 get isAccessor() { | |
| 1048 return dart.notNull(this.isGetter) || dart.notNull(this.isSetter); | |
| 1049 } | |
| 1050 } | |
| 1051 let Iterable$ = dart.generic(function(E) { | |
| 1052 class Iterable extends Object { | |
| 1053 Iterable() { | |
| 1054 } | |
| 1055 Iterable$generate(count, generator) { | |
| 1056 if (generator === void 0) | |
| 1057 generator = null; | |
| 1058 if (dart.notNull(count) <= 0) | |
| 1059 return new _internal.EmptyIterable(); | |
| 1060 return new _GeneratorIterable(count, generator); | |
| 1061 } | |
| 1062 join(separator) { | |
| 1063 if (separator === void 0) | |
| 1064 separator = ""; | |
| 1065 let buffer = new StringBuffer(); | |
| 1066 buffer.writeAll(this, separator); | |
| 1067 return buffer.toString(); | |
| 1068 } | |
| 1069 [Symbol.iterator]() { | |
| 1070 var iterator = this.iterator; | |
| 1071 return { | |
| 1072 next() { | |
| 1073 var done = iterator.moveNext(); | |
| 1074 return {done: done, current: done ? void 0 : iterator.current}; | |
| 1075 } | |
| 1076 }; | |
| 1077 } | |
| 1078 } | |
| 1079 dart.defineNamedConstructor(Iterable, 'generate'); | |
| 1080 return Iterable; | |
| 1081 }); | |
| 1082 let Iterable = Iterable$(dart.dynamic); | |
| 1083 let _end = Symbol('_end'); | |
| 1084 let _start = Symbol('_start'); | |
| 1085 let _generator = Symbol('_generator'); | |
| 1086 let _id = Symbol('_id'); | |
| 1087 let _GeneratorIterable$ = dart.generic(function(E) { | |
| 1088 class _GeneratorIterable extends collection.IterableBase$(E) { | |
| 1089 _GeneratorIterable($_end, generator) { | |
| 1090 this[_end] = $_end; | |
| 1091 this[_start] = 0; | |
| 1092 this[_generator] = dart.as(generator !== null ? generator : _id, _Genera
tor); | |
| 1093 super.IterableBase(); | |
| 1094 } | |
| 1095 _GeneratorIterable$slice($_start, $_end, $_generator) { | |
| 1096 this[_start] = $_start; | |
| 1097 this[_end] = $_end; | |
| 1098 this[_generator] = $_generator; | |
| 1099 super.IterableBase(); | |
| 1100 } | |
| 1101 get iterator() { | |
| 1102 return new _GeneratorIterator(this[_start], this[_end], this[_generator]
); | |
| 1103 } | |
| 1104 get length() { | |
| 1105 return dart.notNull(this[_end]) - dart.notNull(this[_start]); | |
| 1106 } | |
| 1107 skip(count) { | |
| 1108 RangeError.checkNotNegative(count, "count"); | |
| 1109 if (count === 0) | |
| 1110 return this; | |
| 1111 let newStart = dart.notNull(this[_start]) + dart.notNull(count); | |
| 1112 if (dart.notNull(newStart) >= dart.notNull(this[_end])) | |
| 1113 return new _internal.EmptyIterable(); | |
| 1114 return new _GeneratorIterable.slice(newStart, this[_end], this[_generato
r]); | |
| 1115 } | |
| 1116 take(count) { | |
| 1117 RangeError.checkNotNegative(count, "count"); | |
| 1118 if (count === 0) | |
| 1119 return new _internal.EmptyIterable(); | |
| 1120 let newEnd = dart.notNull(this[_start]) + dart.notNull(count); | |
| 1121 if (dart.notNull(newEnd) >= dart.notNull(this[_end])) | |
| 1122 return this; | |
| 1123 return new _GeneratorIterable.slice(this[_start], newEnd, this[_generato
r]); | |
| 1124 } | |
| 1125 static [_id](n) { | |
| 1126 return n; | |
| 1127 } | |
| 1128 } | |
| 1129 dart.defineNamedConstructor(_GeneratorIterable, 'slice'); | |
| 1130 return _GeneratorIterable; | |
| 1131 }); | |
| 1132 dart.defineLazyClassGeneric(exports, '_GeneratorIterable', {get: _GeneratorIte
rable$}); | |
| 1133 let _index = Symbol('_index'); | |
| 1134 let _current = Symbol('_current'); | |
| 1135 let _GeneratorIterator$ = dart.generic(function(E) { | |
| 1136 class _GeneratorIterator extends Object { | |
| 1137 _GeneratorIterator($_index, $_end, $_generator) { | |
| 1138 this[_index] = $_index; | |
| 1139 this[_end] = $_end; | |
| 1140 this[_generator] = $_generator; | |
| 1141 this[_current] = null; | |
| 1142 } | |
| 1143 moveNext() { | |
| 1144 if (dart.notNull(this[_index]) < dart.notNull(this[_end])) { | |
| 1145 this[_current] = this[_generator](this[_index]); | |
| 1146 this[_index] = dart.notNull(this[_index]) + 1; | |
| 1147 return true; | |
| 1148 } else { | |
| 1149 this[_current] = null; | |
| 1150 return false; | |
| 1151 } | |
| 1152 } | |
| 1153 get current() { | |
| 1154 return this[_current]; | |
| 1155 } | |
| 1156 } | |
| 1157 return _GeneratorIterator; | |
| 1158 }); | |
| 1159 let _GeneratorIterator = _GeneratorIterator$(dart.dynamic); | |
| 1160 let BidirectionalIterator$ = dart.generic(function(E) { | |
| 1161 class BidirectionalIterator extends Object { | |
| 1162 } | |
| 1163 return BidirectionalIterator; | |
| 1164 }); | |
| 1165 let BidirectionalIterator = BidirectionalIterator$(dart.dynamic); | |
| 1166 let Iterator$ = dart.generic(function(E) { | |
| 1167 class Iterator extends Object { | |
| 1168 } | |
| 1169 return Iterator; | |
| 1170 }); | |
| 1171 let Iterator = Iterator$(dart.dynamic); | |
| 1172 let List$ = dart.generic(function(E) { | |
| 1173 class List extends Object { | |
| 1174 List(length) { | |
| 1175 if (length === void 0) | |
| 1176 length = new _ListConstructorSentinel(); | |
| 1177 if (length === new _ListConstructorSentinel()) { | |
| 1178 return new _interceptors.JSArray.emptyGrowable(); | |
| 1179 } | |
| 1180 return new _interceptors.JSArray.fixed(length); | |
| 1181 } | |
| 1182 List$filled(length, fill) { | |
| 1183 let result = new _interceptors.JSArray.fixed(length); | |
| 1184 if (length !== 0 && dart.notNull(fill !== null)) { | |
| 1185 for (let i = 0; dart.notNull(i) < dart.notNull(result.length); i = dar
t.notNull(i) + 1) { | |
| 1186 result.set(i, fill); | |
| 1187 } | |
| 1188 } | |
| 1189 return dart.as(result, List$(E)); | |
| 1190 } | |
| 1191 List$from(elements, opt$) { | |
| 1192 let growable = opt$.growable === void 0 ? true : opt$.growable; | |
| 1193 let list = new List(); | |
| 1194 for (let e of elements) { | |
| 1195 list.add(e); | |
| 1196 } | |
| 1197 if (growable) | |
| 1198 return list; | |
| 1199 return dart.as(_internal.makeListFixedLength(list), List$(E)); | |
| 1200 } | |
| 1201 List$generate(length, generator, opt$) { | |
| 1202 let growable = opt$.growable === void 0 ? true : opt$.growable; | |
| 1203 let result = null; | |
| 1204 if (growable) { | |
| 1205 result = ((_) => { | |
| 1206 _.length = length; | |
| 1207 return _; | |
| 1208 }).bind(this)(new List.from([])); | |
| 1209 } else { | |
| 1210 result = new List(length); | |
| 1211 } | |
| 1212 for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNull
(i) + 1) { | |
| 1213 result.set(i, generator(i)); | |
| 1214 } | |
| 1215 return result; | |
| 1216 } | |
| 1217 } | |
| 1218 dart.defineNamedConstructor(List, 'filled'); | |
| 1219 dart.defineNamedConstructor(List, 'from'); | |
| 1220 dart.defineNamedConstructor(List, 'generate'); | |
| 1221 return List; | |
| 1222 }); | |
| 1223 let List = List$(dart.dynamic); | |
| 1224 let Map$ = dart.generic(function(K, V) { | |
| 1225 class Map extends Object { | |
| 1226 Map() { | |
| 1227 return new collection.LinkedHashMap(); | |
| 1228 } | |
| 1229 Map$from(other) { | |
| 1230 return new collection.LinkedHashMap.from(other); | |
| 1231 } | |
| 1232 Map$identity() { | |
| 1233 return new collection.LinkedHashMap.identity(); | |
| 1234 } | |
| 1235 Map$fromIterable(iterable, opt$) { | |
| 1236 return new collection.LinkedHashMap.fromIterable(iterable, opt$); | |
| 1237 } | |
| 1238 Map$fromIterables(keys, values) { | |
| 1239 return new collection.LinkedHashMap.fromIterables(keys, values); | |
| 1240 } | |
| 1241 } | |
| 1242 dart.defineNamedConstructor(Map, 'from'); | |
| 1243 dart.defineNamedConstructor(Map, 'identity'); | |
| 1244 dart.defineNamedConstructor(Map, 'fromIterable'); | |
| 1245 dart.defineNamedConstructor(Map, 'fromIterables'); | |
| 1246 return Map; | |
| 1247 }); | |
| 1248 let Map = Map$(dart.dynamic, dart.dynamic); | |
| 1249 class Null extends Object { | |
| 1250 Null$_uninstantiable() { | |
| 1251 throw new UnsupportedError('class Null cannot be instantiated'); | |
| 1252 } | |
| 1253 toString() { | |
| 1254 return "null"; | |
| 1255 } | |
| 1256 } | |
| 1257 dart.defineNamedConstructor(Null, '_uninstantiable'); | |
| 1258 class Pattern extends Object { | |
| 1259 } | |
| 1260 // Function print: (Object) → void | |
| 1261 function print(object) { | |
| 1262 let line = `${object}`; | |
| 1263 if (_internal.printToZone === null) { | |
| 1264 _internal.printToConsole(line); | |
| 1265 } else { | |
| 1266 dart.dinvokef(_internal.printToZone, line); | |
| 1267 } | |
| 1268 } | |
| 1269 class Match extends Object { | |
| 1270 } | |
| 1271 class RegExp extends Object { | |
| 1272 RegExp(source, opt$) { | |
| 1273 let multiLine = opt$.multiLine === void 0 ? false : opt$.multiLine; | |
| 1274 let caseSensitive = opt$.caseSensitive === void 0 ? true : opt$.caseSensit
ive; | |
| 1275 return new _js_helper.JSSyntaxRegExp(source, {multiLine: multiLine, caseSe
nsitive: caseSensitive}); | |
| 1276 } | |
| 1277 } | |
| 1278 let Set$ = dart.generic(function(E) { | |
| 1279 class Set extends collection.IterableBase$(E) { | |
| 1280 Set() { | |
| 1281 return new collection.LinkedHashSet(); | |
| 1282 } | |
| 1283 Set$identity() { | |
| 1284 return new collection.LinkedHashSet.identity(); | |
| 1285 } | |
| 1286 Set$from(elements) { | |
| 1287 return new collection.LinkedHashSet.from(elements); | |
| 1288 } | |
| 1289 } | |
| 1290 dart.defineNamedConstructor(Set, 'identity'); | |
| 1291 dart.defineNamedConstructor(Set, 'from'); | |
| 1292 return Set; | |
| 1293 }); | |
| 1294 dart.defineLazyClassGeneric(exports, 'Set', {get: Set$}); | |
| 1295 let Sink$ = dart.generic(function(T) { | |
| 1296 class Sink extends Object { | |
| 1297 } | |
| 1298 return Sink; | |
| 1299 }); | |
| 1300 let Sink = Sink$(dart.dynamic); | |
| 1301 class StackTrace extends Object { | |
| 1302 } | |
| 1303 let _stop = Symbol('_stop'); | |
| 1304 let _initTicker = Symbol('_initTicker'); | |
| 1305 let _now = Symbol('_now'); | |
| 1306 class Stopwatch extends Object { | |
| 1307 get frequency() { | |
| 1308 return _frequency; | |
| 1309 } | |
| 1310 Stopwatch() { | |
| 1311 this[_start] = null; | |
| 1312 this[_stop] = null; | |
| 1313 _initTicker(); | |
| 1314 } | |
| 1315 start() { | |
| 1316 if (this.isRunning) | |
| 1317 return; | |
| 1318 if (this[_start] === null) { | |
| 1319 this[_start] = _now(); | |
| 1320 } else { | |
| 1321 this[_start] = dart.notNull(_now()) - (dart.notNull(this[_stop]) - dart.
notNull(this[_start])); | |
| 1322 this[_stop] = null; | |
| 1323 } | |
| 1324 } | |
| 1325 stop() { | |
| 1326 if (!dart.notNull(this.isRunning)) | |
| 1327 return; | |
| 1328 this[_stop] = _now(); | |
| 1329 } | |
| 1330 reset() { | |
| 1331 if (this[_start] === null) | |
| 1332 return; | |
| 1333 this[_start] = _now(); | |
| 1334 if (this[_stop] !== null) { | |
| 1335 this[_stop] = this[_start]; | |
| 1336 } | |
| 1337 } | |
| 1338 get elapsedTicks() { | |
| 1339 if (this[_start] === null) { | |
| 1340 return 0; | |
| 1341 } | |
| 1342 return this[_stop] === null ? dart.notNull(_now()) - dart.notNull(this[_st
art]) : dart.notNull(this[_stop]) - dart.notNull(this[_start]); | |
| 1343 } | |
| 1344 get elapsed() { | |
| 1345 return new Duration({microseconds: this.elapsedMicroseconds}); | |
| 1346 } | |
| 1347 get elapsedMicroseconds() { | |
| 1348 return (dart.notNull(this.elapsedTicks) * 1000000 / dart.notNull(this.freq
uency)).truncate(); | |
| 1349 } | |
| 1350 get elapsedMilliseconds() { | |
| 1351 return (dart.notNull(this.elapsedTicks) * 1000 / dart.notNull(this.frequen
cy)).truncate(); | |
| 1352 } | |
| 1353 get isRunning() { | |
| 1354 return this[_start] !== null && this[_stop] === null; | |
| 1355 } | |
| 1356 static [_initTicker]() { | |
| 1357 _js_helper.Primitives.initTicker(); | |
| 1358 _frequency = _js_helper.Primitives.timerFrequency; | |
| 1359 } | |
| 1360 static [_now]() { | |
| 1361 return dart.as(dart.dinvoke(_js_helper.Primitives, 'timerTicks'), int); | |
| 1362 } | |
| 1363 } | |
| 1364 Stopwatch._frequency = null; | |
| 1365 let _stringFromIterable = Symbol('_stringFromIterable'); | |
| 1366 class String extends Object { | |
| 1367 String$fromCharCodes(charCodes, start, end) { | |
| 1368 if (start === void 0) | |
| 1369 start = 0; | |
| 1370 if (end === void 0) | |
| 1371 end = null; | |
| 1372 if (!dart.is(charCodes, _interceptors.JSArray)) { | |
| 1373 return _stringFromIterable(charCodes, start, end); | |
| 1374 } | |
| 1375 let list = dart.as(charCodes, List); | |
| 1376 let len = list.length; | |
| 1377 if (dart.notNull(start) < 0 || dart.notNull(start) > dart.notNull(len)) { | |
| 1378 throw new RangeError.range(start, 0, len); | |
| 1379 } | |
| 1380 if (end === null) { | |
| 1381 end = len; | |
| 1382 } else if (dart.notNull(end) < dart.notNull(start) || dart.notNull(end) >
dart.notNull(len)) { | |
| 1383 throw new RangeError.range(end, start, len); | |
| 1384 } | |
| 1385 if (dart.notNull(start) > 0 || dart.notNull(end) < dart.notNull(len)) { | |
| 1386 list = list.sublist(start, end); | |
| 1387 } | |
| 1388 return _js_helper.Primitives.stringFromCharCodes(list); | |
| 1389 } | |
| 1390 String$fromCharCode(charCode) { | |
| 1391 return _js_helper.Primitives.stringFromCharCode(charCode); | |
| 1392 } | |
| 1393 String$fromEnvironment(name, opt$) { | |
| 1394 let defaultValue = opt$.defaultValue === void 0 ? null : opt$.defaultValue
; | |
| 1395 throw new UnsupportedError('String.fromEnvironment can only be used as a c
onst constructor'); | |
| 1396 } | |
| 1397 static [_stringFromIterable](charCodes, start, end) { | |
| 1398 if (dart.notNull(start) < 0) | |
| 1399 throw new RangeError.range(start, 0, charCodes.length); | |
| 1400 if (end !== null && dart.notNull(end) < dart.notNull(start)) { | |
| 1401 throw new RangeError.range(end, start, charCodes.length); | |
| 1402 } | |
| 1403 let it = charCodes.iterator; | |
| 1404 for (let i = 0; dart.notNull(i) < dart.notNull(start); i = dart.notNull(i)
+ 1) { | |
| 1405 if (!dart.notNull(it.moveNext())) { | |
| 1406 throw new RangeError.range(start, 0, i); | |
| 1407 } | |
| 1408 } | |
| 1409 let list = new List.from([]); | |
| 1410 if (end === null) { | |
| 1411 while (it.moveNext()) | |
| 1412 list.add(it.current); | |
| 1413 } else { | |
| 1414 for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNul
l(i) + 1) { | |
| 1415 if (!dart.notNull(it.moveNext())) { | |
| 1416 throw new RangeError.range(end, start, i); | |
| 1417 } | |
| 1418 list.add(it.current); | |
| 1419 } | |
| 1420 } | |
| 1421 return _js_helper.Primitives.stringFromCharCodes(list); | |
| 1422 } | |
| 1423 } | |
| 1424 dart.defineNamedConstructor(String, 'fromCharCodes'); | |
| 1425 dart.defineNamedConstructor(String, 'fromCharCode'); | |
| 1426 dart.defineNamedConstructor(String, 'fromEnvironment'); | |
| 1427 dart.defineLazyClass(exports, { | |
| 1428 get Runes() { | |
| 1429 class Runes extends collection.IterableBase$(int) { | |
| 1430 Runes(string) { | |
| 1431 this.string = string; | |
| 1432 super.IterableBase(); | |
| 1433 } | |
| 1434 get iterator() { | |
| 1435 return new RuneIterator(this.string); | |
| 1436 } | |
| 1437 get last() { | |
| 1438 if (this.string.length === 0) { | |
| 1439 throw new StateError('No elements.'); | |
| 1440 } | |
| 1441 let length = this.string.length; | |
| 1442 let code = this.string.codeUnitAt(dart.notNull(length) - 1); | |
| 1443 if (dart.notNull(_isTrailSurrogate(code)) && dart.notNull(this.string.
length) > 1) { | |
| 1444 let previousCode = this.string.codeUnitAt(dart.notNull(length) - 2); | |
| 1445 if (_isLeadSurrogate(previousCode)) { | |
| 1446 return _combineSurrogatePair(previousCode, code); | |
| 1447 } | |
| 1448 } | |
| 1449 return code; | |
| 1450 } | |
| 1451 } | |
| 1452 return Runes; | |
| 1453 } | |
| 1454 }); | |
| 1455 // Function _isLeadSurrogate: (int) → bool | |
| 1456 function _isLeadSurrogate(code) { | |
| 1457 return (dart.notNull(code) & 64512) === 55296; | |
| 1458 } | |
| 1459 // Function _isTrailSurrogate: (int) → bool | |
| 1460 function _isTrailSurrogate(code) { | |
| 1461 return (dart.notNull(code) & 64512) === 56320; | |
| 1462 } | |
| 1463 // Function _combineSurrogatePair: (int, int) → int | |
| 1464 function _combineSurrogatePair(start, end) { | |
| 1465 return 65536 + ((dart.notNull(start) & 1023) << 10) + (dart.notNull(end) & 1
023); | |
| 1466 } | |
| 1467 let _position = Symbol('_position'); | |
| 1468 let _nextPosition = Symbol('_nextPosition'); | |
| 1469 let _currentCodePoint = Symbol('_currentCodePoint'); | |
| 1470 let _checkSplitSurrogate = Symbol('_checkSplitSurrogate'); | |
| 1471 class RuneIterator extends Object { | |
| 1472 RuneIterator(string) { | |
| 1473 this.string = string; | |
| 1474 this[_position] = 0; | |
| 1475 this[_nextPosition] = 0; | |
| 1476 this[_currentCodePoint] = null; | |
| 1477 } | |
| 1478 RuneIterator$at(string, index) { | |
| 1479 this.string = string; | |
| 1480 this[_position] = index; | |
| 1481 this[_nextPosition] = index; | |
| 1482 this[_currentCodePoint] = null; | |
| 1483 RangeError.checkValueInInterval(index, 0, string.length); | |
| 1484 this[_checkSplitSurrogate](index); | |
| 1485 } | |
| 1486 [_checkSplitSurrogate](index) { | |
| 1487 if (dart.notNull(index) > 0 && dart.notNull(index) < dart.notNull(this.str
ing.length) && dart.notNull(_isLeadSurrogate(this.string.codeUnitAt(dart.notNull
(index) - 1))) && dart.notNull(_isTrailSurrogate(this.string.codeUnitAt(index)))
) { | |
| 1488 throw new ArgumentError(`Index inside surrogate pair: ${index}`); | |
| 1489 } | |
| 1490 } | |
| 1491 get rawIndex() { | |
| 1492 return this[_position] !== this[_nextPosition] ? this[_position] : null; | |
| 1493 } | |
| 1494 set rawIndex(rawIndex) { | |
| 1495 RangeError.checkValidIndex(rawIndex, this.string, "rawIndex"); | |
| 1496 this.reset(rawIndex); | |
| 1497 this.moveNext(); | |
| 1498 } | |
| 1499 reset(rawIndex) { | |
| 1500 if (rawIndex === void 0) | |
| 1501 rawIndex = 0; | |
| 1502 RangeError.checkValueInInterval(rawIndex, 0, this.string.length, "rawIndex
"); | |
| 1503 this[_checkSplitSurrogate](rawIndex); | |
| 1504 this[_position] = this[_nextPosition] = rawIndex; | |
| 1505 this[_currentCodePoint] = null; | |
| 1506 } | |
| 1507 get current() { | |
| 1508 return this[_currentCodePoint]; | |
| 1509 } | |
| 1510 get currentSize() { | |
| 1511 return dart.notNull(this[_nextPosition]) - dart.notNull(this[_position]); | |
| 1512 } | |
| 1513 get currentAsString() { | |
| 1514 if (this[_position] === this[_nextPosition]) | |
| 1515 return null; | |
| 1516 if (dart.notNull(this[_position]) + 1 === this[_nextPosition]) | |
| 1517 return this.string.get(this[_position]); | |
| 1518 return this.string.substring(this[_position], this[_nextPosition]); | |
| 1519 } | |
| 1520 moveNext() { | |
| 1521 this[_position] = this[_nextPosition]; | |
| 1522 if (this[_position] === this.string.length) { | |
| 1523 this[_currentCodePoint] = null; | |
| 1524 return false; | |
| 1525 } | |
| 1526 let codeUnit = this.string.codeUnitAt(this[_position]); | |
| 1527 let nextPosition = dart.notNull(this[_position]) + 1; | |
| 1528 if (dart.notNull(_isLeadSurrogate(codeUnit)) && dart.notNull(nextPosition)
< dart.notNull(this.string.length)) { | |
| 1529 let nextCodeUnit = this.string.codeUnitAt(nextPosition); | |
| 1530 if (_isTrailSurrogate(nextCodeUnit)) { | |
| 1531 this[_nextPosition] = dart.notNull(nextPosition) + 1; | |
| 1532 this[_currentCodePoint] = _combineSurrogatePair(codeUnit, nextCodeUnit
); | |
| 1533 return true; | |
| 1534 } | |
| 1535 } | |
| 1536 this[_nextPosition] = nextPosition; | |
| 1537 this[_currentCodePoint] = codeUnit; | |
| 1538 return true; | |
| 1539 } | |
| 1540 movePrevious() { | |
| 1541 this[_nextPosition] = this[_position]; | |
| 1542 if (this[_position] === 0) { | |
| 1543 this[_currentCodePoint] = null; | |
| 1544 return false; | |
| 1545 } | |
| 1546 let position = dart.notNull(this[_position]) - 1; | |
| 1547 let codeUnit = this.string.codeUnitAt(position); | |
| 1548 if (dart.notNull(_isTrailSurrogate(codeUnit)) && dart.notNull(position) >
0) { | |
| 1549 let prevCodeUnit = this.string.codeUnitAt(dart.notNull(position) - 1); | |
| 1550 if (_isLeadSurrogate(prevCodeUnit)) { | |
| 1551 this[_position] = dart.notNull(position) - 1; | |
| 1552 this[_currentCodePoint] = _combineSurrogatePair(prevCodeUnit, codeUnit
); | |
| 1553 return true; | |
| 1554 } | |
| 1555 } | |
| 1556 this[_position] = position; | |
| 1557 this[_currentCodePoint] = codeUnit; | |
| 1558 return true; | |
| 1559 } | |
| 1560 } | |
| 1561 dart.defineNamedConstructor(RuneIterator, 'at'); | |
| 1562 let _contents = Symbol('_contents'); | |
| 1563 let _writeString = Symbol('_writeString'); | |
| 1564 class StringBuffer extends Object { | |
| 1565 StringBuffer(content) { | |
| 1566 if (content === void 0) | |
| 1567 content = ""; | |
| 1568 this[_contents] = `${content}`; | |
| 1569 } | |
| 1570 get length() { | |
| 1571 return this[_contents].length; | |
| 1572 } | |
| 1573 get isEmpty() { | |
| 1574 return this.length === 0; | |
| 1575 } | |
| 1576 get isNotEmpty() { | |
| 1577 return !dart.notNull(this.isEmpty); | |
| 1578 } | |
| 1579 write(obj) { | |
| 1580 this[_writeString](`${obj}`); | |
| 1581 } | |
| 1582 writeCharCode(charCode) { | |
| 1583 this[_writeString](new String.fromCharCode(charCode)); | |
| 1584 } | |
| 1585 writeAll(objects, separator) { | |
| 1586 if (separator === void 0) | |
| 1587 separator = ""; | |
| 1588 let iterator = objects.iterator; | |
| 1589 if (!dart.notNull(iterator.moveNext())) | |
| 1590 return; | |
| 1591 if (separator.isEmpty) { | |
| 1592 do { | |
| 1593 this.write(iterator.current); | |
| 1594 } while (iterator.moveNext()); | |
| 1595 } else { | |
| 1596 this.write(iterator.current); | |
| 1597 while (iterator.moveNext()) { | |
| 1598 this.write(separator); | |
| 1599 this.write(iterator.current); | |
| 1600 } | |
| 1601 } | |
| 1602 } | |
| 1603 writeln(obj) { | |
| 1604 if (obj === void 0) | |
| 1605 obj = ""; | |
| 1606 this.write(obj); | |
| 1607 this.write("\n"); | |
| 1608 } | |
| 1609 clear() { | |
| 1610 this[_contents] = ""; | |
| 1611 } | |
| 1612 toString() { | |
| 1613 return _js_helper.Primitives.flattenString(this[_contents]); | |
| 1614 } | |
| 1615 [_writeString](str) { | |
| 1616 this[_contents] = _js_helper.Primitives.stringConcatUnchecked(this[_conten
ts], dart.as(str, String)); | |
| 1617 } | |
| 1618 } | |
| 1619 class StringSink extends Object { | |
| 1620 } | |
| 1621 class Symbol extends Object { | |
| 1622 Symbol(name) { | |
| 1623 return new _internal.Symbol(name); | |
| 1624 } | |
| 1625 } | |
| 1626 class Type extends Object { | |
| 1627 } | |
| 1628 let _writeAuthority = Symbol('_writeAuthority'); | |
| 1629 let _userInfo = Symbol('_userInfo'); | |
| 1630 let _host = Symbol('_host'); | |
| 1631 let _port = Symbol('_port'); | |
| 1632 let _defaultPort = Symbol('_defaultPort'); | |
| 1633 let _path = Symbol('_path'); | |
| 1634 let _query = Symbol('_query'); | |
| 1635 let _fragment = Symbol('_fragment'); | |
| 1636 let _fail = Symbol('_fail'); | |
| 1637 let _pathSegments = Symbol('_pathSegments'); | |
| 1638 let _queryParameters = Symbol('_queryParameters'); | |
| 1639 let _makeHttpUri = Symbol('_makeHttpUri'); | |
| 1640 let _isWindows = Symbol('_isWindows'); | |
| 1641 let _checkNonWindowsPathReservedCharacters = Symbol('_checkNonWindowsPathReser
vedCharacters'); | |
| 1642 let _checkWindowsPathReservedCharacters = Symbol('_checkWindowsPathReservedCha
racters'); | |
| 1643 let _checkWindowsDriveLetter = Symbol('_checkWindowsDriveLetter'); | |
| 1644 let _makeFileUri = Symbol('_makeFileUri'); | |
| 1645 let _makeWindowsFileUrl = Symbol('_makeWindowsFileUrl'); | |
| 1646 let _makePort = Symbol('_makePort'); | |
| 1647 let _makeHost = Symbol('_makeHost'); | |
| 1648 let _isRegNameChar = Symbol('_isRegNameChar'); | |
| 1649 let _normalizeRegName = Symbol('_normalizeRegName'); | |
| 1650 let _makeScheme = Symbol('_makeScheme'); | |
| 1651 let _makeUserInfo = Symbol('_makeUserInfo'); | |
| 1652 let _makePath = Symbol('_makePath'); | |
| 1653 let _makeQuery = Symbol('_makeQuery'); | |
| 1654 let _makeFragment = Symbol('_makeFragment'); | |
| 1655 let _stringOrNullLength = Symbol('_stringOrNullLength'); | |
| 1656 let _isHexDigit = Symbol('_isHexDigit'); | |
| 1657 let _hexValue = Symbol('_hexValue'); | |
| 1658 let _normalizeEscape = Symbol('_normalizeEscape'); | |
| 1659 let _isUnreservedChar = Symbol('_isUnreservedChar'); | |
| 1660 let _escapeChar = Symbol('_escapeChar'); | |
| 1661 let _normalize = Symbol('_normalize'); | |
| 1662 let _isSchemeCharacter = Symbol('_isSchemeCharacter'); | |
| 1663 let _isGeneralDelimiter = Symbol('_isGeneralDelimiter'); | |
| 1664 let _merge = Symbol('_merge'); | |
| 1665 let _hasDotSegments = Symbol('_hasDotSegments'); | |
| 1666 let _removeDotSegments = Symbol('_removeDotSegments'); | |
| 1667 let _toWindowsFilePath = Symbol('_toWindowsFilePath'); | |
| 1668 let _toFilePath = Symbol('_toFilePath'); | |
| 1669 let _isPathAbsolute = Symbol('_isPathAbsolute'); | |
| 1670 let _addIfNonEmpty = Symbol('_addIfNonEmpty'); | |
| 1671 let _uriEncode = Symbol('_uriEncode'); | |
| 1672 let _hexCharPairToByte = Symbol('_hexCharPairToByte'); | |
| 1673 let _uriDecode = Symbol('_uriDecode'); | |
| 1674 let _isAlphabeticCharacter = Symbol('_isAlphabeticCharacter'); | |
| 1675 class Uri extends Object { | |
| 1676 get authority() { | |
| 1677 if (!dart.notNull(this.hasAuthority)) | |
| 1678 return ""; | |
| 1679 let sb = new StringBuffer(); | |
| 1680 this[_writeAuthority](sb); | |
| 1681 return sb.toString(); | |
| 1682 } | |
| 1683 get userInfo() { | |
| 1684 return this[_userInfo]; | |
| 1685 } | |
| 1686 get host() { | |
| 1687 if (this[_host] === null) | |
| 1688 return ""; | |
| 1689 if (this[_host].startsWith('[')) { | |
| 1690 return this[_host].substring(1, dart.notNull(this[_host].length) - 1); | |
| 1691 } | |
| 1692 return this[_host]; | |
| 1693 } | |
| 1694 get port() { | |
| 1695 if (this[_port] === null) | |
| 1696 return _defaultPort(this.scheme); | |
| 1697 return this[_port]; | |
| 1698 } | |
| 1699 static [_defaultPort](scheme) { | |
| 1700 if (dart.equals(scheme, "http")) | |
| 1701 return 80; | |
| 1702 if (dart.equals(scheme, "https")) | |
| 1703 return 443; | |
| 1704 return 0; | |
| 1705 } | |
| 1706 get path() { | |
| 1707 return this[_path]; | |
| 1708 } | |
| 1709 get query() { | |
| 1710 return this[_query] === null ? "" : this[_query]; | |
| 1711 } | |
| 1712 get fragment() { | |
| 1713 return this[_fragment] === null ? "" : this[_fragment]; | |
| 1714 } | |
| 1715 static parse(uri) { | |
| 1716 // Function isRegName: (int) → bool | |
| 1717 function isRegName(ch) { | |
| 1718 return dart.notNull(ch) < 128 && dart.notNull(!dart.equals(dart.dbinary(
Uri._regNameTable.get(dart.notNull(ch) >> 4), '&', 1 << (dart.notNull(ch) & 15))
, 0)); | |
| 1719 } | |
| 1720 let EOI = -1; | |
| 1721 let scheme = ""; | |
| 1722 let userinfo = ""; | |
| 1723 let host = null; | |
| 1724 let port = null; | |
| 1725 let path = null; | |
| 1726 let query = null; | |
| 1727 let fragment = null; | |
| 1728 let index = 0; | |
| 1729 let pathStart = 0; | |
| 1730 let char = EOI; | |
| 1731 // Function parseAuth: () → void | |
| 1732 function parseAuth() { | |
| 1733 if (index === uri.length) { | |
| 1734 char = EOI; | |
| 1735 return; | |
| 1736 } | |
| 1737 let authStart = index; | |
| 1738 let lastColon = -1; | |
| 1739 let lastAt = -1; | |
| 1740 char = uri.codeUnitAt(index); | |
| 1741 while (dart.notNull(index) < dart.notNull(uri.length)) { | |
| 1742 char = uri.codeUnitAt(index); | |
| 1743 if (char === Uri._SLASH || char === Uri._QUESTION || char === Uri._NUM
BER_SIGN) { | |
| 1744 break; | |
| 1745 } | |
| 1746 if (char === Uri._AT_SIGN) { | |
| 1747 lastAt = index; | |
| 1748 lastColon = -1; | |
| 1749 } else if (char === Uri._COLON) { | |
| 1750 lastColon = index; | |
| 1751 } else if (char === Uri._LEFT_BRACKET) { | |
| 1752 lastColon = -1; | |
| 1753 let endBracket = uri.indexOf(']', dart.notNull(index) + 1); | |
| 1754 if (endBracket === -1) { | |
| 1755 index = uri.length; | |
| 1756 char = EOI; | |
| 1757 break; | |
| 1758 } else { | |
| 1759 index = endBracket; | |
| 1760 } | |
| 1761 } | |
| 1762 index = dart.notNull(index) + 1; | |
| 1763 char = EOI; | |
| 1764 } | |
| 1765 let hostStart = authStart; | |
| 1766 let hostEnd = index; | |
| 1767 if (dart.notNull(lastAt) >= 0) { | |
| 1768 userinfo = _makeUserInfo(uri, authStart, lastAt); | |
| 1769 hostStart = dart.notNull(lastAt) + 1; | |
| 1770 } | |
| 1771 if (dart.notNull(lastColon) >= 0) { | |
| 1772 let portNumber = null; | |
| 1773 if (dart.notNull(lastColon) + 1 < dart.notNull(index)) { | |
| 1774 portNumber = 0; | |
| 1775 for (let i = dart.notNull(lastColon) + 1; dart.notNull(i) < dart.not
Null(index); i = dart.notNull(i) + 1) { | |
| 1776 let digit = uri.codeUnitAt(i); | |
| 1777 if (dart.notNull(Uri._ZERO) > dart.notNull(digit) || dart.notNull(
Uri._NINE) < dart.notNull(digit)) { | |
| 1778 _fail(uri, i, "Invalid port number"); | |
| 1779 } | |
| 1780 portNumber = dart.notNull(portNumber) * 10 + (dart.notNull(digit)
- dart.notNull(Uri._ZERO)); | |
| 1781 } | |
| 1782 } | |
| 1783 port = _makePort(portNumber, scheme); | |
| 1784 hostEnd = lastColon; | |
| 1785 } | |
| 1786 host = _makeHost(uri, hostStart, hostEnd, true); | |
| 1787 if (dart.notNull(index) < dart.notNull(uri.length)) { | |
| 1788 char = uri.codeUnitAt(index); | |
| 1789 } | |
| 1790 } | |
| 1791 let NOT_IN_PATH = 0; | |
| 1792 let IN_PATH = 1; | |
| 1793 let ALLOW_AUTH = 2; | |
| 1794 let state = NOT_IN_PATH; | |
| 1795 let i = index; | |
| 1796 while (dart.notNull(i) < dart.notNull(uri.length)) { | |
| 1797 char = uri.codeUnitAt(i); | |
| 1798 if (char === Uri._QUESTION || char === Uri._NUMBER_SIGN) { | |
| 1799 state = NOT_IN_PATH; | |
| 1800 break; | |
| 1801 } | |
| 1802 if (char === Uri._SLASH) { | |
| 1803 state = i === 0 ? ALLOW_AUTH : IN_PATH; | |
| 1804 break; | |
| 1805 } | |
| 1806 if (char === Uri._COLON) { | |
| 1807 if (i === 0) | |
| 1808 _fail(uri, 0, "Invalid empty scheme"); | |
| 1809 scheme = _makeScheme(uri, i); | |
| 1810 i = dart.notNull(i) + 1; | |
| 1811 pathStart = i; | |
| 1812 if (i === uri.length) { | |
| 1813 char = EOI; | |
| 1814 state = NOT_IN_PATH; | |
| 1815 } else { | |
| 1816 char = uri.codeUnitAt(i); | |
| 1817 if (char === Uri._QUESTION || char === Uri._NUMBER_SIGN) { | |
| 1818 state = NOT_IN_PATH; | |
| 1819 } else if (char === Uri._SLASH) { | |
| 1820 state = ALLOW_AUTH; | |
| 1821 } else { | |
| 1822 state = IN_PATH; | |
| 1823 } | |
| 1824 } | |
| 1825 break; | |
| 1826 } | |
| 1827 i = dart.notNull(i) + 1; | |
| 1828 char = EOI; | |
| 1829 } | |
| 1830 index = i; | |
| 1831 if (state === ALLOW_AUTH) { | |
| 1832 dart.assert(char === Uri._SLASH); | |
| 1833 index = dart.notNull(index) + 1; | |
| 1834 if (index === uri.length) { | |
| 1835 char = EOI; | |
| 1836 state = NOT_IN_PATH; | |
| 1837 } else { | |
| 1838 char = uri.codeUnitAt(index); | |
| 1839 if (char === Uri._SLASH) { | |
| 1840 index = dart.notNull(index) + 1; | |
| 1841 parseAuth(); | |
| 1842 pathStart = index; | |
| 1843 } | |
| 1844 if (char === Uri._QUESTION || char === Uri._NUMBER_SIGN || char === EO
I) { | |
| 1845 state = NOT_IN_PATH; | |
| 1846 } else { | |
| 1847 state = IN_PATH; | |
| 1848 } | |
| 1849 } | |
| 1850 } | |
| 1851 dart.assert(state === IN_PATH || state === NOT_IN_PATH); | |
| 1852 if (state === IN_PATH) { | |
| 1853 while ((index = dart.notNull(index) + 1) < dart.notNull(uri.length)) { | |
| 1854 char = uri.codeUnitAt(index); | |
| 1855 if (char === Uri._QUESTION || char === Uri._NUMBER_SIGN) { | |
| 1856 break; | |
| 1857 } | |
| 1858 char = EOI; | |
| 1859 } | |
| 1860 state = NOT_IN_PATH; | |
| 1861 } | |
| 1862 dart.assert(state === NOT_IN_PATH); | |
| 1863 let isFile = dart.equals(scheme, "file"); | |
| 1864 let ensureLeadingSlash = host !== null; | |
| 1865 path = _makePath(uri, pathStart, index, null, ensureLeadingSlash, isFile); | |
| 1866 if (char === Uri._QUESTION) { | |
| 1867 let numberSignIndex = uri.indexOf('#', dart.notNull(index) + 1); | |
| 1868 if (dart.notNull(numberSignIndex) < 0) { | |
| 1869 query = _makeQuery(uri, dart.notNull(index) + 1, uri.length, null); | |
| 1870 } else { | |
| 1871 query = _makeQuery(uri, dart.notNull(index) + 1, numberSignIndex, null
); | |
| 1872 fragment = _makeFragment(uri, dart.notNull(numberSignIndex) + 1, uri.l
ength); | |
| 1873 } | |
| 1874 } else if (char === Uri._NUMBER_SIGN) { | |
| 1875 fragment = _makeFragment(uri, dart.notNull(index) + 1, uri.length); | |
| 1876 } | |
| 1877 return new Uri._internal(scheme, userinfo, host, port, path, query, fragme
nt); | |
| 1878 } | |
| 1879 static [_fail](uri, index, message) { | |
| 1880 throw new FormatException(message, uri, index); | |
| 1881 } | |
| 1882 Uri$_internal(scheme, $_userInfo, $_host, $_port, $_path, $_query, $_fragmen
t) { | |
| 1883 this.scheme = scheme; | |
| 1884 this[_userInfo] = $_userInfo; | |
| 1885 this[_host] = $_host; | |
| 1886 this[_port] = $_port; | |
| 1887 this[_path] = $_path; | |
| 1888 this[_query] = $_query; | |
| 1889 this[_fragment] = $_fragment; | |
| 1890 this[_pathSegments] = null; | |
| 1891 this[_queryParameters] = null; | |
| 1892 } | |
| 1893 Uri(opt$) { | |
| 1894 let scheme = opt$.scheme === void 0 ? "" : opt$.scheme; | |
| 1895 let userInfo = opt$.userInfo === void 0 ? "" : opt$.userInfo; | |
| 1896 let host = opt$.host === void 0 ? null : opt$.host; | |
| 1897 let port = opt$.port === void 0 ? null : opt$.port; | |
| 1898 let path = opt$.path === void 0 ? null : opt$.path; | |
| 1899 let pathSegments = opt$.pathSegments === void 0 ? null : opt$.pathSegments
; | |
| 1900 let query = opt$.query === void 0 ? null : opt$.query; | |
| 1901 let queryParameters = opt$.queryParameters === void 0 ? null : opt$.queryP
arameters; | |
| 1902 let fragment = opt$.fragment === void 0 ? null : opt$.fragment; | |
| 1903 scheme = _makeScheme(scheme, _stringOrNullLength(scheme)); | |
| 1904 userInfo = _makeUserInfo(userInfo, 0, _stringOrNullLength(userInfo)); | |
| 1905 host = _makeHost(host, 0, _stringOrNullLength(host), false); | |
| 1906 if (dart.equals(query, "")) | |
| 1907 query = null; | |
| 1908 query = _makeQuery(query, 0, _stringOrNullLength(query), queryParameters); | |
| 1909 fragment = _makeFragment(fragment, 0, _stringOrNullLength(fragment)); | |
| 1910 port = _makePort(port, scheme); | |
| 1911 let isFile = dart.equals(scheme, "file"); | |
| 1912 if (dart.notNull(host === null) && (dart.notNull(userInfo.isNotEmpty) || p
ort !== null || dart.notNull(isFile))) { | |
| 1913 host = ""; | |
| 1914 } | |
| 1915 let ensureLeadingSlash = host !== null; | |
| 1916 path = _makePath(path, 0, _stringOrNullLength(path), pathSegments, ensureL
eadingSlash, isFile); | |
| 1917 return new Uri._internal(scheme, userInfo, host, port, path, query, fragme
nt); | |
| 1918 } | |
| 1919 Uri$http(authority, unencodedPath, queryParameters) { | |
| 1920 if (queryParameters === void 0) | |
| 1921 queryParameters = null; | |
| 1922 return _makeHttpUri("http", authority, unencodedPath, queryParameters); | |
| 1923 } | |
| 1924 Uri$https(authority, unencodedPath, queryParameters) { | |
| 1925 if (queryParameters === void 0) | |
| 1926 queryParameters = null; | |
| 1927 return _makeHttpUri("https", authority, unencodedPath, queryParameters); | |
| 1928 } | |
| 1929 static [_makeHttpUri](scheme, authority, unencodedPath, queryParameters) { | |
| 1930 let userInfo = ""; | |
| 1931 let host = null; | |
| 1932 let port = null; | |
| 1933 if (dart.notNull(authority !== null) && dart.notNull(authority.isNotEmpty)
) { | |
| 1934 let hostStart = 0; | |
| 1935 let hasUserInfo = false; | |
| 1936 for (let i = 0; dart.notNull(i) < dart.notNull(authority.length); i = da
rt.notNull(i) + 1) { | |
| 1937 if (authority.codeUnitAt(i) === Uri._AT_SIGN) { | |
| 1938 hasUserInfo = true; | |
| 1939 userInfo = authority.substring(0, i); | |
| 1940 hostStart = dart.notNull(i) + 1; | |
| 1941 break; | |
| 1942 } | |
| 1943 } | |
| 1944 let hostEnd = hostStart; | |
| 1945 if (dart.notNull(hostStart) < dart.notNull(authority.length) && authorit
y.codeUnitAt(hostStart) === Uri._LEFT_BRACKET) { | |
| 1946 for (; dart.notNull(hostEnd) < dart.notNull(authority.length); hostEnd
= dart.notNull(hostEnd) + 1) { | |
| 1947 if (authority.codeUnitAt(hostEnd) === Uri._RIGHT_BRACKET) | |
| 1948 break; | |
| 1949 } | |
| 1950 if (hostEnd === authority.length) { | |
| 1951 throw new FormatException("Invalid IPv6 host entry.", authority, hos
tStart); | |
| 1952 } | |
| 1953 parseIPv6Address(authority, dart.notNull(hostStart) + 1, hostEnd); | |
| 1954 hostEnd = dart.notNull(hostEnd) + 1; | |
| 1955 if (hostEnd !== authority.length && authority.codeUnitAt(hostEnd) !==
Uri._COLON) { | |
| 1956 throw new FormatException("Invalid end of authority", authority, hos
tEnd); | |
| 1957 } | |
| 1958 } | |
| 1959 let hasPort = false; | |
| 1960 for (; dart.notNull(hostEnd) < dart.notNull(authority.length); hostEnd =
dart.notNull(hostEnd) + 1) { | |
| 1961 if (authority.codeUnitAt(hostEnd) === Uri._COLON) { | |
| 1962 let portString = authority.substring(dart.notNull(hostEnd) + 1); | |
| 1963 if (portString.isNotEmpty) | |
| 1964 port = int.parse(portString); | |
| 1965 break; | |
| 1966 } | |
| 1967 } | |
| 1968 host = authority.substring(hostStart, hostEnd); | |
| 1969 } | |
| 1970 return new Uri({scheme: scheme, userInfo: userInfo, host: dart.as(host, St
ring), port: dart.as(port, int), pathSegments: unencodedPath.split("/"), queryPa
rameters: queryParameters}); | |
| 1971 } | |
| 1972 Uri$file(path, opt$) { | |
| 1973 let windows = opt$.windows === void 0 ? null : opt$.windows; | |
| 1974 windows = windows === null ? Uri[_isWindows] : windows; | |
| 1975 return dart.as(windows ? _makeWindowsFileUrl(path) : _makeFileUri(path), U
ri); | |
| 1976 } | |
| 1977 static get base() { | |
| 1978 let uri = _js_helper.Primitives.currentUri(); | |
| 1979 if (uri !== null) | |
| 1980 return Uri.parse(uri); | |
| 1981 throw new UnsupportedError("'Uri.base' is not supported"); | |
| 1982 } | |
| 1983 static get [_isWindows]() { | |
| 1984 return false; | |
| 1985 } | |
| 1986 static [_checkNonWindowsPathReservedCharacters](segments, argumentError) { | |
| 1987 segments.forEach(dart.closureWrap((segment) => { | |
| 1988 if (dart.dinvoke(segment, 'contains', "/")) { | |
| 1989 if (argumentError) { | |
| 1990 throw new ArgumentError(`Illegal path character ${segment}`); | |
| 1991 } else { | |
| 1992 throw new UnsupportedError(`Illegal path character ${segment}`); | |
| 1993 } | |
| 1994 } | |
| 1995 }, "(String) → void")); | |
| 1996 } | |
| 1997 static [_checkWindowsPathReservedCharacters](segments, argumentError, firstS
egment) { | |
| 1998 if (firstSegment === void 0) | |
| 1999 firstSegment = 0; | |
| 2000 segments.skip(firstSegment).forEach(dart.closureWrap((segment) => { | |
| 2001 if (dart.dinvoke(segment, 'contains', new RegExp('["*/:<>?\\\\|]'))) { | |
| 2002 if (argumentError) { | |
| 2003 throw new ArgumentError("Illegal character in path"); | |
| 2004 } else { | |
| 2005 throw new UnsupportedError("Illegal character in path"); | |
| 2006 } | |
| 2007 } | |
| 2008 }, "(String) → void")); | |
| 2009 } | |
| 2010 static [_checkWindowsDriveLetter](charCode, argumentError) { | |
| 2011 if (dart.notNull(Uri._UPPER_CASE_A) <= dart.notNull(charCode) && dart.notN
ull(charCode) <= dart.notNull(Uri._UPPER_CASE_Z) || dart.notNull(Uri._LOWER_CASE
_A) <= dart.notNull(charCode) && dart.notNull(charCode) <= dart.notNull(Uri._LOW
ER_CASE_Z)) { | |
| 2012 return; | |
| 2013 } | |
| 2014 if (argumentError) { | |
| 2015 throw new ArgumentError(String['+']("Illegal drive letter ", new String.
fromCharCode(charCode))); | |
| 2016 } else { | |
| 2017 throw new UnsupportedError(String['+']("Illegal drive letter ", new Stri
ng.fromCharCode(charCode))); | |
| 2018 } | |
| 2019 } | |
| 2020 static [_makeFileUri](path) { | |
| 2021 let sep = "/"; | |
| 2022 if (path.startsWith(sep)) { | |
| 2023 return new Uri({scheme: "file", pathSegments: path.split(sep)}); | |
| 2024 } else { | |
| 2025 return new Uri({pathSegments: path.split(sep)}); | |
| 2026 } | |
| 2027 } | |
| 2028 static [_makeWindowsFileUrl](path) { | |
| 2029 if (path.startsWith("\\\\?\\")) { | |
| 2030 if (path.startsWith("\\\\?\\UNC\\")) { | |
| 2031 path = `\\${path.substring(7)}`; | |
| 2032 } else { | |
| 2033 path = path.substring(4); | |
| 2034 if (dart.notNull(path.length) < 3 || path.codeUnitAt(1) !== Uri._COLON
|| path.codeUnitAt(2) !== Uri._BACKSLASH) { | |
| 2035 throw new ArgumentError("Windows paths with \\\\?\\ prefix must be a
bsolute"); | |
| 2036 } | |
| 2037 } | |
| 2038 } else { | |
| 2039 path = path.replaceAll("/", "\\"); | |
| 2040 } | |
| 2041 let sep = "\\"; | |
| 2042 if (dart.notNull(path.length) > 1 && dart.notNull(dart.equals(path.get(1),
":"))) { | |
| 2043 _checkWindowsDriveLetter(path.codeUnitAt(0), true); | |
| 2044 if (path.length === 2 || path.codeUnitAt(2) !== Uri._BACKSLASH) { | |
| 2045 throw new ArgumentError("Windows paths with drive letter must be absol
ute"); | |
| 2046 } | |
| 2047 let pathSegments = path.split(sep); | |
| 2048 _checkWindowsPathReservedCharacters(pathSegments, true, 1); | |
| 2049 return new Uri({scheme: "file", pathSegments: pathSegments}); | |
| 2050 } | |
| 2051 if (dart.notNull(path.length) > 0 && dart.notNull(dart.equals(path.get(0),
sep))) { | |
| 2052 if (dart.notNull(path.length) > 1 && dart.notNull(dart.equals(path.get(1
), sep))) { | |
| 2053 let pathStart = path.indexOf("\\", 2); | |
| 2054 let hostPart = pathStart === -1 ? path.substring(2) : path.substring(2
, pathStart); | |
| 2055 let pathPart = pathStart === -1 ? "" : path.substring(dart.notNull(pat
hStart) + 1); | |
| 2056 let pathSegments = pathPart.split(sep); | |
| 2057 _checkWindowsPathReservedCharacters(pathSegments, true); | |
| 2058 return new Uri({scheme: "file", host: hostPart, pathSegments: pathSegm
ents}); | |
| 2059 } else { | |
| 2060 let pathSegments = path.split(sep); | |
| 2061 _checkWindowsPathReservedCharacters(pathSegments, true); | |
| 2062 return new Uri({scheme: "file", pathSegments: pathSegments}); | |
| 2063 } | |
| 2064 } else { | |
| 2065 let pathSegments = path.split(sep); | |
| 2066 _checkWindowsPathReservedCharacters(pathSegments, true); | |
| 2067 return new Uri({pathSegments: pathSegments}); | |
| 2068 } | |
| 2069 } | |
| 2070 replace(opt$) { | |
| 2071 let scheme = opt$.scheme === void 0 ? null : opt$.scheme; | |
| 2072 let userInfo = opt$.userInfo === void 0 ? null : opt$.userInfo; | |
| 2073 let host = opt$.host === void 0 ? null : opt$.host; | |
| 2074 let port = opt$.port === void 0 ? null : opt$.port; | |
| 2075 let path = opt$.path === void 0 ? null : opt$.path; | |
| 2076 let pathSegments = opt$.pathSegments === void 0 ? null : opt$.pathSegments
; | |
| 2077 let query = opt$.query === void 0 ? null : opt$.query; | |
| 2078 let queryParameters = opt$.queryParameters === void 0 ? null : opt$.queryP
arameters; | |
| 2079 let fragment = opt$.fragment === void 0 ? null : opt$.fragment; | |
| 2080 let schemeChanged = false; | |
| 2081 if (scheme !== null) { | |
| 2082 scheme = _makeScheme(scheme, scheme.length); | |
| 2083 schemeChanged = true; | |
| 2084 } else { | |
| 2085 scheme = this.scheme; | |
| 2086 } | |
| 2087 let isFile = dart.equals(scheme, "file"); | |
| 2088 if (userInfo !== null) { | |
| 2089 userInfo = _makeUserInfo(userInfo, 0, userInfo.length); | |
| 2090 } else { | |
| 2091 userInfo = this.userInfo; | |
| 2092 } | |
| 2093 if (port !== null) { | |
| 2094 port = _makePort(port, scheme); | |
| 2095 } else { | |
| 2096 port = this[_port]; | |
| 2097 if (schemeChanged) { | |
| 2098 port = _makePort(port, scheme); | |
| 2099 } | |
| 2100 } | |
| 2101 if (host !== null) { | |
| 2102 host = _makeHost(host, 0, host.length, false); | |
| 2103 } else if (this.hasAuthority) { | |
| 2104 host = this.host; | |
| 2105 } else if (dart.notNull(userInfo.isNotEmpty) || port !== null || dart.notN
ull(isFile)) { | |
| 2106 host = ""; | |
| 2107 } | |
| 2108 let ensureLeadingSlash = host !== null; | |
| 2109 if (dart.notNull(path !== null) || dart.notNull(pathSegments !== null)) { | |
| 2110 path = _makePath(path, 0, _stringOrNullLength(path), pathSegments, ensur
eLeadingSlash, isFile); | |
| 2111 } else { | |
| 2112 path = this.path; | |
| 2113 if ((dart.notNull(isFile) || dart.notNull(ensureLeadingSlash) && !dart.n
otNull(path.isEmpty)) && !dart.notNull(path.startsWith('/'))) { | |
| 2114 path = `/${path}`; | |
| 2115 } | |
| 2116 } | |
| 2117 if (dart.notNull(query !== null) || dart.notNull(queryParameters !== null)
) { | |
| 2118 query = _makeQuery(query, 0, _stringOrNullLength(query), queryParameters
); | |
| 2119 } else if (this.hasQuery) { | |
| 2120 query = this.query; | |
| 2121 } | |
| 2122 if (fragment !== null) { | |
| 2123 fragment = _makeFragment(fragment, 0, fragment.length); | |
| 2124 } else if (this.hasFragment) { | |
| 2125 fragment = this.fragment; | |
| 2126 } | |
| 2127 return new Uri._internal(scheme, userInfo, host, port, path, query, fragme
nt); | |
| 2128 } | |
| 2129 get pathSegments() { | |
| 2130 if (this[_pathSegments] === null) { | |
| 2131 let pathToSplit = !dart.notNull(this.path.isEmpty) && this.path.codeUnit
At(0) === Uri._SLASH ? this.path.substring(1) : this.path; | |
| 2132 this[_pathSegments] = dart.as(new collection.UnmodifiableListView(dart.e
quals(pathToSplit, "") ? /* Unimplemented const */new List.from([]) : pathToSpli
t.split("/").map(Uri.decodeComponent).toList({growable: false})), List$(String))
; | |
| 2133 } | |
| 2134 return this[_pathSegments]; | |
| 2135 } | |
| 2136 get queryParameters() { | |
| 2137 if (this[_queryParameters] === null) { | |
| 2138 this[_queryParameters] = dart.as(new collection.UnmodifiableMapView(spli
tQueryString(this.query)), Map$(String, String)); | |
| 2139 } | |
| 2140 return this[_queryParameters]; | |
| 2141 } | |
| 2142 static [_makePort](port, scheme) { | |
| 2143 if (port !== null && port === _defaultPort(scheme)) | |
| 2144 return null; | |
| 2145 return port; | |
| 2146 } | |
| 2147 static [_makeHost](host, start, end, strictIPv6) { | |
| 2148 if (host === null) | |
| 2149 return null; | |
| 2150 if (start === end) | |
| 2151 return ""; | |
| 2152 if (host.codeUnitAt(start) === Uri._LEFT_BRACKET) { | |
| 2153 if (host.codeUnitAt(dart.notNull(end) - 1) !== Uri._RIGHT_BRACKET) { | |
| 2154 _fail(host, start, 'Missing end `]` to match `[` in host'); | |
| 2155 } | |
| 2156 parseIPv6Address(host, dart.notNull(start) + 1, dart.notNull(end) - 1); | |
| 2157 return host.substring(start, end).toLowerCase(); | |
| 2158 } | |
| 2159 if (!dart.notNull(strictIPv6)) { | |
| 2160 for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNul
l(i) + 1) { | |
| 2161 if (host.codeUnitAt(i) === Uri._COLON) { | |
| 2162 parseIPv6Address(host, start, end); | |
| 2163 return `[${host}]`; | |
| 2164 } | |
| 2165 } | |
| 2166 } | |
| 2167 return _normalizeRegName(host, start, end); | |
| 2168 } | |
| 2169 static [_isRegNameChar](char) { | |
| 2170 return dart.notNull(char) < 127 && dart.notNull(!dart.equals(dart.dbinary(
Uri._regNameTable.get(dart.notNull(char) >> 4), '&', 1 << (dart.notNull(char) &
15)), 0)); | |
| 2171 } | |
| 2172 static [_normalizeRegName](host, start, end) { | |
| 2173 let buffer = null; | |
| 2174 let sectionStart = start; | |
| 2175 let index = start; | |
| 2176 let isNormalized = true; | |
| 2177 while (dart.notNull(index) < dart.notNull(end)) { | |
| 2178 let char = host.codeUnitAt(index); | |
| 2179 if (char === Uri._PERCENT) { | |
| 2180 let replacement = _normalizeEscape(host, index, true); | |
| 2181 if (dart.notNull(replacement === null) && dart.notNull(isNormalized))
{ | |
| 2182 index = 3; | |
| 2183 continue; | |
| 2184 } | |
| 2185 if (buffer === null) | |
| 2186 buffer = new StringBuffer(); | |
| 2187 let slice = host.substring(sectionStart, index); | |
| 2188 if (!dart.notNull(isNormalized)) | |
| 2189 slice = slice.toLowerCase(); | |
| 2190 buffer.write(slice); | |
| 2191 let sourceLength = 3; | |
| 2192 if (replacement === null) { | |
| 2193 replacement = host.substring(index, dart.notNull(index) + 3); | |
| 2194 } else if (dart.equals(replacement, "%")) { | |
| 2195 replacement = "%25"; | |
| 2196 sourceLength = 1; | |
| 2197 } | |
| 2198 buffer.write(replacement); | |
| 2199 index = sourceLength; | |
| 2200 sectionStart = index; | |
| 2201 isNormalized = true; | |
| 2202 } else if (_isRegNameChar(char)) { | |
| 2203 if (dart.notNull(isNormalized) && dart.notNull(Uri._UPPER_CASE_A) <= d
art.notNull(char) && dart.notNull(Uri._UPPER_CASE_Z) >= dart.notNull(char)) { | |
| 2204 if (buffer === null) | |
| 2205 buffer = new StringBuffer(); | |
| 2206 if (dart.notNull(sectionStart) < dart.notNull(index)) { | |
| 2207 buffer.write(host.substring(sectionStart, index)); | |
| 2208 sectionStart = index; | |
| 2209 } | |
| 2210 isNormalized = false; | |
| 2211 } | |
| 2212 index = dart.notNull(index) + 1; | |
| 2213 } else if (_isGeneralDelimiter(char)) { | |
| 2214 _fail(host, index, "Invalid character"); | |
| 2215 } else { | |
| 2216 let sourceLength = 1; | |
| 2217 if ((dart.notNull(char) & 64512) === 55296 && dart.notNull(index) + 1
< dart.notNull(end)) { | |
| 2218 let tail = host.codeUnitAt(dart.notNull(index) + 1); | |
| 2219 if ((dart.notNull(tail) & 64512) === 56320) { | |
| 2220 char = 65536 | (dart.notNull(char) & 1023) << 10 | dart.notNull(ta
il) & 1023; | |
| 2221 sourceLength = 2; | |
| 2222 } | |
| 2223 } | |
| 2224 if (buffer === null) | |
| 2225 buffer = new StringBuffer(); | |
| 2226 let slice = host.substring(sectionStart, index); | |
| 2227 if (!dart.notNull(isNormalized)) | |
| 2228 slice = slice.toLowerCase(); | |
| 2229 buffer.write(slice); | |
| 2230 buffer.write(_escapeChar(char)); | |
| 2231 index = sourceLength; | |
| 2232 sectionStart = index; | |
| 2233 } | |
| 2234 } | |
| 2235 if (buffer === null) | |
| 2236 return host.substring(start, end); | |
| 2237 if (dart.notNull(sectionStart) < dart.notNull(end)) { | |
| 2238 let slice = host.substring(sectionStart, end); | |
| 2239 if (!dart.notNull(isNormalized)) | |
| 2240 slice = slice.toLowerCase(); | |
| 2241 buffer.write(slice); | |
| 2242 } | |
| 2243 return buffer.toString(); | |
| 2244 } | |
| 2245 static [_makeScheme](scheme, end) { | |
| 2246 if (end === 0) | |
| 2247 return ""; | |
| 2248 let firstCodeUnit = scheme.codeUnitAt(0); | |
| 2249 if (!dart.notNull(_isAlphabeticCharacter(firstCodeUnit))) { | |
| 2250 _fail(scheme, 0, "Scheme not starting with alphabetic character"); | |
| 2251 } | |
| 2252 let allLowercase = dart.notNull(firstCodeUnit) >= dart.notNull(Uri._LOWER_
CASE_A); | |
| 2253 for (let i = 0; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) +
1) { | |
| 2254 let codeUnit = scheme.codeUnitAt(i); | |
| 2255 if (!dart.notNull(_isSchemeCharacter(codeUnit))) { | |
| 2256 _fail(scheme, i, "Illegal scheme character"); | |
| 2257 } | |
| 2258 if (dart.notNull(codeUnit) < dart.notNull(Uri._LOWER_CASE_A) || dart.not
Null(codeUnit) > dart.notNull(Uri._LOWER_CASE_Z)) { | |
| 2259 allLowercase = false; | |
| 2260 } | |
| 2261 } | |
| 2262 scheme = scheme.substring(0, end); | |
| 2263 if (!dart.notNull(allLowercase)) | |
| 2264 scheme = scheme.toLowerCase(); | |
| 2265 return scheme; | |
| 2266 } | |
| 2267 static [_makeUserInfo](userInfo, start, end) { | |
| 2268 if (userInfo === null) | |
| 2269 return ""; | |
| 2270 return _normalize(userInfo, start, end, dart.as(Uri._userinfoTable, List$(
int))); | |
| 2271 } | |
| 2272 static [_makePath](path, start, end, pathSegments, ensureLeadingSlash, isFil
e) { | |
| 2273 if (dart.notNull(path === null) && dart.notNull(pathSegments === null)) | |
| 2274 return isFile ? "/" : ""; | |
| 2275 if (dart.notNull(path !== null) && dart.notNull(pathSegments !== null)) { | |
| 2276 throw new ArgumentError('Both path and pathSegments specified'); | |
| 2277 } | |
| 2278 let result = null; | |
| 2279 if (path !== null) { | |
| 2280 result = _normalize(path, start, end, dart.as(Uri._pathCharOrSlashTable,
List$(int))); | |
| 2281 } else { | |
| 2282 result = pathSegments.map(dart.closureWrap((s) => _uriEncode(dart.as(Uri
._pathCharTable, List$(int)), dart.as(s, String)), "(String) → dynamic")).join("
/"); | |
| 2283 } | |
| 2284 if (dart.dload(result, 'isEmpty')) { | |
| 2285 if (isFile) | |
| 2286 return "/"; | |
| 2287 } else if ((dart.notNull(isFile) || dart.notNull(ensureLeadingSlash)) && d
art.notNull(!dart.equals(dart.dinvoke(result, 'codeUnitAt', 0), Uri._SLASH))) { | |
| 2288 return `/${result}`; | |
| 2289 } | |
| 2290 return dart.as(result, String); | |
| 2291 } | |
| 2292 static [_makeQuery](query, start, end, queryParameters) { | |
| 2293 if (dart.notNull(query === null) && dart.notNull(queryParameters === null)
) | |
| 2294 return null; | |
| 2295 if (dart.notNull(query !== null) && dart.notNull(queryParameters !== null)
) { | |
| 2296 throw new ArgumentError('Both query and queryParameters specified'); | |
| 2297 } | |
| 2298 if (query !== null) | |
| 2299 return _normalize(query, start, end, dart.as(Uri._queryCharTable, List$(
int))); | |
| 2300 let result = new StringBuffer(); | |
| 2301 let first = true; | |
| 2302 queryParameters.forEach(dart.closureWrap(((key, value) => { | |
| 2303 if (!dart.notNull(first)) { | |
| 2304 result.write("&"); | |
| 2305 } | |
| 2306 first = false; | |
| 2307 result.write(Uri.encodeQueryComponent(dart.as(key, String))); | |
| 2308 if (dart.notNull(value !== null) && dart.notNull(dart.dunary('!', dart.d
load(value, 'isEmpty')))) { | |
| 2309 result.write("="); | |
| 2310 result.write(Uri.encodeQueryComponent(dart.as(value, String))); | |
| 2311 } | |
| 2312 }).bind(this), "(String, String) → void")); | |
| 2313 return result.toString(); | |
| 2314 } | |
| 2315 static [_makeFragment](fragment, start, end) { | |
| 2316 if (fragment === null) | |
| 2317 return null; | |
| 2318 return _normalize(fragment, start, end, dart.as(Uri._queryCharTable, List$
(int))); | |
| 2319 } | |
| 2320 static [_stringOrNullLength](s) { | |
| 2321 return s === null ? 0 : s.length; | |
| 2322 } | |
| 2323 static [_isHexDigit](char) { | |
| 2324 if (dart.notNull(Uri._NINE) >= dart.notNull(char)) | |
| 2325 return dart.notNull(Uri._ZERO) <= dart.notNull(char); | |
| 2326 char = 32; | |
| 2327 return dart.notNull(Uri._LOWER_CASE_A) <= dart.notNull(char) && dart.notNu
ll(Uri._LOWER_CASE_F) >= dart.notNull(char); | |
| 2328 } | |
| 2329 static [_hexValue](char) { | |
| 2330 dart.assert(_isHexDigit(char)); | |
| 2331 if (dart.notNull(Uri._NINE) >= dart.notNull(char)) | |
| 2332 return dart.notNull(char) - dart.notNull(Uri._ZERO); | |
| 2333 char = 32; | |
| 2334 return dart.notNull(char) - (dart.notNull(Uri._LOWER_CASE_A) - 10); | |
| 2335 } | |
| 2336 static [_normalizeEscape](source, index, lowerCase) { | |
| 2337 dart.assert(source.codeUnitAt(index) === Uri._PERCENT); | |
| 2338 if (dart.notNull(index) + 2 >= dart.notNull(source.length)) { | |
| 2339 return "%"; | |
| 2340 } | |
| 2341 let firstDigit = source.codeUnitAt(dart.notNull(index) + 1); | |
| 2342 let secondDigit = source.codeUnitAt(dart.notNull(index) + 2); | |
| 2343 if (!dart.notNull(_isHexDigit(firstDigit)) || !dart.notNull(_isHexDigit(se
condDigit))) { | |
| 2344 return "%"; | |
| 2345 } | |
| 2346 let value = dart.notNull(_hexValue(firstDigit)) * 16 + dart.notNull(_hexVa
lue(secondDigit)); | |
| 2347 if (_isUnreservedChar(value)) { | |
| 2348 if (dart.notNull(lowerCase) && dart.notNull(Uri._UPPER_CASE_A) <= dart.n
otNull(value) && dart.notNull(Uri._UPPER_CASE_Z) >= dart.notNull(value)) { | |
| 2349 value = 32; | |
| 2350 } | |
| 2351 return new String.fromCharCode(value); | |
| 2352 } | |
| 2353 if (dart.notNull(firstDigit) >= dart.notNull(Uri._LOWER_CASE_A) || dart.no
tNull(secondDigit) >= dart.notNull(Uri._LOWER_CASE_A)) { | |
| 2354 return source.substring(index, dart.notNull(index) + 3).toUpperCase(); | |
| 2355 } | |
| 2356 return null; | |
| 2357 } | |
| 2358 static [_isUnreservedChar](ch) { | |
| 2359 return dart.notNull(ch) < 127 && dart.notNull(!dart.equals(dart.dbinary(Ur
i._unreservedTable.get(dart.notNull(ch) >> 4), '&', 1 << (dart.notNull(ch) & 15)
), 0)); | |
| 2360 } | |
| 2361 static [_escapeChar](char) { | |
| 2362 dart.assert(dart.dbinary(char, '<=', 1114111)); | |
| 2363 let hexDigits = "0123456789ABCDEF"; | |
| 2364 let codeUnits = null; | |
| 2365 if (dart.dbinary(char, '<', 128)) { | |
| 2366 codeUnits = new List(3); | |
| 2367 codeUnits.set(0, Uri._PERCENT); | |
| 2368 codeUnits.set(1, hexDigits.codeUnitAt(dart.as(dart.dbinary(char, '>>', 4
), int))); | |
| 2369 codeUnits.set(2, hexDigits.codeUnitAt(dart.as(dart.dbinary(char, '&', 15
), int))); | |
| 2370 } else { | |
| 2371 let flag = 192; | |
| 2372 let encodedBytes = 2; | |
| 2373 if (dart.dbinary(char, '>', 2047)) { | |
| 2374 flag = 224; | |
| 2375 encodedBytes = 3; | |
| 2376 if (dart.dbinary(char, '>', 65535)) { | |
| 2377 encodedBytes = 4; | |
| 2378 flag = 240; | |
| 2379 } | |
| 2380 } | |
| 2381 codeUnits = new List(3 * dart.notNull(encodedBytes)); | |
| 2382 let index = 0; | |
| 2383 while ((encodedBytes = dart.notNull(encodedBytes) - 1) >= 0) { | |
| 2384 let byte = dart.as(dart.dbinary(dart.dbinary(dart.dbinary(char, '>>',
6 * dart.notNull(encodedBytes)), '&', 63), '|', flag), int); | |
| 2385 codeUnits.set(index, Uri._PERCENT); | |
| 2386 codeUnits.set(dart.notNull(index) + 1, hexDigits.codeUnitAt(dart.notNu
ll(byte) >> 4)); | |
| 2387 codeUnits.set(dart.notNull(index) + 2, hexDigits.codeUnitAt(dart.notNu
ll(byte) & 15)); | |
| 2388 index = 3; | |
| 2389 flag = 128; | |
| 2390 } | |
| 2391 } | |
| 2392 return new String.fromCharCodes(dart.as(codeUnits, Iterable$(int))); | |
| 2393 } | |
| 2394 static [_normalize](component, start, end, charTable) { | |
| 2395 let buffer = null; | |
| 2396 let sectionStart = start; | |
| 2397 let index = start; | |
| 2398 while (dart.notNull(index) < dart.notNull(end)) { | |
| 2399 let char = component.codeUnitAt(index); | |
| 2400 if (dart.notNull(char) < 127 && (dart.notNull(charTable.get(dart.notNull
(char) >> 4)) & 1 << (dart.notNull(char) & 15)) !== 0) { | |
| 2401 index = dart.notNull(index) + 1; | |
| 2402 } else { | |
| 2403 let replacement = null; | |
| 2404 let sourceLength = null; | |
| 2405 if (char === Uri._PERCENT) { | |
| 2406 replacement = _normalizeEscape(component, index, false); | |
| 2407 if (replacement === null) { | |
| 2408 index = 3; | |
| 2409 continue; | |
| 2410 } | |
| 2411 if (dart.equals("%", replacement)) { | |
| 2412 replacement = "%25"; | |
| 2413 sourceLength = 1; | |
| 2414 } else { | |
| 2415 sourceLength = 3; | |
| 2416 } | |
| 2417 } else if (_isGeneralDelimiter(char)) { | |
| 2418 _fail(component, index, "Invalid character"); | |
| 2419 } else { | |
| 2420 sourceLength = 1; | |
| 2421 if ((dart.notNull(char) & 64512) === 55296) { | |
| 2422 if (dart.notNull(index) + 1 < dart.notNull(end)) { | |
| 2423 let tail = component.codeUnitAt(dart.notNull(index) + 1); | |
| 2424 if ((dart.notNull(tail) & 64512) === 56320) { | |
| 2425 sourceLength = 2; | |
| 2426 char = 65536 | (dart.notNull(char) & 1023) << 10 | dart.notNul
l(tail) & 1023; | |
| 2427 } | |
| 2428 } | |
| 2429 } | |
| 2430 replacement = _escapeChar(char); | |
| 2431 } | |
| 2432 if (buffer === null) | |
| 2433 buffer = new StringBuffer(); | |
| 2434 buffer.write(component.substring(sectionStart, index)); | |
| 2435 buffer.write(replacement); | |
| 2436 index = sourceLength; | |
| 2437 sectionStart = index; | |
| 2438 } | |
| 2439 } | |
| 2440 if (buffer === null) { | |
| 2441 return component.substring(start, end); | |
| 2442 } | |
| 2443 if (dart.notNull(sectionStart) < dart.notNull(end)) { | |
| 2444 buffer.write(component.substring(sectionStart, end)); | |
| 2445 } | |
| 2446 return buffer.toString(); | |
| 2447 } | |
| 2448 static [_isSchemeCharacter](ch) { | |
| 2449 return dart.notNull(ch) < 128 && dart.notNull(!dart.equals(dart.dbinary(Ur
i._schemeTable.get(dart.notNull(ch) >> 4), '&', 1 << (dart.notNull(ch) & 15)), 0
)); | |
| 2450 } | |
| 2451 static [_isGeneralDelimiter](ch) { | |
| 2452 return dart.notNull(ch) <= dart.notNull(Uri._RIGHT_BRACKET) && dart.notNul
l(!dart.equals(dart.dbinary(Uri._genDelimitersTable.get(dart.notNull(ch) >> 4),
'&', 1 << (dart.notNull(ch) & 15)), 0)); | |
| 2453 } | |
| 2454 get isAbsolute() { | |
| 2455 return dart.notNull(!dart.equals(this.scheme, "")) && dart.notNull(dart.eq
uals(this.fragment, "")); | |
| 2456 } | |
| 2457 [_merge](base, reference) { | |
| 2458 if (base.isEmpty) | |
| 2459 return `/${reference}`; | |
| 2460 let backCount = 0; | |
| 2461 let refStart = 0; | |
| 2462 while (reference.startsWith("../", refStart)) { | |
| 2463 refStart = 3; | |
| 2464 backCount = dart.notNull(backCount) + 1; | |
| 2465 } | |
| 2466 let baseEnd = base.lastIndexOf('/'); | |
| 2467 while (dart.notNull(baseEnd) > 0 && dart.notNull(backCount) > 0) { | |
| 2468 let newEnd = base.lastIndexOf('/', dart.notNull(baseEnd) - 1); | |
| 2469 if (dart.notNull(newEnd) < 0) { | |
| 2470 break; | |
| 2471 } | |
| 2472 let delta = dart.notNull(baseEnd) - dart.notNull(newEnd); | |
| 2473 if ((delta === 2 || delta === 3) && base.codeUnitAt(dart.notNull(newEnd)
+ 1) === Uri._DOT && (delta === 2 || base.codeUnitAt(dart.notNull(newEnd) + 2)
=== Uri._DOT)) { | |
| 2474 break; | |
| 2475 } | |
| 2476 baseEnd = newEnd; | |
| 2477 backCount = dart.notNull(backCount) - 1; | |
| 2478 } | |
| 2479 return String['+'](base.substring(0, dart.notNull(baseEnd) + 1), reference
.substring(dart.notNull(refStart) - 3 * dart.notNull(backCount))); | |
| 2480 } | |
| 2481 [_hasDotSegments](path) { | |
| 2482 if (dart.notNull(path.length) > 0 && path.codeUnitAt(0) === Uri._DOT) | |
| 2483 return true; | |
| 2484 let index = path.indexOf("/."); | |
| 2485 return index !== -1; | |
| 2486 } | |
| 2487 [_removeDotSegments](path) { | |
| 2488 if (!dart.notNull(this[_hasDotSegments](path))) | |
| 2489 return path; | |
| 2490 let output = dart.as(new List.from([]), List$(String)); | |
| 2491 let appendSlash = false; | |
| 2492 for (let segment of path.split("/")) { | |
| 2493 appendSlash = false; | |
| 2494 if (dart.equals(segment, "..")) { | |
| 2495 if (!dart.notNull(output.isEmpty) && (output.length !== 1 || dart.notN
ull(!dart.equals(output.get(0), "")))) | |
| 2496 output.removeLast(); | |
| 2497 appendSlash = true; | |
| 2498 } else if (dart.equals(".", segment)) { | |
| 2499 appendSlash = true; | |
| 2500 } else { | |
| 2501 output.add(segment); | |
| 2502 } | |
| 2503 } | |
| 2504 if (appendSlash) | |
| 2505 output.add(""); | |
| 2506 return output.join("/"); | |
| 2507 } | |
| 2508 resolve(reference) { | |
| 2509 return this.resolveUri(Uri.parse(reference)); | |
| 2510 } | |
| 2511 resolveUri(reference) { | |
| 2512 let targetScheme = null; | |
| 2513 let targetUserInfo = ""; | |
| 2514 let targetHost = null; | |
| 2515 let targetPort = null; | |
| 2516 let targetPath = null; | |
| 2517 let targetQuery = null; | |
| 2518 if (reference.scheme.isNotEmpty) { | |
| 2519 targetScheme = reference.scheme; | |
| 2520 if (reference.hasAuthority) { | |
| 2521 targetUserInfo = reference.userInfo; | |
| 2522 targetHost = reference.host; | |
| 2523 targetPort = reference.hasPort ? reference.port : null; | |
| 2524 } | |
| 2525 targetPath = this[_removeDotSegments](reference.path); | |
| 2526 if (reference.hasQuery) { | |
| 2527 targetQuery = reference.query; | |
| 2528 } | |
| 2529 } else { | |
| 2530 targetScheme = this.scheme; | |
| 2531 if (reference.hasAuthority) { | |
| 2532 targetUserInfo = reference.userInfo; | |
| 2533 targetHost = reference.host; | |
| 2534 targetPort = _makePort(reference.hasPort ? reference.port : null, targ
etScheme); | |
| 2535 targetPath = this[_removeDotSegments](reference.path); | |
| 2536 if (reference.hasQuery) | |
| 2537 targetQuery = reference.query; | |
| 2538 } else { | |
| 2539 if (dart.equals(reference.path, "")) { | |
| 2540 targetPath = this[_path]; | |
| 2541 if (reference.hasQuery) { | |
| 2542 targetQuery = reference.query; | |
| 2543 } else { | |
| 2544 targetQuery = this[_query]; | |
| 2545 } | |
| 2546 } else { | |
| 2547 if (reference.path.startsWith("/")) { | |
| 2548 targetPath = this[_removeDotSegments](reference.path); | |
| 2549 } else { | |
| 2550 targetPath = this[_removeDotSegments](this[_merge](this[_path], re
ference.path)); | |
| 2551 } | |
| 2552 if (reference.hasQuery) | |
| 2553 targetQuery = reference.query; | |
| 2554 } | |
| 2555 targetUserInfo = this[_userInfo]; | |
| 2556 targetHost = this[_host]; | |
| 2557 targetPort = this[_port]; | |
| 2558 } | |
| 2559 } | |
| 2560 let fragment = reference.hasFragment ? reference.fragment : null; | |
| 2561 return new Uri._internal(targetScheme, targetUserInfo, targetHost, targetP
ort, targetPath, targetQuery, fragment); | |
| 2562 } | |
| 2563 get hasAuthority() { | |
| 2564 return this[_host] !== null; | |
| 2565 } | |
| 2566 get hasPort() { | |
| 2567 return this[_port] !== null; | |
| 2568 } | |
| 2569 get hasQuery() { | |
| 2570 return this[_query] !== null; | |
| 2571 } | |
| 2572 get hasFragment() { | |
| 2573 return this[_fragment] !== null; | |
| 2574 } | |
| 2575 get origin() { | |
| 2576 if (dart.notNull(dart.equals(this.scheme, "")) || dart.notNull(this[_host]
=== null) || dart.notNull(dart.equals(this[_host], ""))) { | |
| 2577 throw new StateError(`Cannot use origin without a scheme: ${this}`); | |
| 2578 } | |
| 2579 if (dart.notNull(!dart.equals(this.scheme, "http")) && dart.notNull(!dart.
equals(this.scheme, "https"))) { | |
| 2580 throw new StateError(`Origin is only applicable schemes http and https:
${this}`); | |
| 2581 } | |
| 2582 if (this[_port] === null) | |
| 2583 return `${this.scheme}://${this[_host]}`; | |
| 2584 return `${this.scheme}://${this[_host]}:${this[_port]}`; | |
| 2585 } | |
| 2586 toFilePath(opt$) { | |
| 2587 let windows = opt$.windows === void 0 ? null : opt$.windows; | |
| 2588 if (dart.notNull(!dart.equals(this.scheme, "")) && dart.notNull(!dart.equa
ls(this.scheme, "file"))) { | |
| 2589 throw new UnsupportedError(`Cannot extract a file path from a ${this.sch
eme} URI`); | |
| 2590 } | |
| 2591 if (!dart.equals(this.query, "")) { | |
| 2592 throw new UnsupportedError("Cannot extract a file path from a URI with a
query component"); | |
| 2593 } | |
| 2594 if (!dart.equals(this.fragment, "")) { | |
| 2595 throw new UnsupportedError("Cannot extract a file path from a URI with a
fragment component"); | |
| 2596 } | |
| 2597 if (windows === null) | |
| 2598 windows = _isWindows; | |
| 2599 return windows ? this[_toWindowsFilePath]() : this[_toFilePath](); | |
| 2600 } | |
| 2601 [_toFilePath]() { | |
| 2602 if (!dart.equals(this.host, "")) { | |
| 2603 throw new UnsupportedError("Cannot extract a non-Windows file path from
a file URI " + "with an authority"); | |
| 2604 } | |
| 2605 _checkNonWindowsPathReservedCharacters(this.pathSegments, false); | |
| 2606 let result = new StringBuffer(); | |
| 2607 if (this[_isPathAbsolute]) | |
| 2608 result.write("/"); | |
| 2609 result.writeAll(this.pathSegments, "/"); | |
| 2610 return result.toString(); | |
| 2611 } | |
| 2612 [_toWindowsFilePath]() { | |
| 2613 let hasDriveLetter = false; | |
| 2614 let segments = this.pathSegments; | |
| 2615 if (dart.notNull(segments.length) > 0 && segments.get(0).length === 2 && s
egments.get(0).codeUnitAt(1) === Uri._COLON) { | |
| 2616 _checkWindowsDriveLetter(segments.get(0).codeUnitAt(0), false); | |
| 2617 _checkWindowsPathReservedCharacters(segments, false, 1); | |
| 2618 hasDriveLetter = true; | |
| 2619 } else { | |
| 2620 _checkWindowsPathReservedCharacters(segments, false); | |
| 2621 } | |
| 2622 let result = new StringBuffer(); | |
| 2623 if (dart.notNull(this[_isPathAbsolute]) && !dart.notNull(hasDriveLetter)) | |
| 2624 result.write("\\"); | |
| 2625 if (!dart.equals(this.host, "")) { | |
| 2626 result.write("\\"); | |
| 2627 result.write(this.host); | |
| 2628 result.write("\\"); | |
| 2629 } | |
| 2630 result.writeAll(segments, "\\"); | |
| 2631 if (dart.notNull(hasDriveLetter) && segments.length === 1) | |
| 2632 result.write("\\"); | |
| 2633 return result.toString(); | |
| 2634 } | |
| 2635 get [_isPathAbsolute]() { | |
| 2636 if (dart.notNull(this.path === null) || dart.notNull(this.path.isEmpty)) | |
| 2637 return false; | |
| 2638 return this.path.startsWith('/'); | |
| 2639 } | |
| 2640 [_writeAuthority](ss) { | |
| 2641 if (this[_userInfo].isNotEmpty) { | |
| 2642 ss.write(this[_userInfo]); | |
| 2643 ss.write("@"); | |
| 2644 } | |
| 2645 if (this[_host] !== null) | |
| 2646 ss.write(this[_host]); | |
| 2647 if (this[_port] !== null) { | |
| 2648 ss.write(":"); | |
| 2649 ss.write(this[_port]); | |
| 2650 } | |
| 2651 } | |
| 2652 toString() { | |
| 2653 let sb = new StringBuffer(); | |
| 2654 _addIfNonEmpty(sb, this.scheme, this.scheme, ':'); | |
| 2655 if (dart.notNull(this.hasAuthority) || dart.notNull(this.path.startsWith("
//")) || dart.notNull(dart.equals(this.scheme, "file"))) { | |
| 2656 sb.write("//"); | |
| 2657 this[_writeAuthority](sb); | |
| 2658 } | |
| 2659 sb.write(this.path); | |
| 2660 if (this[_query] !== null) { | |
| 2661 sb.write("?"); | |
| 2662 sb.write(this[_query]); | |
| 2663 } | |
| 2664 if (this[_fragment] !== null) { | |
| 2665 sb.write("#"); | |
| 2666 sb.write(this[_fragment]); | |
| 2667 } | |
| 2668 return sb.toString(); | |
| 2669 } | |
| 2670 ['=='](other) { | |
| 2671 if (!dart.is(other, Uri)) | |
| 2672 return false; | |
| 2673 let uri = dart.as(other, Uri); | |
| 2674 return dart.notNull(dart.equals(this.scheme, uri.scheme)) && this.hasAutho
rity === uri.hasAuthority && dart.notNull(dart.equals(this.userInfo, uri.userInf
o)) && dart.notNull(dart.equals(this.host, uri.host)) && this.port === uri.port
&& dart.notNull(dart.equals(this.path, uri.path)) && this.hasQuery === uri.hasQu
ery && dart.notNull(dart.equals(this.query, uri.query)) && this.hasFragment ===
uri.hasFragment && dart.notNull(dart.equals(this.fragment, uri.fragment)); | |
| 2675 } | |
| 2676 get hashCode() { | |
| 2677 // Function combine: (dynamic, dynamic) → int | |
| 2678 function combine(part, current) { | |
| 2679 return dart.as(dart.dbinary(dart.dbinary(dart.dbinary(current, '*', 31),
'+', dart.dload(part, 'hashCode')), '&', 1073741823), int); | |
| 2680 } | |
| 2681 return combine(this.scheme, combine(this.userInfo, combine(this.host, comb
ine(this.port, combine(this.path, combine(this.query, combine(this.fragment, 1))
))))); | |
| 2682 } | |
| 2683 static [_addIfNonEmpty](sb, test, first, second) { | |
| 2684 if (!dart.equals("", test)) { | |
| 2685 sb.write(first); | |
| 2686 sb.write(second); | |
| 2687 } | |
| 2688 } | |
| 2689 static encodeComponent(component) { | |
| 2690 return _uriEncode(dart.as(Uri._unreserved2396Table, List$(int)), component
); | |
| 2691 } | |
| 2692 static encodeQueryComponent(component, opt$) { | |
| 2693 let encoding = opt$.encoding === void 0 ? convert.UTF8 : opt$.encoding; | |
| 2694 return _uriEncode(dart.as(Uri._unreservedTable, List$(int)), component, {e
ncoding: encoding, spaceToPlus: true}); | |
| 2695 } | |
| 2696 static decodeComponent(encodedComponent) { | |
| 2697 return _uriDecode(encodedComponent); | |
| 2698 } | |
| 2699 static decodeQueryComponent(encodedComponent, opt$) { | |
| 2700 let encoding = opt$.encoding === void 0 ? convert.UTF8 : opt$.encoding; | |
| 2701 return _uriDecode(encodedComponent, {plusToSpace: true, encoding: encoding
}); | |
| 2702 } | |
| 2703 static encodeFull(uri) { | |
| 2704 return _uriEncode(dart.as(Uri._encodeFullTable, List$(int)), uri); | |
| 2705 } | |
| 2706 static decodeFull(uri) { | |
| 2707 return _uriDecode(uri); | |
| 2708 } | |
| 2709 static splitQueryString(query, opt$) { | |
| 2710 let encoding = opt$.encoding === void 0 ? convert.UTF8 : opt$.encoding; | |
| 2711 return dart.as(query.split("&").fold(dart.map(), dart.closureWrap((map, el
ement) => { | |
| 2712 let index = dart.as(dart.dinvoke(element, 'indexOf', "="), int); | |
| 2713 if (index === -1) { | |
| 2714 if (!dart.equals(element, "")) { | |
| 2715 dart.dsetindex(map, decodeQueryComponent(dart.as(element, String), {
encoding: encoding}), ""); | |
| 2716 } | |
| 2717 } else if (index !== 0) { | |
| 2718 let key = dart.dinvoke(element, 'substring', 0, index); | |
| 2719 let value = dart.dinvoke(element, 'substring', dart.notNull(index) + 1
); | |
| 2720 dart.dsetindex(map, Uri.decodeQueryComponent(dart.as(key, String), {en
coding: encoding}), decodeQueryComponent(dart.as(value, String), {encoding: enco
ding})); | |
| 2721 } | |
| 2722 return map; | |
| 2723 }, "(dynamic, String) → dynamic")), Map$(String, String)); | |
| 2724 } | |
| 2725 static parseIPv4Address(host) { | |
| 2726 // Function error: (String) → void | |
| 2727 function error(msg) { | |
| 2728 throw new FormatException(`Illegal IPv4 address, ${msg}`); | |
| 2729 } | |
| 2730 let bytes = host.split('.'); | |
| 2731 if (bytes.length !== 4) { | |
| 2732 error('IPv4 address should contain exactly 4 parts'); | |
| 2733 } | |
| 2734 return dart.as(bytes.map(dart.closureWrap((byteString) => { | |
| 2735 let byte = int.parse(dart.as(byteString, String)); | |
| 2736 if (dart.notNull(byte) < 0 || dart.notNull(byte) > 255) { | |
| 2737 error('each part must be in the range of `0..255`'); | |
| 2738 } | |
| 2739 return byte; | |
| 2740 }, "(String) → dynamic")).toList(), List$(int)); | |
| 2741 } | |
| 2742 static parseIPv6Address(host, start, end) { | |
| 2743 if (start === void 0) | |
| 2744 start = 0; | |
| 2745 if (end === void 0) | |
| 2746 end = null; | |
| 2747 if (end === null) | |
| 2748 end = host.length; | |
| 2749 // Function error: (String, [dynamic]) → void | |
| 2750 function error(msg, position) { | |
| 2751 if (position === void 0) | |
| 2752 position = null; | |
| 2753 throw new FormatException(`Illegal IPv6 address, ${msg}`, host, dart.as(
position, int)); | |
| 2754 } | |
| 2755 // Function parseHex: (int, int) → int | |
| 2756 function parseHex(start, end) { | |
| 2757 if (dart.notNull(end) - dart.notNull(start) > 4) { | |
| 2758 error('an IPv6 part can only contain a maximum of 4 hex digits', start
); | |
| 2759 } | |
| 2760 let value = int.parse(host.substring(start, end), {radix: 16}); | |
| 2761 if (dart.notNull(value) < 0 || dart.notNull(value) > (1 << 16) - 1) { | |
| 2762 error('each part must be in the range of `0x0..0xFFFF`', start); | |
| 2763 } | |
| 2764 return value; | |
| 2765 } | |
| 2766 if (dart.notNull(host.length) < 2) | |
| 2767 error('address is too short'); | |
| 2768 let parts = dart.as(new List.from([]), List$(int)); | |
| 2769 let wildcardSeen = false; | |
| 2770 let partStart = start; | |
| 2771 for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(
i) + 1) { | |
| 2772 if (host.codeUnitAt(i) === Uri._COLON) { | |
| 2773 if (i === start) { | |
| 2774 i = dart.notNull(i) + 1; | |
| 2775 if (host.codeUnitAt(i) !== Uri._COLON) { | |
| 2776 error('invalid start colon.', i); | |
| 2777 } | |
| 2778 partStart = i; | |
| 2779 } | |
| 2780 if (i === partStart) { | |
| 2781 if (wildcardSeen) { | |
| 2782 error('only one wildcard `::` is allowed', i); | |
| 2783 } | |
| 2784 wildcardSeen = true; | |
| 2785 parts.add(-1); | |
| 2786 } else { | |
| 2787 parts.add(parseHex(partStart, i)); | |
| 2788 } | |
| 2789 partStart = dart.notNull(i) + 1; | |
| 2790 } | |
| 2791 } | |
| 2792 if (parts.length === 0) | |
| 2793 error('too few parts'); | |
| 2794 let atEnd = partStart === end; | |
| 2795 let isLastWildcard = parts.last === -1; | |
| 2796 if (dart.notNull(atEnd) && !dart.notNull(isLastWildcard)) { | |
| 2797 error('expected a part after last `:`', end); | |
| 2798 } | |
| 2799 if (!dart.notNull(atEnd)) { | |
| 2800 try { | |
| 2801 parts.add(parseHex(partStart, end)); | |
| 2802 } catch (e) { | |
| 2803 try { | |
| 2804 let last = parseIPv4Address(host.substring(partStart, end)); | |
| 2805 parts.add(dart.notNull(last.get(0)) << 8 | dart.notNull(last.get(1))
); | |
| 2806 parts.add(dart.notNull(last.get(2)) << 8 | dart.notNull(last.get(3))
); | |
| 2807 } catch (e) { | |
| 2808 error('invalid end of IPv6 address.', partStart); | |
| 2809 } | |
| 2810 | |
| 2811 } | |
| 2812 | |
| 2813 } | |
| 2814 if (wildcardSeen) { | |
| 2815 if (dart.notNull(parts.length) > 7) { | |
| 2816 error('an address with a wildcard must have less than 7 parts'); | |
| 2817 } | |
| 2818 } else if (parts.length !== 8) { | |
| 2819 error('an address without a wildcard must contain exactly 8 parts'); | |
| 2820 } | |
| 2821 let bytes = new List(16); | |
| 2822 for (let i = 0, index = 0; dart.notNull(i) < dart.notNull(parts.length); i
= dart.notNull(i) + 1) { | |
| 2823 let value = parts.get(i); | |
| 2824 if (value === -1) { | |
| 2825 let wildCardLength = 9 - dart.notNull(parts.length); | |
| 2826 for (let j = 0; dart.notNull(j) < dart.notNull(wildCardLength); j = da
rt.notNull(j) + 1) { | |
| 2827 bytes.set(index, 0); | |
| 2828 bytes.set(dart.notNull(index) + 1, 0); | |
| 2829 index = 2; | |
| 2830 } | |
| 2831 } else { | |
| 2832 bytes.set(index, dart.notNull(value) >> 8); | |
| 2833 bytes.set(dart.notNull(index) + 1, dart.notNull(value) & 255); | |
| 2834 index = 2; | |
| 2835 } | |
| 2836 } | |
| 2837 return dart.as(bytes, List$(int)); | |
| 2838 } | |
| 2839 static [_uriEncode](canonicalTable, text, opt$) { | |
| 2840 let encoding = opt$.encoding === void 0 ? convert.UTF8 : opt$.encoding; | |
| 2841 let spaceToPlus = opt$.spaceToPlus === void 0 ? false : opt$.spaceToPlus; | |
| 2842 // Function byteToHex: (dynamic, dynamic) → dynamic | |
| 2843 function byteToHex(byte, buffer) { | |
| 2844 let hex = '0123456789ABCDEF'; | |
| 2845 dart.dinvoke(buffer, 'writeCharCode', hex.codeUnitAt(dart.as(dart.dbinar
y(byte, '>>', 4), int))); | |
| 2846 dart.dinvoke(buffer, 'writeCharCode', hex.codeUnitAt(dart.as(dart.dbinar
y(byte, '&', 15), int))); | |
| 2847 } | |
| 2848 let result = new StringBuffer(); | |
| 2849 let bytes = encoding.encode(text); | |
| 2850 for (let i = 0; dart.notNull(i) < dart.notNull(bytes.length); i = dart.not
Null(i) + 1) { | |
| 2851 let byte = bytes.get(i); | |
| 2852 if (dart.notNull(byte) < 128 && (dart.notNull(canonicalTable.get(dart.no
tNull(byte) >> 4)) & 1 << (dart.notNull(byte) & 15)) !== 0) { | |
| 2853 result.writeCharCode(byte); | |
| 2854 } else if (dart.notNull(spaceToPlus) && byte === Uri._SPACE) { | |
| 2855 result.writeCharCode(Uri._PLUS); | |
| 2856 } else { | |
| 2857 result.writeCharCode(Uri._PERCENT); | |
| 2858 byteToHex(byte, result); | |
| 2859 } | |
| 2860 } | |
| 2861 return result.toString(); | |
| 2862 } | |
| 2863 static [_hexCharPairToByte](s, pos) { | |
| 2864 let byte = 0; | |
| 2865 for (let i = 0; dart.notNull(i) < 2; i = dart.notNull(i) + 1) { | |
| 2866 let charCode = s.codeUnitAt(dart.notNull(pos) + dart.notNull(i)); | |
| 2867 if (48 <= dart.notNull(charCode) && dart.notNull(charCode) <= 57) { | |
| 2868 byte = dart.notNull(byte) * 16 + dart.notNull(charCode) - 48; | |
| 2869 } else { | |
| 2870 charCode = 32; | |
| 2871 if (97 <= dart.notNull(charCode) && dart.notNull(charCode) <= 102) { | |
| 2872 byte = dart.notNull(byte) * 16 + dart.notNull(charCode) - 87; | |
| 2873 } else { | |
| 2874 throw new ArgumentError("Invalid URL encoding"); | |
| 2875 } | |
| 2876 } | |
| 2877 } | |
| 2878 return byte; | |
| 2879 } | |
| 2880 static [_uriDecode](text, opt$) { | |
| 2881 let plusToSpace = opt$.plusToSpace === void 0 ? false : opt$.plusToSpace; | |
| 2882 let encoding = opt$.encoding === void 0 ? convert.UTF8 : opt$.encoding; | |
| 2883 let simple = true; | |
| 2884 for (let i = 0; dart.notNull(i) < dart.notNull(text.length) && dart.notNul
l(simple); i = dart.notNull(i) + 1) { | |
| 2885 let codeUnit = text.codeUnitAt(i); | |
| 2886 simple = codeUnit !== Uri._PERCENT && codeUnit !== Uri._PLUS; | |
| 2887 } | |
| 2888 let bytes = null; | |
| 2889 if (simple) { | |
| 2890 if (dart.notNull(dart.equals(encoding, convert.UTF8)) || dart.notNull(da
rt.equals(encoding, convert.LATIN1))) { | |
| 2891 return text; | |
| 2892 } else { | |
| 2893 bytes = text.codeUnits; | |
| 2894 } | |
| 2895 } else { | |
| 2896 bytes = dart.as(new List(), List$(int)); | |
| 2897 for (let i = 0; dart.notNull(i) < dart.notNull(text.length); i = dart.no
tNull(i) + 1) { | |
| 2898 let codeUnit = text.codeUnitAt(i); | |
| 2899 if (dart.notNull(codeUnit) > 127) { | |
| 2900 throw new ArgumentError("Illegal percent encoding in URI"); | |
| 2901 } | |
| 2902 if (codeUnit === Uri._PERCENT) { | |
| 2903 if (dart.notNull(i) + 3 > dart.notNull(text.length)) { | |
| 2904 throw new ArgumentError('Truncated URI'); | |
| 2905 } | |
| 2906 bytes.add(_hexCharPairToByte(text, dart.notNull(i) + 1)); | |
| 2907 i = 2; | |
| 2908 } else if (dart.notNull(plusToSpace) && codeUnit === Uri._PLUS) { | |
| 2909 bytes.add(Uri._SPACE); | |
| 2910 } else { | |
| 2911 bytes.add(codeUnit); | |
| 2912 } | |
| 2913 } | |
| 2914 } | |
| 2915 return encoding.decode(bytes); | |
| 2916 } | |
| 2917 static [_isAlphabeticCharacter](codeUnit) { | |
| 2918 return dart.notNull(codeUnit) >= dart.notNull(Uri._LOWER_CASE_A) && dart.n
otNull(codeUnit) <= dart.notNull(Uri._LOWER_CASE_Z) || dart.notNull(codeUnit) >=
dart.notNull(Uri._UPPER_CASE_A) && dart.notNull(codeUnit) <= dart.notNull(Uri._
UPPER_CASE_Z); | |
| 2919 } | |
| 2920 } | |
| 2921 dart.defineNamedConstructor(Uri, '_internal'); | |
| 2922 dart.defineNamedConstructor(Uri, 'http'); | |
| 2923 dart.defineNamedConstructor(Uri, 'https'); | |
| 2924 dart.defineNamedConstructor(Uri, 'file'); | |
| 2925 Uri._SPACE = 32; | |
| 2926 Uri._DOUBLE_QUOTE = 34; | |
| 2927 Uri._NUMBER_SIGN = 35; | |
| 2928 Uri._PERCENT = 37; | |
| 2929 Uri._ASTERISK = 42; | |
| 2930 Uri._PLUS = 43; | |
| 2931 Uri._DOT = 46; | |
| 2932 Uri._SLASH = 47; | |
| 2933 Uri._ZERO = 48; | |
| 2934 Uri._NINE = 57; | |
| 2935 Uri._COLON = 58; | |
| 2936 Uri._LESS = 60; | |
| 2937 Uri._GREATER = 62; | |
| 2938 Uri._QUESTION = 63; | |
| 2939 Uri._AT_SIGN = 64; | |
| 2940 Uri._UPPER_CASE_A = 65; | |
| 2941 Uri._UPPER_CASE_F = 70; | |
| 2942 Uri._UPPER_CASE_Z = 90; | |
| 2943 Uri._LEFT_BRACKET = 91; | |
| 2944 Uri._BACKSLASH = 92; | |
| 2945 Uri._RIGHT_BRACKET = 93; | |
| 2946 Uri._LOWER_CASE_A = 97; | |
| 2947 Uri._LOWER_CASE_F = 102; | |
| 2948 Uri._LOWER_CASE_Z = 122; | |
| 2949 Uri._BAR = 124; | |
| 2950 Uri._unreservedTable = /* Unimplemented const */new List.from([0, 0, 24576, 10
23, 65534, 34815, 65534, 18431]); | |
| 2951 Uri._unreserved2396Table = /* Unimplemented const */new List.from([0, 0, 26498
, 1023, 65534, 34815, 65534, 18431]); | |
| 2952 Uri._encodeFullTable = /* Unimplemented const */new List.from([0, 0, 65498, 45
055, 65535, 34815, 65534, 18431]); | |
| 2953 Uri._schemeTable = /* Unimplemented const */new List.from([0, 0, 26624, 1023,
65534, 2047, 65534, 2047]); | |
| 2954 Uri._schemeLowerTable = /* Unimplemented const */new List.from([0, 0, 26624, 1
023, 0, 0, 65534, 2047]); | |
| 2955 Uri._subDelimitersTable = /* Unimplemented const */new List.from([0, 0, 32722,
11263, 65534, 34815, 65534, 18431]); | |
| 2956 Uri._genDelimitersTable = /* Unimplemented const */new List.from([0, 0, 32776,
33792, 1, 10240, 0, 0]); | |
| 2957 Uri._userinfoTable = /* Unimplemented const */new List.from([0, 0, 32722, 1228
7, 65534, 34815, 65534, 18431]); | |
| 2958 Uri._regNameTable = /* Unimplemented const */new List.from([0, 0, 32754, 11263
, 65534, 34815, 65534, 18431]); | |
| 2959 Uri._pathCharTable = /* Unimplemented const */new List.from([0, 0, 32722, 1228
7, 65535, 34815, 65534, 18431]); | |
| 2960 Uri._pathCharOrSlashTable = /* Unimplemented const */new List.from([0, 0, 6549
0, 12287, 65535, 34815, 65534, 18431]); | |
| 2961 Uri._queryCharTable = /* Unimplemented const */new List.from([0, 0, 65490, 450
55, 65535, 34815, 65534, 18431]); | |
| 2962 // Function _symbolToString: (Symbol) → String | |
| 2963 function _symbolToString(symbol) { | |
| 2964 return _internal.Symbol.getName(dart.as(symbol, _internal.Symbol)); | |
| 2965 } | |
| 2966 // Function _symbolMapToStringMap: (Map<Symbol, dynamic>) → dynamic | |
| 2967 function _symbolMapToStringMap(map) { | |
| 2968 if (map === null) | |
| 2969 return null; | |
| 2970 let result = new Map(); | |
| 2971 map.forEach((key, value) => { | |
| 2972 result.set(_symbolToString(key), value); | |
| 2973 }); | |
| 2974 return result; | |
| 2975 } | |
| 2976 dart.defineLazyClass(exports, { | |
| 2977 get _ListConstructorSentinel() { | |
| 2978 class _ListConstructorSentinel extends _interceptors.JSInt { | |
| 2979 _ListConstructorSentinel() { | |
| 2980 super.JSInt(); | |
| 2981 } | |
| 2982 } | |
| 2983 return _ListConstructorSentinel; | |
| 2984 } | |
| 2985 }); | |
| 2986 // Exports: | |
| 2987 exports.Deprecated = Deprecated; | |
| 2988 exports.Object = Object; | |
| 2989 exports.deprecated = deprecated; | |
| 2990 exports.override = override; | |
| 2991 exports.proxy = proxy; | |
| 2992 exports.bool = bool; | |
| 2993 exports.Comparable = Comparable; | |
| 2994 exports.Comparable$ = Comparable$; | |
| 2995 exports.DateTime = DateTime; | |
| 2996 exports.double = double; | |
| 2997 exports.num = num; | |
| 2998 exports.Duration = Duration; | |
| 2999 exports.Error = Error; | |
| 3000 exports.AssertionError = AssertionError; | |
| 3001 exports.TypeError = TypeError; | |
| 3002 exports.CastError = CastError; | |
| 3003 exports.NullThrownError = NullThrownError; | |
| 3004 exports.ArgumentError = ArgumentError; | |
| 3005 exports.RangeError = RangeError; | |
| 3006 exports.IndexError = IndexError; | |
| 3007 exports.FallThroughError = FallThroughError; | |
| 3008 exports.AbstractClassInstantiationError = AbstractClassInstantiationError; | |
| 3009 exports.NoSuchMethodError = NoSuchMethodError; | |
| 3010 exports.UnsupportedError = UnsupportedError; | |
| 3011 exports.UnimplementedError = UnimplementedError; | |
| 3012 exports.StateError = StateError; | |
| 3013 exports.ConcurrentModificationError = ConcurrentModificationError; | |
| 3014 exports.OutOfMemoryError = OutOfMemoryError; | |
| 3015 exports.StackOverflowError = StackOverflowError; | |
| 3016 exports.CyclicInitializationError = CyclicInitializationError; | |
| 3017 exports.Exception = Exception; | |
| 3018 exports.FormatException = FormatException; | |
| 3019 exports.IntegerDivisionByZeroException = IntegerDivisionByZeroException; | |
| 3020 exports.Expando = Expando; | |
| 3021 exports.Expando$ = Expando$; | |
| 3022 exports.Function = Function; | |
| 3023 exports.identical = identical; | |
| 3024 exports.identityHashCode = identityHashCode; | |
| 3025 exports.int = int; | |
| 3026 exports.Invocation = Invocation; | |
| 3027 exports.Iterable = Iterable; | |
| 3028 exports.Iterable$ = Iterable$; | |
| 3029 exports.BidirectionalIterator = BidirectionalIterator; | |
| 3030 exports.BidirectionalIterator$ = BidirectionalIterator$; | |
| 3031 exports.Iterator = Iterator; | |
| 3032 exports.Iterator$ = Iterator$; | |
| 3033 exports.List = List; | |
| 3034 exports.List$ = List$; | |
| 3035 exports.Map = Map; | |
| 3036 exports.Map$ = Map$; | |
| 3037 exports.Null = Null; | |
| 3038 exports.Pattern = Pattern; | |
| 3039 exports.print = print; | |
| 3040 exports.Match = Match; | |
| 3041 exports.RegExp = RegExp; | |
| 3042 exports.Set = Set; | |
| 3043 exports.Set$ = Set$; | |
| 3044 exports.Sink = Sink; | |
| 3045 exports.Sink$ = Sink$; | |
| 3046 exports.StackTrace = StackTrace; | |
| 3047 exports.Stopwatch = Stopwatch; | |
| 3048 exports.String = String; | |
| 3049 exports.Runes = Runes; | |
| 3050 exports.RuneIterator = RuneIterator; | |
| 3051 exports.StringBuffer = StringBuffer; | |
| 3052 exports.StringSink = StringSink; | |
| 3053 exports.Symbol = Symbol; | |
| 3054 exports.Type = Type; | |
| 3055 exports.Uri = Uri; | |
| 3056 })(core || (core = {})); | |
| OLD | NEW |