1 | ;
|
2 | /**
|
3 | * @license
|
4 | * Copyright Google LLC All Rights Reserved.
|
5 | *
|
6 | * Use of this source code is governed by an MIT-style license that can be
|
7 | * found in the LICENSE file at https://angular.io/license
|
8 | */
|
9 | Object.defineProperty(exports, "__esModule", { value: true });
|
10 | exports.UpdateRecorderBom = exports.UpdateRecorderBase = void 0;
|
11 | const exception_1 = require("../exception/exception");
|
12 | const update_buffer_1 = require("../utility/update-buffer");
|
13 | class UpdateRecorderBase {
|
14 | constructor(entry) {
|
15 | this._original = Buffer.from(entry.content);
|
16 | this._content = update_buffer_1.UpdateBufferBase.create(entry.content);
|
17 | this._path = entry.path;
|
18 | }
|
19 | static createFromFileEntry(entry) {
|
20 | const c0 = entry.content.byteLength > 0 && entry.content.readUInt8(0);
|
21 | const c1 = entry.content.byteLength > 1 && entry.content.readUInt8(1);
|
22 | const c2 = entry.content.byteLength > 2 && entry.content.readUInt8(2);
|
23 | // Check if we're BOM.
|
24 | if (c0 == 0xef && c1 == 0xbb && c2 == 0xbf) {
|
25 | return new UpdateRecorderBom(entry);
|
26 | }
|
27 | else if (c0 === 0xff && c1 == 0xfe) {
|
28 | return new UpdateRecorderBom(entry);
|
29 | }
|
30 | else if (c0 === 0xfe && c1 == 0xff) {
|
31 | return new UpdateRecorderBom(entry);
|
32 | }
|
33 | return new UpdateRecorderBase(entry);
|
34 | }
|
35 | get path() {
|
36 | return this._path;
|
37 | }
|
38 | // These just record changes.
|
39 | insertLeft(index, content) {
|
40 | this._content.insertLeft(index, typeof content == 'string' ? Buffer.from(content) : content);
|
41 | return this;
|
42 | }
|
43 | insertRight(index, content) {
|
44 | this._content.insertRight(index, typeof content == 'string' ? Buffer.from(content) : content);
|
45 | return this;
|
46 | }
|
47 | remove(index, length) {
|
48 | this._content.remove(index, length);
|
49 | return this;
|
50 | }
|
51 | apply(content) {
|
52 | if (!content.equals(this._content.original)) {
|
53 | throw new exception_1.ContentHasMutatedException(this.path);
|
54 | }
|
55 | return this._content.generate();
|
56 | }
|
57 | }
|
58 | exports.UpdateRecorderBase = UpdateRecorderBase;
|
59 | class UpdateRecorderBom extends UpdateRecorderBase {
|
60 | constructor(entry, _delta = 1) {
|
61 | super(entry);
|
62 | this._delta = _delta;
|
63 | }
|
64 | insertLeft(index, content) {
|
65 | return super.insertLeft(index + this._delta, content);
|
66 | }
|
67 | insertRight(index, content) {
|
68 | return super.insertRight(index + this._delta, content);
|
69 | }
|
70 | remove(index, length) {
|
71 | return super.remove(index + this._delta, length);
|
72 | }
|
73 | }
|
74 | exports.UpdateRecorderBom = UpdateRecorderBom;
|
75 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyX2RldmtpdC9zY2hlbWF0aWNzL3NyYy90cmVlL3JlY29yZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7OztBQUVILHNEQUFvRTtBQUNwRSw0REFBNEQ7QUFHNUQsTUFBYSxrQkFBa0I7SUFLN0IsWUFBWSxLQUFnQjtRQUMxQixJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxRQUFRLEdBQUcsZ0NBQWdCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7SUFDMUIsQ0FBQztJQUVELE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxLQUFnQjtRQUN6QyxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEUsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV0RSxzQkFBc0I7UUFDdEIsSUFBSSxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLElBQUksRUFBRTtZQUMxQyxPQUFPLElBQUksaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDckM7YUFBTSxJQUFJLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxJQUFJLElBQUksRUFBRTtZQUNwQyxPQUFPLElBQUksaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDckM7YUFBTSxJQUFJLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxJQUFJLElBQUksRUFBRTtZQUNwQyxPQUFPLElBQUksaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDckM7UUFFRCxPQUFPLElBQUksa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBRUQsNkJBQTZCO0lBQzdCLFVBQVUsQ0FBQyxLQUFhLEVBQUUsT0FBd0I7UUFDaEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLE9BQU8sT0FBTyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFN0YsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQWEsRUFBRSxPQUF3QjtRQUNqRCxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsT0FBTyxPQUFPLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUU5RixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBYSxFQUFFLE1BQWM7UUFDbEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRXBDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFlO1FBQ25CLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDM0MsTUFBTSxJQUFJLHNDQUEwQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNqRDtRQUVELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0NBQ0Y7QUExREQsZ0RBMERDO0FBRUQsTUFBYSxpQkFBa0IsU0FBUSxrQkFBa0I7SUFDdkQsWUFBWSxLQUFnQixFQUFVLFNBQVMsQ0FBQztRQUM5QyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFEdUIsV0FBTSxHQUFOLE1BQU0sQ0FBSTtJQUVoRCxDQUFDO0lBRVEsVUFBVSxDQUFDLEtBQWEsRUFBRSxPQUF3QjtRQUN6RCxPQUFPLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVRLFdBQVcsQ0FBQyxLQUFhLEVBQUUsT0FBd0I7UUFDMUQsT0FBTyxLQUFLLENBQUMsV0FBVyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFUSxNQUFNLENBQUMsS0FBYSxFQUFFLE1BQWM7UUFDM0MsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ25ELENBQUM7Q0FDRjtBQWhCRCw4Q0FnQkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHsgQ29udGVudEhhc011dGF0ZWRFeGNlcHRpb24gfSBmcm9tICcuLi9leGNlcHRpb24vZXhjZXB0aW9uJztcbmltcG9ydCB7IFVwZGF0ZUJ1ZmZlckJhc2UgfSBmcm9tICcuLi91dGlsaXR5L3VwZGF0ZS1idWZmZXInO1xuaW1wb3J0IHsgRmlsZUVudHJ5LCBVcGRhdGVSZWNvcmRlciB9IGZyb20gJy4vaW50ZXJmYWNlJztcblxuZXhwb3J0IGNsYXNzIFVwZGF0ZVJlY29yZGVyQmFzZSBpbXBsZW1lbnRzIFVwZGF0ZVJlY29yZGVyIHtcbiAgcHJvdGVjdGVkIF9wYXRoOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfb3JpZ2luYWw6IEJ1ZmZlcjtcbiAgcHJvdGVjdGVkIF9jb250ZW50OiBVcGRhdGVCdWZmZXJCYXNlO1xuXG4gIGNvbnN0cnVjdG9yKGVudHJ5OiBGaWxlRW50cnkpIHtcbiAgICB0aGlzLl9vcmlnaW5hbCA9IEJ1ZmZlci5mcm9tKGVudHJ5LmNvbnRlbnQpO1xuICAgIHRoaXMuX2NvbnRlbnQgPSBVcGRhdGVCdWZmZXJCYXNlLmNyZWF0ZShlbnRyeS5jb250ZW50KTtcbiAgICB0aGlzLl9wYXRoID0gZW50cnkucGF0aDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVGcm9tRmlsZUVudHJ5KGVudHJ5OiBGaWxlRW50cnkpOiBVcGRhdGVSZWNvcmRlckJhc2Uge1xuICAgIGNvbnN0IGMwID0gZW50cnkuY29udGVudC5ieXRlTGVuZ3RoID4gMCAmJiBlbnRyeS5jb250ZW50LnJlYWRVSW50OCgwKTtcbiAgICBjb25zdCBjMSA9IGVudHJ5LmNvbnRlbnQuYnl0ZUxlbmd0aCA+IDEgJiYgZW50cnkuY29udGVudC5yZWFkVUludDgoMSk7XG4gICAgY29uc3QgYzIgPSBlbnRyeS5jb250ZW50LmJ5dGVMZW5ndGggPiAyICYmIGVudHJ5LmNvbnRlbnQucmVhZFVJbnQ4KDIpO1xuXG4gICAgLy8gQ2hlY2sgaWYgd2UncmUgQk9NLlxuICAgIGlmIChjMCA9PSAweGVmICYmIGMxID09IDB4YmIgJiYgYzIgPT0gMHhiZikge1xuICAgICAgcmV0dXJuIG5ldyBVcGRhdGVSZWNvcmRlckJvbShlbnRyeSk7XG4gICAgfSBlbHNlIGlmIChjMCA9PT0gMHhmZiAmJiBjMSA9PSAweGZlKSB7XG4gICAgICByZXR1cm4gbmV3IFVwZGF0ZVJlY29yZGVyQm9tKGVudHJ5KTtcbiAgICB9IGVsc2UgaWYgKGMwID09PSAweGZlICYmIGMxID09IDB4ZmYpIHtcbiAgICAgIHJldHVybiBuZXcgVXBkYXRlUmVjb3JkZXJCb20oZW50cnkpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgVXBkYXRlUmVjb3JkZXJCYXNlKGVudHJ5KTtcbiAgfVxuXG4gIGdldCBwYXRoKCkge1xuICAgIHJldHVybiB0aGlzLl9wYXRoO1xuICB9XG5cbiAgLy8gVGhlc2UganVzdCByZWNvcmQgY2hhbmdlcy5cbiAgaW5zZXJ0TGVmdChpbmRleDogbnVtYmVyLCBjb250ZW50OiBCdWZmZXIgfCBzdHJpbmcpOiBVcGRhdGVSZWNvcmRlciB7XG4gICAgdGhpcy5fY29udGVudC5pbnNlcnRMZWZ0KGluZGV4LCB0eXBlb2YgY29udGVudCA9PSAnc3RyaW5nJyA/IEJ1ZmZlci5mcm9tKGNvbnRlbnQpIDogY29udGVudCk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGluc2VydFJpZ2h0KGluZGV4OiBudW1iZXIsIGNvbnRlbnQ6IEJ1ZmZlciB8IHN0cmluZyk6IFVwZGF0ZVJlY29yZGVyIHtcbiAgICB0aGlzLl9jb250ZW50Lmluc2VydFJpZ2h0KGluZGV4LCB0eXBlb2YgY29udGVudCA9PSAnc3RyaW5nJyA/IEJ1ZmZlci5mcm9tKGNvbnRlbnQpIDogY29udGVudCk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHJlbW92ZShpbmRleDogbnVtYmVyLCBsZW5ndGg6IG51bWJlcik6IFVwZGF0ZVJlY29yZGVyIHtcbiAgICB0aGlzLl9jb250ZW50LnJlbW92ZShpbmRleCwgbGVuZ3RoKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgYXBwbHkoY29udGVudDogQnVmZmVyKTogQnVmZmVyIHtcbiAgICBpZiAoIWNvbnRlbnQuZXF1YWxzKHRoaXMuX2NvbnRlbnQub3JpZ2luYWwpKSB7XG4gICAgICB0aHJvdyBuZXcgQ29udGVudEhhc011dGF0ZWRFeGNlcHRpb24odGhpcy5wYXRoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fY29udGVudC5nZW5lcmF0ZSgpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBVcGRhdGVSZWNvcmRlckJvbSBleHRlbmRzIFVwZGF0ZVJlY29yZGVyQmFzZSB7XG4gIGNvbnN0cnVjdG9yKGVudHJ5OiBGaWxlRW50cnksIHByaXZhdGUgX2RlbHRhID0gMSkge1xuICAgIHN1cGVyKGVudHJ5KTtcbiAgfVxuXG4gIG92ZXJyaWRlIGluc2VydExlZnQoaW5kZXg6IG51bWJlciwgY29udGVudDogQnVmZmVyIHwgc3RyaW5nKSB7XG4gICAgcmV0dXJuIHN1cGVyLmluc2VydExlZnQoaW5kZXggKyB0aGlzLl9kZWx0YSwgY29udGVudCk7XG4gIH1cblxuICBvdmVycmlkZSBpbnNlcnRSaWdodChpbmRleDogbnVtYmVyLCBjb250ZW50OiBCdWZmZXIgfCBzdHJpbmcpIHtcbiAgICByZXR1cm4gc3VwZXIuaW5zZXJ0UmlnaHQoaW5kZXggKyB0aGlzLl9kZWx0YSwgY29udGVudCk7XG4gIH1cblxuICBvdmVycmlkZSByZW1vdmUoaW5kZXg6IG51bWJlciwgbGVuZ3RoOiBudW1iZXIpIHtcbiAgICByZXR1cm4gc3VwZXIucmVtb3ZlKGluZGV4ICsgdGhpcy5fZGVsdGEsIGxlbmd0aCk7XG4gIH1cbn1cbiJdfQ== |
\ | No newline at end of file |