Brunobkr/llama.cpp_AlgMor24_github
ΩFFFΣLLIa • llama.cpp • AlgMor24 ██████╗ ███████╗███████╗███████╗██╗ ██╗ ██╗ █████╗ ██╔═══██╗██╔════╝██╔════╝██╔════╝██║ ██║ ██║██╔══██╗ ██║ ██║█████╗ █████╗ █████╗ ██║ ██║ ██║███████║ ██║ ██║██╔══╝ ██╔══╝ ██╔══╝ ██║ ██║ ██║██╔══██║ ╚██████╔╝██║ ██║ ███████╗███████╗███████╗██║██║ ██║ ╚═════╝ ╚═╝ ╚═╝ ╚══════╝╚══════╝╚══════╝╚═╝╚═╝ ╚═╝ High-Performance LLM / VLM Inference & Autonomous Agentic Ecosystem… See the full description on the dataset page: https://huggingface.co/datasets/Brunobkr/llama.cpp_AlgMor24_github.
03.1k
1/*2 Copyright 2018 Google LLC3 4 Use of this source code is governed by an MIT-style5 license that can be found in the LICENSE file or at6 https://opensource.org/licenses/MIT.7*/8import { assert } from 'workbox-core/_private/assert.js';9import { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';10import { defaultMethod } from './utils/constants.js';11import { logger } from 'workbox-core/_private/logger.js';12import { normalizeHandler } from './utils/normalizeHandler.js';13import { WorkboxError } from 'workbox-core/_private/WorkboxError.js';14import './_version.js';15/**16 * The Router can be used to process a `FetchEvent` using one or more17 * {@link workbox-routing.Route}, responding with a `Response` if18 * a matching route exists.19 *20 * If no route matches a given a request, the Router will use a "default"21 * handler if one is defined.22 *23 * Should the matching Route throw an error, the Router will use a "catch"24 * handler if one is defined to gracefully deal with issues and respond with a25 * Request.26 *27 * If a request matches multiple routes, the **earliest** registered route will28 * be used to respond to the request.29 *30 * @memberof workbox-routing31 */32class Router {33 /**34 * Initializes a new Router.35 */36 constructor() {37 this._routes = new Map();38 this._defaultHandlerMap = new Map();39 }40 /**41 * @return {Map<string, Array<workbox-routing.Route>>} routes A `Map` of HTTP42 * method name ('GET', etc.) to an array of all the corresponding `Route`43 * instances that are registered.44 */45 get routes() {46 return this._routes;47 }48 /**49 * Adds a fetch event listener to respond to events when a route matches50 * the event's request.51 */52 addFetchListener() {53 // See https://github.com/Microsoft/TypeScript/issues/28357#issuecomment-43648470554 self.addEventListener('fetch', ((event) => {55 const { request } = event;56 const responsePromise = this.handleRequest({ request, event });57 if (responsePromise) {58 event.respondWith(responsePromise);59 }60 }));61 }62 /**63 * Adds a message event listener for URLs to cache from the window.64 * This is useful to cache resources loaded on the page prior to when the65 * service worker started controlling it.66 *67 * The format of the message data sent from the window should be as follows.68 * Where the `urlsToCache` array may consist of URL strings or an array of69 * URL string + `requestInit` object (the same as you'd pass to `fetch()`).70 *71 * ```72 * {73 * type: 'CACHE_URLS',74 * payload: {75 * urlsToCache: [76 * './script1.js',77 * './script2.js',78 * ['./script3.js', {mode: 'no-cors'}],79 * ],80 * },81 * }82 * ```83 */84 addCacheListener() {85 // See https://github.com/Microsoft/TypeScript/issues/28357#issuecomment-43648470586 self.addEventListener('message', ((event) => {87 // event.data is type 'any'88 // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access89 if (event.data && event.data.type === 'CACHE_URLS') {90 // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment91 const { payload } = event.data;92 if (process.env.NODE_ENV !== 'production') {93 logger.debug(`Caching URLs from the window`, payload.urlsToCache);94 }95 const requestPromises = Promise.all(payload.urlsToCache.map((entry) => {96 if (typeof entry === 'string') {97 entry = [entry];98 }99 const request = new Request(...entry);100 return this.handleRequest({ request, event });101 // TODO(philipwalton): TypeScript errors without this typecast for102 // some reason (probably a bug). The real type here should work but103 // doesn't: `Array<Promise<Response> | undefined>`.104 })); // TypeScript105 event.waitUntil(requestPromises);106 // If a MessageChannel was used, reply to the message on success.107 if (event.ports && event.ports[0]) {108 void requestPromises.then(() => event.ports[0].postMessage(true));109 }110 }111 }));112 }113 /**114 * Apply the routing rules to a FetchEvent object to get a Response from an115 * appropriate Route's handler.116 *117 * @param {Object} options118 * @param {Request} options.request The request to handle.119 * @param {ExtendableEvent} options.event The event that triggered the120 * request.121 * @return {Promise<Response>|undefined} A promise is returned if a122 * registered route can handle the request. If there is no matching123 * route and there's no `defaultHandler`, `undefined` is returned.124 */125 handleRequest({ request, event, }) {126 if (process.env.NODE_ENV !== 'production') {127 assert.isInstance(request, Request, {128 moduleName: 'workbox-routing',129 className: 'Router',130 funcName: 'handleRequest',131 paramName: 'options.request',132 });133 }134 const url = new URL(request.url, location.href);135 if (!url.protocol.startsWith('http')) {136 if (process.env.NODE_ENV !== 'production') {137 logger.debug(`Workbox Router only supports URLs that start with 'http'.`);138 }139 return;140 }141 const sameOrigin = url.origin === location.origin;142 const { params, route } = this.findMatchingRoute({143 event,144 request,145 sameOrigin,146 url,147 });148 let handler = route && route.handler;149 const debugMessages = [];150 if (process.env.NODE_ENV !== 'production') {151 if (handler) {152 debugMessages.push([`Found a route to handle this request:`, route]);153 if (params) {154 debugMessages.push([155 `Passing the following params to the route's handler:`,156 params,157 ]);158 }159 }160 }161 // If we don't have a handler because there was no matching route, then162 // fall back to defaultHandler if that's defined.163 const method = request.method;164 if (!handler && this._defaultHandlerMap.has(method)) {165 if (process.env.NODE_ENV !== 'production') {166 debugMessages.push(`Failed to find a matching route. Falling ` +167 `back to the default handler for ${method}.`);168 }169 handler = this._defaultHandlerMap.get(method);170 }171 if (!handler) {172 if (process.env.NODE_ENV !== 'production') {173 // No handler so Workbox will do nothing. If logs is set of debug174 // i.e. verbose, we should print out this information.175 logger.debug(`No route found for: ${getFriendlyURL(url)}`);176 }177 return;178 }179 if (process.env.NODE_ENV !== 'production') {180 // We have a handler, meaning Workbox is going to handle the route.181 // print the routing details to the console.182 logger.groupCollapsed(`Router is responding to: ${getFriendlyURL(url)}`);183 debugMessages.forEach((msg) => {184 if (Array.isArray(msg)) {185 logger.log(...msg);186 }187 else {188 logger.log(msg);189 }190 });191 logger.groupEnd();192 }193 // Wrap in try and catch in case the handle method throws a synchronous194 // error. It should still callback to the catch handler.195 let responsePromise;196 try {197 responsePromise = handler.handle({ url, request, event, params });198 }199 catch (err) {200 responsePromise = Promise.reject(err);201 }202 // Get route's catch handler, if it exists203 const catchHandler = route && route.catchHandler;204 if (responsePromise instanceof Promise &&205 (this._catchHandler || catchHandler)) {206 responsePromise = responsePromise.catch(async (err) => {207 // If there's a route catch handler, process that first208 if (catchHandler) {209 if (process.env.NODE_ENV !== 'production') {210 // Still include URL here as it will be async from the console group211 // and may not make sense without the URL212 logger.groupCollapsed(`Error thrown when responding to: ` +213 ` ${getFriendlyURL(url)}. Falling back to route's Catch Handler.`);214 logger.error(`Error thrown by:`, route);215 logger.error(err);216 logger.groupEnd();217 }218 try {219 return await catchHandler.handle({ url, request, event, params });220 }221 catch (catchErr) {222 if (catchErr instanceof Error) {223 err = catchErr;224 }225 }226 }227 if (this._catchHandler) {228 if (process.env.NODE_ENV !== 'production') {229 // Still include URL here as it will be async from the console group230 // and may not make sense without the URL231 logger.groupCollapsed(`Error thrown when responding to: ` +232 ` ${getFriendlyURL(url)}. Falling back to global Catch Handler.`);233 logger.error(`Error thrown by:`, route);234 logger.error(err);235 logger.groupEnd();236 }237 return this._catchHandler.handle({ url, request, event });238 }239 throw err;240 });241 }242 return responsePromise;243 }244 /**245 * Checks a request and URL (and optionally an event) against the list of246 * registered routes, and if there's a match, returns the corresponding247 * route along with any params generated by the match.248 *249 * @param {Object} options250 * @param {URL} options.url251 * @param {boolean} options.sameOrigin The result of comparing `url.origin`252 * against the current origin.253 * @param {Request} options.request The request to match.254 * @param {Event} options.event The corresponding event.255 * @return {Object} An object with `route` and `params` properties.256 * They are populated if a matching route was found or `undefined`257 * otherwise.258 */259 findMatchingRoute({ url, sameOrigin, request, event, }) {260 const routes = this._routes.get(request.method) || [];261 for (const route of routes) {262 let params;263 // route.match returns type any, not possible to change right now.264 // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment265 const matchResult = route.match({ url, sameOrigin, request, event });266 if (matchResult) {267 if (process.env.NODE_ENV !== 'production') {268 // Warn developers that using an async matchCallback is almost always269 // not the right thing to do.270 if (matchResult instanceof Promise) {271 logger.warn(`While routing ${getFriendlyURL(url)}, an async ` +272 `matchCallback function was used. Please convert the ` +273 `following route to use a synchronous matchCallback function:`, route);274 }275 }276 // See https://github.com/GoogleChrome/workbox/issues/2079277 // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment278 params = matchResult;279 if (Array.isArray(params) && params.length === 0) {280 // Instead of passing an empty array in as params, use undefined.281 params = undefined;282 }283 else if (matchResult.constructor === Object && // eslint-disable-line284 Object.keys(matchResult).length === 0) {285 // Instead of passing an empty object in as params, use undefined.286 params = undefined;287 }288 else if (typeof matchResult === 'boolean') {289 // For the boolean value true (rather than just something truth-y),290 // don't set params.291 // See https://github.com/GoogleChrome/workbox/pull/2134#issuecomment-513924353292 params = undefined;293 }294 // Return early if have a match.295 return { route, params };296 }297 }298 // If no match was found above, return and empty object.299 return {};300 }301 /**302 * Define a default `handler` that's called when no routes explicitly303 * match the incoming request.304 *305 * Each HTTP method ('GET', 'POST', etc.) gets its own default handler.306 *307 * Without a default handler, unmatched requests will go against the308 * network as if there were no service worker present.309 *310 * @param {workbox-routing~handlerCallback} handler A callback311 * function that returns a Promise resulting in a Response.312 * @param {string} [method='GET'] The HTTP method to associate with this313 * default handler. Each method has its own default.314 */315 setDefaultHandler(handler, method = defaultMethod) {316 this._defaultHandlerMap.set(method, normalizeHandler(handler));317 }318 /**319 * If a Route throws an error while handling a request, this `handler`320 * will be called and given a chance to provide a response.321 *322 * @param {workbox-routing~handlerCallback} handler A callback323 * function that returns a Promise resulting in a Response.324 */325 setCatchHandler(handler) {326 this._catchHandler = normalizeHandler(handler);327 }328 /**329 * Registers a route with the router.330 *331 * @param {workbox-routing.Route} route The route to register.332 */333 registerRoute(route) {334 if (process.env.NODE_ENV !== 'production') {335 assert.isType(route, 'object', {336 moduleName: 'workbox-routing',337 className: 'Router',338 funcName: 'registerRoute',339 paramName: 'route',340 });341 assert.hasMethod(route, 'match', {342 moduleName: 'workbox-routing',343 className: 'Router',344 funcName: 'registerRoute',345 paramName: 'route',346 });347 assert.isType(route.handler, 'object', {348 moduleName: 'workbox-routing',349 className: 'Router',350 funcName: 'registerRoute',351 paramName: 'route',352 });353 assert.hasMethod(route.handler, 'handle', {354 moduleName: 'workbox-routing',355 className: 'Router',356 funcName: 'registerRoute',357 paramName: 'route.handler',358 });359 assert.isType(route.method, 'string', {360 moduleName: 'workbox-routing',361 className: 'Router',362 funcName: 'registerRoute',363 paramName: 'route.method',364 });365 }366 if (!this._routes.has(route.method)) {367 this._routes.set(route.method, []);368 }369 // Give precedence to all of the earlier routes by adding this additional370 // route to the end of the array.371 this._routes.get(route.method).push(route);372 }373 /**374 * Unregisters a route with the router.375 *376 * @param {workbox-routing.Route} route The route to unregister.377 */378 unregisterRoute(route) {379 if (!this._routes.has(route.method)) {380 throw new WorkboxError('unregister-route-but-not-found-with-method', {381 method: route.method,382 });383 }384 const routeIndex = this._routes.get(route.method).indexOf(route);385 if (routeIndex > -1) {386 this._routes.get(route.method).splice(routeIndex, 1);387 }388 else {389 throw new WorkboxError('unregister-route-route-not-registered');390 }391 }392}393export { Router };394 