add typedefs for uv config
This commit is contained in:
parent
6ce344c267
commit
67fd1bce6a
4 changed files with 99 additions and 1 deletions
1
src/global.d.ts
vendored
Normal file
1
src/global.d.ts
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
declare const __uv$config: import('./uv').UVConfig;
|
||||||
|
|
@ -37,7 +37,15 @@ import { openDB } from 'idb';
|
||||||
import BareClient from '@tomphttp/bare-client';
|
import BareClient from '@tomphttp/bare-client';
|
||||||
import EventEmitter from 'events';
|
import EventEmitter from 'events';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @typedef {import('../uv.js').UVConfig} UVConfig
|
||||||
|
*/
|
||||||
|
|
||||||
class Ultraviolet {
|
class Ultraviolet {
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param {UVConfig} [options]
|
||||||
|
*/
|
||||||
constructor(options = {}) {
|
constructor(options = {}) {
|
||||||
this.prefix = options.prefix || '/service/';
|
this.prefix = options.prefix || '/service/';
|
||||||
//this.urlRegex = /^(#|about:|data:|mailto:|javascript:)/;
|
//this.urlRegex = /^(#|about:|data:|mailto:|javascript:)/;
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
/*global Ultraviolet*/
|
/*global Ultraviolet*/
|
||||||
self.__uv$config = {
|
self.__uv$config = {
|
||||||
prefix: '/service/',
|
prefix: '/service/',
|
||||||
bare: 'https://uv.holyubofficial.net/',
|
bare: '/bare/',
|
||||||
encodeUrl: Ultraviolet.codec.xor.encode,
|
encodeUrl: Ultraviolet.codec.xor.encode,
|
||||||
decodeUrl: Ultraviolet.codec.xor.decode,
|
decodeUrl: Ultraviolet.codec.xor.decode,
|
||||||
handler: '/uv.handler.js',
|
handler: '/uv.handler.js',
|
||||||
|
|
|
||||||
89
src/uv.d.ts
vendored
89
src/uv.d.ts
vendored
|
|
@ -3,3 +3,92 @@ const UVClient: typeof import('./client/index').default;
|
||||||
|
|
||||||
export type UltravioletCtor = typeof Ultraviolet;
|
export type UltravioletCtor = typeof Ultraviolet;
|
||||||
export type UVClientCtor = typeof UVClient;
|
export type UVClientCtor = typeof UVClient;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The proxy part of the URL.
|
||||||
|
*/
|
||||||
|
type Coded = string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The URL encoder.
|
||||||
|
* Encoders will have to encode the result using encodeURLComponent.
|
||||||
|
*/
|
||||||
|
export type UVEncode = (input: Coded) => string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The URL encoder.
|
||||||
|
* Decoders will have to decode the input first using decodeURLComponent.
|
||||||
|
*/
|
||||||
|
export type UVDecode = (input: Coded) => string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Ultraviolet configuration object.
|
||||||
|
*/
|
||||||
|
export interface UVConfig {
|
||||||
|
/**
|
||||||
|
* The Bare server(s) to use.
|
||||||
|
* If an array is specified, the service worker will randomly select a server to use.
|
||||||
|
* The selected server will be used for the duration of the session.
|
||||||
|
* Both relative and absolute paths are accepted. Relative paths are resolved to the current URL.
|
||||||
|
* @example // A Bare server running on the subdomain `bare.`, automatically correcting the apex record:
|
||||||
|
* `${location.protocol}//bare.${location.host.replace(/^www\./, "")}
|
||||||
|
* @example `http://localhost:8080/`
|
||||||
|
* @example `http://localhost:8080/bare/`
|
||||||
|
* @defaultValue `/bare/`
|
||||||
|
* @see {@link|https://github.com/tomphttp/specifications/blob/master/BareServer.md}
|
||||||
|
*/
|
||||||
|
bare?: string | string[];
|
||||||
|
/**
|
||||||
|
* The prefix for Ultraviolet to listen on.
|
||||||
|
* @example `https://example.org/uv/service/`
|
||||||
|
* @example `/uv/service/`
|
||||||
|
* @defaultValue `/service/`
|
||||||
|
*/
|
||||||
|
prefix?: string;
|
||||||
|
/**
|
||||||
|
* The path to the Ultraviolet client script.
|
||||||
|
* Both relative and absolute paths are accepted. Relative paths are resolved to the current URL
|
||||||
|
* @example `/uv/uv.client.js`,
|
||||||
|
* @defaultValue `/uv.client.js` or if bundle is specified and the filename is `uv.bundle.js`, the directory of the bundle + `uv.client.js` will be used automatically
|
||||||
|
*/
|
||||||
|
client?: string;
|
||||||
|
/**
|
||||||
|
* The path to the Ultraviolet service worker script.
|
||||||
|
* Both relative and absolute paths are accepted. Relative paths are resolved to the current URL
|
||||||
|
* @example `/uv/uv.sw.js`,
|
||||||
|
* @defaultValue `/uv.sw.js`
|
||||||
|
*/
|
||||||
|
handler?: string;
|
||||||
|
/**
|
||||||
|
* The path to the Ultraviolet service worker script.
|
||||||
|
* Both relative and absolute paths are accepted. Relative paths are resolved to the current URL
|
||||||
|
* @example `/uv/uv.sw.js`,
|
||||||
|
* @defaultValue `/uv.sw.js`
|
||||||
|
*/
|
||||||
|
bundle?: string;
|
||||||
|
/**
|
||||||
|
* The path to the Ultraviolet service worker script.
|
||||||
|
* Both relative and absolute paths are accepted. Relative paths are resolved to the current URL
|
||||||
|
* @example `/uv/uv.config.js`,
|
||||||
|
* @defaultValue `/uv.config.js`
|
||||||
|
*/
|
||||||
|
config?: string;
|
||||||
|
/**
|
||||||
|
* The path to the Ultraviolet service worker script.
|
||||||
|
* Both relative and absolute paths are accepted. Relative paths are resolved to the current URL
|
||||||
|
* @example `/uv/uv.sw.js`,
|
||||||
|
* @defaultValue `/uv.sw.js`
|
||||||
|
*/
|
||||||
|
sw?: string;
|
||||||
|
/**
|
||||||
|
* The URL encoder.
|
||||||
|
* @defaultValue `Ultraviolet.codec.xor.encode`
|
||||||
|
*/
|
||||||
|
encodeUrl?: UVEncode;
|
||||||
|
/**
|
||||||
|
* The URL decoder.
|
||||||
|
* @defaultValue `Ultraviolet.codec.xor.encode`
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
decodeUrl?: UVDecode;
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue