UNPKG

@yankeeinlondon/claudine

Version:

A simple library to help with Claude Code

73 lines (68 loc) 2.41 kB
//#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;