Team Ai
Datasetpublic

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.

sourceHugging Faceupdated 2mo agoView on Hugging Face
0likes3.1kdownloads
uneval.js553 linesDownload Raw Back to src
1import {2	DevalueError,3	enumerable_symbols,4	escaped,5	get_type,6	is_plain_object,7	is_primitive,8	stringify_key,9	stringify_string,10	valid_array_indices11} from './utils.js';12 13const chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_$';14const unsafe_chars = /[<\b\f\n\r\t\0\u2028\u2029]/g;15const reserved =16	/^(?:do|if|in|for|int|let|new|try|var|byte|case|char|else|enum|goto|long|this|void|with|await|break|catch|class|const|final|float|short|super|throw|while|yield|delete|double|export|import|native|return|switch|throws|typeof|boolean|default|extends|finally|package|private|abstract|continue|debugger|function|volatile|interface|protected|transient|implements|instanceof|synchronized)$/;17 18/**19 * Turn a value into the JavaScript that creates an equivalent value20 * @param {any} value21 * @param {(value: any, uneval: (value: any) => string) => string | void} [replacer]22 */23export function uneval(value, replacer) {24	const counts = new Map();25 26	/** @type {string[]} */27	const keys = [];28 29	const custom = new Map();30 31	/** @param {any} thing */32	function walk(thing) {33		if (!is_primitive(thing)) {34			if (counts.has(thing)) {35				counts.set(thing, counts.get(thing) + 1);36				return;37			}38 39			counts.set(thing, 1);40 41			if (replacer) {42				const str = replacer(thing, (value) => uneval(value, replacer));43 44				if (typeof str === 'string') {45					custom.set(thing, str);46					return;47				}48			}49 50			if (typeof thing === 'function') {51				throw new DevalueError(`Cannot stringify a function`, keys, thing, value);52			}53 54			const type = get_type(thing);55 56			switch (type) {57				case 'Number':58				case 'BigInt':59				case 'String':60				case 'Boolean':61				case 'Date':62				case 'RegExp':63				case 'URL':64				case 'URLSearchParams':65					return;66 67				case 'Array':68					/** @type {any[]} */ (thing).forEach((value, i) => {69						keys.push(`[${i}]`);70						walk(value);71						keys.pop();72					});73					break;74 75				case 'Set':76					Array.from(thing).forEach(walk);77					break;78 79				case 'Map':80					for (const [key, value] of thing) {81						keys.push(`.get(${is_primitive(key) ? stringify_primitive(key) : '...'})`);82						walk(value);83						keys.pop();84					}85					break;86 87				case 'Int8Array':88				case 'Uint8Array':89				case 'Uint8ClampedArray':90				case 'Int16Array':91				case 'Uint16Array':92				case 'Float16Array':93				case 'Int32Array':94				case 'Uint32Array':95				case 'Float32Array':96				case 'Float64Array':97				case 'BigInt64Array':98				case 'BigUint64Array':99				case 'DataView':100					walk(thing.buffer);101					return;102 103				case 'ArrayBuffer':104					return;105 106				case 'Temporal.Duration':107				case 'Temporal.Instant':108				case 'Temporal.PlainDate':109				case 'Temporal.PlainTime':110				case 'Temporal.PlainDateTime':111				case 'Temporal.PlainMonthDay':112				case 'Temporal.PlainYearMonth':113				case 'Temporal.ZonedDateTime':114					return;115 116				default:117					if (!is_plain_object(thing)) {118						throw new DevalueError(`Cannot stringify arbitrary non-POJOs`, keys, thing, value);119					}120 121					if (enumerable_symbols(thing).length > 0) {122						throw new DevalueError(`Cannot stringify POJOs with symbolic keys`, keys, thing, value);123					}124 125					for (const key of Object.keys(thing)) {126						if (key === '__proto__') {127							throw new DevalueError(128								`Cannot stringify objects with __proto__ keys`,129								keys,130								thing,131								value132							);133						}134 135						keys.push(stringify_key(key));136						walk(thing[key]);137						keys.pop();138					}139			}140		} else if (typeof thing === 'symbol') {141			throw new DevalueError(`Cannot stringify a Symbol primitive`, keys, thing, value);142		}143	}144 145	walk(value);146 147	const names = new Map();148 149	Array.from(counts)150		.filter((entry) => entry[1] > 1)151		.sort((a, b) => b[1] - a[1])152		.forEach((entry, i) => {153			names.set(entry[0], get_name(i));154		});155 156	/**157	 * @param {any} thing158	 * @returns {string}159	 */160	function stringify(thing) {161		if (names.has(thing)) {162			return names.get(thing);163		}164 165		if (is_primitive(thing)) {166			return stringify_primitive(thing);167		}168 169		if (custom.has(thing)) {170			return custom.get(thing);171		}172 173		const type = get_type(thing);174 175		switch (type) {176			case 'Number':177			case 'String':178			case 'Boolean':179			case 'BigInt':180				return `Object(${stringify(thing.valueOf())})`;181 182			case 'RegExp':183				const { source, flags } = thing;184				return flags185					? `new RegExp(${stringify_string(source)},"${flags}")`186					: `new RegExp(${stringify_string(source)})`;187 188			case 'Date':189				return `new Date(${thing.getTime()})`;190 191			case 'URL':192				return `new URL(${stringify_string(thing.toString())})`;193 194			case 'URLSearchParams':195				return `new URLSearchParams(${stringify_string(thing.toString())})`;196 197			case 'Array': {198				// For dense arrays (no holes), we iterate normally.199				// When we encounter the first hole, we call Object.keys200				// to determine the sparseness, then decide between:201				//   - Array literal with holes: [,"a",,] (default)202				//   - Object.assign: Object.assign(Array(n),{...}) (for very sparse arrays)203				// Only the Object.assign path avoids iterating every slot, which204				// is what protects against the DoS of e.g. `arr[1000000] = 1`.205				let has_holes = false;206 207				let result = '[';208 209				for (let i = 0; i < thing.length; i += 1) {210					if (i > 0) result += ',';211 212					if (Object.hasOwn(thing, i)) {213						result += stringify(thing[i]);214					} else if (!has_holes) {215						// Decide between array literal and Object.assign.216						//217						// Array literal: holes are consecutive commas.218						// For example, [, "a", ,] is written as [,"a",,].219						// Each hole costs 1 char (a comma).220						//221						// Object.assign: populated indices are listed explicitly.222						// For example, [, "a", ,] would be written as223						// Object.assign(Array(3),{1:"a"}). This avoids paying224						// per-hole, but has a large fixed overhead for the225						// "Object.assign(Array(n),{...})" wrapper, and each226						// element costs extra chars for its index and colon.227						//228						// The serialized values are the same size either way, so229						// the choice comes down to the structural overhead:230						//231						//   Array literal overhead:232						//     1 char per element or hole (comma separators)233						//     + 2 chars for "[" and "]"234						//     = L + 2235						//236						//   Object.assign overhead:237						//     "Object.assign(Array(" — 20 chars238						//     + length              — d chars239						//     + "),{"               — 3 chars240						//     + for each populated element:241						//       index + ":" + ","   — (d + 2) chars242						//     + "})"                — 2 chars243						//     = (25 + d) + P * (d + 2)244						//245						// where L is the array length, P is the number of246						// populated elements, and d is the number of digits247						// in L (an upper bound on the digits in any index).248						//249						// Object.assign is cheaper when:250						//   (25 + d) + P * (d + 2) < L + 2251						const populated_keys = valid_array_indices(/** @type {any[]} */ (thing));252						const population = populated_keys.length;253						const d = String(thing.length).length;254 255						const hole_cost = thing.length + 2;256						const sparse_cost = 25 + d + population * (d + 2);257 258						if (hole_cost > sparse_cost) {259							const entries = populated_keys.map((k) => `${k}:${stringify(thing[k])}`).join(',');260							return `Object.assign(Array(${thing.length}),{${entries}})`;261						}262 263						// Re-process this index as a hole in the array literal264						has_holes = true;265						i -= 1;266					}267					// else: already decided on array literal, hole is just an empty slot268					// (the comma separator is all we need — no content for this position)269				}270 271				const tail = thing.length === 0 || thing.length - 1 in thing ? '' : ',';272				return result + tail + ']';273			}274 275			case 'Set':276			case 'Map':277				return `new ${type}([${Array.from(thing).map(stringify).join(',')}])`;278 279			case 'Int8Array':280			case 'Uint8Array':281			case 'Uint8ClampedArray':282			case 'Int16Array':283			case 'Uint16Array':284			case 'Float16Array':285			case 'Int32Array':286			case 'Uint32Array':287			case 'Float32Array':288			case 'Float64Array':289			case 'BigInt64Array':290			case 'BigUint64Array': {291				let str = `new ${type}`;292 293				if (!names.has(thing.buffer)) {294					const array = new thing.constructor(thing.buffer);295					str += `([${array}])`;296				} else {297					str += `(${stringify(thing.buffer)})`;298				}299 300				// handle subarrays301				if (thing.byteLength !== thing.buffer.byteLength) {302					const start = thing.byteOffset / thing.BYTES_PER_ELEMENT;303					const end = start + thing.length;304					str += `.subarray(${start},${end})`;305				}306 307				return str;308			}309 310			case 'DataView': {311				let str = `new DataView`;312 313				if (!names.has(thing.buffer)) {314					str += `(new Uint8Array([${new Uint8Array(thing.buffer)}]).buffer`;315				} else {316					str += `(${stringify(thing.buffer)}`;317				}318 319				// handle subviews320				if (thing.byteLength !== thing.buffer.byteLength) {321					str += `,${thing.startOffset},${thing.byteLength}`;322				}323 324				return str + ')';325			}326 327			case 'ArrayBuffer': {328				const ui8 = new Uint8Array(thing);329				return `new Uint8Array([${ui8.toString()}]).buffer`;330			}331 332			case 'Temporal.Duration':333			case 'Temporal.Instant':334			case 'Temporal.PlainDate':335			case 'Temporal.PlainTime':336			case 'Temporal.PlainDateTime':337			case 'Temporal.PlainMonthDay':338			case 'Temporal.PlainYearMonth':339			case 'Temporal.ZonedDateTime':340				return `${type}.from(${stringify_string(thing.toString())})`;341 342			default:343				const keys = Object.keys(thing);344				const obj = keys.map((key) => `${safe_key(key)}:${stringify(thing[key])}`).join(',');345				const proto = Object.getPrototypeOf(thing);346				if (proto === null) {347					return keys.length > 0 ? `{${obj},__proto__:null}` : `{__proto__:null}`;348				}349 350				return `{${obj}}`;351		}352	}353 354	const str = stringify(value);355 356	if (names.size) {357		/** @type {string[]} */358		const params = [];359 360		/** @type {string[]} */361		const statements = [];362 363		/** @type {string[]} */364		const values = [];365 366		names.forEach((name, thing) => {367			params.push(name);368 369			if (custom.has(thing)) {370				values.push(/** @type {string} */ (custom.get(thing)));371				return;372			}373 374			if (is_primitive(thing)) {375				values.push(stringify_primitive(thing));376				return;377			}378 379			const type = get_type(thing);380 381			switch (type) {382				case 'Number':383				case 'String':384				case 'Boolean':385				case 'BigInt':386					values.push(`Object(${stringify(thing.valueOf())})`);387					break;388 389				case 'RegExp':390					const { source, flags } = thing;391					const regexp = flags392						? `new RegExp(${stringify_string(source)},"${flags}")`393						: `new RegExp(${stringify_string(source)})`394					values.push(regexp);395					break;396 397				case 'Date':398					values.push(`new Date(${thing.getTime()})`);399					break;400 401				case 'URL':402					values.push(`new URL(${stringify_string(thing.toString())})`);403					break;404 405				case 'URLSearchParams':406					values.push(`new URLSearchParams(${stringify_string(thing.toString())})`);407					break;408 409				case 'Array':410					values.push(`Array(${thing.length})`);411					/** @type {any[]} */ (thing).forEach((v, i) => {412						statements.push(`${name}[${i}]=${stringify(v)}`);413					});414					break;415 416				case 'Set':417					values.push(`new Set`);418					statements.push(419						`${name}.${Array.from(thing)420							.map((v) => `add(${stringify(v)})`)421							.join('.')}`422					);423					break;424 425				case 'Map':426					values.push(`new Map`);427					statements.push(428						`${name}.${Array.from(thing)429							.map(([k, v]) => `set(${stringify(k)}, ${stringify(v)})`)430							.join('.')}`431					);432					break;433 434				case 'Int8Array':435				case 'Uint8Array':436				case 'Uint8ClampedArray':437				case 'Int16Array':438				case 'Uint16Array':439				case 'Float16Array':440				case 'Int32Array':441				case 'Uint32Array':442				case 'Float32Array':443				case 'Float64Array':444				case 'BigInt64Array':445				case 'BigUint64Array': {446					let str = `new ${type}`;447 448					if (!names.has(thing.buffer)) {449						const array = new thing.constructor(thing.buffer);450						str += `([${array}])`;451					} else {452						str += `(${stringify(thing.buffer)})`;453					}454 455					// handle subarrays456					if (thing.byteLength !== thing.buffer.byteLength) {457						const start = thing.byteOffset / thing.BYTES_PER_ELEMENT;458						const end = start + thing.length;459						str += `.subarray(${start},${end})`;460					}461 462					values.push(`{}`);463					statements.push(`${name}=${str}`);464					break;465				}466 467				case 'DataView': {468					let str = `new DataView`;469 470					if (!names.has(thing.buffer)) {471						str += `(new Uint8Array([${new Uint8Array(thing.buffer)}]).buffer`;472					} else {473						str += `(${stringify(thing.buffer)}`;474					}475 476					// handle subviews477					if (thing.byteLength !== thing.buffer.byteLength) {478						str += `,${thing.byteOffset},${thing.byteLength}`;479					}480 481					str += ')';482 483					values.push(`{}`);484					statements.push(`${name}=${str}`);485					break;486				}487 488				case 'ArrayBuffer':489					values.push(`new Uint8Array([${new Uint8Array(thing)}]).buffer`);490					break;491 492				default:493					values.push(Object.getPrototypeOf(thing) === null ? 'Object.create(null)' : '{}');494					Object.keys(thing).forEach((key) => {495						statements.push(`${name}${safe_prop(key)}=${stringify(thing[key])}`);496					});497			}498		});499 500		statements.push(`return ${str}`);501 502		return `(function(${params.join(',')}){${statements.join(';')}}(${values.join(',')}))`;503	} else {504		return str;505	}506}507 508/** @param {number} num */509function get_name(num) {510	let name = '';511 512	do {513		name = chars[num % chars.length] + name;514		num = ~~(num / chars.length) - 1;515	} while (num >= 0);516 517	return reserved.test(name) ? `${name}0` : name;518}519 520/** @param {string} c */521function escape_unsafe_char(c) {522	return escaped[c] || c;523}524 525/** @param {string} str */526function escape_unsafe_chars(str) {527	return str.replace(unsafe_chars, escape_unsafe_char);528}529 530/** @param {string} key */531function safe_key(key) {532	return /^[_$a-zA-Z][_$a-zA-Z0-9]*$/.test(key) ? key : escape_unsafe_chars(JSON.stringify(key));533}534 535/** @param {string} key */536function safe_prop(key) {537	return /^[_$a-zA-Z][_$a-zA-Z0-9]*$/.test(key)538		? `.${key}`539		: `[${escape_unsafe_chars(JSON.stringify(key))}]`;540}541 542/** @param {any} thing */543function stringify_primitive(thing) {544	const type = typeof thing;545	if (type === 'string') return stringify_string(thing);546	if (thing === void 0) return 'void 0';547	if (thing === 0 && 1 / thing < 0) return '-0';548	const str = String(thing);549	if (type === 'number') return str.replace(/^(-)?0\./, '$1.');550	if (type === 'bigint') return thing + 'n';551	return str;552}553 
Brunobkr/llama.cpp_AlgMor24_github · Team Ai