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 🙏

© 2025 – Pkg Stats / Ryan Hefner

@saasly/saasly-sdk

v0.0.54

Published

`npm i @saasly/[email protected]`

Downloads

10

Readme

npm i @saasly/[email protected]

Recent changes

update/create time is relative to package publish time

  • builtJsonGetForExtensionDevelopment({extensionId, branchId, startFromCommitId}) link (Created 17 hours ago)

  • changeCreate({relatedObjectId, type, data, commitId}) link (Created 9 months ago)

Table of Contents

Collection: Branch link

  • branchCreate({relatedObjectId, name, pointingToCommitId, parentBranchId}) link

  • branchFork({branchId, name}) link

  • branchGet({branchId}) link

  • branchGetFullCommitsHistory({branchId}) link

  • branchGetLastCommit({branchId}) link

  • branchGetSelected({relatedObjectId}) link

  • branchList({relatedObjectId, parentBranchId, page, perPage}) link

  • branchMerge({commitId, fromBranchId}) link

  • branchRemove({branchId}) link

  • branchSetSelected({branchId}) link

  • branchUpdate({branchId, name}) link

Collection: Built Json link

  • builtJsonGetForExtensionDevelopment({extensionId, branchId, startFromCommitId}) link

Collection: Change link

  • changeCommit({changeId, commitId}) link

  • changeCreate({relatedObjectId, type, data, commitId}) link

  • changeGet({changeId}) link

  • changeList({relatedObjectId, page, perPage, stashId, stagedAtFrom, stagedAtTo, doShowUncommittedOnly, commitId}) link

  • changeListByCommit({commitId, page, perPage}) link

  • changeMassRemove({relatedObjectId, arrayOfChangeId}) link

  • changeStage({changeId}) link

  • changeUnstage({changeId}) link

Collection: Commit link

  • commitCountMyCommits({toBranchId, doCountNotPushedOnly, doCountPushedOnly, doCountNotMergedOnly, doCountMergedOnly, relatedObjectId, changesCountFrom, changesCountTo, createdAtFrom, createdAtTo}) link

  • commitCreate({toBranchId, message, arrayOfChangeId, parentCommitId, previousCommitId, details}) link

  • commitGet({commitId}) link

  • commitGetMyNotPushedCommit({branchId}) link

  • commitList({relatedObjectId, page, perPage}) link

  • commitListByToBranch({toBranchId, page, perPage, doListNotPushedOnly, doListPushedOnly, doListNotMergedOnly, doListMergedOnly, relatedObjectId, changesCountFrom, changesCountTo, createdAtFrom, createdAtTo}) link

  • commitListByUser({page, perPage}) link

  • commitListMyNotPushedCommits({toBranchId, page, perPage}) link

  • commitPush({commitId}) link

  • commitSetSelected({relatedObjectId, commitId}) link

  • commitUpdate({commitId, message, details}) link

  • commitUpdateNotPushed({commitId, message, details}) link

Collection: Extension link

  • extensionCreate({workspaceId, name}) link

  • extensionGet({extensionId}) link

  • extensionListInWorkspace({workspaceId, page, perPage}) link

  • extensionUpdate({extensionId, name}) link

Collection: Notification link

  • notificationCountUnread({}) link

  • notificationGet({notificationId}) link

  • notificationList({page, perPage}) link

  • notificationMarkAsRead({notificationIdArray}) link

  • notificationRemove({notificationId}) link

Collection: Pin link

  • pinBranch({branchId}) link

Collection: Project link

  • projectCreate({workspaceId, name}) link

  • projectGet({projectId}) link

  • projectList({workspaceId, page, perPage}) link

  • projectRemove({workspaceId, projectId}) link

  • projectUpdate({projectId, workspaceId, name}) link

Collection: Stash link

  • stashApply({stashId, doRemoveAfterApply}) link

  • stashCreate({relatedObjectId, arrayOfChangeId, name}) link

  • stashList({relatedObjectId, page, perPage}) link

  • stashRemove({stashId}) link

  • stashUpdate({stashId, name}) link

Collection: Team link

  • teamCreate({workspaceId, name}) link

  • teamGet({teamId, workspaceId}) link

  • teamList({workspaceId, searchQuery, page, perPage}) link

  • teamMemberAdd({workspaceId, teamId, memberId}) link

  • teamMemberGet({workspaceId, memberId, userId}) link

  • teamMemberList({workspaceId, page, perPage, teamId, isEnabled, searchQuery, role}) link

  • teamMemberRemove({workspaceId, teamId, memberId}) link

Collection: Unpin link

  • unpinBranch({branchId}) link

Collection: User link

  • userGet({}) link

  • userLogin({email, password}) link

  • userLogout({}) link

  • userRegister({email, password, name}) link

  • userSetSelectedWorkspaceId({selectedWorkspaceId}) link

  • userUnsetSelectedWorkspaceId({}) link

Collection: Workspace link

  • workspaceCreate({name}) link

  • workspaceGet({workspaceId}) link

  • workspaceList({searchQuery, page, perPage}) link

  • workspaceMemberAdd({workspaceId, memberEmail, name}) link

  • workspaceMemberList({workspaceId, page, perPage, isEnabled, searchQuery, role}) link

  • workspaceMemberUpdate({memberId, workspaceId, isEnabled, name}) link

  • workspaceSetOwner({workspaceId, newOwnerMemberId}) link

  • workspaceUpdate({workspaceId, name}) link


Available methods:

Collection: Branch

branchCreate

POST /branch/create

  • relatedObjectId (Required) One of: project id, extension id
  • name (Required) Any string of 0-120 symbols in length.
  • pointingToCommitId (Required) String 10-30 in length and starting with "c-"
  • parentBranchId (Optional) String 10-30 in length and starting with "b-"

branchFork

POST /branch/fork

  • branchId (Required) String 10-30 in length and starting with "b-"
  • name (Required) Any string of 0-120 symbols in length.

branchGet

POST /branch/get

  • branchId (Required) String 10-30 in length and starting with "b-"

branchGetFullCommitsHistory

POST /branch/get-full-commits-history

  • branchId (Required) String 10-30 in length and starting with "b-"

branchGetLastCommit

POST /branch/get-last-commit

  • branchId (Required) String 10-30 in length and starting with "b-"

branchGetSelected

POST /branch/get-selected

  • relatedObjectId (Required) One of: project id, extension id

branchList

POST /branch/list

  • relatedObjectId (Required) One of: project id, extension id
  • parentBranchId (Optional) String 10-30 in length and starting with "b-"
  • page (Required) Must be any integer from 1 and up. First page is "1"
  • perPage (Required) Any positive integer. Range: (0,1000]

branchMerge

POST /branch/merge

  • commitId (Required) String 10-30 in length and starting with "c-"
  • fromBranchId (Required) String 10-30 in length and starting with "b-"

branchRemove

POST /branch/remove

  • branchId (Required) String 10-30 in length and starting with "b-"

branchSetSelected

POST /branch/set-selected

  • branchId (Required) String 10-30 in length and starting with "b-"

branchUpdate

POST /branch/update

  • branchId (Required) String 10-30 in length and starting with "b-"
  • name (Required) Any string of 0-120 symbols in length.

Collection: Built Json

builtJsonGetForExtensionDevelopment

POST /built-json/get-for-extension-development

  • extensionId (Required) String 10-30 in length and starting with "ext-"
  • branchId (Required) String 10-30 in length and starting with "b-"
  • startFromCommitId (Required) String 10-30 in length and starting with "c-"

Collection: Change

changeCommit

POST /change/commit

  • changeId (Required) String 10-30 in length and starting with "ch-"
  • commitId (Required) String 10-30 in length and starting with "c-"

changeCreate

POST /change/create

  • relatedObjectId (Required) One of: project id, extension id
  • type (Required) SHOULD_BE_CONSTANT or one of the hand picked lowercase types
  • data (Required) JS object. Not null, could be empty object without any keys.
  • commitId (Optional) String 10-30 in length and starting with "c-"

changeGet

POST /change/get

  • changeId (Required) String 10-30 in length and starting with "ch-"

changeList

POST /change/list

  • relatedObjectId (Required) One of: project id, extension id
  • page (Required) Must be any integer from 1 and up. First page is "1"
  • perPage (Required) Any positive integer. Range: (0,1000]
  • stashId (Required) String 10-30 in length and starting with "st-"
  • stagedAtFrom (Optional) Must be positive integer or zero
  • stagedAtTo (Optional) Must be positive integer or zero
  • doShowUncommittedOnly (Optional) Value is a boolean. True or false.
  • commitId (Optional) String 10-30 in length and starting with "c-"

changeListByCommit

POST /change/list-by-commit

  • commitId (Required) String 10-30 in length and starting with "c-"
  • page (Required) Must be any integer from 1 and up. First page is "1"
  • perPage (Required) Any positive integer. Range: (0,1000]

changeMassRemove

POST /change/mass-remove

  • relatedObjectId (Required) One of: project id, extension id
  • arrayOfChangeId (Required) Is array of change ids valid

changeStage

POST /change/stage

  • changeId (Required) String 10-30 in length and starting with "ch-"

changeUnstage

POST /change/unstage

  • changeId (Required) String 10-30 in length and starting with "ch-"

Collection: Commit

commitCountMyCommits

POST /commit/count-my-commits

  • toBranchId (Optional) String 10-30 in length and starting with "b-"
  • doCountNotPushedOnly (Optional) Value is a boolean. True or false.
  • doCountPushedOnly (Optional) Value is a boolean. True or false.
  • doCountNotMergedOnly (Optional) Value is a boolean. True or false.
  • doCountMergedOnly (Optional) Value is a boolean. True or false.
  • relatedObjectId (Optional) One of: project id, extension id
  • changesCountFrom (Optional) Must be positive integer or zero
  • changesCountTo (Optional) Must be positive integer or zero
  • createdAtFrom (Optional) Must be positive integer or zero
  • createdAtTo (Optional) Must be positive integer or zero

commitCreate

POST /commit/create

  • toBranchId (Required) String 10-30 in length and starting with "b-"
  • message (Required) Any string of 0-120 symbols in length.
  • arrayOfChangeId (Required) Is array of change ids valid
  • parentCommitId (Optional) String 10-30 in length and starting with "c-"
  • previousCommitId (Required) String 10-30 in length and starting with "c-"
  • details (Optional) Any text

commitGet

POST /commit/get

  • commitId (Required) String 10-30 in length and starting with "c-"

commitGetMyNotPushedCommit

POST /commit/get-my-not-pushed-commit

  • branchId (Required) String 10-30 in length and starting with "b-"

commitList

POST /commit/list

  • relatedObjectId (Required) One of: project id, extension id
  • page (Required) Must be any integer from 1 and up. First page is "1"
  • perPage (Required) Any positive integer. Range: (0,1000]

commitListByToBranch

POST /commit/list-by-to-branch

  • toBranchId (Required) String 10-30 in length and starting with "b-"
  • page (Required) Must be any integer from 1 and up. First page is "1"
  • perPage (Required) Any positive integer. Range: (0,1000]
  • doListNotPushedOnly (Optional) Value is a boolean. True or false.
  • doListPushedOnly (Optional) Value is a boolean. True or false.
  • doListNotMergedOnly (Optional) Value is a boolean. True or false.
  • doListMergedOnly (Optional) Value is a boolean. True or false.
  • relatedObjectId (Optional) One of: project id, extension id
  • changesCountFrom (Optional) Must be positive integer or zero
  • changesCountTo (Optional) Must be positive integer or zero
  • createdAtFrom (Optional) Must be positive integer or zero
  • createdAtTo (Optional) Must be positive integer or zero

commitListByUser

POST /commit/list-by-user

  • page (Required) Must be any integer from 1 and up. First page is "1"
  • perPage (Required) Any positive integer. Range: (0,1000]

commitListMyNotPushedCommits

POST /commit/list-my-not-pushed-commits

  • toBranchId (Required) String 10-30 in length and starting with "b-"
  • page (Required) Must be any integer from 1 and up. First page is "1"
  • perPage (Required) Any positive integer. Range: (0,1000]

commitPush

POST /commit/push

  • commitId (Required) String 10-30 in length and starting with "c-"

commitSetSelected

POST /commit/set-selected

  • relatedObjectId (Required) One of: project id, extension id
  • commitId (Required) String 10-30 in length and starting with "c-"

commitUpdate

POST /commit/update

  • commitId (Required) String 10-30 in length and starting with "c-"
  • message (Required) Any string of 0-120 symbols in length.
  • details (Optional) Any text

commitUpdateNotPushed

POST /commit/update-not-pushed

  • commitId (Required) String 10-30 in length and starting with "c-"
  • message (Optional) Any string of 0-120 symbols in length.
  • details (Optional) Any text

Collection: Extension

extensionCreate

POST /extension/create

  • workspaceId (Required) String 10-30 in length and starting with "wsp-"
  • name (Required) String. 1 to 50 symbols in length.

extensionGet

POST /extension/get

  • extensionId (Required) String 10-30 in length and starting with "ext-"

extensionListInWorkspace

POST /extension/list-in-workspace

  • workspaceId (Required) String 10-30 in length and starting with "wsp-"
  • page (Required) Must be any integer from 1 and up. First page is "1"
  • perPage (Required) Any positive integer. Range: (0,1000]

extensionUpdate

POST /extension/update

  • extensionId (Required) String 10-30 in length and starting with "ext-"
  • name (Required) String. 1 to 50 symbols in length.

Collection: Notification

notificationCountUnread

POST /notification/count-unread

notificationGet

POST /notification/get

  • notificationId (Required) String 10-30 in length and starting with "no-"

notificationList

POST /notification/list

  • page (Required) Must be any integer from 1 and up. First page is "1"
  • perPage (Required) Any positive integer. Range: (0,1000]

notificationMarkAsRead

POST /notification/mark-as-read

  • notificationIdArray (Required) Is array of notification ids valid

notificationRemove

POST /notification/remove

  • notificationId (Required) String 10-30 in length and starting with "no-"

Collection: Pin

pinBranch

POST /pin/branch

  • branchId (Required) String 10-30 in length and starting with "b-"

Collection: Project

projectCreate

POST /project/create

  • workspaceId (Required) String 10-30 in length and starting with "wsp-"
  • name (Required) Any string of 0-120 symbols in length.

projectGet

POST /project/get

  • projectId (Required) String 10-30 in length and starting with "p-"

projectList

POST /project/list

  • workspaceId (Required) String 10-30 in length and starting with "wsp-"
  • page (Required) Must be any integer from 1 and up. First page is "1"
  • perPage (Required) Any positive integer. Range: (0,1000]

projectRemove

POST /project/remove

  • workspaceId (Required) String 10-30 in length and starting with "wsp-"
  • projectId (Required) String 10-30 in length and starting with "p-"

projectUpdate

POST /project/update

  • projectId (Required) String 10-30 in length and starting with "p-"
  • workspaceId (Required) String 10-30 in length and starting with "wsp-"
  • name (Required) Any string of 0-120 symbols in length.

Collection: Stash

stashApply

POST /stash/apply

  • stashId (Required) String 10-30 in length and starting with "st-"
  • doRemoveAfterApply (Required) Value is a boolean. True or false.

stashCreate

POST /stash/create

  • relatedObjectId (Required) One of: project id, extension id
  • arrayOfChangeId (Required) Is array of change ids valid
  • name (Required) Any string of 0-120 symbols in length.

stashList

POST /stash/list

  • relatedObjectId (Required) One of: project id, extension id
  • page (Required) Must be any integer from 1 and up. First page is "1"
  • perPage (Required) Any positive integer. Range: (0,1000]

stashRemove

POST /stash/remove

  • stashId (Required) String 10-30 in length and starting with "st-"

stashUpdate

POST /stash/update

  • stashId (Required) String 10-30 in length and starting with "st-"
  • name (Required) Any string of 0-120 symbols in length.

Collection: Team

teamCreate

POST /team/create

  • workspaceId (Required) String 10-30 in length and starting with "wsp-"
  • name (Required) String. 1 to 50 symbols in length.

teamGet

POST /team/get

  • teamId (Required) String 10-30 in length and starting with "t-"
  • workspaceId (Required) String 10-30 in length and starting with "wsp-"

teamList

POST /team/list

  • workspaceId (Required) String 10-30 in length and starting with "wsp-"
  • searchQuery (Optional) Any string of 0-120 symbols in length.
  • page (Required) Must be any integer from 1 and up. First page is "1"
  • perPage (Required) Any positive integer. Range: (0,1000]

teamMemberAdd

POST /team/member-add

  • workspaceId (Required) String 10-30 in length and starting with "wsp-"
  • teamId (Required) String 10-30 in length and starting with "t-"
  • memberId (Required) String 10-30 in length and starting with "me-"

teamMemberGet

POST /team/member-get

  • workspaceId (Required) String 10-30 in length and starting with "wsp-"
  • memberId (Optional) String 10-30 in length and starting with "me-"
  • userId (Optional) String 10-30 in length and starting with "u-"

teamMemberList

POST /team/member-list

  • workspaceId (Required) String 10-30 in length and starting with "wsp-"
  • page (Required) Must be any integer from 1 and up. First page is "1"
  • perPage (Required) Any positive integer. Range: (0,1000]
  • teamId (Optional) String 10-30 in length and starting with "t-"
  • isEnabled (Optional) Value is a boolean. True or false.
  • searchQuery (Optional) Any string of 0-120 symbols in length.
  • role (Optional) one of: owner, admin, member

teamMemberRemove

POST /team/member-remove

  • workspaceId (Required) String 10-30 in length and starting with "wsp-"
  • teamId (Required) String 10-30 in length and starting with "t-"
  • memberId (Required) String 10-30 in length and starting with "me-"

Collection: Unpin

unpinBranch

POST /unpin/branch

  • branchId (Required) String 10-30 in length and starting with "b-"

Collection: User

userGet

POST /user/get

userLogin

POST /user/login

  • email (Required) Valid email address
  • password (Required) Checks if password is 7-50 symbols in length

userLogout

POST /user/logout

userRegister

POST /user/register

  • email (Required) Valid email address
  • password (Required) Checks if password is 7-50 symbols in length
  • name (Required) String. 1 to 50 symbols in length.

userSetSelectedWorkspaceId

POST /user/set-selected-workspace-id

  • selectedWorkspaceId (Required) String 10-30 in length and starting with "wsp-"

userUnsetSelectedWorkspaceId

POST /user/unset-selected-workspace-id

Collection: Workspace

workspaceCreate

POST /workspace/create

  • name (Required) String. 1 to 50 symbols in length.

workspaceGet

POST /workspace/get

  • workspaceId (Required) String 10-30 in length and starting with "wsp-"

workspaceList

POST /workspace/list

  • searchQuery (Optional) Any string of 0-120 symbols in length.
  • page (Required) Must be any integer from 1 and up. First page is "1"
  • perPage (Required) Any positive integer. Range: (0,1000]

workspaceMemberAdd

POST /workspace/member-add

  • workspaceId (Required) String 10-30 in length and starting with "wsp-"
  • memberEmail (Required) Valid email address
  • name (Required) String. 1 to 50 symbols in length.

workspaceMemberList

POST /workspace/member-list

  • workspaceId (Required) String 10-30 in length and starting with "wsp-"
  • page (Required) Must be any integer from 1 and up. First page is "1"
  • perPage (Required) Any positive integer. Range: (0,1000]
  • isEnabled (Optional) Value is a boolean. True or false.
  • searchQuery (Optional) Any string of 0-120 symbols in length.
  • role (Optional) String 10-30 in length and starting with "mtt-"

workspaceMemberUpdate

POST /workspace/member-update

  • memberId (Required) String 10-30 in length and starting with "me-"
  • workspaceId (Required) String 10-30 in length and starting with "wsp-"
  • isEnabled (Optional) Value is a boolean. True or false.
  • name (Optional) String. 1 to 50 symbols in length.

workspaceSetOwner

POST /workspace/set-owner

  • workspaceId (Required) String 10-30 in length and starting with "wsp-"
  • newOwnerMemberId (Required) String 10-30 in length and starting with "me-"

workspaceUpdate

POST /workspace/update

  • workspaceId (Required) String 10-30 in length and starting with "wsp-"
  • name (Optional) Any string of 0-120 symbols in length.