release: Mark VIII 1.0

This commit is contained in:
c4ch3c4d3
2026-08-11 20:24:24 -07:00
commit 3e1805dab8
86 changed files with 20678 additions and 0 deletions
@@ -0,0 +1,42 @@
'use strict';
const PagerAPI = (() => {
let apiBase = '';
let on401 = null;
async function request(method, path, body) {
const opts = { method, headers: {}, credentials: 'include' };
if (body !== undefined) {
opts.headers['Content-Type'] = 'application/json';
opts.body = JSON.stringify(body);
}
const res = await fetch(apiBase + path, opts);
if (res.status === 401) {
if (on401) on401();
throw new Error('unauthorized');
}
const ct = res.headers.get('Content-Type') || '';
let data;
if (ct.indexOf('json') !== -1) {
try { data = await res.json(); }
catch (e) { data = null; }
} else {
data = await res.text();
}
if (!res.ok) {
const message = data && data.error ? data.error : ('HTTP ' + res.status);
const error = new Error(message);
error.status = res.status;
error.data = data;
throw error;
}
return { status: res.status, data };
}
return {
setBase: (b) => { apiBase = b; },
on401: (fn) => { on401 = fn; },
get: (p) => request('GET', p),
post: (p, b) => request('POST', p, b === undefined ? {} : b),
del: (p, b) => request('DELETE', p, b === undefined ? {} : b),
login: async (username, password) => request('POST', '/api/login', { username, password })
};
})();