Run oxfmt across repo, add format script and docs

Add .oxfmtignore to skip generated bindings and wasm-pack output.
Add npm format script, update DEVELOPMENT.md for Vite+ toolchain,
and format all non-generated files with oxfmt.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Gregory Schier
2026-03-13 10:15:49 -07:00
parent 45262edfbd
commit b4a1c418bb
664 changed files with 13638 additions and 13492 deletions

View File

@@ -1,4 +1,4 @@
# Basic Authentication
# Basic Authentication
A simple Basic Authentication plugin that implements HTTP Basic Auth according
to [RFC 7617](https://datatracker.ietf.org/doc/html/rfc7617), enabling secure

View File

@@ -1,14 +1,14 @@
{
"name": "@yaak/auth-basic",
"displayName": "Basic Authentication",
"version": "0.1.0",
"private": true,
"description": "Authenticate requests using Basic Auth",
"repository": {
"type": "git",
"url": "https://github.com/mountain-loop/yaak.git",
"directory": "plugins/auth-basic"
},
"private": true,
"version": "0.1.0",
"scripts": {
"build": "yaakcli build",
"dev": "yaakcli dev",

View File

@@ -1,30 +1,30 @@
import type { PluginDefinition } from '@yaakapp/api';
import type { PluginDefinition } from "@yaakapp/api";
export const plugin: PluginDefinition = {
authentication: {
name: 'basic',
label: 'Basic Auth',
shortLabel: 'Basic',
name: "basic",
label: "Basic Auth",
shortLabel: "Basic",
args: [
{
type: 'text',
name: 'username',
label: 'Username',
type: "text",
name: "username",
label: "Username",
optional: true,
},
{
type: 'text',
name: 'password',
label: 'Password',
type: "text",
name: "password",
label: "Password",
optional: true,
password: true,
},
],
async onApply(_ctx, { values }) {
const username = values.username ?? '';
const password = values.password ?? '';
const value = `Basic ${Buffer.from(`${username}:${password}`).toString('base64')}`;
return { setHeaders: [{ name: 'Authorization', value }] };
const username = values.username ?? "";
const password = values.password ?? "";
const value = `Basic ${Buffer.from(`${username}:${password}`).toString("base64")}`;
return { setHeaders: [{ name: "Authorization", value }] };
},
},
};

View File

@@ -1,77 +1,87 @@
import type { Context } from '@yaakapp/api';
import { describe, expect, test } from 'vite-plus/test';
import { plugin } from '../src';
import type { Context } from "@yaakapp/api";
import { describe, expect, test } from "vite-plus/test";
import { plugin } from "../src";
const ctx = {} as Context;
describe('auth-basic', () => {
test('Both username and password', async () => {
describe("auth-basic", () => {
test("Both username and password", async () => {
expect(
await plugin.authentication?.onApply(ctx, {
values: { username: 'user', password: 'pass' },
values: { username: "user", password: "pass" },
headers: [],
url: 'https://yaak.app',
method: 'POST',
contextId: '111',
url: "https://yaak.app",
method: "POST",
contextId: "111",
}),
).toEqual({
setHeaders: [{ name: 'Authorization', value: `Basic ${Buffer.from('user:pass').toString('base64')}` }],
setHeaders: [
{ name: "Authorization", value: `Basic ${Buffer.from("user:pass").toString("base64")}` },
],
});
});
test('Empty password', async () => {
test("Empty password", async () => {
expect(
await plugin.authentication?.onApply(ctx, {
values: { username: 'apikey', password: '' },
values: { username: "apikey", password: "" },
headers: [],
url: 'https://yaak.app',
method: 'POST',
contextId: '111',
url: "https://yaak.app",
method: "POST",
contextId: "111",
}),
).toEqual({
setHeaders: [{ name: 'Authorization', value: `Basic ${Buffer.from('apikey:').toString('base64')}` }],
setHeaders: [
{ name: "Authorization", value: `Basic ${Buffer.from("apikey:").toString("base64")}` },
],
});
});
test('Missing password (undefined)', async () => {
test("Missing password (undefined)", async () => {
expect(
await plugin.authentication?.onApply(ctx, {
values: { username: 'apikey' },
values: { username: "apikey" },
headers: [],
url: 'https://yaak.app',
method: 'POST',
contextId: '111',
url: "https://yaak.app",
method: "POST",
contextId: "111",
}),
).toEqual({
setHeaders: [{ name: 'Authorization', value: `Basic ${Buffer.from('apikey:').toString('base64')}` }],
setHeaders: [
{ name: "Authorization", value: `Basic ${Buffer.from("apikey:").toString("base64")}` },
],
});
});
test('Missing username (undefined)', async () => {
test("Missing username (undefined)", async () => {
expect(
await plugin.authentication?.onApply(ctx, {
values: { password: 'secret' },
values: { password: "secret" },
headers: [],
url: 'https://yaak.app',
method: 'POST',
contextId: '111',
url: "https://yaak.app",
method: "POST",
contextId: "111",
}),
).toEqual({
setHeaders: [{ name: 'Authorization', value: `Basic ${Buffer.from(':secret').toString('base64')}` }],
setHeaders: [
{ name: "Authorization", value: `Basic ${Buffer.from(":secret").toString("base64")}` },
],
});
});
test('No values (both undefined)', async () => {
test("No values (both undefined)", async () => {
expect(
await plugin.authentication?.onApply(ctx, {
values: {},
headers: [],
url: 'https://yaak.app',
method: 'POST',
contextId: '111',
url: "https://yaak.app",
method: "POST",
contextId: "111",
}),
).toEqual({
setHeaders: [{ name: 'Authorization', value: `Basic ${Buffer.from(':').toString('base64')}` }],
setHeaders: [
{ name: "Authorization", value: `Basic ${Buffer.from(":").toString("base64")}` },
],
});
});
});