No description
This repository has been archived on 2025-07-31. You can view files and clone it, but you cannot make any changes to its state, such as pushing and creating new issues, pull requests or comments.
Find a file
jars 7640afb0b0
Some checks failed
CodeQL / Analyze (push) Has been cancelled
CI / build (push) Has been cancelled
fix renovate config
2025-07-30 20:59:56 +02:00
.github/workflows upgrade minimum Node version to v20 2024-08-27 18:53:38 +02:00
scripts lint fixes 2024-08-24 21:19:05 +02:00
src newline 2024-08-24 21:19:09 +02:00
tests lint fixes 2024-08-24 21:19:05 +02:00
.editorconfig Update .editorconfig 2021-06-21 08:20:40 +02:00
.gitignore ignore DS_Store 2023-02-24 22:44:45 +01:00
eslint.config.mjs remove old env key 2024-08-24 21:00:12 +02:00
eslint.dev.config.mjs create separate eslint config for dev scripts 2024-08-24 21:18:47 +02:00
LICENSE update copyright year 2023-02-24 22:52:38 +01:00
package.json Update dependency esbuild to ^0.25.8 (#475) 2025-07-21 11:41:36 +00:00
pnpm-lock.yaml Update dependency esbuild to ^0.25.8 (#475) 2025-07-21 11:41:36 +00:00
README.md fix build status badge 2024-08-27 19:19:58 +02:00
renovate.json fix renovate config 2025-07-30 20:59:56 +02:00
tsconfig.browser.json split tsconfigs 2021-08-10 16:13:28 +02:00
tsconfig.json temporarily add undici-types to fix CI builds 2024-08-27 19:17:06 +02:00
tsconfig.node.json split tsconfigs 2021-08-10 16:13:28 +02:00

gizmo-api

A minimal wrapper for interfacing with the Gizmo API.

Table of Contents

Installation

Node

npm i gizmo-api

Browser

<script src="https://cdn.gizmo.moe/scripts/gizmo-api@1.2.7.bundle.js"></script>

<script>
    // Module will then be exposed under the variable 'gizmo'
</script>

Building

If you want to build the module and bundle from source, use the following command:

npm run build

Or alternatively, you can either build the browser bundle or node module separately.

npm run build:node
npm run build:browser

Usage

JavaScript (CommonJS)

const gizmo = require("gizmo-api");

TypeScript (ESM)

import gizmo from "gizmo-api";

Example

Simple user search:

import { searchForUser } from "gizmo-api";

searchForUser("tja").then(user => {
    console.log(user);
});

This will log the following:

{
    "id": 1,
    "username": "Tjaz",
    "badges": [ "DEVELOPER", "MODERATOR" ],
    "avatar_url": "https://cdn.gizmo.moe/uploads/avatars/...",
    "banner_url": "https://cdn.gizmo.moe/uploads/banners/...",
    "about_me": "...",
    "created_at": 1534514387
}

Documentation

You are limited to 1 request per 0.1 seconds!

Types

User

A base user.

import type { User } from "gizmo-api"

interface User {
    id: number;
    username: string;
    badges: Badge[];
    avatar_url: string | null;
    banner_url: string | null;
    about_me: string;
    created_at: number;
}

Badge

The badge union.

import type { Badge } from "gizmo-api"

type Badge = "DEVELOPER" | "MODERATOR";

To check for whether a user has a certain badge, use the provided enum and method:

import { userHasBadge, BADGES } from "gizmo-api"

const BADGES = {
    DEVELOPER: "DEVELOPER",
    MODERATOR: "MODERATOR"
};

userHasBadge(user, BADGES.DEVELOPER);

Or alternatively, you can do the checking manually:

import { BADGES } from "gizmo-api"

user.badges.includes(BADGES.DEVELOPER);

AuthenticatedUser

interface AuthenticatedUser extends User {
    token: string;
}

Methods

Fetching a specific user by their ID

function getUserById (id: number): Promise<User>;

Fetching a specific user by their token

function getAuthenticatedUser (token: string): Promise<User>;

Searching for a user

type UserID = number;
type Username = string;
type SearchQuery = UserID | Username;

function searchForUser (query: SearchQuery): Promise<User>;

Logging in and receiving the token

function login (username: string, password: string): Promise<AuthenticatedUser>;

Checking if a user has a badge

function userHasBadge (user: User | AuthenticatedUser, badge: Badge): boolean;