npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@ukwhatn/wikidot

v1.0.10

Published

Library for requesting data to Wikidot

Downloads

2

Readme

wikidot-ts - A TypeScript library for making requests to the Wikidot sites.

Installation

npm install @ukwhatn/wikidot

Usage

[!NOTE] You can use this library without logging in, but you can only use the features that do not require logging in.

import {Client} from "@ukwhatn/wikidot";

// Create a new Client class and logging in with the credentials of your wikidot account
// If you don't want to log in:
//   const client = await Client.init();
const client = await Client.init('input-your-name', 'input-your-password');

// ------
// user features
// ------
// Get the user object of the user
const user = await client.user.get('input-a-username');
// Bulk execution by asynchronous request
const users = await client.user.getBulk(['input-a-username', 'input-another-username']);

// ------
// site features
// ------
// Get the site object of the SCP Foundation
const site = await client.site.get('scp-wiki');

// invite a user to the site
await site.inviteUser(user)

// Get all unprocessed applications for the site
const applications = await site.getApplications()

// process an application
for (const application of applications) {
    application.accept()
    // or 
    application.reject()
}

// ------
// page features
// ------
// Search pages by some criteria
// NOTE: The search criteria are the same as in the ListPages module
pages = await site.pages.search({
    category: "_default",
    tags: ["tag1", "tag2"],  // You can also use the "tag1 -tag2" syntax
    order: "created_at desc desc",
    limit: 10,
})

// Get the page object of the SCP-001
const page = await site.page.get('scp-001')

// destroy a page
await page.destroy()

// ------
// private message features
// ------
// Get messages in your inbox
const receivedMessages = await client.privateMessage.getInbox()

// Get messages in your sent box
const sentMessages = await client.privateMessage.getSentbox()

// Get message by id
// NOTE: You can only get the message that you have received or sent
message = client.privateMessage.getMessage(123456)
// Bulk execution by asynchronous request
messages = client.privateMessage.getMessages([123456, 123457])

// Send a message to a user
await client.privateMessage.send(
    recipient = user,
    subject = 'Hello',
    body = 'Hello, world!'
)