MCPcopy Index your code
hub / github.com/ether/etherpad / check

Method check

src/node/db/Pad.ts:902–1023  ·  view source on GitHub ↗

* Asserts that all pad data is consistent. Throws if inconsistent.

()

Source from the content-addressed store, hash-verified

900 * Asserts that all pad data is consistent. Throws if inconsistent.
901 */
902 async check() {
903 assert(this.id != null);
904 assert.equal(typeof this.id, 'string');
905
906 const head = this.getHeadRevisionNumber();
907 assert(head != null);
908 assert(Number.isInteger(head));
909 assert(head >= -1);
910
911 const savedRevisionsList = this.getSavedRevisionsList();
912 assert(Array.isArray(savedRevisionsList));
913 assert.equal(this.getSavedRevisionsNumber(), savedRevisionsList.length);
914 let prevSavedRev = null;
915 for (const rev of savedRevisionsList) {
916 assert(rev != null);
917 assert(Number.isInteger(rev));
918 assert(rev >= 0);
919 assert(rev <= head);
920 assert(prevSavedRev == null || rev > prevSavedRev);
921 prevSavedRev = rev;
922 }
923 const savedRevisions = this.getSavedRevisions();
924 assert(Array.isArray(savedRevisions));
925 assert.equal(savedRevisions.length, savedRevisionsList.length);
926 const savedRevisionsIds = new Set();
927 for (const savedRev of savedRevisions) {
928 assert(savedRev != null);
929 assert.equal(typeof savedRev, 'object');
930 assert(savedRevisionsList.includes(savedRev.revNum));
931 assert(savedRev.id != null);
932 assert.equal(typeof savedRev.id, 'string');
933 assert(!savedRevisionsIds.has(savedRev.id));
934 savedRevisionsIds.add(savedRev.id);
935 }
936
937 const pool = this.apool();
938 assert(pool instanceof AttributePool);
939 await pool.check();
940
941 const authorIds = new Set();
942 pool.eachAttrib((k, v) => {
943 if (k === 'author' && v) authorIds.add(v);
944 });
945 const revs = Stream.range(0, head + 1)
946 .map(async (r: number) => {
947 const isKeyRev = r === this.getKeyRevisionNumber(r);
948 try {
949 return await Promise.all([
950 r,
951 this.getRevisionChangeset(r),
952 this.getRevisionAuthor(r),
953 this.getRevisionDate(r),
954 isKeyRev,
955 isKeyRev ? this._getKeyRevisionAText(r) : null,
956 ]);
957 } catch (err:any) {
958 err.message = `(pad ${this.id} revision ${r}) ${err.message}`;
959 throw err;

Callers 7

getReadonlyUrlFunction · 0.45
deleteRevisionsFunction · 0.45
ImportEtherpad.tsFile · 0.45
performCheckFunction · 0.45
checkAllPads.tsFile · 0.45

Calls 15

getHeadRevisionNumberMethod · 0.95
getSavedRevisionsListMethod · 0.95
getSavedRevisionsMethod · 0.95
apoolMethod · 0.95
getKeyRevisionNumberMethod · 0.95
getRevisionChangesetMethod · 0.95
getRevisionAuthorMethod · 0.95
getRevisionDateMethod · 0.95
_getKeyRevisionATextMethod · 0.95
textMethod · 0.95
getAllAuthorsMethod · 0.95

Tested by 1

getReadonlyUrlFunction · 0.36