@yankeeinlondon/claudine
Version:
A simple library to help with Claude Code
73 lines (68 loc) • 2.41 kB
JavaScript
//#region rolldown:runtime
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
key = keys[i];
if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
get: ((k) => from[k]).bind(null, key),
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
});
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
value: mod,
enumerable: true
}) : target, mod));
//#endregion
const node_readline = __toESM(require("node:readline"));
const inferred_types = __toESM(require("inferred-types"));
const __yankeeinlondon_kind_error = __toESM(require("@yankeeinlondon/kind-error"));
//#region src/constants.ts
const SUCCESS = 0;
const ERROR = 1;
const BLOCKING_ERROR = 2;
//#endregion
//#region src/errors.ts
const Unexpected = (0, __yankeeinlondon_kind_error.createKindError)("Unexpected", { library: "claudine" });
//#endregion
//#region src/createHook.ts
/**
* **createHook**(hook)
*
* A builder pattern for handing Claude Code hooks.
*
* - [Docs](https://docs.anthropic.com/en/docs/claude-code/hooks) for Claude Hooks
*/
function createHook(_hook) {
return { handler(handler) {
try {
const readStdIn = async function readStdin() {
const rl = node_readline.default.createInterface({ input: process.stdin });
const lines = [];
for await (const line of rl) lines.push(line);
return lines.join("\n");
};
return { async handle() {
const text = await readStdIn();
const event = JSON.parse(text);
const resp = await handler(event);
if ((0, inferred_types.isNumber)(resp)) process.exit(resp);
else console.log(JSON.stringify(resp));
} };
} catch (e) {
throw Unexpected.proxy(e);
}
} };
}
//#endregion
exports.BLOCKING_ERROR = BLOCKING_ERROR;
exports.ERROR = ERROR;
exports.SUCCESS = SUCCESS;
exports.Unexpected = Unexpected;
exports.createHook = createHook;