diff --git a/README.md b/README.md index 673d2b3..f2c7516 100644 --- a/README.md +++ b/README.md @@ -55,18 +55,24 @@ The SuiteScriptMocks object exported by default by this package has a number of | currentScript | Details loaded when using runtime.getCurrentScript() | | currentUser | Details loaded when using runtime.getCurrentUser() | | currentSession | Details loaded when using runtime.getCurrentSession() | -| caches | Map of caches used by cache.getCache. | +| features | Map of which netsuite features are enabled, used by runtime.isFeatureInEffect | | sentEmails | List of emails sent using N/email. | +| caches | List of caches used by cache.getCache. | +| files | List of files used by file.load, etc. Use File constructor when creating files to add to this. | +| createdFiles | List of files that have been created. | +| savedFiles | List of files that have been saved. | +| deletedFiles | List of files that have been deleted. | | records | List of records used by record.load, etc. Use Record constructor when creating records to add to this. | -| savedRecords | List of records that have been saved. | | createdRecords | List of records that have been created. | +| savedRecords | List of records that have been saved. | +| deletedRecords | List of records that have been deleted. | | searches | List of searches used by search.load, etc. Use Search constructor when creating searches to add to this. | | runSearches | List of searches that have been run. | | searchResults | List of search results used to mock dynamically created and executed searches. Every search created with search.create will consume the first element in the list. | | lookupFieldsResults | List of results used to mock search.lookupFields. Every call to search.lookupFields will consume the first element in the list. | | taskStatuses | List of task statuses used by task.checkStatus. | | submittedTasks | List of submitted tasks. | -| logs | List of logs. | +| logs | List of execution logs created by N/log | | reset | Function used to reset the state of the mocks library. Advisable to do before every test run, likely in a beforeEach. | For specific examples please look at the tests. diff --git a/__tests__/file/File.js b/__tests__/file/File.js new file mode 100644 index 0000000..8643429 --- /dev/null +++ b/__tests__/file/File.js @@ -0,0 +1,164 @@ +import SuiteScriptMocks from "../.."; +import Iterator from "../../lib/iterator.cjs"; +import file from "../../lib/mocks/file/index.cjs"; + +let File; +let createdFile; +beforeEach(() => { + SuiteScriptMocks.reset(); + File = new file.File({ + id: 1, + folder: 1, + name: "test.csv", + fileType: file.Type.CSV, + contents: "this is a test", + }); + createdFile = new file.File({ + folder: 2, + name: "test.csv", + fileType: file.Type.CSV, + contents: "this is a test", + }); +}); +describe("file.File", () => { + describe("appendLine", () => { + it("should add line to contents", () => { + File.appendLine({ value: "another line" }); + expect(File.contents).toBe("this is a test\nanother line"); + }); + }); + + describe("getContents", () => { + it("should return the saved file contents", () => { + expect(File.getContents()).toBe("this is a test"); + }); + it("should error if called directly after resetStream on created file", () => { + createdFile.resetStream(); + expect(() => { + createdFile.getContents(); + }).toThrow(); + }); + it("should return current contents when called for the first time on created file", () => { + expect(createdFile.getContents()).toBe("this is a test"); + }); + it("should always return same value when called on created file", () => { + expect(createdFile.getContents()).toBe("this is a test"); + createdFile.resetStream(); + createdFile.appendLine({ value: "another line" }); + expect(createdFile.getContents()).toBe("this is a test"); + }); + }); + + describe("getReader", () => { + it("should return Reader object", () => { + expect(File.getReader()).toBeInstanceOf(file.Reader); + }); + it("should return Reader of saved file contents", () => { + expect(File.getReader().contents).toBe("this is a test"); + }); + it("should return blank Reader if called before getContents on created file", () => { + expect(createdFile.getReader().contents).toBe(""); + }); + it("should return Reader for same value of getContents if called after getContents and before resetStream on created file", () => { + createdFile.getContents(); + expect(createdFile.getReader().contents).toBe("this is a test"); + }); + it("should return Reader for same value of getContents if called after getContents and before resetStream on created file", () => { + createdFile.resetStream(); + createdFile.appendLine({ value: "another line" }); + createdFile.getContents(); + expect(createdFile.getReader().contents).toBe("another line"); + }); + it("should return blank Reader if called after getContents and resetStream on created file", () => { + createdFile.getContents(); + createdFile.resetStream(); + expect(createdFile.getReader().contents).toBe(""); + }); + }); + + describe("getSegments", () => { + it("should throw if separator is not a string", () => { + expect(() => { + File.getSegments(4); + }).toThrow(); + }); + it("should return iterator of saved file contents split by separator", () => { + const iterator = File.getSegments(" ").iterator(); + expect(iterator).toBeInstanceOf(Iterator); + expect(iterator.values).toEqual(["this", "is", "a", "test"]); + }); + it("should return blank iterator if file wasn't loaded", () => { + const File = file.create({ name: "test.csv", fileType: file.Type.CSV, contents: "1 2 3" }); + const iterator = File.getSegments(" ").iterator(); + expect(iterator.next()).toEqual({ value: undefined, done: true }); + }); + }); + + describe("resetStream", () => { + it("should reset iterators", () => { + const iterator1 = File.lines.iterator(); + const iterator2 = File.getSegments({ separator: " " }).iterator(); + expect(iterator1.next()).toEqual({ value: "this is a test", done: false }); + expect(iterator2.next()).toEqual({ value: "this", done: false }); + File.resetStream(); + expect(iterator1.next()).toEqual({ value: "this is a test", done: false }); + expect(iterator2.next()).toEqual({ value: "this", done: false }); + }); + it("should reset readers", () => { + const reader = File.getReader(); + expect(reader.readUntil("banana")).toBe("this is a test"); + expect(reader.readUntil("banana")).toBe(""); + File.resetStream(); + expect(reader.readUntil("banana")).toBe("this is a test"); + }); + it("should blank out readers on created files", () => { + createdFile.getContents(); + const reader = createdFile.getReader(); + expect(reader.readUntil("banana")).toBe("this is a test"); + expect(reader.readUntil("banana")).toBe(""); + File.resetStream(); + expect(reader.readUntil("banana")).toBe(""); + }); + }); + + describe("save", () => { + it("should error if called directly after resetStream on created file", () => { + createdFile.resetStream(); + expect(() => { + createdFile.save(); + }).toThrow(); + }); + it("should error if folder isn't set", () => { + delete createdFile.folder; + expect(() => { + createdFile.save(); + }).toThrow(); + }); + it("should add created file to SuiteScriptMocks.createdFiles", () => { + createdFile.save(); + expect(SuiteScriptMocks.createdFiles).toHaveLength(1); + expect(SuiteScriptMocks.savedFiles).toHaveLength(1); + }); + it("should add file to SuiteScriptMocks.savedFiles", () => { + File.save(); + expect(SuiteScriptMocks.savedFiles).toHaveLength(1); + }); + it("should update existing file", () => { + File.contents = "update file"; + File.save(); + expect(SuiteScriptMocks.files[0].contents).toBe("update file"); + }); + it("should save copy of file", () => { + File.save(); + expect(SuiteScriptMocks.files[0]).not.toBe(File); + }); + it("should save without frozenContents and frozenContents2", () => { + File.frozenContents = "test"; + File.frozenContents2 = "test"; + File.save(); + File = file.load(File.id); + expect(File.frozenContents).toBe(null); + expect(File.frozenContents2).toBe(null); + }); + }); +}); diff --git a/__tests__/file/Reader.js b/__tests__/file/Reader.js new file mode 100644 index 0000000..5429be3 --- /dev/null +++ b/__tests__/file/Reader.js @@ -0,0 +1,52 @@ +import file from "../../lib/mocks/file/index.cjs"; + +let reader; +beforeEach(() => { + reader = new file.Reader({ + contents: "this is a test or something like that", + }); +}); + +describe("file.Reader", () => { + describe("readChars", () => { + it("should return the next number of chars", () => { + expect(reader.readChars(5)).toBe("this "); + expect(reader.readChars(5)).toBe("is a "); + }); + it("should stop at the end of the contents", () => { + reader.pointer = reader.contents.length - 2; + expect(reader.readChars(5)).toBe("at"); + expect(reader.pointer).toBe(reader.contents.length); + }); + it("should return blank if pointer is at end of the file", () => { + reader.pointer = reader.contents.length; + expect(reader.readChars(5)).toBe(""); + expect(reader.pointer).toBe(reader.contents.length); + }); + }); + + describe("readUntil", () => { + it("should return the next chars up until and including the supplied tag", () => { + expect(reader.readUntil(" ")).toBe("this "); + expect(reader.readUntil(" ")).toBe("is "); + expect(reader.readUntil("test")).toBe("a test"); + }); + it("should return the rest of the contents if the supplied tag is not found", () => { + expect(reader.readUntil("banana")).toBe(reader.contents); + expect(reader.pointer).toBe(reader.contents.length); + }); + it("should return blank if pointer is at end of the file", () => { + reader.pointer = reader.contents.length; + expect(reader.readUntil("test")).toBe(""); + expect(reader.pointer).toBe(reader.contents.length); + }); + }); + + describe("reset", () => { + it("should set the pointer to 0", () => { + reader.pointer = 20; + reader.reset(); + expect(reader.pointer).toBe(0); + }); + }); +}); diff --git a/__tests__/file/index.js b/__tests__/file/index.js new file mode 100644 index 0000000..0914061 --- /dev/null +++ b/__tests__/file/index.js @@ -0,0 +1,137 @@ +import SuiteScriptMocks from "../../index.cjs"; +import file from "../../lib/mocks/file/index.cjs"; + +let File; +beforeEach(() => { + SuiteScriptMocks.reset(); + File = new file.File({ + id: 1, + name: "test.csv", + fileType: file.Type.CSV, + folder: 1, + }); + SuiteScriptMocks.files = [File]; +}); +describe("file", () => { + describe("copy", () => { + it("should throw error if file does not exist", () => { + expect(() => { + file.copy({ folder: 2, id: 99999 }); + }).toThrow(); + }); + it("should throw if conflictResolution is invalid", () => { + expect(() => { + file.copy({ folder: 2, id: 1, conflictResolution: "test" }); + }).toThrow(); + }); + it("should not modify original file when modifying copy", () => { + const copy = file.copy({ folder: 2, id: 1 }); + copy.name = "test2.csv"; + expect(File.name).toBe("test.csv"); + }); + it("should throw if conflictResolution is FAIL and file with that name already exists in the folder", () => { + expect(() => { + file.copy({ folder: 1, id: 1 }); + }).toThrow(); + expect(() => { + file.copy({ folder: 1, id: 1, conflictResolution: file.NameConflictResolution.FAIL }); + }).toThrow(); + }); + it("should overwrite file if conflictResolution is OVERWRITE and file with that name already exists in the folder", () => { + const copy = file.copy({ folder: 1, id: 1, conflictResolution: file.NameConflictResolution.OVERWRITE }); + expect(copy.id).toBe(1); + expect(copy).not.toBe(File); + }); + it("should overwrite file if conflictResolution is OVERWRITE_CONTENT_AND_ATTRIBUTES and file with that name already exists in the folder", () => { + const copy = file.copy({ + folder: 1, + id: 1, + conflictResolution: file.NameConflictResolution.OVERWRITE_CONTENT_AND_ATTRIBUTES, + }); + expect(copy.id).toBe(1); + expect(copy).not.toBe(File); + }); + it("should rename file if conflictResolution is RENAME_TO_UNIQUE and file with that name already exists in the folder", () => { + const copy = file.copy({ + folder: 1, + id: 1, + conflictResolution: file.NameConflictResolution.RENAME_TO_UNIQUE, + }); + expect(copy.id).toBe(2); + expect(copy).not.toBe(File); + expect(copy.name).toBe("test(1).csv"); + + const copy2 = file.copy({ + folder: 1, + id: 1, + conflictResolution: file.NameConflictResolution.RENAME_TO_UNIQUE, + }); + expect(copy2.id).toBe(3); + expect(copy2).not.toBe(File); + expect(copy2.name).toBe("test(2).csv"); + }); + it("should return copy of file", () => { + const copy = file.copy({ folder: 2, id: 1 }); + expect(copy.id).toBe(2); + expect(copy).not.toBe(File); + }); + }); + + describe("create", () => { + it("should return new file", () => { + const rec = file.create({ + name: "test.csv", + fileType: file.Type.CSV, + }); + expect(rec).toBeInstanceOf(file.File); + expect(rec).toMatchObject({ + id: null, + name: "test.csv", + fileType: file.Type.CSV, + }); + }); + }); + + describe("delete", () => { + it("should delete file if it exists", () => { + file.delete({ id: 1 }); + expect(SuiteScriptMocks.files.length).toBe(0); + }); + it("should return id of deleted file", () => { + expect(file.delete({ id: 1 })).toBe(1); + }); + it("should throw error if file doesn't exist", () => { + expect(() => { + file.delete({ id: 99999 }); + }).toThrow(); + }); + it("should add deleted file to SuiteScriptMocks.deletedFiles", () => { + file.delete({ id: 1 }); + expect(SuiteScriptMocks.deletedFiles).toHaveLength(1); + expect(SuiteScriptMocks.deletedFiles[0].id).toBe(1); + }); + }); + + describe("load", () => { + it("should return copy of file if it exists", () => { + const rec = file.load({ id: 1 }); + expect(rec).not.toBe(File); + expect(rec.id).toBe(1); + }); + it("should throw error if file doesn't exist", () => { + expect(() => { + file.load({ id: 99999 }); + }).toThrow(); + }); + it("should not modify original file when modifying loaded file before save", () => { + const loadedfile = file.load({ id: 1 }); + loadedfile.name = "test2.csv"; + expect(File.name).toBe("test.csv"); + }); + it("should set savedContents on file to files contents", () => { + File.savedContents = ""; + const loadedfile = file.load({ id: 1 }); + expect(loadedfile.savedContents).toBe(loadedfile.contents); + }); + }); +}); diff --git a/__tests__/iterator.js b/__tests__/iterator.js new file mode 100644 index 0000000..d11bed5 --- /dev/null +++ b/__tests__/iterator.js @@ -0,0 +1,54 @@ +const Iterator = require("../lib/iterator.cjs"); + +let iterator; +beforeEach(() => { + iterator = new Iterator([1, 2, 3, 4]); +}); +describe("Iterator", () => { + describe("next", () => { + it("should return the next value", () => { + expect(iterator.next()).toEqual({ value: 1, done: false }); + expect(iterator.next()).toEqual({ value: 2, done: false }); + }); + it("should return done at end of values", () => { + iterator.pointer = 4; + expect(iterator.next()).toEqual({ value: undefined, done: true }); + }); + }); + describe("each", () => { + it("should send value to callback", () => { + iterator.each((a) => expect(a).toEqual({ value: 1 })); + }); + it("should stop execution if true isn't returned", () => { + let counter = 0; + iterator.each(() => { + counter++; + }); + expect(counter).toBe(1); + iterator.each(() => counter++); + expect(counter).toBe(2); + }); + it("should continue execution if true is returned", () => { + let counter = 0; + iterator.each(() => { + counter++; + return true; + }); + expect(counter).toBe(4); + }); + it("should go through each value in order", () => { + const values = []; + iterator.each((a) => { + values.push(a); + return true; + }); + expect(values).toEqual([{ value: 1 }, { value: 2 }, { value: 3 }, { value: 4 }]); + }); + it("should remember position stopping execution", () => { + iterator.each((a) => expect(a).toEqual({ value: 1 })); + iterator.each((a) => expect(a).toEqual({ value: 2 })); + iterator.each((a) => expect(a).toEqual({ value: 3 })); + iterator.each((a) => expect(a).toEqual({ value: 4 })); + }); + }); +}); diff --git a/__tests__/record/Record.js b/__tests__/record/Record.js index 1f9dc66..a33e15c 100644 --- a/__tests__/record/Record.js +++ b/__tests__/record/Record.js @@ -273,11 +273,16 @@ describe("record.Record", () => { Record.save(); expect(Record.id).not.toBe(null); }); - it("should add incremented id", () => { + it("should increment id", () => { const newRecord = new record.Record(Record); newRecord.id = null; newRecord.save(); expect(newRecord.id).toBe(2); + + const newRecord2 = new record.Record(Record); + newRecord2.id = null; + newRecord2.save(); + expect(newRecord2.id).toBe(3); }); it("should return created id", () => { Record.id = null; diff --git a/__tests__/record/index.js b/__tests__/record/index.js index da93daf..35e3ceb 100644 --- a/__tests__/record/index.js +++ b/__tests__/record/index.js @@ -24,12 +24,12 @@ describe("record", () => { describe("copy", () => { it("should return copy of record with no id if it exists", () => { - const rec = record.copy({ + const copy = record.copy({ id: 1, type: record.Type.SALES_ORDER, }); - expect(rec.id).toBe(null); - expect(rec).not.toBe(Record); + expect(copy.id).toBe(null); + expect(copy).not.toBe(Record); }); it("should throw error if record does not exist", () => { expect(() => { @@ -83,7 +83,7 @@ describe("record", () => { record.delete({ id: 1, type: record.Type.SALES_ORDER, - }) + }), ).toBe(1); }); it("should throw error if record doesn't exist", () => { diff --git a/__tests__/search/Search.js b/__tests__/search/Search.js index b74e4eb..b28804e 100644 --- a/__tests__/search/Search.js +++ b/__tests__/search/Search.js @@ -74,6 +74,21 @@ describe("search.Search", () => { Search.save(); expect(Search.id).not.toBe(null); }); + it("should increment searchId", () => { + const newSearch = new search.Search(Search); + newSearch.id = null; + newSearch.searchId = null; + newSearch.title = "New Search"; + newSearch.save(); + expect(newSearch.searchId).toBe(2); + + const newSearch2 = new search.Search(Search); + newSearch2.id = null; + newSearch2.searchId = null; + newSearch2.title = "New Search 2"; + newSearch2.save(); + expect(newSearch2.searchId).toBe(3); + }); it("should add searchId to search", () => { Search.id = "customsearch_2"; Search.searchId = null; diff --git a/lib/index.cjs b/lib/index.cjs index a1cfdfd..466fe97 100644 --- a/lib/index.cjs +++ b/lib/index.cjs @@ -1,4 +1,4 @@ -var _dec, _init_caches, _dec2, _init_records, _dec3, _init_searches, _dec4, _init_taskStatuses; +var _dec, _init_caches, _dec2, _init_files, _dec3, _init_records, _dec4, _init_searches, _dec5, _init_taskStatuses; function applyDecs2203RFactory() { function createAddInitializerMethod(e, t) { return function (r) { !function (e, t) { if (e.v) throw new Error("attempted to call " + t + " after decoration was finished"); }(t, "addInitializer"), assertCallable(r, "An initializer"), e.push(r); }; } function memberDec(e, t, r, n, a, i, s, o) { var c; switch (a) { case 1: c = "accessor"; break; case 2: c = "method"; break; case 3: c = "getter"; break; case 4: c = "setter"; break; default: c = "field"; } var l, u, f = { kind: c, name: s ? "#" + t : t, static: i, private: s }, p = { v: !1 }; 0 !== a && (f.addInitializer = createAddInitializerMethod(n, p)), 0 === a ? s ? (l = r.get, u = r.set) : (l = function () { return this[t]; }, u = function (e) { this[t] = e; }) : 2 === a ? l = function () { return r.value; } : (1 !== a && 3 !== a || (l = function () { return r.get.call(this); }), 1 !== a && 4 !== a || (u = function (e) { r.set.call(this, e); })), f.access = l && u ? { get: l, set: u } : l ? { get: l } : { set: u }; try { return e(o, f); } finally { p.v = !0; } } function assertCallable(e, t) { if ("function" != typeof e) throw new TypeError(t + " must be a function"); } function assertValidReturnValue(e, t) { var r = typeof t; if (1 === e) { if ("object" !== r || null === t) throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0"); void 0 !== t.get && assertCallable(t.get, "accessor.get"), void 0 !== t.set && assertCallable(t.set, "accessor.set"), void 0 !== t.init && assertCallable(t.init, "accessor.init"); } else if ("function" !== r) { var n; throw n = 0 === e ? "field" : 10 === e ? "class" : "method", new TypeError(n + " decorators must return a function or void 0"); } } function applyMemberDec(e, t, r, n, a, i, s, o) { var c, l, u, f, p, d, h = r[0]; if (s ? c = 0 === a || 1 === a ? { get: r[3], set: r[4] } : 3 === a ? { get: r[3] } : 4 === a ? { set: r[3] } : { value: r[3] } : 0 !== a && (c = Object.getOwnPropertyDescriptor(t, n)), 1 === a ? u = { get: c.get, set: c.set } : 2 === a ? u = c.value : 3 === a ? u = c.get : 4 === a && (u = c.set), "function" == typeof h) void 0 !== (f = memberDec(h, n, c, o, a, i, s, u)) && (assertValidReturnValue(a, f), 0 === a ? l = f : 1 === a ? (l = f.init, p = f.get || u.get, d = f.set || u.set, u = { get: p, set: d }) : u = f);else for (var v = h.length - 1; v >= 0; v--) { var g; if (void 0 !== (f = memberDec(h[v], n, c, o, a, i, s, u))) assertValidReturnValue(a, f), 0 === a ? g = f : 1 === a ? (g = f.init, p = f.get || u.get, d = f.set || u.set, u = { get: p, set: d }) : u = f, void 0 !== g && (void 0 === l ? l = g : "function" == typeof l ? l = [l, g] : l.push(g)); } if (0 === a || 1 === a) { if (void 0 === l) l = function (e, t) { return t; };else if ("function" != typeof l) { var y = l; l = function (e, t) { for (var r = t, n = 0; n < y.length; n++) r = y[n].call(e, r); return r; }; } else { var m = l; l = function (e, t) { return m.call(e, t); }; } e.push(l); } 0 !== a && (1 === a ? (c.get = u.get, c.set = u.set) : 2 === a ? c.value = u : 3 === a ? c.get = u : 4 === a && (c.set = u), s ? 1 === a ? (e.push(function (e, t) { return u.get.call(e, t); }), e.push(function (e, t) { return u.set.call(e, t); })) : 2 === a ? e.push(u) : e.push(function (e, t) { return u.call(e, t); }) : Object.defineProperty(t, n, c)); } function applyMemberDecs(e, t) { for (var r, n, a = [], i = new Map(), s = new Map(), o = 0; o < t.length; o++) { var c = t[o]; if (Array.isArray(c)) { var l, u, f = c[1], p = c[2], d = c.length > 3, h = f >= 5; if (h ? (l = e, 0 !== (f -= 5) && (u = n = n || [])) : (l = e.prototype, 0 !== f && (u = r = r || [])), 0 !== f && !d) { var v = h ? s : i, g = v.get(p) || 0; if (!0 === g || 3 === g && 4 !== f || 4 === g && 3 !== f) throw new Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: " + p); !g && f > 2 ? v.set(p, f) : v.set(p, !0); } applyMemberDec(a, l, c, p, f, h, d, u); } } return pushInitializers(a, r), pushInitializers(a, n), a; } function pushInitializers(e, t) { t && e.push(function (e) { for (var r = 0; r < t.length; r++) t[r].call(e); return e; }); } return function (e, t, r) { return { e: applyMemberDecs(e, t), get c() { return function (e, t) { if (t.length > 0) { for (var r = [], n = e, a = e.name, i = t.length - 1; i >= 0; i--) { var s = { v: !1 }; try { var o = t[i](n, { kind: "class", name: a, addInitializer: createAddInitializerMethod(r, s) }); } finally { s.v = !0; } void 0 !== o && (assertValidReturnValue(10, o), n = o); } return [n, function () { for (var e = 0; e < r.length; e++) r[e].call(n); }]; } }(e, r); } }; }; } function _applyDecs2203R(e, t, r) { return (_applyDecs2203R = applyDecs2203RFactory())(e, t, r); } const SuiteCloudJestStubs = require("suitecloud-unit-testing-stubs"); @@ -12,21 +12,26 @@ _dec = addKeyedSetGetSet(); _dec2 = addKeyedSetGetSet(); _dec3 = addKeyedSetGetSet(); _dec4 = addKeyedSetGetSet(); +_dec5 = addKeyedSetGetSet(); class SuiteScriptMocks { static { - [_init_caches, _init_records, _init_searches, _init_taskStatuses] = _applyDecs2203R(this, [[_dec, 0, "caches", function () { + [_init_caches, _init_files, _init_records, _init_searches, _init_taskStatuses] = _applyDecs2203R(this, [[_dec, 0, "caches", function () { return this.#caches; }, function (value) { this.#caches = value; - }], [_dec2, 0, "records", function () { + }], [_dec2, 0, "files", function () { + return this.#files; + }, function (value) { + this.#files = value; + }], [_dec3, 0, "records", function () { return this.#records; }, function (value) { this.#records = value; - }], [_dec3, 0, "searches", function () { + }], [_dec4, 0, "searches", function () { return this.#searches; }, function (value) { this.#searches = value; - }], [_dec4, 0, "taskStatuses", function () { + }], [_dec5, 0, "taskStatuses", function () { return this.#taskStatuses; }, function (value) { this.#taskStatuses = value; @@ -34,6 +39,7 @@ class SuiteScriptMocks { } dateFormat = "M/d/yyyy"; #caches = _init_caches(this, new KeyedSet(cache => [cache.name, cache.scope])); + #files = _init_files(this, new KeyedSet(file => file.id, file => [file.folder, file.name])); #records = _init_records(this, new KeyedSet(record => [record.id, record.type])); #searches = _init_searches(this, new KeyedSet(search => search.id, search => search.searchId, search => search.title)); #taskStatuses = _init_taskStatuses(this, new KeyedSet(task => task.id)); @@ -48,6 +54,10 @@ class SuiteScriptMocks { this.features = {}; this.sentEmails = []; this.#caches.clear(); + this.#files.clear(); + this.savedFiles = []; + this.createdFiles = []; + this.deletedFiles = []; this.#records.clear(); this.savedRecords = []; this.createdRecords = []; @@ -95,4 +105,4 @@ class SuiteScriptMocks { } } module.exports = new SuiteScriptMocks(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTdWl0ZUNsb3VkSmVzdFN0dWJzIiwicmVxdWlyZSIsIktleWVkU2V0IiwiYWRkS2V5ZWRTZXRHZXRTZXQiLCJjcmVhdGVVc2VyRXZlbnRDb250ZXh0IiwiVXNlckV2ZW50VHlwZSIsIl9kZWMiLCJfZGVjMiIsIl9kZWMzIiwiX2RlYzQiLCJTdWl0ZVNjcmlwdE1vY2tzIiwiX2luaXRfY2FjaGVzIiwiX2luaXRfcmVjb3JkcyIsIl9pbml0X3NlYXJjaGVzIiwiX2luaXRfdGFza1N0YXR1c2VzIiwiX2FwcGx5RGVjczIyMDNSIiwiY2FjaGVzIiwidmFsdWUiLCJyZWNvcmRzIiwic2VhcmNoZXMiLCJ0YXNrU3RhdHVzZXMiLCJlIiwiZGF0ZUZvcm1hdCIsImNhY2hlIiwibmFtZSIsInNjb3BlIiwicmVjb3JkIiwiaWQiLCJ0eXBlIiwic2VhcmNoIiwic2VhcmNoSWQiLCJ0aXRsZSIsInRhc2siLCJyZXNldCIsIm91dHB1dEF1ZGl0TG9ncyIsIm91dHB1dERlYnVnTG9ncyIsIm91dHB1dEVtZXJnZW5jeUxvZ3MiLCJvdXRwdXRFcnJvckxvZ3MiLCJjdXJyZW50U2NyaXB0IiwiY3VycmVudFVzZXIiLCJjdXJyZW50U2Vzc2lvbiIsImZlYXR1cmVzIiwic2VudEVtYWlscyIsImNsZWFyIiwic2F2ZWRSZWNvcmRzIiwiY3JlYXRlZFJlY29yZHMiLCJkZWxldGVkUmVjb3JkcyIsInJ1blNlYXJjaGVzIiwic2VhcmNoUmVzdWx0cyIsImxvb2t1cEZpZWxkc1Jlc3VsdHMiLCJzdWJtaXR0ZWRUYXNrcyIsImxvZ3MiLCJzdHVicyIsImN1c3RvbVN0dWJzIiwibW9kdWxlIiwicGF0aCIsImNvbnN0cnVjdG9yIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5janMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgU3VpdGVDbG91ZEplc3RTdHVicyA9IHJlcXVpcmUoXCJzdWl0ZWNsb3VkLXVuaXQtdGVzdGluZy1zdHVic1wiKTtcbmNvbnN0IEtleWVkU2V0ID0gcmVxdWlyZShcIi4va2V5ZWQtc2V0LmNqc1wiKTtcbmNvbnN0IHsgYWRkS2V5ZWRTZXRHZXRTZXQsIGNyZWF0ZVVzZXJFdmVudENvbnRleHQsIFVzZXJFdmVudFR5cGUgfSA9IHJlcXVpcmUoXCIuL2hlbHBlcnMuY2pzXCIpO1xuXG5jbGFzcyBTdWl0ZVNjcmlwdE1vY2tzIHtcblx0ZGF0ZUZvcm1hdCA9IFwiTS9kL3l5eXlcIjtcblxuXHRAYWRkS2V5ZWRTZXRHZXRTZXQoKVxuXHQjY2FjaGVzID0gbmV3IEtleWVkU2V0KChjYWNoZSkgPT4gW2NhY2hlLm5hbWUsIGNhY2hlLnNjb3BlXSk7XG5cblx0QGFkZEtleWVkU2V0R2V0U2V0KClcblx0I3JlY29yZHMgPSBuZXcgS2V5ZWRTZXQoKHJlY29yZCkgPT4gW3JlY29yZC5pZCwgcmVjb3JkLnR5cGVdKTtcblxuXHRAYWRkS2V5ZWRTZXRHZXRTZXQoKVxuXHQjc2VhcmNoZXMgPSBuZXcgS2V5ZWRTZXQoXG5cdFx0KHNlYXJjaCkgPT4gc2VhcmNoLmlkLFxuXHRcdChzZWFyY2gpID0+IHNlYXJjaC5zZWFyY2hJZCxcblx0XHQoc2VhcmNoKSA9PiBzZWFyY2gudGl0bGUsXG5cdCk7XG5cblx0QGFkZEtleWVkU2V0R2V0U2V0KClcblx0I3Rhc2tTdGF0dXNlcyA9IG5ldyBLZXllZFNldCgodGFzaykgPT4gdGFzay5pZCk7XG5cblx0cmVzZXQgPSAoKSA9PiB7XG5cdFx0dGhpcy5vdXRwdXRBdWRpdExvZ3MgPSBmYWxzZTtcblx0XHR0aGlzLm91dHB1dERlYnVnTG9ncyA9IGZhbHNlO1xuXHRcdHRoaXMub3V0cHV0RW1lcmdlbmN5TG9ncyA9IGZhbHNlO1xuXHRcdHRoaXMub3V0cHV0RXJyb3JMb2dzID0gZmFsc2U7XG5cblx0XHR0aGlzLmN1cnJlbnRTY3JpcHQgPSB7fTtcblx0XHR0aGlzLmN1cnJlbnRVc2VyID0ge307XG5cdFx0dGhpcy5jdXJyZW50U2Vzc2lvbiA9IHt9O1xuXHRcdHRoaXMuZmVhdHVyZXMgPSB7fTtcblxuXHRcdHRoaXMuc2VudEVtYWlscyA9IFtdO1xuXG5cdFx0dGhpcy4jY2FjaGVzLmNsZWFyKCk7XG5cblx0XHR0aGlzLiNyZWNvcmRzLmNsZWFyKCk7XG5cdFx0dGhpcy5zYXZlZFJlY29yZHMgPSBbXTtcblx0XHR0aGlzLmNyZWF0ZWRSZWNvcmRzID0gW107XG5cdFx0dGhpcy5kZWxldGVkUmVjb3JkcyA9IFtdO1xuXG5cdFx0dGhpcy4jc2VhcmNoZXMuY2xlYXIoKTtcblx0XHR0aGlzLnJ1blNlYXJjaGVzID0gW107XG5cdFx0dGhpcy5zZWFyY2hSZXN1bHRzID0gW107XG5cdFx0dGhpcy5sb29rdXBGaWVsZHNSZXN1bHRzID0gW107XG5cblx0XHR0aGlzLiN0YXNrU3RhdHVzZXMuY2xlYXIoKTtcblx0XHR0aGlzLnN1Ym1pdHRlZFRhc2tzID0gW107XG5cblx0XHR0aGlzLmxvZ3MgPSBbXTtcblx0fTtcblxuXHRjcmVhdGVVc2VyRXZlbnRDb250ZXh0ID0gY3JlYXRlVXNlckV2ZW50Q29udGV4dDtcblx0VXNlckV2ZW50VHlwZSA9IFVzZXJFdmVudFR5cGU7XG5cblx0c3R1YnMgPSBbXG5cdFx0Li4uU3VpdGVDbG91ZEplc3RTdHVicy5jdXN0b21TdHVicyxcblx0XHR7IG1vZHVsZTogXCJOL2NhY2hlXCIsIHBhdGg6IFwiPHJvb3REaXI+L25vZGVfbW9kdWxlcy9zdWl0ZXNjcmlwdC1tb2Nrcy9saWIvbW9ja3MvY2FjaGUvaW5kZXguY2pzXCIgfSxcblx0XHR7IG1vZHVsZTogXCJOL2VtYWlsXCIsIHBhdGg6IFwiPHJvb3REaXI+L25vZGVfbW9kdWxlcy9zdWl0ZXNjcmlwdC1tb2Nrcy9saWIvbW9ja3MvZW1haWwvaW5kZXguY2pzXCIgfSxcblx0XHR7IG1vZHVsZTogXCJOL2VuY29kZVwiLCBwYXRoOiBcIjxyb290RGlyPi9ub2RlX21vZHVsZXMvc3VpdGVzY3JpcHQtbW9ja3MvbGliL21vY2tzL2VuY29kZS9pbmRleC5janNcIiB9LFxuXHRcdHsgbW9kdWxlOiBcIk4vcmVjb3JkXCIsIHBhdGg6IFwiPHJvb3REaXI+L25vZGVfbW9kdWxlcy9zdWl0ZXNjcmlwdC1tb2Nrcy9saWIvbW9ja3MvcmVjb3JkL2luZGV4LmNqc1wiIH0sXG5cdFx0eyBtb2R1bGU6IFwiTi9ydW50aW1lXCIsIHBhdGg6IFwiPHJvb3REaXI+L25vZGVfbW9kdWxlcy9zdWl0ZXNjcmlwdC1tb2Nrcy9saWIvbW9ja3MvcnVudGltZS9pbmRleC5janNcIiB9LFxuXHRcdHsgbW9kdWxlOiBcIk4vc2VhcmNoXCIsIHBhdGg6IFwiPHJvb3REaXI+L25vZGVfbW9kdWxlcy9zdWl0ZXNjcmlwdC1tb2Nrcy9saWIvbW9ja3Mvc2VhcmNoL2luZGV4LmNqc1wiIH0sXG5cdFx0eyBtb2R1bGU6IFwiTi90YXNrXCIsIHBhdGg6IFwiPHJvb3REaXI+L25vZGVfbW9kdWxlcy9zdWl0ZXNjcmlwdC1tb2Nrcy9saWIvbW9ja3MvdGFzay9pbmRleC5janNcIiB9LFxuXHRcdHsgbW9kdWxlOiBcIk4vdXJsXCIsIHBhdGg6IFwiPHJvb3REaXI+L25vZGVfbW9kdWxlcy9zdWl0ZXNjcmlwdC1tb2Nrcy9saWIvbW9ja3MvdXJsL2luZGV4LmNqc1wiIH0sXG5cdFx0e1xuXHRcdFx0bW9kdWxlOiBcIk4vdWkvc2VydmVyV2lkZ2V0XCIsXG5cdFx0XHRwYXRoOiBcIjxyb290RGlyPi9ub2RlX21vZHVsZXMvc3VpdGVzY3JpcHQtbW9ja3MvbGliL21vY2tzL3VpL3NlcnZlcldpZGdldC9pbmRleC5janNcIixcblx0XHR9LFxuXHRdO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHRoaXMucmVzZXQoKTtcblx0fVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG5ldyBTdWl0ZVNjcmlwdE1vY2tzKCk7XG4iXSwibWFwcGluZ3MiOiI7OztBQUFBLE1BQU1BLG1CQUFtQixHQUFHQyxPQUFPLENBQUMsK0JBQStCLENBQUM7QUFDcEUsTUFBTUMsUUFBUSxHQUFHRCxPQUFPLENBQUMsaUJBQWlCLENBQUM7QUFDM0MsTUFBTTtFQUFFRSxpQkFBaUI7RUFBRUMsc0JBQXNCO0VBQUVDO0FBQWMs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 \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTdWl0ZUNsb3VkSmVzdFN0dWJzIiwicmVxdWlyZSIsIktleWVkU2V0IiwiYWRkS2V5ZWRTZXRHZXRTZXQiLCJjcmVhdGVVc2VyRXZlbnRDb250ZXh0IiwiVXNlckV2ZW50VHlwZSIsIl9kZWMiLCJfZGVjMiIsIl9kZWMzIiwiX2RlYzQiLCJfZGVjNSIsIlN1aXRlU2NyaXB0TW9ja3MiLCJfaW5pdF9jYWNoZXMiLCJfaW5pdF9maWxlcyIsIl9pbml0X3JlY29yZHMiLCJfaW5pdF9zZWFyY2hlcyIsIl9pbml0X3Rhc2tTdGF0dXNlcyIsIl9hcHBseURlY3MyMjAzUiIsImNhY2hlcyIsInZhbHVlIiwiZmlsZXMiLCJyZWNvcmRzIiwic2VhcmNoZXMiLCJ0YXNrU3RhdHVzZXMiLCJlIiwiZGF0ZUZvcm1hdCIsImNhY2hlIiwibmFtZSIsInNjb3BlIiwiZmlsZSIsImlkIiwiZm9sZGVyIiwicmVjb3JkIiwidHlwZSIsInNlYXJjaCIsInNlYXJjaElkIiwidGl0bGUiLCJ0YXNrIiwicmVzZXQiLCJvdXRwdXRBdWRpdExvZ3MiLCJvdXRwdXREZWJ1Z0xvZ3MiLCJvdXRwdXRFbWVyZ2VuY3lMb2dzIiwib3V0cHV0RXJyb3JMb2dzIiwiY3VycmVudFNjcmlwdCIsImN1cnJlbnRVc2VyIiwiY3VycmVudFNlc3Npb24iLCJmZWF0dXJlcyIsInNlbnRFbWFpbHMiLCJjbGVhciIsInNhdmVkRmlsZXMiLCJjcmVhdGVkRmlsZXMiLCJkZWxldGVkRmlsZXMiLCJzYXZlZFJlY29yZHMiLCJjcmVhdGVkUmVjb3JkcyIsImRlbGV0ZWRSZWNvcmRzIiwicnVuU2VhcmNoZXMiLCJzZWFyY2hSZXN1bHRzIiwibG9va3VwRmllbGRzUmVzdWx0cyIsInN1Ym1pdHRlZFRhc2tzIiwibG9ncyIsInN0dWJzIiwiY3VzdG9tU3R1YnMiLCJtb2R1bGUiLCJwYXRoIiwiY29uc3RydWN0b3IiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vc3JjL2luZGV4LmNqcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBTdWl0ZUNsb3VkSmVzdFN0dWJzID0gcmVxdWlyZShcInN1aXRlY2xvdWQtdW5pdC10ZXN0aW5nLXN0dWJzXCIpO1xuY29uc3QgS2V5ZWRTZXQgPSByZXF1aXJlKFwiLi9rZXllZC1zZXQuY2pzXCIpO1xuY29uc3QgeyBhZGRLZXllZFNldEdldFNldCwgY3JlYXRlVXNlckV2ZW50Q29udGV4dCwgVXNlckV2ZW50VHlwZSB9ID0gcmVxdWlyZShcIi4vaGVscGVycy5janNcIik7XG5cbmNsYXNzIFN1aXRlU2NyaXB0TW9ja3Mge1xuXHRkYXRlRm9ybWF0ID0gXCJNL2QveXl5eVwiO1xuXG5cdEBhZGRLZXllZFNldEdldFNldCgpXG5cdCNjYWNoZXMgPSBuZXcgS2V5ZWRTZXQoKGNhY2hlKSA9PiBbY2FjaGUubmFtZSwgY2FjaGUuc2NvcGVdKTtcblxuXHRAYWRkS2V5ZWRTZXRHZXRTZXQoKVxuXHQjZmlsZXMgPSBuZXcgS2V5ZWRTZXQoXG5cdFx0KGZpbGUpID0+IGZpbGUuaWQsXG5cdFx0KGZpbGUpID0+IFtmaWxlLmZvbGRlciwgZmlsZS5uYW1lXSxcblx0KTtcblxuXHRAYWRkS2V5ZWRTZXRHZXRTZXQoKVxuXHQjcmVjb3JkcyA9IG5ldyBLZXllZFNldCgocmVjb3JkKSA9PiBbcmVjb3JkLmlkLCByZWNvcmQudHlwZV0pO1xuXG5cdEBhZGRLZXllZFNldEdldFNldCgpXG5cdCNzZWFyY2hlcyA9IG5ldyBLZXllZFNldChcblx0XHQoc2VhcmNoKSA9PiBzZWFyY2guaWQsXG5cdFx0KHNlYXJjaCkgPT4gc2VhcmNoLnNlYXJjaElkLFxuXHRcdChzZWFyY2gpID0+IHNlYXJjaC50aXRsZSxcblx0KTtcblxuXHRAYWRkS2V5ZWRTZXRHZXRTZXQoKVxuXHQjdGFza1N0YXR1c2VzID0gbmV3IEtleWVkU2V0KCh0YXNrKSA9PiB0YXNrLmlkKTtcblxuXHRyZXNldCA9ICgpID0+IHtcblx0XHR0aGlzLm91dHB1dEF1ZGl0TG9ncyA9IGZhbHNlO1xuXHRcdHRoaXMub3V0cHV0RGVidWdMb2dzID0gZmFsc2U7XG5cdFx0dGhpcy5vdXRwdXRFbWVyZ2VuY3lMb2dzID0gZmFsc2U7XG5cdFx0dGhpcy5vdXRwdXRFcnJvckxvZ3MgPSBmYWxzZTtcblxuXHRcdHRoaXMuY3VycmVudFNjcmlwdCA9IHt9O1xuXHRcdHRoaXMuY3VycmVudFVzZXIgPSB7fTtcblx0XHR0aGlzLmN1cnJlbnRTZXNzaW9uID0ge307XG5cdFx0dGhpcy5mZWF0dXJlcyA9IHt9O1xuXG5cdFx0dGhpcy5zZW50RW1haWxzID0gW107XG5cblx0XHR0aGlzLiNjYWNoZXMuY2xlYXIoKTtcblxuXHRcdHRoaXMuI2ZpbGVzLmNsZWFyKCk7XG5cdFx0dGhpcy5zYXZlZEZpbGVzID0gW107XG5cdFx0dGhpcy5jcmVhdGVkRmlsZXMgPSBbXTtcblx0XHR0aGlzLmRlbGV0ZWRGaWxlcyA9IFtdO1xuXG5cdFx0dGhpcy4jcmVjb3Jkcy5jbGVhcigpO1xuXHRcdHRoaXMuc2F2ZWRSZWNvcmRzID0gW107XG5cdFx0dGhpcy5jcmVhdGVkUmVjb3JkcyA9IFtdO1xuXHRcdHRoaXMuZGVsZXRlZFJlY29yZHMgPSBbXTtcblxuXHRcdHRoaXMuI3NlYXJjaGVzLmNsZWFyKCk7XG5cdFx0dGhpcy5ydW5TZWFyY2hlcyA9IFtdO1xuXHRcdHRoaXMuc2VhcmNoUmVzdWx0cyA9IFtdO1xuXHRcdHRoaXMubG9va3VwRmllbGRzUmVzdWx0cyA9IFtdO1xuXG5cdFx0dGhpcy4jdGFza1N0YXR1c2VzLmNsZWFyKCk7XG5cdFx0dGhpcy5zdWJtaXR0ZWRUYXNrcyA9IFtdO1xuXG5cdFx0dGhpcy5sb2dzID0gW107XG5cdH07XG5cblx0Y3JlYXRlVXNlckV2ZW50Q29udGV4dCA9IGNyZWF0ZVVzZXJFdmVudENvbnRleHQ7XG5cdFVzZXJFdmVudFR5cGUgPSBVc2VyRXZlbnRUeXBlO1xuXG5cdHN0dWJzID0gW1xuXHRcdC4uLlN1aXRlQ2xvdWRKZXN0U3R1YnMuY3VzdG9tU3R1YnMsXG5cdFx0eyBtb2R1bGU6IFwiTi9jYWNoZVwiLCBwYXRoOiBcIjxyb290RGlyPi9ub2RlX21vZHVsZXMvc3VpdGVzY3JpcHQtbW9ja3MvbGliL21vY2tzL2NhY2hlL2luZGV4LmNqc1wiIH0sXG5cdFx0eyBtb2R1bGU6IFwiTi9lbWFpbFwiLCBwYXRoOiBcIjxyb290RGlyPi9ub2RlX21vZHVsZXMvc3VpdGVzY3JpcHQtbW9ja3MvbGliL21vY2tzL2VtYWlsL2luZGV4LmNqc1wiIH0sXG5cdFx0eyBtb2R1bGU6IFwiTi9lbmNvZGVcIiwgcGF0aDogXCI8cm9vdERpcj4vbm9kZV9tb2R1bGVzL3N1aXRlc2NyaXB0LW1vY2tzL2xpYi9tb2Nrcy9lbmNvZGUvaW5kZXguY2pzXCIgfSxcblx0XHR7IG1vZHVsZTogXCJOL3JlY29yZFwiLCBwYXRoOiBcIjxyb290RGlyPi9ub2RlX21vZHVsZXMvc3VpdGVzY3JpcHQtbW9ja3MvbGliL21vY2tzL3JlY29yZC9pbmRleC5janNcIiB9LFxuXHRcdHsgbW9kdWxlOiBcIk4vcnVudGltZVwiLCBwYXRoOiBcIjxyb290RGlyPi9ub2RlX21vZHVsZXMvc3VpdGVzY3JpcHQtbW9ja3MvbGliL21vY2tzL3J1bnRpbWUvaW5kZXguY2pzXCIgfSxcblx0XHR7IG1vZHVsZTogXCJOL3NlYXJjaFwiLCBwYXRoOiBcIjxyb290RGlyPi9ub2RlX21vZHVsZXMvc3VpdGVzY3JpcHQtbW9ja3MvbGliL21vY2tzL3NlYXJjaC9pbmRleC5janNcIiB9LFxuXHRcdHsgbW9kdWxlOiBcIk4vdGFza1wiLCBwYXRoOiBcIjxyb290RGlyPi9ub2RlX21vZHVsZXMvc3VpdGVzY3JpcHQtbW9ja3MvbGliL21vY2tzL3Rhc2svaW5kZXguY2pzXCIgfSxcblx0XHR7IG1vZHVsZTogXCJOL3VybFwiLCBwYXRoOiBcIjxyb290RGlyPi9ub2RlX21vZHVsZXMvc3VpdGVzY3JpcHQtbW9ja3MvbGliL21vY2tzL3VybC9pbmRleC5janNcIiB9LFxuXHRcdHtcblx0XHRcdG1vZHVsZTogXCJOL3VpL3NlcnZlcldpZGdldFwiLFxuXHRcdFx0cGF0aDogXCI8cm9vdERpcj4vbm9kZV9tb2R1bGVzL3N1aXRlc2NyaXB0LW1vY2tzL2xpYi9tb2Nrcy91aS9zZXJ2ZXJXaWRnZXQvaW5kZXguY2pzXCIsXG5cdFx0fSxcblx0XTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHR0aGlzLnJlc2V0KCk7XG5cdH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgU3VpdGVTY3JpcHRNb2NrcygpO1xuIl0sIm1hcHBpbmdzIjoiOzs7QUFBQSxNQUFNQSxtQkFBbUIsR0FBR0MsT0FBTyxDQUFDLCtCQUErQixDQUFDO0FBQ3BFLE1BQU1DLFFBQVEsR0FBR0QsT0FBTyxDQUFDLGlCQUFpQixDQUFDO0FBQzNDLE1BQU07RUFBRUUsaUJBQWlCO0VBQUVDLHNCQUFzQjtFQUFFQztBQUFjLENBQUMsR0FBR0osT0FBTyxDQUFDLGVBQWUsQ0FBQztBQUFDSyxJQUFBLEdBSzVGSCxpQkFBaUIsQ0FBQyxDQUFDO0FBQUFJLEtBQUEsR0FHbkJKLGlCQUFpQixDQUFDLENBQUM7QUFBQUssS0FBQSxHQU1uQkwsaUJBQWlCLENBQUMsQ0FBQztBQUFBTSxLQUFBLEdBR25CTixpQkFBaUIsQ0FBQyxDQUFDO0FBQUFPLEtBQUEsR0FPbkJQLGlCQUFpQixDQUFDLENBQUM7QUF0QnJCLE1BQU1RLGdCQUFnQixDQUFDO0VBQUE7SUFBQSxDQUFBQyxZQUFBLEVBQUFDLFdBQUEsRUFBQUMsYUFBQSxFQUFBQyxjQUFBLEVBQUFDLGtCQUFBLElBQUFDLGVBQUEsU0FBQVgsSUFBQTtNQUFBLFlBSXRCLENBQUNZLE1BQU07SUFBQSxhQUFBQyxLQUFBO01BQUEsS0FBUCxDQUFDRCxNQUFNLEdBQUFDLEtBQUE7SUFBQSxLQUFBWixLQUFBO01BQUEsWUFHUCxDQUFDYSxLQUFLO0lBQUEsYUFBQUQsS0FBQTtNQUFBLEtBQU4sQ0FBQ0MsS0FBSyxHQUFBRCxLQUFBO0lBQUEsS0FBQVgsS0FBQTtNQUFBLFlBTU4sQ0FBQ2EsT0FBTztJQUFBLGFBQUFGLEtBQUE7TUFBQSxLQUFSLENBQUNFLE9BQU8sR0FBQUYsS0FBQTtJQUFBLEtBQUFWLEtBQUE7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 \ No newline at end of file diff --git a/lib/indexed-array.cjs b/lib/indexed-array.cjs deleted file mode 100644 index d52ee18..0000000 --- a/lib/indexed-array.cjs +++ /dev/null @@ -1,59 +0,0 @@ -// Set but with custom keying and iterable -class KeyedSet { - #key = () => {}; - #map = new Map(); - constructor(keyFunc) { - this.#key = keyFunc; - return new Proxy(this, { - get(target, prop) { - if (prop in target) { - return target[prop]; - } else if (Number(prop) !== NaN) { - const arr = [...target]; - const index = Number(prop) < 0 ? arr.length - prop : prop; - return arr[index]; - } - } - }); - } - [Symbol.iterator] = () => { - return this.#map.values(); - }; - get length() { - return Array.from(this.#map.values()).length; - } - add = (...values) => { - values.flat().forEach(value => { - this.#map.set(this.#key(value), value); - }); - }; - clear = () => { - this.#map.clear(); - }; - delete = value => { - return this.#map.delete(this.#key(value)); - }; - entries = () => { - return this.#map.entries(); - }; - forEach = callback => { - const arr = Array.from(this.#map.values()); - for (const i in arr) { - callback(arr[i], i, arr); - } - }; - get = value => { - return this.#map.get(this.#key(value)); - }; - has = value => { - return this.#map.has(this.#key(value)); - }; - keys = () => { - return this.#map.keys(); - }; - values = () => { - return this.#map.values(); - }; -} -module.exports = KeyedSet; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJLZXllZFNldCIsImtleSIsIm1hcCIsIk1hcCIsImNvbnN0cnVjdG9yIiwia2V5RnVuYyIsIlByb3h5IiwiZ2V0IiwidGFyZ2V0IiwicHJvcCIsIk51bWJlciIsIk5hTiIsImFyciIsImluZGV4IiwibGVuZ3RoIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJ2YWx1ZXMiLCJBcnJheSIsImZyb20iLCJhZGQiLCJmbGF0IiwiZm9yRWFjaCIsInZhbHVlIiwic2V0IiwiY2xlYXIiLCJkZWxldGUiLCJlbnRyaWVzIiwiY2FsbGJhY2siLCJpIiwiaGFzIiwia2V5cyIsIm1vZHVsZSIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi9zcmMvaW5kZXhlZC1hcnJheS5janMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU2V0IGJ1dCB3aXRoIGN1c3RvbSBrZXlpbmcgYW5kIGl0ZXJhYmxlXG5jbGFzcyBLZXllZFNldCB7XG4gICAgI2tleSA9ICgpID0+IHt9XG4gICAgI21hcCA9IG5ldyBNYXAoKTtcblxuICAgIGNvbnN0cnVjdG9yKGtleUZ1bmMpIHtcbiAgICAgICAgdGhpcy4ja2V5ID0ga2V5RnVuY1xuICAgICAgICByZXR1cm4gbmV3IFByb3h5KHRoaXMsIHtcbiAgICAgICAgICAgIGdldCh0YXJnZXQsIHByb3ApIHtcbiAgICAgICAgICAgICAgICBpZihwcm9wIGluIHRhcmdldCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0W3Byb3BdXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYoTnVtYmVyKHByb3ApICE9PSBOYU4pIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYXJyID0gWy4uLnRhcmdldF1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSBOdW1iZXIocHJvcCkgPCAwID8gYXJyLmxlbmd0aCAtIHByb3AgOiBwcm9wXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhcnJbaW5kZXhdXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBbU3ltYm9sLml0ZXJhdG9yXSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI21hcC52YWx1ZXMoKTtcbiAgICB9XG5cbiAgICBnZXQgbGVuZ3RoKCkge1xuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLiNtYXAudmFsdWVzKCkpLmxlbmd0aFxuICAgIH1cblxuICAgIGFkZCA9ICguLi52YWx1ZXMpID0+IHtcbiAgICAgICAgdmFsdWVzLmZsYXQoKS5mb3JFYWNoKHZhbHVlID0+IHtcbiAgICAgICAgICAgIHRoaXMuI21hcC5zZXQodGhpcy4ja2V5KHZhbHVlKSwgdmFsdWUpXG4gICAgICAgIH0pXG4gICAgfVxuICAgIGNsZWFyID0gKCkgPT4ge1xuICAgICAgICB0aGlzLiNtYXAuY2xlYXIoKVxuICAgIH1cbiAgICBkZWxldGUgPSAodmFsdWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI21hcC5kZWxldGUodGhpcy4ja2V5KHZhbHVlKSlcbiAgICB9XG4gICAgZW50cmllcyA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI21hcC5lbnRyaWVzKClcbiAgICB9XG4gICAgZm9yRWFjaCA9IChjYWxsYmFjaykgPT4ge1xuICAgICAgICBjb25zdCBhcnIgPSBBcnJheS5mcm9tKHRoaXMuI21hcC52YWx1ZXMoKSlcbiAgICAgICAgZm9yKGNvbnN0IGkgaW4gYXJyKSB7XG4gICAgICAgICAgICBjYWxsYmFjayhhcnJbaV0sIGksIGFycilcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXQgPSAodmFsdWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI21hcC5nZXQodGhpcy4ja2V5KHZhbHVlKSlcbiAgICB9XG4gICAgaGFzID0gKHZhbHVlKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLiNtYXAuaGFzKHRoaXMuI2tleSh2YWx1ZSkpXG4gICAgfVxuICAgIGtleXMgPSAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLiNtYXAua2V5cygpXG4gICAgfVxuICAgIHZhbHVlcyA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI21hcC52YWx1ZXMoKVxuICAgIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBLZXllZFNldCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQSxNQUFNQSxRQUFRLENBQUM7RUFDWCxDQUFDQyxHQUFHLEdBQUcsTUFBTSxDQUFDLENBQUM7RUFDZixDQUFDQyxHQUFHLEdBQUcsSUFBSUMsR0FBRyxFQUFFO0VBRWhCQyxXQUFXLENBQUNDLE9BQU8sRUFBRTtJQUNqQixJQUFJLENBQUMsQ0FBQ0osR0FBRyxHQUFHSSxPQUFPO0lBQ25CLE9BQU8sSUFBSUMsS0FBSyxDQUFDLElBQUksRUFBRTtNQUNuQkMsR0FBRyxDQUFDQyxNQUFNLEVBQUVDLElBQUksRUFBRTtRQUNkLElBQUdBLElBQUksSUFBSUQsTUFBTSxFQUFFO1VBQ2YsT0FBT0EsTUFBTSxDQUFDQyxJQUFJLENBQUM7UUFDdkIsQ0FBQyxNQUNJLElBQUdDLE1BQU0sQ0FBQ0QsSUFBSSxDQUFDLEtBQUtFLEdBQUcsRUFBRTtVQUMxQixNQUFNQyxHQUFHLEdBQUcsQ0FBQyxHQUFHSixNQUFNLENBQUM7VUFDdkIsTUFBTUssS0FBSyxHQUFHSCxNQUFNLENBQUNELElBQUksQ0FBQyxHQUFHLENBQUMsR0FBR0csR0FBRyxDQUFDRSxNQUFNLEdBQUdMLElBQUksR0FBR0EsSUFBSTtVQUN6RCxPQUFPRyxHQUFHLENBQUNDLEtBQUssQ0FBQztRQUNyQjtNQUNKO0lBQ0osQ0FBQyxDQUFDO0VBQ047RUFFQSxDQUFDRSxNQUFNLENBQUNDLFFBQVEsSUFBSSxNQUFNO0lBQ3RCLE9BQU8sSUFBSSxDQUFDLENBQUNkLEdBQUcsQ0FBQ2UsTUFBTSxFQUFFO0VBQzdCLENBQUM7RUFFRCxJQUFJSCxNQUFNLEdBQUc7SUFDVCxPQUFPSSxLQUFLLENBQUNDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQ2pCLEdBQUcsQ0FBQ2UsTUFBTSxFQUFFLENBQUMsQ0FBQ0gsTUFBTTtFQUNoRDtFQUVBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHSCxNQUFNLEtBQUs7SUFDakJBLE1BQU0sQ0FBQ0ksSUFBSSxFQUFFLENBQUNDLE9BQU8sQ0FBQ0MsS0FBSyxJQUFJO01BQzNCLElBQUksQ0FBQyxDQUFDckIsR0FBRyxDQUFDc0IsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDdkIsR0FBRyxDQUFDc0IsS0FBSyxDQUFDLEVBQUVBLEtBQUssQ0FBQztJQUMxQyxDQUFDLENBQUM7RUFDTixDQUFDO0VBQ0RFLEtBQUssR0FBRyxNQUFNO0lBQ1YsSUFBSSxDQUFDLENBQUN2QixHQUFHLENBQUN1QixLQUFLLEVBQUU7RUFDckIsQ0FBQztFQUNEQyxNQUFNLEdBQUlILEtBQUssSUFBSztJQUNoQixPQUFPLElBQUksQ0FBQyxDQUFDckIsR0FBRyxDQUFDd0IsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDekIsR0FBRyxDQUFDc0IsS0FBSyxDQUFDLENBQUM7RUFDN0MsQ0FBQztFQUNESSxPQUFPLEdBQUcsTUFBTTtJQUNaLE9BQU8sSUFBSSxDQUFDLENBQUN6QixHQUFHLENBQUN5QixPQUFPLEVBQUU7RUFDOUIsQ0FBQztFQUNETCxPQUFPLEdBQUlNLFFBQVEsSUFBSztJQUNwQixNQUFNaEIsR0FBRyxHQUFHTSxLQUFLLENBQUNDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQ2pCLEdBQUcsQ0FBQ2UsTUFBTSxFQUFFLENBQUM7SUFDMUMsS0FBSSxNQUFNWSxDQUFDLElBQUlqQixHQUFHLEVBQUU7TUFDaEJnQixRQUFRLENBQUNoQixHQUFHLENBQUNpQixDQUFDLENBQUMsRUFBRUEsQ0FBQyxFQUFFakIsR0FBRyxDQUFDO0lBQzVCO0VBQ0osQ0FBQztFQUNETCxHQUFHLEdBQUlnQixLQUFLLElBQUs7SUFDYixPQUFPLElBQUksQ0FBQyxDQUFDckIsR0FBRyxDQUFDSyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUNOLEdBQUcsQ0FBQ3NCLEtBQUssQ0FBQyxDQUFDO0VBQzFDLENBQUM7RUFDRE8sR0FBRyxHQUFJUCxLQUFLLElBQUs7SUFDYixPQUFPLElBQUksQ0FBQyxDQUFDckIsR0FBRyxDQUFDNEIsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDN0IsR0FBRyxDQUFDc0IsS0FBSyxDQUFDLENBQUM7RUFDMUMsQ0FBQztFQUNEUSxJQUFJLEdBQUcsTUFBTTtJQUNULE9BQU8sSUFBSSxDQUFDLENBQUM3QixHQUFHLENBQUM2QixJQUFJLEVBQUU7RUFDM0IsQ0FBQztFQUNEZCxNQUFNLEdBQUcsTUFBTTtJQUNYLE9BQU8sSUFBSSxDQUFDLENBQUNmLEdBQUcsQ0FBQ2UsTUFBTSxFQUFFO0VBQzdCLENBQUM7QUFDTDtBQUVBZSxNQUFNLENBQUNDLE9BQU8sR0FBR2pDLFFBQVEifQ== \ No newline at end of file diff --git a/lib/iterator.cjs b/lib/iterator.cjs new file mode 100644 index 0000000..c500c90 --- /dev/null +++ b/lib/iterator.cjs @@ -0,0 +1,24 @@ +class Iterator { + values = []; + pointer = -1; + constructor(values) { + this.values = values; + } + next = () => { + this.pointer = Math.min(this.pointer + 1, this.values.length); + return { + value: this.values[this.pointer], + done: this.pointer >= this.values.length + }; + }; + each = callback => { + let value; + while (!(value = this.next()).done) { + if (callback({ + value: value.value + }) !== true) break; + } + }; +} +module.exports = Iterator; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJJdGVyYXRvciIsInZhbHVlcyIsInBvaW50ZXIiLCJjb25zdHJ1Y3RvciIsIm5leHQiLCJNYXRoIiwibWluIiwibGVuZ3RoIiwidmFsdWUiLCJkb25lIiwiZWFjaCIsImNhbGxiYWNrIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uL3NyYy9pdGVyYXRvci5janMiXSwic291cmNlc0NvbnRlbnQiOlsiY2xhc3MgSXRlcmF0b3Ige1xuXHR2YWx1ZXMgPSBbXTtcblx0cG9pbnRlciA9IC0xO1xuXG5cdGNvbnN0cnVjdG9yKHZhbHVlcykge1xuXHRcdHRoaXMudmFsdWVzID0gdmFsdWVzO1xuXHR9XG5cblx0bmV4dCA9ICgpID0+IHtcblx0XHR0aGlzLnBvaW50ZXIgPSBNYXRoLm1pbih0aGlzLnBvaW50ZXIgKyAxLCB0aGlzLnZhbHVlcy5sZW5ndGgpO1xuXHRcdHJldHVybiB7IHZhbHVlOiB0aGlzLnZhbHVlc1t0aGlzLnBvaW50ZXJdLCBkb25lOiB0aGlzLnBvaW50ZXIgPj0gdGhpcy52YWx1ZXMubGVuZ3RoIH07XG5cdH07XG5cblx0ZWFjaCA9IChjYWxsYmFjaykgPT4ge1xuXHRcdGxldCB2YWx1ZTtcblx0XHR3aGlsZSAoISh2YWx1ZSA9IHRoaXMubmV4dCgpKS5kb25lKSB7XG5cdFx0XHRpZiAoY2FsbGJhY2soeyB2YWx1ZTogdmFsdWUudmFsdWUgfSkgIT09IHRydWUpIGJyZWFrO1xuXHRcdH1cblx0fTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBJdGVyYXRvcjtcbiJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsUUFBUSxDQUFDO0VBQ2RDLE1BQU0sR0FBRyxFQUFFO0VBQ1hDLE9BQU8sR0FBRyxDQUFDLENBQUM7RUFFWkMsV0FBV0EsQ0FBQ0YsTUFBTSxFQUFFO0lBQ25CLElBQUksQ0FBQ0EsTUFBTSxHQUFHQSxNQUFNO0VBQ3JCO0VBRUFHLElBQUksR0FBR0EsQ0FBQSxLQUFNO0lBQ1osSUFBSSxDQUFDRixPQUFPLEdBQUdHLElBQUksQ0FBQ0MsR0FBRyxDQUFDLElBQUksQ0FBQ0osT0FBTyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUNELE1BQU0sQ0FBQ00sTUFBTSxDQUFDO0lBQzdELE9BQU87TUFBRUMsS0FBSyxFQUFFLElBQUksQ0FBQ1AsTUFBTSxDQUFDLElBQUksQ0FBQ0MsT0FBTyxDQUFDO01BQUVPLElBQUksRUFBRSxJQUFJLENBQUNQLE9BQU8sSUFBSSxJQUFJLENBQUNELE1BQU0sQ0FBQ007SUFBTyxDQUFDO0VBQ3RGLENBQUM7RUFFREcsSUFBSSxHQUFJQyxRQUFRLElBQUs7SUFDcEIsSUFBSUgsS0FBSztJQUNULE9BQU8sQ0FBQyxDQUFDQSxLQUFLLEdBQUcsSUFBSSxDQUFDSixJQUFJLENBQUMsQ0FBQyxFQUFFSyxJQUFJLEVBQUU7TUFDbkMsSUFBSUUsUUFBUSxDQUFDO1FBQUVILEtBQUssRUFBRUEsS0FBSyxDQUFDQTtNQUFNLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRTtJQUNoRDtFQUNELENBQUM7QUFDRjtBQUVBSSxNQUFNLENBQUNDLE9BQU8sR0FBR2IsUUFBUSJ9 \ No newline at end of file diff --git a/lib/mocks/file/File.cjs b/lib/mocks/file/File.cjs new file mode 100644 index 0000000..088a446 --- /dev/null +++ b/lib/mocks/file/File.cjs @@ -0,0 +1,119 @@ +var _initClass, _dec, _dec2, _dec3, _init_appendLine, _dec4, _dec5, _init_getSegments; +function applyDecs2203RFactory() { function createAddInitializerMethod(e, t) { return function (r) { !function (e, t) { if (e.v) throw new Error("attempted to call " + t + " after decoration was finished"); }(t, "addInitializer"), assertCallable(r, "An initializer"), e.push(r); }; } function memberDec(e, t, r, n, a, i, s, o) { var c; switch (a) { case 1: c = "accessor"; break; case 2: c = "method"; break; case 3: c = "getter"; break; case 4: c = "setter"; break; default: c = "field"; } var l, u, f = { kind: c, name: s ? "#" + t : t, static: i, private: s }, p = { v: !1 }; 0 !== a && (f.addInitializer = createAddInitializerMethod(n, p)), 0 === a ? s ? (l = r.get, u = r.set) : (l = function () { return this[t]; }, u = function (e) { this[t] = e; }) : 2 === a ? l = function () { return r.value; } : (1 !== a && 3 !== a || (l = function () { return r.get.call(this); }), 1 !== a && 4 !== a || (u = function (e) { r.set.call(this, e); })), f.access = l && u ? { get: l, set: u } : l ? { get: l } : { set: u }; try { return e(o, f); } finally { p.v = !0; } } function assertCallable(e, t) { if ("function" != typeof e) throw new TypeError(t + " must be a function"); } function assertValidReturnValue(e, t) { var r = typeof t; if (1 === e) { if ("object" !== r || null === t) throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0"); void 0 !== t.get && assertCallable(t.get, "accessor.get"), void 0 !== t.set && assertCallable(t.set, "accessor.set"), void 0 !== t.init && assertCallable(t.init, "accessor.init"); } else if ("function" !== r) { var n; throw n = 0 === e ? "field" : 10 === e ? "class" : "method", new TypeError(n + " decorators must return a function or void 0"); } } function applyMemberDec(e, t, r, n, a, i, s, o) { var c, l, u, f, p, d, h = r[0]; if (s ? c = 0 === a || 1 === a ? { get: r[3], set: r[4] } : 3 === a ? { get: r[3] } : 4 === a ? { set: r[3] } : { value: r[3] } : 0 !== a && (c = Object.getOwnPropertyDescriptor(t, n)), 1 === a ? u = { get: c.get, set: c.set } : 2 === a ? u = c.value : 3 === a ? u = c.get : 4 === a && (u = c.set), "function" == typeof h) void 0 !== (f = memberDec(h, n, c, o, a, i, s, u)) && (assertValidReturnValue(a, f), 0 === a ? l = f : 1 === a ? (l = f.init, p = f.get || u.get, d = f.set || u.set, u = { get: p, set: d }) : u = f);else for (var v = h.length - 1; v >= 0; v--) { var g; if (void 0 !== (f = memberDec(h[v], n, c, o, a, i, s, u))) assertValidReturnValue(a, f), 0 === a ? g = f : 1 === a ? (g = f.init, p = f.get || u.get, d = f.set || u.set, u = { get: p, set: d }) : u = f, void 0 !== g && (void 0 === l ? l = g : "function" == typeof l ? l = [l, g] : l.push(g)); } if (0 === a || 1 === a) { if (void 0 === l) l = function (e, t) { return t; };else if ("function" != typeof l) { var y = l; l = function (e, t) { for (var r = t, n = 0; n < y.length; n++) r = y[n].call(e, r); return r; }; } else { var m = l; l = function (e, t) { return m.call(e, t); }; } e.push(l); } 0 !== a && (1 === a ? (c.get = u.get, c.set = u.set) : 2 === a ? c.value = u : 3 === a ? c.get = u : 4 === a && (c.set = u), s ? 1 === a ? (e.push(function (e, t) { return u.get.call(e, t); }), e.push(function (e, t) { return u.set.call(e, t); })) : 2 === a ? e.push(u) : e.push(function (e, t) { return u.call(e, t); }) : Object.defineProperty(t, n, c)); } function applyMemberDecs(e, t) { for (var r, n, a = [], i = new Map(), s = new Map(), o = 0; o < t.length; o++) { var c = t[o]; if (Array.isArray(c)) { var l, u, f = c[1], p = c[2], d = c.length > 3, h = f >= 5; if (h ? (l = e, 0 !== (f -= 5) && (u = n = n || [])) : (l = e.prototype, 0 !== f && (u = r = r || [])), 0 !== f && !d) { var v = h ? s : i, g = v.get(p) || 0; if (!0 === g || 3 === g && 4 !== f || 4 === g && 3 !== f) throw new Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: " + p); !g && f > 2 ? v.set(p, f) : v.set(p, !0); } applyMemberDec(a, l, c, p, f, h, d, u); } } return pushInitializers(a, r), pushInitializers(a, n), a; } function pushInitializers(e, t) { t && e.push(function (e) { for (var r = 0; r < t.length; r++) t[r].call(e); return e; }); } return function (e, t, r) { return { e: applyMemberDecs(e, t), get c() { return function (e, t) { if (t.length > 0) { for (var r = [], n = e, a = e.name, i = t.length - 1; i >= 0; i--) { var s = { v: !1 }; try { var o = t[i](n, { kind: "class", name: a, addInitializer: createAddInitializerMethod(r, s) }); } finally { s.v = !0; } void 0 !== o && (assertValidReturnValue(10, o), n = o); } return [n, function () { for (var e = 0; e < r.length; e++) r[e].call(n); }]; } }(e, r); } }; }; } +function _applyDecs2203R(e, t, r) { return (_applyDecs2203R = applyDecs2203RFactory())(e, t, r); } +const SuiteScriptMocks = require("../../index.cjs"); +const { + options, + required, + assignConstructor +} = require("../../helpers.cjs"); +const Iterator = require("../../iterator.cjs"); +const Reader = require("./Reader.cjs"); +let _File; +_dec = assignConstructor(); +_dec2 = options("value"); +_dec3 = required("value"); +_dec4 = options("separator"); +_dec5 = required("separator"); +class File { + static { + ({ + e: [_init_appendLine, _init_getSegments], + c: [_File, _initClass] + } = _applyDecs2203R(this, [[[_dec2, _dec3], 0, "appendLine"], [[_dec4, _dec5], 0, "getSegments"]], [_dec])); + } + description = ""; + contents = ""; + encoding = ""; + fileType = ""; + folder = null; + id = null; + isInactive = false; + isOnline = false; + isText = true; + name = ""; + path = ""; + size = 0; + url = ""; + savedContents = null; + frozenContents = null; + frozenContents2 = null; + iterators = []; + readers = []; + lines = { + iterator: () => { + this.iterators.push(new Iterator(this.savedContents?.split(options.separator) || [])); + return this.iterators.at(-1); + } + }; + initialize = () => { + this.frozenContents = this.frozenContents2 = null; + if (this.id) { + this.savedContents = this.contents; + } + }; + appendLine = _init_appendLine(this, options => { + this.contents = this.contents ? this.contents.split("\n").concat([options.value]).join("\n") : options.value; + }); + getContents = () => { + if (this.savedContents !== null) { + return this.savedContents; + } + if (this.frozenContents === null) { + this.frozenContents = this.frozenContents2 = this.contents; + } + if (this.frozenContents === null) { + throw new Error("File contents don't exist"); + } + return this.frozenContents; + }; + getReader = () => { + this.iterators.push(new Reader({ + contents: this.savedContents || this.frozenContents2 || "" + })); + return this.iterators.at(-1); + }; + getSegments = _init_getSegments(this, options => { + if (typeof options.separator !== "string") { + throw new Error("Separator must be a string."); + } + return { + iterator: () => { + this.iterators.push(new Iterator(this.savedContents?.split(options.separator) || [])); + return this.iterators.at(-1); + } + }; + }); + resetStream = () => { + this.contents = this.savedContents; + this.frozenContents2 = null; + this.iterators.forEach(iterator => { + iterator.pointer = -1; + }); + this.readers.forEach(reader => { + reader.pointer = -1; + reader.contents = reader.savedContents; + }); + }; + save = () => { + if (this.contents === null) { + throw new Error("File contents don't exist"); + } + if (!this.folder) { + throw new Error("Please enter value for folder"); + } + const copy = new _File(this); + if (!this.id) { + this.id = copy.id = Math.max(...Array.from(SuiteScriptMocks.files.values()).map(a => a.id)) + 1; + SuiteScriptMocks.createdFiles.push(copy); + } + SuiteScriptMocks.files.set(copy); + SuiteScriptMocks.savedFiles.push(copy); + return this.id; + }; + static { + _initClass(); + } +} +module.exports = _File; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTdWl0ZVNjcmlwdE1vY2tzIiwicmVxdWlyZSIsIm9wdGlvbnMiLCJyZXF1aXJlZCIsImFzc2lnbkNvbnN0cnVjdG9yIiwiSXRlcmF0b3IiLCJSZWFkZXIiLCJfRmlsZSIsIl9kZWMiLCJfZGVjMiIsIl9kZWMzIiwiX2RlYzQiLCJfZGVjNSIsIkZpbGUiLCJlIiwiX2luaXRfYXBwZW5kTGluZSIsIl9pbml0X2dldFNlZ21lbnRzIiwiYyIsIl9pbml0Q2xhc3MiLCJfYXBwbHlEZWNzMjIwM1IiLCJkZXNjcmlwdGlvbiIsImNvbnRlbnRzIiwiZW5jb2RpbmciLCJmaWxlVHlwZSIsImZvbGRlciIsImlkIiwiaXNJbmFjdGl2ZSIsImlzT25saW5lIiwiaXNUZXh0IiwibmFtZSIsInBhdGgiLCJzaXplIiwidXJsIiwic2F2ZWRDb250ZW50cyIsImZyb3plbkNvbnRlbnRzIiwiZnJvemVuQ29udGVudHMyIiwiaXRlcmF0b3JzIiwicmVhZGVycyIsImxpbmVzIiwiaXRlcmF0b3IiLCJwdXNoIiwic3BsaXQiLCJzZXBhcmF0b3IiLCJhdCIsImluaXRpYWxpemUiLCJhcHBlbmRMaW5lIiwiY29uY2F0IiwidmFsdWUiLCJqb2luIiwiZ2V0Q29udGVudHMiLCJFcnJvciIsImdldFJlYWRlciIsImdldFNlZ21lbnRzIiwicmVzZXRTdHJlYW0iLCJmb3JFYWNoIiwicG9pbnRlciIsInJlYWRlciIsInNhdmUiLCJjb3B5IiwiTWF0aCIsIm1heCIsIkFycmF5IiwiZnJvbSIsImZpbGVzIiwidmFsdWVzIiwibWFwIiwiYSIsImNyZWF0ZWRGaWxlcyIsInNldCIsInNhdmVkRmlsZXMiLCJtb2R1bGUiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21vY2tzL2ZpbGUvRmlsZS5janMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgU3VpdGVTY3JpcHRNb2NrcyA9IHJlcXVpcmUoXCIuLi8uLi9pbmRleC5janNcIik7XG5jb25zdCB7IG9wdGlvbnMsIHJlcXVpcmVkLCBhc3NpZ25Db25zdHJ1Y3RvciB9ID0gcmVxdWlyZShcIi4uLy4uL2hlbHBlcnMuY2pzXCIpO1xuY29uc3QgSXRlcmF0b3IgPSByZXF1aXJlKFwiLi4vLi4vaXRlcmF0b3IuY2pzXCIpO1xuY29uc3QgUmVhZGVyID0gcmVxdWlyZShcIi4vUmVhZGVyLmNqc1wiKTtcblxuQGFzc2lnbkNvbnN0cnVjdG9yKClcbmNsYXNzIEZpbGUge1xuXHRkZXNjcmlwdGlvbiA9IFwiXCI7XG5cdGNvbnRlbnRzID0gXCJcIjtcblx0ZW5jb2RpbmcgPSBcIlwiO1xuXHRmaWxlVHlwZSA9IFwiXCI7XG5cdGZvbGRlciA9IG51bGw7XG5cdGlkID0gbnVsbDtcblx0aXNJbmFjdGl2ZSA9IGZhbHNlO1xuXHRpc09ubGluZSA9IGZhbHNlO1xuXHRpc1RleHQgPSB0cnVlO1xuXHRuYW1lID0gXCJcIjtcblx0cGF0aCA9IFwiXCI7XG5cdHNpemUgPSAwO1xuXHR1cmwgPSBcIlwiO1xuXG5cdHNhdmVkQ29udGVudHMgPSBudWxsO1xuXHRmcm96ZW5Db250ZW50cyA9IG51bGw7XG5cdGZyb3plbkNvbnRlbnRzMiA9IG51bGw7XG5cdGl0ZXJhdG9ycyA9IFtdO1xuXHRyZWFkZXJzID0gW107XG5cblx0bGluZXMgPSB7XG5cdFx0aXRlcmF0b3I6ICgpID0+IHtcblx0XHRcdHRoaXMuaXRlcmF0b3JzLnB1c2gobmV3IEl0ZXJhdG9yKHRoaXMuc2F2ZWRDb250ZW50cz8uc3BsaXQob3B0aW9ucy5zZXBhcmF0b3IpIHx8IFtdKSk7XG5cdFx0XHRyZXR1cm4gdGhpcy5pdGVyYXRvcnMuYXQoLTEpO1xuXHRcdH0sXG5cdH07XG5cblx0aW5pdGlhbGl6ZSA9ICgpID0+IHtcblx0XHR0aGlzLmZyb3plbkNvbnRlbnRzID0gdGhpcy5mcm96ZW5Db250ZW50czIgPSBudWxsO1xuXHRcdGlmICh0aGlzLmlkKSB7XG5cdFx0XHR0aGlzLnNhdmVkQ29udGVudHMgPSB0aGlzLmNvbnRlbnRzO1xuXHRcdH1cblx0fTtcblxuXHRAb3B0aW9ucyhcInZhbHVlXCIpXG5cdEByZXF1aXJlZChcInZhbHVlXCIpXG5cdGFwcGVuZExpbmUgPSAob3B0aW9ucykgPT4ge1xuXHRcdHRoaXMuY29udGVudHMgPSB0aGlzLmNvbnRlbnRzID8gdGhpcy5jb250ZW50cy5zcGxpdChcIlxcblwiKS5jb25jYXQoW29wdGlvbnMudmFsdWVdKS5qb2luKFwiXFxuXCIpIDogb3B0aW9ucy52YWx1ZTtcblx0fTtcblxuXHRnZXRDb250ZW50cyA9ICgpID0+IHtcblx0XHRpZiAodGhpcy5zYXZlZENvbnRlbnRzICE9PSBudWxsKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5zYXZlZENvbnRlbnRzO1xuXHRcdH1cblx0XHRpZiAodGhpcy5mcm96ZW5Db250ZW50cyA9PT0gbnVsbCkge1xuXHRcdFx0dGhpcy5mcm96ZW5Db250ZW50cyA9IHRoaXMuZnJvemVuQ29udGVudHMyID0gdGhpcy5jb250ZW50cztcblx0XHR9XG5cdFx0aWYgKHRoaXMuZnJvemVuQ29udGVudHMgPT09IG51bGwpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcIkZpbGUgY29udGVudHMgZG9uJ3QgZXhpc3RcIik7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLmZyb3plbkNvbnRlbnRzO1xuXHR9O1xuXG5cdGdldFJlYWRlciA9ICgpID0+IHtcblx0XHR0aGlzLml0ZXJhdG9ycy5wdXNoKG5ldyBSZWFkZXIoeyBjb250ZW50czogdGhpcy5zYXZlZENvbnRlbnRzIHx8IHRoaXMuZnJvemVuQ29udGVudHMyIHx8IFwiXCIgfSkpO1xuXHRcdHJldHVybiB0aGlzLml0ZXJhdG9ycy5hdCgtMSk7XG5cdH07XG5cblx0QG9wdGlvbnMoXCJzZXBhcmF0b3JcIilcblx0QHJlcXVpcmVkKFwic2VwYXJhdG9yXCIpXG5cdGdldFNlZ21lbnRzID0gKG9wdGlvbnMpID0+IHtcblx0XHRpZiAodHlwZW9mIG9wdGlvbnMuc2VwYXJhdG9yICE9PSBcInN0cmluZ1wiKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJTZXBhcmF0b3IgbXVzdCBiZSBhIHN0cmluZy5cIik7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHRpdGVyYXRvcjogKCkgPT4ge1xuXHRcdFx0XHR0aGlzLml0ZXJhdG9ycy5wdXNoKG5ldyBJdGVyYXRvcih0aGlzLnNhdmVkQ29udGVudHM/LnNwbGl0KG9wdGlvbnMuc2VwYXJhdG9yKSB8fCBbXSkpO1xuXHRcdFx0XHRyZXR1cm4gdGhpcy5pdGVyYXRvcnMuYXQoLTEpO1xuXHRcdFx0fSxcblx0XHR9O1xuXHR9O1xuXG5cdHJlc2V0U3RyZWFtID0gKCkgPT4ge1xuXHRcdHRoaXMuY29udGVudHMgPSB0aGlzLnNhdmVkQ29udGVudHM7XG5cdFx0dGhpcy5mcm96ZW5Db250ZW50czIgPSBudWxsO1xuXHRcdHRoaXMuaXRlcmF0b3JzLmZvckVhY2goKGl0ZXJhdG9yKSA9PiB7XG5cdFx0XHRpdGVyYXRvci5wb2ludGVyID0gLTE7XG5cdFx0fSk7XG5cdFx0dGhpcy5yZWFkZXJzLmZvckVhY2goKHJlYWRlcikgPT4ge1xuXHRcdFx0cmVhZGVyLnBvaW50ZXIgPSAtMTtcblx0XHRcdHJlYWRlci5jb250ZW50cyA9IHJlYWRlci5zYXZlZENvbnRlbnRzO1xuXHRcdH0pO1xuXHR9O1xuXG5cdHNhdmUgPSAoKSA9PiB7XG5cdFx0aWYgKHRoaXMuY29udGVudHMgPT09IG51bGwpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcIkZpbGUgY29udGVudHMgZG9uJ3QgZXhpc3RcIik7XG5cdFx0fVxuXHRcdGlmICghdGhpcy5mb2xkZXIpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcIlBsZWFzZSBlbnRlciB2YWx1ZSBmb3IgZm9sZGVyXCIpO1xuXHRcdH1cblx0XHRjb25zdCBjb3B5ID0gbmV3IEZpbGUodGhpcyk7XG5cdFx0aWYgKCF0aGlzLmlkKSB7XG5cdFx0XHR0aGlzLmlkID0gY29weS5pZCA9IE1hdGgubWF4KC4uLkFycmF5LmZyb20oU3VpdGVTY3JpcHRNb2Nrcy5maWxlcy52YWx1ZXMoKSkubWFwKChhKSA9PiBhLmlkKSkgKyAxO1xuXHRcdFx0U3VpdGVTY3JpcHRNb2Nrcy5jcmVhdGVkRmlsZXMucHVzaChjb3B5KTtcblx0XHR9XG5cdFx0U3VpdGVTY3JpcHRNb2Nrcy5maWxlcy5zZXQoY29weSk7XG5cdFx0U3VpdGVTY3JpcHRNb2Nrcy5zYXZlZEZpbGVzLnB1c2goY29weSk7XG5cdFx0cmV0dXJuIHRoaXMuaWQ7XG5cdH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gRmlsZTtcbiJdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsTUFBTUEsZ0JBQWdCLEdBQUdDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQztBQUNuRCxNQUFNO0VBQUVDLE9BQU87RUFBRUMsUUFBUTtFQUFFQztBQUFrQixDQUFDLEdBQUdILE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQztBQUM3RSxNQUFNSSxRQUFRLEdBQUdKLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQztBQUM5QyxNQUFNSyxNQUFNLEdBQUdMLE9BQU8sQ0FBQyxjQUFjLENBQUM7QUFBQyxJQUFBTSxLQUFBO0FBQUFDLElBQUEsR0FFdENKLGlCQUFpQixDQUFDLENBQUM7QUFBQUssS0FBQSxHQW9DbEJQLE9BQU8sQ0FBQyxPQUFPLENBQUM7QUFBQVEsS0FBQSxHQUNoQlAsUUFBUSxDQUFDLE9BQU8sQ0FBQztBQUFBUSxLQUFBLEdBdUJqQlQsT0FBTyxDQUFDLFdBQVcsQ0FBQztBQUFBVSxLQUFBLEdBQ3BCVCxRQUFRLENBQUMsV0FBVyxDQUFDO0FBN0R2QixNQUFBVSxJQUFBLENBQ1c7RUFBQTtJQUFBO01BQUFDLENBQUEsR0FBQUMsZ0JBQUEsRUFBQUMsaUJBQUE7TUFBQUMsQ0FBQSxHQUFBVixLQUFBLEVBQUFXLFVBQUE7SUFBQSxJQUFBQyxlQUFBLFVBQUFWLEtBQUEsRUFBQUMsS0FBQSx1QkFBQUMsS0FBQSxFQUFBQyxLQUFBLHdCQUFBSixJQUFBO0VBQUE7RUFDVlksV0FBVyxHQUFHLEVBQUU7RUFDaEJDLFFBQVEsR0FBRyxFQUFFO0VBQ2JDLFFBQVEsR0FBRyxFQUFFO0VBQ2JDLFFBQVEsR0FB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 \ No newline at end of file diff --git a/lib/mocks/file/Reader.cjs b/lib/mocks/file/Reader.cjs new file mode 100644 index 0000000..aede89b --- /dev/null +++ b/lib/mocks/file/Reader.cjs @@ -0,0 +1,43 @@ +var _initClass, _dec, _dec2, _dec3, _init_readChars, _dec4, _dec5, _init_readUntil; +function applyDecs2203RFactory() { function createAddInitializerMethod(e, t) { return function (r) { !function (e, t) { if (e.v) throw new Error("attempted to call " + t + " after decoration was finished"); }(t, "addInitializer"), assertCallable(r, "An initializer"), e.push(r); }; } function memberDec(e, t, r, n, a, i, s, o) { var c; switch (a) { case 1: c = "accessor"; break; case 2: c = "method"; break; case 3: c = "getter"; break; case 4: c = "setter"; break; default: c = "field"; } var l, u, f = { kind: c, name: s ? "#" + t : t, static: i, private: s }, p = { v: !1 }; 0 !== a && (f.addInitializer = createAddInitializerMethod(n, p)), 0 === a ? s ? (l = r.get, u = r.set) : (l = function () { return this[t]; }, u = function (e) { this[t] = e; }) : 2 === a ? l = function () { return r.value; } : (1 !== a && 3 !== a || (l = function () { return r.get.call(this); }), 1 !== a && 4 !== a || (u = function (e) { r.set.call(this, e); })), f.access = l && u ? { get: l, set: u } : l ? { get: l } : { set: u }; try { return e(o, f); } finally { p.v = !0; } } function assertCallable(e, t) { if ("function" != typeof e) throw new TypeError(t + " must be a function"); } function assertValidReturnValue(e, t) { var r = typeof t; if (1 === e) { if ("object" !== r || null === t) throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0"); void 0 !== t.get && assertCallable(t.get, "accessor.get"), void 0 !== t.set && assertCallable(t.set, "accessor.set"), void 0 !== t.init && assertCallable(t.init, "accessor.init"); } else if ("function" !== r) { var n; throw n = 0 === e ? "field" : 10 === e ? "class" : "method", new TypeError(n + " decorators must return a function or void 0"); } } function applyMemberDec(e, t, r, n, a, i, s, o) { var c, l, u, f, p, d, h = r[0]; if (s ? c = 0 === a || 1 === a ? { get: r[3], set: r[4] } : 3 === a ? { get: r[3] } : 4 === a ? { set: r[3] } : { value: r[3] } : 0 !== a && (c = Object.getOwnPropertyDescriptor(t, n)), 1 === a ? u = { get: c.get, set: c.set } : 2 === a ? u = c.value : 3 === a ? u = c.get : 4 === a && (u = c.set), "function" == typeof h) void 0 !== (f = memberDec(h, n, c, o, a, i, s, u)) && (assertValidReturnValue(a, f), 0 === a ? l = f : 1 === a ? (l = f.init, p = f.get || u.get, d = f.set || u.set, u = { get: p, set: d }) : u = f);else for (var v = h.length - 1; v >= 0; v--) { var g; if (void 0 !== (f = memberDec(h[v], n, c, o, a, i, s, u))) assertValidReturnValue(a, f), 0 === a ? g = f : 1 === a ? (g = f.init, p = f.get || u.get, d = f.set || u.set, u = { get: p, set: d }) : u = f, void 0 !== g && (void 0 === l ? l = g : "function" == typeof l ? l = [l, g] : l.push(g)); } if (0 === a || 1 === a) { if (void 0 === l) l = function (e, t) { return t; };else if ("function" != typeof l) { var y = l; l = function (e, t) { for (var r = t, n = 0; n < y.length; n++) r = y[n].call(e, r); return r; }; } else { var m = l; l = function (e, t) { return m.call(e, t); }; } e.push(l); } 0 !== a && (1 === a ? (c.get = u.get, c.set = u.set) : 2 === a ? c.value = u : 3 === a ? c.get = u : 4 === a && (c.set = u), s ? 1 === a ? (e.push(function (e, t) { return u.get.call(e, t); }), e.push(function (e, t) { return u.set.call(e, t); })) : 2 === a ? e.push(u) : e.push(function (e, t) { return u.call(e, t); }) : Object.defineProperty(t, n, c)); } function applyMemberDecs(e, t) { for (var r, n, a = [], i = new Map(), s = new Map(), o = 0; o < t.length; o++) { var c = t[o]; if (Array.isArray(c)) { var l, u, f = c[1], p = c[2], d = c.length > 3, h = f >= 5; if (h ? (l = e, 0 !== (f -= 5) && (u = n = n || [])) : (l = e.prototype, 0 !== f && (u = r = r || [])), 0 !== f && !d) { var v = h ? s : i, g = v.get(p) || 0; if (!0 === g || 3 === g && 4 !== f || 4 === g && 3 !== f) throw new Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: " + p); !g && f > 2 ? v.set(p, f) : v.set(p, !0); } applyMemberDec(a, l, c, p, f, h, d, u); } } return pushInitializers(a, r), pushInitializers(a, n), a; } function pushInitializers(e, t) { t && e.push(function (e) { for (var r = 0; r < t.length; r++) t[r].call(e); return e; }); } return function (e, t, r) { return { e: applyMemberDecs(e, t), get c() { return function (e, t) { if (t.length > 0) { for (var r = [], n = e, a = e.name, i = t.length - 1; i >= 0; i--) { var s = { v: !1 }; try { var o = t[i](n, { kind: "class", name: a, addInitializer: createAddInitializerMethod(r, s) }); } finally { s.v = !0; } void 0 !== o && (assertValidReturnValue(10, o), n = o); } return [n, function () { for (var e = 0; e < r.length; e++) r[e].call(n); }]; } }(e, r); } }; }; } +function _applyDecs2203R(e, t, r) { return (_applyDecs2203R = applyDecs2203RFactory())(e, t, r); } +const { + options, + required, + assignConstructor +} = require("../../helpers.cjs"); +let _Reader; +_dec = assignConstructor(); +_dec2 = options("number"); +_dec3 = required("number"); +_dec4 = options("tag"); +_dec5 = required("tag"); +class Reader { + static { + ({ + e: [_init_readChars, _init_readUntil], + c: [_Reader, _initClass] + } = _applyDecs2203R(this, [[[_dec2, _dec3], 0, "readChars"], [[_dec4, _dec5], 0, "readUntil"]], [_dec])); + } + contents = ""; + pointer = 0; + readChars = _init_readChars(this, options => { + const oldPointer = this.pointer; + this.pointer = Math.min(this.pointer + options.number, this.contents.length); + return this.contents.substring(oldPointer, this.pointer); + }); + readUntil = _init_readUntil(this, options => { + const oldPointer = this.pointer; + const index = this.contents.indexOf(options.tag, this.pointer); + this.pointer = index >= 0 ? index + options.tag.length : this.contents.length; + return this.contents.substring(oldPointer, this.pointer); + }); + reset = () => { + this.pointer = 0; + }; + static { + _initClass(); + } +} +module.exports = _Reader; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJvcHRpb25zIiwicmVxdWlyZWQiLCJhc3NpZ25Db25zdHJ1Y3RvciIsInJlcXVpcmUiLCJfUmVhZGVyIiwiX2RlYyIsIl9kZWMyIiwiX2RlYzMiLCJfZGVjNCIsIl9kZWM1IiwiUmVhZGVyIiwiZSIsIl9pbml0X3JlYWRDaGFycyIsIl9pbml0X3JlYWRVbnRpbCIsImMiLCJfaW5pdENsYXNzIiwiX2FwcGx5RGVjczIyMDNSIiwiY29udGVudHMiLCJwb2ludGVyIiwicmVhZENoYXJzIiwib2xkUG9pbnRlciIsIk1hdGgiLCJtaW4iLCJudW1iZXIiLCJsZW5ndGgiLCJzdWJzdHJpbmciLCJyZWFkVW50aWwiLCJpbmRleCIsImluZGV4T2YiLCJ0YWciLCJyZXNldCIsIm1vZHVsZSIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9ja3MvZmlsZS9SZWFkZXIuY2pzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHsgb3B0aW9ucywgcmVxdWlyZWQsIGFzc2lnbkNvbnN0cnVjdG9yIH0gPSByZXF1aXJlKFwiLi4vLi4vaGVscGVycy5janNcIik7XG5cbkBhc3NpZ25Db25zdHJ1Y3RvcigpXG5jbGFzcyBSZWFkZXIge1xuXHRjb250ZW50cyA9IFwiXCI7XG5cdHBvaW50ZXIgPSAwO1xuXG5cdEBvcHRpb25zKFwibnVtYmVyXCIpXG5cdEByZXF1aXJlZChcIm51bWJlclwiKVxuXHRyZWFkQ2hhcnMgPSAob3B0aW9ucykgPT4ge1xuXHRcdGNvbnN0IG9sZFBvaW50ZXIgPSB0aGlzLnBvaW50ZXI7XG5cdFx0dGhpcy5wb2ludGVyID0gTWF0aC5taW4odGhpcy5wb2ludGVyICsgb3B0aW9ucy5udW1iZXIsIHRoaXMuY29udGVudHMubGVuZ3RoKTtcblx0XHRyZXR1cm4gdGhpcy5jb250ZW50cy5zdWJzdHJpbmcob2xkUG9pbnRlciwgdGhpcy5wb2ludGVyKTtcblx0fTtcblxuXHRAb3B0aW9ucyhcInRhZ1wiKVxuXHRAcmVxdWlyZWQoXCJ0YWdcIilcblx0cmVhZFVudGlsID0gKG9wdGlvbnMpID0+IHtcblx0XHRjb25zdCBvbGRQb2ludGVyID0gdGhpcy5wb2ludGVyO1xuXHRcdGNvbnN0IGluZGV4ID0gdGhpcy5jb250ZW50cy5pbmRleE9mKG9wdGlvbnMudGFnLCB0aGlzLnBvaW50ZXIpO1xuXHRcdHRoaXMucG9pbnRlciA9IGluZGV4ID49IDAgPyBpbmRleCArIG9wdGlvbnMudGFnLmxlbmd0aCA6IHRoaXMuY29udGVudHMubGVuZ3RoO1xuXHRcdHJldHVybiB0aGlzLmNvbnRlbnRzLnN1YnN0cmluZyhvbGRQb2ludGVyLCB0aGlzLnBvaW50ZXIpO1xuXHR9O1xuXG5cdHJlc2V0ID0gKCkgPT4ge1xuXHRcdHRoaXMucG9pbnRlciA9IDA7XG5cdH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhZGVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7QUFBQSxNQUFNO0VBQUVBLE9BQU87RUFBRUMsUUFBUTtFQUFFQztBQUFrQixDQUFDLEdBQUdDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQztBQUFDLElBQUFDLE9BQUE7QUFBQUMsSUFBQSxHQUU3RUgsaUJBQWlCLENBQUMsQ0FBQztBQUFBSSxLQUFBLEdBS2xCTixPQUFPLENBQUMsUUFBUSxDQUFDO0FBQUFPLEtBQUEsR0FDakJOLFFBQVEsQ0FBQyxRQUFRLENBQUM7QUFBQU8sS0FBQSxHQU9sQlIsT0FBTyxDQUFDLEtBQUssQ0FBQztBQUFBUyxLQUFBLEdBQ2RSLFFBQVEsQ0FBQyxLQUFLLENBQUM7QUFkakIsTUFBQVMsTUFBQSxDQUNhO0VBQUE7SUFBQTtNQUFBQyxDQUFBLEdBQUFDLGVBQUEsRUFBQUMsZUFBQTtNQUFBQyxDQUFBLEdBQUFWLE9BQUEsRUFBQVcsVUFBQTtJQUFBLElBQUFDLGVBQUEsVUFBQVYsS0FBQSxFQUFBQyxLQUFBLHNCQUFBQyxLQUFBLEVBQUFDLEtBQUEsc0JBQUFKLElBQUE7RUFBQTtFQUNaWSxRQUFRLEdBQUcsRUFBRTtFQUNiQyxPQUFPLEdBQUcsQ0FBQztFQUlYQyxTQUFTLEdBQUFQLGVBQUEsT0FBSVosT0FBTyxJQUFLO0lBQ3hCLE1BQU1vQixVQUFVLEdBQUcsSUFBSSxDQUFDRixPQUFPO0lBQy9CLElBQUksQ0FBQ0EsT0FBTyxHQUFHRyxJQUFJLENBQUNDLEdBQUcsQ0FBQyxJQUFJLENBQUNKLE9BQU8sR0FBR2xCLE9BQU8sQ0FBQ3VCLE1BQU0sRUFBRSxJQUFJLENBQUNOLFFBQVEsQ0FBQ08sTUFBTSxDQUFDO0lBQzVFLE9BQU8sSUFBSSxDQUFDUCxRQUFRLENBQUNRLFNBQVMsQ0FBQ0wsVUFBVSxFQUFFLElBQUksQ0FBQ0YsT0FBTyxDQUFDO0VBQ3pELENBQUM7RUFJRFEsU0FBUyxHQUFBYixlQUFBLE9BQUliLE9BQU8sSUFBSztJQUN4QixNQUFNb0IsVUFBVSxHQUFHLElBQUksQ0FBQ0YsT0FBTztJQUMvQixNQUFNUyxLQUFLLEdBQUcsSUFBSSxDQUFDVixRQUFRLENBQUNXLE9BQU8sQ0FBQzVCLE9BQU8sQ0FBQzZCLEdBQUcsRUFBRSxJQUFJLENBQUNYLE9BQU8sQ0FBQztJQUM5RCxJQUFJLENBQUNBLE9BQU8sR0FBR1MsS0FBSyxJQUFJLENBQUMsR0FBR0EsS0FBSyxHQUFHM0IsT0FBTyxDQUFDNkIsR0FBRyxDQUFDTCxNQUFNLEdBQUcsSUFBSSxDQUFDUCxRQUFRLENBQUNPLE1BQU07SUFDN0UsT0FBTyxJQUFJLENBQUNQLFFBQVEsQ0FBQ1EsU0FBUyxDQUFDTCxVQUFVLEVBQUUsSUFBSSxDQUFDRixPQUFPLENBQUM7RUFDekQsQ0FBQztFQUVEWSxLQUFLLEdBQUdBLENBQUEsS0FBTTtJQUNiLElBQUksQ0FBQ1osT0FBTyxHQUFHLENBQUM7RUFDakIsQ0FBQztFQUFDO0lBQUFILFVBQUE7RUFBQTtBQUNIO0FBRUFnQixNQUFNLENBQUNDLE9BQU8sR0FBR3RCLE9BQU0ifQ== \ No newline at end of file diff --git a/lib/mocks/file/index.cjs b/lib/mocks/file/index.cjs new file mode 100644 index 0000000..5d1324d --- /dev/null +++ b/lib/mocks/file/index.cjs @@ -0,0 +1,85 @@ +var _dec, _init_copy, _dec2, _init_create, _dec3, _dec4, _init_delete, _dec5, _dec6, _init_load; +function applyDecs2203RFactory() { function createAddInitializerMethod(e, t) { return function (r) { !function (e, t) { if (e.v) throw new Error("attempted to call " + t + " after decoration was finished"); }(t, "addInitializer"), assertCallable(r, "An initializer"), e.push(r); }; } function memberDec(e, t, r, n, a, i, s, o) { var c; switch (a) { case 1: c = "accessor"; break; case 2: c = "method"; break; case 3: c = "getter"; break; case 4: c = "setter"; break; default: c = "field"; } var l, u, f = { kind: c, name: s ? "#" + t : t, static: i, private: s }, p = { v: !1 }; 0 !== a && (f.addInitializer = createAddInitializerMethod(n, p)), 0 === a ? s ? (l = r.get, u = r.set) : (l = function () { return this[t]; }, u = function (e) { this[t] = e; }) : 2 === a ? l = function () { return r.value; } : (1 !== a && 3 !== a || (l = function () { return r.get.call(this); }), 1 !== a && 4 !== a || (u = function (e) { r.set.call(this, e); })), f.access = l && u ? { get: l, set: u } : l ? { get: l } : { set: u }; try { return e(o, f); } finally { p.v = !0; } } function assertCallable(e, t) { if ("function" != typeof e) throw new TypeError(t + " must be a function"); } function assertValidReturnValue(e, t) { var r = typeof t; if (1 === e) { if ("object" !== r || null === t) throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0"); void 0 !== t.get && assertCallable(t.get, "accessor.get"), void 0 !== t.set && assertCallable(t.set, "accessor.set"), void 0 !== t.init && assertCallable(t.init, "accessor.init"); } else if ("function" !== r) { var n; throw n = 0 === e ? "field" : 10 === e ? "class" : "method", new TypeError(n + " decorators must return a function or void 0"); } } function applyMemberDec(e, t, r, n, a, i, s, o) { var c, l, u, f, p, d, h = r[0]; if (s ? c = 0 === a || 1 === a ? { get: r[3], set: r[4] } : 3 === a ? { get: r[3] } : 4 === a ? { set: r[3] } : { value: r[3] } : 0 !== a && (c = Object.getOwnPropertyDescriptor(t, n)), 1 === a ? u = { get: c.get, set: c.set } : 2 === a ? u = c.value : 3 === a ? u = c.get : 4 === a && (u = c.set), "function" == typeof h) void 0 !== (f = memberDec(h, n, c, o, a, i, s, u)) && (assertValidReturnValue(a, f), 0 === a ? l = f : 1 === a ? (l = f.init, p = f.get || u.get, d = f.set || u.set, u = { get: p, set: d }) : u = f);else for (var v = h.length - 1; v >= 0; v--) { var g; if (void 0 !== (f = memberDec(h[v], n, c, o, a, i, s, u))) assertValidReturnValue(a, f), 0 === a ? g = f : 1 === a ? (g = f.init, p = f.get || u.get, d = f.set || u.set, u = { get: p, set: d }) : u = f, void 0 !== g && (void 0 === l ? l = g : "function" == typeof l ? l = [l, g] : l.push(g)); } if (0 === a || 1 === a) { if (void 0 === l) l = function (e, t) { return t; };else if ("function" != typeof l) { var y = l; l = function (e, t) { for (var r = t, n = 0; n < y.length; n++) r = y[n].call(e, r); return r; }; } else { var m = l; l = function (e, t) { return m.call(e, t); }; } e.push(l); } 0 !== a && (1 === a ? (c.get = u.get, c.set = u.set) : 2 === a ? c.value = u : 3 === a ? c.get = u : 4 === a && (c.set = u), s ? 1 === a ? (e.push(function (e, t) { return u.get.call(e, t); }), e.push(function (e, t) { return u.set.call(e, t); })) : 2 === a ? e.push(u) : e.push(function (e, t) { return u.call(e, t); }) : Object.defineProperty(t, n, c)); } function applyMemberDecs(e, t) { for (var r, n, a = [], i = new Map(), s = new Map(), o = 0; o < t.length; o++) { var c = t[o]; if (Array.isArray(c)) { var l, u, f = c[1], p = c[2], d = c.length > 3, h = f >= 5; if (h ? (l = e, 0 !== (f -= 5) && (u = n = n || [])) : (l = e.prototype, 0 !== f && (u = r = r || [])), 0 !== f && !d) { var v = h ? s : i, g = v.get(p) || 0; if (!0 === g || 3 === g && 4 !== f || 4 === g && 3 !== f) throw new Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: " + p); !g && f > 2 ? v.set(p, f) : v.set(p, !0); } applyMemberDec(a, l, c, p, f, h, d, u); } } return pushInitializers(a, r), pushInitializers(a, n), a; } function pushInitializers(e, t) { t && e.push(function (e) { for (var r = 0; r < t.length; r++) t[r].call(e); return e; }); } return function (e, t, r) { return { e: applyMemberDecs(e, t), get c() { return function (e, t) { if (t.length > 0) { for (var r = [], n = e, a = e.name, i = t.length - 1; i >= 0; i--) { var s = { v: !1 }; try { var o = t[i](n, { kind: "class", name: a, addInitializer: createAddInitializerMethod(r, s) }); } finally { s.v = !0; } void 0 !== o && (assertValidReturnValue(10, o), n = o); } return [n, function () { for (var e = 0; e < r.length; e++) r[e].call(n); }]; } }(e, r); } }; }; } +function _applyDecs2203R(e, t, r) { return (_applyDecs2203R = applyDecs2203RFactory())(e, t, r); } +const fileStub = require("suitecloud-unit-testing-stubs/stubs/file"); +const { + options, + required +} = require("../../helpers.cjs"); +const SuiteScriptMocks = require("../../index.cjs"); +const Reader = require("./Reader.cjs"); +const File = require("./File.cjs"); +_dec = required("folder", "id"); +_dec2 = required("name", "fileType"); +_dec3 = options("id"); +_dec4 = required("id"); +_dec5 = options("id"); +_dec6 = required("id"); +class FileModule { + static { + [_init_copy, _init_create, _init_delete, _init_load] = _applyDecs2203R(this, [[_dec, 0, "copy"], [_dec2, 0, "create"], [[_dec3, _dec4], 0, "delete"], [[_dec5, _dec6], 0, "load"]], []).e; + } + Encoding = fileStub.Encoding; + NameConflictResolution = fileStub.NameConflictResolution; + Type = fileStub.Type; + File = File; + Reader = Reader; + copy = _init_copy(this, options => { + const file = this.load(options.id); + file.id = null; + file.folder = options.folder; + const resolutionType = options.conflictResolution || this.NameConflictResolution.FAIL; + if (!Object.values(this.NameConflictResolution).includes(resolutionType)) { + throw new Error("Invalid value for conflictResolution"); + } + let existingFile = SuiteScriptMocks.files.get({ + folder: options.folder, + name: file.name + }); + if (existingFile) { + switch (resolutionType) { + case this.NameConflictResolution.FAIL: + throw new Error("File with that name already exists in that folder"); + case this.NameConflictResolution.OVERWRITE: + case this.NameConflictResolution.OVERWRITE_CONTENT_AND_ATTRIBUTES: + file.id = existingFile.id; + break; + case this.NameConflictResolution.RENAME_TO_UNIQUE: + while (existingFile) { + const curNum = +file.name.match(/^.+\((\d+)\)\.[a-z]+$/i)?.[1] || 0; + file.name = file.name.replace(/^(.+?)(\(\d+\))?\.([a-z]+)$/i, `$1(${curNum + 1}).$3`); + existingFile = SuiteScriptMocks.files.get({ + folder: options.folder, + name: file.name + }); + } + } + } + file.save(); + return file; + }); + create = _init_create(this, options => { + return new File(options); + }); + delete = _init_delete(this, options => { + const file = SuiteScriptMocks.files.get(options); + if (!file) { + throw new Error("File does not exist"); + } + SuiteScriptMocks.deletedFiles.push(file); + SuiteScriptMocks.files.delete(file); + return file.id; + }); + load = _init_load(this, options => { + const file = SuiteScriptMocks.files.get(options); + if (!file) { + throw new Error("File does not exist"); + } + file.savedContents = file.contents; + return new File({ + ...file + }); + }); +} +module.exports = new FileModule(); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmaWxlU3R1YiIsInJlcXVpcmUiLCJvcHRpb25zIiwicmVxdWlyZWQiLCJTdWl0ZVNjcmlwdE1vY2tzIiwiUmVhZGVyIiwiRmlsZSIsIl9kZWMiLCJfZGVjMiIsIl9kZWMzIiwiX2RlYzQiLCJfZGVjNSIsIl9kZWM2IiwiRmlsZU1vZHVsZSIsIl9pbml0X2NvcHkiLCJfaW5pdF9jcmVhdGUiLCJfaW5pdF9kZWxldGUiLCJfaW5pdF9sb2FkIiwiX2FwcGx5RGVjczIyMDNSIiwiZSIsIkVuY29kaW5nIiwiTmFtZUNvbmZsaWN0UmVzb2x1dGlvbiIsIlR5cGUiLCJjb3B5IiwiZmlsZSIsImxvYWQiLCJpZCIsImZvbGRlciIsInJlc29sdXRpb25UeXBlIiwiY29uZmxpY3RSZXNvbHV0aW9uIiwiRkFJTCIsIk9iamVjdCIsInZhbHVlcyIsImluY2x1ZGVzIiwiRXJyb3IiLCJleGlzdGluZ0ZpbGUiLCJmaWxlcyIsImdldCIsIm5hbWUiLCJPVkVSV1JJVEUiLCJPVkVSV1JJVEVfQ09OVEVOVF9BTkRfQVRUUklCVVRFUyIsIlJFTkFNRV9UT19VTklRVUUiLCJjdXJOdW0iLCJtYXRjaCIsInJlcGxhY2UiLCJzYXZlIiwiY3JlYXRlIiwiZGVsZXRlIiwiZGVsZXRlZEZpbGVzIiwicHVzaCIsInNhdmVkQ29udGVudHMiLCJjb250ZW50cyIsIm1vZHVsZSIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9ja3MvZmlsZS9pbmRleC5janMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZmlsZVN0dWIgPSByZXF1aXJlKFwic3VpdGVjbG91ZC11bml0LXRlc3Rpbmctc3R1YnMvc3R1YnMvZmlsZVwiKTtcbmNvbnN0IHsgb3B0aW9ucywgcmVxdWlyZWQgfSA9IHJlcXVpcmUoXCIuLi8uLi9oZWxwZXJzLmNqc1wiKTtcbmNvbnN0IFN1aXRlU2NyaXB0TW9ja3MgPSByZXF1aXJlKFwiLi4vLi4vaW5kZXguY2pzXCIpO1xuY29uc3QgUmVhZGVyID0gcmVxdWlyZShcIi4vUmVhZGVyLmNqc1wiKTtcbmNvbnN0IEZpbGUgPSByZXF1aXJlKFwiLi9GaWxlLmNqc1wiKTtcblxuY2xhc3MgRmlsZU1vZHVsZSB7XG5cdEVuY29kaW5nID0gZmlsZVN0dWIuRW5jb2Rpbmc7XG5cdE5hbWVDb25mbGljdFJlc29sdXRpb24gPSBmaWxlU3R1Yi5OYW1lQ29uZmxpY3RSZXNvbHV0aW9uO1xuXHRUeXBlID0gZmlsZVN0dWIuVHlwZTtcblxuXHRGaWxlID0gRmlsZTtcblx0UmVhZGVyID0gUmVhZGVyO1xuXG5cdEByZXF1aXJlZChcImZvbGRlclwiLCBcImlkXCIpXG5cdGNvcHkgPSAob3B0aW9ucykgPT4ge1xuXHRcdGNvbnN0IGZpbGUgPSB0aGlzLmxvYWQob3B0aW9ucy5pZCk7XG5cdFx0ZmlsZS5pZCA9IG51bGw7XG5cdFx0ZmlsZS5mb2xkZXIgPSBvcHRpb25zLmZvbGRlcjtcblx0XHRjb25zdCByZXNvbHV0aW9uVHlwZSA9IG9wdGlvbnMuY29uZmxpY3RSZXNvbHV0aW9uIHx8IHRoaXMuTmFtZUNvbmZsaWN0UmVzb2x1dGlvbi5GQUlMO1xuXHRcdGlmICghT2JqZWN0LnZhbHVlcyh0aGlzLk5hbWVDb25mbGljdFJlc29sdXRpb24pLmluY2x1ZGVzKHJlc29sdXRpb25UeXBlKSkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCB2YWx1ZSBmb3IgY29uZmxpY3RSZXNvbHV0aW9uXCIpO1xuXHRcdH1cblx0XHRsZXQgZXhpc3RpbmdGaWxlID0gU3VpdGVTY3JpcHRNb2Nrcy5maWxlcy5nZXQoeyBmb2xkZXI6IG9wdGlvbnMuZm9sZGVyLCBuYW1lOiBmaWxlLm5hbWUgfSk7XG5cdFx0aWYgKGV4aXN0aW5nRmlsZSkge1xuXHRcdFx0c3dpdGNoIChyZXNvbHV0aW9uVHlwZSkge1xuXHRcdFx0XHRjYXNlIHRoaXMuTmFtZUNvbmZsaWN0UmVzb2x1dGlvbi5GQUlMOlxuXHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihcIkZpbGUgd2l0aCB0aGF0IG5hbWUgYWxyZWFkeSBleGlzdHMgaW4gdGhhdCBmb2xkZXJcIik7XG5cdFx0XHRcdGNhc2UgdGhpcy5OYW1lQ29uZmxpY3RSZXNvbHV0aW9uLk9WRVJXUklURTpcblx0XHRcdFx0Y2FzZSB0aGlzLk5hbWVDb25mbGljdFJlc29sdXRpb24uT1ZFUldSSVRFX0NPTlRFTlRfQU5EX0FUVFJJQlVURVM6XG5cdFx0XHRcdFx0ZmlsZS5pZCA9IGV4aXN0aW5nRmlsZS5pZDtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSB0aGlzLk5hbWVDb25mbGljdFJlc29sdXRpb24uUkVOQU1FX1RPX1VOSVFVRTpcblx0XHRcdFx0XHR3aGlsZSAoZXhpc3RpbmdGaWxlKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBjdXJOdW0gPSArZmlsZS5uYW1lLm1hdGNoKC9eLitcXCgoXFxkKylcXClcXC5bYS16XSskL2kpPy5bMV0gfHwgMDtcblx0XHRcdFx0XHRcdGZpbGUubmFtZSA9IGZpbGUubmFtZS5yZXBsYWNlKC9eKC4rPykoXFwoXFxkK1xcKSk/XFwuKFthLXpdKykkL2ksIGAkMSgke2N1ck51bSArIDF9KS4kM2ApO1xuXHRcdFx0XHRcdFx0ZXhpc3RpbmdGaWxlID0gU3VpdGVTY3JpcHRNb2Nrcy5maWxlcy5nZXQoeyBmb2xkZXI6IG9wdGlvbnMuZm9sZGVyLCBuYW1lOiBmaWxlLm5hbWUgfSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRmaWxlLnNhdmUoKTtcblx0XHRyZXR1cm4gZmlsZTtcblx0fTtcblxuXHRAcmVxdWlyZWQoXCJuYW1lXCIsIFwiZmlsZVR5cGVcIilcblx0Y3JlYXRlID0gKG9wdGlvbnMpID0+IHtcblx0XHRyZXR1cm4gbmV3IEZpbGUob3B0aW9ucyk7XG5cdH07XG5cblx0QG9wdGlvbnMoXCJpZFwiKVxuXHRAcmVxdWlyZWQoXCJpZFwiKVxuXHRkZWxldGUgPSAob3B0aW9ucykgPT4ge1xuXHRcdGNvbnN0IGZpbGUgPSBTdWl0ZVNjcmlwdE1vY2tzLmZpbGVzLmdldChvcHRpb25zKTtcblx0XHRpZiAoIWZpbGUpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcIkZpbGUgZG9lcyBub3QgZXhpc3RcIik7XG5cdFx0fVxuXHRcdFN1aXRlU2NyaXB0TW9ja3MuZGVsZXRlZEZpbGVzLnB1c2goZmlsZSk7XG5cdFx0U3VpdGVTY3JpcHRNb2Nrcy5maWxlcy5kZWxldGUoZmlsZSk7XG5cdFx0cmV0dXJuIGZpbGUuaWQ7XG5cdH07XG5cblx0QG9wdGlvbnMoXCJpZFwiKVxuXHRAcmVxdWlyZWQoXCJpZFwiKVxuXHRsb2FkID0gKG9wdGlvbnMpID0+IHtcblx0XHRjb25zdCBmaWxlID0gU3VpdGVTY3JpcHRNb2Nrcy5maWxlcy5nZXQob3B0aW9ucyk7XG5cdFx0aWYgKCFmaWxlKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJGaWxlIGRvZXMgbm90IGV4aXN0XCIpO1xuXHRcdH1cblx0XHRmaWxlLnNhdmVkQ29udGVudHMgPSBmaWxlLmNvbnRlbnRzO1xuXHRcdHJldHVybiBuZXcgRmlsZSh7IC4uLmZpbGUgfSk7XG5cdH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbmV3IEZpbGVNb2R1bGUoKTtcbiJdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsTUFBTUEsUUFBUSxHQUFHQyxPQUFPLENBQUMsMENBQTBDLENBQUM7QUFDcEUsTUFBTTtFQUFFQyxPQUFPO0VBQUVDO0FBQVMsQ0FBQyxHQUFHRixPQUFPLENBQUMsbUJBQW1CLENBQUM7QUFDMUQsTUFBTUcsZ0JBQWdCLEdBQUdILE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQztBQUNuRCxNQUFNSSxNQUFNLEdBQUdKLE9BQU8sQ0FBQyxjQUFjLENBQUM7QUFDdEMsTUFBTUssSUFBSSxHQUFHTCxPQUFPLENBQUMsWUFBWSxDQUFDO0FBQUNNLElBQUEsR0FVakNKLFFBQVEsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDO0FBQUFLLEtBQUEsR0E4QnhCTCxRQUFRLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQztBQUFBTSxLQUFBLEdBSzVCUCxPQUFPLENBQUMsSUFBSSxDQUFDO0FBQUFRLEtBQUEsR0FDYlAsUUFBUSxDQUFDLElBQUksQ0FBQztBQUFBUSxLQUFBLEdBV2RULE9BQU8sQ0FBQyxJQUFJLENBQUM7QUFBQVUsS0FBQSxHQUNiVCxRQUFRLENBQUMsSUFBSSxDQUFDO0FBeERoQixNQUFNVSxVQUFVLENBQUM7RUFBQTtJQUFBLENBQUFDLFVBQUEsRUFBQUMsWUFBQSxFQUFBQyxZQUFBLEVBQUFDLFVBQUEsSUFBQUMsZUFBQSxTQUFBWCxJQUFBLGVBQUFDLEtBQUEsa0JBQUFDLEtBQUEsRUFBQUMsS0FBQSxtQkFBQUMsS0FBQSxFQUFBQyxLQUFBLG9CQUFBTyxDQUFBO0VBQUE7RUFDaEJDLFFBQVEsR0FBR3BCLFFBQVEsQ0FBQ29CLFFBQVE7RUFDNUJDLHNCQUFzQixHQUFHckIsUUFBUSxDQUFDcUIsc0JBQXNCO0VBQ3hEQyxJQUFJLEdBQUd0QixRQUFRLENBQUNzQixJQUFJO0VBRXBCaEIsSUFBSSxHQUFHQSxJQUFJO0VBQ1hELE1BQU0sR0FBR0EsTUFBTTtFQUdma0IsSUFBSSxHQUFBVCxVQUFBLE9BQUlaLE9BQU8sSUFBSztJQUNuQixNQUFNc0IsSUFBSSxHQUFHLElBQUksQ0FBQ0MsSUFBSSxDQUFDdkIsT0FBTyxDQUFDd0IsRUFBRSxDQUFDO0lBQ2xDRixJQUFJLENBQUNFLEVBQUUsR0FBRyxJQUFJO0lBQ2RGLElBQUksQ0FBQ0csTUFBTSxHQUFHekIsT0FBTyxDQUFDeUIsTUFBTTtJQUM1QixNQUFNQyxjQUFjLEdBQUcxQixPQUFPLENBQUMyQixrQkFBa0IsSUFBSSxJQUFJLENBQUNSLHNCQUFzQixDQUFDUyxJQUFJO0lBQ3JGLElBQUksQ0FBQ0MsTUFBTSxDQUFDQyxNQUFNLENBQUMsSUFBSSxDQUFDWCxzQkFBc0IsQ0FBQyxDQUFDWSxRQUFRLENBQUNMLGNBQWMsQ0FBQyxFQUFFO01BQ3pFLE1BQU0sSUFBSU0sS0FBSyxDQUFDLHNDQUFzQyxDQUFDO0lBQ3hEO0lBQ0EsSUFBSUMsWUFBWSxHQUFHL0IsZ0JBQWdCLENBQUNnQyxLQUFLLENBQUNDLEdBQUcsQ0FBQztNQUFFVixNQUFNLEVBQUV6QixPQUFPLENBQUN5QixNQUFNO01BQUVXLElBQUksRUFBRWQsSUFBSSxDQUFDYztJQUFLLENBQUMsQ0FBQztJQUMxRixJQUFJSCxZQUFZLEVBQUU7TUFDakIsUUFBUVAsY0FBYztRQUNyQixLQUFLLElBQUksQ0FBQ1Asc0JBQXNCLENBQUNTLElBQUk7VUFDcEMsTUFBTSxJQUFJSSxLQUFLLENBQUMsbURBQW1ELENBQUM7UUFDckUsS0FBSyxJQUFJLENBQUNiLHNCQUFzQixDQUFDa0IsU0FBUztRQUMxQyxLQUFLLElBQUksQ0FBQ2xCLHNCQUFzQixDQUFDbUIsZ0NBQWdDO1VBQ2hFaEIsSUFBSSxDQUFDRSxFQUFFLEdBQUdTLFlBQVksQ0FBQ1QsRUFBRTtVQUN6QjtRQUNELEtBQUssSUFBSSxDQUFDTCxzQkFBc0IsQ0FBQ29CLGdCQUFnQjtVQUNoRCxPQUFPTixZQUFZLEVBQUU7WUFDcEIsTUFBTU8sTUFBTSxHQUFHLENBQUNsQixJQUFJLENBQUNjLElBQUksQ0FBQ0ssS0FBSyxDQUFDLHdCQUF3QixDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNuRW5CLElBQUksQ0FBQ2MsSUFBSSxHQUFHZCxJQUFJLENBQUNjLElBQUksQ0FBQ00sT0FBTyxDQUFDLDhCQUE4QixFQUFHLE1BQUtGLE1BQU0sR0FBRyxDQUFFLE1BQUssQ0FBQztZQUNyRlAsWUFBWSxHQUFHL0IsZ0JBQWdCLENBQUNnQyxLQUFLLENBQUNDLEdBQUcsQ0FBQztjQUFFVixNQUFNLEVBQUV6QixPQUFPLENBQUN5QixNQUFNO2NBQUVXLElBQUksRUFBRWQsSUFBSSxDQUFDYztZQUFLLENBQUMsQ0FBQztVQUN2RjtNQUNGO0lBQ0Q7SUFDQWQsSUFBSSxDQUFDcUIsSUFBSSxDQUFDLENBQUM7SUFDWCxPQUFPckIsSUFBSTtFQUNaLENBQUM7RUFHRHNCLE1BQU0sR0FBQS9CLFlBQUEsT0FBSWIsT0FBTyxJQUFLO0lBQ3JCLE9BQU8sSUFBSUksSUFBSSxDQUFDSixPQUFPLENBQUM7RUFDekIsQ0FBQztFQUlENkMsTUFBTSxHQUFBL0IsWUFBQSxPQUFJZCxPQUFPLElBQUs7SUFDckIsTUFBTXNCLElBQUksR0FBR3BCLGdCQUFnQixDQUFDZ0MsS0FBSyxDQUFDQyxHQUFHLENBQUNuQyxPQUFPLENBQUM7SUFDaEQsSUFBSSxDQUFDc0IsSUFBSSxFQUFFO01BQ1YsTUFBTSxJQUFJVSxLQUFLLENBQUMscUJBQXFCLENBQUM7SUFDdkM7SUFDQTlCLGdCQUFnQixDQUFDNEMsWUFBWSxDQUFDQyxJQUFJLENBQUN6QixJQUFJLENBQUM7SUFDeENwQixnQkFBZ0IsQ0FBQ2dDLEtBQUssQ0FBQ1csTUFBTSxDQUFDdkIsSUFBSSxDQUFDO0lBQ25DLE9BQU9BLElBQUksQ0FBQ0UsRUFBRTtFQUNmLENBQUM7RUFJREQsSUFBSSxHQUFBUixVQUFBLE9BQUlmLE9BQU8sSUFBSztJQUNuQixNQUFNc0IsSUFBSSxHQUFHcEIsZ0JBQWdCLENBQUNnQyxLQUFLLENBQUNDLEdBQUcsQ0FBQ25DLE9BQU8sQ0FBQztJQUNoRCxJQUFJLENBQUNzQixJQUFJLEVBQUU7TUFDVixNQUFNLElBQUlVLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQztJQUN2QztJQUNBVixJQUFJLENBQUMwQixhQUFhLEdBQUcxQixJQUFJLENBQUMyQixRQUFRO0lBQ2xDLE9BQU8sSUFBSTdDLElBQUksQ0FBQztNQUFFLEdBQUdrQjtJQUFLLENBQUMsQ0FBQztFQUM3QixDQUFDO0FBQ0Y7QUFFQTRCLE1BQU0sQ0FBQ0MsT0FBTyxHQUFHLElBQUl4QyxVQUFVLENBQUMsQ0FBQyJ9 \ No newline at end of file diff --git a/lib/mocks/record/Record.cjs b/lib/mocks/record/Record.cjs index 6e57160..c564a1f 100644 --- a/lib/mocks/record/Record.cjs +++ b/lib/mocks/record/Record.cjs @@ -254,7 +254,7 @@ class Record { }); }); if (!this.id) { - this.id = copy.id = Math.max(Array.from(SuiteScriptMocks.records.values()).map(a => a.id)) + 1; + this.id = copy.id = Math.max(...Array.from(SuiteScriptMocks.records.values()).map(a => a.id)) + 1; SuiteScriptMocks.createdRecords.push(copy); } SuiteScriptMocks.records.set(copy); @@ -340,4 +340,4 @@ class Record { } } module.exports = _Record; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkYXRlZm5zIiwicmVxdWlyZSIsInN0cnVjdHVyZWRDbG9uZSIsInJhbmRvbVVVSUQiLCJTdWl0ZVNjcmlwdE1vY2tzIiwib3B0aW9ucyIsInJlcXVpcmVkIiwiYWRkUHJvbWlzZSIsImR5bmFtaWNNb2RlT25seSIsInN0YW5kYXJkTW9kZU9ubHkiLCJhc3NpZ25Db25zdHJ1Y3RvciIsIl9SZWNvcmQiLCJfZGVjIiwiX2RlYzIiLCJfZGVjMyIsIl9kZWM0IiwiX2RlYzUiLCJfZGVjNiIsIl9kZWM3IiwiX2RlYzgiLCJfZGVjOSIsIl9kZWMxMCIsIl9kZWMxMSIsIl9kZWMxMiIsIl9kZWMxMyIsIl9kZWMxNCIsIl9kZWMxNSIsIl9kZWMxNiIsIl9kZWMxNyIsIl9kZWMxOCIsIl9kZWMxOSIsIl9kZWMyMCIsIl9kZWMyMSIsIl9kZWMyMiIsIl9kZWMyMyIsIl9kZWMyNCIsIl9kZWMyNSIsIl9kZWMyNiIsIl9kZWMyNyIsIl9kZWMyOCIsIl9kZWMyOSIsIl9kZWMzMCIsIl9kZWMzMSIsIl9kZWMzMiIsIl9kZWMzMyIsIl9kZWMzNCIsIl9kZWMzNSIsIl9kZWMzNiIsIl9kZWMzNyIsIl9kZWMzOCIsIl9kZWMzOSIsIl9kZWM0MCIsIl9kZWM0MSIsIl9kZWM0MiIsIl9kZWM0MyIsIl9kZWM0NCIsIl9kZWM0NSIsIl9kZWM0NiIsIl9kZWM0NyIsIl9kZWM0OCIsIl9kZWM0OSIsIl9kZWM1MCIsIl9kZWM1MSIsIl9kZWM1MiIsIlJlY29yZCIsImUiLCJfaW5pdF9jYW5jZWxMaW5lIiwiX2luaXRfY29tbWl0TGluZSIsIl9pbml0X2V4ZWN1dGVNYWNybyIsIl9pbml0X2dldEN1cnJlbnRTdWJsaXN0VGV4dCIsIl9pbml0X2dldEN1cnJlbnRTdWJsaXN0VmFsdWUiLCJfaW5pdF9nZXRMaW5lQ291bnQiLCJfaW5pdF9nZXRTdWJsaXN0VGV4dCIsIl9pbml0X2dldFN1Ymxpc3RWYWx1ZSIsIl9pbml0X2dldFN1YnJlY29yZCIsIl9pbml0X2dldFRleHQiLCJfaW5pdF9nZXRWYWx1ZSIsIl9pbml0X3JlbW92ZUxpbmUiLCJfaW5pdF9zYXZlIiwiX2luaXRfc2VsZWN0TGluZSIsIl9pbml0X3NlbGVjdE5ld0xpbmUiLCJfaW5pdF9zZXRDdXJyZW50U3VibGlzdFRleHQiLCJfaW5pdF9zZXRDdXJyZW50U3VibGlzdFZhbHVlIiwiX2luaXRfc2V0U3VibGlzdFRleHQiLCJfaW5pdF9zZXRTdWJsaXN0VmFsdWUiLCJfaW5pdF9zZXRUZXh0IiwiX2luaXRfc2V0VmFsdWUiLCJjIiwiX2luaXRDbGFzcyIsIl9hcHBseURlY3MyMjAzUiIsImlkIiwidHlwZSIsImZpZWxkcyIsInN1Ymxpc3RzIiwic3VicmVjb3JkcyIsImlzRHluYW1pYyIsInZlcnNpb24iLCJpbml0aWFsaXplIiwiT2JqZWN0IiwiZW50cmllcyIsInJlZHVjZSIsImFjYyIsImxpbmVJZCIsImxpbmVzIiwiY3VycmVudGxpbmUiLCJzdWJyZWNvcmRJZCIsInN1YnJlY29yZCIsImNhbmNlbExpbmUiLCJzZWxlY3ROZXdMaW5lIiwic3VibGlzdElkIiwiY29tbWl0TGluZSIsInN1Ymxpc3QiLCJ1bmRlZmluZWQiLCJFcnJvciIsImV4aXN0aW5nSW5kZXgiLCJmaW5kSW5kZXgiLCJhIiwiX2lkIiwicHVzaCIsImV4ZWN1dGVNYWNybyIsImZpbmRNYXRyaXhTdWJsaXN0TGluZVdpdGhWYWx1ZSIsImZpbmRTdWJsaXN0TGluZVdpdGhWYWx1ZSIsImdldEN1cnJlbnRNYXRyaXhTdWJsaXN0VmFsdWUiLCJnZXRDdXJyZW50U3VibGlzdEZpZWxkIiwiZ2V0Q3VycmVudFN1Ymxpc3RJbmRleCIsImdldEN1cnJlbnRTdWJsaXN0U3VicmVjb3JkIiwiZ2V0Q3VycmVudFN1Ymxpc3RUZXh0IiwiZmllbGQiLCJmaWVsZElkIiwicHJvdG90eXBlIiwidG9TdHJpbmciLCJjYWxsIiwiZm9ybWF0IiwiZGF0ZUZvcm1hdCIsInRleHQiLCJ2YWx1ZSIsImdldEN1cnJlbnRTdWJsaXN0VmFsdWUiLCJnZXRGaWVsZCIsImdldEZpZWxkcyIsImdldExpbmVDb3VudCIsImxlbmd0aCIsImdldE1hY3JvIiwiZ2V0TWFjcm9zIiwiZ2V0TWF0cml4SGVhZGVyQ291bnQiLCJnZXRNYXRyaXhIZWFkZXJGaWVsZCIsImdldE1hdHJpeEhlYWRlclZhbHVlIiwiZ2V0TWF0cml4U3VibGlzdEZpZWxkIiwiZ2V0TWF0cml4U3VibGlzdFZhbHVlIiwiZ2V0U3VibGlzdCIsImdldFN1Ymxpc3RzIiwiZ2V0U3VibGlzdEZpZWxkIiwiZ2V0U3VibGlzdEZpZWxkcyIsImdldFN1Ymxpc3RTdWJyZWNvcmQiLCJnZXRTdWJsaXN0VGV4dCIsImxpbmUiLCJnZXRTdWJsaXN0VmFsdWUiLCJnZXRTdWJyZWNvcmQiLCJnZXRUZXh0IiwiZ2V0VmFsdWUiLCJoYXNDdXJyZW50U3VibGlzdFN1YnJlY29yZCIsImhhc1N1Ymxpc3RTdWJyZWNvcmQiLCJoYXNTdWJyZWNvcmQiLCJpbnNlcnRMaW5lIiwibW92ZUxpbmUiLCJyZW1vdmVDdXJyZW50U3VibGlzdFN1YnJlY29yZCIsInJlbW92ZUxpbmUiLCJzcGxpY2UiLCJyZW1vdmVTdWJsaXN0U3VicmVjb3JkIiwicmVtb3ZlU3VicmVjb3JkIiwic2F2ZSIsInJlY29yZHMiLCJnZXQiLCJjb3B5IiwiZm9yRWFjaCIsImtleSIsIkRhdGUiLCJ2YWx1ZXMiLCJNYXRoIiwibWF4IiwiQXJyYXkiLCJmcm9tIiwibWFwIiwiY3JlYXRlZFJlY29yZHMiLCJzZXQiLCJzYXZlZFJlY29yZHMiLCJzZWxlY3RMaW5lIiwic2V0Q3VycmVudE1hdHJpeFN1Ymxpc3RWYWx1ZSIsInNldEN1cnJlbnRTdWJsaXN0VGV4dCIsInNldEN1cnJlbnRTdWJsaXN0VmFsdWUiLCJzZXRNYXRyaXhIZWFkZXJWYWx1ZSIsInNldE1hdHJpeFN1Ymxpc3RWYWx1ZSIsInNldFN1Ymxpc3RUZXh0Iiwic2V0U3VibGlzdFZhbHVlIiwic2V0VGV4dCIsInNldFZhbHVlIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb2Nrcy9yZWNvcmQvUmVjb3JkLmNqcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBkYXRlZm5zID0gcmVxdWlyZShcImRhdGUtZm5zXCIpO1xuY29uc3Qgc3RydWN0dXJlZENsb25lID0gcmVxdWlyZShcImNvcmUtanMtcHVyZS9hY3R1YWwvc3RydWN0dXJlZC1jbG9uZVwiKTtcbmNvbnN0IHsgcmFuZG9tVVVJRCB9ID0gcmVxdWlyZShcIm5vZGU6Y3J5cHRvXCIpO1xuY29uc3QgU3VpdGVTY3JpcHRNb2NrcyA9IHJlcXVpcmUoXCIuLi8uLi9pbmRleC5janNcIik7XG5jb25zdCB7XG5cdG9wdGlvbnMsXG5cdHJlcXVpcmVkLFxuXHRhZGRQcm9taXNlLFxuXHRkeW5hbWljTW9kZU9ubHksXG5cdHN0YW5kYXJkTW9kZU9ubHksXG5cdGFzc2lnbkNvbnN0cnVjdG9yLFxufSA9IHJlcXVpcmUoXCIuLi8uLi9oZWxwZXJzLmNqc1wiKTtcblxuQGFzc2lnbkNvbnN0cnVjdG9yKClcbmNsYXNzIFJlY29yZCB7XG5cdGlkID0gbnVsbDtcblx0dHlwZSA9IG51bGw7XG5cdGZpZWxkcyA9IHt9O1xuXHRzdWJsaXN0cyA9IHt9O1xuXHRzdWJyZWNvcmRzID0ge307XG5cdGlzRHluYW1pYyA9IGZhbHNlO1xuXHR2ZXJzaW9uID0gMTtcblxuXHRpbml0aWFsaXplID0gKCkgPT4ge1xuXHRcdHRoaXMuZmllbGRzID0gc3RydWN0dXJlZENsb25lKHRoaXMuZmllbGRzKTtcblx0XHR0aGlzLnN1Ymxpc3RzID0gT2JqZWN0LmVudHJpZXMoc3RydWN0dXJlZENsb25lKHRoaXMuc3VibGlzdHMpIHx8IHt9KS5yZWR1Y2UoKGFjYywgW2xpbmVJZCwgbGluZXNdKSA9PiB7XG5cdFx0XHRhY2NbbGluZUlkXSA9IHtcblx0XHRcdFx0Y3VycmVudGxpbmU6IHt9LFxuXHRcdFx0XHRsaW5lczogXCJsaW5lc1wiIGluIGxpbmVzID8gbGluZXMubGluZXMgOiBsaW5lcyxcblx0XHRcdH07XG5cdFx0XHRyZXR1cm4gYWNjO1xuXHRcdH0sIHt9KTtcblx0XHR0aGlzLnN1YnJlY29yZHMgPSBPYmplY3QuZW50cmllcyh0aGlzLnN1YnJlY29yZHMgfHwge30pLnJlZHVjZSgoYWNjLCBbc3VicmVjb3JkSWQsIHN1YnJlY29yZF0pID0+IHtcblx0XHRcdGFjY1tzdWJyZWNvcmRJZF0gPSBuZXcgUmVjb3JkKHN1YnJlY29yZCk7XG5cdFx0XHRyZXR1cm4gYWNjO1xuXHRcdH0sIHt9KTtcblx0fTtcblxuXHRAZHluYW1pY01vZGVPbmx5KClcblx0QG9wdGlvbnMoXCJzdWJsaXN0SWRcIilcblx0QHJlcXVpcmVkKFwic3VibGlzdElkXCIpXG5cdGNhbmNlbExpbmUgPSAob3B0aW9ucykgPT4ge1xuXHRcdHRoaXMuc2VsZWN0TmV3TGluZShvcHRpb25zLnN1Ymxpc3RJZCk7XG5cdH07XG5cblx0QGR5bmFtaWNNb2RlT25seSgpXG5cdEBvcHRpb25zKFwic3VibGlzdElkXCIsIFwiaWdub3JlUmVjYWxjXCIpXG5cdEByZXF1aXJlZChcInN1Ymxpc3RJZFwiKVxuXHRjb21taXRMaW5lID0gKG9wdGlvbnMpID0+IHtcblx0XHRjb25zdCBzdWJsaXN0ID0gdGhpcz8uc3VibGlzdHM/LltvcHRpb25zLnN1Ymxpc3RJZF07XG5cdFx0aWYgKHN1Ymxpc3QgPT09IHVuZGVmaW5lZCB8fCAhKFwiY3VycmVudGxpbmVcIiBpbiBzdWJsaXN0KSkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKCk7XG5cdFx0fVxuXHRcdGNvbnN0IGV4aXN0aW5nSW5kZXggPSBzdWJsaXN0LmxpbmVzLmZpbmRJbmRleCgoYSkgPT4gYS5faWQgPT09IHN1Ymxpc3QuY3VycmVudGxpbmUuX2lkKTtcblx0XHRpZiAoZXhpc3RpbmdJbmRleCA+IC0xKSB7XG5cdFx0XHRzdWJsaXN0LmxpbmVzW2V4aXN0aW5nSW5kZXhdID0gc3VibGlzdC5jdXJyZW50bGluZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0c3VibGlzdC5saW5lcy5wdXNoKHN1Ymxpc3QuY3VycmVudGxpbmUpO1xuXHRcdH1cblx0XHR0aGlzLnNlbGVjdE5ld0xpbmUob3B0aW9ucy5zdWJsaXN0SWQpO1xuXHR9O1xuXG5cdEBhZGRQcm9taXNlKClcblx0ZXhlY3V0ZU1hY3JvID0gKG9wdGlvbnMpID0+IHt9O1xuXG5cdGZpbmRNYXRyaXhTdWJsaXN0TGluZVdpdGhWYWx1ZSA9IChvcHRpb25zKSA9PiB7fTtcblxuXHRmaW5kU3VibGlzdExpbmVXaXRoVmFsdWUgPSAob3B0aW9ucykgPT4ge307XG5cblx0Z2V0Q3VycmVudE1hdHJpeFN1Ymxpc3RWYWx1ZSA9IChvcHRpb25zKSA9PiB7fTtcblxuXHRnZXRDdXJyZW50U3VibGlzdEZpZWxkID0gKG9wdGlvbnMpID0+IHt9O1xuXG5cdGdldEN1cnJlbnRTdWJsaXN0SW5kZXggPSAob3B0aW9ucykgPT4ge307XG5cblx0Z2V0Q3VycmVudFN1Ymxpc3RTdWJyZWNvcmQgPSAob3B0aW9ucykgPT4ge307XG5cblx0QGR5bmFtaWNNb2RlT25seSgpXG5cdEBvcHRpb25zKFwic3VibGlzdElkXCIsIFwiZmllbGRJZFwiKVxuXHRAcmVxdWlyZWQoXCJzdWJsaXN0SWRcIiwgXCJmaWVsZElkXCIpXG5cdGdldEN1cnJlbnRTdWJsaXN0VGV4dCA9IChvcHRpb25zKSA9PiB7XG5cdFx0Y29uc3Qgc3VibGlzdCA9IHRoaXMuc3VibGlzdHNbb3B0aW9ucy5zdWJsaXN0SWRdO1xuXHRcdGlmIChzdWJsaXN0ID09PSB1bmRlZmluZWQpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcIlN1Ymxpc3QgZG9lcyBub3QgZXhpc3RcIik7XG5cdFx0fVxuXHRcdGlmICghKFwiY3VycmVudGxpbmVcIiBpbiBzdWJsaXN0KSkge1xuXHRcdFx0dGhpcy5zZWxlY3ROZXdMaW5lKHN1Ymxpc3QpO1xuXHRcdH1cblx0XHRjb25zdCBmaWVsZCA9IHN1Ymxpc3QuY3VycmVudGxpbmVbb3B0aW9ucy5maWVsZElkXTtcblx0XHRpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGZpZWxkKSA9PT0gXCJbb2JqZWN0IERhdGVdXCIpIHtcblx0XHRcdHJldHVybiBkYXRlZm5zLmZvcm1hdChmaWVsZCwgU3VpdGVTY3JpcHRNb2Nrcy5kYXRlRm9ybWF0KTtcblx0XHR9XG5cdFx0aWYgKHR5cGVvZiBmaWVsZCA9PT0gXCJvYmplY3RcIiAmJiBmaWVsZCAhPT0gbnVsbCkge1xuXHRcdFx0cmV0dXJuIGZpZWxkLnRleHQgfHwgZmllbGQudmFsdWU7XG5cdFx0fVxuXHRcdHJldHVybiBmaWVsZDtcblx0fTtcblxuXHRAZHluYW1pY01vZGVPbmx5KClcblx0QG9wdGlvbnMoXCJzdWJsaXN0SWRcIiwgXCJmaWVsZElkXCIpXG5cdEByZXF1aXJlZChcInN1Ymxpc3RJZFwiLCBcImZpZWxkSWRcIilcblx0Z2V0Q3VycmVudFN1Ymxpc3RWYWx1ZSA9IChvcHRpb25zKSA9PiB7XG5cdFx0Y29uc3Qgc3VibGlzdCA9IHRoaXMuc3VibGlzdHNbb3B0aW9ucy5zdWJsaXN0SWRdO1xuXHRcdGlmIChzdWJsaXN0ID09PSB1bmRlZmluZWQpIHtcblx0XHRcdHJldHVybiBudWxsO1xuXHRcdH1cblx0XHRpZiAoIShcImN1cnJlbnRsaW5lXCIgaW4gc3VibGlzdCkpIHtcblx0XHRcdHRoaXMuc2VsZWN0TmV3TGluZShzdWJsaXN0KTtcblx0XHR9XG5cdFx0Y29uc3QgZmllbGQgPSBzdWJsaXN0LmN1cnJlbnRsaW5lW29wdGlvbnMuZmllbGRJZF07XG5cdFx0aWYgKFxuXHRcdFx0dHlwZW9mIGZpZWxkID09PSBcIm9iamVjdFwiICYmXG5cdFx0XHRmaWVsZCAhPT0gbnVsbCAmJlxuXHRcdFx0IShPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZmllbGQpID09PSBcIltvYmplY3QgRGF0ZV1cIilcblx0XHQpIHtcblx0XHRcdHJldHVybiBmaWVsZC52YWx1ZTtcblx0XHR9XG5cdFx0cmV0dXJuIGZpZWxkO1xuXHR9O1xuXG5cdGdldEZpZWxkID0gKG9wdGlvbnMpID0+IHt9O1xuXG5cdGdldEZpZWxkcyA9IChvcHRpb25zKSA9PiB7fTtcblxuXHRAb3B0aW9ucyhcInN1Ymxpc3RJZFwiKVxuXHRAcmVxdWlyZWQoXCJzdWJsaXN0SWRcIilcblx0Z2V0TGluZUNvdW50ID0gKG9wdGlvbnMpID0+IHtcblx0XHRjb25zdCBzdWJsaXN0ID0gdGhpcy5zdWJsaXN0c1tvcHRpb25zLnN1Ymxpc3RJZF07XG5cdFx0aWYgKHN1Ymxpc3QgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0cmV0dXJuIC0xO1xuXHRcdH1cblx0XHRyZXR1cm4gc3VibGlzdC5saW5lcy5sZW5ndGg7XG5cdH07XG5cblx0Z2V0TWFjcm8gPSAob3B0aW9ucykgPT4ge307XG5cblx0Z2V0TWFjcm9zID0gKG9wdGlvbnMpID0+IHt9O1xuXG5cdGdldE1hdHJpeEhlYWRlckNvdW50ID0gKG9wdGlvbnMpID0+IHt9O1xuXG5cdGdldE1hdHJpeEhlYWRlckZpZWxkID0gKG9wdGlvbnMpID0+IHt9O1xuXG5cdGdldE1hdHJpeEhlYWRlclZhbHVlID0gKG9wdGlvbnMpID0+IHt9O1xuXG5cdGdldE1hdHJpeFN1Ymxpc3RGaWVsZCA9IChvcHRpb25zKSA9PiB7fTtcblxuXHRnZXRNYXRyaXhTdWJsaXN0VmFsdWUgPSAob3B0aW9ucykgPT4ge307XG5cblx0Z2V0U3VibGlzdCA9IChvcHRpb25zKSA9PiB7fTtcblxuXHRnZXRTdWJsaXN0cyA9IChvcHRpb25zKSA9PiB7fTtcblxuXHRnZXRTdWJsaXN0RmllbGQgPSAob3B0aW9ucykgPT4ge307XG5cblx0Z2V0U3VibGlzdEZpZWxkcyA9IChvcHRpb25zKSA9PiB7fTtcblxuXHRnZXRTdWJsaXN0U3VicmVjb3JkID0gKG9wdGlvbnMpID0+IHt9O1xuXG5cdEBvcHRpb25zKFwic3VibGlzdElkXCIsIFwiZmllbGRJZFwiLCBcImxpbmVcIilcblx0QHJlcXVpcmVkKFwic3VibGlzdElkXCIsIFwiZmllbGRJZFwiLCBcImxpbmVcIilcblx0Z2V0U3VibGlzdFRleHQgPSAob3B0aW9ucykgPT4ge1xuXHRcdGNvbnN0IGZpZWxkID0gdGhpcy5zdWJsaXN0c1tvcHRpb25zLnN1Ymxpc3RJZF0ubGluZXNbb3B0aW9ucy5saW5lXVtvcHRpb25zLmZpZWxkSWRdO1xuXHRcdGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZmllbGQpID09PSBcIltvYmplY3QgRGF0ZV1cIikge1xuXHRcdFx0cmV0dXJuIGRhdGVmbnMuZm9ybWF0KGZpZWxkLCBTdWl0ZVNjcmlwdE1vY2tzLmRhdGVGb3JtYXQpO1xuXHRcdH1cblx0XHRpZiAodHlwZW9mIGZpZWxkID09PSBcIm9iamVjdFwiICYmIGZpZWxkICE9PSBudWxsKSB7XG5cdFx0XHRpZiAoIXRoaXMuaXNEeW5hbWljICYmICEoXCJ0ZXh0XCIgaW4gZmllbGQpKSB7XG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcihcblx0XHRcdFx0XHRcIkNhbm5vdCB1c2UgZ2V0U3VibGlzdFRleHQgb24gZmllbGQgdGhhdCBoYXMgaGFkIHZhbHVlIGJ1dCBub3QgdGV4dCBzZXQgaW4gc3RhbmRhcmQgbW9kZVwiLFxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGZpZWxkLnRleHQgfHwgZmllbGQudmFsdWU7XG5cdFx0fVxuXHRcdHJldHVybiBmaWVsZDtcblx0fTtcblxuXHRAb3B0aW9ucyhcInN1Ymxpc3RJZFwiLCBcImZpZWxkSWRcIiwgXCJsaW5lXCIpXG5cdEByZXF1aXJlZChcInN1Ymxpc3RJZFwiLCBcImZpZWxkSWRcIiwgXCJsaW5lXCIpXG5cdGdldFN1Ymxpc3RWYWx1ZSA9IChvcHRpb25zKSA9PiB7XG5cdFx0Y29uc3QgZmllbGQgPSB0aGlzLnN1Ymxpc3RzW29wdGlvbnMuc3VibGlzdElkXS5saW5lc1tvcHRpb25zLmxpbmVdW29wdGlvbnMuZmllbGRJZF07XG5cdFx0aWYgKFxuXHRcdFx0dHlwZW9mIGZpZWxkID09PSBcIm9iamVjdFwiICYmXG5cdFx0XHRmaWVsZCAhPT0gbnVsbCAmJlxuXHRcdFx0IShPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZmllbGQpID09PSBcIltvYmplY3QgRGF0ZV1cIilcblx0XHQpIHtcblx0XHRcdHJldHVybiBmaWVsZC52YWx1ZTtcblx0XHR9XG5cdFx0cmV0dXJuIGZpZWxkO1xuXHR9O1xuXG5cdEBvcHRpb25zKFwiZmllbGRJZFwiKVxuXHRAcmVxdWlyZWQoXCJmaWVsZElkXCIpXG5cdGdldFN1YnJlY29yZCA9IChvcHRpb25zKSA9PiB7XG5cdFx0aWYgKCEob3B0aW9ucy5maWVsZElkIGluIHRoaXMuc3VicmVjb3JkcykpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcIlN1YnJlY29yZCBkb2VzIG5vdCBleGlzdC5cIik7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLnN1YnJlY29yZHNbb3B0aW9ucy5maWVsZElkXTtcblx0fTtcblxuXHRAb3B0aW9ucyhcImZpZWxkSWRcIilcblx0QHJlcXVpcmVkKFwiZmllbGRJZFwiKVxuXHRnZXRUZXh0ID0gKG9wdGlvbnMpID0+IHtcblx0XHRjb25zdCBmaWVsZCA9IHRoaXMuZmllbGRzW29wdGlvbnMuZmllbGRJZF07XG5cdFx0aWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChmaWVsZCkgPT09IFwiW29iamVjdCBEYXRlXVwiKSB7XG5cdFx0XHRyZXR1cm4gZGF0ZWZucy5mb3JtYXQoZmllbGQsIFN1aXRlU2NyaXB0TW9ja3MuZGF0ZUZvcm1hdCk7XG5cdFx0fVxuXHRcdGlmICh0eXBlb2YgZmllbGQgPT09IFwib2JqZWN0XCIgJiYgZmllbGQgIT09IG51bGwpIHtcblx0XHRcdGlmICghdGhpcy5pc0R5bmFtaWMgJiYgIShcInRleHRcIiBpbiBmaWVsZCkpIHtcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IHVzZSBnZXRUZXh0IG9uIGZpZWxkIHRoYXQgaGFzIGhhZCB2YWx1ZSBidXQgbm90IHRleHQgc2V0IGluIHN0YW5kYXJkIG1vZGVcIik7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gZmllbGQudGV4dCB8fCBmaWVsZC52YWx1ZTtcblx0XHR9XG5cdFx0cmV0dXJuIGZpZWxkO1xuXHR9O1xuXG5cdEBvcHRpb25zKFwiZmllbGRJZFwiKVxuXHRAcmVxdWlyZWQoXCJmaWVsZElkXCIpXG5cdGdldFZhbHVlID0gKG9wdGlvbnMpID0+IHtcblx0XHRjb25zdCBmaWVsZCA9IHRoaXMuZmllbGRzW29wdGlvbnMuZmllbGRJZF07XG5cdFx0aWYgKHR5cGVvZiBmaWVsZCA9PT0gXCJvYmplY3RcIiAmJiBmaWVsZCAhPT0gbnVsbCAmJiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZmllbGQpICE9PSBcIltvYmplY3QgRGF0ZV1cIikge1xuXHRcdFx0cmV0dXJuIGZpZWxkLnZhbHVlO1xuXHRcdH1cblx0XHRyZXR1cm4gZmllbGQ7XG5cdH07XG5cblx0aGFzQ3VycmVudFN1Ymxpc3RTdWJyZWNvcmQgPSAob3B0aW9ucykgPT4ge307XG5cblx0aGFzU3VibGlzdFN1YnJlY29yZCA9IChvcHRpb25zKSA9PiB7fTtcblxuXHRoYXNTdWJyZWNvcmQgPSAob3B0aW9ucykgPT4ge307XG5cblx0aW5zZXJ0TGluZSA9IChvcHRpb25zKSA9PiB7fTtcblxuXHRtb3ZlTGluZSA9IChvcHRpb25zKSA9PiB7fTtcblxuXHRyZW1vdmVDdXJyZW50U3VibGlzdFN1YnJlY29yZCA9IChvcHRpb25zKSA9PiB7fTtcblxuXHRAb3B0aW9ucyhcInN1Ymxpc3RJZFwiLCBcImxpbmVcIiwgXCJpZ25vcmVSZWNhbGNcIiwgXCJsaW5lSW5zdGFuY2VJZFwiKVxuXHRAcmVxdWlyZWQoXCJzdWJsaXN0SWRcIiwgXCJsaW5lXCIpXG5cdHJlbW92ZUxpbmUgPSAob3B0aW9ucykgPT4ge1xuXHRcdGNvbnN0IHN1Ymxpc3QgPSB0aGlzLnN1Ymxpc3RzW29wdGlvbnMuc3VibGlzdElkXTtcblx0XHRpZiAoc3VibGlzdCA9PT0gdW5kZWZpbmVkIHx8ICEob3B0aW9ucy5saW5lIGluIHN1Ymxpc3QubGluZXMpKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoKTtcblx0XHR9XG5cdFx0c3VibGlzdC5saW5lcy5zcGxpY2Uob3B0aW9ucy5saW5lLCAxKTtcblx0fTtcblxuXHRyZW1vdmVTdWJsaXN0U3VicmVjb3JkID0gKG9wdGlvbnMpID0+IHt9O1xuXG5cdHJlbW92ZVN1YnJlY29yZCA9IChvcHRpb25zKSA9PiB7fTtcblxuXHRAYWRkUHJvbWlzZSgpXG5cdEBvcHRpb25zKFwiZW5hYmxlU291cmNpbmdcIiwgXCJpZ25vcmVNYW5kYXRvcnlGaWVsZHNcIilcblx0c2F2ZSA9IChvcHRpb25zKSA9PiB7XG5cdFx0aWYgKHRoaXMuaWQgJiYgU3VpdGVTY3JpcHRNb2Nrcy5yZWNvcmRzLmdldCh0aGlzKS52ZXJzaW9uICE9PSB0aGlzLnZlcnNpb24pIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcIlJlY29yZCBoYXMgY2hhbmdlZFwiKTtcblx0XHR9XG5cdFx0dGhpcy52ZXJzaW9uKys7XG5cdFx0Y29uc3QgY29weSA9IG5ldyBSZWNvcmQodGhpcyk7XG5cdFx0Ly8gY2hhbmdlIGZpZWxkcyB0aGF0IG9ubHkgaGF2ZSB2YWx1ZSB0byBub3QgYmUgYW4gb2JqZWN0IHNvIGdldFRleHQgd29ya3Ncblx0XHRPYmplY3QuZW50cmllcyhjb3B5LmZpZWxkcykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG5cdFx0XHRpZiAodHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmIHZhbHVlICE9PSBudWxsICYmICEodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSAmJiAhKFwidGV4dFwiIGluIHZhbHVlKSkge1xuXHRcdFx0XHRjb3B5LmZpZWxkc1trZXldID0gdmFsdWUudmFsdWU7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0T2JqZWN0LnZhbHVlcyhjb3B5LnN1Ymxpc3RzKS5mb3JFYWNoKChzdWJsaXN0KSA9PiB7XG5cdFx0XHRzdWJsaXN0LmxpbmVzLmZvckVhY2goKGxpbmUpID0+IHtcblx0XHRcdFx0T2JqZWN0LmVudHJpZXMobGluZSkuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG5cdFx0XHRcdFx0aWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJiB2YWx1ZSAhPT0gbnVsbCAmJiAhKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkgJiYgIShcInRleHRcIiBpbiB2YWx1ZSkpIHtcblx0XHRcdFx0XHRcdGxpbmVba2V5XSA9IHZhbHVlLnZhbHVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblx0XHR9KTtcblx0XHRpZiAoIXRoaXMuaWQpIHtcblx0XHRcdHRoaXMuaWQgPSBjb3B5LmlkID0gTWF0aC5tYXgoQXJyYXkuZnJvbShTdWl0ZVNjcmlwdE1vY2tzLnJlY29yZHMudmFsdWVzKCkpLm1hcCgoYSkgPT4gYS5pZCkpICsgMTtcblx0XHRcdFN1aXRlU2NyaXB0TW9ja3MuY3JlYXRlZFJlY29yZHMucHVzaChjb3B5KTtcblx0XHR9XG5cdFx0U3VpdGVTY3JpcHRNb2Nrcy5yZWNvcmRzLnNldChjb3B5KTtcblx0XHRTdWl0ZVNjcmlwdE1vY2tzLnNhdmVkUmVjb3Jkcy5wdXNoKGNvcHkpO1xuXHRcdHJldHVybiB0aGlzLmlkO1xuXHR9O1xuXG5cdC8vIFRPRE86IGVkZ2UgY2FzZSB3aGVyZSBpZiBmaXJzdCBsaW5lIHNlbGVjdCB5b3UgZG8gaXMgbiArIDEgaXQgd2lsbCBnaXZlIGEgbmV3IGxpbmVcblx0QGR5bmFtaWNNb2RlT25seSgpXG5cdEBvcHRpb25zKFwic3VibGlzdElkXCIsIFwibGluZVwiKVxuXHRAcmVxdWlyZWQoXCJzdWJsaXN0SWRcIiwgXCJsaW5lXCIpXG5cdHNlbGVjdExpbmUgPSAob3B0aW9ucykgPT4ge1xuXHRcdGNvbnN0IHN1Ymxpc3QgPSB0aGlzLnN1Ymxpc3RzW29wdGlvbnMuc3VibGlzdElkXTtcblx0XHRpZiAoc3VibGlzdCA9PT0gdW5kZWZpbmVkIHx8ICEob3B0aW9ucy5saW5lIGluIHN1Ymxpc3QubGluZXMpKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJzdWJsaXN0IG9yIGxpbmUgZG9lcyBub3QgZXhpc3RcIik7XG5cdFx0fVxuXHRcdHN1Ymxpc3QuY3VycmVudGxpbmUgPSB7IC4uLnN1Ymxpc3QubGluZXNbb3B0aW9ucy5saW5lXSB9O1xuXHR9O1xuXG5cdEBkeW5hbWljTW9kZU9ubHkoKVxuXHRAb3B0aW9ucyhcInN1Ymxpc3RJZFwiKVxuXHRAcmVxdWlyZWQoXCJzdWJsaXN0SWRcIilcblx0c2VsZWN0TmV3TGluZSA9IChvcHRpb25zKSA9PiB7XG5cdFx0Y29uc3Qgc3VibGlzdCA9IHRoaXMuc3VibGlzdHNbb3B0aW9ucy5zdWJsaXN0SWRdO1xuXHRcdGlmIChzdWJsaXN0ID09PSB1bmRlZmluZWQpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcInN1Ymxpc3QgZG9lcyBub3QgZXhpc3RcIik7XG5cdFx0fVxuXHRcdHN1Ymxpc3QuY3VycmVudGxpbmUgPSB7XG5cdFx0XHRfaWQ6IHJhbmRvbVVVSUQoKSxcblx0XHR9O1xuXHR9O1xuXG5cdHNldEN1cnJlbnRNYXRyaXhTdWJsaXN0VmFsdWUgPSAob3B0aW9ucykgPT4ge307XG5cblx0QGR5bmFtaWNNb2RlT25seSgpXG5cdEBvcHRpb25zKFwic3VibGlzdElkXCIsIFwiZmllbGRJZFwiLCBcInRleHRcIilcblx0QHJlcXVpcmVkKFwic3VibGlzdElkXCIsIFwiZmllbGRJZFwiLCBcInRleHRcIilcblx0c2V0Q3VycmVudFN1Ymxpc3RUZXh0ID0gKG9wdGlvbnMpID0+IHtcblx0XHRjb25zdCBzdWJsaXN0ID0gdGhpcz8uc3VibGlzdHM/LltvcHRpb25zLnN1Ymxpc3RJZF07XG5cdFx0aWYgKHN1Ymxpc3QgPT09IHVuZGVmaW5lZCB8fCAhKFwiY3VycmVudGxpbmVcIiBpbiBzdWJsaXN0KSkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFwic3VibGlzdCBkb2Vzbid0IGV4aXN0IG9yIGxpbmUgaXMgbm90IHNlbGVjdGVkXCIpO1xuXHRcdH1cblx0XHRyZXR1cm4gKHN1Ymxpc3QuY3VycmVudGxpbmVbb3B0aW9ucy5maWVsZElkXSA9IHsgdmFsdWU6IG9wdGlvbnMudGV4dCwgdGV4dDogb3B0aW9ucy50ZXh0IH0pO1xuXHR9O1xuXG5cdEBkeW5hbWljTW9kZU9ubHkoKVxuXHRAb3B0aW9ucyhcInN1Ymxpc3RJZFwiLCBcImZpZWxkSWRcIiwgXCJ2YWx1ZVwiKVxuXHRAcmVxdWlyZWQoXCJzdWJsaXN0SWRcIiwgXCJmaWVsZElkXCIsIFwidmFsdWVcIilcblx0c2V0Q3VycmVudFN1Ymxpc3RWYWx1ZSA9IChvcHRpb25zKSA9PiB7XG5cdFx0Y29uc3Qgc3VibGlzdCA9IHRoaXM/LnN1Ymxpc3RzPy5bb3B0aW9ucy5zdWJsaXN0SWRdO1xuXHRcdGlmIChzdWJsaXN0ID09PSB1bmRlZmluZWQgfHwgIShcImN1cnJlbnRsaW5lXCIgaW4gc3VibGlzdCkpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcInN1Ymxpc3QgZG9lc24ndCBleGlzdCBvciBsaW5lIGlzIG5vdCBzZWxlY3RlZFwiKTtcblx0XHR9XG5cdFx0cmV0dXJuIChzdWJsaXN0LmN1cnJlbnRsaW5lW29wdGlvbnMuZmllbGRJZF0gPSB7IHZhbHVlOiBvcHRpb25zLnZhbHVlIH0pO1xuXHR9O1xuXG5cdHNldE1hdHJpeEhlYWRlclZhbHVlID0gKG9wdGlvbnMpID0+IHt9O1xuXG5cdHNldE1hdHJpeFN1Ymxpc3RWYWx1ZSA9IChvcHRpb25zKSA9PiB7fTtcblxuXHRAc3RhbmRhcmRNb2RlT25seSgpXG5cdEBvcHRpb25zKFwic3VibGlzdElkXCIsIFwiZmllbGRJZFwiLCBcImxpbmVcIiwgXCJ0ZXh0XCIpXG5cdEByZXF1aXJlZChcInN1Ymxpc3RJZFwiLCBcImZpZWxkSWRcIiwgXCJsaW5lXCIsIFwidGV4dFwiKVxuXHRzZXRTdWJsaXN0VGV4dCA9IChvcHRpb25zKSA9PiB7XG5cdFx0Y29uc3Qgc3VibGlzdCA9IHRoaXM/LnN1Ymxpc3RzPy5bb3B0aW9ucy5zdWJsaXN0SWRdO1xuXHRcdGlmIChzdWJsaXN0ID09PSB1bmRlZmluZWQgfHwgIShvcHRpb25zLmxpbmUgaW4gc3VibGlzdC5saW5lcykpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcInN1Ymxpc3Qgb3IgbGluZSBkb2Vzbid0IGV4aXN0XCIpO1xuXHRcdH1cblx0XHRzdWJsaXN0LmxpbmVzW29wdGlvbnMubGluZV1bb3B0aW9ucy5maWVsZElkXSA9IHsgdmFsdWU6IG9wdGlvbnMudGV4dCwgdGV4dDogb3B0aW9ucy50ZXh0IH07XG5cdH07XG5cblx0QHN0YW5kYXJkTW9kZU9ubHkoKVxuXHRAb3B0aW9ucyhcInN1Ymxpc3RJZFwiLCBcImZpZWxkSWRcIiwgXCJsaW5lXCIsIFwidmFsdWVcIilcblx0QHJlcXVpcmVkKFwic3VibGlzdElkXCIsIFwiZmllbGRJZFwiLCBcImxpbmVcIiwgXCJ2YWx1ZVwiKVxuXHRzZXRTdWJsaXN0VmFsdWUgPSAob3B0aW9ucykgPT4ge1xuXHRcdGNvbnN0IHN1Ymxpc3QgPSB0aGlzPy5zdWJsaXN0cz8uW29wdGlvbnMuc3VibGlzdElkXTtcblx0XHRpZiAoc3VibGlzdCA9PT0gdW5kZWZpbmVkIHx8ICEob3B0aW9ucy5saW5lIGluIHN1Ymxpc3QubGluZXMpKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJzdWJsaXN0IG9yIGxpbmUgZG9lc24ndCBleGlzdFwiKTtcblx0XHR9XG5cdFx0c3VibGlzdC5saW5lc1tvcHRpb25zLmxpbmVdW29wdGlvbnMuZmllbGRJZF0gPSB7IHZhbHVlOiBvcHRpb25zLnZhbHVlIH07XG5cdH07XG5cblx0QG9wdGlvbnMoXCJmaWVsZElkXCIsIFwidGV4dFwiLCBcImlnbm9yZUZpZWxkQ2hhbmdlXCIpXG5cdEByZXF1aXJlZChcImZpZWxkSWRcIiwgXCJ0ZXh0XCIpXG5cdHNldFRleHQgPSAob3B0aW9ucykgPT4ge1xuXHRcdHRoaXMuZmllbGRzW29wdGlvbnMuZmllbGRJZF0gPSB7IHZhbHVlOiBvcHRpb25zLnRleHQsIHRleHQ6IG9wdGlvbnMudGV4dCB9O1xuXHRcdHJldHVybiB0aGlzO1xuXHR9O1xuXG5cdEBvcHRpb25zKFwiZmllbGRJZFwiLCBcInZhbHVlXCIsIFwiaWdub3JlRmllbGRDaGFuZ2VcIilcblx0QHJlcXVpcmVkKFwiZmllbGRJZFwiLCBcInZhbHVlXCIpXG5cdHNldFZhbHVlID0gKG9wdGlvbnMpID0+IHtcblx0XHR0aGlzLmZpZWxkc1tvcHRpb25zLmZpZWxkSWRdID0geyB2YWx1ZTogb3B0aW9ucy52YWx1ZSB9O1xuXHRcdHJldHVybiB0aGlzO1xuXHR9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFJlY29yZDtcbiJdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsTUFBTUEsT0FBTyxHQUFHQyxPQUFPLENBQUMsVUFBVSxDQUFDO0FBQ25DLE1BQU1DLGVBQWUsR0FBR0QsT0FBTyxDQUFDLHNDQUFzQyxDQUFDO0FBQ3ZFLE1BQU07RUFBRUU7QUFBVyxDQUFDLEdBQUdGLE9BQU8sQ0FBQyxhQUFhLENBQUM7QUFDN0MsTUFBTUcsZ0JBQWdCLEdBQUdILE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQztBQUNuRCxNQUFNO0VBQ0xJLE9BQU87RUFDUEMsUUFBUTtFQUNSQyxVQUFVO0VBQ1ZDLGVBQWU7RUFDZkMsZ0JBQWdCO0VBQ2hCQztBQUNELENBQUMsR0FBR1QsT0FBTyxDQUFDLG1CQUFtQixDQUFDO0FBQUMsSUFBQVUsT0FBQTtBQUFBQyxJQUFBLEdBRWhDRixpQkFBaUIsQ0FBQyxDQUFDO0FBQUFHLEtBQUEsR0F5QmxCTCxlQUFlLENBQUMsQ0FBQztBQUFBTSxLQUFBLEdBQ2pCVCxPQUFPLENBQUMsV0FBVyxDQUFDO0FBQUFVLEtBQUEsR0FDcEJULFFBQVEsQ0FBQyxXQUFXLENBQUM7QUFBQVUsS0FBQSxHQUtyQlIsZUFBZSxDQUFDLENBQUM7QUFBQVMsS0FBQSxHQUNqQlosT0FBTyxDQUFDLFdBQVcsRUFBRSxjQUFjLENBQUM7QUFBQWEsS0FBQSxHQUNwQ1osUUFBUSxDQUFDLFdBQVcsQ0FBQztBQUFBYSxLQUFBLEdBZXJCWixVQUFVLENBQUMsQ0FBQztBQUFBYSxLQUFBLEdBZVpaLGVBQWUsQ0FBQyxDQUFDO0FBQUFhLE1BQUEsR0FDakJoQixPQUFPLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQztBQUFB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 \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkYXRlZm5zIiwicmVxdWlyZSIsInN0cnVjdHVyZWRDbG9uZSIsInJhbmRvbVVVSUQiLCJTdWl0ZVNjcmlwdE1vY2tzIiwib3B0aW9ucyIsInJlcXVpcmVkIiwiYWRkUHJvbWlzZSIsImR5bmFtaWNNb2RlT25seSIsInN0YW5kYXJkTW9kZU9ubHkiLCJhc3NpZ25Db25zdHJ1Y3RvciIsIl9SZWNvcmQiLCJfZGVjIiwiX2RlYzIiLCJfZGVjMyIsIl9kZWM0IiwiX2RlYzUiLCJfZGVjNiIsIl9kZWM3IiwiX2RlYzgiLCJfZGVjOSIsIl9kZWMxMCIsIl9kZWMxMSIsIl9kZWMxMiIsIl9kZWMxMyIsIl9kZWMxNCIsIl9kZWMxNSIsIl9kZWMxNiIsIl9kZWMxNyIsIl9kZWMxOCIsIl9kZWMxOSIsIl9kZWMyMCIsIl9kZWMyMSIsIl9kZWMyMiIsIl9kZWMyMyIsIl9kZWMyNCIsIl9kZWMyNSIsIl9kZWMyNiIsIl9kZWMyNyIsIl9kZWMyOCIsIl9kZWMyOSIsIl9kZWMzMCIsIl9kZWMzMSIsIl9kZWMzMiIsIl9kZWMzMyIsIl9kZWMzNCIsIl9kZWMzNSIsIl9kZWMzNiIsIl9kZWMzNyIsIl9kZWMzOCIsIl9kZWMzOSIsIl9kZWM0MCIsIl9kZWM0MSIsIl9kZWM0MiIsIl9kZWM0MyIsIl9kZWM0NCIsIl9kZWM0NSIsIl9kZWM0NiIsIl9kZWM0NyIsIl9kZWM0OCIsIl9kZWM0OSIsIl9kZWM1MCIsIl9kZWM1MSIsIl9kZWM1MiIsIlJlY29yZCIsImUiLCJfaW5pdF9jYW5jZWxMaW5lIiwiX2luaXRfY29tbWl0TGluZSIsIl9pbml0X2V4ZWN1dGVNYWNybyIsIl9pbml0X2dldEN1cnJlbnRTdWJsaXN0VGV4dCIsIl9pbml0X2dldEN1cnJlbnRTdWJsaXN0VmFsdWUiLCJfaW5pdF9nZXRMaW5lQ291bnQiLCJfaW5pdF9nZXRTdWJsaXN0VGV4dCIsIl9pbml0X2dldFN1Ymxpc3RWYWx1ZSIsIl9pbml0X2dldFN1YnJlY29yZCIsIl9pbml0X2dldFRleHQiLCJfaW5pdF9nZXRWYWx1ZSIsIl9pbml0X3JlbW92ZUxpbmUiLCJfaW5pdF9zYXZlIiwiX2luaXRfc2VsZWN0TGluZSIsIl9pbml0X3NlbGVjdE5ld0xpbmUiLCJfaW5pdF9zZXRDdXJyZW50U3VibGlzdFRleHQiLCJfaW5pdF9zZXRDdXJyZW50U3VibGlzdFZhbHVlIiwiX2luaXRfc2V0U3VibGlzdFRleHQiLCJfaW5pdF9zZXRTdWJsaXN0VmFsdWUiLCJfaW5pdF9zZXRUZXh0IiwiX2luaXRfc2V0VmFsdWUiLCJjIiwiX2luaXRDbGFzcyIsIl9hcHBseURlY3MyMjAzUiIsImlkIiwidHlwZSIsImZpZWxkcyIsInN1Ymxpc3RzIiwic3VicmVjb3JkcyIsImlzRHluYW1pYyIsInZlcnNpb24iLCJpbml0aWFsaXplIiwiT2JqZWN0IiwiZW50cmllcyIsInJlZHVjZSIsImFjYyIsImxpbmVJZCIsImxpbmVzIiwiY3VycmVudGxpbmUiLCJzdWJyZWNvcmRJZCIsInN1YnJlY29yZCIsImNhbmNlbExpbmUiLCJzZWxlY3ROZXdMaW5lIiwic3VibGlzdElkIiwiY29tbWl0TGluZSIsInN1Ymxpc3QiLCJ1bmRlZmluZWQiLCJFcnJvciIsImV4aXN0aW5nSW5kZXgiLCJmaW5kSW5kZXgiLCJhIiwiX2lkIiwicHVzaCIsImV4ZWN1dGVNYWNybyIsImZpbmRNYXRyaXhTdWJsaXN0TGluZVdpdGhWYWx1ZSIsImZpbmRTdWJsaXN0TGluZVdpdGhWYWx1ZSIsImdldEN1cnJlbnRNYXRyaXhTdWJsaXN0VmFsdWUiLCJnZXRDdXJyZW50U3VibGlzdEZpZWxkIiwiZ2V0Q3VycmVudFN1Ymxpc3RJbmRleCIsImdldEN1cnJlbnRTdWJsaXN0U3VicmVjb3JkIiwiZ2V0Q3VycmVudFN1Ymxpc3RUZXh0IiwiZmllbGQiLCJmaWVsZElkIiwicHJvdG90eXBlIiwidG9TdHJpbmciLCJjYWxsIiwiZm9ybWF0IiwiZGF0ZUZvcm1hdCIsInRleHQiLCJ2YWx1ZSIsImdldEN1cnJlbnRTdWJsaXN0VmFsdWUiLCJnZXRGaWVsZCIsImdldEZpZWxkcyIsImdldExpbmVDb3VudCIsImxlbmd0aCIsImdldE1hY3JvIiwiZ2V0TWFjcm9zIiwiZ2V0TWF0cml4SGVhZGVyQ291bnQiLCJnZXRNYXRyaXhIZWFkZXJGaWVsZCIsImdldE1hdHJpeEhlYWRlclZhbHVlIiwiZ2V0TWF0cml4U3VibGlzdEZpZWxkIiwiZ2V0TWF0cml4U3VibGlzdFZhbHVlIiwiZ2V0U3VibGlzdCIsImdldFN1Ymxpc3RzIiwiZ2V0U3VibGlzdEZpZWxkIiwiZ2V0U3VibGlzdEZpZWxkcyIsImdldFN1Ymxpc3RTdWJyZWNvcmQiLCJnZXRTdWJsaXN0VGV4dCIsImxpbmUiLCJnZXRTdWJsaXN0VmFsdWUiLCJnZXRTdWJyZWNvcmQiLCJnZXRUZXh0IiwiZ2V0VmFsdWUiLCJoYXNDdXJyZW50U3VibGlzdFN1YnJlY29yZCIsImhhc1N1Ymxpc3RTdWJyZWNvcmQiLCJoYXNTdWJyZWNvcmQiLCJpbnNlcnRMaW5lIiwibW92ZUxpbmUiLCJyZW1vdmVDdXJyZW50U3VibGlzdFN1YnJlY29yZCIsInJlbW92ZUxpbmUiLCJzcGxpY2UiLCJyZW1vdmVTdWJsaXN0U3VicmVjb3JkIiwicmVtb3ZlU3VicmVjb3JkIiwic2F2ZSIsInJlY29yZHMiLCJnZXQiLCJjb3B5IiwiZm9yRWFjaCIsImtleSIsIkRhdGUiLCJ2YWx1ZXMiLCJNYXRoIiwibWF4IiwiQXJyYXkiLCJmcm9tIiwibWFwIiwiY3JlYXRlZFJlY29yZHMiLCJzZXQiLCJzYXZlZFJlY29yZHMiLCJzZWxlY3RMaW5lIiwic2V0Q3VycmVudE1hdHJpeFN1Ymxpc3RWYWx1ZSIsInNldEN1cnJlbnRTdWJsaXN0VGV4dCIsInNldEN1cnJlbnRTdWJsaXN0VmFsdWUiLCJzZXRNYXRyaXhIZWFkZXJWYWx1ZSIsInNldE1hdHJpeFN1Ymxpc3RWYWx1ZSIsInNldFN1Ymxpc3RUZXh0Iiwic2V0U3VibGlzdFZhbHVlIiwic2V0VGV4dCIsInNldFZhbHVlIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb2Nrcy9yZWNvcmQvUmVjb3JkLmNqcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBkYXRlZm5zID0gcmVxdWlyZShcImRhdGUtZm5zXCIpO1xuY29uc3Qgc3RydWN0dXJlZENsb25lID0gcmVxdWlyZShcImNvcmUtanMtcHVyZS9hY3R1YWwvc3RydWN0dXJlZC1jbG9uZVwiKTtcbmNvbnN0IHsgcmFuZG9tVVVJRCB9ID0gcmVxdWlyZShcIm5vZGU6Y3J5cHRvXCIpO1xuY29uc3QgU3VpdGVTY3JpcHRNb2NrcyA9IHJlcXVpcmUoXCIuLi8uLi9pbmRleC5janNcIik7XG5jb25zdCB7XG5cdG9wdGlvbnMsXG5cdHJlcXVpcmVkLFxuXHRhZGRQcm9taXNlLFxuXHRkeW5hbWljTW9kZU9ubHksXG5cdHN0YW5kYXJkTW9kZU9ubHksXG5cdGFzc2lnbkNvbnN0cnVjdG9yLFxufSA9IHJlcXVpcmUoXCIuLi8uLi9oZWxwZXJzLmNqc1wiKTtcblxuQGFzc2lnbkNvbnN0cnVjdG9yKClcbmNsYXNzIFJlY29yZCB7XG5cdGlkID0gbnVsbDtcblx0dHlwZSA9IG51bGw7XG5cdGZpZWxkcyA9IHt9O1xuXHRzdWJsaXN0cyA9IHt9O1xuXHRzdWJyZWNvcmRzID0ge307XG5cdGlzRHluYW1pYyA9IGZhbHNlO1xuXHR2ZXJzaW9uID0gMTtcblxuXHRpbml0aWFsaXplID0gKCkgPT4ge1xuXHRcdHRoaXMuZmllbGRzID0gc3RydWN0dXJlZENsb25lKHRoaXMuZmllbGRzKTtcblx0XHR0aGlzLnN1Ymxpc3RzID0gT2JqZWN0LmVudHJpZXMoc3RydWN0dXJlZENsb25lKHRoaXMuc3VibGlzdHMpIHx8IHt9KS5yZWR1Y2UoKGFjYywgW2xpbmVJZCwgbGluZXNdKSA9PiB7XG5cdFx0XHRhY2NbbGluZUlkXSA9IHtcblx0XHRcdFx0Y3VycmVudGxpbmU6IHt9LFxuXHRcdFx0XHRsaW5lczogXCJsaW5lc1wiIGluIGxpbmVzID8gbGluZXMubGluZXMgOiBsaW5lcyxcblx0XHRcdH07XG5cdFx0XHRyZXR1cm4gYWNjO1xuXHRcdH0sIHt9KTtcblx0XHR0aGlzLnN1YnJlY29yZHMgPSBPYmplY3QuZW50cmllcyh0aGlzLnN1YnJlY29yZHMgfHwge30pLnJlZHVjZSgoYWNjLCBbc3VicmVjb3JkSWQsIHN1YnJlY29yZF0pID0+IHtcblx0XHRcdGFjY1tzdWJyZWNvcmRJZF0gPSBuZXcgUmVjb3JkKHN1YnJlY29yZCk7XG5cdFx0XHRyZXR1cm4gYWNjO1xuXHRcdH0sIHt9KTtcblx0fTtcblxuXHRAZHluYW1pY01vZGVPbmx5KClcblx0QG9wdGlvbnMoXCJzdWJsaXN0SWRcIilcblx0QHJlcXVpcmVkKFwic3VibGlzdElkXCIpXG5cdGNhbmNlbExpbmUgPSAob3B0aW9ucykgPT4ge1xuXHRcdHRoaXMuc2VsZWN0TmV3TGluZShvcHRpb25zLnN1Ymxpc3RJZCk7XG5cdH07XG5cblx0QGR5bmFtaWNNb2RlT25seSgpXG5cdEBvcHRpb25zKFwic3VibGlzdElkXCIsIFwiaWdub3JlUmVjYWxjXCIpXG5cdEByZXF1aXJlZChcInN1Ymxpc3RJZFwiKVxuXHRjb21taXRMaW5lID0gKG9wdGlvbnMpID0+IHtcblx0XHRjb25zdCBzdWJsaXN0ID0gdGhpcz8uc3VibGlzdHM/LltvcHRpb25zLnN1Ymxpc3RJZF07XG5cdFx0aWYgKHN1Ymxpc3QgPT09IHVuZGVmaW5lZCB8fCAhKFwiY3VycmVudGxpbmVcIiBpbiBzdWJsaXN0KSkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKCk7XG5cdFx0fVxuXHRcdGNvbnN0IGV4aXN0aW5nSW5kZXggPSBzdWJsaXN0LmxpbmVzLmZpbmRJbmRleCgoYSkgPT4gYS5faWQgPT09IHN1Ymxpc3QuY3VycmVudGxpbmUuX2lkKTtcblx0XHRpZiAoZXhpc3RpbmdJbmRleCA+IC0xKSB7XG5cdFx0XHRzdWJsaXN0LmxpbmVzW2V4aXN0aW5nSW5kZXhdID0gc3VibGlzdC5jdXJyZW50bGluZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0c3VibGlzdC5saW5lcy5wdXNoKHN1Ymxpc3QuY3VycmVudGxpbmUpO1xuXHRcdH1cblx0XHR0aGlzLnNlbGVjdE5ld0xpbmUob3B0aW9ucy5zdWJsaXN0SWQpO1xuXHR9O1xuXG5cdEBhZGRQcm9taXNlKClcblx0ZXhlY3V0ZU1hY3JvID0gKG9wdGlvbnMpID0+IHt9O1xuXG5cdGZpbmRNYXRyaXhTdWJsaXN0TGluZVdpdGhWYWx1ZSA9IChvcHRpb25zKSA9PiB7fTtcblxuXHRmaW5kU3VibGlzdExpbmVXaXRoVmFsdWUgPSAob3B0aW9ucykgPT4ge307XG5cblx0Z2V0Q3VycmVudE1hdHJpeFN1Ymxpc3RWYWx1ZSA9IChvcHRpb25zKSA9PiB7fTtcblxuXHRnZXRDdXJyZW50U3VibGlzdEZpZWxkID0gKG9wdGlvbnMpID0+IHt9O1xuXG5cdGdldEN1cnJlbnRTdWJsaXN0SW5kZXggPSAob3B0aW9ucykgPT4ge307XG5cblx0Z2V0Q3VycmVudFN1Ymxpc3RTdWJyZWNvcmQgPSAob3B0aW9ucykgPT4ge307XG5cblx0QGR5bmFtaWNNb2RlT25seSgpXG5cdEBvcHRpb25zKFwic3VibGlzdElkXCIsIFwiZmllbGRJZFwiKVxuXHRAcmVxdWlyZWQoXCJzdWJsaXN0SWRcIiwgXCJmaWVsZElkXCIpXG5cdGdldEN1cnJlbnRTdWJsaXN0VGV4dCA9IChvcHRpb25zKSA9PiB7XG5cdFx0Y29uc3Qgc3VibGlzdCA9IHRoaXMuc3VibGlzdHNbb3B0aW9ucy5zdWJsaXN0SWRdO1xuXHRcdGlmIChzdWJsaXN0ID09PSB1bmRlZmluZWQpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcIlN1Ymxpc3QgZG9lcyBub3QgZXhpc3RcIik7XG5cdFx0fVxuXHRcdGlmICghKFwiY3VycmVudGxpbmVcIiBpbiBzdWJsaXN0KSkge1xuXHRcdFx0dGhpcy5zZWxlY3ROZXdMaW5lKHN1Ymxpc3QpO1xuXHRcdH1cblx0XHRjb25zdCBmaWVsZCA9IHN1Ymxpc3QuY3VycmVudGxpbmVbb3B0aW9ucy5maWVsZElkXTtcblx0XHRpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGZpZWxkKSA9PT0gXCJbb2JqZWN0IERhdGVdXCIpIHtcblx0XHRcdHJldHVybiBkYXRlZm5zLmZvcm1hdChmaWVsZCwgU3VpdGVTY3JpcHRNb2Nrcy5kYXRlRm9ybWF0KTtcblx0XHR9XG5cdFx0aWYgKHR5cGVvZiBmaWVsZCA9PT0gXCJvYmplY3RcIiAmJiBmaWVsZCAhPT0gbnVsbCkge1xuXHRcdFx0cmV0dXJuIGZpZWxkLnRleHQgfHwgZmllbGQudmFsdWU7XG5cdFx0fVxuXHRcdHJldHVybiBmaWVsZDtcblx0fTtcblxuXHRAZHluYW1pY01vZGVPbmx5KClcblx0QG9wdGlvbnMoXCJzdWJsaXN0SWRcIiwgXCJmaWVsZElkXCIpXG5cdEByZXF1aXJlZChcInN1Ymxpc3RJZFwiLCBcImZpZWxkSWRcIilcblx0Z2V0Q3VycmVudFN1Ymxpc3RWYWx1ZSA9IChvcHRpb25zKSA9PiB7XG5cdFx0Y29uc3Qgc3VibGlzdCA9IHRoaXMuc3VibGlzdHNbb3B0aW9ucy5zdWJsaXN0SWRdO1xuXHRcdGlmIChzdWJsaXN0ID09PSB1bmRlZmluZWQpIHtcblx0XHRcdHJldHVybiBudWxsO1xuXHRcdH1cblx0XHRpZiAoIShcImN1cnJlbnRsaW5lXCIgaW4gc3VibGlzdCkpIHtcblx0XHRcdHRoaXMuc2VsZWN0TmV3TGluZShzdWJsaXN0KTtcblx0XHR9XG5cdFx0Y29uc3QgZmllbGQgPSBzdWJsaXN0LmN1cnJlbnRsaW5lW29wdGlvbnMuZmllbGRJZF07XG5cdFx0aWYgKFxuXHRcdFx0dHlwZW9mIGZpZWxkID09PSBcIm9iamVjdFwiICYmXG5cdFx0XHRmaWVsZCAhPT0gbnVsbCAmJlxuXHRcdFx0IShPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZmllbGQpID09PSBcIltvYmplY3QgRGF0ZV1cIilcblx0XHQpIHtcblx0XHRcdHJldHVybiBmaWVsZC52YWx1ZTtcblx0XHR9XG5cdFx0cmV0dXJuIGZpZWxkO1xuXHR9O1xuXG5cdGdldEZpZWxkID0gKG9wdGlvbnMpID0+IHt9O1xuXG5cdGdldEZpZWxkcyA9IChvcHRpb25zKSA9PiB7fTtcblxuXHRAb3B0aW9ucyhcInN1Ymxpc3RJZFwiKVxuXHRAcmVxdWlyZWQoXCJzdWJsaXN0SWRcIilcblx0Z2V0TGluZUNvdW50ID0gKG9wdGlvbnMpID0+IHtcblx0XHRjb25zdCBzdWJsaXN0ID0gdGhpcy5zdWJsaXN0c1tvcHRpb25zLnN1Ymxpc3RJZF07XG5cdFx0aWYgKHN1Ymxpc3QgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0cmV0dXJuIC0xO1xuXHRcdH1cblx0XHRyZXR1cm4gc3VibGlzdC5saW5lcy5sZW5ndGg7XG5cdH07XG5cblx0Z2V0TWFjcm8gPSAob3B0aW9ucykgPT4ge307XG5cblx0Z2V0TWFjcm9zID0gKG9wdGlvbnMpID0+IHt9O1xuXG5cdGdldE1hdHJpeEhlYWRlckNvdW50ID0gKG9wdGlvbnMpID0+IHt9O1xuXG5cdGdldE1hdHJpeEhlYWRlckZpZWxkID0gKG9wdGlvbnMpID0+IHt9O1xuXG5cdGdldE1hdHJpeEhlYWRlclZhbHVlID0gKG9wdGlvbnMpID0+IHt9O1xuXG5cdGdldE1hdHJpeFN1Ymxpc3RGaWVsZCA9IChvcHRpb25zKSA9PiB7fTtcblxuXHRnZXRNYXRyaXhTdWJsaXN0VmFsdWUgPSAob3B0aW9ucykgPT4ge307XG5cblx0Z2V0U3VibGlzdCA9IChvcHRpb25zKSA9PiB7fTtcblxuXHRnZXRTdWJsaXN0cyA9IChvcHRpb25zKSA9PiB7fTtcblxuXHRnZXRTdWJsaXN0RmllbGQgPSAob3B0aW9ucykgPT4ge307XG5cblx0Z2V0U3VibGlzdEZpZWxkcyA9IChvcHRpb25zKSA9PiB7fTtcblxuXHRnZXRTdWJsaXN0U3VicmVjb3JkID0gKG9wdGlvbnMpID0+IHt9O1xuXG5cdEBvcHRpb25zKFwic3VibGlzdElkXCIsIFwiZmllbGRJZFwiLCBcImxpbmVcIilcblx0QHJlcXVpcmVkKFwic3VibGlzdElkXCIsIFwiZmllbGRJZFwiLCBcImxpbmVcIilcblx0Z2V0U3VibGlzdFRleHQgPSAob3B0aW9ucykgPT4ge1xuXHRcdGNvbnN0IGZpZWxkID0gdGhpcy5zdWJsaXN0c1tvcHRpb25zLnN1Ymxpc3RJZF0ubGluZXNbb3B0aW9ucy5saW5lXVtvcHRpb25zLmZpZWxkSWRdO1xuXHRcdGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZmllbGQpID09PSBcIltvYmplY3QgRGF0ZV1cIikge1xuXHRcdFx0cmV0dXJuIGRhdGVmbnMuZm9ybWF0KGZpZWxkLCBTdWl0ZVNjcmlwdE1vY2tzLmRhdGVGb3JtYXQpO1xuXHRcdH1cblx0XHRpZiAodHlwZW9mIGZpZWxkID09PSBcIm9iamVjdFwiICYmIGZpZWxkICE9PSBudWxsKSB7XG5cdFx0XHRpZiAoIXRoaXMuaXNEeW5hbWljICYmICEoXCJ0ZXh0XCIgaW4gZmllbGQpKSB7XG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcihcblx0XHRcdFx0XHRcIkNhbm5vdCB1c2UgZ2V0U3VibGlzdFRleHQgb24gZmllbGQgdGhhdCBoYXMgaGFkIHZhbHVlIGJ1dCBub3QgdGV4dCBzZXQgaW4gc3RhbmRhcmQgbW9kZVwiLFxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGZpZWxkLnRleHQgfHwgZmllbGQudmFsdWU7XG5cdFx0fVxuXHRcdHJldHVybiBmaWVsZDtcblx0fTtcblxuXHRAb3B0aW9ucyhcInN1Ymxpc3RJZFwiLCBcImZpZWxkSWRcIiwgXCJsaW5lXCIpXG5cdEByZXF1aXJlZChcInN1Ymxpc3RJZFwiLCBcImZpZWxkSWRcIiwgXCJsaW5lXCIpXG5cdGdldFN1Ymxpc3RWYWx1ZSA9IChvcHRpb25zKSA9PiB7XG5cdFx0Y29uc3QgZmllbGQgPSB0aGlzLnN1Ymxpc3RzW29wdGlvbnMuc3VibGlzdElkXS5saW5lc1tvcHRpb25zLmxpbmVdW29wdGlvbnMuZmllbGRJZF07XG5cdFx0aWYgKFxuXHRcdFx0dHlwZW9mIGZpZWxkID09PSBcIm9iamVjdFwiICYmXG5cdFx0XHRmaWVsZCAhPT0gbnVsbCAmJlxuXHRcdFx0IShPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZmllbGQpID09PSBcIltvYmplY3QgRGF0ZV1cIilcblx0XHQpIHtcblx0XHRcdHJldHVybiBmaWVsZC52YWx1ZTtcblx0XHR9XG5cdFx0cmV0dXJuIGZpZWxkO1xuXHR9O1xuXG5cdEBvcHRpb25zKFwiZmllbGRJZFwiKVxuXHRAcmVxdWlyZWQoXCJmaWVsZElkXCIpXG5cdGdldFN1YnJlY29yZCA9IChvcHRpb25zKSA9PiB7XG5cdFx0aWYgKCEob3B0aW9ucy5maWVsZElkIGluIHRoaXMuc3VicmVjb3JkcykpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcIlN1YnJlY29yZCBkb2VzIG5vdCBleGlzdC5cIik7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLnN1YnJlY29yZHNbb3B0aW9ucy5maWVsZElkXTtcblx0fTtcblxuXHRAb3B0aW9ucyhcImZpZWxkSWRcIilcblx0QHJlcXVpcmVkKFwiZmllbGRJZFwiKVxuXHRnZXRUZXh0ID0gKG9wdGlvbnMpID0+IHtcblx0XHRjb25zdCBmaWVsZCA9IHRoaXMuZmllbGRzW29wdGlvbnMuZmllbGRJZF07XG5cdFx0aWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChmaWVsZCkgPT09IFwiW29iamVjdCBEYXRlXVwiKSB7XG5cdFx0XHRyZXR1cm4gZGF0ZWZucy5mb3JtYXQoZmllbGQsIFN1aXRlU2NyaXB0TW9ja3MuZGF0ZUZvcm1hdCk7XG5cdFx0fVxuXHRcdGlmICh0eXBlb2YgZmllbGQgPT09IFwib2JqZWN0XCIgJiYgZmllbGQgIT09IG51bGwpIHtcblx0XHRcdGlmICghdGhpcy5pc0R5bmFtaWMgJiYgIShcInRleHRcIiBpbiBmaWVsZCkpIHtcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IHVzZSBnZXRUZXh0IG9uIGZpZWxkIHRoYXQgaGFzIGhhZCB2YWx1ZSBidXQgbm90IHRleHQgc2V0IGluIHN0YW5kYXJkIG1vZGVcIik7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gZmllbGQudGV4dCB8fCBmaWVsZC52YWx1ZTtcblx0XHR9XG5cdFx0cmV0dXJuIGZpZWxkO1xuXHR9O1xuXG5cdEBvcHRpb25zKFwiZmllbGRJZFwiKVxuXHRAcmVxdWlyZWQoXCJmaWVsZElkXCIpXG5cdGdldFZhbHVlID0gKG9wdGlvbnMpID0+IHtcblx0XHRjb25zdCBmaWVsZCA9IHRoaXMuZmllbGRzW29wdGlvbnMuZmllbGRJZF07XG5cdFx0aWYgKHR5cGVvZiBmaWVsZCA9PT0gXCJvYmplY3RcIiAmJiBmaWVsZCAhPT0gbnVsbCAmJiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZmllbGQpICE9PSBcIltvYmplY3QgRGF0ZV1cIikge1xuXHRcdFx0cmV0dXJuIGZpZWxkLnZhbHVlO1xuXHRcdH1cblx0XHRyZXR1cm4gZmllbGQ7XG5cdH07XG5cblx0aGFzQ3VycmVudFN1Ymxpc3RTdWJyZWNvcmQgPSAob3B0aW9ucykgPT4ge307XG5cblx0aGFzU3VibGlzdFN1YnJlY29yZCA9IChvcHRpb25zKSA9PiB7fTtcblxuXHRoYXNTdWJyZWNvcmQgPSAob3B0aW9ucykgPT4ge307XG5cblx0aW5zZXJ0TGluZSA9IChvcHRpb25zKSA9PiB7fTtcblxuXHRtb3ZlTGluZSA9IChvcHRpb25zKSA9PiB7fTtcblxuXHRyZW1vdmVDdXJyZW50U3VibGlzdFN1YnJlY29yZCA9IChvcHRpb25zKSA9PiB7fTtcblxuXHRAb3B0aW9ucyhcInN1Ymxpc3RJZFwiLCBcImxpbmVcIiwgXCJpZ25vcmVSZWNhbGNcIiwgXCJsaW5lSW5zdGFuY2VJZFwiKVxuXHRAcmVxdWlyZWQoXCJzdWJsaXN0SWRcIiwgXCJsaW5lXCIpXG5cdHJlbW92ZUxpbmUgPSAob3B0aW9ucykgPT4ge1xuXHRcdGNvbnN0IHN1Ymxpc3QgPSB0aGlzLnN1Ymxpc3RzW29wdGlvbnMuc3VibGlzdElkXTtcblx0XHRpZiAoc3VibGlzdCA9PT0gdW5kZWZpbmVkIHx8ICEob3B0aW9ucy5saW5lIGluIHN1Ymxpc3QubGluZXMpKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoKTtcblx0XHR9XG5cdFx0c3VibGlzdC5saW5lcy5zcGxpY2Uob3B0aW9ucy5saW5lLCAxKTtcblx0fTtcblxuXHRyZW1vdmVTdWJsaXN0U3VicmVjb3JkID0gKG9wdGlvbnMpID0+IHt9O1xuXG5cdHJlbW92ZVN1YnJlY29yZCA9IChvcHRpb25zKSA9PiB7fTtcblxuXHRAYWRkUHJvbWlzZSgpXG5cdEBvcHRpb25zKFwiZW5hYmxlU291cmNpbmdcIiwgXCJpZ25vcmVNYW5kYXRvcnlGaWVsZHNcIilcblx0c2F2ZSA9IChvcHRpb25zKSA9PiB7XG5cdFx0aWYgKHRoaXMuaWQgJiYgU3VpdGVTY3JpcHRNb2Nrcy5yZWNvcmRzLmdldCh0aGlzKS52ZXJzaW9uICE9PSB0aGlzLnZlcnNpb24pIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcIlJlY29yZCBoYXMgY2hhbmdlZFwiKTtcblx0XHR9XG5cdFx0dGhpcy52ZXJzaW9uKys7XG5cdFx0Y29uc3QgY29weSA9IG5ldyBSZWNvcmQodGhpcyk7XG5cdFx0Ly8gY2hhbmdlIGZpZWxkcyB0aGF0IG9ubHkgaGF2ZSB2YWx1ZSB0byBub3QgYmUgYW4gb2JqZWN0IHNvIGdldFRleHQgd29ya3Ncblx0XHRPYmplY3QuZW50cmllcyhjb3B5LmZpZWxkcykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG5cdFx0XHRpZiAodHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmIHZhbHVlICE9PSBudWxsICYmICEodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSAmJiAhKFwidGV4dFwiIGluIHZhbHVlKSkge1xuXHRcdFx0XHRjb3B5LmZpZWxkc1trZXldID0gdmFsdWUudmFsdWU7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0T2JqZWN0LnZhbHVlcyhjb3B5LnN1Ymxpc3RzKS5mb3JFYWNoKChzdWJsaXN0KSA9PiB7XG5cdFx0XHRzdWJsaXN0LmxpbmVzLmZvckVhY2goKGxpbmUpID0+IHtcblx0XHRcdFx0T2JqZWN0LmVudHJpZXMobGluZSkuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG5cdFx0XHRcdFx0aWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJiB2YWx1ZSAhPT0gbnVsbCAmJiAhKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkgJiYgIShcInRleHRcIiBpbiB2YWx1ZSkpIHtcblx0XHRcdFx0XHRcdGxpbmVba2V5XSA9IHZhbHVlLnZhbHVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblx0XHR9KTtcblx0XHRpZiAoIXRoaXMuaWQpIHtcblx0XHRcdHRoaXMuaWQgPSBjb3B5LmlkID0gTWF0aC5tYXgoLi4uQXJyYXkuZnJvbShTdWl0ZVNjcmlwdE1vY2tzLnJlY29yZHMudmFsdWVzKCkpLm1hcCgoYSkgPT4gYS5pZCkpICsgMTtcblx0XHRcdFN1aXRlU2NyaXB0TW9ja3MuY3JlYXRlZFJlY29yZHMucHVzaChjb3B5KTtcblx0XHR9XG5cdFx0U3VpdGVTY3JpcHRNb2Nrcy5yZWNvcmRzLnNldChjb3B5KTtcblx0XHRTdWl0ZVNjcmlwdE1vY2tzLnNhdmVkUmVjb3Jkcy5wdXNoKGNvcHkpO1xuXHRcdHJldHVybiB0aGlzLmlkO1xuXHR9O1xuXG5cdC8vIFRPRE86IGVkZ2UgY2FzZSB3aGVyZSBpZiBmaXJzdCBsaW5lIHNlbGVjdCB5b3UgZG8gaXMgbiArIDEgaXQgd2lsbCBnaXZlIGEgbmV3IGxpbmVcblx0QGR5bmFtaWNNb2RlT25seSgpXG5cdEBvcHRpb25zKFwic3VibGlzdElkXCIsIFwibGluZVwiKVxuXHRAcmVxdWlyZWQoXCJzdWJsaXN0SWRcIiwgXCJsaW5lXCIpXG5cdHNlbGVjdExpbmUgPSAob3B0aW9ucykgPT4ge1xuXHRcdGNvbnN0IHN1Ymxpc3QgPSB0aGlzLnN1Ymxpc3RzW29wdGlvbnMuc3VibGlzdElkXTtcblx0XHRpZiAoc3VibGlzdCA9PT0gdW5kZWZpbmVkIHx8ICEob3B0aW9ucy5saW5lIGluIHN1Ymxpc3QubGluZXMpKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJzdWJsaXN0IG9yIGxpbmUgZG9lcyBub3QgZXhpc3RcIik7XG5cdFx0fVxuXHRcdHN1Ymxpc3QuY3VycmVudGxpbmUgPSB7IC4uLnN1Ymxpc3QubGluZXNbb3B0aW9ucy5saW5lXSB9O1xuXHR9O1xuXG5cdEBkeW5hbWljTW9kZU9ubHkoKVxuXHRAb3B0aW9ucyhcInN1Ymxpc3RJZFwiKVxuXHRAcmVxdWlyZWQoXCJzdWJsaXN0SWRcIilcblx0c2VsZWN0TmV3TGluZSA9IChvcHRpb25zKSA9PiB7XG5cdFx0Y29uc3Qgc3VibGlzdCA9IHRoaXMuc3VibGlzdHNbb3B0aW9ucy5zdWJsaXN0SWRdO1xuXHRcdGlmIChzdWJsaXN0ID09PSB1bmRlZmluZWQpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcInN1Ymxpc3QgZG9lcyBub3QgZXhpc3RcIik7XG5cdFx0fVxuXHRcdHN1Ymxpc3QuY3VycmVudGxpbmUgPSB7XG5cdFx0XHRfaWQ6IHJhbmRvbVVVSUQoKSxcblx0XHR9O1xuXHR9O1xuXG5cdHNldEN1cnJlbnRNYXRyaXhTdWJsaXN0VmFsdWUgPSAob3B0aW9ucykgPT4ge307XG5cblx0QGR5bmFtaWNNb2RlT25seSgpXG5cdEBvcHRpb25zKFwic3VibGlzdElkXCIsIFwiZmllbGRJZFwiLCBcInRleHRcIilcblx0QHJlcXVpcmVkKFwic3VibGlzdElkXCIsIFwiZmllbGRJZFwiLCBcInRleHRcIilcblx0c2V0Q3VycmVudFN1Ymxpc3RUZXh0ID0gKG9wdGlvbnMpID0+IHtcblx0XHRjb25zdCBzdWJsaXN0ID0gdGhpcz8uc3VibGlzdHM/LltvcHRpb25zLnN1Ymxpc3RJZF07XG5cdFx0aWYgKHN1Ymxpc3QgPT09IHVuZGVmaW5lZCB8fCAhKFwiY3VycmVudGxpbmVcIiBpbiBzdWJsaXN0KSkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFwic3VibGlzdCBkb2Vzbid0IGV4aXN0IG9yIGxpbmUgaXMgbm90IHNlbGVjdGVkXCIpO1xuXHRcdH1cblx0XHRyZXR1cm4gKHN1Ymxpc3QuY3VycmVudGxpbmVbb3B0aW9ucy5maWVsZElkXSA9IHsgdmFsdWU6IG9wdGlvbnMudGV4dCwgdGV4dDogb3B0aW9ucy50ZXh0IH0pO1xuXHR9O1xuXG5cdEBkeW5hbWljTW9kZU9ubHkoKVxuXHRAb3B0aW9ucyhcInN1Ymxpc3RJZFwiLCBcImZpZWxkSWRcIiwgXCJ2YWx1ZVwiKVxuXHRAcmVxdWlyZWQoXCJzdWJsaXN0SWRcIiwgXCJmaWVsZElkXCIsIFwidmFsdWVcIilcblx0c2V0Q3VycmVudFN1Ymxpc3RWYWx1ZSA9IChvcHRpb25zKSA9PiB7XG5cdFx0Y29uc3Qgc3VibGlzdCA9IHRoaXM/LnN1Ymxpc3RzPy5bb3B0aW9ucy5zdWJsaXN0SWRdO1xuXHRcdGlmIChzdWJsaXN0ID09PSB1bmRlZmluZWQgfHwgIShcImN1cnJlbnRsaW5lXCIgaW4gc3VibGlzdCkpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcInN1Ymxpc3QgZG9lc24ndCBleGlzdCBvciBsaW5lIGlzIG5vdCBzZWxlY3RlZFwiKTtcblx0XHR9XG5cdFx0cmV0dXJuIChzdWJsaXN0LmN1cnJlbnRsaW5lW29wdGlvbnMuZmllbGRJZF0gPSB7IHZhbHVlOiBvcHRpb25zLnZhbHVlIH0pO1xuXHR9O1xuXG5cdHNldE1hdHJpeEhlYWRlclZhbHVlID0gKG9wdGlvbnMpID0+IHt9O1xuXG5cdHNldE1hdHJpeFN1Ymxpc3RWYWx1ZSA9IChvcHRpb25zKSA9PiB7fTtcblxuXHRAc3RhbmRhcmRNb2RlT25seSgpXG5cdEBvcHRpb25zKFwic3VibGlzdElkXCIsIFwiZmllbGRJZFwiLCBcImxpbmVcIiwgXCJ0ZXh0XCIpXG5cdEByZXF1aXJlZChcInN1Ymxpc3RJZFwiLCBcImZpZWxkSWRcIiwgXCJsaW5lXCIsIFwidGV4dFwiKVxuXHRzZXRTdWJsaXN0VGV4dCA9IChvcHRpb25zKSA9PiB7XG5cdFx0Y29uc3Qgc3VibGlzdCA9IHRoaXM/LnN1Ymxpc3RzPy5bb3B0aW9ucy5zdWJsaXN0SWRdO1xuXHRcdGlmIChzdWJsaXN0ID09PSB1bmRlZmluZWQgfHwgIShvcHRpb25zLmxpbmUgaW4gc3VibGlzdC5saW5lcykpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcInN1Ymxpc3Qgb3IgbGluZSBkb2Vzbid0IGV4aXN0XCIpO1xuXHRcdH1cblx0XHRzdWJsaXN0LmxpbmVzW29wdGlvbnMubGluZV1bb3B0aW9ucy5maWVsZElkXSA9IHsgdmFsdWU6IG9wdGlvbnMudGV4dCwgdGV4dDogb3B0aW9ucy50ZXh0IH07XG5cdH07XG5cblx0QHN0YW5kYXJkTW9kZU9ubHkoKVxuXHRAb3B0aW9ucyhcInN1Ymxpc3RJZFwiLCBcImZpZWxkSWRcIiwgXCJsaW5lXCIsIFwidmFsdWVcIilcblx0QHJlcXVpcmVkKFwic3VibGlzdElkXCIsIFwiZmllbGRJZFwiLCBcImxpbmVcIiwgXCJ2YWx1ZVwiKVxuXHRzZXRTdWJsaXN0VmFsdWUgPSAob3B0aW9ucykgPT4ge1xuXHRcdGNvbnN0IHN1Ymxpc3QgPSB0aGlzPy5zdWJsaXN0cz8uW29wdGlvbnMuc3VibGlzdElkXTtcblx0XHRpZiAoc3VibGlzdCA9PT0gdW5kZWZpbmVkIHx8ICEob3B0aW9ucy5saW5lIGluIHN1Ymxpc3QubGluZXMpKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJzdWJsaXN0IG9yIGxpbmUgZG9lc24ndCBleGlzdFwiKTtcblx0XHR9XG5cdFx0c3VibGlzdC5saW5lc1tvcHRpb25zLmxpbmVdW29wdGlvbnMuZmllbGRJZF0gPSB7IHZhbHVlOiBvcHRpb25zLnZhbHVlIH07XG5cdH07XG5cblx0QG9wdGlvbnMoXCJmaWVsZElkXCIsIFwidGV4dFwiLCBcImlnbm9yZUZpZWxkQ2hhbmdlXCIpXG5cdEByZXF1aXJlZChcImZpZWxkSWRcIiwgXCJ0ZXh0XCIpXG5cdHNldFRleHQgPSAob3B0aW9ucykgPT4ge1xuXHRcdHRoaXMuZmllbGRzW29wdGlvbnMuZmllbGRJZF0gPSB7IHZhbHVlOiBvcHRpb25zLnRleHQsIHRleHQ6IG9wdGlvbnMudGV4dCB9O1xuXHRcdHJldHVybiB0aGlzO1xuXHR9O1xuXG5cdEBvcHRpb25zKFwiZmllbGRJZFwiLCBcInZhbHVlXCIsIFwiaWdub3JlRmllbGRDaGFuZ2VcIilcblx0QHJlcXVpcmVkKFwiZmllbGRJZFwiLCBcInZhbHVlXCIpXG5cdHNldFZhbHVlID0gKG9wdGlvbnMpID0+IHtcblx0XHR0aGlzLmZpZWxkc1tvcHRpb25zLmZpZWxkSWRdID0geyB2YWx1ZTogb3B0aW9ucy52YWx1ZSB9O1xuXHRcdHJldHVybiB0aGlzO1xuXHR9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFJlY29yZDtcbiJdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsTUFBTUEsT0FBTyxHQUFHQyxPQUFPLENBQUMsVUFBVSxDQUFDO0FBQ25DLE1BQU1DLGVBQWUsR0FBR0QsT0FBTyxDQUFDLHNDQUFzQyxDQUFDO0FBQ3ZFLE1BQU07RUFBRUU7QUFBVyxDQUFDLEdBQUdGLE9BQU8sQ0FBQyxhQUFhLENBQUM7QUFDN0MsTUFBTUcsZ0JBQWdCLEdBQUdILE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQztBQUNuRCxNQUFNO0VBQ0xJLE9BQU87RUFDUEMsUUFBUTtFQUNSQyxVQUFVO0VBQ1ZDLGVBQWU7RUFDZkMsZ0JBQWdCO0VBQ2hCQztBQUNELENBQUMsR0FBR1QsT0FBTyxDQUFDLG1CQUFtQixDQUFDO0FBQUMsSUFBQVUsT0FBQTtBQUFBQyxJQUFBLEdBRWhDRixpQkFBaUIsQ0FBQyxDQUFDO0FBQUFHLEtBQUEsR0F5QmxCTCxlQUFlLENBQUMsQ0FBQztBQUFBTSxLQUFBLEdBQ2pCVCxPQUFPLENBQUMsV0FBVyxDQUFDO0FBQUFVLEtBQUEsR0FDcEJULFFBQVEsQ0FBQyxXQUFXLENBQUM7QUFBQVUsS0FBQSxHQUtyQlIsZUFBZSxDQUFDLENBQUM7QUFBQVMsS0FBQSxHQUNqQlosT0FBTyxDQUFDLFdBQVcsRUFBRSxjQUFjLENBQUM7QUFBQWEsS0FBQSxHQUNwQ1osUUFBUSxDQUFDLFdBQVcsQ0FBQztBQUFBYSxLQUFBLEdBZXJCWixVQUFVLENBQUMsQ0FBQztBQUFBYSxLQUFBLEdBZVpaLGVBQWUsQ0FBQyxDQUFDO0FBQUFhLE1BQUEsR0FDakJoQixPQUFPLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQztB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 \ No newline at end of file diff --git a/lib/mocks/record/index.cjs b/lib/mocks/record/index.cjs index 931f8ec..06974eb 100644 --- a/lib/mocks/record/index.cjs +++ b/lib/mocks/record/index.cjs @@ -55,11 +55,11 @@ class RecordModule { }); detach = _init_detach(this, options => {}); load = _init_load(this, options => { - let record = SuiteScriptMocks.records.get(options); + const record = SuiteScriptMocks.records.get(options); if (!record) { throw new Error("Record does not exist"); } - record = new Record({ + return new Record({ ...record, isDynamic: Boolean(options.isDynamic) || false, fields: { @@ -67,7 +67,6 @@ class RecordModule { ...(options.defaultValues || {}) } }); - return record; }); submitFields = _init_submitFields(this, options => { const record = SuiteScriptMocks.records.get(options); @@ -85,4 +84,4 @@ class RecordModule { }); } module.exports = new RecordModule(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZWNvcmRTdHViIiwicmVxdWlyZSIsIlN1aXRlU2NyaXB0TW9ja3MiLCJhZGRQcm9taXNlIiwib3B0aW9ucyIsIlJlY29yZCIsIl9kZWMiLCJfZGVjMiIsIl9kZWMzIiwiX2RlYzQiLCJfZGVjNSIsIl9kZWM2IiwiX2RlYzciLCJfZGVjOCIsIl9kZWM5IiwiX2RlYzEwIiwiX2RlYzExIiwiX2RlYzEyIiwiX2RlYzEzIiwiX2RlYzE0IiwiX2RlYzE1IiwiX2RlYzE2IiwiUmVjb3JkTW9kdWxlIiwiX2luaXRfYXR0YWNoIiwiX2luaXRfY29weSIsIl9pbml0X2NyZWF0ZSIsIl9pbml0X2RlbGV0ZSIsIl9pbml0X2RldGFjaCIsIl9pbml0X2xvYWQiLCJfaW5pdF9zdWJtaXRGaWVsZHMiLCJfaW5pdF90cmFuc2Zvcm0iLCJfYXBwbHlEZWNzMjIwM1IiLCJlIiwiVHlwZSIsImF0dGFjaCIsImNvcHkiLCJyZWNvcmQiLCJsb2FkIiwiaWQiLCJjcmVhdGUiLCJ0eXBlIiwiaXNEeW5hbWljIiwiZmllbGRzIiwiZGVmYXVsdFZhbHVlcyIsImRlbGV0ZSIsInJlYyIsInJlY29yZHMiLCJnZXQiLCJFcnJvciIsImRlbGV0ZWRSZWNvcmRzIiwicHVzaCIsImRldGFjaCIsIkJvb2xlYW4iLCJzdWJtaXRGaWVsZHMiLCJ2YWx1ZXMiLCJ0cmFuc2Zvcm0iLCJmcm9tVHlwZSIsImZyb21JZCIsInRvVHlwZSIsIm1vZHVsZSIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9ja3MvcmVjb3JkL2luZGV4LmNqcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCByZWNvcmRTdHViID0gcmVxdWlyZShcInN1aXRlY2xvdWQtdW5pdC10ZXN0aW5nLXN0dWJzL3N0dWJzL3JlY29yZFwiKTtcbmNvbnN0IFN1aXRlU2NyaXB0TW9ja3MgPSByZXF1aXJlKFwiLi4vLi4vaW5kZXguY2pzXCIpO1xuY29uc3QgeyBhZGRQcm9taXNlLCBvcHRpb25zIH0gPSByZXF1aXJlKFwiLi4vLi4vaGVscGVycy5janNcIik7XG5jb25zdCBSZWNvcmQgPSByZXF1aXJlKFwiLi9SZWNvcmQuY2pzXCIpO1xuXG5jbGFzcyBSZWNvcmRNb2R1bGUge1xuXHRSZWNvcmQgPSBSZWNvcmQ7XG5cblx0VHlwZSA9IHJlY29yZFN0dWIuVHlwZTtcblxuXHRAYWRkUHJvbWlzZSgpXG5cdEBvcHRpb25zKFwicmVjb3JkXCIsIFwidG9cIiwgXCJhdHRyaWJ1dGVzXCIpXG5cdGF0dGFjaCA9IChvcHRpb25zKSA9PiB7fTtcblxuXHRAYWRkUHJvbWlzZSgpXG5cdEBvcHRpb25zKFwidHlwZVwiLCBcImlkXCIsIFwiaXNEeW5hbWljXCIsIFwiZGVmYXVsdFZhbHVlc1wiKVxuXHRjb3B5ID0gKG9wdGlvbnMpID0+IHtcblx0XHRjb25zdCByZWNvcmQgPSB0aGlzLmxvYWQob3B0aW9ucyk7XG5cdFx0cmVjb3JkLmlkID0gbnVsbDtcblx0XHRyZXR1cm4gcmVjb3JkO1xuXHR9O1xuXG5cdEBhZGRQcm9taXNlKClcblx0QG9wdGlvbnMoXCJ0eXBlXCIsIFwiaXNEeW5hbWljXCIsIFwiZGVmYXVsdFZhbHVlc1wiKVxuXHRjcmVhdGUgPSAob3B0aW9ucykgPT4ge1xuXHRcdHJldHVybiBuZXcgUmVjb3JkKHtcblx0XHRcdGlkOiBudWxsLFxuXHRcdFx0dHlwZTogb3B0aW9ucy50eXBlLFxuXHRcdFx0aXNEeW5hbWljOiBvcHRpb25zPy5pc0R5bmFtaWMsXG5cdFx0XHRmaWVsZHM6IG9wdGlvbnM/LmRlZmF1bHRWYWx1ZXMgfHwge30sXG5cdFx0fSk7XG5cdH07XG5cblx0QGFkZFByb21pc2UoKVxuXHRAb3B0aW9ucyhcInR5cGVcIiwgXCJpZFwiKVxuXHRkZWxldGUgPSAob3B0aW9ucykgPT4ge1xuXHRcdGNvbnN0IHJlYyA9IFN1aXRlU2NyaXB0TW9ja3MucmVjb3Jkcy5nZXQob3B0aW9ucyk7XG5cdFx0aWYgKCFyZWMpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcIlJlY29yZCBkb2VzIG5vdCBleGlzdFwiKTtcblx0XHR9XG5cdFx0U3VpdGVTY3JpcHRNb2Nrcy5kZWxldGVkUmVjb3Jkcy5wdXNoKHJlYyk7XG5cdFx0U3VpdGVTY3JpcHRNb2Nrcy5yZWNvcmRzLmRlbGV0ZShyZWMpO1xuXHRcdHJldHVybiByZWMuaWQ7XG5cdH07XG5cblx0QGFkZFByb21pc2UoKVxuXHRAb3B0aW9ucyhcInJlY29yZFwiLCBcImZyb21cIiwgXCJhdHRyaWJ1dGVzXCIpXG5cdGRldGFjaCA9IChvcHRpb25zKSA9PiB7fTtcblxuXHRAYWRkUHJvbWlzZSgpXG5cdEBvcHRpb25zKFwidHlwZVwiLCBcImlkXCIsIFwiaXNEeW5hbWljXCIsIFwiZGVmYXVsdFZhbHVlc1wiKVxuXHRsb2FkID0gKG9wdGlvbnMpID0+IHtcblx0XHRsZXQgcmVjb3JkID0gU3VpdGVTY3JpcHRNb2Nrcy5yZWNvcmRzLmdldChvcHRpb25zKTtcblx0XHRpZiAoIXJlY29yZCkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiUmVjb3JkIGRvZXMgbm90IGV4aXN0XCIpO1xuXHRcdH1cblx0XHRyZWNvcmQgPSBuZXcgUmVjb3JkKHtcblx0XHRcdC4uLnJlY29yZCxcblx0XHRcdGlzRHluYW1pYzogQm9vbGVhbihvcHRpb25zLmlzRHluYW1pYykgfHwgZmFsc2UsXG5cdFx0XHRmaWVsZHM6IHtcblx0XHRcdFx0Li4ucmVjb3JkLmZpZWxkcyxcblx0XHRcdFx0Li4uKG9wdGlvbnMuZGVmYXVsdFZhbHVlcyB8fCB7fSksXG5cdFx0XHR9LFxuXHRcdH0pO1xuXHRcdHJldHVybiByZWNvcmQ7XG5cdH07XG5cblx0QGFkZFByb21pc2UoKVxuXHRAb3B0aW9ucyhcInR5cGVcIiwgXCJpZFwiLCBcInZhbHVlc1wiLCBcIm9wdGlvbnNcIilcblx0c3VibWl0RmllbGRzID0gKG9wdGlvbnMpID0+IHtcblx0XHRjb25zdCByZWNvcmQgPSBTdWl0ZVNjcmlwdE1vY2tzLnJlY29yZHMuZ2V0KG9wdGlvbnMpO1xuXHRcdHJlY29yZC5maWVsZHMgPSB7XG5cdFx0XHQuLi5yZWNvcmQuZmllbGRzLFxuXHRcdFx0Li4ub3B0aW9ucy52YWx1ZXMsXG5cdFx0fTtcblx0XHRyZXR1cm4gcmVjb3JkLmlkO1xuXHR9O1xuXG5cdEBhZGRQcm9taXNlKClcblx0QG9wdGlvbnMoXCJmcm9tVHlwZVwiLCBcImZyb21JZFwiLCBcInRvVHlwZVwiLCBcImlzRHluYW1pY1wiLCBcImRlZmF1bHRWYWx1ZXNcIilcblx0dHJhbnNmb3JtID0gKG9wdGlvbnMpID0+IHtcblx0XHRjb25zdCByZWNvcmQgPSB0aGlzLmxvYWQob3B0aW9ucy5mcm9tVHlwZSwgb3B0aW9ucy5mcm9tSWQsIG9wdGlvbnMuaXNEeW5hbWljLCBvcHRpb25zLmRlZmF1bHRWYWx1ZXMpO1xuXHRcdHJlY29yZC50eXBlID0gb3B0aW9ucy50b1R5cGU7XG5cdFx0cmVjb3JkLmlkID0gbnVsbDtcblx0XHRyZXR1cm4gcmVjb3JkO1xuXHR9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG5ldyBSZWNvcmRNb2R1bGUoKTtcbiJdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsTUFBTUEsVUFBVSxHQUFHQyxPQUFPLENBQUMsNENBQTRDLENBQUM7QUFDeEUsTUFBTUMsZ0JBQWdCLEdBQUdELE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQztBQUNuRCxNQUFNO0VBQUVFLFVBQVU7RUFBRUM7QUFBUSxDQUFDLEdBQUdILE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQztBQUM1RCxNQUFNSSxNQUFNLEdBQUdKLE9BQU8sQ0FBQyxjQUFjLENBQUM7QUFBQ0ssSUFBQSxHQU9yQ0gsVUFBVSxDQUFDLENBQUM7QUFBQUksS0FBQSxHQUNaSCxPQUFPLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxZQUFZLENBQUM7QUFBQUksS0FBQSxHQUdyQ0wsVUFBVSxDQUFDLENBQUM7QUFBQU0sS0FBQSxHQUNaTCxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsZUFBZSxDQUFDO0FBQUFNLEtBQUEsR0FPbkRQLFVBQVUsQ0FBQyxDQUFDO0FBQUFRLEtBQUEsR0FDWlAs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 \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZWNvcmRTdHViIiwicmVxdWlyZSIsIlN1aXRlU2NyaXB0TW9ja3MiLCJhZGRQcm9taXNlIiwib3B0aW9ucyIsIlJlY29yZCIsIl9kZWMiLCJfZGVjMiIsIl9kZWMzIiwiX2RlYzQiLCJfZGVjNSIsIl9kZWM2IiwiX2RlYzciLCJfZGVjOCIsIl9kZWM5IiwiX2RlYzEwIiwiX2RlYzExIiwiX2RlYzEyIiwiX2RlYzEzIiwiX2RlYzE0IiwiX2RlYzE1IiwiX2RlYzE2IiwiUmVjb3JkTW9kdWxlIiwiX2luaXRfYXR0YWNoIiwiX2luaXRfY29weSIsIl9pbml0X2NyZWF0ZSIsIl9pbml0X2RlbGV0ZSIsIl9pbml0X2RldGFjaCIsIl9pbml0X2xvYWQiLCJfaW5pdF9zdWJtaXRGaWVsZHMiLCJfaW5pdF90cmFuc2Zvcm0iLCJfYXBwbHlEZWNzMjIwM1IiLCJlIiwiVHlwZSIsImF0dGFjaCIsImNvcHkiLCJyZWNvcmQiLCJsb2FkIiwiaWQiLCJjcmVhdGUiLCJ0eXBlIiwiaXNEeW5hbWljIiwiZmllbGRzIiwiZGVmYXVsdFZhbHVlcyIsImRlbGV0ZSIsInJlYyIsInJlY29yZHMiLCJnZXQiLCJFcnJvciIsImRlbGV0ZWRSZWNvcmRzIiwicHVzaCIsImRldGFjaCIsIkJvb2xlYW4iLCJzdWJtaXRGaWVsZHMiLCJ2YWx1ZXMiLCJ0cmFuc2Zvcm0iLCJmcm9tVHlwZSIsImZyb21JZCIsInRvVHlwZSIsIm1vZHVsZSIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9ja3MvcmVjb3JkL2luZGV4LmNqcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCByZWNvcmRTdHViID0gcmVxdWlyZShcInN1aXRlY2xvdWQtdW5pdC10ZXN0aW5nLXN0dWJzL3N0dWJzL3JlY29yZFwiKTtcbmNvbnN0IFN1aXRlU2NyaXB0TW9ja3MgPSByZXF1aXJlKFwiLi4vLi4vaW5kZXguY2pzXCIpO1xuY29uc3QgeyBhZGRQcm9taXNlLCBvcHRpb25zIH0gPSByZXF1aXJlKFwiLi4vLi4vaGVscGVycy5janNcIik7XG5jb25zdCBSZWNvcmQgPSByZXF1aXJlKFwiLi9SZWNvcmQuY2pzXCIpO1xuXG5jbGFzcyBSZWNvcmRNb2R1bGUge1xuXHRSZWNvcmQgPSBSZWNvcmQ7XG5cblx0VHlwZSA9IHJlY29yZFN0dWIuVHlwZTtcblxuXHRAYWRkUHJvbWlzZSgpXG5cdEBvcHRpb25zKFwicmVjb3JkXCIsIFwidG9cIiwgXCJhdHRyaWJ1dGVzXCIpXG5cdGF0dGFjaCA9IChvcHRpb25zKSA9PiB7fTtcblxuXHRAYWRkUHJvbWlzZSgpXG5cdEBvcHRpb25zKFwidHlwZVwiLCBcImlkXCIsIFwiaXNEeW5hbWljXCIsIFwiZGVmYXVsdFZhbHVlc1wiKVxuXHRjb3B5ID0gKG9wdGlvbnMpID0+IHtcblx0XHRjb25zdCByZWNvcmQgPSB0aGlzLmxvYWQob3B0aW9ucyk7XG5cdFx0cmVjb3JkLmlkID0gbnVsbDtcblx0XHRyZXR1cm4gcmVjb3JkO1xuXHR9O1xuXG5cdEBhZGRQcm9taXNlKClcblx0QG9wdGlvbnMoXCJ0eXBlXCIsIFwiaXNEeW5hbWljXCIsIFwiZGVmYXVsdFZhbHVlc1wiKVxuXHRjcmVhdGUgPSAob3B0aW9ucykgPT4ge1xuXHRcdHJldHVybiBuZXcgUmVjb3JkKHtcblx0XHRcdGlkOiBudWxsLFxuXHRcdFx0dHlwZTogb3B0aW9ucy50eXBlLFxuXHRcdFx0aXNEeW5hbWljOiBvcHRpb25zPy5pc0R5bmFtaWMsXG5cdFx0XHRmaWVsZHM6IG9wdGlvbnM/LmRlZmF1bHRWYWx1ZXMgfHwge30sXG5cdFx0fSk7XG5cdH07XG5cblx0QGFkZFByb21pc2UoKVxuXHRAb3B0aW9ucyhcInR5cGVcIiwgXCJpZFwiKVxuXHRkZWxldGUgPSAob3B0aW9ucykgPT4ge1xuXHRcdGNvbnN0IHJlYyA9IFN1aXRlU2NyaXB0TW9ja3MucmVjb3Jkcy5nZXQob3B0aW9ucyk7XG5cdFx0aWYgKCFyZWMpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcIlJlY29yZCBkb2VzIG5vdCBleGlzdFwiKTtcblx0XHR9XG5cdFx0U3VpdGVTY3JpcHRNb2Nrcy5kZWxldGVkUmVjb3Jkcy5wdXNoKHJlYyk7XG5cdFx0U3VpdGVTY3JpcHRNb2Nrcy5yZWNvcmRzLmRlbGV0ZShyZWMpO1xuXHRcdHJldHVybiByZWMuaWQ7XG5cdH07XG5cblx0QGFkZFByb21pc2UoKVxuXHRAb3B0aW9ucyhcInJlY29yZFwiLCBcImZyb21cIiwgXCJhdHRyaWJ1dGVzXCIpXG5cdGRldGFjaCA9IChvcHRpb25zKSA9PiB7fTtcblxuXHRAYWRkUHJvbWlzZSgpXG5cdEBvcHRpb25zKFwidHlwZVwiLCBcImlkXCIsIFwiaXNEeW5hbWljXCIsIFwiZGVmYXVsdFZhbHVlc1wiKVxuXHRsb2FkID0gKG9wdGlvbnMpID0+IHtcblx0XHRjb25zdCByZWNvcmQgPSBTdWl0ZVNjcmlwdE1vY2tzLnJlY29yZHMuZ2V0KG9wdGlvbnMpO1xuXHRcdGlmICghcmVjb3JkKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJSZWNvcmQgZG9lcyBub3QgZXhpc3RcIik7XG5cdFx0fVxuXHRcdHJldHVybiBuZXcgUmVjb3JkKHtcblx0XHRcdC4uLnJlY29yZCxcblx0XHRcdGlzRHluYW1pYzogQm9vbGVhbihvcHRpb25zLmlzRHluYW1pYykgfHwgZmFsc2UsXG5cdFx0XHRmaWVsZHM6IHtcblx0XHRcdFx0Li4ucmVjb3JkLmZpZWxkcyxcblx0XHRcdFx0Li4uKG9wdGlvbnMuZGVmYXVsdFZhbHVlcyB8fCB7fSksXG5cdFx0XHR9LFxuXHRcdH0pO1xuXHR9O1xuXG5cdEBhZGRQcm9taXNlKClcblx0QG9wdGlvbnMoXCJ0eXBlXCIsIFwiaWRcIiwgXCJ2YWx1ZXNcIiwgXCJvcHRpb25zXCIpXG5cdHN1Ym1pdEZpZWxkcyA9IChvcHRpb25zKSA9PiB7XG5cdFx0Y29uc3QgcmVjb3JkID0gU3VpdGVTY3JpcHRNb2Nrcy5yZWNvcmRzLmdldChvcHRpb25zKTtcblx0XHRyZWNvcmQuZmllbGRzID0ge1xuXHRcdFx0Li4ucmVjb3JkLmZpZWxkcyxcblx0XHRcdC4uLm9wdGlvbnMudmFsdWVzLFxuXHRcdH07XG5cdFx0cmV0dXJuIHJlY29yZC5pZDtcblx0fTtcblxuXHRAYWRkUHJvbWlzZSgpXG5cdEBvcHRpb25zKFwiZnJvbVR5cGVcIiwgXCJmcm9tSWRcIiwgXCJ0b1R5cGVcIiwgXCJpc0R5bmFtaWNcIiwgXCJkZWZhdWx0VmFsdWVzXCIpXG5cdHRyYW5zZm9ybSA9IChvcHRpb25zKSA9PiB7XG5cdFx0Y29uc3QgcmVjb3JkID0gdGhpcy5sb2FkKG9wdGlvbnMuZnJvbVR5cGUsIG9wdGlvbnMuZnJvbUlkLCBvcHRpb25zLmlzRHluYW1pYywgb3B0aW9ucy5kZWZhdWx0VmFsdWVzKTtcblx0XHRyZWNvcmQudHlwZSA9IG9wdGlvbnMudG9UeXBlO1xuXHRcdHJlY29yZC5pZCA9IG51bGw7XG5cdFx0cmV0dXJuIHJlY29yZDtcblx0fTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgUmVjb3JkTW9kdWxlKCk7XG4iXSwibWFwcGluZ3MiOiI7OztBQUFBLE1BQU1BLFVBQVUsR0FBR0MsT0FBTyxDQUFDLDRDQUE0QyxDQUFDO0FBQ3hFLE1BQU1DLGdCQUFnQixHQUFHRCxPQUFPLENBQUMsaUJBQWlCLENBQUM7QUFDbkQsTUFBTTtFQUFFRSxVQUFVO0VBQUVDO0FBQVEsQ0FBQyxHQUFHSCxPQUFPLENBQUMsbUJBQW1CLENBQUM7QUFDNUQsTUFBTUksTUFBTSxHQUFHSixPQUFPLENBQUMsY0FBYyxDQUFDO0FBQUNLLElBQUEsR0FPckNILFVBQVUsQ0FBQyxDQUFDO0FBQUFJLEtBQUEsR0FDWkgsT0FBTyxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsWUFBWSxDQUFDO0FBQUFJLEtBQUEsR0FHckNMLFVBQVUsQ0FBQyxDQUFDO0FBQUFNLEtBQUEsR0FDWkwsT0FBTyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLGVBQWUsQ0FBQztBQUFBTSxLQUFBLEdBT25EUCxVQUFVLENBQUMsQ0FBQztBQUFBUSxLQUFBLEdBQ1pQLE9BQU8sQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLGVBQWUsQ0FBQztBQUFBUSxLQUFBLEdBVTdDVCxVQUFVLENBQUMsQ0FBQztBQUFBVSxLQUFBLEdBQ1pULE9BQU8sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDO0FBQUFVLEtBQUEsR0FXckJYLFVBQVUsQ0FBQyxDQUFDO0FBQUFZLE1BQUEsR0FDWlgsT0FBTyxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsWUFBWSxDQUFDO0FBQUFZLE1BQUEsR0FHdkNiLFVBQVUsQ0FBQyxDQUFDO0FBQUFjLE1BQUEsR0FDWmIsT0FBTyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLGVBQWUsQ0FBQztBQUFBYyxNQUFBLEdBZ0JuRGYsVUFBVSxDQUFDLENBQUM7QUFBQWdCLE1BQUEsR0FDWmYsT0FBTyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQztBQUFBZ0IsTUFBQSxHQVUxQ2pCLFVBQVUsQ0FBQyxDQUFDO0FBQUFrQixNQUFBLEdBQ1pqQixPQUFPLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLGVBQWUsQ0FBQztBQXpFdkUsTUFBTWtCLFlBQVksQ0FBQztFQUFBO0lBQUEsQ0FBQUMsWUFBQSxFQUFBQyxVQUFBLEVBQUFDLFlBQUEsRUFBQUMsWUFBQSxFQUFBQyxZQUFBLEVBQUFDLFVBQUEsRUFBQUMsa0JBQUEsRUFBQUMsZUFBQSxJQUFBQyxlQUFBLFVBQUF6QixJQUFBLEVBQUFDLEtBQUEsbUJBQUFDLEtBQUEsRUFBQUMsS0FBQSxpQkFBQUMsS0FBQSxFQUFBQyxLQUFBLG1CQUFBQyxLQUFBLEVBQUFDLEtBQUEsbUJBQUFDLEtBQUEsRUFBQUMsTUFBQSxtQkFBQUMsTUFBQSxFQUFBQyxNQUFBLGlCQUFBQyxNQUFBLEVBQUFDLE1BQUEseUJBQUFDLE1BQUEsRUFBQUMsTUFBQSx5QkFBQVcsQ0FBQTtFQUFBO0VBQ2xCM0IsTUFBTSxHQUFHQSxNQUFNO0VBRWY0QixJQUFJLEdBQUdqQyxVQUFVLENBQUNpQyxJQUFJO0VBSXRCQyxNQUFNLEdBQUFYLFlBQUEsT0FBSW5CLE9BQU8sSUFBSyxDQUFDLENBQUM7RUFJeEIrQixJQUFJLEdBQUFYLFVBQUEsT0FBSXBCLE9BQU8sSUFBSztJQUNuQixNQUFNZ0MsTUFBTSxHQUFHLElBQUksQ0FBQ0MsSUFBSSxDQUFDakMsT0FBTyxDQUFDO0lBQ2pDZ0MsTUFBTSxDQUFDRSxFQUFFLEdBQUcsSUFBSTtJQUNoQixPQUFPRixNQUFNO0VBQ2QsQ0FBQztFQUlERyxNQUFNLEdBQUFkLFlBQUEsT0FBSXJCLE9BQU8sSUFBSztJQUNyQixPQUFPLElBQUlDLE1BQU0sQ0FBQztNQUNqQmlDLEVBQUUsRUFBRSxJQUFJO01BQ1JFLElBQUksRUFBRXBDLE9BQU8sQ0FBQ29DLElBQUk7TUFDbEJDLFNBQVMsRUFBRXJDLE9BQU8sRUFBRXFDLFNBQVM7TUFDN0JDLE1BQU0sRUFBRXRDLE9BQU8sRUFBRXVDLGFBQWEsSUFBSSxDQUFDO0lBQ3BDLENBQUMsQ0FBQztFQUNILENBQUM7RUFJREMsTUFBTSxHQUFBbEIsWUFBQSxPQUFJdEIsT0FBTyxJQUFLO0lBQ3JCLE1BQU15QyxHQUFHLEdBQUczQyxnQkFBZ0IsQ0FBQzRDLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDM0MsT0FBTyxDQUFDO0lBQ2pELElBQUksQ0FBQ3lDLEdBQUcsRUFBRTtNQUNULE1BQU0sSUFBSUcsS0FBSyxDQUFDLHVCQUF1QixDQUFDO0lBQ3pDO0lBQ0E5QyxnQkFBZ0IsQ0FBQytDLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDTCxHQUFHLENBQUM7SUFDekMzQyxnQkFBZ0IsQ0FBQzRDLE9BQU8sQ0FBQ0YsTUFBTSxDQUFDQyxHQUFHLENBQUM7SUFDcEMsT0FBT0EsR0FBRyxDQUFDUCxFQUFFO0VBQ2QsQ0FBQztFQUlEYSxNQUFNLEdBQUF4QixZQUFBLE9BQUl2QixPQUFPLElBQUssQ0FBQyxDQUFDO0VBSXhCaUMsSUFBSSxHQUFBVCxVQUFBLE9BQUl4QixPQUFPLElBQUs7SUFDbkIsTUFBTWdDLE1BQU0sR0FBR2xDLGdCQUFnQixDQUFDNEMsT0FBTyxDQUFDQyxHQUFHLENBQUMzQyxPQUFPLENBQUM7SUFDcEQsSUFBSSxDQUFDZ0MsTUFBTSxFQUFFO01BQ1osTUFBTSxJQUFJWSxLQUFLLENBQUMsdUJBQXVCLENBQUM7SUFDekM7SUFDQSxPQUFPLElBQUkzQyxNQUFNLENBQUM7TUFDakIsR0FBRytCLE1BQU07TUFDVEssU0FBUyxFQUFFVyxPQUFPLENBQUNoRCxPQUFPLENBQUNxQyxTQUFTLENBQUMsSUFBSSxLQUFLO01BQzlDQyxNQUFNLEVBQUU7UUFDUCxHQUFHTixNQUFNLENBQUNNLE1BQU07UUFDaEIsSUFBSXRDLE9BQU8sQ0FBQ3VDLGFBQWEsSUFBSSxDQUFDLENBQUM7TUFDaEM7SUFDRCxDQUFDLENBQUM7RUFDSCxDQUFDO0VBSURVLFlBQVksR0FBQXhCLGtCQUFBLE9BQUl6QixPQUFPLElBQUs7SUFDM0IsTUFBTWdDLE1BQU0sR0FBR2xDLGdCQUFnQixDQUFDNEMsT0FBTyxDQUFDQyxHQUFHLENBQUMzQyxPQUFPLENBQUM7SUFDcERnQyxNQUFNLENBQUNNLE1BQU0sR0FBRztNQUNmLEdBQUdOLE1BQU0sQ0FBQ00sTUFBTTtNQUNoQixHQUFHdEMsT0FBTyxDQUFDa0Q7SUFDWixDQUFDO0lBQ0QsT0FBT2xCLE1BQU0sQ0FBQ0UsRUFBRTtFQUNqQixDQUFDO0VBSURpQixTQUFTLEdBQUF6QixlQUFBLE9BQUkxQixPQUFPLElBQUs7SUFDeEIsTUFBTWdDLE1BQU0sR0FBRyxJQUFJLENBQUNDLElBQUksQ0FBQ2pDLE9BQU8sQ0FBQ29ELFFBQVEsRUFBRXBELE9BQU8sQ0FBQ3FELE1BQU0sRUFBRXJELE9BQU8sQ0FBQ3FDLFNBQVMsRUFBRXJDLE9BQU8sQ0FBQ3VDLGFBQWEsQ0FBQztJQUNwR1AsTUFBTSxDQUFDSSxJQUFJLEdBQUdwQyxPQUFPLENBQUNzRCxNQUFNO0lBQzVCdEIsTUFBTSxDQUFDRSxFQUFFLEdBQUcsSUFBSTtJQUNoQixPQUFPRixNQUFNO0VBQ2QsQ0FBQztBQUNGO0FBRUF1QixNQUFNLENBQUNDLE9BQU8sR0FBRyxJQUFJdEMsWUFBWSxDQUFDLENBQUMifQ== \ No newline at end of file diff --git a/lib/mocks/search/Search.cjs b/lib/mocks/search/Search.cjs index 283c8e1..66530a0 100644 --- a/lib/mocks/search/Search.cjs +++ b/lib/mocks/search/Search.cjs @@ -62,7 +62,7 @@ class Search { } } if (!this.searchId) { - this.searchId = Math.max(Array.from(SuiteScriptMocks.searches.values()).map(a => a.searchId)) + 1; + this.searchId = Math.max(...Array.from(SuiteScriptMocks.searches.values()).map(a => a.searchId)) + 1; } if (!this.id) { this.id = `customsearch_${this.searchId}`; @@ -74,4 +74,4 @@ class Search { } } module.exports = _Search; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZXN1bHRTZXQiLCJyZXF1aXJlIiwiUGFnZWREYXRhIiwiU3VpdGVTY3JpcHRNb2NrcyIsIm9wdGlvbnMiLCJhc3NpZ25Db25zdHJ1Y3RvciIsIl9TZWFyY2giLCJfZGVjIiwiX2RlYzIiLCJTZWFyY2giLCJlIiwiX2luaXRfcnVuUGFnZWQiLCJjIiwiX2luaXRDbGFzcyIsIl9hcHBseURlY3MyMjAzUiIsImlkIiwic2VhcmNoSWQiLCJzZWFyY2hUeXBlIiwidGl0bGUiLCJjb2x1bW5zIiwiZmlsdGVycyIsInJlc3VsdHMiLCJydW4iLCJydW5TZWFyY2hlcyIsInB1c2giLCJydW5QYWdlZCIsInBhZ2VTaXplIiwiRXJyb3IiLCJzYXZlIiwic2VhcmNoZXMiLCJoYXMiLCJNYXRoIiwibWF4IiwiQXJyYXkiLCJmcm9tIiwidmFsdWVzIiwibWFwIiwiYSIsInNldCIsIm1vZHVsZSIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9ja3Mvc2VhcmNoL1NlYXJjaC5janMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgUmVzdWx0U2V0ID0gcmVxdWlyZShcIi4vUmVzdWx0U2V0LmNqc1wiKTtcbmNvbnN0IFBhZ2VkRGF0YSA9IHJlcXVpcmUoXCIuL1BhZ2VkRGF0YS5janNcIik7XG5jb25zdCBTdWl0ZVNjcmlwdE1vY2tzID0gcmVxdWlyZShcIi4uLy4uLy4uL2luZGV4LmNqc1wiKTtcbmNvbnN0IHsgb3B0aW9ucywgYXNzaWduQ29uc3RydWN0b3IgfSA9IHJlcXVpcmUoXCIuLi8uLi9oZWxwZXJzLmNqc1wiKTtcblxuQGFzc2lnbkNvbnN0cnVjdG9yKClcbmNsYXNzIFNlYXJjaCB7XG5cdGlkO1xuXHRzZWFyY2hJZDtcblx0c2VhcmNoVHlwZTtcblx0dGl0bGU7XG5cdGNvbHVtbnM7XG5cdGZpbHRlcnM7XG5cdHJlc3VsdHM7XG5cblx0cnVuID0gKCkgPT4ge1xuXHRcdFN1aXRlU2NyaXB0TW9ja3MucnVuU2VhcmNoZXMucHVzaCh0aGlzKTtcblx0XHRyZXR1cm4gbmV3IFJlc3VsdFNldCh7XG5cdFx0XHRjb2x1bW5zOiB0aGlzLmNvbHVtbnMsXG5cdFx0XHRyZXN1bHRzOiB0aGlzLnJlc3VsdHMsXG5cdFx0fSk7XG5cdH07XG5cblx0QG9wdGlvbnMoXCJwYWdlU2l6ZVwiKVxuXHRydW5QYWdlZCA9IChvcHRpb25zKSA9PiB7XG5cdFx0U3VpdGVTY3JpcHRNb2Nrcy5ydW5TZWFyY2hlcy5wdXNoKHRoaXMpO1xuXHRcdGNvbnN0IHBhZ2VTaXplID0gb3B0aW9ucy5wYWdlU2l6ZSB8fCA1MDtcblx0XHRpZiAocGFnZVNpemUgPCA1IHx8IHBhZ2VTaXplID4gMTAwMCkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFwicGFnZSBzaXplIGlzIG91dHNpZGUgYWxsb3dlZCByYW5nZVwiKTtcblx0XHR9XG5cdFx0cmV0dXJuIG5ldyBQYWdlZERhdGEoe1xuXHRcdFx0cmVzdWx0czogdGhpcy5yZXN1bHRzIHx8IFtdLFxuXHRcdFx0cGFnZVNpemU6IHBhZ2VTaXplLFxuXHRcdH0pO1xuXHR9O1xuXG5cdHNhdmUoKSB7XG5cdFx0aWYgKCF0aGlzLnRpdGxlKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJzZWFyY2ggdGl0bGUgbm90IHNldFwiKTtcblx0XHR9XG5cdFx0aWYgKCF0aGlzLnNlYXJjaElkIHx8ICFTdWl0ZVNjcmlwdE1vY2tzLnNlYXJjaGVzLmhhcyh7IHNlYXJjaElkOiB0aGlzLnNlYXJjaElkIH0pKSB7XG5cdFx0XHRpZiAoU3VpdGVTY3JpcHRNb2Nrcy5zZWFyY2hlcy5oYXMoeyBpZDogdGhpcy5pZCB9KSkge1xuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJzZWFyY2ggc2NyaXB0IGlkIGlzIGFscmVhZHkgaW4gdXNlXCIpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKFN1aXRlU2NyaXB0TW9ja3Muc2VhcmNoZXMuaGFzKHsgdGl0bGU6IHRoaXMudGl0bGUgfSkpIHtcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKFwic2VhcmNoIHRpdGxlIGlzIGFscmVhZHkgaW4gdXNlXCIpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAoIXRoaXMuc2VhcmNoSWQpIHtcblx0XHRcdHRoaXMuc2VhcmNoSWQgPSBNYXRoLm1heChBcnJheS5mcm9tKFN1aXRlU2NyaXB0TW9ja3Muc2VhcmNoZXMudmFsdWVzKCkpLm1hcCgoYSkgPT4gYS5zZWFyY2hJZCkpICsgMTtcblx0XHR9XG5cdFx0aWYgKCF0aGlzLmlkKSB7XG5cdFx0XHR0aGlzLmlkID0gYGN1c3RvbXNlYXJjaF8ke3RoaXMuc2VhcmNoSWR9YDtcblx0XHR9XG5cdFx0U3VpdGVTY3JpcHRNb2Nrcy5zZWFyY2hlcy5zZXQobmV3IFNlYXJjaCh0aGlzKSk7XG5cdH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBTZWFyY2g7XG4iXSwibWFwcGluZ3MiOiI7OztBQUFBLE1BQU1BLFNBQVMsR0FBR0MsT0FBTyxDQUFDLGlCQUFpQixDQUFDO0FBQzVDLE1BQU1DLFNBQVMsR0FBR0QsT0FBTyxDQUFDLGlCQUFpQixDQUFDO0FBQzVDLE1BQU1FLGdCQUFnQixHQUFHRixPQUFPLENBQUMsb0JBQW9CLENBQUM7QUFDdEQsTUFBTTtFQUFFRyxPQUFPO0VBQUVDO0FBQWtCLENBQUMsR0FBR0osT0FBTyxDQUFDLG1CQUFtQixDQUFDO0FBQUMsSUFBQUssT0FBQTtBQUFBQyxJQUFBLEdBRW5FRixpQkFBaUIsQ0FBQyxDQUFDO0FBQUFHLEtBQUEsR0FrQmxCSixPQUFPLENBQUMsVUFBVSxDQUFDO0FBbEJyQixNQUFBSyxNQUFBLENBQ2E7RUFBQTtJQUFBO01BQUFDLENBQUEsR0FBQUMsY0FBQTtNQUFBQyxDQUFBLEdBQUFOLE9BQUEsRUFBQU8sVUFBQTtJQUFBLElBQUFDLGVBQUEsU0FBQU4sS0FBQSxvQkFBQUQsSUFBQTtFQUFBO0VBQ1pRLEVBQUU7RUFDRkMsUUFBUTtFQUNSQyxVQUFVO0VBQ1ZDLEtBQUs7RUFDTEMsT0FBTztFQUNQQyxPQUFPO0VBQ1BDLE9BQU87RUFFUEMsR0FBRyxHQUFHQSxDQUFBLEtBQU07SUFDWG5CLGdCQUFnQixDQUFDb0IsV0FBVyxDQUFDQyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ3ZDLE9BQU8sSUFBSXhCLFNBQVMsQ0FBQztNQUNwQm1CLE9BQU8sRUFBRSxJQUFJLENBQUNBLE9BQU87TUFDckJFLE9BQU8sRUFBRSxJQUFJLENBQUNBO0lBQ2YsQ0FBQyxDQUFDO0VBQ0gsQ0FBQztFQUdESSxRQUFRLEdBQUFkLGNBQUEsT0FBSVAsT0FBTyxJQUFLO0lBQ3ZCRCxnQkFBZ0IsQ0FBQ29CLFdBQVcsQ0FBQ0MsSUFBSSxDQUFDLElBQUksQ0FBQztJQUN2QyxNQUFNRSxRQUFRLEdBQUd0QixPQUFPLENBQUNzQixRQUFRLElBQUksRUFBRTtJQUN2QyxJQUFJQSxRQUFRLEdBQUcsQ0FBQyxJQUFJQSxRQUFRLEdBQUcsSUFBSSxFQUFFO01BQ3BDLE1BQU0sSUFBSUMsS0FBSyxDQUFDLG9DQUFvQyxDQUFDO0lBQ3REO0lBQ0EsT0FBTyxJQUFJekIsU0FBUyxDQUFDO01BQ3BCbUIsT0FBTyxFQUFFLElBQUksQ0FBQ0EsT0FBTyxJQUFJLEVBQUU7TUFDM0JLLFFBQVEsRUFBRUE7SUFDWCxDQUFDLENBQUM7RUFDSCxDQUFDO0VBRURFLElBQUlBLENBQUEsRUFBRztJQUNOLElBQUksQ0FBQyxJQUFJLENBQUNWLEtBQUssRUFBRTtNQUNoQixNQUFNLElBQUlTLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQztJQUN4QztJQUNBLElBQUksQ0FBQyxJQUFJLENBQUNYLFFBQVEsSUFBSSxDQUFDYixnQkFBZ0IsQ0FBQzBCLFFBQVEsQ0FBQ0MsR0FBRyxDQUFDO01BQUVkLFFBQVEsRUFBRSxJQUFJLENBQUNBO0lBQVMsQ0FBQyxDQUFDLEVBQUU7TUFDbEYsSUFBSWIsZ0JBQWdCLENBQUMwQixRQUFRLENBQUNDLEdBQUcsQ0FBQztRQUFFZixFQUFFLEVBQUUsSUFBSSxDQUFDQTtNQUFHLENBQUMsQ0FBQyxFQUFFO1FBQ25ELE1BQU0sSUFBSVksS0FBSyxDQUFDLG9DQUFvQyxDQUFDO01BQ3REO01BQ0EsSUFBSXhCLGdCQUFnQixDQUFDMEIsUUFBUSxDQUFDQyxHQUFHLENBQUM7UUFBRVosS0FBSyxFQUFFLElBQUksQ0FBQ0E7TUFBTSxDQUFDLENBQUMsRUFBRTtRQUN6RCxNQUFNLElBQUlTLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQztNQUNsRDtJQUNEO0lBQ0EsSUFBSSxDQUFDLElBQUksQ0FBQ1gsUUFBUSxFQUFFO01BQ25CLElBQUksQ0FBQ0EsUUFBUSxHQUFHZSxJQUFJLENBQUNDLEdBQUcsQ0FBQ0MsS0FBSyxDQUFDQyxJQUFJLENBQUMvQixnQkFBZ0IsQ0FBQzBCLFFBQVEsQ0FBQ00sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDQyxHQUFHLENBQUVDLENBQUMsSUFBS0EsQ0FBQyxDQUFDckIsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQ3BHO0lBQ0EsSUFBSSxDQUFDLElBQUksQ0FBQ0QsRUFBRSxFQUFFO01BQ2IsSUFBSSxDQUFDQSxFQUFFLEdBQUksZ0JBQWUsSUFBSSxDQUFDQyxRQUFTLEVBQUM7SUFDMUM7SUFDQWIsZ0JBQWdCLENBQUMwQixRQUFRLENBQUNTLEdBQUcsQ0FBQyxJQUFJN0IsT0FBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0VBQ2hEO0VBQUM7SUFBQUksVUFBQTtFQUFBO0FBQ0Y7QUFFQTBCLE1BQU0sQ0FBQ0MsT0FBTyxHQUFHL0IsT0FBTSJ9 \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZXN1bHRTZXQiLCJyZXF1aXJlIiwiUGFnZWREYXRhIiwiU3VpdGVTY3JpcHRNb2NrcyIsIm9wdGlvbnMiLCJhc3NpZ25Db25zdHJ1Y3RvciIsIl9TZWFyY2giLCJfZGVjIiwiX2RlYzIiLCJTZWFyY2giLCJlIiwiX2luaXRfcnVuUGFnZWQiLCJjIiwiX2luaXRDbGFzcyIsIl9hcHBseURlY3MyMjAzUiIsImlkIiwic2VhcmNoSWQiLCJzZWFyY2hUeXBlIiwidGl0bGUiLCJjb2x1bW5zIiwiZmlsdGVycyIsInJlc3VsdHMiLCJydW4iLCJydW5TZWFyY2hlcyIsInB1c2giLCJydW5QYWdlZCIsInBhZ2VTaXplIiwiRXJyb3IiLCJzYXZlIiwic2VhcmNoZXMiLCJoYXMiLCJNYXRoIiwibWF4IiwiQXJyYXkiLCJmcm9tIiwidmFsdWVzIiwibWFwIiwiYSIsInNldCIsIm1vZHVsZSIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9ja3Mvc2VhcmNoL1NlYXJjaC5janMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgUmVzdWx0U2V0ID0gcmVxdWlyZShcIi4vUmVzdWx0U2V0LmNqc1wiKTtcbmNvbnN0IFBhZ2VkRGF0YSA9IHJlcXVpcmUoXCIuL1BhZ2VkRGF0YS5janNcIik7XG5jb25zdCBTdWl0ZVNjcmlwdE1vY2tzID0gcmVxdWlyZShcIi4uLy4uLy4uL2luZGV4LmNqc1wiKTtcbmNvbnN0IHsgb3B0aW9ucywgYXNzaWduQ29uc3RydWN0b3IgfSA9IHJlcXVpcmUoXCIuLi8uLi9oZWxwZXJzLmNqc1wiKTtcblxuQGFzc2lnbkNvbnN0cnVjdG9yKClcbmNsYXNzIFNlYXJjaCB7XG5cdGlkO1xuXHRzZWFyY2hJZDtcblx0c2VhcmNoVHlwZTtcblx0dGl0bGU7XG5cdGNvbHVtbnM7XG5cdGZpbHRlcnM7XG5cdHJlc3VsdHM7XG5cblx0cnVuID0gKCkgPT4ge1xuXHRcdFN1aXRlU2NyaXB0TW9ja3MucnVuU2VhcmNoZXMucHVzaCh0aGlzKTtcblx0XHRyZXR1cm4gbmV3IFJlc3VsdFNldCh7XG5cdFx0XHRjb2x1bW5zOiB0aGlzLmNvbHVtbnMsXG5cdFx0XHRyZXN1bHRzOiB0aGlzLnJlc3VsdHMsXG5cdFx0fSk7XG5cdH07XG5cblx0QG9wdGlvbnMoXCJwYWdlU2l6ZVwiKVxuXHRydW5QYWdlZCA9IChvcHRpb25zKSA9PiB7XG5cdFx0U3VpdGVTY3JpcHRNb2Nrcy5ydW5TZWFyY2hlcy5wdXNoKHRoaXMpO1xuXHRcdGNvbnN0IHBhZ2VTaXplID0gb3B0aW9ucy5wYWdlU2l6ZSB8fCA1MDtcblx0XHRpZiAocGFnZVNpemUgPCA1IHx8IHBhZ2VTaXplID4gMTAwMCkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFwicGFnZSBzaXplIGlzIG91dHNpZGUgYWxsb3dlZCByYW5nZVwiKTtcblx0XHR9XG5cdFx0cmV0dXJuIG5ldyBQYWdlZERhdGEoe1xuXHRcdFx0cmVzdWx0czogdGhpcy5yZXN1bHRzIHx8IFtdLFxuXHRcdFx0cGFnZVNpemU6IHBhZ2VTaXplLFxuXHRcdH0pO1xuXHR9O1xuXG5cdHNhdmUoKSB7XG5cdFx0aWYgKCF0aGlzLnRpdGxlKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJzZWFyY2ggdGl0bGUgbm90IHNldFwiKTtcblx0XHR9XG5cdFx0aWYgKCF0aGlzLnNlYXJjaElkIHx8ICFTdWl0ZVNjcmlwdE1vY2tzLnNlYXJjaGVzLmhhcyh7IHNlYXJjaElkOiB0aGlzLnNlYXJjaElkIH0pKSB7XG5cdFx0XHRpZiAoU3VpdGVTY3JpcHRNb2Nrcy5zZWFyY2hlcy5oYXMoeyBpZDogdGhpcy5pZCB9KSkge1xuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJzZWFyY2ggc2NyaXB0IGlkIGlzIGFscmVhZHkgaW4gdXNlXCIpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKFN1aXRlU2NyaXB0TW9ja3Muc2VhcmNoZXMuaGFzKHsgdGl0bGU6IHRoaXMudGl0bGUgfSkpIHtcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKFwic2VhcmNoIHRpdGxlIGlzIGFscmVhZHkgaW4gdXNlXCIpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAoIXRoaXMuc2VhcmNoSWQpIHtcblx0XHRcdHRoaXMuc2VhcmNoSWQgPSBNYXRoLm1heCguLi5BcnJheS5mcm9tKFN1aXRlU2NyaXB0TW9ja3Muc2VhcmNoZXMudmFsdWVzKCkpLm1hcCgoYSkgPT4gYS5zZWFyY2hJZCkpICsgMTtcblx0XHR9XG5cdFx0aWYgKCF0aGlzLmlkKSB7XG5cdFx0XHR0aGlzLmlkID0gYGN1c3RvbXNlYXJjaF8ke3RoaXMuc2VhcmNoSWR9YDtcblx0XHR9XG5cdFx0U3VpdGVTY3JpcHRNb2Nrcy5zZWFyY2hlcy5zZXQobmV3IFNlYXJjaCh0aGlzKSk7XG5cdH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBTZWFyY2g7XG4iXSwibWFwcGluZ3MiOiI7OztBQUFBLE1BQU1BLFNBQVMsR0FBR0MsT0FBTyxDQUFDLGlCQUFpQixDQUFDO0FBQzVDLE1BQU1DLFNBQVMsR0FBR0QsT0FBTyxDQUFDLGlCQUFpQixDQUFDO0FBQzVDLE1BQU1FLGdCQUFnQixHQUFHRixPQUFPLENBQUMsb0JBQW9CLENBQUM7QUFDdEQsTUFBTTtFQUFFRyxPQUFPO0VBQUVDO0FBQWtCLENBQUMsR0FBR0osT0FBTyxDQUFDLG1CQUFtQixDQUFDO0FBQUMsSUFBQUssT0FBQTtBQUFBQyxJQUFBLEdBRW5FRixpQkFBaUIsQ0FBQyxDQUFDO0FBQUFHLEtBQUEsR0FrQmxCSixPQUFPLENBQUMsVUFBVSxDQUFDO0FBbEJyQixNQUFBSyxNQUFBLENBQ2E7RUFBQTtJQUFBO01BQUFDLENBQUEsR0FBQUMsY0FBQTtNQUFBQyxDQUFBLEdBQUFOLE9BQUEsRUFBQU8sVUFBQTtJQUFBLElBQUFDLGVBQUEsU0FBQU4sS0FBQSxvQkFBQUQsSUFBQTtFQUFBO0VBQ1pRLEVBQUU7RUFDRkMsUUFBUTtFQUNSQyxVQUFVO0VBQ1ZDLEtBQUs7RUFDTEMsT0FBTztFQUNQQyxPQUFPO0VBQ1BDLE9BQU87RUFFUEMsR0FBRyxHQUFHQSxDQUFBLEtBQU07SUFDWG5CLGdCQUFnQixDQUFDb0IsV0FBVyxDQUFDQyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ3ZDLE9BQU8sSUFBSXhCLFNBQVMsQ0FBQztNQUNwQm1CLE9BQU8sRUFBRSxJQUFJLENBQUNBLE9BQU87TUFDckJFLE9BQU8sRUFBRSxJQUFJLENBQUNBO0lBQ2YsQ0FBQyxDQUFDO0VBQ0gsQ0FBQztFQUdESSxRQUFRLEdBQUFkLGNBQUEsT0FBSVAsT0FBTyxJQUFLO0lBQ3ZCRCxnQkFBZ0IsQ0FBQ29CLFdBQVcsQ0FBQ0MsSUFBSSxDQUFDLElBQUksQ0FBQztJQUN2QyxNQUFNRSxRQUFRLEdBQUd0QixPQUFPLENBQUNzQixRQUFRLElBQUksRUFBRTtJQUN2QyxJQUFJQSxRQUFRLEdBQUcsQ0FBQyxJQUFJQSxRQUFRLEdBQUcsSUFBSSxFQUFFO01BQ3BDLE1BQU0sSUFBSUMsS0FBSyxDQUFDLG9DQUFvQyxDQUFDO0lBQ3REO0lBQ0EsT0FBTyxJQUFJekIsU0FBUyxDQUFDO01BQ3BCbUIsT0FBTyxFQUFFLElBQUksQ0FBQ0EsT0FBTyxJQUFJLEVBQUU7TUFDM0JLLFFBQVEsRUFBRUE7SUFDWCxDQUFDLENBQUM7RUFDSCxDQUFDO0VBRURFLElBQUlBLENBQUEsRUFBRztJQUNOLElBQUksQ0FBQyxJQUFJLENBQUNWLEtBQUssRUFBRTtNQUNoQixNQUFNLElBQUlTLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQztJQUN4QztJQUNBLElBQUksQ0FBQyxJQUFJLENBQUNYLFFBQVEsSUFBSSxDQUFDYixnQkFBZ0IsQ0FBQzBCLFFBQVEsQ0FBQ0MsR0FBRyxDQUFDO01BQUVkLFFBQVEsRUFBRSxJQUFJLENBQUNBO0lBQVMsQ0FBQyxDQUFDLEVBQUU7TUFDbEYsSUFBSWIsZ0JBQWdCLENBQUMwQixRQUFRLENBQUNDLEdBQUcsQ0FBQztRQUFFZixFQUFFLEVBQUUsSUFBSSxDQUFDQTtNQUFHLENBQUMsQ0FBQyxFQUFFO1FBQ25ELE1BQU0sSUFBSVksS0FBSyxDQUFDLG9DQUFvQyxDQUFDO01BQ3REO01BQ0EsSUFBSXhCLGdCQUFnQixDQUFDMEIsUUFBUSxDQUFDQyxHQUFHLENBQUM7UUFBRVosS0FBSyxFQUFFLElBQUksQ0FBQ0E7TUFBTSxDQUFDLENBQUMsRUFBRTtRQUN6RCxNQUFNLElBQUlTLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQztNQUNsRDtJQUNEO0lBQ0EsSUFBSSxDQUFDLElBQUksQ0FBQ1gsUUFBUSxFQUFFO01BQ25CLElBQUksQ0FBQ0EsUUFBUSxHQUFHZSxJQUFJLENBQUNDLEdBQUcsQ0FBQyxHQUFHQyxLQUFLLENBQUNDLElBQUksQ0FBQy9CLGdCQUFnQixDQUFDMEIsUUFBUSxDQUFDTSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUNDLEdBQUcsQ0FBRUMsQ0FBQyxJQUFLQSxDQUFDLENBQUNyQixRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDdkc7SUFDQSxJQUFJLENBQUMsSUFBSSxDQUFDRCxFQUFFLEVBQUU7TUFDYixJQUFJLENBQUNBLEVBQUUsR0FBSSxnQkFBZSxJQUFJLENBQUNDLFFBQVMsRUFBQztJQUMxQztJQUNBYixnQkFBZ0IsQ0FBQzBCLFFBQVEsQ0FBQ1MsR0FBRyxDQUFDLElBQUk3QixPQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7RUFDaEQ7RUFBQztJQUFBSSxVQUFBO0VBQUE7QUFDRjtBQUVBMEIsTUFBTSxDQUFDQyxPQUFPLEdBQUcvQixPQUFNIn0= \ No newline at end of file diff --git a/lib/records.cjs b/lib/records.cjs deleted file mode 100644 index 3f9c40b..0000000 --- a/lib/records.cjs +++ /dev/null @@ -1,58 +0,0 @@ -const { - Tuple -} = require("@bloomberg/record-tuple-polyfill"); -class Records { - constructor() { - return new Proxy(this, { - get(target, prop) { - if (prop in target) { - return target[prop]; - } else if (Number(prop) !== NaN) { - const arr = [...target]; - const index = Number(prop) < 0 ? arr.length - prop : prop; - return arr[index]; - } - } - }); - } - #records = new Map(); - [Symbol.iterator] = () => { - return this.#records.values(); - }; - get length() { - return Array.from(this.#records.values()).length; - } - add = (...records) => { - records.flat().forEach(record => { - this.#records.set(this.#key(record), record); - }); - }; - remove = record => { - return this.#records.delete(this.#key(record)); - }; - get = record => { - return this.#records.get(this.#key(record)); - }; - has = record => { - return this.#records.has(this.#key(record)); - }; - clear = () => { - this.#records.clear(); - }; - forEach = callback => { - const arr = Array.from(this.#records.values()); - for (const i in arr) { - callback(arr[i], i, arr); - } - }; - #key = record => { - return Tuple(record.type, record.id); - }; -} -class RecordsProxy { - constructor() { - return new Proxy(); - } -} -module.exports = Records; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJUdXBsZSIsInJlcXVpcmUiLCJSZWNvcmRzIiwiY29uc3RydWN0b3IiLCJQcm94eSIsImdldCIsInRhcmdldCIsInByb3AiLCJOdW1iZXIiLCJOYU4iLCJhcnIiLCJpbmRleCIsImxlbmd0aCIsInJlY29yZHMiLCJNYXAiLCJTeW1ib2wiLCJpdGVyYXRvciIsInZhbHVlcyIsIkFycmF5IiwiZnJvbSIsImFkZCIsImZsYXQiLCJmb3JFYWNoIiwicmVjb3JkIiwic2V0Iiwia2V5IiwicmVtb3ZlIiwiZGVsZXRlIiwiaGFzIiwiY2xlYXIiLCJjYWxsYmFjayIsImkiLCJ0eXBlIiwiaWQiLCJSZWNvcmRzUHJveHkiLCJtb2R1bGUiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vc3JjL3JlY29yZHMuY2pzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHsgVHVwbGUgfSA9IHJlcXVpcmUoXCJAYmxvb21iZXJnL3JlY29yZC10dXBsZS1wb2x5ZmlsbFwiKVxuXG5jbGFzcyBSZWNvcmRzIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm94eSh0aGlzLCB7XG4gICAgICAgICAgICBnZXQodGFyZ2V0LCBwcm9wKSB7XG4gICAgICAgICAgICAgICAgaWYocHJvcCBpbiB0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldFtwcm9wXVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmKE51bWJlcihwcm9wKSAhPT0gTmFOKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFyciA9IFsuLi50YXJnZXRdXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gTnVtYmVyKHByb3ApIDwgMCA/IGFyci5sZW5ndGggLSBwcm9wIDogcHJvcFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXJyW2luZGV4XVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgI3JlY29yZHMgPSBuZXcgTWFwKCk7XG5cbiAgICBbU3ltYm9sLml0ZXJhdG9yXSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI3JlY29yZHMudmFsdWVzKCk7XG4gICAgfVxuXG4gICAgZ2V0IGxlbmd0aCgpIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy4jcmVjb3Jkcy52YWx1ZXMoKSkubGVuZ3RoXG4gICAgfVxuXG4gICAgYWRkID0gKC4uLnJlY29yZHMpID0+IHtcbiAgICAgICAgcmVjb3Jkcy5mbGF0KCkuZm9yRWFjaChyZWNvcmQgPT4ge1xuICAgICAgICAgICAgdGhpcy4jcmVjb3Jkcy5zZXQodGhpcy4ja2V5KHJlY29yZCksIHJlY29yZClcbiAgICAgICAgfSlcbiAgICB9XG4gICAgcmVtb3ZlID0gKHJlY29yZCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy4jcmVjb3Jkcy5kZWxldGUodGhpcy4ja2V5KHJlY29yZCkpXG4gICAgfVxuICAgIGdldCA9IChyZWNvcmQpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI3JlY29yZHMuZ2V0KHRoaXMuI2tleShyZWNvcmQpKVxuICAgIH1cbiAgICBoYXMgPSAocmVjb3JkKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLiNyZWNvcmRzLmhhcyh0aGlzLiNrZXkocmVjb3JkKSlcbiAgICB9XG4gICAgY2xlYXIgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuI3JlY29yZHMuY2xlYXIoKVxuICAgIH1cbiAgICBmb3JFYWNoID0gKGNhbGxiYWNrKSA9PiB7XG4gICAgICAgIGNvbnN0IGFyciA9IEFycmF5LmZyb20odGhpcy4jcmVjb3Jkcy52YWx1ZXMoKSlcbiAgICAgICAgZm9yKGNvbnN0IGkgaW4gYXJyKSB7XG4gICAgICAgICAgICBjYWxsYmFjayhhcnJbaV0sIGksIGFycilcbiAgICAgICAgfVxuICAgIH1cblxuICAgICNrZXkgPSAocmVjb3JkKSA9PiB7XG4gICAgICAgIHJldHVybiBUdXBsZShyZWNvcmQudHlwZSwgcmVjb3JkLmlkKVxuICAgIH1cbn1cblxuY2xhc3MgUmVjb3Jkc1Byb3h5IHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm94eSgpXG4gICAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFJlY29yZHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU07RUFBRUE7QUFBTSxDQUFDLEdBQUdDLE9BQU8sQ0FBQyxrQ0FBa0MsQ0FBQztBQUU3RCxNQUFNQyxPQUFPLENBQUM7RUFDVkMsV0FBVyxHQUFHO0lBQ1YsT0FBTyxJQUFJQyxLQUFLLENBQUMsSUFBSSxFQUFFO01BQ25CQyxHQUFHLENBQUNDLE1BQU0sRUFBRUMsSUFBSSxFQUFFO1FBQ2QsSUFBR0EsSUFBSSxJQUFJRCxNQUFNLEVBQUU7VUFDZixPQUFPQSxNQUFNLENBQUNDLElBQUksQ0FBQztRQUN2QixDQUFDLE1BQ0ksSUFBR0MsTUFBTSxDQUFDRCxJQUFJLENBQUMsS0FBS0UsR0FBRyxFQUFFO1VBQzFCLE1BQU1DLEdBQUcsR0FBRyxDQUFDLEdBQUdKLE1BQU0sQ0FBQztVQUN2QixNQUFNSyxLQUFLLEdBQUdILE1BQU0sQ0FBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHRyxHQUFHLENBQUNFLE1BQU0sR0FBR0wsSUFBSSxHQUFHQSxJQUFJO1VBQ3pELE9BQU9HLEdBQUcsQ0FBQ0MsS0FBSyxDQUFDO1FBQ3JCO01BQ0o7SUFDSixDQUFDLENBQUM7RUFDTjtFQUVBLENBQUNFLE9BQU8sR0FBRyxJQUFJQyxHQUFHLEVBQUU7RUFFcEIsQ0FBQ0MsTUFBTSxDQUFDQyxRQUFRLElBQUksTUFBTTtJQUN0QixPQUFPLElBQUksQ0FBQyxDQUFDSCxPQUFPLENBQUNJLE1BQU0sRUFBRTtFQUNqQyxDQUFDO0VBRUQsSUFBSUwsTUFBTSxHQUFHO0lBQ1QsT0FBT00sS0FBSyxDQUFDQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUNOLE9BQU8sQ0FBQ0ksTUFBTSxFQUFFLENBQUMsQ0FBQ0wsTUFBTTtFQUNwRDtFQUVBUSxHQUFHLEdBQUcsQ0FBQyxHQUFHUCxPQUFPLEtBQUs7SUFDbEJBLE9BQU8sQ0FBQ1EsSUFBSSxFQUFFLENBQUNDLE9BQU8sQ0FBQ0MsTUFBTSxJQUFJO01BQzdCLElBQUksQ0FBQyxDQUFDVixPQUFPLENBQUNXLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQ0MsR0FBRyxDQUFDRixNQUFNLENBQUMsRUFBRUEsTUFBTSxDQUFDO0lBQ2hELENBQUMsQ0FBQztFQUNOLENBQUM7RUFDREcsTUFBTSxHQUFJSCxNQUFNLElBQUs7SUFDakIsT0FBTyxJQUFJLENBQUMsQ0FBQ1YsT0FBTyxDQUFDYyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUNGLEdBQUcsQ0FBQ0YsTUFBTSxDQUFDLENBQUM7RUFDbEQsQ0FBQztFQUNEbEIsR0FBRyxHQUFJa0IsTUFBTSxJQUFLO0lBQ2QsT0FBTyxJQUFJLENBQUMsQ0FBQ1YsT0FBTyxDQUFDUixHQUFHLENBQUMsSUFBSSxDQUFDLENBQUNvQixHQUFHLENBQUNGLE1BQU0sQ0FBQyxDQUFDO0VBQy9DLENBQUM7RUFDREssR0FBRyxHQUFJTCxNQUFNLElBQUs7SUFDZCxPQUFPLElBQUksQ0FBQyxDQUFDVixPQUFPLENBQUNlLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQ0gsR0FBRyxDQUFDRixNQUFNLENBQUMsQ0FBQztFQUMvQyxDQUFDO0VBQ0RNLEtBQUssR0FBRyxNQUFNO0lBQ1YsSUFBSSxDQUFDLENBQUNoQixPQUFPLENBQUNnQixLQUFLLEVBQUU7RUFDekIsQ0FBQztFQUNEUCxPQUFPLEdBQUlRLFFBQVEsSUFBSztJQUNwQixNQUFNcEIsR0FBRyxHQUFHUSxLQUFLLENBQUNDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQ04sT0FBTyxDQUFDSSxNQUFNLEVBQUUsQ0FBQztJQUM5QyxLQUFJLE1BQU1jLENBQUMsSUFBSXJCLEdBQUcsRUFBRTtNQUNoQm9CLFFBQVEsQ0FBQ3BCLEdBQUcsQ0FBQ3FCLENBQUMsQ0FBQyxFQUFFQSxDQUFDLEVBQUVyQixHQUFHLENBQUM7SUFDNUI7RUFDSixDQUFDO0VBRUQsQ0FBQ2UsR0FBRyxHQUFJRixNQUFNLElBQUs7SUFDZixPQUFPdkIsS0FBSyxDQUFDdUIsTUFBTSxDQUFDUyxJQUFJLEVBQUVULE1BQU0sQ0FBQ1UsRUFBRSxDQUFDO0VBQ3hDLENBQUM7QUFDTDtBQUVBLE1BQU1DLFlBQVksQ0FBQztFQUNmL0IsV0FBVyxHQUFHO0lBQ1YsT0FBTyxJQUFJQyxLQUFLLEVBQUU7RUFDdEI7QUFDSjtBQUVBK0IsTUFBTSxDQUFDQyxPQUFPLEdBQUdsQyxPQUFPIn0= \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index b68f97e..65c39ad 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "suitescript-mocks", - "version": "0.1.3", + "version": "0.1.4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "suitescript-mocks", - "version": "0.1.3", + "version": "0.1.4", "license": "ISC", "dependencies": { "@bloomberg/record-tuple-polyfill": "^0.0.4", @@ -8252,4 +8252,4 @@ } } } -} +} \ No newline at end of file diff --git a/package.json b/package.json index 2ff2399..82d9a88 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "suitescript-mocks", - "version": "0.1.3", + "version": "0.1.4", "description": "Set of mocks for unit testing Netsuite Suitescript 2.*", "keywords": [ "NetSuite", diff --git a/src/index.cjs b/src/index.cjs index 52471e0..d76af3d 100644 --- a/src/index.cjs +++ b/src/index.cjs @@ -8,6 +8,12 @@ class SuiteScriptMocks { @addKeyedSetGetSet() #caches = new KeyedSet((cache) => [cache.name, cache.scope]); + @addKeyedSetGetSet() + #files = new KeyedSet( + (file) => file.id, + (file) => [file.folder, file.name], + ); + @addKeyedSetGetSet() #records = new KeyedSet((record) => [record.id, record.type]); @@ -36,6 +42,11 @@ class SuiteScriptMocks { this.#caches.clear(); + this.#files.clear(); + this.savedFiles = []; + this.createdFiles = []; + this.deletedFiles = []; + this.#records.clear(); this.savedRecords = []; this.createdRecords = []; diff --git a/src/iterator.cjs b/src/iterator.cjs new file mode 100644 index 0000000..2951ce7 --- /dev/null +++ b/src/iterator.cjs @@ -0,0 +1,22 @@ +class Iterator { + values = []; + pointer = -1; + + constructor(values) { + this.values = values; + } + + next = () => { + this.pointer = Math.min(this.pointer + 1, this.values.length); + return { value: this.values[this.pointer], done: this.pointer >= this.values.length }; + }; + + each = (callback) => { + let value; + while (!(value = this.next()).done) { + if (callback({ value: value.value }) !== true) break; + } + }; +} + +module.exports = Iterator; diff --git a/src/mocks/file/File.cjs b/src/mocks/file/File.cjs new file mode 100644 index 0000000..9ad4b75 --- /dev/null +++ b/src/mocks/file/File.cjs @@ -0,0 +1,110 @@ +const SuiteScriptMocks = require("../../index.cjs"); +const { options, required, assignConstructor } = require("../../helpers.cjs"); +const Iterator = require("../../iterator.cjs"); +const Reader = require("./Reader.cjs"); + +@assignConstructor() +class File { + description = ""; + contents = ""; + encoding = ""; + fileType = ""; + folder = null; + id = null; + isInactive = false; + isOnline = false; + isText = true; + name = ""; + path = ""; + size = 0; + url = ""; + + savedContents = null; + frozenContents = null; + frozenContents2 = null; + iterators = []; + readers = []; + + lines = { + iterator: () => { + this.iterators.push(new Iterator(this.savedContents?.split(options.separator) || [])); + return this.iterators.at(-1); + }, + }; + + initialize = () => { + this.frozenContents = this.frozenContents2 = null; + if (this.id) { + this.savedContents = this.contents; + } + }; + + @options("value") + @required("value") + appendLine = (options) => { + this.contents = this.contents ? this.contents.split("\n").concat([options.value]).join("\n") : options.value; + }; + + getContents = () => { + if (this.savedContents !== null) { + return this.savedContents; + } + if (this.frozenContents === null) { + this.frozenContents = this.frozenContents2 = this.contents; + } + if (this.frozenContents === null) { + throw new Error("File contents don't exist"); + } + return this.frozenContents; + }; + + getReader = () => { + this.iterators.push(new Reader({ contents: this.savedContents || this.frozenContents2 || "" })); + return this.iterators.at(-1); + }; + + @options("separator") + @required("separator") + getSegments = (options) => { + if (typeof options.separator !== "string") { + throw new Error("Separator must be a string."); + } + return { + iterator: () => { + this.iterators.push(new Iterator(this.savedContents?.split(options.separator) || [])); + return this.iterators.at(-1); + }, + }; + }; + + resetStream = () => { + this.contents = this.savedContents; + this.frozenContents2 = null; + this.iterators.forEach((iterator) => { + iterator.pointer = -1; + }); + this.readers.forEach((reader) => { + reader.pointer = -1; + reader.contents = reader.savedContents; + }); + }; + + save = () => { + if (this.contents === null) { + throw new Error("File contents don't exist"); + } + if (!this.folder) { + throw new Error("Please enter value for folder"); + } + const copy = new File(this); + if (!this.id) { + this.id = copy.id = Math.max(...Array.from(SuiteScriptMocks.files.values()).map((a) => a.id)) + 1; + SuiteScriptMocks.createdFiles.push(copy); + } + SuiteScriptMocks.files.set(copy); + SuiteScriptMocks.savedFiles.push(copy); + return this.id; + }; +} + +module.exports = File; diff --git a/src/mocks/file/Reader.cjs b/src/mocks/file/Reader.cjs new file mode 100644 index 0000000..c410f54 --- /dev/null +++ b/src/mocks/file/Reader.cjs @@ -0,0 +1,30 @@ +const { options, required, assignConstructor } = require("../../helpers.cjs"); + +@assignConstructor() +class Reader { + contents = ""; + pointer = 0; + + @options("number") + @required("number") + readChars = (options) => { + const oldPointer = this.pointer; + this.pointer = Math.min(this.pointer + options.number, this.contents.length); + return this.contents.substring(oldPointer, this.pointer); + }; + + @options("tag") + @required("tag") + readUntil = (options) => { + const oldPointer = this.pointer; + const index = this.contents.indexOf(options.tag, this.pointer); + this.pointer = index >= 0 ? index + options.tag.length : this.contents.length; + return this.contents.substring(oldPointer, this.pointer); + }; + + reset = () => { + this.pointer = 0; + }; +} + +module.exports = Reader; diff --git a/src/mocks/file/index.cjs b/src/mocks/file/index.cjs new file mode 100644 index 0000000..1b3e9bb --- /dev/null +++ b/src/mocks/file/index.cjs @@ -0,0 +1,74 @@ +const fileStub = require("suitecloud-unit-testing-stubs/stubs/file"); +const { options, required } = require("../../helpers.cjs"); +const SuiteScriptMocks = require("../../index.cjs"); +const Reader = require("./Reader.cjs"); +const File = require("./File.cjs"); + +class FileModule { + Encoding = fileStub.Encoding; + NameConflictResolution = fileStub.NameConflictResolution; + Type = fileStub.Type; + + File = File; + Reader = Reader; + + @required("folder", "id") + copy = (options) => { + const file = this.load(options.id); + file.id = null; + file.folder = options.folder; + const resolutionType = options.conflictResolution || this.NameConflictResolution.FAIL; + if (!Object.values(this.NameConflictResolution).includes(resolutionType)) { + throw new Error("Invalid value for conflictResolution"); + } + let existingFile = SuiteScriptMocks.files.get({ folder: options.folder, name: file.name }); + if (existingFile) { + switch (resolutionType) { + case this.NameConflictResolution.FAIL: + throw new Error("File with that name already exists in that folder"); + case this.NameConflictResolution.OVERWRITE: + case this.NameConflictResolution.OVERWRITE_CONTENT_AND_ATTRIBUTES: + file.id = existingFile.id; + break; + case this.NameConflictResolution.RENAME_TO_UNIQUE: + while (existingFile) { + const curNum = +file.name.match(/^.+\((\d+)\)\.[a-z]+$/i)?.[1] || 0; + file.name = file.name.replace(/^(.+?)(\(\d+\))?\.([a-z]+)$/i, `$1(${curNum + 1}).$3`); + existingFile = SuiteScriptMocks.files.get({ folder: options.folder, name: file.name }); + } + } + } + file.save(); + return file; + }; + + @required("name", "fileType") + create = (options) => { + return new File(options); + }; + + @options("id") + @required("id") + delete = (options) => { + const file = SuiteScriptMocks.files.get(options); + if (!file) { + throw new Error("File does not exist"); + } + SuiteScriptMocks.deletedFiles.push(file); + SuiteScriptMocks.files.delete(file); + return file.id; + }; + + @options("id") + @required("id") + load = (options) => { + const file = SuiteScriptMocks.files.get(options); + if (!file) { + throw new Error("File does not exist"); + } + file.savedContents = file.contents; + return new File({ ...file }); + }; +} + +module.exports = new FileModule(); diff --git a/src/mocks/record/Record.cjs b/src/mocks/record/Record.cjs index 9966d4e..c0fafe4 100644 --- a/src/mocks/record/Record.cjs +++ b/src/mocks/record/Record.cjs @@ -273,7 +273,7 @@ class Record { }); }); if (!this.id) { - this.id = copy.id = Math.max(Array.from(SuiteScriptMocks.records.values()).map((a) => a.id)) + 1; + this.id = copy.id = Math.max(...Array.from(SuiteScriptMocks.records.values()).map((a) => a.id)) + 1; SuiteScriptMocks.createdRecords.push(copy); } SuiteScriptMocks.records.set(copy); diff --git a/src/mocks/record/index.cjs b/src/mocks/record/index.cjs index 97204bc..5cadc60 100644 --- a/src/mocks/record/index.cjs +++ b/src/mocks/record/index.cjs @@ -50,11 +50,11 @@ class RecordModule { @addPromise() @options("type", "id", "isDynamic", "defaultValues") load = (options) => { - let record = SuiteScriptMocks.records.get(options); + const record = SuiteScriptMocks.records.get(options); if (!record) { throw new Error("Record does not exist"); } - record = new Record({ + return new Record({ ...record, isDynamic: Boolean(options.isDynamic) || false, fields: { @@ -62,7 +62,6 @@ class RecordModule { ...(options.defaultValues || {}), }, }); - return record; }; @addPromise() diff --git a/src/mocks/search/Search.cjs b/src/mocks/search/Search.cjs index efa1386..14c3be7 100644 --- a/src/mocks/search/Search.cjs +++ b/src/mocks/search/Search.cjs @@ -47,7 +47,7 @@ class Search { } } if (!this.searchId) { - this.searchId = Math.max(Array.from(SuiteScriptMocks.searches.values()).map((a) => a.searchId)) + 1; + this.searchId = Math.max(...Array.from(SuiteScriptMocks.searches.values()).map((a) => a.searchId)) + 1; } if (!this.id) { this.id = `customsearch_${this.searchId}`;