UNPKG

@fedify/h3

Version:
31 lines 5.95 kB
// src/index.ts import { defineEventHandler, toWebRequest } from "h3"; function integrateFederation(federation, contextDataFactory) { return defineEventHandler({ async handler(event) { const request = toWebRequest(event); const response = await federation.fetch(request, { contextData: await contextDataFactory(event, request) }); if (response.status === 404) return; if (response.status === 406) { event.context["__fedify_response__"] = response; return; } await event.respondWith(response); } }); } async function onError(error, event) { if ("__fedify_response__" in event.context && event.context["__fedify_response__"].status === 406 && error.statusCode === 404) { await event.respondWith(event.context["__fedify_response__"]); } } export { integrateFederation, onError }; //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgdHlwZSB7IEZlZGVyYXRpb24gfSBmcm9tIFwiQGZlZGlmeS9mZWRpZnlcIjtcbmltcG9ydCB7XG4gIHR5cGUgRXZlbnRIYW5kbGVyLFxuICB0eXBlIEV2ZW50SGFuZGxlclJlcXVlc3QsXG4gIHR5cGUgRXZlbnRIYW5kbGVyUmVzcG9uc2UsXG4gIHR5cGUgSDNFcnJvcixcbiAgdHlwZSBIM0V2ZW50LFxuICBkZWZpbmVFdmVudEhhbmRsZXIsXG4gIHRvV2ViUmVxdWVzdCxcbn0gZnJvbSBcImgzXCI7XG5cbi8qKlxuICogQSBmYWN0b3J5IGZ1bmN0aW9uIHRoYXQgY3JlYXRlcyB0aGUgY29udGV4dCBkYXRhIHRoYXQgd2lsbCBiZSBwYXNzZWQgdG8gdGhlXG4gKiBgRmVkZXJhdGlvbmAgaW5zdGFuY2UuXG4gKiBAdHlwZVBhcmFtIFRDb250ZXh0RGF0YSBUaGUgdHlwZSBvZiB0aGUgY29udGV4dCBkYXRhIHRoYXQgd2lsbCBiZSBwYXNzZWQgdG9cbiAqICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBgRmVkZXJhdGlvbmAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gZXZlbnQgVGhlIGV2ZW50IHRoYXQgdHJpZ2dlcmVkIHRoZSBoYW5kbGVyLlxuICogQHBhcmFtIHJlcXVlc3QgVGhlIHJlcXVlc3QgdGhhdCB0cmlnZ2VyZWQgdGhlIGhhbmRsZXIuXG4gKiBAcmV0dXJucyBUaGUgY29udGV4dCBkYXRhIHRoYXQgd2lsbCBiZSBwYXNzZWQgdG8gdGhlIGBGZWRlcmF0aW9uYCBpbnN0YW5jZS5cbiAqICAgICAgICAgIFRoaXMgY2FuIGJlIGEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSBjb250ZXh0IGRhdGEuXG4gKi9cbmV4cG9ydCB0eXBlIENvbnRleHREYXRhRmFjdG9yeTxUQ29udGV4dERhdGE+ID0gKFxuICBldmVudDogSDNFdmVudDxFdmVudEhhbmRsZXJSZXF1ZXN0PixcbiAgcmVxdWVzdDogUmVxdWVzdCxcbikgPT4gUHJvbWlzZTxUQ29udGV4dERhdGE+IHwgVENvbnRleHREYXRhO1xuXG4vKipcbiAqIEludGVncmF0ZXMgYSBgRmVkZXJhdGlvbmAgaW5zdGFuY2Ugd2l0aCBhbiBIMyBoYW5kbGVyLlxuICogQHBhcmFtIGZlZGVyYXRpb25cbiAqIEBwYXJhbSBjb250ZXh0RGF0YUZhY3RvcnlcbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnRlZ3JhdGVGZWRlcmF0aW9uPFRDb250ZXh0RGF0YT4oXG4gIGZlZGVyYXRpb246IEZlZGVyYXRpb248VENvbnRleHREYXRhPixcbiAgY29udGV4dERhdGFGYWN0b3J5OiBDb250ZXh0RGF0YUZhY3Rvcnk8VENvbnRleHREYXRhPixcbik6IEV2ZW50SGFuZGxlcjxFdmVudEhhbmRsZXJSZXF1ZXN0LCBFdmVudEhhbmRsZXJSZXNwb25zZT4ge1xuICByZXR1cm4gZGVmaW5lRXZlbnRIYW5kbGVyKHtcbiAgICBhc3luYyBoYW5kbGVyKGV2ZW50KSB7XG4gICAgICBjb25zdCByZXF1ZXN0ID0gdG9XZWJSZXF1ZXN0KGV2ZW50KTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmVkZXJhdGlvbi5mZXRjaChyZXF1ZXN0LCB7XG4gICAgICAgIGNvbnRleHREYXRhOiBhd2FpdCBjb250ZXh0RGF0YUZhY3RvcnkoZXZlbnQsIHJlcXVlc3QpLFxuICAgICAgfSk7XG4gICAgICAvLyBJZiB0aGUgcmVzcG9uc2UgaXMgNDA0IE5vdCBGb3VuZCwgdGhlbiB3ZSBkZWxlZ2F0ZSB0aGUgaGFuZGxpbmcgdG9cbiAgICAgIC8vIHRoZSBuZXh0IGhhbmRsZXIgaW4gdGhlIGNoYWluLiAgVGhpcyBpcyBiZWNhdXNlIHRoZSBoYW5kbGVyIG1pZ2h0XG4gICAgICAvLyBoYXZlIGFuIGVuZHBvaW50IHRoYXQgRmVkaWZ5IGRvZXMgbm90IGhhdmUsIGFuZCB3ZSB3YW50IHRvIGdpdmUgdGhlXG4gICAgICAvLyBoYW5kbGVyIGEgY2hhbmNlIHRvIHJlc3BvbmQgdG8gdGhlIHJlcXVlc3Q6XG4gICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSA0MDQpIHJldHVybjtcbiAgICAgIC8vIFNlZSBhbHNvIG9uQmVmb3JlUmVzcG9uc2UoKSBhYm92ZTpcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDQwNikge1xuICAgICAgICBldmVudC5jb250ZXh0W1wiX19mZWRpZnlfcmVzcG9uc2VfX1wiXSA9IHJlc3BvbnNlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBhd2FpdCBldmVudC5yZXNwb25kV2l0aChyZXNwb25zZSk7XG4gICAgfSxcbiAgfSk7XG59XG5cbi8qKlxuICogQW4gZXJyb3IgaGFuZGxlciB0aGF0IHJlc3BvbmRzIHdpdGggYSA0MDYgTm90IEFjY2VwdGFibGUgaWYgRmVkaWZ5XG4gKiByZXNwb25kZWQgd2l0aCBhIDQwNiBOb3QgQWNjZXB0YWJsZSBhbmQgdGhlIGFjdHVhbCBoYW5kbGVyIHJlc3BvbmRlZCB3aXRoXG4gKiBhIDQwNCBOb3QgRm91bmQuXG4gKiBAcGFyYW0gZXJyb3IgVGhlIGVycm9yIHRoYXQgb2NjdXJyZWQuXG4gKiBAcGFyYW0gZXZlbnQgVGhlIGV2ZW50IHRoYXQgdHJpZ2dlcmVkIHRoZSBoYW5kbGVyLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gb25FcnJvcihcbiAgZXJyb3I6IEgzRXJyb3I8dW5rbm93bj4sXG4gIGV2ZW50OiBIM0V2ZW50PEV2ZW50SGFuZGxlclJlc3BvbnNlPixcbik6IFByb21pc2U8dm9pZD4ge1xuICAvLyBJZiBGZWRpZnkgcmVzcG9uZGVkIHdpdGggYSA0MDYgTm90IEFjY2VwdGFibGUgYW5kIGxhdGVyIG9uIHRoZSBhY3R1YWxcbiAgLy8gaGFuZGxlciByZXNwb25kZWQgd2l0aCBhIDQwNCBOb3QgRm91bmQsIHRoZW4gd2UgY29uc2lkZXIgaXQgZmFpbGVkXG4gIC8vIHRvIG5lZ290aWF0ZSBhIHJlc3BvbnNlLiAgRm9yIGV4YW1wbGUsIGlmIEZlZGlmeSBoYXMgYW4gZW5kcG9pbnQgL2Zvb1xuICAvLyB0aGF0IHN1cHBvcnRzIG9ubHkgYXBwbGljYXRpb24vYWN0aXZpdHkranNvbiBhbmQgdGhlIGhhbmRsZXIgaGFzIG5vXG4gIC8vIGVuZHBvaW50IC9mb28gYXQgYWxsLCB0aGVuIHdoZW4gYSBjbGllbnQgcmVxdWVzdHMgL2ZvbyB3aXRoXG4gIC8vIEFjY2VwdDogdGV4dC9odG1sLCBpdCBzaG91bGQgcmVzcG9uZCB3aXRoIDQwNiBOb3QgQWNjZXB0YWJsZTpcbiAgaWYgKFxuICAgIFwiX19mZWRpZnlfcmVzcG9uc2VfX1wiIGluIGV2ZW50LmNvbnRleHQgJiZcbiAgICBldmVudC5jb250ZXh0W1wiX19mZWRpZnlfcmVzcG9uc2VfX1wiXS5zdGF0dXMgPT09IDQwNiAmJlxuICAgIGVycm9yLnN0YXR1c0NvZGUgPT09IDQwNFxuICApIHtcbiAgICBhd2FpdCBldmVudC5yZXNwb25kV2l0aChldmVudC5jb250ZXh0W1wiX19mZWRpZnlfcmVzcG9uc2VfX1wiXSk7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7QUFDQTtBQUFBLEVBTUU7QUFBQSxFQUNBO0FBQUEsT0FDSztBQXVCQSxTQUFTLG9CQUNkLFlBQ0Esb0JBQ3lEO0FBQ3pELFNBQU8sbUJBQW1CO0FBQUEsSUFDeEIsTUFBTSxRQUFRLE9BQU87QUFDbkIsWUFBTSxVQUFVLGFBQWEsS0FBSztBQUNsQyxZQUFNLFdBQVcsTUFBTSxXQUFXLE1BQU0sU0FBUztBQUFBLFFBQy9DLGFBQWEsTUFBTSxtQkFBbUIsT0FBTyxPQUFPO0FBQUEsTUFDdEQsQ0FBQztBQUtELFVBQUksU0FBUyxXQUFXLElBQUs7QUFFN0IsVUFBSSxTQUFTLFdBQVcsS0FBSztBQUMzQixjQUFNLFFBQVEscUJBQXFCLElBQUk7QUFDdkM7QUFBQSxNQUNGO0FBQ0EsWUFBTSxNQUFNLFlBQVksUUFBUTtBQUFBLElBQ2xDO0FBQUEsRUFDRixDQUFDO0FBQ0g7QUFTQSxlQUFzQixRQUNwQixPQUNBLE9BQ2U7QUFPZixNQUNFLHlCQUF5QixNQUFNLFdBQy9CLE1BQU0sUUFBUSxxQkFBcUIsRUFBRSxXQUFXLE9BQ2hELE1BQU0sZUFBZSxLQUNyQjtBQUNBLFVBQU0sTUFBTSxZQUFZLE1BQU0sUUFBUSxxQkFBcUIsQ0FBQztBQUFBLEVBQzlEO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==