@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/datetime/parse.ts","../../src/datetime/math.ts","../../src/datetime/timezone.ts","../../src/datetime/cron.ts"],"names":["DateTime","now"],"mappings":"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","file":"index.js","sourcesContent":["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"]}
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
import { DateTime } from 'luxon';
|
|
2
|
+
|
|
3
|
+
// src/datetime/parse.ts
|
|
4
|
+
function parseDate(input, timezone) {
|
|
5
|
+
let dt;
|
|
6
|
+
const unixNum = Number(input);
|
|
7
|
+
if (!isNaN(unixNum) && String(unixNum) === input.trim()) {
|
|
8
|
+
dt = unixNum > 1e12 ? DateTime.fromMillis(unixNum, { zone: timezone ?? "utc" }) : DateTime.fromSeconds(unixNum, { zone: timezone ?? "utc" });
|
|
9
|
+
} else {
|
|
10
|
+
dt = DateTime.fromISO(input, { zone: timezone ?? "utc" });
|
|
11
|
+
if (!dt.isValid) {
|
|
12
|
+
dt = DateTime.fromRFC2822(input, { zone: timezone ?? "utc" });
|
|
13
|
+
}
|
|
14
|
+
if (!dt.isValid) {
|
|
15
|
+
dt = DateTime.fromSQL(input, { zone: timezone ?? "utc" });
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
if (!dt.isValid) {
|
|
19
|
+
throw new Error(`Unable to parse date: ${input} (${dt.invalidReason})`);
|
|
20
|
+
}
|
|
21
|
+
return {
|
|
22
|
+
iso: dt.toISO(),
|
|
23
|
+
unix: Math.floor(dt.toSeconds()),
|
|
24
|
+
unixMs: dt.toMillis(),
|
|
25
|
+
year: dt.year,
|
|
26
|
+
month: dt.month,
|
|
27
|
+
day: dt.day,
|
|
28
|
+
hour: dt.hour,
|
|
29
|
+
minute: dt.minute,
|
|
30
|
+
second: dt.second,
|
|
31
|
+
dayOfWeek: dt.weekdayLong,
|
|
32
|
+
dayOfYear: dt.ordinal,
|
|
33
|
+
weekNumber: dt.weekNumber,
|
|
34
|
+
isLeapYear: dt.isInLeapYear,
|
|
35
|
+
timezone: dt.zoneName,
|
|
36
|
+
offset: dt.toFormat("ZZ")
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
function formatDate(input, options = {}) {
|
|
40
|
+
const tz = options.timezone ?? "utc";
|
|
41
|
+
let dt = DateTime.fromISO(input, { zone: tz });
|
|
42
|
+
if (!dt.isValid) {
|
|
43
|
+
dt = DateTime.fromMillis(Number(input), { zone: tz });
|
|
44
|
+
}
|
|
45
|
+
if (!dt.isValid) {
|
|
46
|
+
throw new Error(`Unable to parse date: ${input}`);
|
|
47
|
+
}
|
|
48
|
+
if (options.format) {
|
|
49
|
+
return dt.toFormat(options.format);
|
|
50
|
+
}
|
|
51
|
+
return dt.toISO();
|
|
52
|
+
}
|
|
53
|
+
function now(timezone) {
|
|
54
|
+
const dt = DateTime.now().setZone(timezone ?? "utc");
|
|
55
|
+
return parseDate(dt.toISO(), timezone);
|
|
56
|
+
}
|
|
57
|
+
function add(input, amount, timezone) {
|
|
58
|
+
const dt = DateTime.fromISO(input, { zone: timezone ?? "utc" });
|
|
59
|
+
if (!dt.isValid) {
|
|
60
|
+
throw new Error(`Unable to parse date: ${input}`);
|
|
61
|
+
}
|
|
62
|
+
const result = dt.plus(amount);
|
|
63
|
+
return result.toISO();
|
|
64
|
+
}
|
|
65
|
+
function subtract(input, amount, timezone) {
|
|
66
|
+
const dt = DateTime.fromISO(input, { zone: timezone ?? "utc" });
|
|
67
|
+
if (!dt.isValid) {
|
|
68
|
+
throw new Error(`Unable to parse date: ${input}`);
|
|
69
|
+
}
|
|
70
|
+
const result = dt.minus(amount);
|
|
71
|
+
return result.toISO();
|
|
72
|
+
}
|
|
73
|
+
function diff(a, b) {
|
|
74
|
+
const dtA = DateTime.fromISO(a, { zone: "utc" });
|
|
75
|
+
const dtB = DateTime.fromISO(b, { zone: "utc" });
|
|
76
|
+
if (!dtA.isValid || !dtB.isValid) {
|
|
77
|
+
throw new Error("Unable to parse one or both dates");
|
|
78
|
+
}
|
|
79
|
+
const duration = dtB.diff(dtA, [
|
|
80
|
+
"years",
|
|
81
|
+
"months",
|
|
82
|
+
"days",
|
|
83
|
+
"hours",
|
|
84
|
+
"minutes",
|
|
85
|
+
"seconds"
|
|
86
|
+
]);
|
|
87
|
+
const totalMs = dtB.toMillis() - dtA.toMillis();
|
|
88
|
+
return {
|
|
89
|
+
years: Math.floor(duration.years),
|
|
90
|
+
months: Math.floor(duration.months),
|
|
91
|
+
days: Math.floor(duration.days),
|
|
92
|
+
hours: Math.floor(duration.hours),
|
|
93
|
+
minutes: Math.floor(duration.minutes),
|
|
94
|
+
seconds: Math.floor(duration.seconds),
|
|
95
|
+
totalDays: Math.floor(totalMs / 864e5),
|
|
96
|
+
totalHours: Math.floor(totalMs / 36e5),
|
|
97
|
+
totalMinutes: Math.floor(totalMs / 6e4),
|
|
98
|
+
totalSeconds: Math.floor(totalMs / 1e3),
|
|
99
|
+
totalMilliseconds: totalMs
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
function convertTimezone(input, fromTimezone, toTimezone) {
|
|
103
|
+
const dtFrom = DateTime.fromISO(input, { zone: fromTimezone });
|
|
104
|
+
if (!dtFrom.isValid) {
|
|
105
|
+
throw new Error(`Unable to parse date: ${input} in timezone ${fromTimezone}`);
|
|
106
|
+
}
|
|
107
|
+
const dtTo = dtFrom.setZone(toTimezone);
|
|
108
|
+
if (!dtTo.isValid) {
|
|
109
|
+
throw new Error(`Invalid target timezone: ${toTimezone}`);
|
|
110
|
+
}
|
|
111
|
+
const offsetFrom = dtFrom.offset;
|
|
112
|
+
const offsetTo = dtTo.offset;
|
|
113
|
+
const diffMinutes = offsetTo - offsetFrom;
|
|
114
|
+
const sign = diffMinutes >= 0 ? "+" : "-";
|
|
115
|
+
const absMinutes = Math.abs(diffMinutes);
|
|
116
|
+
const hours = Math.floor(absMinutes / 60);
|
|
117
|
+
const minutes = absMinutes % 60;
|
|
118
|
+
return {
|
|
119
|
+
input: dtFrom.toISO(),
|
|
120
|
+
inputTimezone: fromTimezone,
|
|
121
|
+
output: dtTo.toISO(),
|
|
122
|
+
outputTimezone: toTimezone,
|
|
123
|
+
offsetDifference: `${sign}${String(hours).padStart(2, "0")}:${String(minutes).padStart(2, "0")}`
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
function listTimezones() {
|
|
127
|
+
return Intl.supportedValuesOf("timeZone");
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
// src/datetime/cron.ts
|
|
131
|
+
var MONTH_NAMES = ["", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
|
|
132
|
+
var DAY_NAMES = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
|
|
133
|
+
function parseCron(expression, count = 5) {
|
|
134
|
+
const parts = expression.trim().split(/\s+/);
|
|
135
|
+
if (parts.length !== 5) {
|
|
136
|
+
return {
|
|
137
|
+
valid: false,
|
|
138
|
+
description: "",
|
|
139
|
+
nextRuns: [],
|
|
140
|
+
error: `Expected 5 fields, got ${parts.length}`
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
try {
|
|
144
|
+
const description = describeCron(parts);
|
|
145
|
+
const nextRuns = getNextRuns(parts, count);
|
|
146
|
+
return {
|
|
147
|
+
valid: true,
|
|
148
|
+
description,
|
|
149
|
+
nextRuns: nextRuns.map((d) => d.toISOString())
|
|
150
|
+
};
|
|
151
|
+
} catch (e) {
|
|
152
|
+
return {
|
|
153
|
+
valid: false,
|
|
154
|
+
description: "",
|
|
155
|
+
nextRuns: [],
|
|
156
|
+
error: e.message
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
function describeCron(parts) {
|
|
161
|
+
const [min, hour, dom, month, dow] = parts;
|
|
162
|
+
const segments = [];
|
|
163
|
+
if (min === "*" && hour === "*" && dom === "*" && month === "*" && dow === "*") {
|
|
164
|
+
return "Every minute";
|
|
165
|
+
}
|
|
166
|
+
if (min !== "*") segments.push(`at minute ${min}`);
|
|
167
|
+
if (hour !== "*") segments.push(`at hour ${hour}`);
|
|
168
|
+
if (dom !== "*") segments.push(`on day ${dom} of the month`);
|
|
169
|
+
if (month !== "*") {
|
|
170
|
+
const m = parseInt(month);
|
|
171
|
+
segments.push(`in ${!isNaN(m) && m >= 1 && m <= 12 ? MONTH_NAMES[m] : month}`);
|
|
172
|
+
}
|
|
173
|
+
if (dow !== "*") {
|
|
174
|
+
const d = parseInt(dow);
|
|
175
|
+
segments.push(`on ${!isNaN(d) && d >= 0 && d <= 6 ? DAY_NAMES[d] : dow}`);
|
|
176
|
+
}
|
|
177
|
+
return segments.join(", ") || "Every minute";
|
|
178
|
+
}
|
|
179
|
+
function getNextRuns(parts, count) {
|
|
180
|
+
const runs = [];
|
|
181
|
+
const now2 = /* @__PURE__ */ new Date();
|
|
182
|
+
const current = new Date(now2);
|
|
183
|
+
current.setSeconds(0, 0);
|
|
184
|
+
current.setMinutes(current.getMinutes() + 1);
|
|
185
|
+
const maxIterations = 525600;
|
|
186
|
+
let iterations = 0;
|
|
187
|
+
while (runs.length < count && iterations < maxIterations) {
|
|
188
|
+
if (matchesCron(current, parts)) {
|
|
189
|
+
runs.push(new Date(current));
|
|
190
|
+
}
|
|
191
|
+
current.setMinutes(current.getMinutes() + 1);
|
|
192
|
+
iterations++;
|
|
193
|
+
}
|
|
194
|
+
return runs;
|
|
195
|
+
}
|
|
196
|
+
function matchesCron(date, parts) {
|
|
197
|
+
const [minExpr, hourExpr, domExpr, monthExpr, dowExpr] = parts;
|
|
198
|
+
return matchesField(date.getMinutes(), minExpr, 0, 59) && matchesField(date.getHours(), hourExpr, 0, 23) && matchesField(date.getDate(), domExpr, 1, 31) && matchesField(date.getMonth() + 1, monthExpr, 1, 12) && matchesField(date.getDay(), dowExpr, 0, 6);
|
|
199
|
+
}
|
|
200
|
+
function matchesField(value, expr, min, max) {
|
|
201
|
+
if (expr === "*") return true;
|
|
202
|
+
for (const part of expr.split(",")) {
|
|
203
|
+
if (part.includes("/")) {
|
|
204
|
+
const [range, stepStr] = part.split("/");
|
|
205
|
+
const step = parseInt(stepStr);
|
|
206
|
+
const start = range === "*" ? min : parseInt(range);
|
|
207
|
+
for (let i = start; i <= max; i += step) {
|
|
208
|
+
if (i === value) return true;
|
|
209
|
+
}
|
|
210
|
+
} else if (part.includes("-")) {
|
|
211
|
+
const [startStr, endStr] = part.split("-");
|
|
212
|
+
const start = parseInt(startStr);
|
|
213
|
+
const end = parseInt(endStr);
|
|
214
|
+
if (value >= start && value <= end) return true;
|
|
215
|
+
} else {
|
|
216
|
+
if (parseInt(part) === value) return true;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
return false;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
export { add, convertTimezone, diff, formatDate, listTimezones, now, parseCron, parseDate, subtract };
|
|
223
|
+
//# sourceMappingURL=index.mjs.map
|
|
224
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/datetime/parse.ts","../../src/datetime/math.ts","../../src/datetime/timezone.ts","../../src/datetime/cron.ts"],"names":["DateTime","now"],"mappings":"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","file":"index.mjs","sourcesContent":["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"]}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var diff = require('diff');
|
|
4
|
+
|
|
5
|
+
// src/diff/compare.ts
|
|
6
|
+
function compare(a, b, options = {}) {
|
|
7
|
+
const type = options.type ?? "line";
|
|
8
|
+
let rawChanges;
|
|
9
|
+
switch (type) {
|
|
10
|
+
case "word":
|
|
11
|
+
rawChanges = diff.diffWords(a, b, {
|
|
12
|
+
ignoreWhitespace: options.ignoreWhitespace
|
|
13
|
+
});
|
|
14
|
+
break;
|
|
15
|
+
case "char":
|
|
16
|
+
rawChanges = diff.diffChars(a, b);
|
|
17
|
+
break;
|
|
18
|
+
case "line":
|
|
19
|
+
default:
|
|
20
|
+
rawChanges = diff.diffLines(a, b, {
|
|
21
|
+
ignoreWhitespace: options.ignoreWhitespace
|
|
22
|
+
});
|
|
23
|
+
break;
|
|
24
|
+
}
|
|
25
|
+
const changes = rawChanges.map((c) => ({
|
|
26
|
+
type: c.added ? "added" : c.removed ? "removed" : "unchanged",
|
|
27
|
+
value: c.value,
|
|
28
|
+
count: c.count ?? 0
|
|
29
|
+
}));
|
|
30
|
+
let additions = 0;
|
|
31
|
+
let deletions = 0;
|
|
32
|
+
let unchanged = 0;
|
|
33
|
+
for (const change of changes) {
|
|
34
|
+
switch (change.type) {
|
|
35
|
+
case "added":
|
|
36
|
+
additions += change.count;
|
|
37
|
+
break;
|
|
38
|
+
case "removed":
|
|
39
|
+
deletions += change.count;
|
|
40
|
+
break;
|
|
41
|
+
case "unchanged":
|
|
42
|
+
unchanged += change.count;
|
|
43
|
+
break;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return {
|
|
47
|
+
identical: additions === 0 && deletions === 0,
|
|
48
|
+
changes,
|
|
49
|
+
stats: { additions, deletions, unchanged }
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
function unifiedDiff(a, b, options = {}) {
|
|
53
|
+
const fromFile = options.fromFile ?? "a";
|
|
54
|
+
const toFile = options.toFile ?? "b";
|
|
55
|
+
const context = options.context ?? 3;
|
|
56
|
+
return diff.createTwoFilesPatch(fromFile, toFile, a, b, void 0, void 0, {
|
|
57
|
+
context
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
function createUnifiedPatch(fileName, original, modified, context = 3) {
|
|
61
|
+
return diff.createPatch(fileName, original, modified, void 0, void 0, {
|
|
62
|
+
context
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
function apply(input, patch, options = {}) {
|
|
66
|
+
const result = diff.applyPatch(input, patch, {
|
|
67
|
+
fuzzFactor: options.fuzz ?? 0
|
|
68
|
+
});
|
|
69
|
+
if (result === false) {
|
|
70
|
+
throw new Error("Failed to apply patch: patch does not match the input");
|
|
71
|
+
}
|
|
72
|
+
return result;
|
|
73
|
+
}
|
|
74
|
+
function parsePatchFile(patch) {
|
|
75
|
+
return diff.parsePatch(patch);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
exports.apply = apply;
|
|
79
|
+
exports.compare = compare;
|
|
80
|
+
exports.createUnifiedPatch = createUnifiedPatch;
|
|
81
|
+
exports.parsePatchFile = parsePatchFile;
|
|
82
|
+
exports.unifiedDiff = unifiedDiff;
|
|
83
|
+
//# sourceMappingURL=index.js.map
|
|
84
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/diff/compare.ts","../../src/diff/unified.ts","../../src/diff/patch.ts"],"names":["diffWords","diffChars","diffLines","createTwoFilesPatch","createPatch","applyPatch","parsePatch"],"mappings":"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","file":"index.js","sourcesContent":["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"]}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { diffLines, diffChars, diffWords, createTwoFilesPatch, createPatch, applyPatch, parsePatch } from 'diff';
|
|
2
|
+
|
|
3
|
+
// src/diff/compare.ts
|
|
4
|
+
function compare(a, b, options = {}) {
|
|
5
|
+
const type = options.type ?? "line";
|
|
6
|
+
let rawChanges;
|
|
7
|
+
switch (type) {
|
|
8
|
+
case "word":
|
|
9
|
+
rawChanges = diffWords(a, b, {
|
|
10
|
+
ignoreWhitespace: options.ignoreWhitespace
|
|
11
|
+
});
|
|
12
|
+
break;
|
|
13
|
+
case "char":
|
|
14
|
+
rawChanges = diffChars(a, b);
|
|
15
|
+
break;
|
|
16
|
+
case "line":
|
|
17
|
+
default:
|
|
18
|
+
rawChanges = diffLines(a, b, {
|
|
19
|
+
ignoreWhitespace: options.ignoreWhitespace
|
|
20
|
+
});
|
|
21
|
+
break;
|
|
22
|
+
}
|
|
23
|
+
const changes = rawChanges.map((c) => ({
|
|
24
|
+
type: c.added ? "added" : c.removed ? "removed" : "unchanged",
|
|
25
|
+
value: c.value,
|
|
26
|
+
count: c.count ?? 0
|
|
27
|
+
}));
|
|
28
|
+
let additions = 0;
|
|
29
|
+
let deletions = 0;
|
|
30
|
+
let unchanged = 0;
|
|
31
|
+
for (const change of changes) {
|
|
32
|
+
switch (change.type) {
|
|
33
|
+
case "added":
|
|
34
|
+
additions += change.count;
|
|
35
|
+
break;
|
|
36
|
+
case "removed":
|
|
37
|
+
deletions += change.count;
|
|
38
|
+
break;
|
|
39
|
+
case "unchanged":
|
|
40
|
+
unchanged += change.count;
|
|
41
|
+
break;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return {
|
|
45
|
+
identical: additions === 0 && deletions === 0,
|
|
46
|
+
changes,
|
|
47
|
+
stats: { additions, deletions, unchanged }
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
function unifiedDiff(a, b, options = {}) {
|
|
51
|
+
const fromFile = options.fromFile ?? "a";
|
|
52
|
+
const toFile = options.toFile ?? "b";
|
|
53
|
+
const context = options.context ?? 3;
|
|
54
|
+
return createTwoFilesPatch(fromFile, toFile, a, b, void 0, void 0, {
|
|
55
|
+
context
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
function createUnifiedPatch(fileName, original, modified, context = 3) {
|
|
59
|
+
return createPatch(fileName, original, modified, void 0, void 0, {
|
|
60
|
+
context
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
function apply(input, patch, options = {}) {
|
|
64
|
+
const result = applyPatch(input, patch, {
|
|
65
|
+
fuzzFactor: options.fuzz ?? 0
|
|
66
|
+
});
|
|
67
|
+
if (result === false) {
|
|
68
|
+
throw new Error("Failed to apply patch: patch does not match the input");
|
|
69
|
+
}
|
|
70
|
+
return result;
|
|
71
|
+
}
|
|
72
|
+
function parsePatchFile(patch) {
|
|
73
|
+
return parsePatch(patch);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
export { apply, compare, createUnifiedPatch, parsePatchFile, unifiedDiff };
|
|
77
|
+
//# sourceMappingURL=index.mjs.map
|
|
78
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/diff/compare.ts","../../src/diff/unified.ts","../../src/diff/patch.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["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"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { E as ExcelConvertFormat, a as ExcelConvertOptions, b as ExcelExportOptions, c as ExcelParseOptions, d as ExcelParseResult, e as ExcelStats, S as SheetInfo, f as convert, g as createExcel, h as getSheets, j as getStats, p as parse } from '../index-CQ1EukC4.mjs';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { E as ExcelConvertFormat, a as ExcelConvertOptions, b as ExcelExportOptions, c as ExcelParseOptions, d as ExcelParseResult, e as ExcelStats, S as SheetInfo, f as convert, g as createExcel, h as getSheets, j as getStats, p as parse } from '../index-CQ1EukC4.js';
|