UNPKG

1.39 kBJavaScriptView Raw
1/*
2 MIT License http://www.opensource.org/licenses/mit-license.php
3 Author Tobias Koppers @sokra
4*/
5"use strict";
6
7const Source = require("./Source");
8
9class CompatSource extends Source {
10 static from(sourceLike) {
11 return sourceLike instanceof Source
12 ? sourceLike
13 : new CompatSource(sourceLike);
14 }
15
16 constructor(sourceLike) {
17 super();
18 this._sourceLike = sourceLike;
19 }
20
21 source() {
22 return this._sourceLike.source();
23 }
24
25 buffer() {
26 if (typeof this._sourceLike.buffer === "function") {
27 return this._sourceLike.buffer();
28 }
29 return super.buffer();
30 }
31
32 size() {
33 if (typeof this._sourceLike.size === "function") {
34 return this._sourceLike.size();
35 }
36 return super.size();
37 }
38
39 map(options) {
40 if (typeof this._sourceLike.map === "function") {
41 return this._sourceLike.map(options);
42 }
43 return super.map(options);
44 }
45
46 sourceAndMap(options) {
47 if (typeof this._sourceLike.sourceAndMap === "function") {
48 return this._sourceLike.sourceAndMap(options);
49 }
50 return super.sourceAndMap(options);
51 }
52
53 updateHash(hash) {
54 if (typeof this._sourceLike.updateHash === "function") {
55 return this._sourceLike.updateHash(hash);
56 }
57 if (typeof this._sourceLike.map === "function") {
58 throw new Error(
59 "A Source-like object with a 'map' method must also provide an 'updateHash' method"
60 );
61 }
62 hash.update(this.buffer());
63 }
64}
65
66module.exports = CompatSource;