Skip to content

lightstands/lightstands-js

Repository files navigation

lightstands-js

TypeScript/JavaScript LightStands client library

Installation

  • pnpm add lightstands-js
  • yarn add lightstands-js
  • npm i --save lightstands-js

Moving to fetch()

As of 1.4.4, new functions will be written using the Fetch API and the Streams API. There are not changes to the compatibility table.

The Fetch API is natively supported by browsers and provides a clean interface for reqesting remote resources. The axios library, which is the original library used, still uses XMLHTTPRequest because the Fetch API lacks the ability to track upload progress. Since lightstands-js rarely need this feature and the Fetch API has a better performance, we decided to move this step.

Old functions introduced before 1.4.4 still use the code generated by openapi-typescript-codegen (using axios) in 1.4.4. We will start moving old functions with the Fetch API in 1.5.0, and remove all generated code and axios in major version 2. This will be a siginificant reduction in the size of this library's package.

Usage

LightStandsJS is designed in functional programming pattern for better tree-shaking support.

Most supported endpoint will end up a function, and expect a ClientConfig as the first argument.

import { ClientConfig, get204, aeither } from 'lightstands-js';

const client: ClientConfig = {
  endpointBase: 'https://api.lightstands.xyz/moutsea/',
  clientId: '<client id>',
  clientSecret: '<client secret>',
};

aeither(
  {
    left: (e) => console.log('failed to connect LightStands'),
    right: (v) => v,
  },
  get204(client),
);

It's very recommended to use TypeScript since the whole library is bulit around TypeScript type system.

Contributing

You should clone submodules when cloning this repository:

git clone --recursive https://github.com/lightstands/lightstands-js.git

If you already clone without submodules, use git submodule update to clone submodules.

Please install pre-commit hook by pre-commit before doing any contribution:

pre-commit install

Maintainer: Rubicon <rubicon lightstands.xyz> (Replace the space with at symbol)

Versioning

This library uses a strange versioning semantic, see Versioning LightStands-JS.

The version representation still follows "n.n.n", and it's safe to upgrade if the new version is only changed at the last number.

License

MIT License, see LICENSE.

If you contributed any file in this software, you are a "contributor". You, a contributor, hereby be granted:

  • the permission to add your identity to CONTRIBUTORS file, to become a "registered contributor".

You must grant anyone that is:

  • contributing this software
  • using this software under the LICENSE

with:

  • the permission to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of this software and to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of any material is required to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of this software.