pythonlib 0.1.0 → 0.2.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 +41 -138
- package/dist/{chunk-3CSEXTA7.js → chunk-4QG3772L.js} +53 -53
- package/dist/chunk-4QG3772L.js.map +1 -0
- package/dist/{chunk-OMQNGE6T.js → chunk-4SZT4HJI.js} +32 -27
- package/dist/chunk-4SZT4HJI.js.map +1 -0
- package/dist/{chunk-IVYYI2VR.js → chunk-6POEDI34.js} +1 -1
- package/dist/chunk-6POEDI34.js.map +1 -0
- package/dist/{chunk-P3SGIF72.js → chunk-6VQ7ITWO.js} +6 -6
- package/dist/chunk-6VQ7ITWO.js.map +1 -0
- package/dist/{chunk-V63LKSA3.js → chunk-7TH4FCVQ.js} +24 -24
- package/dist/chunk-7TH4FCVQ.js.map +1 -0
- package/dist/{chunk-TJFGYXBJ.js → chunk-BDBX5BG4.js} +63 -61
- package/dist/chunk-BDBX5BG4.js.map +1 -0
- package/dist/{chunk-WAONBJE5.js → chunk-H76SKASU.js} +36 -36
- package/dist/chunk-H76SKASU.js.map +1 -0
- package/dist/{chunk-TOI6IG3T.js → chunk-HQ42WNKZ.js} +43 -16
- package/dist/chunk-HQ42WNKZ.js.map +1 -0
- package/dist/{chunk-HA5Y7PKO.js → chunk-KRRY534Q.js} +36 -35
- package/dist/chunk-KRRY534Q.js.map +1 -0
- package/dist/{chunk-UFMTN4T4.js → chunk-XGT3VOIZ.js} +5 -5
- package/dist/chunk-XGT3VOIZ.js.map +1 -0
- package/dist/{collections-xN9Gi0TA.d.ts → collections-CJur5Wg-.d.ts} +5 -3
- package/dist/collections.d.ts +1 -1
- package/dist/collections.js +1 -1
- package/dist/{datetime-DRwFAiGV.d.ts → datetime-Bpce8gG2.d.ts} +17 -15
- package/dist/datetime.d.ts +1 -1
- package/dist/datetime.js +1 -1
- package/dist/{functools-St5GqpKG.d.ts → functools-NrsZAqJk.d.ts} +42 -26
- package/dist/functools.d.ts +1 -1
- package/dist/functools.js +19 -17
- package/dist/index.d.ts +56 -158
- package/dist/index.js +45 -137
- package/dist/index.js.map +1 -1
- package/dist/{itertools-Bj8XivI6.d.ts → itertools-Sjl1LB_0.d.ts} +35 -17
- package/dist/itertools.d.ts +1 -1
- package/dist/itertools.js +15 -11
- package/dist/{json-Xpk0kwSd.d.ts → json-DAlvCadU.d.ts} +7 -5
- package/dist/json.d.ts +1 -1
- package/dist/json.js +1 -1
- package/dist/{math-BrT4Aw3E.d.ts → math-DwEGjjQ-.d.ts} +2 -0
- package/dist/math.d.ts +1 -1
- package/dist/math.js +1 -1
- package/dist/{os-FRSJbEUH.d.ts → os-C6Nt7Ijx.d.ts} +45 -42
- package/dist/os.d.ts +1 -1
- package/dist/os.js +23 -23
- package/dist/{random-D5S5iSV3.d.ts → random-BJv_rSpL.d.ts} +24 -22
- package/dist/random.d.ts +1 -1
- package/dist/random.js +21 -21
- package/dist/{re-DSxiURqN.d.ts → re-B1CHCgyr.d.ts} +17 -15
- package/dist/re.d.ts +1 -1
- package/dist/re.js +7 -7
- package/dist/string.d.ts +51 -48
- package/dist/string.js +13 -13
- package/package.json +20 -3
- package/dist/chunk-3CSEXTA7.js.map +0 -1
- package/dist/chunk-HA5Y7PKO.js.map +0 -1
- package/dist/chunk-IVYYI2VR.js.map +0 -1
- package/dist/chunk-OMQNGE6T.js.map +0 -1
- package/dist/chunk-P3SGIF72.js.map +0 -1
- package/dist/chunk-TJFGYXBJ.js.map +0 -1
- package/dist/chunk-TOI6IG3T.js.map +0 -1
- package/dist/chunk-UFMTN4T4.js.map +0 -1
- package/dist/chunk-V63LKSA3.js.map +0 -1
- package/dist/chunk-WAONBJE5.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/datetime.ts"],"sourcesContent":["/**\n * Python datetime module for TypeScript\n *\n * Provides date and time handling matching Python's datetime module.\n *\n * @see {@link https://docs.python.org/3/library/datetime.html | Python datetime documentation}\n */\n\n// ============================================================================\n// timedelta class\n// ============================================================================\n\nexport class timedelta {\n readonly days: number\n readonly seconds: number\n readonly microseconds: number\n\n constructor(options?: {\n days?: number\n seconds?: number\n microseconds?: number\n milliseconds?: number\n minutes?: number\n hours?: number\n weeks?: number\n }) {\n let totalMicroseconds = 0\n\n if (options) {\n totalMicroseconds += (options.weeks ?? 0) * 7 * 24 * 60 * 60 * 1000000\n totalMicroseconds += (options.days ?? 0) * 24 * 60 * 60 * 1000000\n totalMicroseconds += (options.hours ?? 0) * 60 * 60 * 1000000\n totalMicroseconds += (options.minutes ?? 0) * 60 * 1000000\n totalMicroseconds += (options.seconds ?? 0) * 1000000\n totalMicroseconds += (options.milliseconds ?? 0) * 1000\n totalMicroseconds += options.microseconds ?? 0\n }\n\n // Normalize to days, seconds, microseconds\n const sign = totalMicroseconds < 0 ? -1 : 1\n totalMicroseconds = Math.abs(totalMicroseconds)\n\n this.microseconds = sign * (totalMicroseconds % 1000000)\n totalMicroseconds = Math.floor(totalMicroseconds / 1000000)\n\n this.seconds = sign * (totalMicroseconds % (24 * 60 * 60))\n this.days = sign * Math.floor(totalMicroseconds / (24 * 60 * 60))\n\n // Normalize negative values\n if (this.microseconds < 0) {\n ;(this as { microseconds: number }).microseconds += 1000000\n ;(this as { seconds: number }).seconds -= 1\n }\n if (this.seconds < 0) {\n ;(this as { seconds: number }).seconds += 24 * 60 * 60\n ;(this as { days: number }).days -= 1\n }\n }\n\n totalSeconds(): number {\n return this.days * 24 * 60 * 60 + this.seconds + this.microseconds / 1000000\n }\n\n toString(): string {\n const parts: string[] = []\n if (this.days !== 0) {\n parts.push(`${String(this.days)} day${Math.abs(this.days) !== 1 ? \"s\" : \"\"}`)\n }\n const hours = Math.floor(this.seconds / 3600)\n const minutes = Math.floor((this.seconds % 3600) / 60)\n const secs = this.seconds % 60\n const timeStr = `${String(hours)}:${String(minutes).padStart(2, \"0\")}:${String(secs).padStart(2, \"0\")}`\n if (this.microseconds > 0) {\n parts.push(`${timeStr}.${String(this.microseconds).padStart(6, \"0\")}`)\n } else {\n parts.push(timeStr)\n }\n return parts.join(\", \")\n }\n\n add(other: timedelta): timedelta {\n return new timedelta({\n days: this.days + other.days,\n seconds: this.seconds + other.seconds,\n microseconds: this.microseconds + other.microseconds\n })\n }\n\n subtract(other: timedelta): timedelta {\n return new timedelta({\n days: this.days - other.days,\n seconds: this.seconds - other.seconds,\n microseconds: this.microseconds - other.microseconds\n })\n }\n\n multiply(n: number): timedelta {\n return new timedelta({\n microseconds: Math.round(this.totalSeconds() * 1000000 * n)\n })\n }\n\n static min = new timedelta({ days: -999999999 })\n static max = new timedelta({\n days: 999999999,\n hours: 23,\n minutes: 59,\n seconds: 59,\n microseconds: 999999\n })\n static resolution = new timedelta({ microseconds: 1 })\n}\n\n// ============================================================================\n// date class\n// ============================================================================\n\nexport class date {\n readonly year: number\n readonly month: number\n readonly day: number\n\n constructor(year: number, month: number, day: number) {\n if (month < 1 || month > 12) {\n throw new Error(\"month must be in 1..12\")\n }\n const maxDay = new Date(year, month, 0).getDate()\n if (day < 1 || day > maxDay) {\n throw new Error(`day is out of range for month`)\n }\n this.year = year\n this.month = month\n this.day = day\n }\n\n static today(): date {\n const now = new Date()\n return new date(now.getFullYear(), now.getMonth() + 1, now.getDate())\n }\n\n static fromTimestamp(timestamp: number): date {\n const d = new Date(timestamp * 1000)\n return new date(d.getFullYear(), d.getMonth() + 1, d.getDate())\n }\n\n static fromIsoFormat(dateString: string): date {\n const match = /^(\\d{4})-(\\d{2})-(\\d{2})$/.exec(dateString)\n if (!match || !match[1] || !match[2] || !match[3]) {\n throw new Error(`Invalid isoFormat string: '${dateString}'`)\n }\n return new date(parseInt(match[1]), parseInt(match[2]), parseInt(match[3]))\n }\n\n static fromOrdinal(ordinal: number): date {\n // Days since year 1\n const d = new Date(Date.UTC(1, 0, ordinal))\n return new date(d.getUTCFullYear(), d.getUTCMonth() + 1, d.getUTCDate())\n }\n\n replace(options?: { year?: number; month?: number; day?: number }): date {\n return new date(\n options?.year ?? this.year,\n options?.month ?? this.month,\n options?.day ?? this.day\n )\n }\n\n toOrdinal(): number {\n const d = new Date(Date.UTC(this.year, this.month - 1, this.day))\n const epoch = new Date(Date.UTC(1, 0, 1))\n return Math.floor((d.getTime() - epoch.getTime()) / (24 * 60 * 60 * 1000)) + 1\n }\n\n weekday(): number {\n // Monday is 0, Sunday is 6\n const d = new Date(this.year, this.month - 1, this.day)\n return (d.getDay() + 6) % 7\n }\n\n isoWeekday(): number {\n // Monday is 1, Sunday is 7\n return this.weekday() + 1\n }\n\n isoCalendar(): [number, number, number] {\n const d = new Date(this.year, this.month - 1, this.day)\n const dayOfYear = Math.floor(\n (d.getTime() - new Date(this.year, 0, 0).getTime()) / (24 * 60 * 60 * 1000)\n )\n const jan1 = new Date(this.year, 0, 1)\n const jan1Weekday = (jan1.getDay() + 6) % 7 // Monday = 0\n\n let week = Math.floor((dayOfYear + jan1Weekday - 1) / 7)\n let year = this.year\n\n if (week < 1) {\n year -= 1\n week = 52\n } else if (week > 52) {\n const dec31 = new Date(this.year, 11, 31)\n const dec31Weekday = (dec31.getDay() + 6) % 7\n if (dec31Weekday < 3) {\n week = 1\n year += 1\n }\n }\n\n return [year, week, this.isoWeekday()]\n }\n\n isoFormat(): string {\n return `${String(this.year)}-${String(this.month).padStart(2, \"0\")}-${String(this.day).padStart(2, \"0\")}`\n }\n\n strftime(format: string): string {\n return strftime(format, new datetime(this.year, this.month, this.day, 0, 0, 0, 0))\n }\n\n toString(): string {\n return this.isoFormat()\n }\n\n __add__(delta: timedelta): date {\n const d = new Date(this.year, this.month - 1, this.day + delta.days)\n return new date(d.getFullYear(), d.getMonth() + 1, d.getDate())\n }\n\n __sub__(other: date | timedelta): date | timedelta {\n if (other instanceof timedelta) {\n const d = new Date(this.year, this.month - 1, this.day - other.days)\n return new date(d.getFullYear(), d.getMonth() + 1, d.getDate())\n }\n // other is a date\n const d1 = new Date(this.year, this.month - 1, this.day)\n const d2 = new Date(other.year, other.month - 1, other.day)\n const diffMs = d1.getTime() - d2.getTime()\n return new timedelta({ days: Math.floor(diffMs / (24 * 60 * 60 * 1000)) })\n }\n\n __lt__(other: date): boolean {\n return this.toOrdinal() < other.toOrdinal()\n }\n\n __le__(other: date): boolean {\n return this.toOrdinal() <= other.toOrdinal()\n }\n\n __gt__(other: date): boolean {\n return this.toOrdinal() > other.toOrdinal()\n }\n\n __ge__(other: date): boolean {\n return this.toOrdinal() >= other.toOrdinal()\n }\n\n __eq__(other: date): boolean {\n return this.toOrdinal() === other.toOrdinal()\n }\n\n static min = new date(1, 1, 1)\n static max = new date(9999, 12, 31)\n static resolution = new timedelta({ days: 1 })\n}\n\n// ============================================================================\n// time class\n// ============================================================================\n\nexport class time {\n readonly hour: number\n readonly minute: number\n readonly second: number\n readonly microsecond: number\n readonly tzinfo: null\n\n constructor(hour: number = 0, minute: number = 0, second: number = 0, microsecond: number = 0) {\n if (hour < 0 || hour > 23) throw new Error(\"hour must be in 0..23\")\n if (minute < 0 || minute > 59) throw new Error(\"minute must be in 0..59\")\n if (second < 0 || second > 59) throw new Error(\"second must be in 0..59\")\n if (microsecond < 0 || microsecond > 999999) throw new Error(\"microsecond must be in 0..999999\")\n\n this.hour = hour\n this.minute = minute\n this.second = second\n this.microsecond = microsecond\n this.tzinfo = null\n }\n\n static fromIsoFormat(timeString: string): time {\n const match = /^(\\d{2}):(\\d{2}):(\\d{2})(?:\\.(\\d+))?$/.exec(timeString)\n if (!match || !match[1] || !match[2] || !match[3]) {\n throw new Error(`Invalid isoFormat string: '${timeString}'`)\n }\n const microsecond = match[4] ? parseInt(match[4].padEnd(6, \"0\").slice(0, 6)) : 0\n return new time(parseInt(match[1]), parseInt(match[2]), parseInt(match[3]), microsecond)\n }\n\n replace(options?: {\n hour?: number\n minute?: number\n second?: number\n microsecond?: number\n }): time {\n return new time(\n options?.hour ?? this.hour,\n options?.minute ?? this.minute,\n options?.second ?? this.second,\n options?.microsecond ?? this.microsecond\n )\n }\n\n isoFormat(\n timespec: \"auto\" | \"hours\" | \"minutes\" | \"seconds\" | \"milliseconds\" | \"microseconds\" = \"auto\"\n ): string {\n const hh = String(this.hour).padStart(2, \"0\")\n const mm = String(this.minute).padStart(2, \"0\")\n const ss = String(this.second).padStart(2, \"0\")\n\n switch (timespec) {\n case \"hours\":\n return hh\n case \"minutes\":\n return `${hh}:${mm}`\n case \"seconds\":\n return `${hh}:${mm}:${ss}`\n case \"milliseconds\":\n return `${hh}:${mm}:${ss}.${String(Math.floor(this.microsecond / 1000)).padStart(3, \"0\")}`\n case \"microseconds\":\n return `${hh}:${mm}:${ss}.${String(this.microsecond).padStart(6, \"0\")}`\n case \"auto\":\n default:\n if (this.microsecond > 0) {\n return `${hh}:${mm}:${ss}.${String(this.microsecond).padStart(6, \"0\")}`\n }\n return `${hh}:${mm}:${ss}`\n }\n }\n\n strftime(format: string): string {\n return strftime(\n format,\n new datetime(1900, 1, 1, this.hour, this.minute, this.second, this.microsecond)\n )\n }\n\n toString(): string {\n return this.isoFormat()\n }\n\n static min = new time(0, 0, 0, 0)\n static max = new time(23, 59, 59, 999999)\n static resolution = new timedelta({ microseconds: 1 })\n}\n\n// ============================================================================\n// datetime class\n// ============================================================================\n\nexport class datetime extends date {\n readonly hour: number\n readonly minute: number\n readonly second: number\n readonly microsecond: number\n readonly tzinfo: null\n\n constructor(\n year: number,\n month: number,\n day: number,\n hour: number = 0,\n minute: number = 0,\n second: number = 0,\n microsecond: number = 0\n ) {\n super(year, month, day)\n if (hour < 0 || hour > 23) throw new Error(\"hour must be in 0..23\")\n if (minute < 0 || minute > 59) throw new Error(\"minute must be in 0..59\")\n if (second < 0 || second > 59) throw new Error(\"second must be in 0..59\")\n if (microsecond < 0 || microsecond > 999999) throw new Error(\"microsecond must be in 0..999999\")\n\n this.hour = hour\n this.minute = minute\n this.second = second\n this.microsecond = microsecond\n this.tzinfo = null\n }\n\n static override today(): datetime {\n return datetime.now()\n }\n\n static now(): datetime {\n const d = new Date()\n return new datetime(\n d.getFullYear(),\n d.getMonth() + 1,\n d.getDate(),\n d.getHours(),\n d.getMinutes(),\n d.getSeconds(),\n d.getMilliseconds() * 1000\n )\n }\n\n static utcNow(): datetime {\n const d = new Date()\n return new datetime(\n d.getUTCFullYear(),\n d.getUTCMonth() + 1,\n d.getUTCDate(),\n d.getUTCHours(),\n d.getUTCMinutes(),\n d.getUTCSeconds(),\n d.getUTCMilliseconds() * 1000\n )\n }\n\n static override fromTimestamp(timestamp: number): datetime {\n const d = new Date(timestamp * 1000)\n return new datetime(\n d.getFullYear(),\n d.getMonth() + 1,\n d.getDate(),\n d.getHours(),\n d.getMinutes(),\n d.getSeconds(),\n d.getMilliseconds() * 1000\n )\n }\n\n static utcfromTimestamp(timestamp: number): datetime {\n const d = new Date(timestamp * 1000)\n return new datetime(\n d.getUTCFullYear(),\n d.getUTCMonth() + 1,\n d.getUTCDate(),\n d.getUTCHours(),\n d.getUTCMinutes(),\n d.getUTCSeconds(),\n d.getUTCMilliseconds() * 1000\n )\n }\n\n static override fromIsoFormat(s: string): datetime {\n // Parse ISO format: YYYY-MM-DD[T]HH:MM:SS[.ffffff]\n const match = /^(\\d{4})-(\\d{2})-(\\d{2})[T ](\\d{2}):(\\d{2}):(\\d{2})(?:\\.(\\d+))?$/.exec(s)\n if (!match || !match[1] || !match[2] || !match[3] || !match[4] || !match[5] || !match[6]) {\n // Try date-only format\n const dateMatch = /^(\\d{4})-(\\d{2})-(\\d{2})$/.exec(s)\n if (dateMatch && dateMatch[1] && dateMatch[2] && dateMatch[3]) {\n return new datetime(parseInt(dateMatch[1]), parseInt(dateMatch[2]), parseInt(dateMatch[3]))\n }\n throw new Error(`Invalid isoFormat string: '${s}'`)\n }\n const microsecond = match[7] ? parseInt(match[7].padEnd(6, \"0\").slice(0, 6)) : 0\n return new datetime(\n parseInt(match[1]),\n parseInt(match[2]),\n parseInt(match[3]),\n parseInt(match[4]),\n parseInt(match[5]),\n parseInt(match[6]),\n microsecond\n )\n }\n\n static combine(d: date, t: time): datetime {\n return new datetime(d.year, d.month, d.day, t.hour, t.minute, t.second, t.microsecond)\n }\n\n static strptime(dateString: string, format: string): datetime {\n return strptime(dateString, format)\n }\n\n override replace(options?: {\n year?: number\n month?: number\n day?: number\n hour?: number\n minute?: number\n second?: number\n microsecond?: number\n }): datetime {\n return new datetime(\n options?.year ?? this.year,\n options?.month ?? this.month,\n options?.day ?? this.day,\n options?.hour ?? this.hour,\n options?.minute ?? this.minute,\n options?.second ?? this.second,\n options?.microsecond ?? this.microsecond\n )\n }\n\n date(): date {\n return new date(this.year, this.month, this.day)\n }\n\n time(): time {\n return new time(this.hour, this.minute, this.second, this.microsecond)\n }\n\n timestamp(): number {\n const d = new Date(\n this.year,\n this.month - 1,\n this.day,\n this.hour,\n this.minute,\n this.second,\n this.microsecond / 1000\n )\n return d.getTime() / 1000\n }\n\n override isoFormat(\n sep: string = \"T\",\n timespec: \"auto\" | \"hours\" | \"minutes\" | \"seconds\" | \"milliseconds\" | \"microseconds\" = \"auto\"\n ): string {\n const dateStr = super.isoFormat()\n const t = new time(this.hour, this.minute, this.second, this.microsecond)\n return `${dateStr}${sep}${t.isoFormat(timespec)}`\n }\n\n ctime(): string {\n const days = [\"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"]\n const months = [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\"\n ]\n const dayName = days[this.weekday()] ?? \"???\"\n const monthName = months[this.month - 1] ?? \"???\"\n return `${dayName} ${monthName} ${String(this.day).padStart(2, \" \")} ${String(this.hour).padStart(2, \"0\")}:${String(this.minute).padStart(2, \"0\")}:${String(this.second).padStart(2, \"0\")} ${String(this.year)}`\n }\n\n override strftime(format: string): string {\n return strftime(format, this)\n }\n\n override toString(): string {\n return this.isoFormat(\" \")\n }\n\n override __add__(delta: timedelta): datetime {\n const totalMicroseconds =\n this.timestamp() * 1000000 + this.microsecond + delta.totalSeconds() * 1000000\n return datetime.fromTimestamp(totalMicroseconds / 1000000)\n }\n\n override __sub__(other: datetime | date | timedelta): datetime | timedelta {\n if (other instanceof timedelta) {\n const totalMicroseconds =\n this.timestamp() * 1000000 + this.microsecond - other.totalSeconds() * 1000000\n return datetime.fromTimestamp(totalMicroseconds / 1000000)\n }\n if (other instanceof datetime) {\n const diff = this.timestamp() - other.timestamp()\n const microDiff = this.microsecond - other.microsecond\n return new timedelta({ seconds: diff, microseconds: microDiff })\n }\n // other is a date\n const d1 = new Date(this.year, this.month - 1, this.day)\n const d2 = new Date(other.year, other.month - 1, other.day)\n const diffMs = d1.getTime() - d2.getTime()\n return new timedelta({ days: Math.floor(diffMs / (24 * 60 * 60 * 1000)) })\n }\n\n static override min = new datetime(1, 1, 1, 0, 0, 0, 0)\n static override max = new datetime(9999, 12, 31, 23, 59, 59, 999999)\n static override resolution = new timedelta({ microseconds: 1 })\n}\n\n// ============================================================================\n// strftime and strptime\n// ============================================================================\n\nconst WEEKDAY_NAMES = [\"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\", \"Sunday\"]\nconst WEEKDAY_ABBR = [\"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"]\nconst MONTH_NAMES = [\n \"\",\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\"\n]\nconst MONTH_ABBR = [\n \"\",\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\"\n]\n\nexport function strftime(format: string, dt: datetime): string {\n const pad = (n: number, width: number = 2) => String(n).padStart(width, \"0\")\n\n return format.replace(/%([aAbBcdHIjmMpSUwWxXyYzZ%])/g, (_, code: string) => {\n switch (code) {\n case \"a\":\n return WEEKDAY_ABBR[dt.weekday()] ?? \"\"\n case \"A\":\n return WEEKDAY_NAMES[dt.weekday()] ?? \"\"\n case \"b\":\n return MONTH_ABBR[dt.month] ?? \"\"\n case \"B\":\n return MONTH_NAMES[dt.month] ?? \"\"\n case \"c\":\n return dt.ctime()\n case \"d\":\n return pad(dt.day)\n case \"H\":\n return pad(dt.hour)\n case \"I\":\n return pad(dt.hour % 12 || 12)\n case \"j\": {\n const start = new Date(dt.year, 0, 0)\n const diff = new Date(dt.year, dt.month - 1, dt.day).getTime() - start.getTime()\n const dayOfYear = Math.floor(diff / (24 * 60 * 60 * 1000))\n return pad(dayOfYear, 3)\n }\n case \"m\":\n return pad(dt.month)\n case \"M\":\n return pad(dt.minute)\n case \"p\":\n return dt.hour < 12 ? \"AM\" : \"PM\"\n case \"S\":\n return pad(dt.second)\n case \"U\": {\n // Week number (Sunday as first day)\n const start = new Date(dt.year, 0, 1)\n const diff = new Date(dt.year, dt.month - 1, dt.day).getTime() - start.getTime()\n const dayOfYear = Math.floor(diff / (24 * 60 * 60 * 1000))\n const firstSunday = (7 - start.getDay()) % 7\n return pad(Math.floor((dayOfYear - firstSunday + 7) / 7))\n }\n case \"w\":\n return String((dt.weekday() + 1) % 7)\n case \"W\": {\n // Week number (Monday as first day)\n const start = new Date(dt.year, 0, 1)\n const diff = new Date(dt.year, dt.month - 1, dt.day).getTime() - start.getTime()\n const dayOfYear = Math.floor(diff / (24 * 60 * 60 * 1000))\n const firstMonday = (8 - start.getDay()) % 7\n return pad(Math.floor((dayOfYear - firstMonday + 7) / 7))\n }\n case \"x\":\n return `${pad(dt.month)}/${pad(dt.day)}/${pad(dt.year % 100)}`\n case \"X\":\n return `${pad(dt.hour)}:${pad(dt.minute)}:${pad(dt.second)}`\n case \"y\":\n return pad(dt.year % 100)\n case \"Y\":\n return String(dt.year)\n case \"z\":\n return \"\" // No timezone info\n case \"Z\":\n return \"\" // No timezone name\n case \"%\":\n return \"%\"\n default:\n return `%${code}`\n }\n })\n}\n\nexport function strptime(dateString: string, format: string): datetime {\n let year = 1900,\n month = 1,\n day = 1,\n hour = 0,\n minute = 0,\n second = 0,\n microsecond = 0\n\n // Build regex from format\n let pos = 0\n let formatPos = 0\n\n while (formatPos < format.length) {\n if (format[formatPos] === \"%\") {\n formatPos++\n const code = format[formatPos]\n formatPos++\n\n switch (code) {\n case \"Y\": {\n const match = /^\\d{4}/.exec(dateString.slice(pos))\n if (!match) throw new Error(\"Invalid year\")\n year = parseInt(match[0])\n pos += 4\n break\n }\n case \"y\": {\n const match = /^\\d{2}/.exec(dateString.slice(pos))\n if (!match) throw new Error(\"Invalid year\")\n const y = parseInt(match[0])\n year = y >= 69 ? 1900 + y : 2000 + y\n pos += 2\n break\n }\n case \"m\": {\n const match = /^\\d{1,2}/.exec(dateString.slice(pos))\n if (!match) throw new Error(\"Invalid month\")\n month = parseInt(match[0])\n pos += match[0].length\n break\n }\n case \"d\": {\n const match = /^\\d{1,2}/.exec(dateString.slice(pos))\n if (!match) throw new Error(\"Invalid day\")\n day = parseInt(match[0])\n pos += match[0].length\n break\n }\n case \"H\": {\n const match = /^\\d{1,2}/.exec(dateString.slice(pos))\n if (!match) throw new Error(\"Invalid hour\")\n hour = parseInt(match[0])\n pos += match[0].length\n break\n }\n case \"M\": {\n const match = /^\\d{1,2}/.exec(dateString.slice(pos))\n if (!match) throw new Error(\"Invalid minute\")\n minute = parseInt(match[0])\n pos += match[0].length\n break\n }\n case \"S\": {\n const match = /^\\d{1,2}/.exec(dateString.slice(pos))\n if (!match) throw new Error(\"Invalid second\")\n second = parseInt(match[0])\n pos += match[0].length\n break\n }\n case \"f\": {\n const match = /^\\d{1,6}/.exec(dateString.slice(pos))\n if (!match) throw new Error(\"Invalid microsecond\")\n microsecond = parseInt(match[0].padEnd(6, \"0\"))\n pos += match[0].length\n break\n }\n case \"b\":\n case \"B\": {\n const names = code === \"b\" ? MONTH_ABBR : MONTH_NAMES\n let found = false\n for (let i = 1; i <= 12; i++) {\n const name = names[i]\n if (name && dateString.slice(pos).toLowerCase().startsWith(name.toLowerCase())) {\n month = i\n pos += name.length\n found = true\n break\n }\n }\n if (!found) throw new Error(\"Invalid month name\")\n break\n }\n /* c8 ignore start - rare edge cases */\n case \"%\":\n if (dateString[pos] !== \"%\") throw new Error(\"Expected %\")\n pos++\n break\n default:\n // Skip unknown codes\n break\n /* c8 ignore stop */\n }\n } else {\n // Literal character\n const expectedChar = format[formatPos] ?? \"\"\n if (dateString[pos] !== expectedChar) {\n throw new Error(`Expected '${expectedChar}' at position ${String(pos)}`)\n }\n pos++\n formatPos++\n }\n }\n\n return new datetime(year, month, day, hour, minute, second, microsecond)\n}\n\n// ============================================================================\n// Module-level constants\n// ============================================================================\n\nexport const MINYEAR = 1\nexport const MAXYEAR = 9999\n"],"mappings":"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","names":[]}
|
|
@@ -131,7 +131,7 @@ var deque = class {
|
|
|
131
131
|
/**
|
|
132
132
|
* Add element to the left end
|
|
133
133
|
*/
|
|
134
|
-
|
|
134
|
+
appendLeft(x) {
|
|
135
135
|
this.items.unshift(x);
|
|
136
136
|
if (this.maxlen !== null && this.items.length > this.maxlen) {
|
|
137
137
|
this.items.pop();
|
|
@@ -146,7 +146,7 @@ var deque = class {
|
|
|
146
146
|
/**
|
|
147
147
|
* Remove and return element from the left end
|
|
148
148
|
*/
|
|
149
|
-
|
|
149
|
+
popLeft() {
|
|
150
150
|
return this.items.shift();
|
|
151
151
|
}
|
|
152
152
|
/**
|
|
@@ -160,9 +160,9 @@ var deque = class {
|
|
|
160
160
|
/**
|
|
161
161
|
* Extend the left side with elements from iterable
|
|
162
162
|
*/
|
|
163
|
-
|
|
163
|
+
extendLeft(iterable) {
|
|
164
164
|
for (const x of iterable) {
|
|
165
|
-
this.
|
|
165
|
+
this.appendLeft(x);
|
|
166
166
|
}
|
|
167
167
|
}
|
|
168
168
|
/**
|
|
@@ -212,4 +212,4 @@ export {
|
|
|
212
212
|
deque,
|
|
213
213
|
collections_exports
|
|
214
214
|
};
|
|
215
|
-
//# sourceMappingURL=chunk-
|
|
215
|
+
//# sourceMappingURL=chunk-XGT3VOIZ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/collections.ts"],"sourcesContent":["/**\n * Python collections module for TypeScript\n *\n * Provides specialized container datatypes.\n *\n * @see {@link https://docs.python.org/3/library/collections.html | Python collections documentation}\n */\n\n/**\n * Counter: a dict subclass for counting hashable objects\n *\n * Elements are stored as keys and their counts are stored as values.\n */\nexport class Counter<T> extends Map<T, number> {\n constructor(iterable?: Iterable<T>) {\n super()\n if (iterable) {\n for (const item of iterable) {\n this.increment(item)\n }\n }\n }\n\n /**\n * Increment the count for a key\n */\n increment(key: T, n: number = 1): void {\n this.set(key, (super.get(key) ?? 0) + n)\n }\n\n /**\n * Get the count for a key (returns 0 for missing keys)\n */\n get(key: T): number {\n return super.get(key) ?? 0\n }\n\n /**\n * List the n most common elements and their counts\n * If n is undefined, list all elements from most common to least\n */\n mostCommon(n?: number): [T, number][] {\n const sorted = [...this.entries()].sort((a, b) => b[1] - a[1])\n return n !== undefined ? sorted.slice(0, n) : sorted\n }\n\n /**\n * Iterate over elements, repeating each as many times as its count\n */\n *elements(): Generator<T> {\n for (const [key, count] of this) {\n for (let i = 0; i < count; i++) {\n yield key\n }\n }\n }\n\n /**\n * Subtract counts from another iterable or Counter\n */\n subtract(iterable: Iterable<T> | Counter<T>): void {\n if (iterable instanceof Counter) {\n for (const [key, count] of iterable) {\n this.set(key, (super.get(key) ?? 0) - count)\n }\n } else {\n for (const item of iterable) {\n this.set(item, (super.get(item) ?? 0) - 1)\n }\n }\n }\n\n /**\n * Add counts from another iterable or Counter\n */\n update(iterable: Iterable<T> | Counter<T>): void {\n if (iterable instanceof Counter) {\n for (const [key, count] of iterable) {\n this.increment(key, count)\n }\n } else {\n for (const item of iterable) {\n this.increment(item)\n }\n }\n }\n\n /**\n * Return total count of all elements\n */\n total(): number {\n let sum = 0\n for (const count of this.values()) {\n sum += count\n }\n return sum\n }\n}\n\n/**\n * defaultdict: a dict that provides default values for missing keys\n *\n * Uses a Proxy to automatically call the factory function for missing keys.\n */\nexport function defaultdict<K, V>(factory: () => V): Map<K, V> & { get(key: K): V } {\n const map = new Map<K, V>()\n return new Proxy(map, {\n get(target, prop, receiver): unknown {\n if (prop === \"get\") {\n return (key: K): V => {\n if (!target.has(key)) {\n const defaultValue = factory()\n target.set(key, defaultValue)\n return defaultValue\n }\n return target.get(key) as V\n }\n }\n const val: unknown = Reflect.get(target, prop, receiver)\n if (typeof val === \"function\") {\n return (val as (...args: unknown[]) => unknown).bind(target)\n }\n return val\n }\n }) as Map<K, V> & { get(key: K): V }\n}\n\n/**\n * deque: double-ended queue with O(1) append and pop from both ends\n */\nexport class deque<T> {\n private items: T[]\n private maxlen: number | null\n\n constructor(iterable?: Iterable<T>, maxlen?: number) {\n this.items = iterable ? [...iterable] : []\n this.maxlen = maxlen ?? null\n if (this.maxlen !== null && this.items.length > this.maxlen) {\n this.items = this.items.slice(-this.maxlen)\n }\n }\n\n /**\n * Add element to the right end\n */\n append(x: T): void {\n this.items.push(x)\n if (this.maxlen !== null && this.items.length > this.maxlen) {\n this.items.shift()\n }\n }\n\n /**\n * Add element to the left end\n */\n appendLeft(x: T): void {\n this.items.unshift(x)\n if (this.maxlen !== null && this.items.length > this.maxlen) {\n this.items.pop()\n }\n }\n\n /**\n * Remove and return element from the right end\n */\n pop(): T | undefined {\n return this.items.pop()\n }\n\n /**\n * Remove and return element from the left end\n */\n popLeft(): T | undefined {\n return this.items.shift()\n }\n\n /**\n * Extend the right side with elements from iterable\n */\n extend(iterable: Iterable<T>): void {\n for (const x of iterable) {\n this.append(x)\n }\n }\n\n /**\n * Extend the left side with elements from iterable\n */\n extendLeft(iterable: Iterable<T>): void {\n for (const x of iterable) {\n this.appendLeft(x)\n }\n }\n\n /**\n * Rotate the deque n steps to the right (negative n rotates left)\n */\n rotate(n: number = 1): void {\n const len = this.items.length\n if (len === 0) return\n n = n % len\n if (n > 0) {\n // Move last n elements to the front\n const tail = this.items.splice(-n, n)\n this.items.unshift(...tail)\n } else if (n < 0) {\n // Move first -n elements to the end\n const head = this.items.splice(0, -n)\n this.items.push(...head)\n }\n }\n\n /**\n * Remove all elements\n */\n clear(): void {\n this.items = []\n }\n\n /**\n * Number of elements\n */\n get length(): number {\n return this.items.length\n }\n\n /**\n * Make iterable\n */\n *[Symbol.iterator](): Generator<T> {\n yield* this.items\n }\n\n /**\n * Convert to array\n */\n toArray(): T[] {\n return [...this.items]\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
* Python collections module for TypeScript
|
|
3
3
|
*
|
|
4
4
|
* Provides specialized container datatypes.
|
|
5
|
+
*
|
|
6
|
+
* @see {@link https://docs.python.org/3/library/collections.html | Python collections documentation}
|
|
5
7
|
*/
|
|
6
8
|
/**
|
|
7
9
|
* Counter: a dict subclass for counting hashable objects
|
|
@@ -62,7 +64,7 @@ declare class deque<T> {
|
|
|
62
64
|
/**
|
|
63
65
|
* Add element to the left end
|
|
64
66
|
*/
|
|
65
|
-
|
|
67
|
+
appendLeft(x: T): void;
|
|
66
68
|
/**
|
|
67
69
|
* Remove and return element from the right end
|
|
68
70
|
*/
|
|
@@ -70,7 +72,7 @@ declare class deque<T> {
|
|
|
70
72
|
/**
|
|
71
73
|
* Remove and return element from the left end
|
|
72
74
|
*/
|
|
73
|
-
|
|
75
|
+
popLeft(): T | undefined;
|
|
74
76
|
/**
|
|
75
77
|
* Extend the right side with elements from iterable
|
|
76
78
|
*/
|
|
@@ -78,7 +80,7 @@ declare class deque<T> {
|
|
|
78
80
|
/**
|
|
79
81
|
* Extend the left side with elements from iterable
|
|
80
82
|
*/
|
|
81
|
-
|
|
83
|
+
extendLeft(iterable: Iterable<T>): void;
|
|
82
84
|
/**
|
|
83
85
|
* Rotate the deque n steps to the right (negative n rotates left)
|
|
84
86
|
*/
|
package/dist/collections.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { C as Counter, d as defaultdict, a as deque } from './collections-
|
|
1
|
+
export { C as Counter, d as defaultdict, a as deque } from './collections-CJur5Wg-.js';
|
package/dist/collections.js
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
* Python datetime module for TypeScript
|
|
3
3
|
*
|
|
4
4
|
* Provides date and time handling matching Python's datetime module.
|
|
5
|
+
*
|
|
6
|
+
* @see {@link https://docs.python.org/3/library/datetime.html | Python datetime documentation}
|
|
5
7
|
*/
|
|
6
8
|
declare class timedelta {
|
|
7
9
|
readonly days: number;
|
|
@@ -16,7 +18,7 @@ declare class timedelta {
|
|
|
16
18
|
hours?: number;
|
|
17
19
|
weeks?: number;
|
|
18
20
|
});
|
|
19
|
-
|
|
21
|
+
totalSeconds(): number;
|
|
20
22
|
toString(): string;
|
|
21
23
|
add(other: timedelta): timedelta;
|
|
22
24
|
subtract(other: timedelta): timedelta;
|
|
@@ -31,19 +33,19 @@ declare class date {
|
|
|
31
33
|
readonly day: number;
|
|
32
34
|
constructor(year: number, month: number, day: number);
|
|
33
35
|
static today(): date;
|
|
34
|
-
static
|
|
35
|
-
static
|
|
36
|
-
static
|
|
36
|
+
static fromTimestamp(timestamp: number): date;
|
|
37
|
+
static fromIsoFormat(dateString: string): date;
|
|
38
|
+
static fromOrdinal(ordinal: number): date;
|
|
37
39
|
replace(options?: {
|
|
38
40
|
year?: number;
|
|
39
41
|
month?: number;
|
|
40
42
|
day?: number;
|
|
41
43
|
}): date;
|
|
42
|
-
|
|
44
|
+
toOrdinal(): number;
|
|
43
45
|
weekday(): number;
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
46
|
+
isoWeekday(): number;
|
|
47
|
+
isoCalendar(): [number, number, number];
|
|
48
|
+
isoFormat(): string;
|
|
47
49
|
strftime(format: string): string;
|
|
48
50
|
toString(): string;
|
|
49
51
|
__add__(delta: timedelta): date;
|
|
@@ -64,14 +66,14 @@ declare class time {
|
|
|
64
66
|
readonly microsecond: number;
|
|
65
67
|
readonly tzinfo: null;
|
|
66
68
|
constructor(hour?: number, minute?: number, second?: number, microsecond?: number);
|
|
67
|
-
static
|
|
69
|
+
static fromIsoFormat(timeString: string): time;
|
|
68
70
|
replace(options?: {
|
|
69
71
|
hour?: number;
|
|
70
72
|
minute?: number;
|
|
71
73
|
second?: number;
|
|
72
74
|
microsecond?: number;
|
|
73
75
|
}): time;
|
|
74
|
-
|
|
76
|
+
isoFormat(timespec?: "auto" | "hours" | "minutes" | "seconds" | "milliseconds" | "microseconds"): string;
|
|
75
77
|
strftime(format: string): string;
|
|
76
78
|
toString(): string;
|
|
77
79
|
static min: time;
|
|
@@ -87,10 +89,10 @@ declare class datetime extends date {
|
|
|
87
89
|
constructor(year: number, month: number, day: number, hour?: number, minute?: number, second?: number, microsecond?: number);
|
|
88
90
|
static today(): datetime;
|
|
89
91
|
static now(): datetime;
|
|
90
|
-
static
|
|
91
|
-
static
|
|
92
|
-
static
|
|
93
|
-
static
|
|
92
|
+
static utcNow(): datetime;
|
|
93
|
+
static fromTimestamp(timestamp: number): datetime;
|
|
94
|
+
static utcfromTimestamp(timestamp: number): datetime;
|
|
95
|
+
static fromIsoFormat(s: string): datetime;
|
|
94
96
|
static combine(d: date, t: time): datetime;
|
|
95
97
|
static strptime(dateString: string, format: string): datetime;
|
|
96
98
|
replace(options?: {
|
|
@@ -105,7 +107,7 @@ declare class datetime extends date {
|
|
|
105
107
|
date(): date;
|
|
106
108
|
time(): time;
|
|
107
109
|
timestamp(): number;
|
|
108
|
-
|
|
110
|
+
isoFormat(sep?: string, timespec?: "auto" | "hours" | "minutes" | "seconds" | "milliseconds" | "microseconds"): string;
|
|
109
111
|
ctime(): string;
|
|
110
112
|
strftime(format: string): string;
|
|
111
113
|
toString(): string;
|
package/dist/datetime.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { f as MAXYEAR, M as MINYEAR, a as date, c as datetime, s as strftime, e as strptime, b as time, t as timedelta } from './datetime-
|
|
1
|
+
export { f as MAXYEAR, M as MINYEAR, a as date, c as datetime, s as strftime, e as strptime, b as time, t as timedelta } from './datetime-Bpce8gG2.js';
|
package/dist/datetime.js
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
* Python functools module for TypeScript
|
|
3
3
|
*
|
|
4
4
|
* Provides higher-order functions and operations on callable objects.
|
|
5
|
+
*
|
|
6
|
+
* @see {@link https://docs.python.org/3/library/functools.html | Python functools documentation}
|
|
5
7
|
*/
|
|
6
8
|
/**
|
|
7
9
|
* Create a partial function application
|
|
@@ -24,16 +26,16 @@ declare function reduce<T, U = T>(func: (acc: U, val: T) => U, iterable: Iterabl
|
|
|
24
26
|
* Note: This is a simplified implementation that caches based on JSON-stringified arguments
|
|
25
27
|
*
|
|
26
28
|
* Example:
|
|
27
|
-
* const fib =
|
|
29
|
+
* const fib = lruCache((n: number): number => n <= 1 ? n : fib(n - 1) + fib(n - 2))
|
|
28
30
|
*/
|
|
29
|
-
declare function
|
|
30
|
-
|
|
31
|
+
declare function lruCache<T extends (...args: unknown[]) => unknown>(func: T, maxsize?: number): T & {
|
|
32
|
+
cacheInfo: () => {
|
|
31
33
|
hits: number;
|
|
32
34
|
misses: number;
|
|
33
35
|
maxsize: number;
|
|
34
36
|
currsize: number;
|
|
35
37
|
};
|
|
36
|
-
|
|
38
|
+
cacheClear: () => void;
|
|
37
39
|
};
|
|
38
40
|
/**
|
|
39
41
|
* Cache decorator that caches all calls (no size limit)
|
|
@@ -44,12 +46,12 @@ declare function cache<T extends (...args: unknown[]) => unknown>(func: T): T;
|
|
|
44
46
|
* Return a new partial object which behaves like func called with keyword arguments
|
|
45
47
|
* In TypeScript, we simulate this with an options object as the last argument
|
|
46
48
|
*/
|
|
47
|
-
declare function
|
|
49
|
+
declare function partialMethod<T extends (...args: unknown[]) => unknown>(func: T, ...partialArgs: unknown[]): (...args: unknown[]) => ReturnType<T>;
|
|
48
50
|
/**
|
|
49
51
|
* Transform a function into a single-dispatch generic function
|
|
50
|
-
* This is a simplified version - full
|
|
52
|
+
* This is a simplified version - full singleDispatch would require runtime type checking
|
|
51
53
|
*/
|
|
52
|
-
declare function
|
|
54
|
+
declare function singleDispatch<T extends (...args: unknown[]) => unknown>(func: T): T & {
|
|
53
55
|
register: (type: string, impl: T) => void;
|
|
54
56
|
};
|
|
55
57
|
/**
|
|
@@ -59,20 +61,20 @@ declare function singledispatch<T extends (...args: unknown[]) => unknown>(func:
|
|
|
59
61
|
declare function wraps<T extends (...args: unknown[]) => unknown>(wrapped: T): (wrapper: (...args: unknown[]) => unknown) => T;
|
|
60
62
|
/**
|
|
61
63
|
* Return a callable object that fetches attr from its operand
|
|
62
|
-
*
|
|
64
|
+
* attrGetter('name') returns a function that gets the 'name' attribute
|
|
63
65
|
*/
|
|
64
|
-
declare function
|
|
66
|
+
declare function attrGetter<T>(...attrs: string[]): (obj: unknown) => T | T[];
|
|
65
67
|
/**
|
|
66
68
|
* Return a callable object that fetches item from its operand
|
|
67
|
-
*
|
|
68
|
-
*
|
|
69
|
+
* itemGetter(1) returns a function that gets index 1
|
|
70
|
+
* itemGetter('key') returns a function that gets the 'key' property
|
|
69
71
|
*/
|
|
70
|
-
declare function
|
|
72
|
+
declare function itemGetter<T>(...items: (string | number)[]): (obj: unknown) => T | T[];
|
|
71
73
|
/**
|
|
72
74
|
* Return a callable object that calls the method name on its operand
|
|
73
|
-
*
|
|
75
|
+
* methodCaller('split', ' ') returns a function that calls .split(' ')
|
|
74
76
|
*/
|
|
75
|
-
declare function
|
|
77
|
+
declare function methodCaller(name: string, ...args: unknown[]): (obj: unknown) => unknown;
|
|
76
78
|
/**
|
|
77
79
|
* Return the same object passed in (identity function)
|
|
78
80
|
*/
|
|
@@ -81,7 +83,7 @@ declare function identity<T>(x: T): T;
|
|
|
81
83
|
* Compare two objects for ordering (returns -1, 0, or 1)
|
|
82
84
|
* Used for sorting with a key function
|
|
83
85
|
*/
|
|
84
|
-
declare function
|
|
86
|
+
declare function cmpToKey<T>(mycmp: (a: T, b: T) => number): (x: T) => {
|
|
85
87
|
value: T;
|
|
86
88
|
__lt__: (other: {
|
|
87
89
|
value: T;
|
|
@@ -92,7 +94,7 @@ declare function cmp_to_key<T>(mycmp: (a: T, b: T) => number): (x: T) => {
|
|
|
92
94
|
* This is typically used as a class decorator in Python
|
|
93
95
|
* In TypeScript, we provide helper comparisons
|
|
94
96
|
*/
|
|
95
|
-
declare function
|
|
97
|
+
declare function totalOrdering<T extends {
|
|
96
98
|
__lt__?: (other: T) => boolean;
|
|
97
99
|
__le__?: (other: T) => boolean;
|
|
98
100
|
__gt__?: (other: T) => boolean;
|
|
@@ -104,22 +106,36 @@ declare function total_ordering<T extends {
|
|
|
104
106
|
__gt__: (other: T) => boolean;
|
|
105
107
|
__ge__: (other: T) => boolean;
|
|
106
108
|
};
|
|
109
|
+
/**
|
|
110
|
+
* Pipe a value through a series of functions.
|
|
111
|
+
* @inspired Remeda, Ramda
|
|
112
|
+
*
|
|
113
|
+
* Example:
|
|
114
|
+
* pipe(5, x => x * 2, x => x + 1) // returns 11
|
|
115
|
+
*/
|
|
116
|
+
declare function pipe<T>(value: T): T;
|
|
117
|
+
declare function pipe<T, A>(value: T, fn1: (x: T) => A): A;
|
|
118
|
+
declare function pipe<T, A, B>(value: T, fn1: (x: T) => A, fn2: (x: A) => B): B;
|
|
119
|
+
declare function pipe<T, A, B, C>(value: T, fn1: (x: T) => A, fn2: (x: A) => B, fn3: (x: B) => C): C;
|
|
120
|
+
declare function pipe<T, A, B, C, D>(value: T, fn1: (x: T) => A, fn2: (x: A) => B, fn3: (x: B) => C, fn4: (x: C) => D): D;
|
|
121
|
+
declare function pipe<T, A, B, C, D, E>(value: T, fn1: (x: T) => A, fn2: (x: A) => B, fn3: (x: B) => C, fn4: (x: C) => D, fn5: (x: D) => E): E;
|
|
107
122
|
|
|
108
|
-
declare const
|
|
123
|
+
declare const functoolsModule_attrGetter: typeof attrGetter;
|
|
109
124
|
declare const functoolsModule_cache: typeof cache;
|
|
110
|
-
declare const
|
|
125
|
+
declare const functoolsModule_cmpToKey: typeof cmpToKey;
|
|
111
126
|
declare const functoolsModule_identity: typeof identity;
|
|
112
|
-
declare const
|
|
113
|
-
declare const
|
|
114
|
-
declare const
|
|
127
|
+
declare const functoolsModule_itemGetter: typeof itemGetter;
|
|
128
|
+
declare const functoolsModule_lruCache: typeof lruCache;
|
|
129
|
+
declare const functoolsModule_methodCaller: typeof methodCaller;
|
|
115
130
|
declare const functoolsModule_partial: typeof partial;
|
|
116
|
-
declare const
|
|
131
|
+
declare const functoolsModule_partialMethod: typeof partialMethod;
|
|
132
|
+
declare const functoolsModule_pipe: typeof pipe;
|
|
117
133
|
declare const functoolsModule_reduce: typeof reduce;
|
|
118
|
-
declare const
|
|
119
|
-
declare const
|
|
134
|
+
declare const functoolsModule_singleDispatch: typeof singleDispatch;
|
|
135
|
+
declare const functoolsModule_totalOrdering: typeof totalOrdering;
|
|
120
136
|
declare const functoolsModule_wraps: typeof wraps;
|
|
121
137
|
declare namespace functoolsModule {
|
|
122
|
-
export {
|
|
138
|
+
export { functoolsModule_attrGetter as attrGetter, functoolsModule_cache as cache, functoolsModule_cmpToKey as cmpToKey, functoolsModule_identity as identity, functoolsModule_itemGetter as itemGetter, functoolsModule_lruCache as lruCache, functoolsModule_methodCaller as methodCaller, functoolsModule_partial as partial, functoolsModule_partialMethod as partialMethod, functoolsModule_pipe as pipe, functoolsModule_reduce as reduce, functoolsModule_singleDispatch as singleDispatch, functoolsModule_totalOrdering as totalOrdering, functoolsModule_wraps as wraps };
|
|
123
139
|
}
|
|
124
140
|
|
|
125
|
-
export {
|
|
141
|
+
export { partialMethod as a, attrGetter as b, cache as c, identity as d, cmpToKey as e, functoolsModule as f, pipe as g, itemGetter as i, lruCache as l, methodCaller as m, partial as p, reduce as r, singleDispatch as s, totalOrdering as t, wraps as w };
|
package/dist/functools.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { b as
|
|
1
|
+
export { b as attrGetter, c as cache, e as cmpToKey, d as identity, i as itemGetter, l as lruCache, m as methodCaller, p as partial, a as partialMethod, g as pipe, r as reduce, s as singleDispatch, t as totalOrdering, w as wraps } from './functools-NrsZAqJk.js';
|
package/dist/functools.js
CHANGED
|
@@ -1,32 +1,34 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
2
|
+
attrGetter,
|
|
3
3
|
cache,
|
|
4
|
-
|
|
4
|
+
cmpToKey,
|
|
5
5
|
identity,
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
itemGetter,
|
|
7
|
+
lruCache,
|
|
8
|
+
methodCaller,
|
|
9
9
|
partial,
|
|
10
|
-
|
|
10
|
+
partialMethod,
|
|
11
|
+
pipe,
|
|
11
12
|
reduce,
|
|
12
|
-
|
|
13
|
-
|
|
13
|
+
singleDispatch,
|
|
14
|
+
totalOrdering,
|
|
14
15
|
wraps
|
|
15
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-4SZT4HJI.js";
|
|
16
17
|
import "./chunk-PZ5AY32C.js";
|
|
17
18
|
export {
|
|
18
|
-
|
|
19
|
+
attrGetter,
|
|
19
20
|
cache,
|
|
20
|
-
|
|
21
|
+
cmpToKey,
|
|
21
22
|
identity,
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
itemGetter,
|
|
24
|
+
lruCache,
|
|
25
|
+
methodCaller,
|
|
25
26
|
partial,
|
|
26
|
-
|
|
27
|
+
partialMethod,
|
|
28
|
+
pipe,
|
|
27
29
|
reduce,
|
|
28
|
-
|
|
29
|
-
|
|
30
|
+
singleDispatch,
|
|
31
|
+
totalOrdering,
|
|
30
32
|
wraps
|
|
31
33
|
};
|
|
32
34
|
//# sourceMappingURL=functools.js.map
|