Skip to content

Commit

Permalink
npm run fmt
Browse files Browse the repository at this point in the history
  • Loading branch information
eritbh committed Aug 26, 2023
1 parent 3ca43d0 commit 0e26c36
Show file tree
Hide file tree
Showing 10 changed files with 251 additions and 198 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ Devvit.addMenuItem({
appearance: 'success',
text: 'Note added!',
});
}
},
});

export default Devvit;
Expand Down
94 changes: 47 additions & 47 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,49 +1,49 @@
{
"name": "toolbox-devvit",
"version": "0.3.0",
"description": "Helpers for working with /r/toolbox data from Devvit community apps.",
"main": "dist/index.js",
"types": "dist/index.d.ts",
"files": [
"dist/*"
],
"scripts": {
"fmt": "dprint fmt",
"build": "tsc",
"test": "ava",
"coverage": "nyc ava",
"docs": "typedoc src/index.ts",
"prepublishOnly": "tsc && ava"
},
"repository": "https://github.com/toolbox-team/toolbox-devvit.git",
"author": "eritbh <github@eritbh.me>",
"license": "MIT",
"bugs": {
"url": "https://github.com/toolbox-team/toolbox-devvit/issues"
},
"homepage": "https://github.com/toolbox-team/toolbox-devvit#readme",
"devDependencies": {
"@ava/typescript": "^4.0.0",
"@devvit/public-api": "^0.10.0",
"@types/node": "^13.7.4",
"ava": "^5.3.0",
"dprint": "^0.40.2",
"eslint": "^6.8.0",
"nyc": "^15.0.0",
"tsx": "^3.12.7",
"typedoc": "^0.24.8",
"typescript": "^5.1.3"
},
"dependencies": {
"pako": "^1.0.11"
},
"ava": {
"extensions": {
"ts": "module"
},
"nodeArguments": [
"--loader=tsx",
"--no-warnings"
]
}
"name": "toolbox-devvit",
"version": "0.3.0",
"description": "Helpers for working with /r/toolbox data from Devvit community apps.",
"main": "dist/index.js",
"types": "dist/index.d.ts",
"files": [
"dist/*"
],
"scripts": {
"fmt": "dprint fmt",
"build": "tsc",
"test": "ava",
"coverage": "nyc ava",
"docs": "typedoc src/index.ts",
"prepublishOnly": "tsc && ava"
},
"repository": "https://github.com/toolbox-team/toolbox-devvit.git",
"author": "eritbh <github@eritbh.me>",
"license": "MIT",
"bugs": {
"url": "https://github.com/toolbox-team/toolbox-devvit/issues"
},
"homepage": "https://github.com/toolbox-team/toolbox-devvit#readme",
"devDependencies": {
"@ava/typescript": "^4.0.0",
"@devvit/public-api": "^0.10.0",
"@types/node": "^13.7.4",
"ava": "^5.3.0",
"dprint": "^0.40.2",
"eslint": "^6.8.0",
"nyc": "^15.0.0",
"tsx": "^3.12.7",
"typedoc": "^0.24.8",
"typescript": "^5.1.3"
},
"dependencies": {
"pako": "^1.0.11"
},
"ava": {
"extensions": {
"ts": "module"
},
"nodeArguments": [
"--loader=tsx",
"--no-warnings"
]
}
}
2 changes: 1 addition & 1 deletion src/classes/ToolboxClient.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import {RedditAPIClient} from '@devvit/public-api';
import {Usernotes} from './Usernotes';
import {Usernote, UsernoteInit} from '../types/Usernote';
import {Usernotes} from './Usernotes';

/** The name of the wiki page where Toolbox stores usernotes. */
const TB_USERNOTES_PAGE = 'usernotes';
Expand Down
13 changes: 8 additions & 5 deletions src/classes/Usernotes.test.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import test from 'ava';
import {Usernotes} from './Usernotes';
import {compressBlob, decompressBlob} from '../helpers/usernotes';
import type {RawUsernotes} from '../types/RawUsernotes';
import {Usernotes} from './Usernotes';

test.todo('constructor');

Expand Down Expand Up @@ -61,17 +61,20 @@ test('get: read and merge existing entries for lowercased usernames', t => {
text: 'test 1',
},
{
text: 'test 0'
text: 'test 0',
},
], 'notes from both spellings of the username should be returned in order');

// expect the entry under the lowercased username to be gone when saving
const newUsersData = decompressBlob(usernotes.toJSON().blob);
t.false('someuser' in newUsersData, 'lowercased spelling of the username should be removed from usernotes object');
})
t.false(
'someuser' in newUsersData,
'lowercased spelling of the username should be removed from usernotes object',
);
});

test.todo('add');

test.todo('toJSON');

test.todo('toString')
test.todo('toString');
23 changes: 13 additions & 10 deletions src/classes/Usernotes.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,13 @@
import {
RawUsernotes,
RawUsernotesConstants,
} from '../types/RawUsernotes';
import {Usernote} from '../types/Usernote';
import {
LATEST_KNOWN_USERNOTES_SCHEMA,
compressBlob,
decompressBlob,
expandPermalink,
squashPermalink,
LATEST_KNOWN_USERNOTES_SCHEMA,
migrateUsernotesToLatestSchema,
squashPermalink,
} from '../helpers/usernotes';
import {RawUsernotes, RawUsernotesConstants} from '../types/RawUsernotes';
import {Usernote} from '../types/Usernote';

// TODO: nothing here handles username case correctly; go back and check the
// toolbox implementation of that for correctness later and write test
Expand Down Expand Up @@ -43,8 +40,12 @@ export class Usernotes {
timestamp: new Date(rawNote.t * 1000),
text: rawNote.n!,
moderatorUsername: data.constants.users[rawNote.m!]!,
contextPermalink: rawNote.l == null ? undefined : expandPermalink(rawNote.l),
noteType: rawNote.w == null ? undefined : data.constants.warnings[rawNote.w] ?? undefined,
contextPermalink: rawNote.l == null
? undefined
: expandPermalink(rawNote.l),
noteType: rawNote.w == null
? undefined
: data.constants.warnings[rawNote.w] ?? undefined,
});
}
}
Expand Down Expand Up @@ -159,7 +160,9 @@ export class Usernotes {
n: note.text,
m: modIndex,
w: typeKeyIndex,
l: note.contextPermalink == null ? undefined : squashPermalink(note.contextPermalink),
l: note.contextPermalink == null
? undefined
: squashPermalink(note.contextPermalink),
});
}
}
Expand Down
149 changes: 90 additions & 59 deletions src/helpers/usernotes.test.ts
Original file line number Diff line number Diff line change
@@ -1,75 +1,106 @@
import test from 'ava';

import {
squashPermalink,
expandPermalink,
migrateUsernotesToLatestSchema,
squashPermalink,
} from './usernotes';

test('squashPermalink', t => {
for (const [arg, expected] of Object.entries({
// Comment links -> l,POSTID,COMMENTID
'https://www.reddit.com/r/subreddit/comments/123abc/some_link_slug/456def': 'l,123abc,456def',
'https://www.reddit.com/r/subreddit/comments/123abc/some_link_slug/456def/?trailing#garbage': 'l,123abc,456def',
'https://www.reddit.com/comments/123abc/some_link_slug/456def': 'l,123abc,456def',
'https://www.reddit.com/comments/123abc/some_link_slug/456def/?trailing#garbage': 'l,123abc,456def',
'https://new.reddit.com/r/subreddit/comments/123abc/some_link_slug/456def': 'l,123abc,456def',
'https://new.reddit.com/r/subreddit/comments/123abc/some_link_slug/456def/?trailing#garbage': 'l,123abc,456def',
'https://new.reddit.com/comments/123abc/some_link_slug/456def': 'l,123abc,456def',
'https://new.reddit.com/comments/123abc/some_link_slug/456def/?trailing#garbage': 'l,123abc,456def',
'https://old.reddit.com/r/subreddit/comments/123abc/some_link_slug/456def': 'l,123abc,456def',
'https://old.reddit.com/r/subreddit/comments/123abc/some_link_slug/456def/?trailing#garbage': 'l,123abc,456def',
'https://old.reddit.com/comments/123abc/some_link_slug/456def': 'l,123abc,456def',
'https://old.reddit.com/comments/123abc/some_link_slug/456def/?trailing#garbage': 'l,123abc,456def',
// Submission links -> l,POSTID
'https://www.reddit.com/r/subreddit/comments/123abc': 'l,123abc',
'https://www.reddit.com/r/subreddit/comments/123abc/some_link_slug/?trailing#garbage': 'l,123abc',
'https://www.reddit.com/comments/123abc': 'l,123abc',
'https://www.reddit.com/comments/123abc/some_link_slug/?trailing#garbage': 'l,123abc',
'https://new.reddit.com/r/subreddit/comments/123abc': 'l,123abc',
'https://new.reddit.com/r/subreddit/comments/123abc/some_link_slug/?trailing#garbage': 'l,123abc',
'https://new.reddit.com/comments/123abc': 'l,123abc',
'https://new.reddit.com/comments/123abc/some_link_slug/?trailing#garbage': 'l,123abc',
'https://old.reddit.com/r/subreddit/comments/123abc': 'l,123abc',
'https://old.reddit.com/r/subreddit/comments/123abc/some_link_slug/?trailing#garbage': 'l,123abc',
'https://old.reddit.com/comments/123abc': 'l,123abc',
'https://old.reddit.com/comments/123abc/some_link_slug/?trailing#garbage': 'l,123abc',
'https://redd.it/123abc': 'l,123abc',
'https://redd.it/123abc/?trailing#garbage': 'l,123abc',
// Old modmail links -> m,MESSAGEID
'https://www.reddit.com/r/subreddit/message/messages/123abc': 'm,123abc',
'https://www.reddit.com/r/subreddit/message/messages/123abc/?trailing#garbage': 'm,123abc',
'https://www.reddit.com/message/messages/123abc': 'm,123abc',
'https://www.reddit.com/message/messages/123abc/?trailing#garbage': 'm,123abc',
'https://new.reddit.com/r/subreddit/message/messages/123abc': 'm,123abc',
'https://new.reddit.com/r/subreddit/message/messages/123abc/?trailing#garbage': 'm,123abc',
'https://new.reddit.com/message/messages/123abc': 'm,123abc',
'https://new.reddit.com/message/messages/123abc/?trailing#garbage': 'm,123abc',
'https://old.reddit.com/r/subreddit/message/messages/123abc': 'm,123abc',
'https://old.reddit.com/r/subreddit/message/messages/123abc/?trailing#garbage': 'm,123abc',
'https://old.reddit.com/message/messages/123abc': 'm,123abc',
'https://old.reddit.com/message/messages/123abc/?trailing#garbage': 'm,123abc',
// Everything else is passed through as-is, including new modmail
'https://mod.reddit.com/mail/all/123abc': 'https://mod.reddit.com/mail/all/123abc',
'literally anything else': 'literally anything else',
})) {
for (
const [arg, expected] of Object.entries({
// Comment links -> l,POSTID,COMMENTID
'https://www.reddit.com/r/subreddit/comments/123abc/some_link_slug/456def':
'l,123abc,456def',
'https://www.reddit.com/r/subreddit/comments/123abc/some_link_slug/456def/?trailing#garbage':
'l,123abc,456def',
'https://www.reddit.com/comments/123abc/some_link_slug/456def':
'l,123abc,456def',
'https://www.reddit.com/comments/123abc/some_link_slug/456def/?trailing#garbage':
'l,123abc,456def',
'https://new.reddit.com/r/subreddit/comments/123abc/some_link_slug/456def':
'l,123abc,456def',
'https://new.reddit.com/r/subreddit/comments/123abc/some_link_slug/456def/?trailing#garbage':
'l,123abc,456def',
'https://new.reddit.com/comments/123abc/some_link_slug/456def':
'l,123abc,456def',
'https://new.reddit.com/comments/123abc/some_link_slug/456def/?trailing#garbage':
'l,123abc,456def',
'https://old.reddit.com/r/subreddit/comments/123abc/some_link_slug/456def':
'l,123abc,456def',
'https://old.reddit.com/r/subreddit/comments/123abc/some_link_slug/456def/?trailing#garbage':
'l,123abc,456def',
'https://old.reddit.com/comments/123abc/some_link_slug/456def':
'l,123abc,456def',
'https://old.reddit.com/comments/123abc/some_link_slug/456def/?trailing#garbage':
'l,123abc,456def',
// Submission links -> l,POSTID
'https://www.reddit.com/r/subreddit/comments/123abc': 'l,123abc',
'https://www.reddit.com/r/subreddit/comments/123abc/some_link_slug/?trailing#garbage':
'l,123abc',
'https://www.reddit.com/comments/123abc': 'l,123abc',
'https://www.reddit.com/comments/123abc/some_link_slug/?trailing#garbage':
'l,123abc',
'https://new.reddit.com/r/subreddit/comments/123abc': 'l,123abc',
'https://new.reddit.com/r/subreddit/comments/123abc/some_link_slug/?trailing#garbage':
'l,123abc',
'https://new.reddit.com/comments/123abc': 'l,123abc',
'https://new.reddit.com/comments/123abc/some_link_slug/?trailing#garbage':
'l,123abc',
'https://old.reddit.com/r/subreddit/comments/123abc': 'l,123abc',
'https://old.reddit.com/r/subreddit/comments/123abc/some_link_slug/?trailing#garbage':
'l,123abc',
'https://old.reddit.com/comments/123abc': 'l,123abc',
'https://old.reddit.com/comments/123abc/some_link_slug/?trailing#garbage':
'l,123abc',
'https://redd.it/123abc': 'l,123abc',
'https://redd.it/123abc/?trailing#garbage': 'l,123abc',
// Old modmail links -> m,MESSAGEID
'https://www.reddit.com/r/subreddit/message/messages/123abc': 'm,123abc',
'https://www.reddit.com/r/subreddit/message/messages/123abc/?trailing#garbage':
'm,123abc',
'https://www.reddit.com/message/messages/123abc': 'm,123abc',
'https://www.reddit.com/message/messages/123abc/?trailing#garbage':
'm,123abc',
'https://new.reddit.com/r/subreddit/message/messages/123abc': 'm,123abc',
'https://new.reddit.com/r/subreddit/message/messages/123abc/?trailing#garbage':
'm,123abc',
'https://new.reddit.com/message/messages/123abc': 'm,123abc',
'https://new.reddit.com/message/messages/123abc/?trailing#garbage':
'm,123abc',
'https://old.reddit.com/r/subreddit/message/messages/123abc': 'm,123abc',
'https://old.reddit.com/r/subreddit/message/messages/123abc/?trailing#garbage':
'm,123abc',
'https://old.reddit.com/message/messages/123abc': 'm,123abc',
'https://old.reddit.com/message/messages/123abc/?trailing#garbage':
'm,123abc',
// Everything else is passed through as-is, including new modmail
'https://mod.reddit.com/mail/all/123abc':
'https://mod.reddit.com/mail/all/123abc',
'literally anything else': 'literally anything else',
})
) {
t.is(squashPermalink(arg), expected);
}
});

test('expandPermalink', t => {
for (const [arg, expected] of Object.entries({
// Squashed submission links
'l,123abc': 'https://www.reddit.com/comments/123abc',
// Squashed comment links
'l,123abc,456def': 'https://www.reddit.com/comments/123abc/_/456def',
// Squashed old modmail links
'm,123abc': 'https://www.reddit.com/message/messages/123abc',
// Everything else is passed through as-is
'https://www.reddit.com/r/subreddit/comments/123abc/': 'https://www.reddit.com/r/subreddit/comments/123abc/',
'https://mod.reddit.com/mail/all/123abc': 'https://mod.reddit.com/mail/all/123abc',
'literally anything else': 'literally anything else',
})) {
for (
const [arg, expected] of Object.entries({
// Squashed submission links
'l,123abc': 'https://www.reddit.com/comments/123abc',
// Squashed comment links
'l,123abc,456def': 'https://www.reddit.com/comments/123abc/_/456def',
// Squashed old modmail links
'm,123abc': 'https://www.reddit.com/message/messages/123abc',
// Everything else is passed through as-is
'https://www.reddit.com/r/subreddit/comments/123abc/':
'https://www.reddit.com/r/subreddit/comments/123abc/',
'https://mod.reddit.com/mail/all/123abc':
'https://mod.reddit.com/mail/all/123abc',
'literally anything else': 'literally anything else',
})
) {
t.is(expandPermalink(arg), expected);
}
});
Expand Down
Loading

0 comments on commit 0e26c36

Please sign in to comment.