@atmaticai/agent-tools-core 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +742 -0
- package/dist/archive/index.d.mts +1 -0
- package/dist/archive/index.d.ts +1 -0
- package/dist/archive/index.js +90 -0
- package/dist/archive/index.js.map +1 -0
- package/dist/archive/index.mjs +80 -0
- package/dist/archive/index.mjs.map +1 -0
- package/dist/color/index.d.mts +1 -0
- package/dist/color/index.d.ts +1 -0
- package/dist/color/index.js +347 -0
- package/dist/color/index.js.map +1 -0
- package/dist/color/index.mjs +336 -0
- package/dist/color/index.mjs.map +1 -0
- package/dist/crypto/index.d.mts +1 -0
- package/dist/crypto/index.d.ts +1 -0
- package/dist/crypto/index.js +116 -0
- package/dist/crypto/index.js.map +1 -0
- package/dist/crypto/index.mjs +108 -0
- package/dist/crypto/index.mjs.map +1 -0
- package/dist/csv/index.d.mts +1 -0
- package/dist/csv/index.d.ts +1 -0
- package/dist/csv/index.js +371 -0
- package/dist/csv/index.js.map +1 -0
- package/dist/csv/index.mjs +348 -0
- package/dist/csv/index.mjs.map +1 -0
- package/dist/datetime/index.d.mts +1 -0
- package/dist/datetime/index.d.ts +1 -0
- package/dist/datetime/index.js +234 -0
- package/dist/datetime/index.js.map +1 -0
- package/dist/datetime/index.mjs +224 -0
- package/dist/datetime/index.mjs.map +1 -0
- package/dist/diff/index.d.mts +2 -0
- package/dist/diff/index.d.ts +2 -0
- package/dist/diff/index.js +84 -0
- package/dist/diff/index.js.map +1 -0
- package/dist/diff/index.mjs +78 -0
- package/dist/diff/index.mjs.map +1 -0
- package/dist/excel/index.d.mts +1 -0
- package/dist/excel/index.d.ts +1 -0
- package/dist/excel/index.js +163 -0
- package/dist/excel/index.js.map +1 -0
- package/dist/excel/index.mjs +153 -0
- package/dist/excel/index.mjs.map +1 -0
- package/dist/image/index.d.mts +1 -0
- package/dist/image/index.d.ts +1 -0
- package/dist/image/index.js +123 -0
- package/dist/image/index.js.map +1 -0
- package/dist/image/index.mjs +107 -0
- package/dist/image/index.mjs.map +1 -0
- package/dist/index--vbnYfdE.d.mts +142 -0
- package/dist/index--vbnYfdE.d.ts +142 -0
- package/dist/index-7FZQloN-.d.mts +62 -0
- package/dist/index-7FZQloN-.d.ts +62 -0
- package/dist/index-7XgaTVH5.d.mts +93 -0
- package/dist/index-7XgaTVH5.d.ts +93 -0
- package/dist/index-7bvFmh45.d.mts +87 -0
- package/dist/index-7bvFmh45.d.ts +87 -0
- package/dist/index-BDZcIVCU.d.mts +53 -0
- package/dist/index-BDZcIVCU.d.ts +53 -0
- package/dist/index-BN00EnUU.d.mts +55 -0
- package/dist/index-BN00EnUU.d.ts +55 -0
- package/dist/index-CQ1EukC4.d.mts +59 -0
- package/dist/index-CQ1EukC4.d.ts +59 -0
- package/dist/index-CgRVnFOt.d.mts +91 -0
- package/dist/index-CgRVnFOt.d.ts +91 -0
- package/dist/index-DjBDZzuj.d.mts +54 -0
- package/dist/index-DjBDZzuj.d.ts +54 -0
- package/dist/index-FFrvmr-n.d.mts +50 -0
- package/dist/index-FFrvmr-n.d.ts +50 -0
- package/dist/index-QWC8yIgW.d.mts +106 -0
- package/dist/index-QWC8yIgW.d.ts +106 -0
- package/dist/index-RVqNunxE.d.mts +193 -0
- package/dist/index-RVqNunxE.d.ts +193 -0
- package/dist/index-fJD8SORm.d.mts +61 -0
- package/dist/index-fJD8SORm.d.ts +61 -0
- package/dist/index-pPy_XDQU.d.mts +56 -0
- package/dist/index-pPy_XDQU.d.ts +56 -0
- package/dist/index-rwh9hdD9.d.mts +68 -0
- package/dist/index-rwh9hdD9.d.ts +68 -0
- package/dist/index-uXdkAfea.d.mts +93 -0
- package/dist/index-uXdkAfea.d.ts +93 -0
- package/dist/index.d.mts +17 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.js +3744 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +3694 -0
- package/dist/index.mjs.map +1 -0
- package/dist/json/index.d.mts +1 -0
- package/dist/json/index.d.ts +1 -0
- package/dist/json/index.js +599 -0
- package/dist/json/index.js.map +1 -0
- package/dist/json/index.mjs +552 -0
- package/dist/json/index.mjs.map +1 -0
- package/dist/markdown/index.d.mts +1 -0
- package/dist/markdown/index.d.ts +1 -0
- package/dist/markdown/index.js +151 -0
- package/dist/markdown/index.js.map +1 -0
- package/dist/markdown/index.mjs +139 -0
- package/dist/markdown/index.mjs.map +1 -0
- package/dist/math/index.d.mts +1 -0
- package/dist/math/index.d.ts +1 -0
- package/dist/math/index.js +247 -0
- package/dist/math/index.js.map +1 -0
- package/dist/math/index.mjs +240 -0
- package/dist/math/index.mjs.map +1 -0
- package/dist/pdf/index.d.mts +1 -0
- package/dist/pdf/index.d.ts +1 -0
- package/dist/pdf/index.js +546 -0
- package/dist/pdf/index.js.map +1 -0
- package/dist/pdf/index.mjs +518 -0
- package/dist/pdf/index.mjs.map +1 -0
- package/dist/regex/index.d.mts +1 -0
- package/dist/regex/index.d.ts +1 -0
- package/dist/regex/index.js +93 -0
- package/dist/regex/index.js.map +1 -0
- package/dist/regex/index.mjs +88 -0
- package/dist/regex/index.mjs.map +1 -0
- package/dist/settings/index.d.mts +41 -0
- package/dist/settings/index.d.ts +41 -0
- package/dist/settings/index.js +146 -0
- package/dist/settings/index.js.map +1 -0
- package/dist/settings/index.mjs +139 -0
- package/dist/settings/index.mjs.map +1 -0
- package/dist/sql/index.d.mts +1 -0
- package/dist/sql/index.d.ts +1 -0
- package/dist/sql/index.js +146 -0
- package/dist/sql/index.js.map +1 -0
- package/dist/sql/index.mjs +139 -0
- package/dist/sql/index.mjs.map +1 -0
- package/dist/text/index.d.mts +1 -0
- package/dist/text/index.d.ts +1 -0
- package/dist/text/index.js +250 -0
- package/dist/text/index.js.map +1 -0
- package/dist/text/index.mjs +242 -0
- package/dist/text/index.mjs.map +1 -0
- package/dist/xml/index.d.mts +1 -0
- package/dist/xml/index.d.ts +1 -0
- package/dist/xml/index.js +188 -0
- package/dist/xml/index.js.map +1 -0
- package/dist/xml/index.mjs +180 -0
- package/dist/xml/index.mjs.map +1 -0
- package/package.json +150 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/json/index.ts","../src/json/format.ts","../src/json/validate.ts","../src/json/schema-validate.ts","../src/json/query.ts","../src/json/convert.ts","../src/json/diff.ts","../src/json/stats.ts","../src/csv/index.ts","../src/csv/parse.ts","../src/csv/filter.ts","../src/csv/stats.ts","../src/csv/transform.ts","../src/csv/export.ts","../src/pdf/index.ts","../src/pdf/utils.ts","../src/pdf/merge.ts","../src/pdf/split.ts","../src/pdf/metadata.ts","../src/pdf/transform.ts","../src/pdf/extract.ts","../src/pdf/template.ts","../src/xml/index.ts","../src/xml/parse.ts","../src/xml/format.ts","../src/xml/validate.ts","../src/xml/query.ts","../src/xml/convert.ts","../src/xml/stats.ts","../src/excel/index.ts","../src/excel/parse.ts","../src/excel/convert.ts","../src/excel/stats.ts","../src/image/index.ts","../src/image/resize.ts","../src/image/transform.ts","../src/image/convert.ts","../src/image/metadata.ts","../src/markdown/index.ts","../src/markdown/convert.ts","../src/markdown/toc.ts","../src/markdown/extract.ts","../src/markdown/stats.ts","../src/archive/index.ts","../src/archive/create.ts","../src/archive/extract.ts","../src/archive/list.ts","../src/regex/index.ts","../src/regex/utils.ts","../src/regex/test.ts","../src/regex/replace.ts","../src/regex/extract.ts","../src/regex/validate.ts","../src/diff/index.ts","../src/diff/compare.ts","../src/diff/unified.ts","../src/diff/patch.ts","../src/sql/index.ts","../src/sql/format.ts","../src/sql/parse.ts","../src/sql/convert.ts","../src/crypto/index.ts","../src/crypto/hash.ts","../src/crypto/encode.ts","../src/crypto/jwt.ts","../src/datetime/index.ts","../src/datetime/parse.ts","../src/datetime/math.ts","../src/datetime/timezone.ts","../src/datetime/cron.ts","../src/text/index.ts","../src/text/case.ts","../src/text/slug.ts","../src/text/stats.ts","../src/text/truncate.ts","../src/text/lorem.ts","../src/text/similarity.ts","../src/text/template.ts","../src/math/index.ts","../src/math/convert.ts","../src/math/base.ts","../src/math/statistics.ts","../src/math/format.ts","../src/math/percentage.ts","../src/color/index.ts","../src/color/parse.ts","../src/color/convert.ts","../src/color/contrast.ts","../src/color/palette.ts","../src/color/blend.ts","../src/color/name.ts"],"names":["Ajv","addFormats","ajv","JSONPath","jmespath","JSON5","yaml","TOML","parsed","jsonPatchCompare","getStats","parse","toJson","Papa","filter","toCSV","escapeCSVField","format","formatBytes","PDFDocument","degrees","StandardFonts","rgb","result","convert","minify","query","validate","XMLParser","XMLBuilder","XMLValidator","ExcelJS","buffer","compress","getMetadata","rotate","sharp","marked","TurndownService","PassThrough","archiver","AdmZip","extract","diffWords","diffChars","diffLines","createTwoFilesPatch","createPatch","applyPatch","parsePatch","sqlFormat","Parser","parserDialectMap","createHash","createHmac","randomUUID","diff","DateTime","now","offset"],"mappings":"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","file":"index.js","sourcesContent":["export * from './types';\nexport * from './format';\nexport * from './validate';\nexport * from './schema-validate';\nexport * from './query';\nexport * from './convert';\nexport * from './diff';\nexport * from './stats';\n","import type { FormatOptions, IndentOption } from './types';\n\nfunction getIndentString(indent: IndentOption): string | number {\n if (indent === 'tab') return '\\t';\n return indent;\n}\n\nfunction sortObjectKeys(obj: unknown): unknown {\n if (obj === null || typeof obj !== 'object') {\n return obj;\n }\n\n if (Array.isArray(obj)) {\n return obj.map(sortObjectKeys);\n }\n\n const sorted: Record<string, unknown> = {};\n const keys = Object.keys(obj as Record<string, unknown>).sort();\n\n for (const key of keys) {\n sorted[key] = sortObjectKeys((obj as Record<string, unknown>)[key]);\n }\n\n return sorted;\n}\n\nexport function format(input: string, options: FormatOptions = {}): string {\n const { indent = 2, sortKeys = false } = options;\n\n let parsed: unknown;\n try {\n parsed = JSON.parse(input);\n } catch (error) {\n throw new Error(`Invalid JSON: ${(error as Error).message}`);\n }\n\n if (sortKeys) {\n parsed = sortObjectKeys(parsed);\n }\n\n const indentValue = getIndentString(indent);\n return JSON.stringify(parsed, null, indentValue);\n}\n\nexport function minify(input: string): string {\n const parsed = JSON.parse(input);\n return JSON.stringify(parsed);\n}\n\nexport function parse(input: string): unknown {\n return JSON.parse(input);\n}\n\nexport function stringify(value: unknown, options: FormatOptions = {}): string {\n const { indent = 2, sortKeys = false } = options;\n\n let data = value;\n if (sortKeys) {\n data = sortObjectKeys(value);\n }\n\n const indentValue = getIndentString(indent);\n return JSON.stringify(data, null, indentValue);\n}\n","import Ajv from 'ajv';\nimport addFormats from 'ajv-formats';\nimport type { ValidationResult, ValidationError } from './types';\n\nconst ajv = new Ajv({ allErrors: true, verbose: true });\naddFormats(ajv);\n\nexport function validate(input: string, schema?: string): ValidationResult {\n let parsed: unknown;\n try {\n parsed = JSON.parse(input);\n } catch (error) {\n return {\n valid: false,\n errors: [\n {\n path: '',\n message: `Invalid JSON: ${(error as Error).message}`,\n keyword: 'parse',\n },\n ],\n };\n }\n\n if (!schema) {\n return { valid: true };\n }\n\n let schemaObj: object;\n try {\n schemaObj = JSON.parse(schema);\n } catch (error) {\n return {\n valid: false,\n errors: [\n {\n path: '',\n message: `Invalid schema: ${(error as Error).message}`,\n keyword: 'schema',\n },\n ],\n };\n }\n\n const validateFn = ajv.compile(schemaObj);\n const valid = validateFn(parsed);\n\n if (valid) {\n return { valid: true };\n }\n\n const errors: ValidationError[] = (validateFn.errors || []).map((err) => ({\n path: err.instancePath || '/',\n message: err.message || 'Unknown validation error',\n keyword: err.keyword,\n }));\n\n return { valid: false, errors };\n}\n\nexport function isValidJson(input: string): boolean {\n try {\n JSON.parse(input);\n return true;\n } catch {\n return false;\n }\n}\n","import Ajv from 'ajv';\nimport addFormats from 'ajv-formats';\nimport type { DetailedValidationError, SchemaCoverage, SchemaValidationSummary } from './types';\n\nconst ajv = new Ajv({ allErrors: true, verbose: true });\naddFormats(ajv);\n\nfunction countSchemaProperties(schema: Record<string, unknown>): {\n totalProperties: number;\n requiredFields: string[];\n} {\n const props = schema.properties as Record<string, unknown> | undefined;\n const totalProperties = props ? Object.keys(props).length : 0;\n const requiredFields = (schema.required as string[]) || [];\n return { totalProperties, requiredFields };\n}\n\nfunction buildSuggestion(err: { keyword: string; instancePath: string; params?: Record<string, unknown>; schema?: unknown; data?: unknown }): string {\n const path = err.instancePath || '/';\n switch (err.keyword) {\n case 'type':\n return `Change value at '${path}' from ${typeof err.data} to ${err.schema}`;\n case 'required':\n return `Add missing required field '${(err.params as { missingProperty?: string })?.missingProperty}'`;\n case 'enum':\n return `Change value at '${path}' to one of: ${(err.schema as unknown[])?.join(', ')}`;\n case 'minimum':\n return `Adjust value at '${path}' to be >= ${err.schema}`;\n case 'maximum':\n return `Adjust value at '${path}' to be <= ${err.schema}`;\n case 'pattern':\n return `Change value at '${path}' to match pattern: ${err.schema}`;\n case 'additionalProperties':\n return `Remove unexpected property '${(err.params as { additionalProperty?: string })?.additionalProperty}'`;\n case 'minLength':\n return `Value at '${path}' must have at least ${err.schema} character(s)`;\n case 'maxLength':\n return `Value at '${path}' must have at most ${err.schema} character(s)`;\n case 'minItems':\n return `Array at '${path}' must have at least ${err.schema} item(s)`;\n case 'maxItems':\n return `Array at '${path}' must have at most ${err.schema} item(s)`;\n case 'format':\n return `Value at '${path}' must be a valid ${err.params?.format ?? err.schema}`;\n default:\n return `Fix value at '${path}': ${err.keyword}`;\n }\n}\n\nexport function validateWithSummary(input: string, schema: string): SchemaValidationSummary {\n let parsed: unknown;\n try {\n parsed = JSON.parse(input);\n } catch (error) {\n return {\n valid: false,\n summary: `Invalid JSON input: ${(error as Error).message}`,\n errorCount: 1,\n errors: [{\n path: '',\n message: `Invalid JSON: ${(error as Error).message}`,\n keyword: 'parse',\n suggestion: 'Fix JSON syntax errors before validating against a schema',\n }],\n coverage: { totalProperties: 0, validProperties: 0, missingRequired: [], extraProperties: [] },\n suggestions: ['Fix JSON syntax errors before validating against a schema'],\n };\n }\n\n let schemaObj: Record<string, unknown>;\n try {\n schemaObj = JSON.parse(schema);\n } catch (error) {\n return {\n valid: false,\n summary: `Invalid JSON Schema: ${(error as Error).message}`,\n errorCount: 1,\n errors: [{\n path: '',\n message: `Invalid schema: ${(error as Error).message}`,\n keyword: 'schema',\n suggestion: 'Fix the JSON Schema syntax before validating',\n }],\n coverage: { totalProperties: 0, validProperties: 0, missingRequired: [], extraProperties: [] },\n suggestions: ['Fix the JSON Schema syntax before validating'],\n };\n }\n\n const { totalProperties } = countSchemaProperties(schemaObj);\n const validateFn = ajv.compile(schemaObj);\n const valid = validateFn(parsed);\n\n if (valid) {\n return {\n valid: true,\n summary: `Validation passed. All ${totalProperties} schema properties satisfied (100%).`,\n errorCount: 0,\n errors: [],\n coverage: {\n totalProperties,\n validProperties: totalProperties,\n missingRequired: [],\n extraProperties: [],\n },\n suggestions: [],\n };\n }\n\n const ajvErrors = validateFn.errors || [];\n\n const missingRequired: string[] = [];\n const extraProperties: string[] = [];\n const errors: DetailedValidationError[] = ajvErrors.map((err) => {\n if (err.keyword === 'required') {\n const field = (err.params as { missingProperty?: string })?.missingProperty;\n if (field) missingRequired.push(field);\n }\n if (err.keyword === 'additionalProperties') {\n const prop = (err.params as { additionalProperty?: string })?.additionalProperty;\n if (prop) extraProperties.push(prop);\n }\n\n return {\n path: err.instancePath || '/',\n message: err.message || 'Unknown validation error',\n keyword: err.keyword,\n expected: err.schema,\n received: err.data,\n suggestion: buildSuggestion({\n keyword: err.keyword,\n instancePath: err.instancePath,\n params: err.params as Record<string, unknown>,\n schema: err.schema,\n data: err.data,\n }),\n };\n });\n\n const propertyErrorCount = new Set(\n ajvErrors\n .filter((e) => e.keyword !== 'required' && e.keyword !== 'additionalProperties')\n .map((e) => e.instancePath)\n ).size;\n const validProperties = Math.max(0, totalProperties - missingRequired.length - propertyErrorCount);\n\n const coverage: SchemaCoverage = {\n totalProperties,\n validProperties,\n missingRequired,\n extraProperties,\n };\n\n const pct = totalProperties > 0 ? Math.round((validProperties / totalProperties) * 100) : 0;\n const parts: string[] = [\n `Validation failed with ${errors.length} error(s).`,\n ];\n if (totalProperties > 0) {\n parts.push(`${validProperties} of ${totalProperties} schema properties satisfied (${pct}%).`);\n }\n if (missingRequired.length > 0) {\n parts.push(`Missing required: ${missingRequired.join(', ')}.`);\n }\n if (extraProperties.length > 0) {\n parts.push(`Unexpected properties: ${extraProperties.join(', ')}.`);\n }\n\n const suggestions = [...new Set(errors.map((e) => e.suggestion))];\n\n return {\n valid: false,\n summary: parts.join(' '),\n errorCount: errors.length,\n errors,\n coverage,\n suggestions,\n };\n}\n","import { JSONPath } from 'jsonpath-plus';\nimport jmespath from 'jmespath';\nimport type { QueryDialect, QueryOptions } from './types';\n\nexport function query(\n input: string,\n path: string,\n options: QueryOptions = {}\n): unknown {\n const { dialect = 'jsonpath' } = options;\n\n let parsed: unknown;\n try {\n parsed = JSON.parse(input);\n } catch (error) {\n throw new Error(`Invalid JSON: ${(error as Error).message}`);\n }\n\n return queryValue(parsed, path, dialect);\n}\n\nexport function queryValue(\n data: unknown,\n path: string,\n dialect: QueryDialect = 'jsonpath'\n): unknown {\n if (dialect === 'jsonpath') {\n return JSONPath({ path, json: data as object, wrap: false });\n }\n\n if (dialect === 'jmespath') {\n return jmespath.search(data, path);\n }\n\n throw new Error(`Unknown query dialect: ${dialect}`);\n}\n\nexport function queryMultiple(\n input: string,\n paths: string[],\n dialect: QueryDialect = 'jsonpath'\n): Record<string, unknown> {\n let parsed: unknown;\n try {\n parsed = JSON.parse(input);\n } catch (error) {\n throw new Error(`Invalid JSON: ${(error as Error).message}`);\n }\n\n const results: Record<string, unknown> = {};\n for (const path of paths) {\n results[path] = queryValue(parsed, path, dialect);\n }\n\n return results;\n}\n","import JSON5 from 'json5';\nimport yaml from 'js-yaml';\nimport * as TOML from 'smol-toml';\nimport type { ConvertFormat, ConvertOptions, IndentOption } from './types';\n\nfunction getIndent(indent: IndentOption = 2): number {\n if (indent === 'tab') return 2;\n return indent;\n}\n\nfunction parseInput(input: string, from: ConvertFormat): unknown {\n switch (from) {\n case 'json':\n return JSON.parse(input);\n case 'json5':\n case 'jsonc':\n return JSON5.parse(input);\n case 'yaml':\n return yaml.load(input);\n case 'toml':\n return TOML.parse(input);\n default:\n throw new Error(`Unsupported input format: ${from}`);\n }\n}\n\nfunction stringifyOutput(\n data: unknown,\n to: ConvertFormat,\n indent: IndentOption = 2\n): string {\n const indentNum = getIndent(indent);\n\n switch (to) {\n case 'json':\n return JSON.stringify(data, null, indentNum);\n case 'json5':\n case 'jsonc':\n return JSON5.stringify(data, null, indentNum);\n case 'yaml':\n return yaml.dump(data, { indent: indentNum, lineWidth: -1 });\n case 'toml':\n if (typeof data !== 'object' || data === null || Array.isArray(data)) {\n throw new Error('TOML requires a root object');\n }\n return TOML.stringify(data as Record<string, unknown>);\n default:\n throw new Error(`Unsupported output format: ${to}`);\n }\n}\n\nexport function convert(input: string, options: ConvertOptions): string {\n const { from, to, indent = 2 } = options;\n\n if (from === to) {\n const parsed = parseInput(input, from);\n return stringifyOutput(parsed, to, indent);\n }\n\n const parsed = parseInput(input, from);\n return stringifyOutput(parsed, to, indent);\n}\n\nexport function toJson(input: string, from: ConvertFormat): string {\n return convert(input, { from, to: 'json' });\n}\n\nexport function fromJson(input: string, to: ConvertFormat): string {\n return convert(input, { from: 'json', to });\n}\n\nexport function detectFormat(input: string): ConvertFormat | null {\n const trimmed = input.trim();\n\n if (trimmed.startsWith('{') || trimmed.startsWith('[')) {\n try {\n JSON.parse(trimmed);\n return 'json';\n } catch {\n try {\n JSON5.parse(trimmed);\n return 'json5';\n } catch {\n return null;\n }\n }\n }\n\n if (trimmed.includes(':') && !trimmed.includes('=')) {\n try {\n yaml.load(trimmed);\n return 'yaml';\n } catch {\n return null;\n }\n }\n\n if (trimmed.includes('=') && (trimmed.includes('[') || trimmed.includes('\"'))) {\n try {\n TOML.parse(trimmed);\n return 'toml';\n } catch {\n return null;\n }\n }\n\n return null;\n}\n","import { compare as jsonPatchCompare } from 'fast-json-patch';\nimport type { DiffResult, DiffOperation } from './types';\n\nexport function diff(a: string, b: string): DiffResult {\n let parsedA: unknown;\n let parsedB: unknown;\n\n try {\n parsedA = JSON.parse(a);\n } catch (error) {\n throw new Error(`Invalid JSON (first argument): ${(error as Error).message}`);\n }\n\n try {\n parsedB = JSON.parse(b);\n } catch (error) {\n throw new Error(`Invalid JSON (second argument): ${(error as Error).message}`);\n }\n\n return diffValues(parsedA, parsedB);\n}\n\nexport function diffValues(a: unknown, b: unknown): DiffResult {\n const operations = jsonPatchCompare(\n a as object,\n b as object\n ) as DiffOperation[];\n\n const summary = {\n added: 0,\n removed: 0,\n changed: 0,\n };\n\n for (const op of operations) {\n switch (op.op) {\n case 'add':\n summary.added++;\n break;\n case 'remove':\n summary.removed++;\n break;\n case 'replace':\n summary.changed++;\n break;\n }\n }\n\n return {\n identical: operations.length === 0,\n operations,\n summary,\n };\n}\n\nexport function applyPatch(\n input: string,\n operations: DiffOperation[]\n): string {\n const parsed = JSON.parse(input);\n\n for (const op of operations) {\n applyOperation(parsed, op);\n }\n\n return JSON.stringify(parsed, null, 2);\n}\n\nfunction applyOperation(obj: unknown, operation: DiffOperation): void {\n const pathParts = operation.path.split('/').filter(Boolean);\n\n if (pathParts.length === 0) {\n throw new Error('Cannot apply operation to root');\n }\n\n const parent = getParent(obj, pathParts);\n const key = pathParts[pathParts.length - 1];\n\n switch (operation.op) {\n case 'add':\n case 'replace':\n if (Array.isArray(parent)) {\n const index = parseInt(key, 10);\n if (operation.op === 'add') {\n parent.splice(index, 0, operation.value);\n } else {\n parent[index] = operation.value;\n }\n } else if (typeof parent === 'object' && parent !== null) {\n (parent as Record<string, unknown>)[key] = operation.value;\n }\n break;\n case 'remove':\n if (Array.isArray(parent)) {\n parent.splice(parseInt(key, 10), 1);\n } else if (typeof parent === 'object' && parent !== null) {\n delete (parent as Record<string, unknown>)[key];\n }\n break;\n }\n}\n\nfunction getParent(obj: unknown, pathParts: string[]): unknown {\n let current = obj;\n\n for (let i = 0; i < pathParts.length - 1; i++) {\n const part = pathParts[i];\n if (Array.isArray(current)) {\n current = current[parseInt(part, 10)];\n } else if (typeof current === 'object' && current !== null) {\n current = (current as Record<string, unknown>)[part];\n }\n }\n\n return current;\n}\n","import type { JsonStats } from './types';\n\nexport function getStats(input: string): JsonStats {\n const parsed = JSON.parse(input);\n\n const stats: JsonStats = {\n keys: 0,\n depth: 0,\n arrays: 0,\n objects: 0,\n strings: 0,\n numbers: 0,\n booleans: 0,\n nulls: 0,\n sizeBytes: new TextEncoder().encode(input).length,\n };\n\n analyzeValue(parsed, stats, 0);\n\n return stats;\n}\n\nfunction analyzeValue(value: unknown, stats: JsonStats, depth: number): void {\n stats.depth = Math.max(stats.depth, depth);\n\n if (value === null) {\n stats.nulls++;\n return;\n }\n\n switch (typeof value) {\n case 'string':\n stats.strings++;\n break;\n case 'number':\n stats.numbers++;\n break;\n case 'boolean':\n stats.booleans++;\n break;\n case 'object':\n if (Array.isArray(value)) {\n stats.arrays++;\n for (const item of value) {\n analyzeValue(item, stats, depth + 1);\n }\n } else {\n stats.objects++;\n const keys = Object.keys(value as object);\n stats.keys += keys.length;\n for (const key of keys) {\n analyzeValue((value as Record<string, unknown>)[key], stats, depth + 1);\n }\n }\n break;\n }\n}\n\nexport function getSizeInfo(input: string): {\n bytes: number;\n formatted: string;\n minifiedBytes: number;\n savings: number;\n} {\n const bytes = new TextEncoder().encode(input).length;\n const minified = JSON.stringify(JSON.parse(input));\n const minifiedBytes = new TextEncoder().encode(minified).length;\n\n return {\n bytes,\n formatted: formatBytes(bytes),\n minifiedBytes,\n savings: bytes - minifiedBytes,\n };\n}\n\nfunction formatBytes(bytes: number): string {\n if (bytes === 0) return '0 B';\n\n const k = 1024;\n const sizes = ['B', 'KB', 'MB', 'GB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n\n return `${parseFloat((bytes / Math.pow(k, i)).toFixed(2))} ${sizes[i]}`;\n}\n","export * from './types';\nexport * from './parse';\nexport * from './filter';\nexport * from './stats';\nexport * from './transform';\nexport * from './export';\n","import Papa from 'papaparse';\nimport type { ParseOptions, ParseResult, ParseError } from './types';\n\nexport function parse(input: string, options: ParseOptions = {}): ParseResult {\n const {\n delimiter = ',',\n header = true,\n skipRows = 0,\n trimFields = true,\n dynamicTyping = true,\n } = options;\n\n let processedInput = input;\n if (skipRows > 0) {\n const lines = input.split('\\n');\n processedInput = lines.slice(skipRows).join('\\n');\n }\n\n const result = Papa.parse(processedInput, {\n delimiter,\n header,\n skipEmptyLines: true,\n transformHeader: trimFields ? (h) => h.trim() : undefined,\n transform: trimFields ? (v) => v.trim() : undefined,\n dynamicTyping,\n });\n\n const errors: ParseError[] = result.errors.map((e) => ({\n row: e.row ?? -1,\n message: e.message,\n }));\n\n const headers = header\n ? (result.meta.fields || [])\n : Array.from({ length: (result.data[0] as unknown[])?.length || 0 }, (_, i) => `col_${i}`);\n\n const data = header\n ? (result.data as Record<string, unknown>[])\n : (result.data as unknown[][]).map((row) => {\n const obj: Record<string, unknown> = {};\n headers.forEach((h, i) => {\n obj[h] = row[i];\n });\n return obj;\n });\n\n return {\n data,\n headers,\n rowCount: data.length,\n errors,\n };\n}\n\nexport function parseToArray(input: string, options: ParseOptions = {}): unknown[][] {\n const result = parse(input, { ...options, header: false });\n return result.data.map((row) => Object.values(row));\n}\n\nexport function detectDelimiter(input: string): string {\n const delimiters = [',', '\\t', ';', '|'];\n const firstLine = input.split('\\n')[0];\n\n let maxCount = 0;\n let detected = ',';\n\n for (const d of delimiters) {\n const count = (firstLine.match(new RegExp(`\\\\${d}`, 'g')) || []).length;\n if (count > maxCount) {\n maxCount = count;\n detected = d;\n }\n }\n\n return detected;\n}\n\nexport function getHeaders(input: string, delimiter?: string): string[] {\n const d = delimiter || detectDelimiter(input);\n const firstLine = input.split('\\n')[0];\n return Papa.parse(firstLine, { delimiter: d }).data[0] as string[];\n}\n","import type { Filter, FilterOperator } from './types';\nimport { parse } from './parse';\n\nexport function filter(input: string, filters: Filter[]): string {\n const result = parse(input);\n const filteredData = filterData(result.data, filters);\n return toCSV(filteredData, result.headers);\n}\n\nexport function filterData(\n data: Record<string, unknown>[],\n filters: Filter[]\n): Record<string, unknown>[] {\n return data.filter((row) => {\n return filters.every((f) => matchesFilter(row, f));\n });\n}\n\nfunction matchesFilter(row: Record<string, unknown>, filter: Filter): boolean {\n const value = row[filter.column];\n const filterValue = filter.value;\n\n switch (filter.operator) {\n case 'eq':\n return value === filterValue;\n case 'neq':\n return value !== filterValue;\n case 'gt':\n return Number(value) > Number(filterValue);\n case 'gte':\n return Number(value) >= Number(filterValue);\n case 'lt':\n return Number(value) < Number(filterValue);\n case 'lte':\n return Number(value) <= Number(filterValue);\n case 'contains':\n return String(value).toLowerCase().includes(String(filterValue).toLowerCase());\n case 'startsWith':\n return String(value).toLowerCase().startsWith(String(filterValue).toLowerCase());\n case 'endsWith':\n return String(value).toLowerCase().endsWith(String(filterValue).toLowerCase());\n case 'matches':\n return new RegExp(String(filterValue), 'i').test(String(value));\n case 'isNull':\n return value === null || value === undefined || value === '';\n case 'isNotNull':\n return value !== null && value !== undefined && value !== '';\n default:\n return true;\n }\n}\n\nfunction toCSV(data: Record<string, unknown>[], headers: string[]): string {\n const headerRow = headers.map(escapeCSVField).join(',');\n const dataRows = data.map((row) =>\n headers.map((h) => escapeCSVField(row[h])).join(',')\n );\n return [headerRow, ...dataRows].join('\\n');\n}\n\nfunction escapeCSVField(value: unknown): string {\n if (value === null || value === undefined) {\n return '';\n }\n\n const str = String(value);\n if (str.includes(',') || str.includes('\"') || str.includes('\\n')) {\n return `\"${str.replace(/\"/g, '\"\"')}\"`;\n }\n return str;\n}\n\nexport function filterByColumn(\n input: string,\n column: string,\n operator: FilterOperator,\n value?: unknown\n): string {\n return filter(input, [{ column, operator, value }]);\n}\n","import type { ColumnStats, ParseResult } from './types';\nimport { parse } from './parse';\n\nexport function getStats(input: string): ColumnStats[] {\n const result = parse(input);\n return getStatsFromData(result);\n}\n\nexport function getStatsFromData(result: ParseResult): ColumnStats[] {\n const { data, headers } = result;\n\n return headers.map((header) => {\n const values = data.map((row) => row[header]);\n return analyzeColumn(header, values);\n });\n}\n\nfunction analyzeColumn(name: string, values: unknown[]): ColumnStats {\n const nonNullValues = values.filter(\n (v) => v !== null && v !== undefined && v !== ''\n );\n\n const nullCount = values.length - nonNullValues.length;\n const type = detectType(nonNullValues);\n\n const stats: ColumnStats = {\n name,\n type,\n count: values.length,\n nullCount,\n uniqueCount: new Set(nonNullValues.map(String)).size,\n };\n\n if (type === 'number') {\n const numbers = nonNullValues.map(Number).filter((n) => !isNaN(n));\n if (numbers.length > 0) {\n stats.min = Math.min(...numbers);\n stats.max = Math.max(...numbers);\n stats.sum = numbers.reduce((a, b) => a + b, 0);\n stats.mean = stats.sum / numbers.length;\n }\n } else if (type === 'string' || type === 'date') {\n const sorted = [...nonNullValues].map(String).sort();\n if (sorted.length > 0) {\n stats.min = sorted[0];\n stats.max = sorted[sorted.length - 1];\n }\n }\n\n stats.topValues = getTopValues(nonNullValues, 5);\n\n return stats;\n}\n\nfunction detectType(\n values: unknown[]\n): 'string' | 'number' | 'boolean' | 'date' | 'mixed' | 'empty' {\n if (values.length === 0) return 'empty';\n\n const types = new Set<string>();\n\n for (const value of values) {\n if (typeof value === 'number' || !isNaN(Number(value))) {\n types.add('number');\n } else if (typeof value === 'boolean' || value === 'true' || value === 'false') {\n types.add('boolean');\n } else if (isDateLike(String(value))) {\n types.add('date');\n } else {\n types.add('string');\n }\n }\n\n if (types.size === 1) {\n return types.values().next().value as 'string' | 'number' | 'boolean' | 'date';\n }\n\n if (types.size === 2 && types.has('number') && types.has('string')) {\n const numberRatio =\n values.filter((v) => !isNaN(Number(v))).length / values.length;\n if (numberRatio > 0.9) return 'number';\n }\n\n return 'mixed';\n}\n\nfunction isDateLike(value: string): boolean {\n const datePatterns = [\n /^\\d{4}-\\d{2}-\\d{2}$/,\n /^\\d{2}\\/\\d{2}\\/\\d{4}$/,\n /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}/,\n ];\n return datePatterns.some((p) => p.test(value));\n}\n\nfunction getTopValues(\n values: unknown[],\n limit: number\n): { value: unknown; count: number }[] {\n const counts = new Map<string, { value: unknown; count: number }>();\n\n for (const value of values) {\n const key = String(value);\n const existing = counts.get(key);\n if (existing) {\n existing.count++;\n } else {\n counts.set(key, { value, count: 1 });\n }\n }\n\n return [...counts.values()]\n .sort((a, b) => b.count - a.count)\n .slice(0, limit);\n}\n\nexport function getColumnStats(input: string, column: string): ColumnStats | null {\n const stats = getStats(input);\n return stats.find((s) => s.name === column) || null;\n}\n","import type { TransformOptions, ParseResult } from './types';\nimport { parse } from './parse';\n\nexport function transform(input: string, options: TransformOptions): string {\n const result = parse(input);\n const transformed = transformData(result, options);\n return toCSV(transformed.data, transformed.headers);\n}\n\nexport function transformData(\n result: ParseResult,\n options: TransformOptions\n): ParseResult {\n let { data, headers } = result;\n\n if (options.select) {\n headers = options.select.filter((h) => headers.includes(h));\n }\n\n if (options.exclude) {\n headers = headers.filter((h) => !options.exclude!.includes(h));\n }\n\n if (options.rename) {\n headers = headers.map((h) => options.rename![h] || h);\n }\n\n data = data.map((row) => {\n const newRow: Record<string, unknown> = {};\n\n for (const header of result.headers) {\n if (options.select && !options.select.includes(header)) continue;\n if (options.exclude && options.exclude.includes(header)) continue;\n\n const newKey = options.rename?.[header] || header;\n newRow[newKey] = row[header];\n }\n\n if (options.derive) {\n for (const [key, fn] of Object.entries(options.derive)) {\n newRow[key] = fn(row);\n }\n }\n\n return newRow;\n });\n\n if (options.derive) {\n headers = [...headers, ...Object.keys(options.derive)];\n }\n\n return { data, headers, rowCount: data.length, errors: [] };\n}\n\nfunction toCSV(data: Record<string, unknown>[], headers: string[]): string {\n const headerRow = headers.map(escapeCSVField).join(',');\n const dataRows = data.map((row) =>\n headers.map((h) => escapeCSVField(row[h])).join(',')\n );\n return [headerRow, ...dataRows].join('\\n');\n}\n\nfunction escapeCSVField(value: unknown): string {\n if (value === null || value === undefined) {\n return '';\n }\n\n const str = String(value);\n if (str.includes(',') || str.includes('\"') || str.includes('\\n')) {\n return `\"${str.replace(/\"/g, '\"\"')}\"`;\n }\n return str;\n}\n\nexport function sortData(\n data: Record<string, unknown>[],\n column: string,\n direction: 'asc' | 'desc' = 'asc'\n): Record<string, unknown>[] {\n return [...data].sort((a, b) => {\n const aVal = a[column];\n const bVal = b[column];\n\n if (aVal === bVal) return 0;\n if (aVal === null || aVal === undefined) return 1;\n if (bVal === null || bVal === undefined) return -1;\n\n const comparison =\n typeof aVal === 'number' && typeof bVal === 'number'\n ? aVal - bVal\n : String(aVal).localeCompare(String(bVal));\n\n return direction === 'asc' ? comparison : -comparison;\n });\n}\n","import type { ExportOptions, ParseResult } from './types';\nimport { parse } from './parse';\n\nexport function exportData(input: string, options: ExportOptions): string {\n const result = parse(input);\n return exportFromData(result, options);\n}\n\nexport function exportFromData(result: ParseResult, options: ExportOptions): string {\n const { format, headers = true, delimiter } = options;\n\n switch (format) {\n case 'csv':\n return toCSV(result.data, result.headers, delimiter || ',', headers);\n case 'tsv':\n return toCSV(result.data, result.headers, '\\t', headers);\n case 'json':\n return JSON.stringify(result.data, null, 2);\n case 'jsonl':\n return result.data.map((row) => JSON.stringify(row)).join('\\n');\n default:\n throw new Error(`Unsupported export format: ${format}`);\n }\n}\n\nfunction toCSV(\n data: Record<string, unknown>[],\n headers: string[],\n delimiter: string,\n includeHeaders: boolean\n): string {\n const lines: string[] = [];\n\n if (includeHeaders) {\n lines.push(headers.map((h) => escapeField(h, delimiter)).join(delimiter));\n }\n\n for (const row of data) {\n lines.push(\n headers.map((h) => escapeField(row[h], delimiter)).join(delimiter)\n );\n }\n\n return lines.join('\\n');\n}\n\nfunction escapeField(value: unknown, delimiter: string): string {\n if (value === null || value === undefined) {\n return '';\n }\n\n const str = String(value);\n const needsQuoting =\n str.includes(delimiter) || str.includes('\"') || str.includes('\\n');\n\n if (needsQuoting) {\n return `\"${str.replace(/\"/g, '\"\"')}\"`;\n }\n\n return str;\n}\n\nexport function toJson(input: string, pretty = true): string {\n const result = parse(input);\n return pretty\n ? JSON.stringify(result.data, null, 2)\n : JSON.stringify(result.data);\n}\n\nexport function toJsonLines(input: string): string {\n const result = parse(input);\n return result.data.map((row) => JSON.stringify(row)).join('\\n');\n}\n\nexport function toArray(input: string): Record<string, unknown>[] {\n const result = parse(input);\n return result.data;\n}\n","export * from './types';\nexport * from './utils';\nexport * from './merge';\nexport * from './split';\nexport * from './metadata';\nexport * from './transform';\nexport * from './extract';\nexport * from './template';\n","import type { PageRange } from './types';\n\nexport function parsePageRanges(rangeStr: string, totalPages: number): number[] {\n const pages: Set<number> = new Set();\n const parts = rangeStr.split(',').map((s) => s.trim());\n\n for (const part of parts) {\n if (part.toLowerCase() === 'all') {\n for (let i = 1; i <= totalPages; i++) {\n pages.add(i);\n }\n continue;\n }\n\n if (part.includes('-')) {\n const [startStr, endStr] = part.split('-').map((s) => s.trim());\n const start = parseInt(startStr, 10) || 1;\n const end = parseInt(endStr, 10) || totalPages;\n\n for (let i = Math.max(1, start); i <= Math.min(totalPages, end); i++) {\n pages.add(i);\n }\n } else {\n const page = parseInt(part, 10);\n if (page >= 1 && page <= totalPages) {\n pages.add(page);\n }\n }\n }\n\n return [...pages].sort((a, b) => a - b);\n}\n\nexport function parseRangesToGroups(\n rangeStr: string,\n totalPages: number\n): PageRange[] {\n const ranges: PageRange[] = [];\n const parts = rangeStr.split(',').map((s) => s.trim());\n\n for (const part of parts) {\n if (part.toLowerCase() === 'all') {\n ranges.push({ start: 1, end: totalPages });\n continue;\n }\n\n if (part.includes('-')) {\n const [startStr, endStr] = part.split('-').map((s) => s.trim());\n const start = parseInt(startStr, 10) || 1;\n const end = parseInt(endStr, 10) || totalPages;\n ranges.push({\n start: Math.max(1, start),\n end: Math.min(totalPages, end),\n });\n } else {\n const page = parseInt(part, 10);\n if (page >= 1 && page <= totalPages) {\n ranges.push({ start: page, end: page });\n }\n }\n }\n\n return ranges;\n}\n\nexport function formatBytes(bytes: number): string {\n if (bytes === 0) return '0 B';\n\n const k = 1024;\n const sizes = ['B', 'KB', 'MB', 'GB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n\n return `${parseFloat((bytes / Math.pow(k, i)).toFixed(2))} ${sizes[i]}`;\n}\n\nexport function toUint8Array(data: Buffer | Uint8Array | ArrayBuffer): Uint8Array {\n if (data instanceof Uint8Array) {\n return data;\n }\n if (data instanceof ArrayBuffer) {\n return new Uint8Array(data);\n }\n if (Buffer.isBuffer(data)) {\n return new Uint8Array(data);\n }\n throw new Error('Invalid data type');\n}\n","import { PDFDocument } from 'pdf-lib';\nimport type { MergeOptions } from './types';\nimport { parsePageRanges, toUint8Array } from './utils';\n\nexport async function merge(\n files: (Buffer | Uint8Array)[],\n options: MergeOptions = {}\n): Promise<Uint8Array> {\n const { pageRanges } = options;\n\n const mergedPdf = await PDFDocument.create();\n\n for (let i = 0; i < files.length; i++) {\n const fileData = toUint8Array(files[i]);\n const sourcePdf = await PDFDocument.load(fileData);\n const totalPages = sourcePdf.getPageCount();\n\n let pagesToCopy: number[];\n\n if (pageRanges && pageRanges[i]) {\n pagesToCopy = parsePageRanges(pageRanges[i], totalPages);\n } else {\n pagesToCopy = Array.from({ length: totalPages }, (_, j) => j + 1);\n }\n\n const pageIndices = pagesToCopy.map((p) => p - 1);\n const copiedPages = await mergedPdf.copyPages(sourcePdf, pageIndices);\n\n for (const page of copiedPages) {\n mergedPdf.addPage(page);\n }\n }\n\n return mergedPdf.save();\n}\n\nexport async function mergeAll(files: (Buffer | Uint8Array)[]): Promise<Uint8Array> {\n return merge(files);\n}\n\nexport async function appendPages(\n target: Buffer | Uint8Array,\n source: Buffer | Uint8Array,\n pageRange?: string\n): Promise<Uint8Array> {\n const targetPdf = await PDFDocument.load(toUint8Array(target));\n const sourcePdf = await PDFDocument.load(toUint8Array(source));\n\n const totalPages = sourcePdf.getPageCount();\n const pagesToCopy = pageRange\n ? parsePageRanges(pageRange, totalPages)\n : Array.from({ length: totalPages }, (_, i) => i + 1);\n\n const pageIndices = pagesToCopy.map((p) => p - 1);\n const copiedPages = await targetPdf.copyPages(sourcePdf, pageIndices);\n\n for (const page of copiedPages) {\n targetPdf.addPage(page);\n }\n\n return targetPdf.save();\n}\n","import { PDFDocument } from 'pdf-lib';\nimport type { SplitOptions } from './types';\nimport { parsePageRanges, parseRangesToGroups, toUint8Array } from './utils';\n\nexport async function split(\n file: Buffer | Uint8Array,\n options: SplitOptions\n): Promise<Uint8Array[]> {\n const { ranges } = options;\n const fileData = toUint8Array(file);\n const sourcePdf = await PDFDocument.load(fileData);\n const totalPages = sourcePdf.getPageCount();\n\n const rangeGroups = parseRangesToGroups(ranges, totalPages);\n const results: Uint8Array[] = [];\n\n for (const range of rangeGroups) {\n const newPdf = await PDFDocument.create();\n const pageIndices: number[] = [];\n\n for (let i = range.start; i <= range.end; i++) {\n pageIndices.push(i - 1);\n }\n\n const copiedPages = await newPdf.copyPages(sourcePdf, pageIndices);\n for (const page of copiedPages) {\n newPdf.addPage(page);\n }\n\n results.push(await newPdf.save());\n }\n\n return results;\n}\n\nexport async function extractPages(\n file: Buffer | Uint8Array,\n pageRange: string\n): Promise<Uint8Array> {\n const fileData = toUint8Array(file);\n const sourcePdf = await PDFDocument.load(fileData);\n const totalPages = sourcePdf.getPageCount();\n\n const pages = parsePageRanges(pageRange, totalPages);\n const newPdf = await PDFDocument.create();\n\n const pageIndices = pages.map((p) => p - 1);\n const copiedPages = await newPdf.copyPages(sourcePdf, pageIndices);\n\n for (const page of copiedPages) {\n newPdf.addPage(page);\n }\n\n return newPdf.save();\n}\n\nexport async function splitEveryN(\n file: Buffer | Uint8Array,\n n: number\n): Promise<Uint8Array[]> {\n const fileData = toUint8Array(file);\n const sourcePdf = await PDFDocument.load(fileData);\n const totalPages = sourcePdf.getPageCount();\n\n const ranges: string[] = [];\n for (let i = 1; i <= totalPages; i += n) {\n const end = Math.min(i + n - 1, totalPages);\n ranges.push(`${i}-${end}`);\n }\n\n return split(file, { ranges: ranges.join(',') });\n}\n\nexport async function splitIntoSingle(\n file: Buffer | Uint8Array\n): Promise<Uint8Array[]> {\n return splitEveryN(file, 1);\n}\n","import { PDFDocument } from 'pdf-lib';\nimport type { PDFMetadata, PDFInfo, PageInfo } from './types';\nimport { toUint8Array } from './utils';\n\nexport async function getInfo(file: Buffer | Uint8Array): Promise<PDFInfo> {\n const fileData = toUint8Array(file);\n const pdf = await PDFDocument.load(fileData, { ignoreEncryption: true });\n\n return {\n pageCount: pdf.getPageCount(),\n metadata: {\n title: pdf.getTitle(),\n author: pdf.getAuthor(),\n subject: pdf.getSubject(),\n keywords: pdf.getKeywords()?.split(',').map((k) => k.trim()),\n creator: pdf.getCreator(),\n producer: pdf.getProducer(),\n creationDate: pdf.getCreationDate(),\n modificationDate: pdf.getModificationDate(),\n },\n encrypted: false,\n version: 'PDF-1.7',\n };\n}\n\nexport async function getMetadata(file: Buffer | Uint8Array): Promise<PDFMetadata> {\n const info = await getInfo(file);\n return info.metadata;\n}\n\nexport async function setMetadata(\n file: Buffer | Uint8Array,\n metadata: Partial<PDFMetadata>\n): Promise<Uint8Array> {\n const fileData = toUint8Array(file);\n const pdf = await PDFDocument.load(fileData);\n\n if (metadata.title !== undefined) pdf.setTitle(metadata.title);\n if (metadata.author !== undefined) pdf.setAuthor(metadata.author);\n if (metadata.subject !== undefined) pdf.setSubject(metadata.subject);\n if (metadata.keywords !== undefined) pdf.setKeywords(metadata.keywords);\n if (metadata.creator !== undefined) pdf.setCreator(metadata.creator);\n if (metadata.producer !== undefined) pdf.setProducer(metadata.producer);\n\n return pdf.save();\n}\n\nexport async function getPageInfo(file: Buffer | Uint8Array): Promise<PageInfo[]> {\n const fileData = toUint8Array(file);\n const pdf = await PDFDocument.load(fileData);\n\n const pages = pdf.getPages();\n return pages.map((page, index) => ({\n index,\n width: page.getWidth(),\n height: page.getHeight(),\n rotation: page.getRotation().angle,\n }));\n}\n\nexport async function getPageCount(file: Buffer | Uint8Array): Promise<number> {\n const fileData = toUint8Array(file);\n const pdf = await PDFDocument.load(fileData);\n return pdf.getPageCount();\n}\n","import { PDFDocument, degrees, rgb, StandardFonts } from 'pdf-lib';\nimport type { RotateOptions, WatermarkOptions, CompressOptions } from './types';\nimport { parsePageRanges, toUint8Array } from './utils';\n\nexport async function rotate(\n file: Buffer | Uint8Array,\n options: RotateOptions\n): Promise<Uint8Array> {\n const { pages: pageRange, degrees: deg } = options;\n const fileData = toUint8Array(file);\n const pdf = await PDFDocument.load(fileData);\n\n const allPages = pdf.getPages();\n const pagesToRotate = pageRange\n ? parsePageRanges(pageRange.join(','), allPages.length)\n : Array.from({ length: allPages.length }, (_, i) => i + 1);\n\n for (const pageNum of pagesToRotate) {\n const page = allPages[pageNum - 1];\n if (page) {\n const currentRotation = page.getRotation().angle;\n page.setRotation(degrees(currentRotation + deg));\n }\n }\n\n return pdf.save();\n}\n\nexport async function addWatermark(\n file: Buffer | Uint8Array,\n options: WatermarkOptions\n): Promise<Uint8Array> {\n const {\n text = 'WATERMARK',\n opacity = 0.3,\n rotation = -45,\n position = 'center',\n fontSize = 50,\n color = { r: 0.5, g: 0.5, b: 0.5 },\n } = options;\n\n const fileData = toUint8Array(file);\n const pdf = await PDFDocument.load(fileData);\n const font = await pdf.embedFont(StandardFonts.Helvetica);\n\n const pages = pdf.getPages();\n\n for (const page of pages) {\n const { width, height } = page.getSize();\n const textWidth = font.widthOfTextAtSize(text, fontSize);\n\n const x = (width - textWidth) / 2;\n let y = height / 2;\n\n if (position === 'top') {\n y = height - fontSize - 20;\n } else if (position === 'bottom') {\n y = 20;\n }\n\n page.drawText(text, {\n x,\n y,\n size: fontSize,\n font,\n color: rgb(color.r, color.g, color.b),\n opacity,\n rotate: degrees(rotation),\n });\n }\n\n return pdf.save();\n}\n\nexport async function reorderPages(\n file: Buffer | Uint8Array,\n newOrder: number[]\n): Promise<Uint8Array> {\n const fileData = toUint8Array(file);\n const sourcePdf = await PDFDocument.load(fileData);\n const newPdf = await PDFDocument.create();\n\n const pageIndices = newOrder.map((p) => p - 1);\n const copiedPages = await newPdf.copyPages(sourcePdf, pageIndices);\n\n for (const page of copiedPages) {\n newPdf.addPage(page);\n }\n\n return newPdf.save();\n}\n\nexport async function deletePage(\n file: Buffer | Uint8Array,\n pageNumbers: number[]\n): Promise<Uint8Array> {\n const fileData = toUint8Array(file);\n const pdf = await PDFDocument.load(fileData);\n const totalPages = pdf.getPageCount();\n\n const sortedPageNumbers = [...pageNumbers].sort((a, b) => b - a);\n\n for (const pageNum of sortedPageNumbers) {\n if (pageNum >= 1 && pageNum <= totalPages) {\n pdf.removePage(pageNum - 1);\n }\n }\n\n return pdf.save();\n}\n\nexport async function compress(\n file: Buffer | Uint8Array,\n _options: CompressOptions = { quality: 'medium' }\n): Promise<Uint8Array> {\n const fileData = toUint8Array(file);\n const pdf = await PDFDocument.load(fileData);\n\n return pdf.save({\n useObjectStreams: true,\n addDefaultPage: false,\n });\n}\n","import type { ExtractTextOptions } from './types';\nimport { toUint8Array, parsePageRanges } from './utils';\n\nexport async function extractText(\n file: Buffer | Uint8Array,\n options: ExtractTextOptions = {}\n): Promise<string> {\n const { pages: pageNums } = options;\n const fileData = toUint8Array(file);\n\n try {\n const pdfParse = await import('pdf-parse');\n const parser = pdfParse.default || pdfParse;\n\n if (pageNums && pageNums.length > 0) {\n const result = await parser(Buffer.from(fileData), {\n max: Math.max(...pageNums),\n });\n\n return result.text;\n }\n\n const result = await parser(Buffer.from(fileData));\n return result.text;\n } catch (error) {\n throw new Error(`Failed to extract text: ${(error as Error).message}`);\n }\n}\n\nexport async function extractTextFromPages(\n file: Buffer | Uint8Array,\n pageRange: string\n): Promise<Record<number, string>> {\n const fileData = toUint8Array(file);\n\n try {\n const pdfParse = await import('pdf-parse');\n const parser = pdfParse.default || pdfParse;\n\n const result = await parser(Buffer.from(fileData));\n const totalPages = result.numpages;\n const pages = parsePageRanges(pageRange, totalPages);\n\n const pageTexts: Record<number, string> = {};\n\n const fullText = result.text;\n const textPerPage = fullText.length / totalPages;\n\n for (const pageNum of pages) {\n const start = (pageNum - 1) * textPerPage;\n const end = pageNum * textPerPage;\n pageTexts[pageNum] = fullText.slice(start, end).trim();\n }\n\n return pageTexts;\n } catch (error) {\n throw new Error(`Failed to extract text: ${(error as Error).message}`);\n }\n}\n\nexport async function hasText(file: Buffer | Uint8Array): Promise<boolean> {\n try {\n const text = await extractText(file);\n return text.trim().length > 0;\n } catch {\n return false;\n }\n}\n","import { PDFDocument, StandardFonts, rgb } from 'pdf-lib';\nimport type {\n PDFTemplate,\n TemplatePage,\n TemplateElement,\n TemplateField,\n TemplateFont,\n PdfToTemplateOptions,\n TemplateToPdfOptions,\n} from './types';\nimport { toUint8Array } from './utils';\n\nconst PLACEHOLDER_REGEX = /\\{\\{(\\w+)\\}\\}/g;\n\nfunction extractFieldName(content: string): string | undefined {\n const match = content.match(/^\\{\\{(\\w+)\\}\\}$/);\n return match ? match[1] : undefined;\n}\n\nfunction resolveContent(\n content: string,\n data: Record<string, string>,\n missingFieldBehavior: 'leave_placeholder' | 'use_default' | 'empty_string',\n fields: TemplateField[]\n): string {\n return content.replace(PLACEHOLDER_REGEX, (match, fieldName) => {\n if (fieldName in data) {\n return data[fieldName];\n }\n switch (missingFieldBehavior) {\n case 'use_default': {\n const field = fields.find((f) => f.name === fieldName);\n return field?.defaultValue ?? '';\n }\n case 'empty_string':\n return '';\n case 'leave_placeholder':\n default:\n return match;\n }\n });\n}\n\nfunction resolveFont(\n font: TemplateFont | undefined,\n defaults: PDFTemplate['defaults']\n): TemplateFont {\n return font ?? defaults?.font ?? { name: 'Helvetica', size: 12 };\n}\n\nexport async function pdfToTemplate(\n file: Buffer | Uint8Array,\n options: PdfToTemplateOptions = {}\n): Promise<PDFTemplate> {\n const fileData = toUint8Array(file);\n const pdfDoc = await PDFDocument.load(fileData, { ignoreEncryption: true });\n const pageCount = pdfDoc.getPageCount();\n const pdfPages = pdfDoc.getPages();\n\n let fullText = '';\n try {\n const pdfParse = await import('pdf-parse');\n const parser = pdfParse.default || pdfParse;\n const parsed = await parser(Buffer.from(fileData));\n fullText = parsed.text;\n } catch {\n fullText = '';\n }\n\n const textPerPage = pageCount > 0 ? fullText.length / pageCount : 0;\n const fieldsMap = new Map<string, { pages: Set<number>; defaultValue: string }>();\n const fonts: Record<string, TemplateFont> = {};\n const defaultFont: TemplateFont = { name: 'Helvetica', size: 12 };\n\n fonts['Helvetica-12'] = defaultFont;\n\n const pages: TemplatePage[] = pdfPages.map((page, pageIndex) => {\n const { width, height } = page.getSize();\n\n const start = Math.floor(pageIndex * textPerPage);\n const end = Math.floor((pageIndex + 1) * textPerPage);\n const pageText = fullText.slice(start, end).trim();\n\n const elements: TemplateElement[] = [];\n\n if (pageText) {\n const lines = pageText.split('\\n').filter((l) => l.trim());\n const lineHeight = 14;\n let yPos = height - 40;\n\n for (const line of lines) {\n const hasPlaceholder = PLACEHOLDER_REGEX.test(line);\n PLACEHOLDER_REGEX.lastIndex = 0;\n\n const element: TemplateElement = {\n type: hasPlaceholder ? 'placeholder' : 'text',\n content: line.trim(),\n x: 40,\n y: yPos,\n font: defaultFont,\n };\n\n if (hasPlaceholder) {\n const fieldName = extractFieldName(line.trim());\n if (fieldName) {\n element.fieldName = fieldName;\n }\n\n let match;\n PLACEHOLDER_REGEX.lastIndex = 0;\n while ((match = PLACEHOLDER_REGEX.exec(line)) !== null) {\n const name = match[1];\n if (!fieldsMap.has(name)) {\n fieldsMap.set(name, { pages: new Set(), defaultValue: '' });\n }\n fieldsMap.get(name)!.pages.add(pageIndex + 1);\n }\n }\n\n elements.push(element);\n yPos -= lineHeight;\n }\n }\n\n return { width, height, elements };\n });\n\n const fields: TemplateField[] = [];\n for (const [name, info] of fieldsMap) {\n fields.push({\n name,\n defaultValue: info.defaultValue,\n pages: [...info.pages].sort((a, b) => a - b),\n });\n }\n\n return {\n version: '1.0',\n metadata: {\n name: options.name,\n description: options.description,\n createdAt: new Date().toISOString(),\n sourcePageCount: pageCount,\n },\n pages,\n fields,\n fonts,\n defaults: {\n font: defaultFont,\n color: { r: 0, g: 0, b: 0 },\n missingFieldBehavior: 'leave_placeholder',\n },\n };\n}\n\nexport async function templateToPdf(\n template: PDFTemplate,\n data: Record<string, string> = {},\n options: TemplateToPdfOptions = {}\n): Promise<Uint8Array> {\n validateTemplate(template);\n\n const pdfDoc = await PDFDocument.create();\n const font = await pdfDoc.embedFont(StandardFonts.Helvetica);\n const boldFont = await pdfDoc.embedFont(StandardFonts.HelveticaBold);\n\n const missingFieldBehavior =\n options.missingFieldBehavior ??\n template.defaults?.missingFieldBehavior ??\n 'leave_placeholder';\n\n const defaultColor = template.defaults?.color ?? { r: 0, g: 0, b: 0 };\n\n for (const templatePage of template.pages) {\n const page = pdfDoc.addPage([templatePage.width, templatePage.height]);\n\n for (const element of templatePage.elements) {\n const resolvedFont = resolveFont(element.font, template.defaults);\n const color = element.color ?? defaultColor;\n const pdfFont = resolvedFont.weight === 'bold' ? boldFont : font;\n const fontSize = resolvedFont.size;\n\n const content =\n element.type === 'placeholder'\n ? resolveContent(element.content, data, missingFieldBehavior, template.fields)\n : element.content;\n\n page.drawText(content, {\n x: element.x,\n y: element.y,\n size: fontSize,\n font: pdfFont,\n color: rgb(color.r, color.g, color.b),\n });\n }\n }\n\n return pdfDoc.save();\n}\n\nexport function validateTemplate(template: PDFTemplate): void {\n if (!template) {\n throw new Error('Template is required');\n }\n\n if (template.version !== '1.0') {\n throw new Error(`Unsupported template version: ${template.version}`);\n }\n\n if (!Array.isArray(template.pages) || template.pages.length === 0) {\n throw new Error('Template must have at least one page');\n }\n\n if (!template.metadata) {\n throw new Error('Template metadata is required');\n }\n\n if (typeof template.metadata.sourcePageCount !== 'number' || template.metadata.sourcePageCount < 1) {\n throw new Error('Template metadata.sourcePageCount must be a positive number');\n }\n\n if (!Array.isArray(template.fields)) {\n throw new Error('Template fields must be an array');\n }\n\n for (const page of template.pages) {\n if (typeof page.width !== 'number' || typeof page.height !== 'number') {\n throw new Error('Each page must have numeric width and height');\n }\n if (!Array.isArray(page.elements)) {\n throw new Error('Each page must have an elements array');\n }\n for (const element of page.elements) {\n if (element.type !== 'text' && element.type !== 'placeholder') {\n throw new Error(`Invalid element type: ${element.type}`);\n }\n if (typeof element.content !== 'string') {\n throw new Error('Element content must be a string');\n }\n if (typeof element.x !== 'number' || typeof element.y !== 'number') {\n throw new Error('Element x and y must be numbers');\n }\n }\n }\n}\n","export * from './types';\nexport * from './parse';\nexport * from './format';\nexport * from './validate';\nexport * from './query';\nexport * from './convert';\nexport * from './stats';\n","import { XMLParser } from 'fast-xml-parser';\nimport type { XmlParseOptions } from './types';\n\nexport function parse(\n input: string,\n options: XmlParseOptions = {}\n): Record<string, unknown> {\n const parser = new XMLParser({\n preserveOrder: options.preserveOrder ?? false,\n ignoreAttributes: options.ignoreAttributes ?? false,\n trimValues: options.trimValues ?? true,\n parseAttributeValue: true,\n parseTagValue: true,\n });\n\n return parser.parse(input) as Record<string, unknown>;\n}\n","import { XMLParser, XMLBuilder } from 'fast-xml-parser';\nimport type { XmlFormatOptions } from './types';\n\nexport function format(input: string, options: XmlFormatOptions = {}): string {\n const indent = options.indent ?? 2;\n\n const parser = new XMLParser({\n preserveOrder: true,\n ignoreAttributes: false,\n trimValues: true,\n parseAttributeValue: true,\n parseTagValue: true,\n });\n\n const parsed = parser.parse(input);\n\n const builder = new XMLBuilder({\n preserveOrder: true,\n ignoreAttributes: false,\n format: true,\n indentBy: ' '.repeat(indent),\n suppressEmptyNode: false,\n });\n\n return builder.build(parsed) as string;\n}\n\nexport function minify(input: string): string {\n const parser = new XMLParser({\n preserveOrder: true,\n ignoreAttributes: false,\n trimValues: true,\n parseAttributeValue: true,\n parseTagValue: true,\n });\n\n const parsed = parser.parse(input);\n\n const builder = new XMLBuilder({\n preserveOrder: true,\n ignoreAttributes: false,\n format: false,\n suppressEmptyNode: false,\n });\n\n return builder.build(parsed) as string;\n}\n","import { XMLValidator } from 'fast-xml-parser';\nimport type { XmlValidationResult } from './types';\n\nexport function validate(input: string): XmlValidationResult {\n const result = XMLValidator.validate(input, {\n allowBooleanAttributes: true,\n });\n\n if (result === true) {\n return { valid: true, errors: [] };\n }\n\n return {\n valid: false,\n errors: [\n {\n line: (result as { err: { line: number; msg: string } }).err.line,\n message: (result as { err: { line: number; msg: string } }).err.msg,\n },\n ],\n };\n}\n","import { XMLParser } from 'fast-xml-parser';\nimport type { XmlQueryResult } from './types';\n\nexport function query(input: string, path: string): XmlQueryResult {\n const parser = new XMLParser({\n ignoreAttributes: false,\n trimValues: true,\n parseAttributeValue: true,\n parseTagValue: true,\n });\n\n const parsed = parser.parse(input);\n const segments = path.replace(/^\\/+/, '').split('/');\n const matches = resolvePath(parsed, segments);\n\n return {\n matches,\n count: matches.length,\n };\n}\n\nfunction resolvePath(obj: unknown, segments: string[]): unknown[] {\n if (segments.length === 0) {\n return obj !== undefined ? [obj] : [];\n }\n\n if (obj === null || obj === undefined || typeof obj !== 'object') {\n return [];\n }\n\n const [current, ...rest] = segments;\n\n if (current === '*') {\n const results: unknown[] = [];\n for (const value of Object.values(obj as Record<string, unknown>)) {\n results.push(...resolvePath(value, rest));\n }\n return results;\n }\n\n const record = obj as Record<string, unknown>;\n if (current in record) {\n const value = record[current];\n if (Array.isArray(value)) {\n if (rest.length === 0) return value;\n const results: unknown[] = [];\n for (const item of value) {\n results.push(...resolvePath(item, rest));\n }\n return results;\n }\n return resolvePath(value, rest);\n }\n\n return [];\n}\n","import { XMLParser, XMLBuilder } from 'fast-xml-parser';\nimport type { XmlConvertFormat } from './types';\n\nexport function convert(\n input: string,\n from: XmlConvertFormat,\n to: XmlConvertFormat\n): string {\n if (from === to) return input;\n\n if (from === 'xml' && to === 'json') {\n const parser = new XMLParser({\n ignoreAttributes: false,\n trimValues: true,\n parseAttributeValue: true,\n parseTagValue: true,\n });\n return JSON.stringify(parser.parse(input), null, 2);\n }\n\n if (from === 'json' && to === 'xml') {\n const data = JSON.parse(input);\n const builder = new XMLBuilder({\n ignoreAttributes: false,\n format: true,\n indentBy: ' ',\n suppressEmptyNode: false,\n });\n return builder.build(data) as string;\n }\n\n throw new Error(`Unsupported conversion: ${from} -> ${to}`);\n}\n","import { XMLParser } from 'fast-xml-parser';\nimport type { XmlStats } from './types';\n\nexport function getStats(input: string): XmlStats {\n const parser = new XMLParser({\n ignoreAttributes: false,\n trimValues: true,\n parseAttributeValue: true,\n parseTagValue: true,\n });\n\n const parsed = parser.parse(input);\n const stats: XmlStats = {\n elements: 0,\n attributes: 0,\n textNodes: 0,\n depth: 0,\n sizeBytes: Buffer.byteLength(input, 'utf8'),\n };\n\n countNodes(parsed, 0, stats);\n return stats;\n}\n\nfunction countNodes(\n obj: unknown,\n depth: number,\n stats: XmlStats\n): void {\n if (obj === null || obj === undefined) return;\n\n if (typeof obj !== 'object') {\n stats.textNodes++;\n return;\n }\n\n if (Array.isArray(obj)) {\n for (const item of obj) {\n countNodes(item, depth, stats);\n }\n return;\n }\n\n for (const [key, value] of Object.entries(obj as Record<string, unknown>)) {\n if (key.startsWith('@_')) {\n stats.attributes++;\n } else if (key === '#text') {\n stats.textNodes++;\n } else {\n stats.elements++;\n stats.depth = Math.max(stats.depth, depth + 1);\n countNodes(value, depth + 1, stats);\n }\n }\n}\n","export * from './types';\nexport * from './parse';\nexport * from './convert';\nexport * from './stats';\n","import ExcelJS from 'exceljs';\nimport type { ExcelParseOptions, ExcelParseResult, SheetInfo } from './types';\n\nexport async function parse(\n file: Buffer | Uint8Array,\n options: ExcelParseOptions = {}\n): Promise<ExcelParseResult> {\n const workbook = new ExcelJS.Workbook();\n // @ts-expect-error - exceljs types incompatible with Node.js 22 Buffer\n await workbook.xlsx.load(Buffer.from(file));\n\n const sheets: SheetInfo[] = [];\n workbook.eachSheet((ws, id) => {\n sheets.push({\n name: ws.name,\n index: id,\n rowCount: ws.rowCount,\n columnCount: ws.columnCount,\n });\n });\n\n const targetSheet =\n typeof options.sheet === 'number'\n ? workbook.worksheets[options.sheet]\n : typeof options.sheet === 'string'\n ? workbook.getWorksheet(options.sheet)\n : workbook.worksheets[0];\n\n if (!targetSheet) {\n throw new Error('Sheet not found');\n }\n\n const useHeaders = options.header ?? true;\n const rows: Record<string, unknown>[] = [];\n let headers: string[] = [];\n\n targetSheet.eachRow((row, rowNumber) => {\n const values = row.values as unknown[];\n const cells = values.slice(1);\n\n if (rowNumber === 1 && useHeaders) {\n headers = cells.map((c, i) => String(c ?? `Column${i + 1}`));\n return;\n }\n\n const record: Record<string, unknown> = {};\n const keys = useHeaders && headers.length > 0 ? headers : cells.map((_, i) => `Column${i + 1}`);\n\n if (!useHeaders && rowNumber === 1) {\n headers = keys;\n }\n\n keys.forEach((key, i) => {\n const val = cells[i];\n record[key] = val instanceof Date ? val.toISOString() : (val ?? null);\n });\n rows.push(record);\n });\n\n return {\n sheets,\n data: rows,\n headers,\n rowCount: rows.length,\n };\n}\n\nexport async function getSheets(\n file: Buffer | Uint8Array\n): Promise<SheetInfo[]> {\n const workbook = new ExcelJS.Workbook();\n // @ts-expect-error - exceljs types incompatible with Node.js 22 Buffer\n await workbook.xlsx.load(Buffer.from(file));\n\n const sheets: SheetInfo[] = [];\n workbook.eachSheet((ws, id) => {\n sheets.push({\n name: ws.name,\n index: id,\n rowCount: ws.rowCount,\n columnCount: ws.columnCount,\n });\n });\n\n return sheets;\n}\n","import ExcelJS from 'exceljs';\nimport type { ExcelConvertOptions, ExcelConvertFormat } from './types';\n\nexport async function convert(\n file: Buffer | Uint8Array,\n format: ExcelConvertFormat,\n options: ExcelConvertOptions = {}\n): Promise<string> {\n const workbook = new ExcelJS.Workbook();\n // @ts-expect-error - exceljs types incompatible with Node.js 22 Buffer\n await workbook.xlsx.load(Buffer.from(file));\n\n const targetSheet =\n typeof options.sheet === 'number'\n ? workbook.worksheets[options.sheet]\n : typeof options.sheet === 'string'\n ? workbook.getWorksheet(options.sheet)\n : workbook.worksheets[0];\n\n if (!targetSheet) {\n throw new Error('Sheet not found');\n }\n\n const useHeaders = options.header ?? true;\n const allRows: unknown[][] = [];\n\n targetSheet.eachRow((row) => {\n const values = row.values as unknown[];\n allRows.push(values.slice(1).map((v) => (v instanceof Date ? v.toISOString() : v)));\n });\n\n if (allRows.length === 0) return '';\n\n const headers = useHeaders\n ? allRows[0].map((c, i) => String(c ?? `Column${i + 1}`))\n : allRows[0].map((_, i) => `Column${i + 1}`);\n const dataRows = useHeaders ? allRows.slice(1) : allRows;\n\n switch (format) {\n case 'json': {\n const records = dataRows.map((row) => {\n const record: Record<string, unknown> = {};\n headers.forEach((h, i) => {\n record[h] = row[i] ?? null;\n });\n return record;\n });\n return JSON.stringify(records, null, 2);\n }\n case 'csv':\n return toDSV(headers, dataRows, ',');\n case 'tsv':\n return toDSV(headers, dataRows, '\\t');\n default:\n throw new Error(`Unsupported format: ${format}`);\n }\n}\n\nfunction toDSV(headers: string[], rows: unknown[][], delimiter: string): string {\n const escape = (val: unknown): string => {\n const str = String(val ?? '');\n if (str.includes(delimiter) || str.includes('\"') || str.includes('\\n')) {\n return `\"${str.replace(/\"/g, '\"\"')}\"`;\n }\n return str;\n };\n\n const lines = [headers.map(escape).join(delimiter)];\n for (const row of rows) {\n lines.push(headers.map((_, i) => escape(row[i])).join(delimiter));\n }\n return lines.join('\\n');\n}\n\nexport async function createExcel(\n data: Record<string, unknown>[],\n sheetName = 'Sheet1'\n): Promise<Uint8Array> {\n const workbook = new ExcelJS.Workbook();\n const sheet = workbook.addWorksheet(sheetName);\n\n if (data.length === 0) {\n const buffer = await workbook.xlsx.writeBuffer();\n return new Uint8Array(buffer);\n }\n\n const headers = Object.keys(data[0]);\n sheet.addRow(headers);\n\n for (const record of data) {\n sheet.addRow(headers.map((h) => record[h]));\n }\n\n const buffer = await workbook.xlsx.writeBuffer();\n return new Uint8Array(buffer);\n}\n","import ExcelJS from 'exceljs';\nimport type { ExcelStats, SheetInfo } from './types';\n\nexport async function getStats(file: Buffer | Uint8Array): Promise<ExcelStats> {\n const workbook = new ExcelJS.Workbook();\n // @ts-expect-error - exceljs types incompatible with Node.js 22 Buffer\n await workbook.xlsx.load(Buffer.from(file));\n\n const sheetDetails: SheetInfo[] = [];\n let totalRows = 0;\n let totalColumns = 0;\n\n workbook.eachSheet((ws, id) => {\n sheetDetails.push({\n name: ws.name,\n index: id,\n rowCount: ws.rowCount,\n columnCount: ws.columnCount,\n });\n totalRows += ws.rowCount;\n totalColumns = Math.max(totalColumns, ws.columnCount);\n });\n\n return {\n sheets: sheetDetails.length,\n totalRows,\n totalColumns,\n sheetDetails,\n sizeBytes: file.length,\n };\n}\n","export * from './types';\nexport * from './resize';\nexport * from './transform';\nexport * from './convert';\nexport * from './metadata';\n","import sharp from 'sharp';\nimport type { ResizeOptions } from './types';\n\nexport async function resize(\n file: Buffer | Uint8Array,\n options: ResizeOptions\n): Promise<Uint8Array> {\n const result = await sharp(Buffer.from(file))\n .resize({\n width: options.width,\n height: options.height,\n fit: options.fit ?? 'inside',\n background: options.background ?? '#ffffff',\n })\n .toBuffer();\n\n return new Uint8Array(result);\n}\n","import sharp from 'sharp';\nimport type { CropOptions, RotateOptions } from './types';\n\nexport async function crop(\n file: Buffer | Uint8Array,\n options: CropOptions\n): Promise<Uint8Array> {\n const result = await sharp(Buffer.from(file))\n .extract({\n left: options.left,\n top: options.top,\n width: options.width,\n height: options.height,\n })\n .toBuffer();\n\n return new Uint8Array(result);\n}\n\nexport async function rotate(\n file: Buffer | Uint8Array,\n options: RotateOptions\n): Promise<Uint8Array> {\n const result = await sharp(Buffer.from(file))\n .rotate(options.degrees, {\n background: options.background ?? '#ffffff',\n })\n .toBuffer();\n\n return new Uint8Array(result);\n}\n\nexport async function flip(file: Buffer | Uint8Array): Promise<Uint8Array> {\n const result = await sharp(Buffer.from(file)).flip().toBuffer();\n return new Uint8Array(result);\n}\n\nexport async function flop(file: Buffer | Uint8Array): Promise<Uint8Array> {\n const result = await sharp(Buffer.from(file)).flop().toBuffer();\n return new Uint8Array(result);\n}\n\nexport async function grayscale(file: Buffer | Uint8Array): Promise<Uint8Array> {\n const result = await sharp(Buffer.from(file)).grayscale().toBuffer();\n return new Uint8Array(result);\n}\n\nexport async function blur(\n file: Buffer | Uint8Array,\n sigma: number = 3\n): Promise<Uint8Array> {\n const result = await sharp(Buffer.from(file)).blur(sigma).toBuffer();\n return new Uint8Array(result);\n}\n","import sharp from 'sharp';\nimport type { ConvertOptions, CompressOptions } from './types';\n\nexport async function convert(\n file: Buffer | Uint8Array,\n options: ConvertOptions\n): Promise<Uint8Array> {\n let pipeline = sharp(Buffer.from(file));\n\n switch (options.format) {\n case 'png':\n pipeline = pipeline.png();\n break;\n case 'jpeg':\n pipeline = pipeline.jpeg({ quality: options.quality ?? 80 });\n break;\n case 'webp':\n pipeline = pipeline.webp({ quality: options.quality ?? 80 });\n break;\n case 'gif':\n pipeline = pipeline.gif();\n break;\n case 'tiff':\n pipeline = pipeline.tiff({ quality: options.quality ?? 80 });\n break;\n case 'avif':\n pipeline = pipeline.avif({ quality: options.quality ?? 50 });\n break;\n default:\n throw new Error(`Unsupported format: ${options.format}`);\n }\n\n const result = await pipeline.toBuffer();\n return new Uint8Array(result);\n}\n\nexport async function compress(\n file: Buffer | Uint8Array,\n options: CompressOptions = {}\n): Promise<Uint8Array> {\n const quality = options.quality ?? 70;\n const format = options.format ?? 'jpeg';\n\n return convert(file, { format, quality });\n}\n","import sharp from 'sharp';\nimport type { ImageMetadata, ImageStats } from './types';\n\nexport async function getMetadata(\n file: Buffer | Uint8Array\n): Promise<ImageMetadata> {\n const meta = await sharp(Buffer.from(file)).metadata();\n\n return {\n width: meta.width ?? 0,\n height: meta.height ?? 0,\n format: meta.format ?? 'unknown',\n channels: meta.channels ?? 0,\n space: meta.space ?? 'unknown',\n depth: meta.depth ?? 'unknown',\n density: meta.density,\n hasAlpha: meta.hasAlpha ?? false,\n sizeBytes: file.length,\n };\n}\n\nexport async function getStats(\n file: Buffer | Uint8Array\n): Promise<ImageStats> {\n const meta = await sharp(Buffer.from(file)).metadata();\n\n const width = meta.width ?? 0;\n const height = meta.height ?? 0;\n\n return {\n width,\n height,\n format: meta.format ?? 'unknown',\n channels: meta.channels ?? 0,\n hasAlpha: meta.hasAlpha ?? false,\n sizeBytes: file.length,\n megapixels: Math.round((width * height) / 10000) / 100,\n };\n}\n","export * from './types';\nexport * from './convert';\nexport * from './toc';\nexport * from './extract';\nexport * from './stats';\n","import { marked } from 'marked';\nimport TurndownService from 'turndown';\nimport type { MarkdownConvertOptions } from './types';\n\nexport function convert(\n input: string,\n options: MarkdownConvertOptions\n): string {\n const { from, to } = options;\n\n if (from === to) return input;\n\n if (from === 'markdown' && to === 'html') {\n return markdownToHtml(input, options.gfm);\n }\n\n if (from === 'html' && to === 'markdown') {\n return htmlToMarkdown(input);\n }\n\n if (from === 'markdown' && to === 'text') {\n return markdownToText(input);\n }\n\n if (from === 'html' && to === 'text') {\n return htmlToText(input);\n }\n\n if (from === 'text' && to === 'markdown') {\n return input;\n }\n\n if (from === 'text' && to === 'html') {\n return `<p>${input.split('\\n\\n').join('</p><p>')}</p>`;\n }\n\n throw new Error(`Unsupported conversion: ${from} -> ${to}`);\n}\n\nfunction markdownToHtml(input: string, gfm = true): string {\n marked.setOptions({ gfm });\n return marked.parse(input) as string;\n}\n\nfunction htmlToMarkdown(input: string): string {\n const turndown = new TurndownService({\n headingStyle: 'atx',\n codeBlockStyle: 'fenced',\n bulletListMarker: '-',\n });\n return turndown.turndown(input);\n}\n\nfunction markdownToText(input: string): string {\n const html = markdownToHtml(input);\n return htmlToText(html);\n}\n\nfunction htmlToText(input: string): string {\n return input\n .replace(/<script[^>]*>[\\s\\S]*?<\\/script>/gi, '')\n .replace(/<style[^>]*>[\\s\\S]*?<\\/style>/gi, '')\n .replace(/<[^>]+>/g, '')\n .replace(/ /g, ' ')\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/"/g, '\"')\n .replace(/'/g, \"'\")\n .replace(/\\n{3,}/g, '\\n\\n')\n .trim();\n}\n","import type { MarkdownTocEntry } from './types';\n\nexport function generateToc(input: string): MarkdownTocEntry[] {\n const headingRegex = /^(#{1,6})\\s+(.+)$/gm;\n const entries: MarkdownTocEntry[] = [];\n let match;\n\n while ((match = headingRegex.exec(input)) !== null) {\n const level = match[1].length;\n const text = match[2].trim();\n const slug = text\n .toLowerCase()\n .replace(/[^\\w\\s-]/g, '')\n .replace(/\\s+/g, '-')\n .replace(/-+/g, '-');\n\n entries.push({ level, text, slug });\n }\n\n return entries;\n}\n\nexport function renderToc(entries: MarkdownTocEntry[]): string {\n if (entries.length === 0) return '';\n\n const minLevel = Math.min(...entries.map((e) => e.level));\n\n return entries\n .map((entry) => {\n const indent = ' '.repeat(entry.level - minLevel);\n return `${indent}- [${entry.text}](#${entry.slug})`;\n })\n .join('\\n');\n}\n","import type { MarkdownLinkInfo, MarkdownFrontmatter } from './types';\n\nexport function extractLinks(input: string): MarkdownLinkInfo[] {\n const links: MarkdownLinkInfo[] = [];\n const lines = input.split('\\n');\n const linkRegex = /\\[([^\\]]*)\\]\\(([^)]+)\\)/g;\n\n for (let i = 0; i < lines.length; i++) {\n let match;\n while ((match = linkRegex.exec(lines[i])) !== null) {\n links.push({\n text: match[1],\n href: match[2],\n line: i + 1,\n });\n }\n }\n\n return links;\n}\n\nexport function extractFrontmatter(input: string): MarkdownFrontmatter | null {\n const match = input.match(/^---\\s*\\n([\\s\\S]*?)\\n---\\s*\\n/);\n if (!match) return null;\n\n const frontmatter: MarkdownFrontmatter = {};\n const lines = match[1].split('\\n');\n\n for (const line of lines) {\n const colonIndex = line.indexOf(':');\n if (colonIndex === -1) continue;\n\n const key = line.substring(0, colonIndex).trim();\n let value: unknown = line.substring(colonIndex + 1).trim();\n\n if (value === 'true') value = true;\n else if (value === 'false') value = false;\n else if (!isNaN(Number(value)) && value !== '') value = Number(value);\n else if (typeof value === 'string' && value.startsWith('[') && value.endsWith(']')) {\n value = value\n .slice(1, -1)\n .split(',')\n .map((s: string) => s.trim().replace(/^['\"]|['\"]$/g, ''));\n }\n\n frontmatter[key] = value;\n }\n\n return frontmatter;\n}\n\nexport function stripFrontmatter(input: string): string {\n return input.replace(/^---\\s*\\n[\\s\\S]*?\\n---\\s*\\n/, '');\n}\n","import type { MarkdownStats } from './types';\n\nexport function getStats(input: string): MarkdownStats {\n const lines = input.split('\\n');\n const text = input.replace(/```[\\s\\S]*?```/g, '').replace(/`[^`]+`/g, '');\n\n const headings = (text.match(/^#{1,6}\\s+.+$/gm) || []).length;\n const links = (input.match(/\\[([^\\]]*)\\]\\(([^)]+)\\)/g) || []).length;\n const images = (input.match(/!\\[([^\\]]*)\\]\\(([^)]+)\\)/g) || []).length;\n const codeBlocks = (input.match(/```/g) || []).length / 2;\n const lists = (text.match(/^[\\s]*[-*+]\\s+|^[\\s]*\\d+\\.\\s+/gm) || []).length;\n\n const plainText = text\n .replace(/#{1,6}\\s+/g, '')\n .replace(/\\[([^\\]]*)\\]\\([^)]+\\)/g, '$1')\n .replace(/[*_~`]/g, '')\n .trim();\n\n const words = plainText.split(/\\s+/).filter((w) => w.length > 0).length;\n const paragraphs = input.split(/\\n\\s*\\n/).filter((p) => p.trim().length > 0).length;\n\n return {\n words,\n characters: input.length,\n lines: lines.length,\n paragraphs,\n headings,\n links,\n images,\n codeBlocks: Math.floor(codeBlocks),\n lists,\n sizeBytes: Buffer.byteLength(input, 'utf8'),\n };\n}\n","export * from './types';\nexport * from './create';\nexport * from './extract';\nexport * from './list';\n","import archiver from 'archiver';\nimport { PassThrough } from 'stream';\nimport type { ArchiveCreateOptions, ArchiveFile } from './types';\n\nexport async function create(\n files: ArchiveFile[],\n options: ArchiveCreateOptions = {}\n): Promise<Uint8Array> {\n const format = options.format ?? 'zip';\n const level = options.compressionLevel ?? 6;\n\n return new Promise((resolve, reject) => {\n const chunks: Buffer[] = [];\n const output = new PassThrough();\n\n output.on('data', (chunk: Buffer) => chunks.push(chunk));\n output.on('end', () => resolve(new Uint8Array(Buffer.concat(chunks))));\n output.on('error', reject);\n\n const archiverFormat = format === 'tar.gz' ? 'tar' : format;\n const archiverOptions =\n format === 'tar.gz'\n ? { gzip: true, gzipOptions: { level } }\n : format === 'zip'\n ? { zlib: { level } }\n : {};\n\n const archive = archiver(archiverFormat as 'zip' | 'tar', archiverOptions);\n archive.on('error', reject);\n archive.pipe(output);\n\n for (const file of files) {\n archive.append(file.content, { name: file.path });\n }\n\n archive.finalize();\n });\n}\n","import AdmZip from 'adm-zip';\nimport type { ArchiveFile, ArchiveExtractOptions } from './types';\n\nexport async function extract(\n file: Buffer | Uint8Array,\n options: ArchiveExtractOptions = {}\n): Promise<ArchiveFile[]> {\n const zip = new AdmZip(Buffer.from(file));\n const entries = zip.getEntries();\n const results: ArchiveFile[] = [];\n\n for (const entry of entries) {\n if (entry.isDirectory) continue;\n\n if (options.files && !options.files.includes(entry.entryName)) {\n continue;\n }\n\n results.push({\n path: entry.entryName,\n content: entry.getData(),\n });\n }\n\n return results;\n}\n","import AdmZip from 'adm-zip';\nimport type { ArchiveEntry, ArchiveStats } from './types';\n\nexport async function list(\n file: Buffer | Uint8Array\n): Promise<ArchiveEntry[]> {\n const zip = new AdmZip(Buffer.from(file));\n const entries = zip.getEntries();\n\n return entries.map((entry) => ({\n path: entry.entryName,\n size: entry.header.size,\n compressedSize: entry.header.compressedSize,\n isDirectory: entry.isDirectory,\n modified: entry.header.time ? new Date(entry.header.time).toISOString() : undefined,\n }));\n}\n\nexport async function getStats(\n file: Buffer | Uint8Array\n): Promise<ArchiveStats> {\n const entries = await list(file);\n\n let totalSize = 0;\n let compressedSize = 0;\n let fileCount = 0;\n let directoryCount = 0;\n\n for (const entry of entries) {\n if (entry.isDirectory) {\n directoryCount++;\n } else {\n fileCount++;\n totalSize += entry.size;\n compressedSize += entry.compressedSize ?? entry.size;\n }\n }\n\n return {\n format: 'zip',\n fileCount,\n directoryCount,\n totalSize,\n compressedSize,\n entries,\n };\n}\n","export * from './types';\nexport * from './test';\nexport * from './replace';\nexport * from './extract';\nexport * from './validate';\n","import type { RegexOptions } from './types';\n\nexport function buildFlags(options: RegexOptions): string {\n let flags = options.flags ?? '';\n\n if (options.global && !flags.includes('g')) flags += 'g';\n if (options.caseInsensitive && !flags.includes('i')) flags += 'i';\n if (options.multiline && !flags.includes('m')) flags += 'm';\n\n return flags;\n}\n","import type { RegexTestResult, RegexMatch, RegexOptions } from './types';\nimport { buildFlags } from './utils';\n\nexport function test(\n input: string,\n pattern: string,\n options: RegexOptions = {}\n): RegexTestResult {\n const flags = buildFlags(options);\n const regex = new RegExp(pattern, flags.includes('g') ? flags : flags + 'g');\n const results: RegexMatch[] = [];\n let match;\n\n while ((match = regex.exec(input)) !== null) {\n results.push({\n match: match[0],\n index: match.index,\n groups: match.groups ? { ...match.groups } : {},\n });\n\n if (!flags.includes('g')) break;\n }\n\n return {\n matches: results.length > 0,\n matchCount: results.length,\n results,\n };\n}\n","import type { RegexReplaceResult, RegexOptions } from './types';\nimport { buildFlags } from './utils';\n\nexport function replace(\n input: string,\n pattern: string,\n replacement: string,\n options: RegexOptions = {}\n): RegexReplaceResult {\n const flags = buildFlags({ ...options, global: options.global ?? true });\n const regex = new RegExp(pattern, flags);\n\n let replacements = 0;\n const output = input.replace(regex, (...args) => {\n replacements++;\n const groups = args[args.length - 1];\n let result = replacement;\n\n if (typeof groups === 'object' && groups !== null) {\n for (const [key, value] of Object.entries(groups)) {\n result = result.replace(new RegExp(`\\\\$<${key}>`, 'g'), String(value ?? ''));\n }\n }\n\n for (let i = 1; i < args.length - 2; i++) {\n result = result.replace(new RegExp(`\\\\$${i}`, 'g'), args[i] ?? '');\n }\n\n return result;\n });\n\n return { output, replacements };\n}\n","import type { RegexExtractResult, RegexOptions } from './types';\nimport { buildFlags } from './utils';\n\nexport function extract(\n input: string,\n pattern: string,\n options: RegexOptions = {}\n): RegexExtractResult {\n const flags = buildFlags({ ...options, global: true });\n const regex = new RegExp(pattern, flags);\n const matches: string[] = [];\n const groups: Record<string, string>[] = [];\n let match;\n\n while ((match = regex.exec(input)) !== null) {\n matches.push(match[0]);\n if (match.groups) {\n groups.push({ ...match.groups });\n }\n }\n\n return {\n matches,\n groups,\n count: matches.length,\n };\n}\n","import type { RegexValidationResult } from './types';\n\nexport function validate(pattern: string, flags?: string): RegexValidationResult {\n try {\n new RegExp(pattern, flags);\n return { valid: true };\n } catch (e) {\n return {\n valid: false,\n error: (e as Error).message,\n };\n }\n}\n","export * from './types';\nexport * from './compare';\nexport * from './unified';\nexport * from './patch';\n","import {\n diffLines,\n diffWords,\n diffChars,\n type Change,\n} from 'diff';\nimport type { DiffOptions, DiffResult, DiffChange } from './types';\n\nexport function compare(\n a: string,\n b: string,\n options: DiffOptions = {}\n): DiffResult {\n const type = options.type ?? 'line';\n\n let rawChanges: Change[];\n\n switch (type) {\n case 'word':\n rawChanges = diffWords(a, b, {\n ignoreWhitespace: options.ignoreWhitespace,\n });\n break;\n case 'char':\n rawChanges = diffChars(a, b);\n break;\n case 'line':\n default:\n rawChanges = diffLines(a, b, {\n ignoreWhitespace: options.ignoreWhitespace,\n });\n break;\n }\n\n const changes: DiffChange[] = rawChanges.map((c) => ({\n type: c.added ? 'added' : c.removed ? 'removed' : 'unchanged',\n value: c.value,\n count: c.count ?? 0,\n }));\n\n let additions = 0;\n let deletions = 0;\n let unchanged = 0;\n\n for (const change of changes) {\n switch (change.type) {\n case 'added':\n additions += change.count;\n break;\n case 'removed':\n deletions += change.count;\n break;\n case 'unchanged':\n unchanged += change.count;\n break;\n }\n }\n\n return {\n identical: additions === 0 && deletions === 0,\n changes,\n stats: { additions, deletions, unchanged },\n };\n}\n","import { createTwoFilesPatch, createPatch } from 'diff';\nimport type { UnifiedDiffOptions } from './types';\n\nexport function unifiedDiff(\n a: string,\n b: string,\n options: UnifiedDiffOptions = {}\n): string {\n const fromFile = options.fromFile ?? 'a';\n const toFile = options.toFile ?? 'b';\n const context = options.context ?? 3;\n\n return createTwoFilesPatch(fromFile, toFile, a, b, undefined, undefined, {\n context,\n });\n}\n\nexport function createUnifiedPatch(\n fileName: string,\n original: string,\n modified: string,\n context: number = 3\n): string {\n return createPatch(fileName, original, modified, undefined, undefined, {\n context,\n });\n}\n","import { applyPatch, parsePatch } from 'diff';\nimport type { PatchOptions } from './types';\n\nexport function apply(\n input: string,\n patch: string,\n options: PatchOptions = {}\n): string {\n const result = applyPatch(input, patch, {\n fuzzFactor: options.fuzz ?? 0,\n });\n\n if (result === false) {\n throw new Error('Failed to apply patch: patch does not match the input');\n }\n\n return result;\n}\n\nexport function parsePatchFile(patch: string) {\n return parsePatch(patch);\n}\n","export * from './types';\nexport * from './format';\nexport * from './parse';\nexport * from './convert';\n","import { format as sqlFormat } from 'sql-formatter';\nimport type { SqlFormatOptions } from './types';\n\nconst dialectMap: Record<string, string> = {\n mysql: 'mysql',\n postgresql: 'postgresql',\n sqlite: 'sqlite',\n transactsql: 'transactsql',\n bigquery: 'bigquery',\n};\n\nexport function format(input: string, options: SqlFormatOptions = {}): string {\n const language = dialectMap[options.dialect ?? 'postgresql'] ?? 'postgresql';\n\n return sqlFormat(input, {\n language: language as 'mysql' | 'postgresql' | 'sqlite' | 'transactsql' | 'bigquery',\n tabWidth: options.indent ?? 2,\n useTabs: false,\n keywordCase: options.uppercase !== false ? 'upper' : 'preserve',\n linesBetweenQueries: options.linesBetweenQueries ?? 2,\n });\n}\n\nexport function minify(input: string): string {\n return input\n .replace(/--.*$/gm, '')\n .replace(/\\/\\*[\\s\\S]*?\\*\\//g, '')\n .replace(/\\s+/g, ' ')\n .replace(/\\s*([,;()=<>+\\-*/])\\s*/g, '$1')\n .trim();\n}\n","import { Parser } from 'node-sql-parser';\nimport type { SqlDialect, SqlParseResult, SqlValidationResult, SqlStats } from './types';\n\nconst parserDialectMap: Record<SqlDialect, string> = {\n mysql: 'MySQL',\n postgresql: 'PostgresQL',\n sqlite: 'SQLite',\n transactsql: 'TransactSQL',\n bigquery: 'BigQuery',\n};\n\nexport function parse(\n input: string,\n dialect: SqlDialect = 'postgresql'\n): SqlParseResult {\n const parser = new Parser();\n const dbType = parserDialectMap[dialect] ?? 'PostgresQL';\n const ast = parser.astify(input, { database: dbType });\n\n const stmts = Array.isArray(ast) ? ast : [ast];\n const tables = new Set<string>();\n const columns = new Set<string>();\n\n for (const stmt of stmts) {\n extractTablesAndColumns(stmt, tables, columns);\n }\n\n return {\n type: stmts[0]?.type ?? 'unknown',\n tables: Array.from(tables),\n columns: Array.from(columns),\n ast,\n };\n}\n\nexport function validate(\n input: string,\n dialect: SqlDialect = 'postgresql'\n): SqlValidationResult {\n const parser = new Parser();\n const dbType = parserDialectMap[dialect] ?? 'PostgresQL';\n\n try {\n const ast = parser.astify(input, { database: dbType });\n return { valid: true, ast };\n } catch (e) {\n return {\n valid: false,\n error: (e as Error).message,\n };\n }\n}\n\nexport function getStats(\n input: string,\n dialect: SqlDialect = 'postgresql'\n): SqlStats {\n const parser = new Parser();\n const dbType = parserDialectMap[dialect] ?? 'PostgresQL';\n\n const ast = parser.astify(input, { database: dbType });\n const stmts = Array.isArray(ast) ? ast : [ast];\n\n const queryTypes: Record<string, number> = {};\n const tables = new Set<string>();\n let joins = 0;\n\n for (const stmt of stmts) {\n const type = (stmt.type ?? 'unknown').toLowerCase();\n queryTypes[type] = (queryTypes[type] || 0) + 1;\n extractTablesAndColumns(stmt, tables, new Set());\n\n const stmtStr = JSON.stringify(stmt);\n const joinMatches = stmtStr.match(/\"join\"/gi);\n if (joinMatches) joins += joinMatches.length;\n }\n\n const subqueryRegex = /\\bSELECT\\b/gi;\n const selectMatches = input.match(subqueryRegex);\n const subqueries = Math.max(0, (selectMatches?.length ?? 0) - stmts.filter((s) => s.type === 'select').length);\n\n return {\n queryCount: stmts.length,\n queryTypes,\n tables: Array.from(tables),\n joins,\n subqueries,\n };\n}\n\nfunction extractTablesAndColumns(\n node: unknown,\n tables: Set<string>,\n columns: Set<string>\n): void {\n if (!node || typeof node !== 'object') return;\n\n const obj = node as Record<string, unknown>;\n\n if (obj.table && typeof obj.table === 'string') {\n tables.add(obj.table);\n }\n\n if (obj.from && Array.isArray(obj.from)) {\n for (const item of obj.from) {\n if (item && typeof item === 'object' && 'table' in item) {\n tables.add(String(item.table));\n }\n }\n }\n\n if (obj.columns && Array.isArray(obj.columns)) {\n for (const col of obj.columns) {\n if (col && typeof col === 'object' && 'expr' in col) {\n const expr = col.expr as Record<string, unknown>;\n if (expr.type === 'column_ref' && typeof expr.column === 'string') {\n columns.add(expr.column);\n }\n }\n }\n }\n\n for (const value of Object.values(obj)) {\n if (Array.isArray(value)) {\n for (const item of value) {\n extractTablesAndColumns(item, tables, columns);\n }\n } else if (typeof value === 'object' && value !== null) {\n extractTablesAndColumns(value, tables, columns);\n }\n }\n}\n","import { Parser } from 'node-sql-parser';\nimport type { SqlConvertOptions, SqlDialect } from './types';\n\nconst parserDialectMap: Record<SqlDialect, string> = {\n mysql: 'MySQL',\n postgresql: 'PostgresQL',\n sqlite: 'SQLite',\n transactsql: 'TransactSQL',\n bigquery: 'BigQuery',\n};\n\nexport function convert(\n input: string,\n options: SqlConvertOptions\n): string {\n const fromDialect = parserDialectMap[options.from ?? 'postgresql'] ?? 'PostgresQL';\n const toDialect = parserDialectMap[options.to] ?? 'PostgresQL';\n\n const parser = new Parser();\n const ast = parser.astify(input, { database: fromDialect });\n return parser.sqlify(ast, { database: toDialect });\n}\n","export * from './types';\nexport * from './hash';\nexport * from './encode';\nexport * from './jwt';\n","import { createHash, createHmac, randomUUID } from 'crypto';\nimport type { HashAlgorithm, HashResult, HmacOptions, HmacResult, ChecksumResult, UuidResult } from './types';\n\nexport function hash(\n input: string,\n algorithm: HashAlgorithm = 'sha256'\n): HashResult {\n const h = createHash(algorithm).update(input).digest('hex');\n return {\n algorithm,\n hash: h,\n inputLength: input.length,\n };\n}\n\nexport function hmac(\n input: string,\n key: string,\n options: HmacOptions = {}\n): HmacResult {\n const algorithm = options.algorithm ?? 'sha256';\n const h = createHmac(algorithm, key).update(input).digest('hex');\n return {\n algorithm,\n hmac: h,\n };\n}\n\nexport function checksum(\n data: Buffer | Uint8Array | string,\n algorithm: HashAlgorithm = 'sha256'\n): ChecksumResult {\n const buffer = typeof data === 'string' ? Buffer.from(data) : Buffer.from(data);\n const h = createHash(algorithm).update(buffer).digest('hex');\n return {\n algorithm,\n checksum: h,\n sizeBytes: buffer.length,\n };\n}\n\nexport function generateUuid(): UuidResult {\n // Use Web Crypto API in browser, Node.js crypto otherwise\n let uuid: string;\n if (typeof globalThis.crypto?.randomUUID === 'function') {\n uuid = globalThis.crypto.randomUUID();\n } else {\n uuid = randomUUID();\n }\n return {\n uuid,\n version: 4,\n };\n}\n","import type { EncodingFormat } from './types';\n\nexport function encode(input: string, format: EncodingFormat): string {\n switch (format) {\n case 'base64':\n return Buffer.from(input).toString('base64');\n case 'hex':\n return Buffer.from(input).toString('hex');\n case 'url':\n return encodeURIComponent(input);\n case 'html':\n return input\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n default:\n throw new Error(`Unsupported encoding format: ${format}`);\n }\n}\n\nexport function decode(input: string, format: EncodingFormat): string {\n switch (format) {\n case 'base64':\n return Buffer.from(input, 'base64').toString('utf8');\n case 'hex':\n return Buffer.from(input, 'hex').toString('utf8');\n case 'url':\n return decodeURIComponent(input);\n case 'html':\n return input\n .replace(/'/g, \"'\")\n .replace(/"/g, '\"')\n .replace(/>/g, '>')\n .replace(/</g, '<')\n .replace(/&/g, '&');\n default:\n throw new Error(`Unsupported encoding format: ${format}`);\n }\n}\n","import type { JwtPayload } from './types';\n\nfunction base64UrlDecode(str: string): string {\n // Replace base64url characters with standard base64\n let base64 = str.replace(/-/g, '+').replace(/_/g, '/');\n // Add padding if needed\n const padding = base64.length % 4;\n if (padding) {\n base64 += '='.repeat(4 - padding);\n }\n // Use atob for browser, Buffer for Node.js\n if (typeof atob === 'function') {\n return decodeURIComponent(\n atob(base64)\n .split('')\n .map((c) => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2))\n .join('')\n );\n }\n return Buffer.from(base64, 'base64').toString('utf8');\n}\n\nexport function decodeJwt(token: string): JwtPayload {\n const parts = token.split('.');\n if (parts.length !== 3) {\n throw new Error('Invalid JWT: must have 3 parts separated by dots');\n }\n\n const header = JSON.parse(base64UrlDecode(parts[0])) as Record<string, unknown>;\n\n const payload = JSON.parse(base64UrlDecode(parts[1])) as Record<string, unknown>;\n\n const result: JwtPayload = {\n header,\n payload,\n signature: parts[2],\n };\n\n if (typeof payload.exp === 'number') {\n const expDate = new Date(payload.exp * 1000);\n result.expired = expDate < new Date();\n result.expiresAt = expDate.toISOString();\n }\n\n return result;\n}\n","export * from './types';\nexport * from './parse';\nexport * from './math';\nexport * from './timezone';\nexport * from './cron';\n","import { DateTime } from 'luxon';\nimport type { DateTimeInfo, DateTimeFormatOptions } from './types';\n\nexport function parseDate(\n input: string,\n timezone?: string\n): DateTimeInfo {\n let dt: DateTime;\n\n const unixNum = Number(input);\n if (!isNaN(unixNum) && String(unixNum) === input.trim()) {\n dt = unixNum > 1e12\n ? DateTime.fromMillis(unixNum, { zone: timezone ?? 'utc' })\n : DateTime.fromSeconds(unixNum, { zone: timezone ?? 'utc' });\n } else {\n dt = DateTime.fromISO(input, { zone: timezone ?? 'utc' });\n if (!dt.isValid) {\n dt = DateTime.fromRFC2822(input, { zone: timezone ?? 'utc' });\n }\n if (!dt.isValid) {\n dt = DateTime.fromSQL(input, { zone: timezone ?? 'utc' });\n }\n }\n\n if (!dt.isValid) {\n throw new Error(`Unable to parse date: ${input} (${dt.invalidReason})`);\n }\n\n return {\n iso: dt.toISO()!,\n unix: Math.floor(dt.toSeconds()),\n unixMs: dt.toMillis(),\n year: dt.year,\n month: dt.month,\n day: dt.day,\n hour: dt.hour,\n minute: dt.minute,\n second: dt.second,\n dayOfWeek: dt.weekdayLong!,\n dayOfYear: dt.ordinal,\n weekNumber: dt.weekNumber,\n isLeapYear: dt.isInLeapYear,\n timezone: dt.zoneName!,\n offset: dt.toFormat('ZZ'),\n };\n}\n\nexport function formatDate(\n input: string,\n options: DateTimeFormatOptions = {}\n): string {\n const tz = options.timezone ?? 'utc';\n let dt = DateTime.fromISO(input, { zone: tz });\n if (!dt.isValid) {\n dt = DateTime.fromMillis(Number(input), { zone: tz });\n }\n\n if (!dt.isValid) {\n throw new Error(`Unable to parse date: ${input}`);\n }\n\n if (options.format) {\n return dt.toFormat(options.format);\n }\n\n return dt.toISO()!;\n}\n\nexport function now(timezone?: string): DateTimeInfo {\n const dt = DateTime.now().setZone(timezone ?? 'utc');\n return parseDate(dt.toISO()!, timezone);\n}\n","import { DateTime } from 'luxon';\nimport type { DateTimeAddOptions, DateTimeDiffResult } from './types';\n\nexport function add(\n input: string,\n amount: DateTimeAddOptions,\n timezone?: string\n): string {\n const dt = DateTime.fromISO(input, { zone: timezone ?? 'utc' });\n if (!dt.isValid) {\n throw new Error(`Unable to parse date: ${input}`);\n }\n\n const result = dt.plus(amount);\n return result.toISO()!;\n}\n\nexport function subtract(\n input: string,\n amount: DateTimeAddOptions,\n timezone?: string\n): string {\n const dt = DateTime.fromISO(input, { zone: timezone ?? 'utc' });\n if (!dt.isValid) {\n throw new Error(`Unable to parse date: ${input}`);\n }\n\n const result = dt.minus(amount);\n return result.toISO()!;\n}\n\nexport function diff(\n a: string,\n b: string\n): DateTimeDiffResult {\n const dtA = DateTime.fromISO(a, { zone: 'utc' });\n const dtB = DateTime.fromISO(b, { zone: 'utc' });\n\n if (!dtA.isValid || !dtB.isValid) {\n throw new Error('Unable to parse one or both dates');\n }\n\n const duration = dtB.diff(dtA, [\n 'years',\n 'months',\n 'days',\n 'hours',\n 'minutes',\n 'seconds',\n ]);\n\n const totalMs = dtB.toMillis() - dtA.toMillis();\n\n return {\n years: Math.floor(duration.years),\n months: Math.floor(duration.months),\n days: Math.floor(duration.days),\n hours: Math.floor(duration.hours),\n minutes: Math.floor(duration.minutes),\n seconds: Math.floor(duration.seconds),\n totalDays: Math.floor(totalMs / 86400000),\n totalHours: Math.floor(totalMs / 3600000),\n totalMinutes: Math.floor(totalMs / 60000),\n totalSeconds: Math.floor(totalMs / 1000),\n totalMilliseconds: totalMs,\n };\n}\n","import { DateTime } from 'luxon';\nimport type { TimezoneConvertResult } from './types';\n\nexport function convertTimezone(\n input: string,\n fromTimezone: string,\n toTimezone: string\n): TimezoneConvertResult {\n const dtFrom = DateTime.fromISO(input, { zone: fromTimezone });\n if (!dtFrom.isValid) {\n throw new Error(`Unable to parse date: ${input} in timezone ${fromTimezone}`);\n }\n\n const dtTo = dtFrom.setZone(toTimezone);\n if (!dtTo.isValid) {\n throw new Error(`Invalid target timezone: ${toTimezone}`);\n }\n\n const offsetFrom = dtFrom.offset;\n const offsetTo = dtTo.offset;\n const diffMinutes = offsetTo - offsetFrom;\n const sign = diffMinutes >= 0 ? '+' : '-';\n const absMinutes = Math.abs(diffMinutes);\n const hours = Math.floor(absMinutes / 60);\n const minutes = absMinutes % 60;\n\n return {\n input: dtFrom.toISO()!,\n inputTimezone: fromTimezone,\n output: dtTo.toISO()!,\n outputTimezone: toTimezone,\n offsetDifference: `${sign}${String(hours).padStart(2, '0')}:${String(minutes).padStart(2, '0')}`,\n };\n}\n\nexport function listTimezones(): string[] {\n return Intl.supportedValuesOf('timeZone');\n}\n","import type { CronParseResult } from './types';\n\nconst _FIELD_NAMES = ['minute', 'hour', 'day of month', 'month', 'day of week'];\nconst MONTH_NAMES = ['', 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\nconst DAY_NAMES = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\n\nexport function parseCron(expression: string, count: number = 5): CronParseResult {\n const parts = expression.trim().split(/\\s+/);\n\n if (parts.length !== 5) {\n return {\n valid: false,\n description: '',\n nextRuns: [],\n error: `Expected 5 fields, got ${parts.length}`,\n };\n }\n\n try {\n const description = describeCron(parts);\n const nextRuns = getNextRuns(parts, count);\n\n return {\n valid: true,\n description,\n nextRuns: nextRuns.map((d) => d.toISOString()),\n };\n } catch (e) {\n return {\n valid: false,\n description: '',\n nextRuns: [],\n error: (e as Error).message,\n };\n }\n}\n\nfunction describeCron(parts: string[]): string {\n const [min, hour, dom, month, dow] = parts;\n const segments: string[] = [];\n\n if (min === '*' && hour === '*' && dom === '*' && month === '*' && dow === '*') {\n return 'Every minute';\n }\n\n if (min !== '*') segments.push(`at minute ${min}`);\n if (hour !== '*') segments.push(`at hour ${hour}`);\n if (dom !== '*') segments.push(`on day ${dom} of the month`);\n if (month !== '*') {\n const m = parseInt(month);\n segments.push(`in ${!isNaN(m) && m >= 1 && m <= 12 ? MONTH_NAMES[m] : month}`);\n }\n if (dow !== '*') {\n const d = parseInt(dow);\n segments.push(`on ${!isNaN(d) && d >= 0 && d <= 6 ? DAY_NAMES[d] : dow}`);\n }\n\n return segments.join(', ') || 'Every minute';\n}\n\nfunction getNextRuns(parts: string[], count: number): Date[] {\n const runs: Date[] = [];\n const now = new Date();\n const current = new Date(now);\n current.setSeconds(0, 0);\n current.setMinutes(current.getMinutes() + 1);\n\n const maxIterations = 525600;\n let iterations = 0;\n\n while (runs.length < count && iterations < maxIterations) {\n if (matchesCron(current, parts)) {\n runs.push(new Date(current));\n }\n current.setMinutes(current.getMinutes() + 1);\n iterations++;\n }\n\n return runs;\n}\n\nfunction matchesCron(date: Date, parts: string[]): boolean {\n const [minExpr, hourExpr, domExpr, monthExpr, dowExpr] = parts;\n\n return (\n matchesField(date.getMinutes(), minExpr, 0, 59) &&\n matchesField(date.getHours(), hourExpr, 0, 23) &&\n matchesField(date.getDate(), domExpr, 1, 31) &&\n matchesField(date.getMonth() + 1, monthExpr, 1, 12) &&\n matchesField(date.getDay(), dowExpr, 0, 6)\n );\n}\n\nfunction matchesField(value: number, expr: string, min: number, max: number): boolean {\n if (expr === '*') return true;\n\n for (const part of expr.split(',')) {\n if (part.includes('/')) {\n const [range, stepStr] = part.split('/');\n const step = parseInt(stepStr);\n const start = range === '*' ? min : parseInt(range);\n for (let i = start; i <= max; i += step) {\n if (i === value) return true;\n }\n } else if (part.includes('-')) {\n const [startStr, endStr] = part.split('-');\n const start = parseInt(startStr);\n const end = parseInt(endStr);\n if (value >= start && value <= end) return true;\n } else {\n if (parseInt(part) === value) return true;\n }\n }\n\n return false;\n}\n","export * from './types';\nexport * from './case';\nexport * from './slug';\nexport * from './stats';\nexport * from './truncate';\nexport * from './lorem';\nexport * from './similarity';\nexport * from './template';\n","import type { CaseType } from './types';\n\nfunction splitWords(input: string): string[] {\n // Split by camelCase boundaries, spaces, hyphens, underscores\n return input\n // Insert separator before uppercase letters that follow lowercase letters (camelCase boundary)\n .replace(/([a-z])([A-Z])/g, '$1 $2')\n // Insert separator before uppercase letters followed by lowercase (e.g. \"HTMLParser\" -> \"HTML Parser\")\n .replace(/([A-Z]+)([A-Z][a-z])/g, '$1 $2')\n // Replace hyphens and underscores with spaces\n .replace(/[-_]/g, ' ')\n // Split on whitespace\n .split(/\\s+/)\n // Filter out empty strings\n .filter((word) => word.length > 0);\n}\n\nfunction capitalize(word: string): string {\n return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();\n}\n\nexport function convertCase(input: string, to: CaseType): string {\n const words = splitWords(input);\n\n if (words.length === 0) {\n return '';\n }\n\n switch (to) {\n case 'camel':\n return words\n .map((word, index) => (index === 0 ? word.toLowerCase() : capitalize(word)))\n .join('');\n\n case 'pascal':\n return words.map((word) => capitalize(word)).join('');\n\n case 'snake':\n return words.map((word) => word.toLowerCase()).join('_');\n\n case 'kebab':\n return words.map((word) => word.toLowerCase()).join('-');\n\n case 'constant':\n return words.map((word) => word.toUpperCase()).join('_');\n\n case 'title':\n return words.map((word) => capitalize(word)).join(' ');\n\n case 'sentence':\n return words\n .map((word, index) => (index === 0 ? capitalize(word) : word.toLowerCase()))\n .join(' ');\n\n case 'upper':\n return words.map((word) => word.toUpperCase()).join(' ');\n\n case 'lower':\n return words.map((word) => word.toLowerCase()).join(' ');\n }\n}\n","export function slugify(input: string, separator: string = '-'): string {\n return input\n // Convert to lowercase\n .toLowerCase()\n // Replace non-alphanumeric chars with separator\n .replace(/[^a-z0-9]+/g, separator)\n // Collapse multiple separators\n .replace(new RegExp(`${escapeRegExp(separator)}+`, 'g'), separator)\n // Trim separators from ends\n .replace(new RegExp(`^${escapeRegExp(separator)}|${escapeRegExp(separator)}$`, 'g'), '');\n}\n\nfunction escapeRegExp(str: string): string {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n","import type { TextStats } from './types';\n\nexport function getTextStats(input: string): TextStats {\n const characters = input.length;\n\n const words = input\n .split(/\\s+/)\n .filter((word) => word.length > 0);\n\n const sentences = input\n .split(/[.!?](?:\\s|$)/)\n .filter((sentence) => sentence.trim().length > 0);\n\n const paragraphs = input\n .split(/\\n\\n+/)\n .filter((paragraph) => paragraph.trim().length > 0);\n\n const lines = input.split(/\\n/);\n\n // 200 words per minute average reading speed\n const readingTimeMs = (words.length / 200) * 60 * 1000;\n\n return {\n characters,\n words: words.length,\n sentences: sentences.length,\n paragraphs: paragraphs.length,\n lines: lines.length,\n readingTimeMs,\n };\n}\n","import type { TruncateOptions } from './types';\n\nexport function truncate(input: string, options: TruncateOptions): string {\n const { length, boundary = 'word', suffix = '...' } = options;\n\n if (input.length <= length) {\n return input;\n }\n\n const maxContentLength = length - suffix.length;\n\n if (maxContentLength <= 0) {\n return suffix.slice(0, length);\n }\n\n if (boundary === 'character') {\n return input.slice(0, maxContentLength) + suffix;\n }\n\n // Word boundary: find last space before maxContentLength\n const truncated = input.slice(0, maxContentLength);\n const lastSpaceIndex = truncated.lastIndexOf(' ');\n\n if (lastSpaceIndex === -1) {\n // No space found, fall back to character boundary\n return truncated + suffix;\n }\n\n return input.slice(0, lastSpaceIndex) + suffix;\n}\n","const LOREM_WORDS = [\n 'lorem', 'ipsum', 'dolor', 'sit', 'amet', 'consectetur', 'adipiscing', 'elit',\n 'sed', 'do', 'eiusmod', 'tempor', 'incididunt', 'ut', 'labore', 'et', 'dolore',\n 'magna', 'aliqua', 'enim', 'ad', 'minim', 'veniam', 'quis', 'nostrud',\n 'exercitation', 'ullamco', 'laboris', 'nisi', 'aliquip', 'ex', 'ea', 'commodo',\n 'consequat', 'duis', 'aute', 'irure', 'in', 'reprehenderit', 'voluptate',\n 'velit', 'esse', 'cillum', 'fugiat', 'nulla', 'pariatur', 'excepteur', 'sint',\n 'occaecat', 'cupidatat',\n];\n\nfunction getWord(index: number): string {\n return LOREM_WORDS[index % LOREM_WORDS.length];\n}\n\nfunction generateSentence(wordOffset: number): { sentence: string; nextOffset: number } {\n // Generate a sentence with 8-15 words\n const wordCount = 8 + (wordOffset % 8); // Deterministic 8-15 range\n const words: string[] = [];\n\n for (let i = 0; i < wordCount; i++) {\n words.push(getWord(wordOffset + i));\n }\n\n // Capitalize first word\n words[0] = words[0].charAt(0).toUpperCase() + words[0].slice(1);\n\n return {\n sentence: words.join(' ') + '.',\n nextOffset: wordOffset + wordCount,\n };\n}\n\nexport function generateLorem(\n count: number,\n unit: 'words' | 'sentences' | 'paragraphs' = 'words',\n): string {\n if (count <= 0) {\n return '';\n }\n\n if (unit === 'words') {\n const words: string[] = [];\n for (let i = 0; i < count; i++) {\n words.push(getWord(i));\n }\n return words.join(' ');\n }\n\n if (unit === 'sentences') {\n const sentences: string[] = [];\n let offset = 0;\n for (let i = 0; i < count; i++) {\n const { sentence, nextOffset } = generateSentence(offset);\n sentences.push(sentence);\n offset = nextOffset;\n }\n return sentences.join(' ');\n }\n\n // paragraphs\n const paragraphs: string[] = [];\n let offset = 0;\n\n for (let i = 0; i < count; i++) {\n const sentenceCount = 3 + (i % 4); // Deterministic 3-6 range\n const sentences: string[] = [];\n\n for (let j = 0; j < sentenceCount; j++) {\n const { sentence, nextOffset } = generateSentence(offset);\n sentences.push(sentence);\n offset = nextOffset;\n }\n\n paragraphs.push(sentences.join(' '));\n }\n\n return paragraphs.join('\\n\\n');\n}\n","import type { SimilarityResult } from './types';\n\nexport function similarity(a: string, b: string): SimilarityResult {\n // Handle edge cases\n if (a === b) {\n return { distance: 0, similarity: 1.0 };\n }\n\n if (a.length === 0) {\n return { distance: b.length, similarity: 0 };\n }\n\n if (b.length === 0) {\n return { distance: a.length, similarity: 0 };\n }\n\n // Wagner-Fischer algorithm for Levenshtein distance\n const m = a.length;\n const n = b.length;\n\n // Create a 2D matrix (m+1) x (n+1)\n const dp: number[][] = [];\n\n for (let i = 0; i <= m; i++) {\n dp[i] = new Array(n + 1);\n dp[i][0] = i;\n }\n\n for (let j = 0; j <= n; j++) {\n dp[0][j] = j;\n }\n\n for (let i = 1; i <= m; i++) {\n for (let j = 1; j <= n; j++) {\n const cost = a[i - 1] === b[j - 1] ? 0 : 1;\n dp[i][j] = Math.min(\n dp[i - 1][j] + 1, // deletion\n dp[i][j - 1] + 1, // insertion\n dp[i - 1][j - 1] + cost, // substitution\n );\n }\n }\n\n const distance = dp[m][n];\n const maxLength = Math.max(m, n);\n const sim = 1 - distance / maxLength;\n\n return { distance, similarity: sim };\n}\n","import type { TemplateResult } from './types';\n\nexport function interpolate(\n template: string,\n variables: Record<string, string>,\n): TemplateResult {\n const missingKeys: string[] = [];\n\n const result = template.replace(/\\{\\{\\s*(\\w+)\\s*\\}\\}/g, (match, key: string) => {\n if (key in variables) {\n return variables[key];\n }\n missingKeys.push(key);\n return match;\n });\n\n // Deduplicate missing keys while preserving order\n const uniqueMissingKeys = [...new Set(missingKeys)];\n\n return { result, missingKeys: uniqueMissingKeys };\n}\n","export * from './types';\nexport * from './convert';\nexport * from './base';\nexport * from './statistics';\nexport * from './format';\nexport * from './percentage';\n","import type { UnitCategory, UnitConversionResult } from './types';\n\nconst lengthFactors: Record<string, number> = {\n mm: 0.001,\n cm: 0.01,\n m: 1,\n km: 1000,\n in: 0.0254,\n ft: 0.3048,\n yd: 0.9144,\n mi: 1609.344,\n};\n\nconst weightFactors: Record<string, number> = {\n mg: 0.001,\n g: 1,\n kg: 1000,\n oz: 28.3495,\n lb: 453.592,\n ton: 907185,\n};\n\nconst dataFactors: Record<string, number> = {\n b: 1,\n kb: 1024,\n mb: Math.pow(1024, 2),\n gb: Math.pow(1024, 3),\n tb: Math.pow(1024, 4),\n};\n\nconst temperatureUnits = new Set(['celsius', 'fahrenheit', 'kelvin']);\n\nfunction convertTemperature(value: number, from: string, to: string): number {\n if (from === to) return value;\n\n // Convert to Celsius first\n let celsius: number;\n switch (from) {\n case 'celsius':\n celsius = value;\n break;\n case 'fahrenheit':\n celsius = (value - 32) * 5 / 9;\n break;\n case 'kelvin':\n celsius = value - 273.15;\n break;\n default:\n throw new Error(`Unknown temperature unit: ${from}`);\n }\n\n // Convert from Celsius to target\n switch (to) {\n case 'celsius':\n return celsius;\n case 'fahrenheit':\n return celsius * 9 / 5 + 32;\n case 'kelvin':\n return celsius + 273.15;\n default:\n throw new Error(`Unknown temperature unit: ${to}`);\n }\n}\n\nfunction getFactors(category: UnitCategory): Record<string, number> {\n switch (category) {\n case 'length':\n return lengthFactors;\n case 'weight':\n return weightFactors;\n case 'data':\n return dataFactors;\n default:\n throw new Error(`No conversion factors for category: ${category}`);\n }\n}\n\nexport function convertUnit(\n value: number,\n from: string,\n to: string,\n category: UnitCategory\n): UnitConversionResult {\n const fromLower = from.toLowerCase();\n const toLower = to.toLowerCase();\n\n if (category === 'temperature') {\n if (!temperatureUnits.has(fromLower)) {\n throw new Error(`Unit '${from}' does not belong to category 'temperature'`);\n }\n if (!temperatureUnits.has(toLower)) {\n throw new Error(`Unit '${to}' does not belong to category 'temperature'`);\n }\n const result = convertTemperature(value, fromLower, toLower);\n return { value, from: fromLower, to: toLower, result };\n }\n\n const factors = getFactors(category);\n\n if (!(fromLower in factors)) {\n throw new Error(`Unit '${from}' does not belong to category '${category}'`);\n }\n if (!(toLower in factors)) {\n throw new Error(`Unit '${to}' does not belong to category '${category}'`);\n }\n\n // Convert to base unit, then to target unit\n const baseValue = value * factors[fromLower];\n const result = baseValue / factors[toLower];\n\n return { value, from: fromLower, to: toLower, result };\n}\n","import type { BaseConversionResult, NumberBase } from './types';\n\nconst radixMap: Record<NumberBase, number> = {\n binary: 2,\n octal: 8,\n decimal: 10,\n hex: 16,\n};\n\nexport function convertBase(input: string, fromBase: NumberBase): BaseConversionResult {\n const radix = radixMap[fromBase];\n if (radix === undefined) {\n throw new Error(`Unknown base: ${fromBase}`);\n }\n\n // Strip common prefixes before parsing\n let cleanInput = input.trim();\n if (fromBase === 'binary' && cleanInput.startsWith('0b')) {\n cleanInput = cleanInput.slice(2);\n } else if (fromBase === 'octal' && cleanInput.startsWith('0o')) {\n cleanInput = cleanInput.slice(2);\n } else if (fromBase === 'hex' && cleanInput.startsWith('0x')) {\n cleanInput = cleanInput.slice(2);\n }\n\n const decimalValue = parseInt(cleanInput, radix);\n if (isNaN(decimalValue)) {\n throw new Error(`Invalid input '${input}' for base '${fromBase}'`);\n }\n\n return {\n input,\n fromBase,\n binary: '0b' + decimalValue.toString(2),\n octal: '0o' + decimalValue.toString(8),\n decimal: decimalValue.toString(10),\n hex: '0x' + decimalValue.toString(16),\n };\n}\n","import type { StatisticsResult } from './types';\n\nfunction getPercentile(sorted: number[], p: number): number {\n if (sorted.length === 1) return sorted[0];\n\n const index = (p / 100) * (sorted.length - 1);\n const lower = Math.floor(index);\n const upper = Math.ceil(index);\n\n if (lower === upper) return sorted[lower];\n\n const fraction = index - lower;\n return sorted[lower] + fraction * (sorted[upper] - sorted[lower]);\n}\n\nexport function calculateStats(numbers: number[]): StatisticsResult {\n if (numbers.length === 0) {\n throw new Error('Cannot calculate statistics for an empty array');\n }\n\n const count = numbers.length;\n const sum = numbers.reduce((acc, n) => acc + n, 0);\n const mean = sum / count;\n\n const sorted = [...numbers].sort((a, b) => a - b);\n\n // Median\n let median: number;\n const mid = Math.floor(sorted.length / 2);\n if (sorted.length % 2 === 0) {\n median = (sorted[mid - 1] + sorted[mid]) / 2;\n } else {\n median = sorted[mid];\n }\n\n // Mode\n const frequencyMap = new Map<number, number>();\n for (const n of numbers) {\n frequencyMap.set(n, (frequencyMap.get(n) || 0) + 1);\n }\n let maxFrequency = 0;\n for (const freq of frequencyMap.values()) {\n if (freq > maxFrequency) maxFrequency = freq;\n }\n const mode: number[] = [];\n for (const [value, freq] of frequencyMap.entries()) {\n if (freq === maxFrequency) mode.push(value);\n }\n mode.sort((a, b) => a - b);\n\n const min = sorted[0];\n const max = sorted[sorted.length - 1];\n const range = max - min;\n\n // Variance (population variance)\n const variance = numbers.reduce((acc, n) => acc + Math.pow(n - mean, 2), 0) / count;\n const standardDeviation = Math.sqrt(variance);\n\n // Percentiles using linear interpolation\n const percentiles = {\n p25: getPercentile(sorted, 25),\n p50: getPercentile(sorted, 50),\n p75: getPercentile(sorted, 75),\n p90: getPercentile(sorted, 90),\n p99: getPercentile(sorted, 99),\n };\n\n return {\n count,\n sum,\n mean,\n median,\n mode,\n min,\n max,\n range,\n standardDeviation,\n variance,\n percentiles,\n };\n}\n","import type { NumberFormatOptions } from './types';\n\nexport function formatNumber(value: number, options?: NumberFormatOptions): string {\n const locale = options?.locale ?? 'en-US';\n\n const formatOptions: Intl.NumberFormatOptions = {};\n\n if (options?.style) {\n formatOptions.style = options.style;\n }\n\n if (options?.currency) {\n formatOptions.currency = options.currency;\n }\n\n if (options?.minimumFractionDigits !== undefined) {\n formatOptions.minimumFractionDigits = options.minimumFractionDigits;\n }\n\n if (options?.maximumFractionDigits !== undefined) {\n formatOptions.maximumFractionDigits = options.maximumFractionDigits;\n }\n\n return new Intl.NumberFormat(locale, formatOptions).format(value);\n}\n","import type { PercentageResult, PercentageChangeResult } from './types';\n\nexport function percentage(value: number, total: number): PercentageResult {\n if (total === 0) {\n throw new Error('Total cannot be zero');\n }\n\n const pct = (value / total) * 100;\n\n return {\n value,\n total,\n percentage: pct,\n formatted: `${pct}%`,\n };\n}\n\nexport function percentageChange(from: number, to: number): PercentageChangeResult {\n if (from === 0) {\n throw new Error('Cannot calculate percentage change from zero');\n }\n\n const change = ((to - from) / Math.abs(from)) * 100;\n const sign = change >= 0 ? '+' : '';\n const formatted = `${sign}${change}%`;\n\n return {\n from,\n to,\n change,\n formatted,\n };\n}\n","export * from './types';\nexport * from './parse';\nexport * from './convert';\nexport * from './contrast';\nexport * from './palette';\nexport * from './blend';\nexport * from './name';\n","import type { RGB, HSL, ColorConversionResult } from './types';\n\nexport function hexToRgb(hex: string): RGB {\n let h = hex.replace(/^#/, '');\n if (h.length === 3) {\n h = h[0] + h[0] + h[1] + h[1] + h[2] + h[2];\n }\n if (h.length !== 6) {\n throw new Error(`Invalid hex color: ${hex}`);\n }\n const num = parseInt(h, 16);\n if (isNaN(num)) {\n throw new Error(`Invalid hex color: ${hex}`);\n }\n return {\n r: (num >> 16) & 255,\n g: (num >> 8) & 255,\n b: num & 255,\n };\n}\n\nexport function hslToRgb(h: number, s: number, l: number): RGB {\n const sNorm = s / 100;\n const lNorm = l / 100;\n\n const c = (1 - Math.abs(2 * lNorm - 1)) * sNorm;\n const hPrime = h / 60;\n const x = c * (1 - Math.abs((hPrime % 2) - 1));\n const m = lNorm - c / 2;\n\n let r1 = 0;\n let g1 = 0;\n let b1 = 0;\n\n if (hPrime >= 0 && hPrime < 1) {\n r1 = c; g1 = x; b1 = 0;\n } else if (hPrime >= 1 && hPrime < 2) {\n r1 = x; g1 = c; b1 = 0;\n } else if (hPrime >= 2 && hPrime < 3) {\n r1 = 0; g1 = c; b1 = x;\n } else if (hPrime >= 3 && hPrime < 4) {\n r1 = 0; g1 = x; b1 = c;\n } else if (hPrime >= 4 && hPrime < 5) {\n r1 = x; g1 = 0; b1 = c;\n } else if (hPrime >= 5 && hPrime < 6) {\n r1 = c; g1 = 0; b1 = x;\n }\n\n return {\n r: Math.round((r1 + m) * 255),\n g: Math.round((g1 + m) * 255),\n b: Math.round((b1 + m) * 255),\n };\n}\n\nexport function rgbToHsl(r: number, g: number, b: number): HSL {\n const rNorm = r / 255;\n const gNorm = g / 255;\n const bNorm = b / 255;\n\n const max = Math.max(rNorm, gNorm, bNorm);\n const min = Math.min(rNorm, gNorm, bNorm);\n const delta = max - min;\n\n let h = 0;\n let s = 0;\n const l = (max + min) / 2;\n\n if (delta !== 0) {\n s = l > 0.5 ? delta / (2 - max - min) : delta / (max + min);\n\n if (max === rNorm) {\n h = ((gNorm - bNorm) / delta + (gNorm < bNorm ? 6 : 0)) * 60;\n } else if (max === gNorm) {\n h = ((bNorm - rNorm) / delta + 2) * 60;\n } else {\n h = ((rNorm - gNorm) / delta + 4) * 60;\n }\n }\n\n return {\n h: Math.round(h),\n s: Math.round(s * 100),\n l: Math.round(l * 100),\n };\n}\n\nexport function rgbToHex(r: number, g: number, b: number): string {\n const toHex = (c: number): string => {\n const hex = Math.max(0, Math.min(255, c)).toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n };\n return '#' + toHex(r) + toHex(g) + toHex(b);\n}\n\nexport function parseColor(input: string): ColorConversionResult {\n const trimmed = input.trim().toLowerCase();\n\n let rgb: RGB;\n\n // Try hex format\n const hexMatch = trimmed.match(/^#([0-9a-f]{3}|[0-9a-f]{6})$/);\n if (hexMatch) {\n rgb = hexToRgb(trimmed);\n }\n // Try rgb() format\n else {\n const rgbMatch = trimmed.match(/^rgb\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*\\)$/);\n if (rgbMatch) {\n rgb = {\n r: Math.min(255, parseInt(rgbMatch[1], 10)),\n g: Math.min(255, parseInt(rgbMatch[2], 10)),\n b: Math.min(255, parseInt(rgbMatch[3], 10)),\n };\n }\n // Try hsl() format\n else {\n const hslMatch = trimmed.match(/^hsl\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})%\\s*,\\s*(\\d{1,3})%\\s*\\)$/);\n if (hslMatch) {\n const h = Math.min(360, parseInt(hslMatch[1], 10));\n const s = Math.min(100, parseInt(hslMatch[2], 10));\n const l = Math.min(100, parseInt(hslMatch[3], 10));\n rgb = hslToRgb(h, s, l);\n } else {\n throw new Error(`Unsupported color format: ${input}`);\n }\n }\n }\n\n const hsl = rgbToHsl(rgb.r, rgb.g, rgb.b);\n const hex = rgbToHex(rgb.r, rgb.g, rgb.b);\n\n return {\n hex,\n rgb: `rgb(${rgb.r}, ${rgb.g}, ${rgb.b})`,\n hsl: `hsl(${hsl.h}, ${hsl.s}%, ${hsl.l}%)`,\n values: {\n rgb,\n hsl,\n },\n };\n}\n","import type { ColorFormat } from './types';\nimport { parseColor } from './parse';\n\nexport function convertColor(input: string, to: ColorFormat): string {\n const result = parseColor(input);\n\n switch (to) {\n case 'hex':\n return result.hex;\n case 'rgb':\n return result.rgb;\n case 'hsl':\n return result.hsl;\n default:\n throw new Error(`Unsupported target format: ${to}`);\n }\n}\n","import type { ContrastResult } from './types';\nimport { parseColor } from './parse';\n\nfunction srgbChannel(c: number): number {\n const normalized = c / 255;\n return normalized <= 0.03928\n ? normalized / 12.92\n : Math.pow((normalized + 0.055) / 1.055, 2.4);\n}\n\nfunction relativeLuminance(r: number, g: number, b: number): number {\n return 0.2126 * srgbChannel(r) + 0.7152 * srgbChannel(g) + 0.0722 * srgbChannel(b);\n}\n\nexport function contrastRatio(color1: string, color2: string): ContrastResult {\n const c1 = parseColor(color1);\n const c2 = parseColor(color2);\n\n const l1 = relativeLuminance(c1.values.rgb.r, c1.values.rgb.g, c1.values.rgb.b);\n const l2 = relativeLuminance(c2.values.rgb.r, c2.values.rgb.g, c2.values.rgb.b);\n\n const lighter = Math.max(l1, l2);\n const darker = Math.min(l1, l2);\n\n const ratio = (lighter + 0.05) / (darker + 0.05);\n const roundedRatio = Math.round(ratio * 100) / 100;\n\n return {\n ratio: roundedRatio,\n formatted: `${roundedRatio.toFixed(2)}:1`,\n aa: {\n normal: roundedRatio >= 4.5,\n large: roundedRatio >= 3,\n },\n aaa: {\n normal: roundedRatio >= 7,\n large: roundedRatio >= 4.5,\n },\n };\n}\n","import type { PaletteOptions, ColorConversionResult } from './types';\nimport { parseColor, hslToRgb, rgbToHsl, rgbToHex } from './parse';\n\nfunction hslToConversionResult(h: number, s: number, l: number): ColorConversionResult {\n const normalizedH = ((h % 360) + 360) % 360;\n const rgb = hslToRgb(normalizedH, s, l);\n const hex = rgbToHex(rgb.r, rgb.g, rgb.b);\n const hslRecalc = rgbToHsl(rgb.r, rgb.g, rgb.b);\n\n return {\n hex,\n rgb: `rgb(${rgb.r}, ${rgb.g}, ${rgb.b})`,\n hsl: `hsl(${hslRecalc.h}, ${hslRecalc.s}%, ${hslRecalc.l}%)`,\n values: {\n rgb,\n hsl: hslRecalc,\n },\n };\n}\n\nexport function generatePalette(base: string, options: PaletteOptions): ColorConversionResult[] {\n const parsed = parseColor(base);\n const { h, s, l } = parsed.values.hsl;\n const count = options.count ?? 5;\n\n switch (options.type) {\n case 'complementary': {\n return [\n hslToConversionResult(h, s, l),\n hslToConversionResult(h + 180, s, l),\n ];\n }\n\n case 'analogous': {\n const results: ColorConversionResult[] = [];\n const spread = 30;\n const step = (spread * 2) / (count - 1);\n for (let i = 0; i < count; i++) {\n const hue = h - spread + step * i;\n results.push(hslToConversionResult(hue, s, l));\n }\n return results;\n }\n\n case 'triadic': {\n return [\n hslToConversionResult(h, s, l),\n hslToConversionResult(h + 120, s, l),\n hslToConversionResult(h + 240, s, l),\n ];\n }\n\n case 'shades': {\n const results: ColorConversionResult[] = [];\n const minL = 10;\n const step = (l - minL) / (count - 1);\n for (let i = 0; i < count; i++) {\n const lightness = Math.round(l - step * i);\n results.push(hslToConversionResult(h, s, lightness));\n }\n return results;\n }\n\n case 'tints': {\n const results: ColorConversionResult[] = [];\n const maxL = 95;\n const step = (maxL - l) / (count - 1);\n for (let i = 0; i < count; i++) {\n const lightness = Math.round(l + step * i);\n results.push(hslToConversionResult(h, s, lightness));\n }\n return results;\n }\n\n default:\n throw new Error(`Unsupported palette type: ${options.type}`);\n }\n}\n","import type { BlendResult } from './types';\nimport { parseColor, rgbToHex, rgbToHsl } from './parse';\n\nexport function blendColors(color1: string, color2: string, ratio: number = 0.5): BlendResult {\n if (ratio < 0 || ratio > 1) {\n throw new Error(`Ratio must be between 0 and 1, got: ${ratio}`);\n }\n\n const c1 = parseColor(color1);\n const c2 = parseColor(color2);\n\n const r = Math.round(c1.values.rgb.r * (1 - ratio) + c2.values.rgb.r * ratio);\n const g = Math.round(c1.values.rgb.g * (1 - ratio) + c2.values.rgb.g * ratio);\n const b = Math.round(c1.values.rgb.b * (1 - ratio) + c2.values.rgb.b * ratio);\n\n const hex = rgbToHex(r, g, b);\n const hsl = rgbToHsl(r, g, b);\n\n return {\n color: {\n hex,\n rgb: `rgb(${r}, ${g}, ${b})`,\n hsl: `hsl(${hsl.h}, ${hsl.s}%, ${hsl.l}%)`,\n values: {\n rgb: { r, g, b },\n hsl,\n },\n },\n ratio,\n };\n}\n","import type { ColorNameResult } from './types';\nimport { parseColor, hexToRgb } from './parse';\n\nconst NAMED_COLORS: Record<string, string> = {\n black: '#000000',\n white: '#FFFFFF',\n red: '#FF0000',\n green: '#008000',\n blue: '#0000FF',\n yellow: '#FFFF00',\n cyan: '#00FFFF',\n magenta: '#FF00FF',\n orange: '#FFA500',\n purple: '#800080',\n pink: '#FFC0CB',\n brown: '#A52A2A',\n gray: '#808080',\n silver: '#C0C0C0',\n maroon: '#800000',\n navy: '#000080',\n teal: '#008080',\n olive: '#808000',\n lime: '#00FF00',\n aqua: '#00FFFF',\n coral: '#FF7F50',\n salmon: '#FA8072',\n gold: '#FFD700',\n khaki: '#F0E68C',\n plum: '#DDA0DD',\n violet: '#EE82EE',\n indigo: '#4B0082',\n beige: '#F5F5DC',\n ivory: '#FFFFF0',\n lavender: '#E6E6FA',\n};\n\nfunction euclideanDistance(r1: number, g1: number, b1: number, r2: number, g2: number, b2: number): number {\n return Math.sqrt(\n Math.pow(r1 - r2, 2) +\n Math.pow(g1 - g2, 2) +\n Math.pow(b1 - b2, 2)\n );\n}\n\nexport function colorName(input: string): ColorNameResult {\n const parsed = parseColor(input);\n const { r, g, b } = parsed.values.rgb;\n\n let closestName = '';\n let closestHex = '';\n let closestDistance = Infinity;\n\n for (const [name, hex] of Object.entries(NAMED_COLORS)) {\n const namedRgb = hexToRgb(hex);\n const distance = euclideanDistance(r, g, b, namedRgb.r, namedRgb.g, namedRgb.b);\n\n if (distance < closestDistance) {\n closestDistance = distance;\n closestName = name;\n closestHex = hex.toLowerCase();\n }\n }\n\n return {\n name: closestName,\n exact: closestDistance === 0,\n hex: closestHex,\n };\n}\n"]}
|