yummies 7.12.0 → 7.14.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.
Files changed (127) hide show
  1. package/README.md +5 -87
  2. package/assert.cjs +146 -0
  3. package/assert.cjs.map +1 -0
  4. package/assert.d.ts +134 -0
  5. package/assert.js +140 -0
  6. package/assert.js.map +1 -0
  7. package/async.cjs +17 -0
  8. package/async.cjs.map +1 -1
  9. package/async.d.ts +17 -0
  10. package/async.js +17 -0
  11. package/async.js.map +1 -1
  12. package/common.cjs.map +1 -1
  13. package/common.d.ts +18 -0
  14. package/common.js.map +1 -1
  15. package/complex.cjs.map +1 -1
  16. package/complex.d.ts +66 -0
  17. package/complex.js.map +1 -1
  18. package/cookie.cjs.map +1 -1
  19. package/cookie.d.ts +18 -0
  20. package/cookie.js.map +1 -1
  21. package/css.cjs +16 -0
  22. package/css.cjs.map +1 -1
  23. package/css.d.ts +17 -0
  24. package/css.js +16 -0
  25. package/css.js.map +1 -1
  26. package/data.cjs.map +1 -1
  27. package/data.d.ts +18 -0
  28. package/data.js.map +1 -1
  29. package/date-time.cjs +16 -0
  30. package/date-time.cjs.map +1 -1
  31. package/date-time.d.ts +17 -0
  32. package/date-time.js +16 -0
  33. package/date-time.js.map +1 -1
  34. package/device.cjs +17 -0
  35. package/device.cjs.map +1 -1
  36. package/device.d.ts +17 -0
  37. package/device.js +17 -0
  38. package/device.js.map +1 -1
  39. package/encodings.cjs.map +1 -1
  40. package/encodings.d.ts +17 -0
  41. package/encodings.js.map +1 -1
  42. package/errors.cjs +16 -0
  43. package/errors.cjs.map +1 -1
  44. package/errors.d.ts +17 -0
  45. package/errors.js +16 -0
  46. package/errors.js.map +1 -1
  47. package/file.cjs +16 -0
  48. package/file.cjs.map +1 -1
  49. package/file.d.ts +16 -0
  50. package/file.js +16 -0
  51. package/file.js.map +1 -1
  52. package/format.cjs.map +1 -1
  53. package/format.d.ts +18 -0
  54. package/format.js.map +1 -1
  55. package/html.cjs +16 -0
  56. package/html.cjs.map +1 -1
  57. package/html.d.ts +17 -0
  58. package/html.js +16 -0
  59. package/html.js.map +1 -1
  60. package/id.cjs +16 -0
  61. package/id.cjs.map +1 -1
  62. package/id.d.ts +16 -0
  63. package/id.js +16 -0
  64. package/id.js.map +1 -1
  65. package/imports.cjs +16 -0
  66. package/imports.cjs.map +1 -1
  67. package/imports.d.ts +16 -0
  68. package/imports.js +16 -0
  69. package/imports.js.map +1 -1
  70. package/math.cjs.map +1 -1
  71. package/math.d.ts +17 -0
  72. package/math.js.map +1 -1
  73. package/media.cjs +16 -0
  74. package/media.cjs.map +1 -1
  75. package/media.d.ts +16 -0
  76. package/media.js +16 -0
  77. package/media.js.map +1 -1
  78. package/mobx.cjs +96 -0
  79. package/mobx.cjs.map +1 -1
  80. package/mobx.d.ts +101 -0
  81. package/mobx.js +96 -0
  82. package/mobx.js.map +1 -1
  83. package/ms.cjs +16 -0
  84. package/ms.cjs.map +1 -1
  85. package/ms.d.ts +16 -0
  86. package/ms.js +16 -0
  87. package/ms.js.map +1 -1
  88. package/number.cjs +16 -0
  89. package/number.cjs.map +1 -1
  90. package/number.d.ts +16 -0
  91. package/number.js +16 -0
  92. package/number.js.map +1 -1
  93. package/package.json +8 -2
  94. package/parser.cjs.map +1 -1
  95. package/parser.d.ts +17 -0
  96. package/parser.js.map +1 -1
  97. package/price.cjs.map +1 -1
  98. package/price.d.ts +16 -0
  99. package/price.js.map +1 -1
  100. package/random.cjs +16 -0
  101. package/random.cjs.map +1 -1
  102. package/random.d.ts +16 -0
  103. package/random.js +16 -0
  104. package/random.js.map +1 -1
  105. package/sound.cjs +16 -0
  106. package/sound.cjs.map +1 -1
  107. package/sound.d.ts +16 -0
  108. package/sound.js +16 -0
  109. package/sound.js.map +1 -1
  110. package/storage.cjs.map +1 -1
  111. package/storage.d.ts +16 -0
  112. package/storage.js.map +1 -1
  113. package/text.cjs +16 -0
  114. package/text.cjs.map +1 -1
  115. package/text.d.ts +16 -0
  116. package/text.js +16 -0
  117. package/text.js.map +1 -1
  118. package/type-guard.cjs.map +1 -1
  119. package/type-guard.d.ts +18 -0
  120. package/type-guard.js.map +1 -1
  121. package/types.d.ts +41 -0
  122. package/types.global.d.ts +41 -0
  123. package/vibrate.cjs +16 -0
  124. package/vibrate.cjs.map +1 -1
  125. package/vibrate.d.ts +16 -0
  126. package/vibrate.js +16 -0
  127. package/vibrate.js.map +1 -1
package/data.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"data.js","names":[],"sources":["../src/data.ts"],"sourcesContent":["import type { AnyObject, Maybe } from 'yummies/types';\n\n/**\n * Performs a shallow comparison for arrays, plain objects, dates and regular expressions.\n *\n * @example\n * ```ts\n * isShallowEqual({ id: 1 }, { id: 1 }); // true\n * ```\n */\nexport const isShallowEqual = (a: unknown, b: unknown): boolean => {\n if (a === b) return true;\n\n if (\n typeof a !== 'object' ||\n typeof b !== 'object' ||\n a === null ||\n b === null\n ) {\n return false;\n }\n\n if (a.constructor !== b.constructor) return false;\n\n const isArrayA = Array.isArray(a);\n\n if (isArrayA !== Array.isArray(b)) return false;\n\n if (isArrayA) {\n const arrA = a as unknown[];\n const arrB = b as unknown[];\n if (arrA.length !== arrB.length) return false;\n\n for (const [i, element] of arrA.entries()) {\n if (element !== arrB[i]) return false;\n }\n return true;\n }\n\n if (a instanceof Date) return a.getTime() === (b as Date).getTime();\n\n if (a instanceof RegExp) return a.toString() === (b as RegExp).toString();\n\n const aKeys = Object.keys(a);\n const bKeys = Object.keys(b);\n\n if (aKeys.length !== bKeys.length) return false;\n\n const bObj = b as AnyObject;\n for (const key of aKeys) {\n if (!Object.hasOwn(bObj, key) || (a as AnyObject)[key] !== bObj[key]) {\n return false;\n }\n }\n\n return true;\n};\n\n/**\n * Wraps a value in an array when it is not already an array.\n *\n * @example\n * ```ts\n * toArray('item'); // ['item']\n * ```\n */\nexport const toArray = <TValue>(value: TValue | TValue[]): TValue[] => {\n return Array.isArray(value) ? value : [value];\n};\n\ntype DeepArray<TValue> = TValue | Array<DeepArray<TValue>>;\n\n/**\n * Recursively flattens a nested array and maps the collected values.\n *\n * @example\n * ```ts\n * flatMapDeep([1, [2, [3]]], (value) => value * 2); // [2, 4, 6]\n * ```\n */\nexport const flatMapDeep = <TSource, TNewValue>(\n arr: DeepArray<TSource>,\n fn: (value: TSource, i: number, arr: TSource[]) => TNewValue,\n): TNewValue[] => {\n const source: TSource[] = [];\n\n const collect = (value: DeepArray<TSource>): void => {\n if (!Array.isArray(value)) {\n source.push(value);\n return;\n }\n\n for (const item of value) {\n collect(item);\n }\n };\n\n collect(arr);\n\n return source.map((value, i) => fn(value, i, source));\n};\n\n/**\n * Parses JSON safely and returns a fallback value when parsing fails.\n *\n * @example\n * ```ts\n * safeJsonParse('{\"enabled\":true}', {}); // { enabled: true }\n * ```\n */\nexport const safeJsonParse = <TValue = any, TFallback = null>(\n json: Maybe<string>,\n fallback: TFallback = null as TFallback,\n): TValue | TFallback => {\n if (json == null) return fallback;\n\n try {\n return JSON.parse(json);\n } catch {\n return fallback;\n }\n};\n\nconst UNSAFE_PROPERTY_KEYS = new Set(['__proto__', 'prototype', 'constructor']);\n\n/**\n * Checks whether a property key is unsafe and can lead to prototype pollution.\n *\n * @example\n * isUnsafeProperty('__proto__'); // true\n * isUnsafeProperty('name'); // false\n */\nexport const isUnsafeProperty = (key: any) => UNSAFE_PROPERTY_KEYS.has(key);\n"],"mappings":";;;;;;;;;AAUA,IAAa,kBAAkB,GAAY,MAAwB;AACjE,KAAI,MAAM,EAAG,QAAO;AAEpB,KACE,OAAO,MAAM,YACb,OAAO,MAAM,YACb,MAAM,QACN,MAAM,KAEN,QAAO;AAGT,KAAI,EAAE,gBAAgB,EAAE,YAAa,QAAO;CAE5C,MAAM,WAAW,MAAM,QAAQ,EAAE;AAEjC,KAAI,aAAa,MAAM,QAAQ,EAAE,CAAE,QAAO;AAE1C,KAAI,UAAU;EACZ,MAAM,OAAO;EACb,MAAM,OAAO;AACb,MAAI,KAAK,WAAW,KAAK,OAAQ,QAAO;AAExC,OAAK,MAAM,CAAC,GAAG,YAAY,KAAK,SAAS,CACvC,KAAI,YAAY,KAAK,GAAI,QAAO;AAElC,SAAO;;AAGT,KAAI,aAAa,KAAM,QAAO,EAAE,SAAS,KAAM,EAAW,SAAS;AAEnE,KAAI,aAAa,OAAQ,QAAO,EAAE,UAAU,KAAM,EAAa,UAAU;CAEzE,MAAM,QAAQ,OAAO,KAAK,EAAE;CAC5B,MAAM,QAAQ,OAAO,KAAK,EAAE;AAE5B,KAAI,MAAM,WAAW,MAAM,OAAQ,QAAO;CAE1C,MAAM,OAAO;AACb,MAAK,MAAM,OAAO,MAChB,KAAI,CAAC,OAAO,OAAO,MAAM,IAAI,IAAK,EAAgB,SAAS,KAAK,KAC9D,QAAO;AAIX,QAAO;;;;;;;;;;AAWT,IAAa,WAAmB,UAAuC;AACrE,QAAO,MAAM,QAAQ,MAAM,GAAG,QAAQ,CAAC,MAAM;;;;;;;;;;AAa/C,IAAa,eACX,KACA,OACgB;CAChB,MAAM,SAAoB,EAAE;CAE5B,MAAM,WAAW,UAAoC;AACnD,MAAI,CAAC,MAAM,QAAQ,MAAM,EAAE;AACzB,UAAO,KAAK,MAAM;AAClB;;AAGF,OAAK,MAAM,QAAQ,MACjB,SAAQ,KAAK;;AAIjB,SAAQ,IAAI;AAEZ,QAAO,OAAO,KAAK,OAAO,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;;;;;;;;;;AAWvD,IAAa,iBACX,MACA,WAAsB,SACC;AACvB,KAAI,QAAQ,KAAM,QAAO;AAEzB,KAAI;AACF,SAAO,KAAK,MAAM,KAAK;SACjB;AACN,SAAO;;;AAIX,IAAM,uBAAuB,IAAI,IAAI;CAAC;CAAa;CAAa;CAAc,CAAC;;;;;;;;AAS/E,IAAa,oBAAoB,QAAa,qBAAqB,IAAI,IAAI"}
1
+ {"version":3,"file":"data.js","names":[],"sources":["../src/data.ts"],"sourcesContent":["/**\n * ---header-docs-section---\n * # yummies/data\n *\n * ## Description\n *\n * General-purpose data helpers: shallow equality, normalizing values to arrays, and recursive\n * `flatMap`-style transforms. They complement `Array`/`Object` builtins when you need stable\n * comparisons for memoization or small structural utilities without pulling a large lodash-style\n * dependency into the bundle.\n *\n * ## Usage\n *\n * ```ts\n * import { isShallowEqual, toArray } from \"yummies/data\";\n * ```\n */\n\nimport type { AnyObject, Maybe } from 'yummies/types';\n\n/**\n * Performs a shallow comparison for arrays, plain objects, dates and regular expressions.\n *\n * @example\n * ```ts\n * isShallowEqual({ id: 1 }, { id: 1 }); // true\n * ```\n */\nexport const isShallowEqual = (a: unknown, b: unknown): boolean => {\n if (a === b) return true;\n\n if (\n typeof a !== 'object' ||\n typeof b !== 'object' ||\n a === null ||\n b === null\n ) {\n return false;\n }\n\n if (a.constructor !== b.constructor) return false;\n\n const isArrayA = Array.isArray(a);\n\n if (isArrayA !== Array.isArray(b)) return false;\n\n if (isArrayA) {\n const arrA = a as unknown[];\n const arrB = b as unknown[];\n if (arrA.length !== arrB.length) return false;\n\n for (const [i, element] of arrA.entries()) {\n if (element !== arrB[i]) return false;\n }\n return true;\n }\n\n if (a instanceof Date) return a.getTime() === (b as Date).getTime();\n\n if (a instanceof RegExp) return a.toString() === (b as RegExp).toString();\n\n const aKeys = Object.keys(a);\n const bKeys = Object.keys(b);\n\n if (aKeys.length !== bKeys.length) return false;\n\n const bObj = b as AnyObject;\n for (const key of aKeys) {\n if (!Object.hasOwn(bObj, key) || (a as AnyObject)[key] !== bObj[key]) {\n return false;\n }\n }\n\n return true;\n};\n\n/**\n * Wraps a value in an array when it is not already an array.\n *\n * @example\n * ```ts\n * toArray('item'); // ['item']\n * ```\n */\nexport const toArray = <TValue>(value: TValue | TValue[]): TValue[] => {\n return Array.isArray(value) ? value : [value];\n};\n\ntype DeepArray<TValue> = TValue | Array<DeepArray<TValue>>;\n\n/**\n * Recursively flattens a nested array and maps the collected values.\n *\n * @example\n * ```ts\n * flatMapDeep([1, [2, [3]]], (value) => value * 2); // [2, 4, 6]\n * ```\n */\nexport const flatMapDeep = <TSource, TNewValue>(\n arr: DeepArray<TSource>,\n fn: (value: TSource, i: number, arr: TSource[]) => TNewValue,\n): TNewValue[] => {\n const source: TSource[] = [];\n\n const collect = (value: DeepArray<TSource>): void => {\n if (!Array.isArray(value)) {\n source.push(value);\n return;\n }\n\n for (const item of value) {\n collect(item);\n }\n };\n\n collect(arr);\n\n return source.map((value, i) => fn(value, i, source));\n};\n\n/**\n * Parses JSON safely and returns a fallback value when parsing fails.\n *\n * @example\n * ```ts\n * safeJsonParse('{\"enabled\":true}', {}); // { enabled: true }\n * ```\n */\nexport const safeJsonParse = <TValue = any, TFallback = null>(\n json: Maybe<string>,\n fallback: TFallback = null as TFallback,\n): TValue | TFallback => {\n if (json == null) return fallback;\n\n try {\n return JSON.parse(json);\n } catch {\n return fallback;\n }\n};\n\nconst UNSAFE_PROPERTY_KEYS = new Set(['__proto__', 'prototype', 'constructor']);\n\n/**\n * Checks whether a property key is unsafe and can lead to prototype pollution.\n *\n * @example\n * isUnsafeProperty('__proto__'); // true\n * isUnsafeProperty('name'); // false\n */\nexport const isUnsafeProperty = (key: any) => UNSAFE_PROPERTY_KEYS.has(key);\n"],"mappings":";;;;;;;;;AA4BA,IAAa,kBAAkB,GAAY,MAAwB;AACjE,KAAI,MAAM,EAAG,QAAO;AAEpB,KACE,OAAO,MAAM,YACb,OAAO,MAAM,YACb,MAAM,QACN,MAAM,KAEN,QAAO;AAGT,KAAI,EAAE,gBAAgB,EAAE,YAAa,QAAO;CAE5C,MAAM,WAAW,MAAM,QAAQ,EAAE;AAEjC,KAAI,aAAa,MAAM,QAAQ,EAAE,CAAE,QAAO;AAE1C,KAAI,UAAU;EACZ,MAAM,OAAO;EACb,MAAM,OAAO;AACb,MAAI,KAAK,WAAW,KAAK,OAAQ,QAAO;AAExC,OAAK,MAAM,CAAC,GAAG,YAAY,KAAK,SAAS,CACvC,KAAI,YAAY,KAAK,GAAI,QAAO;AAElC,SAAO;;AAGT,KAAI,aAAa,KAAM,QAAO,EAAE,SAAS,KAAM,EAAW,SAAS;AAEnE,KAAI,aAAa,OAAQ,QAAO,EAAE,UAAU,KAAM,EAAa,UAAU;CAEzE,MAAM,QAAQ,OAAO,KAAK,EAAE;CAC5B,MAAM,QAAQ,OAAO,KAAK,EAAE;AAE5B,KAAI,MAAM,WAAW,MAAM,OAAQ,QAAO;CAE1C,MAAM,OAAO;AACb,MAAK,MAAM,OAAO,MAChB,KAAI,CAAC,OAAO,OAAO,MAAM,IAAI,IAAK,EAAgB,SAAS,KAAK,KAC9D,QAAO;AAIX,QAAO;;;;;;;;;;AAWT,IAAa,WAAmB,UAAuC;AACrE,QAAO,MAAM,QAAQ,MAAM,GAAG,QAAQ,CAAC,MAAM;;;;;;;;;;AAa/C,IAAa,eACX,KACA,OACgB;CAChB,MAAM,SAAoB,EAAE;CAE5B,MAAM,WAAW,UAAoC;AACnD,MAAI,CAAC,MAAM,QAAQ,MAAM,EAAE;AACzB,UAAO,KAAK,MAAM;AAClB;;AAGF,OAAK,MAAM,QAAQ,MACjB,SAAQ,KAAK;;AAIjB,SAAQ,IAAI;AAEZ,QAAO,OAAO,KAAK,OAAO,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;;;;;;;;;;AAWvD,IAAa,iBACX,MACA,WAAsB,SACC;AACvB,KAAI,QAAQ,KAAM,QAAO;AAEzB,KAAI;AACF,SAAO,KAAK,MAAM,KAAK;SACjB;AACN,SAAO;;;AAIX,IAAM,uBAAuB,IAAI,IAAI;CAAC;CAAa;CAAa;CAAc,CAAC;;;;;;;;AAS/E,IAAa,oBAAoB,QAAa,qBAAqB,IAAI,IAAI"}
package/date-time.cjs CHANGED
@@ -350,6 +350,22 @@ var require_ru = /* @__PURE__ */ require_chunk.__commonJSMin(((exports, module)
350
350
  }));
351
351
  //#endregion
352
352
  //#region src/date-time.ts
353
+ /**
354
+ * ---header-docs-section---
355
+ * # yummies/date-time
356
+ *
357
+ * ## Description
358
+ *
359
+ * Date and time formatting built on **dayjs** with locale plugins, human-readable presets, relative
360
+ * phrases, and duration helpers tailored to UI copy. It composes with `yummies/format`, `yummies/ms`,
361
+ * and `yummies/text` for declensions so timestamps read naturally in Russian-facing apps.
362
+ *
363
+ * ## Usage
364
+ *
365
+ * ```ts
366
+ * import { formatDate } from "yummies/date-time";
367
+ * ```
368
+ */
353
369
  var import_duration = /* @__PURE__ */ require_chunk.__toESM(require_duration(), 1);
354
370
  var import_relativeTime = /* @__PURE__ */ require_chunk.__toESM(require_relativeTime(), 1);
355
371
  require_ru();
package/date-time.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"date-time.cjs","names":[],"sources":["../node_modules/.pnpm/dayjs@1.11.20/node_modules/dayjs/plugin/duration.js","../node_modules/.pnpm/dayjs@1.11.20/node_modules/dayjs/plugin/relativeTime.js","../node_modules/.pnpm/dayjs@1.11.20/node_modules/dayjs/locale/ru.js","../src/date-time.ts"],"sourcesContent":["!function(t,s){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=s():\"function\"==typeof define&&define.amd?define(s):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_duration=s()}(this,(function(){\"use strict\";var t,s,n=1e3,i=6e4,e=36e5,r=864e5,o=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,u=31536e6,d=2628e6,a=/^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/,h={years:u,months:d,days:r,hours:e,minutes:i,seconds:n,milliseconds:1,weeks:6048e5},c=function(t){return t instanceof g},f=function(t,s,n){return new g(t,n,s.$l)},m=function(t){return s.p(t)+\"s\"},l=function(t){return t<0},$=function(t){return l(t)?Math.ceil(t):Math.floor(t)},y=function(t){return Math.abs(t)},v=function(t,s){return t?l(t)?{negative:!0,format:\"\"+y(t)+s}:{negative:!1,format:\"\"+t+s}:{negative:!1,format:\"\"}},g=function(){function l(t,s,n){var i=this;if(this.$d={},this.$l=n,void 0===t&&(this.$ms=0,this.parseFromMilliseconds()),s)return f(t*h[m(s)],this);if(\"number\"==typeof t)return this.$ms=t,this.parseFromMilliseconds(),this;if(\"object\"==typeof t)return Object.keys(t).forEach((function(s){i.$d[m(s)]=t[s]})),this.calMilliseconds(),this;if(\"string\"==typeof t){var e=t.match(a);if(e){var r=e.slice(2).map((function(t){return null!=t?Number(t):0}));return this.$d.years=r[0],this.$d.months=r[1],this.$d.weeks=r[2],this.$d.days=r[3],this.$d.hours=r[4],this.$d.minutes=r[5],this.$d.seconds=r[6],this.calMilliseconds(),this}}return this}var y=l.prototype;return y.calMilliseconds=function(){var t=this;this.$ms=Object.keys(this.$d).reduce((function(s,n){return s+(t.$d[n]||0)*h[n]}),0)},y.parseFromMilliseconds=function(){var t=this.$ms;this.$d.years=$(t/u),t%=u,this.$d.months=$(t/d),t%=d,this.$d.days=$(t/r),t%=r,this.$d.hours=$(t/e),t%=e,this.$d.minutes=$(t/i),t%=i,this.$d.seconds=$(t/n),t%=n,this.$d.milliseconds=t},y.toISOString=function(){var t=v(this.$d.years,\"Y\"),s=v(this.$d.months,\"M\"),n=+this.$d.days||0;this.$d.weeks&&(n+=7*this.$d.weeks);var i=v(n,\"D\"),e=v(this.$d.hours,\"H\"),r=v(this.$d.minutes,\"M\"),o=this.$d.seconds||0;this.$d.milliseconds&&(o+=this.$d.milliseconds/1e3,o=Math.round(1e3*o)/1e3);var u=v(o,\"S\"),d=t.negative||s.negative||i.negative||e.negative||r.negative||u.negative,a=e.format||r.format||u.format?\"T\":\"\",h=(d?\"-\":\"\")+\"P\"+t.format+s.format+i.format+a+e.format+r.format+u.format;return\"P\"===h||\"-P\"===h?\"P0D\":h},y.toJSON=function(){return this.toISOString()},y.format=function(t){var n=t||\"YYYY-MM-DDTHH:mm:ss\",i={Y:this.$d.years,YY:s.s(this.$d.years,2,\"0\"),YYYY:s.s(this.$d.years,4,\"0\"),M:this.$d.months,MM:s.s(this.$d.months,2,\"0\"),D:this.$d.days,DD:s.s(this.$d.days,2,\"0\"),H:this.$d.hours,HH:s.s(this.$d.hours,2,\"0\"),m:this.$d.minutes,mm:s.s(this.$d.minutes,2,\"0\"),s:this.$d.seconds,ss:s.s(this.$d.seconds,2,\"0\"),SSS:s.s(this.$d.milliseconds,3,\"0\")};return n.replace(o,(function(t,s){return s||String(i[t])}))},y.as=function(t){return this.$ms/h[m(t)]},y.get=function(t){var s=this.$ms,n=m(t);return\"milliseconds\"===n?s%=1e3:s=\"weeks\"===n?$(s/h[n]):this.$d[n],s||0},y.add=function(t,s,n){var i;return i=s?t*h[m(s)]:c(t)?t.$ms:f(t,this).$ms,f(this.$ms+i*(n?-1:1),this)},y.subtract=function(t,s){return this.add(t,s,!0)},y.locale=function(t){var s=this.clone();return s.$l=t,s},y.clone=function(){return f(this.$ms,this)},y.humanize=function(s){return t().add(this.$ms,\"ms\").locale(this.$l).fromNow(!s)},y.valueOf=function(){return this.asMilliseconds()},y.milliseconds=function(){return this.get(\"milliseconds\")},y.asMilliseconds=function(){return this.as(\"milliseconds\")},y.seconds=function(){return this.get(\"seconds\")},y.asSeconds=function(){return this.as(\"seconds\")},y.minutes=function(){return this.get(\"minutes\")},y.asMinutes=function(){return this.as(\"minutes\")},y.hours=function(){return this.get(\"hours\")},y.asHours=function(){return this.as(\"hours\")},y.days=function(){return this.get(\"days\")},y.asDays=function(){return this.as(\"days\")},y.weeks=function(){return this.get(\"weeks\")},y.asWeeks=function(){return this.as(\"weeks\")},y.months=function(){return this.get(\"months\")},y.asMonths=function(){return this.as(\"months\")},y.years=function(){return this.get(\"years\")},y.asYears=function(){return this.as(\"years\")},l}(),p=function(t,s,n){return t.add(s.years()*n,\"y\").add(s.months()*n,\"M\").add(s.days()*n,\"d\").add(s.hours()*n,\"h\").add(s.minutes()*n,\"m\").add(s.seconds()*n,\"s\").add(s.milliseconds()*n,\"ms\")};return function(n,i,e){t=e,s=e().$utils(),e.duration=function(t,s){var n=e.locale();return f(t,{$l:n},s)},e.isDuration=c;var r=i.prototype.add,o=i.prototype.subtract;i.prototype.add=function(t,s){return c(t)?p(this,t,1):r.bind(this)(t,s)},i.prototype.subtract=function(t,s){return c(t)?p(this,t,-1):o.bind(this)(t,s)}}}));","!function(r,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(r=\"undefined\"!=typeof globalThis?globalThis:r||self).dayjs_plugin_relativeTime=e()}(this,(function(){\"use strict\";return function(r,e,t){r=r||{};var n=e.prototype,o={future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"};function i(r,e,t,o){return n.fromToBase(r,e,t,o)}t.en.relativeTime=o,n.fromToBase=function(e,n,i,d,u){for(var f,a,s,l=i.$locale().relativeTime||o,h=r.thresholds||[{l:\"s\",r:44,d:\"second\"},{l:\"m\",r:89},{l:\"mm\",r:44,d:\"minute\"},{l:\"h\",r:89},{l:\"hh\",r:21,d:\"hour\"},{l:\"d\",r:35},{l:\"dd\",r:25,d:\"day\"},{l:\"M\",r:45},{l:\"MM\",r:10,d:\"month\"},{l:\"y\",r:17},{l:\"yy\",d:\"year\"}],m=h.length,c=0;c<m;c+=1){var y=h[c];y.d&&(f=d?t(e).diff(i,y.d,!0):i.diff(e,y.d,!0));var p=(r.rounding||Math.round)(Math.abs(f));if(s=f>0,p<=y.r||!y.r){p<=1&&c>0&&(y=h[c-1]);var v=l[y.l];u&&(p=u(\"\"+p)),a=\"string\"==typeof v?v.replace(\"%d\",p):v(p,n,y.l,s);break}}if(n)return a;var M=s?l.future:l.past;return\"function\"==typeof M?M(a):M.replace(\"%s\",a)},n.to=function(r,e){return i(r,e,this,!0)},n.from=function(r,e){return i(r,e,this)};var d=function(r){return r.$u?t.utc():t()};n.toNow=function(r){return this.to(d(this),r)},n.fromNow=function(r){return this.from(d(this),r)}}}));","!function(_,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t(require(\"dayjs\")):\"function\"==typeof define&&define.amd?define([\"dayjs\"],t):(_=\"undefined\"!=typeof globalThis?globalThis:_||self).dayjs_locale_ru=t(_.dayjs)}(this,(function(_){\"use strict\";function t(_){return _&&\"object\"==typeof _&&\"default\"in _?_:{default:_}}var e=t(_),n=\"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря\".split(\"_\"),s=\"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь\".split(\"_\"),r=\"янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.\".split(\"_\"),o=\"янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.\".split(\"_\"),i=/D[oD]?(\\[[^[\\]]*\\]|\\s)+MMMM?/;function d(_,t,e){var n,s;return\"m\"===e?t?\"минута\":\"минуту\":_+\" \"+(n=+_,s={mm:t?\"минута_минуты_минут\":\"минуту_минуты_минут\",hh:\"час_часа_часов\",dd:\"день_дня_дней\",MM:\"месяц_месяца_месяцев\",yy:\"год_года_лет\"}[e].split(\"_\"),n%10==1&&n%100!=11?s[0]:n%10>=2&&n%10<=4&&(n%100<10||n%100>=20)?s[1]:s[2])}var u=function(_,t){return i.test(t)?n[_.month()]:s[_.month()]};u.s=s,u.f=n;var a=function(_,t){return i.test(t)?r[_.month()]:o[_.month()]};a.s=o,a.f=r;var m={name:\"ru\",weekdays:\"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота\".split(\"_\"),weekdaysShort:\"вск_пнд_втр_срд_чтв_птн_сбт\".split(\"_\"),weekdaysMin:\"вс_пн_вт_ср_чт_пт_сб\".split(\"_\"),months:u,monthsShort:a,weekStart:1,yearStart:4,formats:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D MMMM YYYY г.\",LLL:\"D MMMM YYYY г., H:mm\",LLLL:\"dddd, D MMMM YYYY г., H:mm\"},relativeTime:{future:\"через %s\",past:\"%s назад\",s:\"несколько секунд\",m:d,mm:d,h:\"час\",hh:d,d:\"день\",dd:d,M:\"месяц\",MM:d,y:\"год\",yy:d},ordinal:function(_){return _},meridiem:function(_){return _<4?\"ночи\":_<12?\"утра\":_<17?\"дня\":\"вечера\"}};return e.default.locale(m,null,!0),m}));","import dayjs, { type Dayjs, type ManipulateType } from 'dayjs';\nimport duration from 'dayjs/plugin/duration.js';\nimport relativeTime from 'dayjs/plugin/relativeTime.js';\nimport { format } from 'yummies/format';\nimport { ms, unitsToMs } from 'yummies/ms';\nimport { declension } from 'yummies/text';\nimport { typeGuard } from 'yummies/type-guard';\nimport type { Maybe } from 'yummies/types';\n\nimport 'dayjs/locale/ru.js';\n\ndayjs.extend(relativeTime);\ndayjs.extend(duration);\ndayjs.locale('ru');\n\nconst toLibFormat = (value: Maybe<RawDateToFormat>): Dayjs | null => {\n let result: Maybe<Dayjs> = null;\n if (dayjs.isDayjs(value)) {\n result = value;\n } else if (value != null) {\n result = dayjs(value);\n }\n\n if (!result?.isValid()) {\n return null;\n }\n\n return result;\n};\n\nexport type RawDateToFormat = Date | string | number | Dayjs;\n\n/**\n * Formats a date-like value using predefined presets or a custom pattern.\n *\n * @example\n * ```ts\n * formatDate('2024-03-15', { format: 'time-short' });\n * ```\n */\nexport const formatDate = (\n value: Maybe<RawDateToFormat>,\n settings?: Maybe<{\n format?:\n | 'human'\n | 'full'\n | 'short'\n | 'day'\n | 'day-only'\n | 'date'\n | 'month'\n | 'spent-time'\n | 'time'\n | 'time-short';\n pattern?: string;\n asTime?: boolean;\n }>,\n) => {\n const dateFormat = settings?.format;\n const datePattern = settings?.pattern;\n const asTime = settings?.asTime;\n\n let libDate: duration.Duration | dayjs.Dayjs | null = null;\n\n if (asTime && typeGuard.isNumber(value)) {\n libDate = dayjs.duration(value);\n } else {\n libDate = toLibFormat(value);\n }\n\n if (!libDate) {\n return format.NO_VALUE;\n }\n\n if (datePattern) {\n return libDate.format(datePattern);\n }\n\n if (dateFormat === 'human' || dateFormat === 'spent-time') {\n if ('fromNow' in libDate) {\n return libDate.fromNow(dateFormat === 'spent-time');\n } else {\n return format.NO_VALUE;\n }\n }\n\n switch (dateFormat) {\n case 'full': {\n return libDate.format('DD MMM YYYY HH:mm:ss');\n }\n case 'short': {\n return libDate.format('DD MMM HH:mm');\n }\n case 'time': {\n return libDate.format('HH:mm:ss');\n }\n case 'time-short': {\n return libDate.format('HH:mm');\n }\n case 'day': {\n return libDate.format('DD MMM YYYY');\n }\n case 'month': {\n return libDate.format('MMMM YYYY');\n }\n default: {\n return libDate.format('DD.MM.YYYY');\n }\n }\n};\n\n/**\n * Splits a duration in milliseconds into day-based time parts.\n *\n * @example\n * ```ts\n * dayTimeDuration(ms(1, 'day') + ms(2, 'hour'));\n * ```\n */\nexport const dayTimeDuration = (timeInMs: number) => {\n let left = Math.max(timeInMs, 0);\n\n const days = Math.floor(left / unitsToMs.day);\n left = left % unitsToMs.day;\n\n const hours = Math.floor(left / unitsToMs.hour);\n left = left % unitsToMs.hour;\n\n const minutes = Math.floor(left / unitsToMs.min);\n left = left % unitsToMs.min;\n\n const seconds = Math.floor(left / unitsToMs.sec);\n left = left % unitsToMs.sec;\n\n const milliseconds = Math.floor(left);\n\n return {\n days,\n hours,\n minutes,\n seconds,\n milliseconds,\n };\n};\n\ntype DateChangeParam = [amount: number, unit?: Maybe<ManipulateType>];\n\n/**\n * Applies one or more date adjustments and returns a new `Date` instance.\n *\n * @example\n * ```ts\n * changeDate(new Date(), 1, 'day', 30, 'minute');\n * ```\n */\nexport const changeDate = (\n date: Maybe<RawDateToFormat>,\n ...args: [\n ...DateChangeParam,\n ...Partial<DateChangeParam>,\n ...Partial<DateChangeParam>,\n ...Partial<DateChangeParam>,\n ...Partial<DateChangeParam>,\n ...Partial<DateChangeParam>,\n ]\n) => {\n let wrappedDate = toLibFormat(date)!;\n\n for (let i = 0; i < args.length; i += 2) {\n const amount = args[i] as DateChangeParam[0];\n const unit = args[i + 1] as DateChangeParam[1];\n if (unit != null) {\n wrappedDate = wrappedDate.add(amount, unit);\n }\n }\n\n return wrappedDate.toDate();\n};\n\n/**\n * Converts milliseconds into hour-based time parts without keeping full days separately.\n *\n * @example\n * ```ts\n * timeDuration(ms(1, 'hour') + ms(30, 'min'));\n * ```\n */\nexport const timeDuration = (timeInMs: number) => {\n const { days, hours, milliseconds, minutes, seconds } =\n dayTimeDuration(timeInMs);\n\n return {\n hours: hours + unitsToMs.day * days,\n milliseconds,\n minutes,\n seconds,\n };\n};\n\nconst durationFormatLabels = {\n days: { compact: 'д', full: ['день', 'дня', 'дней'] },\n hours: { compact: 'ч', full: ['час', 'часа', 'часов'] },\n minutes: { compact: 'мин', full: ['минута', 'минуты', 'минут'] },\n seconds: { compact: 'сек', full: ['секунда', 'секунды', 'секунд'] },\n} as const;\n\n/**\n * Formats a duration either from milliseconds or between two dates.\n *\n * @example\n * ```ts\n * getFormatDuration(ms(2, 'hour') + ms(15, 'min'));\n * ```\n */\nexport function getFormatDuration(\n dateA: Date,\n dateB: Date,\n compact?: boolean,\n): string;\nexport function getFormatDuration(ms: number, compact?: boolean): string;\n\nexport function getFormatDuration(...args: any[]): string {\n let compact = false;\n let diff = 0;\n\n if (args[0] instanceof Date) {\n const startedDate = dayjs(args[0]);\n const endedDate = dayjs(args[1]);\n\n diff = endedDate.diff(startedDate, 'ms');\n compact = args[2] === true;\n } else {\n diff = args[0];\n compact = args[1] === true;\n }\n\n const { days, hours, minutes, seconds } = dayTimeDuration(diff);\n\n const formattedParts: string[] = [];\n\n if (days) {\n if (compact) {\n formattedParts.push(`${days} ${durationFormatLabels.days.compact}`);\n } else {\n formattedParts.push(\n `${days} ${declension(days, durationFormatLabels.days.full)}`,\n );\n }\n }\n\n if (hours) {\n if (compact) {\n formattedParts.push(`${hours} ${durationFormatLabels.hours.compact}`);\n } else {\n formattedParts.push(\n `${hours} ${declension(hours, durationFormatLabels.hours.full)}`,\n );\n }\n }\n\n if (minutes) {\n if (compact) {\n formattedParts.push(`${minutes} ${durationFormatLabels.minutes.compact}`);\n } else {\n formattedParts.push(\n `${minutes} ${declension(minutes, durationFormatLabels.minutes.full)}`,\n );\n }\n }\n\n if (seconds) {\n if (compact) {\n formattedParts.push(`${seconds} ${durationFormatLabels.seconds.compact}`);\n } else {\n formattedParts.push(\n `${seconds} ${declension(seconds, durationFormatLabels.seconds.full)}`,\n );\n }\n }\n\n return formattedParts.join(' ');\n}\n\nexport type TimeDiff = {\n minutes: number;\n seconds: number;\n total: {\n ms: number;\n hours: number;\n };\n};\n\n/**\n * Calculates the difference between two dates in minutes, seconds and total units.\n *\n * @example\n * ```ts\n * getTimeDiff(new Date('2024-03-15T12:30:00'), new Date('2024-03-15T12:00:00'));\n * ```\n */\nexport const getTimeDiff = (\n dateA: RawDateToFormat,\n dateB: RawDateToFormat,\n): TimeDiff => {\n const leftDate = toLibFormat(dateA)?.toDate();\n const rightDate = toLibFormat(dateB)?.toDate();\n\n if (!leftDate || !rightDate) {\n return {\n minutes: 0,\n seconds: 0,\n total: { ms: 0, hours: 0 },\n };\n }\n\n const msDiff = leftDate.getTime() - rightDate.getTime();\n\n return {\n minutes: Math.max(Math.floor(msDiff / ms(1, 'min')), 0),\n seconds: Math.max(Math.floor((msDiff % ms(1, 'min')) / 1000), 0),\n total: {\n hours: Math.round(msDiff / ms(1, 'hour')),\n ms: msDiff,\n },\n };\n};\n\n/**\n * Returns a new date shifted forward by the provided number of days.\n *\n * @example\n * ```ts\n * addDays(new Date('2024-03-15'), 7);\n * ```\n */\nexport const addDays = (date: RawDateToFormat, count: number) =>\n toLibFormat(date)?.add(count, 'd').toDate();\n\n/**\n * Returns a new date shifted backward by the provided number of days.\n *\n * @example\n * ```ts\n * subtractDays(new Date('2024-03-15'), 7);\n * ```\n */\nexport const subtractDays = (date: RawDateToFormat, count: number) =>\n toLibFormat(date)?.subtract(count, 'd').toDate();\n\n/**\n * Returns a new date shifted forward by the provided number of minutes.\n *\n * @example\n * ```ts\n * addMinutes(new Date('2024-03-15T12:00:00'), 15);\n * ```\n */\nexport const addMinutes = (date: RawDateToFormat, count: number) =>\n toLibFormat(date)?.add(count, 'm').toDate();\n\n/**\n * Returns a new date with the minutes field replaced.\n *\n * @example\n * ```ts\n * setMinutes(new Date('2024-03-15T12:00:00'), 45);\n * ```\n */\nexport const setMinutes = (date: RawDateToFormat, minutes: number) =>\n toLibFormat(date)?.set('m', minutes).toDate();\n\n/**\n * Returns a new date with the hours field replaced.\n *\n * @example\n * ```ts\n * setHours(new Date('2024-03-15T12:00:00'), 9);\n * ```\n */\nexport const setHours = (date: RawDateToFormat, hours: number) =>\n toLibFormat(date)?.set('h', hours).toDate();\n"],"x_google_ignoreList":[0,1,2],"mappings":"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"}
1
+ {"version":3,"file":"date-time.cjs","names":[],"sources":["../node_modules/.pnpm/dayjs@1.11.20/node_modules/dayjs/plugin/duration.js","../node_modules/.pnpm/dayjs@1.11.20/node_modules/dayjs/plugin/relativeTime.js","../node_modules/.pnpm/dayjs@1.11.20/node_modules/dayjs/locale/ru.js","../src/date-time.ts"],"sourcesContent":["!function(t,s){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=s():\"function\"==typeof define&&define.amd?define(s):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_duration=s()}(this,(function(){\"use strict\";var t,s,n=1e3,i=6e4,e=36e5,r=864e5,o=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,u=31536e6,d=2628e6,a=/^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/,h={years:u,months:d,days:r,hours:e,minutes:i,seconds:n,milliseconds:1,weeks:6048e5},c=function(t){return t instanceof g},f=function(t,s,n){return new g(t,n,s.$l)},m=function(t){return s.p(t)+\"s\"},l=function(t){return t<0},$=function(t){return l(t)?Math.ceil(t):Math.floor(t)},y=function(t){return Math.abs(t)},v=function(t,s){return t?l(t)?{negative:!0,format:\"\"+y(t)+s}:{negative:!1,format:\"\"+t+s}:{negative:!1,format:\"\"}},g=function(){function l(t,s,n){var i=this;if(this.$d={},this.$l=n,void 0===t&&(this.$ms=0,this.parseFromMilliseconds()),s)return f(t*h[m(s)],this);if(\"number\"==typeof t)return this.$ms=t,this.parseFromMilliseconds(),this;if(\"object\"==typeof t)return Object.keys(t).forEach((function(s){i.$d[m(s)]=t[s]})),this.calMilliseconds(),this;if(\"string\"==typeof t){var e=t.match(a);if(e){var r=e.slice(2).map((function(t){return null!=t?Number(t):0}));return this.$d.years=r[0],this.$d.months=r[1],this.$d.weeks=r[2],this.$d.days=r[3],this.$d.hours=r[4],this.$d.minutes=r[5],this.$d.seconds=r[6],this.calMilliseconds(),this}}return this}var y=l.prototype;return y.calMilliseconds=function(){var t=this;this.$ms=Object.keys(this.$d).reduce((function(s,n){return s+(t.$d[n]||0)*h[n]}),0)},y.parseFromMilliseconds=function(){var t=this.$ms;this.$d.years=$(t/u),t%=u,this.$d.months=$(t/d),t%=d,this.$d.days=$(t/r),t%=r,this.$d.hours=$(t/e),t%=e,this.$d.minutes=$(t/i),t%=i,this.$d.seconds=$(t/n),t%=n,this.$d.milliseconds=t},y.toISOString=function(){var t=v(this.$d.years,\"Y\"),s=v(this.$d.months,\"M\"),n=+this.$d.days||0;this.$d.weeks&&(n+=7*this.$d.weeks);var i=v(n,\"D\"),e=v(this.$d.hours,\"H\"),r=v(this.$d.minutes,\"M\"),o=this.$d.seconds||0;this.$d.milliseconds&&(o+=this.$d.milliseconds/1e3,o=Math.round(1e3*o)/1e3);var u=v(o,\"S\"),d=t.negative||s.negative||i.negative||e.negative||r.negative||u.negative,a=e.format||r.format||u.format?\"T\":\"\",h=(d?\"-\":\"\")+\"P\"+t.format+s.format+i.format+a+e.format+r.format+u.format;return\"P\"===h||\"-P\"===h?\"P0D\":h},y.toJSON=function(){return this.toISOString()},y.format=function(t){var n=t||\"YYYY-MM-DDTHH:mm:ss\",i={Y:this.$d.years,YY:s.s(this.$d.years,2,\"0\"),YYYY:s.s(this.$d.years,4,\"0\"),M:this.$d.months,MM:s.s(this.$d.months,2,\"0\"),D:this.$d.days,DD:s.s(this.$d.days,2,\"0\"),H:this.$d.hours,HH:s.s(this.$d.hours,2,\"0\"),m:this.$d.minutes,mm:s.s(this.$d.minutes,2,\"0\"),s:this.$d.seconds,ss:s.s(this.$d.seconds,2,\"0\"),SSS:s.s(this.$d.milliseconds,3,\"0\")};return n.replace(o,(function(t,s){return s||String(i[t])}))},y.as=function(t){return this.$ms/h[m(t)]},y.get=function(t){var s=this.$ms,n=m(t);return\"milliseconds\"===n?s%=1e3:s=\"weeks\"===n?$(s/h[n]):this.$d[n],s||0},y.add=function(t,s,n){var i;return i=s?t*h[m(s)]:c(t)?t.$ms:f(t,this).$ms,f(this.$ms+i*(n?-1:1),this)},y.subtract=function(t,s){return this.add(t,s,!0)},y.locale=function(t){var s=this.clone();return s.$l=t,s},y.clone=function(){return f(this.$ms,this)},y.humanize=function(s){return t().add(this.$ms,\"ms\").locale(this.$l).fromNow(!s)},y.valueOf=function(){return this.asMilliseconds()},y.milliseconds=function(){return this.get(\"milliseconds\")},y.asMilliseconds=function(){return this.as(\"milliseconds\")},y.seconds=function(){return this.get(\"seconds\")},y.asSeconds=function(){return this.as(\"seconds\")},y.minutes=function(){return this.get(\"minutes\")},y.asMinutes=function(){return this.as(\"minutes\")},y.hours=function(){return this.get(\"hours\")},y.asHours=function(){return this.as(\"hours\")},y.days=function(){return this.get(\"days\")},y.asDays=function(){return this.as(\"days\")},y.weeks=function(){return this.get(\"weeks\")},y.asWeeks=function(){return this.as(\"weeks\")},y.months=function(){return this.get(\"months\")},y.asMonths=function(){return this.as(\"months\")},y.years=function(){return this.get(\"years\")},y.asYears=function(){return this.as(\"years\")},l}(),p=function(t,s,n){return t.add(s.years()*n,\"y\").add(s.months()*n,\"M\").add(s.days()*n,\"d\").add(s.hours()*n,\"h\").add(s.minutes()*n,\"m\").add(s.seconds()*n,\"s\").add(s.milliseconds()*n,\"ms\")};return function(n,i,e){t=e,s=e().$utils(),e.duration=function(t,s){var n=e.locale();return f(t,{$l:n},s)},e.isDuration=c;var r=i.prototype.add,o=i.prototype.subtract;i.prototype.add=function(t,s){return c(t)?p(this,t,1):r.bind(this)(t,s)},i.prototype.subtract=function(t,s){return c(t)?p(this,t,-1):o.bind(this)(t,s)}}}));","!function(r,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(r=\"undefined\"!=typeof globalThis?globalThis:r||self).dayjs_plugin_relativeTime=e()}(this,(function(){\"use strict\";return function(r,e,t){r=r||{};var n=e.prototype,o={future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"};function i(r,e,t,o){return n.fromToBase(r,e,t,o)}t.en.relativeTime=o,n.fromToBase=function(e,n,i,d,u){for(var f,a,s,l=i.$locale().relativeTime||o,h=r.thresholds||[{l:\"s\",r:44,d:\"second\"},{l:\"m\",r:89},{l:\"mm\",r:44,d:\"minute\"},{l:\"h\",r:89},{l:\"hh\",r:21,d:\"hour\"},{l:\"d\",r:35},{l:\"dd\",r:25,d:\"day\"},{l:\"M\",r:45},{l:\"MM\",r:10,d:\"month\"},{l:\"y\",r:17},{l:\"yy\",d:\"year\"}],m=h.length,c=0;c<m;c+=1){var y=h[c];y.d&&(f=d?t(e).diff(i,y.d,!0):i.diff(e,y.d,!0));var p=(r.rounding||Math.round)(Math.abs(f));if(s=f>0,p<=y.r||!y.r){p<=1&&c>0&&(y=h[c-1]);var v=l[y.l];u&&(p=u(\"\"+p)),a=\"string\"==typeof v?v.replace(\"%d\",p):v(p,n,y.l,s);break}}if(n)return a;var M=s?l.future:l.past;return\"function\"==typeof M?M(a):M.replace(\"%s\",a)},n.to=function(r,e){return i(r,e,this,!0)},n.from=function(r,e){return i(r,e,this)};var d=function(r){return r.$u?t.utc():t()};n.toNow=function(r){return this.to(d(this),r)},n.fromNow=function(r){return this.from(d(this),r)}}}));","!function(_,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t(require(\"dayjs\")):\"function\"==typeof define&&define.amd?define([\"dayjs\"],t):(_=\"undefined\"!=typeof globalThis?globalThis:_||self).dayjs_locale_ru=t(_.dayjs)}(this,(function(_){\"use strict\";function t(_){return _&&\"object\"==typeof _&&\"default\"in _?_:{default:_}}var e=t(_),n=\"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря\".split(\"_\"),s=\"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь\".split(\"_\"),r=\"янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.\".split(\"_\"),o=\"янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.\".split(\"_\"),i=/D[oD]?(\\[[^[\\]]*\\]|\\s)+MMMM?/;function d(_,t,e){var n,s;return\"m\"===e?t?\"минута\":\"минуту\":_+\" \"+(n=+_,s={mm:t?\"минута_минуты_минут\":\"минуту_минуты_минут\",hh:\"час_часа_часов\",dd:\"день_дня_дней\",MM:\"месяц_месяца_месяцев\",yy:\"год_года_лет\"}[e].split(\"_\"),n%10==1&&n%100!=11?s[0]:n%10>=2&&n%10<=4&&(n%100<10||n%100>=20)?s[1]:s[2])}var u=function(_,t){return i.test(t)?n[_.month()]:s[_.month()]};u.s=s,u.f=n;var a=function(_,t){return i.test(t)?r[_.month()]:o[_.month()]};a.s=o,a.f=r;var m={name:\"ru\",weekdays:\"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота\".split(\"_\"),weekdaysShort:\"вск_пнд_втр_срд_чтв_птн_сбт\".split(\"_\"),weekdaysMin:\"вс_пн_вт_ср_чт_пт_сб\".split(\"_\"),months:u,monthsShort:a,weekStart:1,yearStart:4,formats:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D MMMM YYYY г.\",LLL:\"D MMMM YYYY г., H:mm\",LLLL:\"dddd, D MMMM YYYY г., H:mm\"},relativeTime:{future:\"через %s\",past:\"%s назад\",s:\"несколько секунд\",m:d,mm:d,h:\"час\",hh:d,d:\"день\",dd:d,M:\"месяц\",MM:d,y:\"год\",yy:d},ordinal:function(_){return _},meridiem:function(_){return _<4?\"ночи\":_<12?\"утра\":_<17?\"дня\":\"вечера\"}};return e.default.locale(m,null,!0),m}));","/**\n * ---header-docs-section---\n * # yummies/date-time\n *\n * ## Description\n *\n * Date and time formatting built on **dayjs** with locale plugins, human-readable presets, relative\n * phrases, and duration helpers tailored to UI copy. It composes with `yummies/format`, `yummies/ms`,\n * and `yummies/text` for declensions so timestamps read naturally in Russian-facing apps.\n *\n * ## Usage\n *\n * ```ts\n * import { formatDate } from \"yummies/date-time\";\n * ```\n */\n\nimport dayjs, { type Dayjs, type ManipulateType } from 'dayjs';\nimport duration from 'dayjs/plugin/duration.js';\nimport relativeTime from 'dayjs/plugin/relativeTime.js';\nimport { format } from 'yummies/format';\nimport { ms, unitsToMs } from 'yummies/ms';\nimport { declension } from 'yummies/text';\nimport { typeGuard } from 'yummies/type-guard';\nimport type { Maybe } from 'yummies/types';\n\nimport 'dayjs/locale/ru.js';\n\ndayjs.extend(relativeTime);\ndayjs.extend(duration);\ndayjs.locale('ru');\n\nconst toLibFormat = (value: Maybe<RawDateToFormat>): Dayjs | null => {\n let result: Maybe<Dayjs> = null;\n if (dayjs.isDayjs(value)) {\n result = value;\n } else if (value != null) {\n result = dayjs(value);\n }\n\n if (!result?.isValid()) {\n return null;\n }\n\n return result;\n};\n\nexport type RawDateToFormat = Date | string | number | Dayjs;\n\n/**\n * Formats a date-like value using predefined presets or a custom pattern.\n *\n * @example\n * ```ts\n * formatDate('2024-03-15', { format: 'time-short' });\n * ```\n */\nexport const formatDate = (\n value: Maybe<RawDateToFormat>,\n settings?: Maybe<{\n format?:\n | 'human'\n | 'full'\n | 'short'\n | 'day'\n | 'day-only'\n | 'date'\n | 'month'\n | 'spent-time'\n | 'time'\n | 'time-short';\n pattern?: string;\n asTime?: boolean;\n }>,\n) => {\n const dateFormat = settings?.format;\n const datePattern = settings?.pattern;\n const asTime = settings?.asTime;\n\n let libDate: duration.Duration | dayjs.Dayjs | null = null;\n\n if (asTime && typeGuard.isNumber(value)) {\n libDate = dayjs.duration(value);\n } else {\n libDate = toLibFormat(value);\n }\n\n if (!libDate) {\n return format.NO_VALUE;\n }\n\n if (datePattern) {\n return libDate.format(datePattern);\n }\n\n if (dateFormat === 'human' || dateFormat === 'spent-time') {\n if ('fromNow' in libDate) {\n return libDate.fromNow(dateFormat === 'spent-time');\n } else {\n return format.NO_VALUE;\n }\n }\n\n switch (dateFormat) {\n case 'full': {\n return libDate.format('DD MMM YYYY HH:mm:ss');\n }\n case 'short': {\n return libDate.format('DD MMM HH:mm');\n }\n case 'time': {\n return libDate.format('HH:mm:ss');\n }\n case 'time-short': {\n return libDate.format('HH:mm');\n }\n case 'day': {\n return libDate.format('DD MMM YYYY');\n }\n case 'month': {\n return libDate.format('MMMM YYYY');\n }\n default: {\n return libDate.format('DD.MM.YYYY');\n }\n }\n};\n\n/**\n * Splits a duration in milliseconds into day-based time parts.\n *\n * @example\n * ```ts\n * dayTimeDuration(ms(1, 'day') + ms(2, 'hour'));\n * ```\n */\nexport const dayTimeDuration = (timeInMs: number) => {\n let left = Math.max(timeInMs, 0);\n\n const days = Math.floor(left / unitsToMs.day);\n left = left % unitsToMs.day;\n\n const hours = Math.floor(left / unitsToMs.hour);\n left = left % unitsToMs.hour;\n\n const minutes = Math.floor(left / unitsToMs.min);\n left = left % unitsToMs.min;\n\n const seconds = Math.floor(left / unitsToMs.sec);\n left = left % unitsToMs.sec;\n\n const milliseconds = Math.floor(left);\n\n return {\n days,\n hours,\n minutes,\n seconds,\n milliseconds,\n };\n};\n\ntype DateChangeParam = [amount: number, unit?: Maybe<ManipulateType>];\n\n/**\n * Applies one or more date adjustments and returns a new `Date` instance.\n *\n * @example\n * ```ts\n * changeDate(new Date(), 1, 'day', 30, 'minute');\n * ```\n */\nexport const changeDate = (\n date: Maybe<RawDateToFormat>,\n ...args: [\n ...DateChangeParam,\n ...Partial<DateChangeParam>,\n ...Partial<DateChangeParam>,\n ...Partial<DateChangeParam>,\n ...Partial<DateChangeParam>,\n ...Partial<DateChangeParam>,\n ]\n) => {\n let wrappedDate = toLibFormat(date)!;\n\n for (let i = 0; i < args.length; i += 2) {\n const amount = args[i] as DateChangeParam[0];\n const unit = args[i + 1] as DateChangeParam[1];\n if (unit != null) {\n wrappedDate = wrappedDate.add(amount, unit);\n }\n }\n\n return wrappedDate.toDate();\n};\n\n/**\n * Converts milliseconds into hour-based time parts without keeping full days separately.\n *\n * @example\n * ```ts\n * timeDuration(ms(1, 'hour') + ms(30, 'min'));\n * ```\n */\nexport const timeDuration = (timeInMs: number) => {\n const { days, hours, milliseconds, minutes, seconds } =\n dayTimeDuration(timeInMs);\n\n return {\n hours: hours + unitsToMs.day * days,\n milliseconds,\n minutes,\n seconds,\n };\n};\n\nconst durationFormatLabels = {\n days: { compact: 'д', full: ['день', 'дня', 'дней'] },\n hours: { compact: 'ч', full: ['час', 'часа', 'часов'] },\n minutes: { compact: 'мин', full: ['минута', 'минуты', 'минут'] },\n seconds: { compact: 'сек', full: ['секунда', 'секунды', 'секунд'] },\n} as const;\n\n/**\n * Formats a duration either from milliseconds or between two dates.\n *\n * @example\n * ```ts\n * getFormatDuration(ms(2, 'hour') + ms(15, 'min'));\n * ```\n */\nexport function getFormatDuration(\n dateA: Date,\n dateB: Date,\n compact?: boolean,\n): string;\nexport function getFormatDuration(ms: number, compact?: boolean): string;\n\nexport function getFormatDuration(...args: any[]): string {\n let compact = false;\n let diff = 0;\n\n if (args[0] instanceof Date) {\n const startedDate = dayjs(args[0]);\n const endedDate = dayjs(args[1]);\n\n diff = endedDate.diff(startedDate, 'ms');\n compact = args[2] === true;\n } else {\n diff = args[0];\n compact = args[1] === true;\n }\n\n const { days, hours, minutes, seconds } = dayTimeDuration(diff);\n\n const formattedParts: string[] = [];\n\n if (days) {\n if (compact) {\n formattedParts.push(`${days} ${durationFormatLabels.days.compact}`);\n } else {\n formattedParts.push(\n `${days} ${declension(days, durationFormatLabels.days.full)}`,\n );\n }\n }\n\n if (hours) {\n if (compact) {\n formattedParts.push(`${hours} ${durationFormatLabels.hours.compact}`);\n } else {\n formattedParts.push(\n `${hours} ${declension(hours, durationFormatLabels.hours.full)}`,\n );\n }\n }\n\n if (minutes) {\n if (compact) {\n formattedParts.push(`${minutes} ${durationFormatLabels.minutes.compact}`);\n } else {\n formattedParts.push(\n `${minutes} ${declension(minutes, durationFormatLabels.minutes.full)}`,\n );\n }\n }\n\n if (seconds) {\n if (compact) {\n formattedParts.push(`${seconds} ${durationFormatLabels.seconds.compact}`);\n } else {\n formattedParts.push(\n `${seconds} ${declension(seconds, durationFormatLabels.seconds.full)}`,\n );\n }\n }\n\n return formattedParts.join(' ');\n}\n\nexport type TimeDiff = {\n minutes: number;\n seconds: number;\n total: {\n ms: number;\n hours: number;\n };\n};\n\n/**\n * Calculates the difference between two dates in minutes, seconds and total units.\n *\n * @example\n * ```ts\n * getTimeDiff(new Date('2024-03-15T12:30:00'), new Date('2024-03-15T12:00:00'));\n * ```\n */\nexport const getTimeDiff = (\n dateA: RawDateToFormat,\n dateB: RawDateToFormat,\n): TimeDiff => {\n const leftDate = toLibFormat(dateA)?.toDate();\n const rightDate = toLibFormat(dateB)?.toDate();\n\n if (!leftDate || !rightDate) {\n return {\n minutes: 0,\n seconds: 0,\n total: { ms: 0, hours: 0 },\n };\n }\n\n const msDiff = leftDate.getTime() - rightDate.getTime();\n\n return {\n minutes: Math.max(Math.floor(msDiff / ms(1, 'min')), 0),\n seconds: Math.max(Math.floor((msDiff % ms(1, 'min')) / 1000), 0),\n total: {\n hours: Math.round(msDiff / ms(1, 'hour')),\n ms: msDiff,\n },\n };\n};\n\n/**\n * Returns a new date shifted forward by the provided number of days.\n *\n * @example\n * ```ts\n * addDays(new Date('2024-03-15'), 7);\n * ```\n */\nexport const addDays = (date: RawDateToFormat, count: number) =>\n toLibFormat(date)?.add(count, 'd').toDate();\n\n/**\n * Returns a new date shifted backward by the provided number of days.\n *\n * @example\n * ```ts\n * subtractDays(new Date('2024-03-15'), 7);\n * ```\n */\nexport const subtractDays = (date: RawDateToFormat, count: number) =>\n toLibFormat(date)?.subtract(count, 'd').toDate();\n\n/**\n * Returns a new date shifted forward by the provided number of minutes.\n *\n * @example\n * ```ts\n * addMinutes(new Date('2024-03-15T12:00:00'), 15);\n * ```\n */\nexport const addMinutes = (date: RawDateToFormat, count: number) =>\n toLibFormat(date)?.add(count, 'm').toDate();\n\n/**\n * Returns a new date with the minutes field replaced.\n *\n * @example\n * ```ts\n * setMinutes(new Date('2024-03-15T12:00:00'), 45);\n * ```\n */\nexport const setMinutes = (date: RawDateToFormat, minutes: number) =>\n toLibFormat(date)?.set('m', minutes).toDate();\n\n/**\n * Returns a new date with the hours field replaced.\n *\n * @example\n * ```ts\n * setHours(new Date('2024-03-15T12:00:00'), 9);\n * ```\n */\nexport const setHours = (date: RawDateToFormat, hours: number) =>\n toLibFormat(date)?.set('h', hours).toDate();\n"],"x_google_ignoreList":[0,1,2],"mappings":"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"}
package/date-time.d.ts CHANGED
@@ -1,6 +1,23 @@
1
1
  import { Dayjs, ManipulateType } from 'dayjs';
2
2
  import { Maybe } from 'yummies/types';
3
3
 
4
+ /**
5
+ * ---header-docs-section---
6
+ * # yummies/date-time
7
+ *
8
+ * ## Description
9
+ *
10
+ * Date and time formatting built on **dayjs** with locale plugins, human-readable presets, relative
11
+ * phrases, and duration helpers tailored to UI copy. It composes with `yummies/format`, `yummies/ms`,
12
+ * and `yummies/text` for declensions so timestamps read naturally in Russian-facing apps.
13
+ *
14
+ * ## Usage
15
+ *
16
+ * ```ts
17
+ * import { formatDate } from "yummies/date-time";
18
+ * ```
19
+ */
20
+
4
21
  type RawDateToFormat = Date | string | number | Dayjs;
5
22
  /**
6
23
  * Formats a date-like value using predefined presets or a custom pattern.
package/date-time.js CHANGED
@@ -348,6 +348,22 @@ var require_ru = /* @__PURE__ */ __commonJSMin(((exports, module) => {
348
348
  }));
349
349
  //#endregion
350
350
  //#region src/date-time.ts
351
+ /**
352
+ * ---header-docs-section---
353
+ * # yummies/date-time
354
+ *
355
+ * ## Description
356
+ *
357
+ * Date and time formatting built on **dayjs** with locale plugins, human-readable presets, relative
358
+ * phrases, and duration helpers tailored to UI copy. It composes with `yummies/format`, `yummies/ms`,
359
+ * and `yummies/text` for declensions so timestamps read naturally in Russian-facing apps.
360
+ *
361
+ * ## Usage
362
+ *
363
+ * ```ts
364
+ * import { formatDate } from "yummies/date-time";
365
+ * ```
366
+ */
351
367
  var import_duration = /* @__PURE__ */ __toESM(require_duration(), 1);
352
368
  var import_relativeTime = /* @__PURE__ */ __toESM(require_relativeTime(), 1);
353
369
  require_ru();
package/date-time.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"date-time.js","names":[],"sources":["../node_modules/.pnpm/dayjs@1.11.20/node_modules/dayjs/plugin/duration.js","../node_modules/.pnpm/dayjs@1.11.20/node_modules/dayjs/plugin/relativeTime.js","../node_modules/.pnpm/dayjs@1.11.20/node_modules/dayjs/locale/ru.js","../src/date-time.ts"],"sourcesContent":["!function(t,s){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=s():\"function\"==typeof define&&define.amd?define(s):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_duration=s()}(this,(function(){\"use strict\";var t,s,n=1e3,i=6e4,e=36e5,r=864e5,o=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,u=31536e6,d=2628e6,a=/^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/,h={years:u,months:d,days:r,hours:e,minutes:i,seconds:n,milliseconds:1,weeks:6048e5},c=function(t){return t instanceof g},f=function(t,s,n){return new g(t,n,s.$l)},m=function(t){return s.p(t)+\"s\"},l=function(t){return t<0},$=function(t){return l(t)?Math.ceil(t):Math.floor(t)},y=function(t){return Math.abs(t)},v=function(t,s){return t?l(t)?{negative:!0,format:\"\"+y(t)+s}:{negative:!1,format:\"\"+t+s}:{negative:!1,format:\"\"}},g=function(){function l(t,s,n){var i=this;if(this.$d={},this.$l=n,void 0===t&&(this.$ms=0,this.parseFromMilliseconds()),s)return f(t*h[m(s)],this);if(\"number\"==typeof t)return this.$ms=t,this.parseFromMilliseconds(),this;if(\"object\"==typeof t)return Object.keys(t).forEach((function(s){i.$d[m(s)]=t[s]})),this.calMilliseconds(),this;if(\"string\"==typeof t){var e=t.match(a);if(e){var r=e.slice(2).map((function(t){return null!=t?Number(t):0}));return this.$d.years=r[0],this.$d.months=r[1],this.$d.weeks=r[2],this.$d.days=r[3],this.$d.hours=r[4],this.$d.minutes=r[5],this.$d.seconds=r[6],this.calMilliseconds(),this}}return this}var y=l.prototype;return y.calMilliseconds=function(){var t=this;this.$ms=Object.keys(this.$d).reduce((function(s,n){return s+(t.$d[n]||0)*h[n]}),0)},y.parseFromMilliseconds=function(){var t=this.$ms;this.$d.years=$(t/u),t%=u,this.$d.months=$(t/d),t%=d,this.$d.days=$(t/r),t%=r,this.$d.hours=$(t/e),t%=e,this.$d.minutes=$(t/i),t%=i,this.$d.seconds=$(t/n),t%=n,this.$d.milliseconds=t},y.toISOString=function(){var t=v(this.$d.years,\"Y\"),s=v(this.$d.months,\"M\"),n=+this.$d.days||0;this.$d.weeks&&(n+=7*this.$d.weeks);var i=v(n,\"D\"),e=v(this.$d.hours,\"H\"),r=v(this.$d.minutes,\"M\"),o=this.$d.seconds||0;this.$d.milliseconds&&(o+=this.$d.milliseconds/1e3,o=Math.round(1e3*o)/1e3);var u=v(o,\"S\"),d=t.negative||s.negative||i.negative||e.negative||r.negative||u.negative,a=e.format||r.format||u.format?\"T\":\"\",h=(d?\"-\":\"\")+\"P\"+t.format+s.format+i.format+a+e.format+r.format+u.format;return\"P\"===h||\"-P\"===h?\"P0D\":h},y.toJSON=function(){return this.toISOString()},y.format=function(t){var n=t||\"YYYY-MM-DDTHH:mm:ss\",i={Y:this.$d.years,YY:s.s(this.$d.years,2,\"0\"),YYYY:s.s(this.$d.years,4,\"0\"),M:this.$d.months,MM:s.s(this.$d.months,2,\"0\"),D:this.$d.days,DD:s.s(this.$d.days,2,\"0\"),H:this.$d.hours,HH:s.s(this.$d.hours,2,\"0\"),m:this.$d.minutes,mm:s.s(this.$d.minutes,2,\"0\"),s:this.$d.seconds,ss:s.s(this.$d.seconds,2,\"0\"),SSS:s.s(this.$d.milliseconds,3,\"0\")};return n.replace(o,(function(t,s){return s||String(i[t])}))},y.as=function(t){return this.$ms/h[m(t)]},y.get=function(t){var s=this.$ms,n=m(t);return\"milliseconds\"===n?s%=1e3:s=\"weeks\"===n?$(s/h[n]):this.$d[n],s||0},y.add=function(t,s,n){var i;return i=s?t*h[m(s)]:c(t)?t.$ms:f(t,this).$ms,f(this.$ms+i*(n?-1:1),this)},y.subtract=function(t,s){return this.add(t,s,!0)},y.locale=function(t){var s=this.clone();return s.$l=t,s},y.clone=function(){return f(this.$ms,this)},y.humanize=function(s){return t().add(this.$ms,\"ms\").locale(this.$l).fromNow(!s)},y.valueOf=function(){return this.asMilliseconds()},y.milliseconds=function(){return this.get(\"milliseconds\")},y.asMilliseconds=function(){return this.as(\"milliseconds\")},y.seconds=function(){return this.get(\"seconds\")},y.asSeconds=function(){return this.as(\"seconds\")},y.minutes=function(){return this.get(\"minutes\")},y.asMinutes=function(){return this.as(\"minutes\")},y.hours=function(){return this.get(\"hours\")},y.asHours=function(){return this.as(\"hours\")},y.days=function(){return this.get(\"days\")},y.asDays=function(){return this.as(\"days\")},y.weeks=function(){return this.get(\"weeks\")},y.asWeeks=function(){return this.as(\"weeks\")},y.months=function(){return this.get(\"months\")},y.asMonths=function(){return this.as(\"months\")},y.years=function(){return this.get(\"years\")},y.asYears=function(){return this.as(\"years\")},l}(),p=function(t,s,n){return t.add(s.years()*n,\"y\").add(s.months()*n,\"M\").add(s.days()*n,\"d\").add(s.hours()*n,\"h\").add(s.minutes()*n,\"m\").add(s.seconds()*n,\"s\").add(s.milliseconds()*n,\"ms\")};return function(n,i,e){t=e,s=e().$utils(),e.duration=function(t,s){var n=e.locale();return f(t,{$l:n},s)},e.isDuration=c;var r=i.prototype.add,o=i.prototype.subtract;i.prototype.add=function(t,s){return c(t)?p(this,t,1):r.bind(this)(t,s)},i.prototype.subtract=function(t,s){return c(t)?p(this,t,-1):o.bind(this)(t,s)}}}));","!function(r,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(r=\"undefined\"!=typeof globalThis?globalThis:r||self).dayjs_plugin_relativeTime=e()}(this,(function(){\"use strict\";return function(r,e,t){r=r||{};var n=e.prototype,o={future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"};function i(r,e,t,o){return n.fromToBase(r,e,t,o)}t.en.relativeTime=o,n.fromToBase=function(e,n,i,d,u){for(var f,a,s,l=i.$locale().relativeTime||o,h=r.thresholds||[{l:\"s\",r:44,d:\"second\"},{l:\"m\",r:89},{l:\"mm\",r:44,d:\"minute\"},{l:\"h\",r:89},{l:\"hh\",r:21,d:\"hour\"},{l:\"d\",r:35},{l:\"dd\",r:25,d:\"day\"},{l:\"M\",r:45},{l:\"MM\",r:10,d:\"month\"},{l:\"y\",r:17},{l:\"yy\",d:\"year\"}],m=h.length,c=0;c<m;c+=1){var y=h[c];y.d&&(f=d?t(e).diff(i,y.d,!0):i.diff(e,y.d,!0));var p=(r.rounding||Math.round)(Math.abs(f));if(s=f>0,p<=y.r||!y.r){p<=1&&c>0&&(y=h[c-1]);var v=l[y.l];u&&(p=u(\"\"+p)),a=\"string\"==typeof v?v.replace(\"%d\",p):v(p,n,y.l,s);break}}if(n)return a;var M=s?l.future:l.past;return\"function\"==typeof M?M(a):M.replace(\"%s\",a)},n.to=function(r,e){return i(r,e,this,!0)},n.from=function(r,e){return i(r,e,this)};var d=function(r){return r.$u?t.utc():t()};n.toNow=function(r){return this.to(d(this),r)},n.fromNow=function(r){return this.from(d(this),r)}}}));","!function(_,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t(require(\"dayjs\")):\"function\"==typeof define&&define.amd?define([\"dayjs\"],t):(_=\"undefined\"!=typeof globalThis?globalThis:_||self).dayjs_locale_ru=t(_.dayjs)}(this,(function(_){\"use strict\";function t(_){return _&&\"object\"==typeof _&&\"default\"in _?_:{default:_}}var e=t(_),n=\"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря\".split(\"_\"),s=\"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь\".split(\"_\"),r=\"янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.\".split(\"_\"),o=\"янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.\".split(\"_\"),i=/D[oD]?(\\[[^[\\]]*\\]|\\s)+MMMM?/;function d(_,t,e){var n,s;return\"m\"===e?t?\"минута\":\"минуту\":_+\" \"+(n=+_,s={mm:t?\"минута_минуты_минут\":\"минуту_минуты_минут\",hh:\"час_часа_часов\",dd:\"день_дня_дней\",MM:\"месяц_месяца_месяцев\",yy:\"год_года_лет\"}[e].split(\"_\"),n%10==1&&n%100!=11?s[0]:n%10>=2&&n%10<=4&&(n%100<10||n%100>=20)?s[1]:s[2])}var u=function(_,t){return i.test(t)?n[_.month()]:s[_.month()]};u.s=s,u.f=n;var a=function(_,t){return i.test(t)?r[_.month()]:o[_.month()]};a.s=o,a.f=r;var m={name:\"ru\",weekdays:\"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота\".split(\"_\"),weekdaysShort:\"вск_пнд_втр_срд_чтв_птн_сбт\".split(\"_\"),weekdaysMin:\"вс_пн_вт_ср_чт_пт_сб\".split(\"_\"),months:u,monthsShort:a,weekStart:1,yearStart:4,formats:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D MMMM YYYY г.\",LLL:\"D MMMM YYYY г., H:mm\",LLLL:\"dddd, D MMMM YYYY г., H:mm\"},relativeTime:{future:\"через %s\",past:\"%s назад\",s:\"несколько секунд\",m:d,mm:d,h:\"час\",hh:d,d:\"день\",dd:d,M:\"месяц\",MM:d,y:\"год\",yy:d},ordinal:function(_){return _},meridiem:function(_){return _<4?\"ночи\":_<12?\"утра\":_<17?\"дня\":\"вечера\"}};return e.default.locale(m,null,!0),m}));","import dayjs, { type Dayjs, type ManipulateType } from 'dayjs';\nimport duration from 'dayjs/plugin/duration.js';\nimport relativeTime from 'dayjs/plugin/relativeTime.js';\nimport { format } from 'yummies/format';\nimport { ms, unitsToMs } from 'yummies/ms';\nimport { declension } from 'yummies/text';\nimport { typeGuard } from 'yummies/type-guard';\nimport type { Maybe } from 'yummies/types';\n\nimport 'dayjs/locale/ru.js';\n\ndayjs.extend(relativeTime);\ndayjs.extend(duration);\ndayjs.locale('ru');\n\nconst toLibFormat = (value: Maybe<RawDateToFormat>): Dayjs | null => {\n let result: Maybe<Dayjs> = null;\n if (dayjs.isDayjs(value)) {\n result = value;\n } else if (value != null) {\n result = dayjs(value);\n }\n\n if (!result?.isValid()) {\n return null;\n }\n\n return result;\n};\n\nexport type RawDateToFormat = Date | string | number | Dayjs;\n\n/**\n * Formats a date-like value using predefined presets or a custom pattern.\n *\n * @example\n * ```ts\n * formatDate('2024-03-15', { format: 'time-short' });\n * ```\n */\nexport const formatDate = (\n value: Maybe<RawDateToFormat>,\n settings?: Maybe<{\n format?:\n | 'human'\n | 'full'\n | 'short'\n | 'day'\n | 'day-only'\n | 'date'\n | 'month'\n | 'spent-time'\n | 'time'\n | 'time-short';\n pattern?: string;\n asTime?: boolean;\n }>,\n) => {\n const dateFormat = settings?.format;\n const datePattern = settings?.pattern;\n const asTime = settings?.asTime;\n\n let libDate: duration.Duration | dayjs.Dayjs | null = null;\n\n if (asTime && typeGuard.isNumber(value)) {\n libDate = dayjs.duration(value);\n } else {\n libDate = toLibFormat(value);\n }\n\n if (!libDate) {\n return format.NO_VALUE;\n }\n\n if (datePattern) {\n return libDate.format(datePattern);\n }\n\n if (dateFormat === 'human' || dateFormat === 'spent-time') {\n if ('fromNow' in libDate) {\n return libDate.fromNow(dateFormat === 'spent-time');\n } else {\n return format.NO_VALUE;\n }\n }\n\n switch (dateFormat) {\n case 'full': {\n return libDate.format('DD MMM YYYY HH:mm:ss');\n }\n case 'short': {\n return libDate.format('DD MMM HH:mm');\n }\n case 'time': {\n return libDate.format('HH:mm:ss');\n }\n case 'time-short': {\n return libDate.format('HH:mm');\n }\n case 'day': {\n return libDate.format('DD MMM YYYY');\n }\n case 'month': {\n return libDate.format('MMMM YYYY');\n }\n default: {\n return libDate.format('DD.MM.YYYY');\n }\n }\n};\n\n/**\n * Splits a duration in milliseconds into day-based time parts.\n *\n * @example\n * ```ts\n * dayTimeDuration(ms(1, 'day') + ms(2, 'hour'));\n * ```\n */\nexport const dayTimeDuration = (timeInMs: number) => {\n let left = Math.max(timeInMs, 0);\n\n const days = Math.floor(left / unitsToMs.day);\n left = left % unitsToMs.day;\n\n const hours = Math.floor(left / unitsToMs.hour);\n left = left % unitsToMs.hour;\n\n const minutes = Math.floor(left / unitsToMs.min);\n left = left % unitsToMs.min;\n\n const seconds = Math.floor(left / unitsToMs.sec);\n left = left % unitsToMs.sec;\n\n const milliseconds = Math.floor(left);\n\n return {\n days,\n hours,\n minutes,\n seconds,\n milliseconds,\n };\n};\n\ntype DateChangeParam = [amount: number, unit?: Maybe<ManipulateType>];\n\n/**\n * Applies one or more date adjustments and returns a new `Date` instance.\n *\n * @example\n * ```ts\n * changeDate(new Date(), 1, 'day', 30, 'minute');\n * ```\n */\nexport const changeDate = (\n date: Maybe<RawDateToFormat>,\n ...args: [\n ...DateChangeParam,\n ...Partial<DateChangeParam>,\n ...Partial<DateChangeParam>,\n ...Partial<DateChangeParam>,\n ...Partial<DateChangeParam>,\n ...Partial<DateChangeParam>,\n ]\n) => {\n let wrappedDate = toLibFormat(date)!;\n\n for (let i = 0; i < args.length; i += 2) {\n const amount = args[i] as DateChangeParam[0];\n const unit = args[i + 1] as DateChangeParam[1];\n if (unit != null) {\n wrappedDate = wrappedDate.add(amount, unit);\n }\n }\n\n return wrappedDate.toDate();\n};\n\n/**\n * Converts milliseconds into hour-based time parts without keeping full days separately.\n *\n * @example\n * ```ts\n * timeDuration(ms(1, 'hour') + ms(30, 'min'));\n * ```\n */\nexport const timeDuration = (timeInMs: number) => {\n const { days, hours, milliseconds, minutes, seconds } =\n dayTimeDuration(timeInMs);\n\n return {\n hours: hours + unitsToMs.day * days,\n milliseconds,\n minutes,\n seconds,\n };\n};\n\nconst durationFormatLabels = {\n days: { compact: 'д', full: ['день', 'дня', 'дней'] },\n hours: { compact: 'ч', full: ['час', 'часа', 'часов'] },\n minutes: { compact: 'мин', full: ['минута', 'минуты', 'минут'] },\n seconds: { compact: 'сек', full: ['секунда', 'секунды', 'секунд'] },\n} as const;\n\n/**\n * Formats a duration either from milliseconds or between two dates.\n *\n * @example\n * ```ts\n * getFormatDuration(ms(2, 'hour') + ms(15, 'min'));\n * ```\n */\nexport function getFormatDuration(\n dateA: Date,\n dateB: Date,\n compact?: boolean,\n): string;\nexport function getFormatDuration(ms: number, compact?: boolean): string;\n\nexport function getFormatDuration(...args: any[]): string {\n let compact = false;\n let diff = 0;\n\n if (args[0] instanceof Date) {\n const startedDate = dayjs(args[0]);\n const endedDate = dayjs(args[1]);\n\n diff = endedDate.diff(startedDate, 'ms');\n compact = args[2] === true;\n } else {\n diff = args[0];\n compact = args[1] === true;\n }\n\n const { days, hours, minutes, seconds } = dayTimeDuration(diff);\n\n const formattedParts: string[] = [];\n\n if (days) {\n if (compact) {\n formattedParts.push(`${days} ${durationFormatLabels.days.compact}`);\n } else {\n formattedParts.push(\n `${days} ${declension(days, durationFormatLabels.days.full)}`,\n );\n }\n }\n\n if (hours) {\n if (compact) {\n formattedParts.push(`${hours} ${durationFormatLabels.hours.compact}`);\n } else {\n formattedParts.push(\n `${hours} ${declension(hours, durationFormatLabels.hours.full)}`,\n );\n }\n }\n\n if (minutes) {\n if (compact) {\n formattedParts.push(`${minutes} ${durationFormatLabels.minutes.compact}`);\n } else {\n formattedParts.push(\n `${minutes} ${declension(minutes, durationFormatLabels.minutes.full)}`,\n );\n }\n }\n\n if (seconds) {\n if (compact) {\n formattedParts.push(`${seconds} ${durationFormatLabels.seconds.compact}`);\n } else {\n formattedParts.push(\n `${seconds} ${declension(seconds, durationFormatLabels.seconds.full)}`,\n );\n }\n }\n\n return formattedParts.join(' ');\n}\n\nexport type TimeDiff = {\n minutes: number;\n seconds: number;\n total: {\n ms: number;\n hours: number;\n };\n};\n\n/**\n * Calculates the difference between two dates in minutes, seconds and total units.\n *\n * @example\n * ```ts\n * getTimeDiff(new Date('2024-03-15T12:30:00'), new Date('2024-03-15T12:00:00'));\n * ```\n */\nexport const getTimeDiff = (\n dateA: RawDateToFormat,\n dateB: RawDateToFormat,\n): TimeDiff => {\n const leftDate = toLibFormat(dateA)?.toDate();\n const rightDate = toLibFormat(dateB)?.toDate();\n\n if (!leftDate || !rightDate) {\n return {\n minutes: 0,\n seconds: 0,\n total: { ms: 0, hours: 0 },\n };\n }\n\n const msDiff = leftDate.getTime() - rightDate.getTime();\n\n return {\n minutes: Math.max(Math.floor(msDiff / ms(1, 'min')), 0),\n seconds: Math.max(Math.floor((msDiff % ms(1, 'min')) / 1000), 0),\n total: {\n hours: Math.round(msDiff / ms(1, 'hour')),\n ms: msDiff,\n },\n };\n};\n\n/**\n * Returns a new date shifted forward by the provided number of days.\n *\n * @example\n * ```ts\n * addDays(new Date('2024-03-15'), 7);\n * ```\n */\nexport const addDays = (date: RawDateToFormat, count: number) =>\n toLibFormat(date)?.add(count, 'd').toDate();\n\n/**\n * Returns a new date shifted backward by the provided number of days.\n *\n * @example\n * ```ts\n * subtractDays(new Date('2024-03-15'), 7);\n * ```\n */\nexport const subtractDays = (date: RawDateToFormat, count: number) =>\n toLibFormat(date)?.subtract(count, 'd').toDate();\n\n/**\n * Returns a new date shifted forward by the provided number of minutes.\n *\n * @example\n * ```ts\n * addMinutes(new Date('2024-03-15T12:00:00'), 15);\n * ```\n */\nexport const addMinutes = (date: RawDateToFormat, count: number) =>\n toLibFormat(date)?.add(count, 'm').toDate();\n\n/**\n * Returns a new date with the minutes field replaced.\n *\n * @example\n * ```ts\n * setMinutes(new Date('2024-03-15T12:00:00'), 45);\n * ```\n */\nexport const setMinutes = (date: RawDateToFormat, minutes: number) =>\n toLibFormat(date)?.set('m', minutes).toDate();\n\n/**\n * Returns a new date with the hours field replaced.\n *\n * @example\n * ```ts\n * setHours(new Date('2024-03-15T12:00:00'), 9);\n * ```\n */\nexport const setHours = (date: RawDateToFormat, hours: number) =>\n toLibFormat(date)?.set('h', hours).toDate();\n"],"x_google_ignoreList":[0,1,2],"mappings":"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"}
1
+ {"version":3,"file":"date-time.js","names":[],"sources":["../node_modules/.pnpm/dayjs@1.11.20/node_modules/dayjs/plugin/duration.js","../node_modules/.pnpm/dayjs@1.11.20/node_modules/dayjs/plugin/relativeTime.js","../node_modules/.pnpm/dayjs@1.11.20/node_modules/dayjs/locale/ru.js","../src/date-time.ts"],"sourcesContent":["!function(t,s){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=s():\"function\"==typeof define&&define.amd?define(s):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_duration=s()}(this,(function(){\"use strict\";var t,s,n=1e3,i=6e4,e=36e5,r=864e5,o=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,u=31536e6,d=2628e6,a=/^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/,h={years:u,months:d,days:r,hours:e,minutes:i,seconds:n,milliseconds:1,weeks:6048e5},c=function(t){return t instanceof g},f=function(t,s,n){return new g(t,n,s.$l)},m=function(t){return s.p(t)+\"s\"},l=function(t){return t<0},$=function(t){return l(t)?Math.ceil(t):Math.floor(t)},y=function(t){return Math.abs(t)},v=function(t,s){return t?l(t)?{negative:!0,format:\"\"+y(t)+s}:{negative:!1,format:\"\"+t+s}:{negative:!1,format:\"\"}},g=function(){function l(t,s,n){var i=this;if(this.$d={},this.$l=n,void 0===t&&(this.$ms=0,this.parseFromMilliseconds()),s)return f(t*h[m(s)],this);if(\"number\"==typeof t)return this.$ms=t,this.parseFromMilliseconds(),this;if(\"object\"==typeof t)return Object.keys(t).forEach((function(s){i.$d[m(s)]=t[s]})),this.calMilliseconds(),this;if(\"string\"==typeof t){var e=t.match(a);if(e){var r=e.slice(2).map((function(t){return null!=t?Number(t):0}));return this.$d.years=r[0],this.$d.months=r[1],this.$d.weeks=r[2],this.$d.days=r[3],this.$d.hours=r[4],this.$d.minutes=r[5],this.$d.seconds=r[6],this.calMilliseconds(),this}}return this}var y=l.prototype;return y.calMilliseconds=function(){var t=this;this.$ms=Object.keys(this.$d).reduce((function(s,n){return s+(t.$d[n]||0)*h[n]}),0)},y.parseFromMilliseconds=function(){var t=this.$ms;this.$d.years=$(t/u),t%=u,this.$d.months=$(t/d),t%=d,this.$d.days=$(t/r),t%=r,this.$d.hours=$(t/e),t%=e,this.$d.minutes=$(t/i),t%=i,this.$d.seconds=$(t/n),t%=n,this.$d.milliseconds=t},y.toISOString=function(){var t=v(this.$d.years,\"Y\"),s=v(this.$d.months,\"M\"),n=+this.$d.days||0;this.$d.weeks&&(n+=7*this.$d.weeks);var i=v(n,\"D\"),e=v(this.$d.hours,\"H\"),r=v(this.$d.minutes,\"M\"),o=this.$d.seconds||0;this.$d.milliseconds&&(o+=this.$d.milliseconds/1e3,o=Math.round(1e3*o)/1e3);var u=v(o,\"S\"),d=t.negative||s.negative||i.negative||e.negative||r.negative||u.negative,a=e.format||r.format||u.format?\"T\":\"\",h=(d?\"-\":\"\")+\"P\"+t.format+s.format+i.format+a+e.format+r.format+u.format;return\"P\"===h||\"-P\"===h?\"P0D\":h},y.toJSON=function(){return this.toISOString()},y.format=function(t){var n=t||\"YYYY-MM-DDTHH:mm:ss\",i={Y:this.$d.years,YY:s.s(this.$d.years,2,\"0\"),YYYY:s.s(this.$d.years,4,\"0\"),M:this.$d.months,MM:s.s(this.$d.months,2,\"0\"),D:this.$d.days,DD:s.s(this.$d.days,2,\"0\"),H:this.$d.hours,HH:s.s(this.$d.hours,2,\"0\"),m:this.$d.minutes,mm:s.s(this.$d.minutes,2,\"0\"),s:this.$d.seconds,ss:s.s(this.$d.seconds,2,\"0\"),SSS:s.s(this.$d.milliseconds,3,\"0\")};return n.replace(o,(function(t,s){return s||String(i[t])}))},y.as=function(t){return this.$ms/h[m(t)]},y.get=function(t){var s=this.$ms,n=m(t);return\"milliseconds\"===n?s%=1e3:s=\"weeks\"===n?$(s/h[n]):this.$d[n],s||0},y.add=function(t,s,n){var i;return i=s?t*h[m(s)]:c(t)?t.$ms:f(t,this).$ms,f(this.$ms+i*(n?-1:1),this)},y.subtract=function(t,s){return this.add(t,s,!0)},y.locale=function(t){var s=this.clone();return s.$l=t,s},y.clone=function(){return f(this.$ms,this)},y.humanize=function(s){return t().add(this.$ms,\"ms\").locale(this.$l).fromNow(!s)},y.valueOf=function(){return this.asMilliseconds()},y.milliseconds=function(){return this.get(\"milliseconds\")},y.asMilliseconds=function(){return this.as(\"milliseconds\")},y.seconds=function(){return this.get(\"seconds\")},y.asSeconds=function(){return this.as(\"seconds\")},y.minutes=function(){return this.get(\"minutes\")},y.asMinutes=function(){return this.as(\"minutes\")},y.hours=function(){return this.get(\"hours\")},y.asHours=function(){return this.as(\"hours\")},y.days=function(){return this.get(\"days\")},y.asDays=function(){return this.as(\"days\")},y.weeks=function(){return this.get(\"weeks\")},y.asWeeks=function(){return this.as(\"weeks\")},y.months=function(){return this.get(\"months\")},y.asMonths=function(){return this.as(\"months\")},y.years=function(){return this.get(\"years\")},y.asYears=function(){return this.as(\"years\")},l}(),p=function(t,s,n){return t.add(s.years()*n,\"y\").add(s.months()*n,\"M\").add(s.days()*n,\"d\").add(s.hours()*n,\"h\").add(s.minutes()*n,\"m\").add(s.seconds()*n,\"s\").add(s.milliseconds()*n,\"ms\")};return function(n,i,e){t=e,s=e().$utils(),e.duration=function(t,s){var n=e.locale();return f(t,{$l:n},s)},e.isDuration=c;var r=i.prototype.add,o=i.prototype.subtract;i.prototype.add=function(t,s){return c(t)?p(this,t,1):r.bind(this)(t,s)},i.prototype.subtract=function(t,s){return c(t)?p(this,t,-1):o.bind(this)(t,s)}}}));","!function(r,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(r=\"undefined\"!=typeof globalThis?globalThis:r||self).dayjs_plugin_relativeTime=e()}(this,(function(){\"use strict\";return function(r,e,t){r=r||{};var n=e.prototype,o={future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"};function i(r,e,t,o){return n.fromToBase(r,e,t,o)}t.en.relativeTime=o,n.fromToBase=function(e,n,i,d,u){for(var f,a,s,l=i.$locale().relativeTime||o,h=r.thresholds||[{l:\"s\",r:44,d:\"second\"},{l:\"m\",r:89},{l:\"mm\",r:44,d:\"minute\"},{l:\"h\",r:89},{l:\"hh\",r:21,d:\"hour\"},{l:\"d\",r:35},{l:\"dd\",r:25,d:\"day\"},{l:\"M\",r:45},{l:\"MM\",r:10,d:\"month\"},{l:\"y\",r:17},{l:\"yy\",d:\"year\"}],m=h.length,c=0;c<m;c+=1){var y=h[c];y.d&&(f=d?t(e).diff(i,y.d,!0):i.diff(e,y.d,!0));var p=(r.rounding||Math.round)(Math.abs(f));if(s=f>0,p<=y.r||!y.r){p<=1&&c>0&&(y=h[c-1]);var v=l[y.l];u&&(p=u(\"\"+p)),a=\"string\"==typeof v?v.replace(\"%d\",p):v(p,n,y.l,s);break}}if(n)return a;var M=s?l.future:l.past;return\"function\"==typeof M?M(a):M.replace(\"%s\",a)},n.to=function(r,e){return i(r,e,this,!0)},n.from=function(r,e){return i(r,e,this)};var d=function(r){return r.$u?t.utc():t()};n.toNow=function(r){return this.to(d(this),r)},n.fromNow=function(r){return this.from(d(this),r)}}}));","!function(_,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t(require(\"dayjs\")):\"function\"==typeof define&&define.amd?define([\"dayjs\"],t):(_=\"undefined\"!=typeof globalThis?globalThis:_||self).dayjs_locale_ru=t(_.dayjs)}(this,(function(_){\"use strict\";function t(_){return _&&\"object\"==typeof _&&\"default\"in _?_:{default:_}}var e=t(_),n=\"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря\".split(\"_\"),s=\"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь\".split(\"_\"),r=\"янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.\".split(\"_\"),o=\"янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.\".split(\"_\"),i=/D[oD]?(\\[[^[\\]]*\\]|\\s)+MMMM?/;function d(_,t,e){var n,s;return\"m\"===e?t?\"минута\":\"минуту\":_+\" \"+(n=+_,s={mm:t?\"минута_минуты_минут\":\"минуту_минуты_минут\",hh:\"час_часа_часов\",dd:\"день_дня_дней\",MM:\"месяц_месяца_месяцев\",yy:\"год_года_лет\"}[e].split(\"_\"),n%10==1&&n%100!=11?s[0]:n%10>=2&&n%10<=4&&(n%100<10||n%100>=20)?s[1]:s[2])}var u=function(_,t){return i.test(t)?n[_.month()]:s[_.month()]};u.s=s,u.f=n;var a=function(_,t){return i.test(t)?r[_.month()]:o[_.month()]};a.s=o,a.f=r;var m={name:\"ru\",weekdays:\"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота\".split(\"_\"),weekdaysShort:\"вск_пнд_втр_срд_чтв_птн_сбт\".split(\"_\"),weekdaysMin:\"вс_пн_вт_ср_чт_пт_сб\".split(\"_\"),months:u,monthsShort:a,weekStart:1,yearStart:4,formats:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D MMMM YYYY г.\",LLL:\"D MMMM YYYY г., H:mm\",LLLL:\"dddd, D MMMM YYYY г., H:mm\"},relativeTime:{future:\"через %s\",past:\"%s назад\",s:\"несколько секунд\",m:d,mm:d,h:\"час\",hh:d,d:\"день\",dd:d,M:\"месяц\",MM:d,y:\"год\",yy:d},ordinal:function(_){return _},meridiem:function(_){return _<4?\"ночи\":_<12?\"утра\":_<17?\"дня\":\"вечера\"}};return e.default.locale(m,null,!0),m}));","/**\n * ---header-docs-section---\n * # yummies/date-time\n *\n * ## Description\n *\n * Date and time formatting built on **dayjs** with locale plugins, human-readable presets, relative\n * phrases, and duration helpers tailored to UI copy. It composes with `yummies/format`, `yummies/ms`,\n * and `yummies/text` for declensions so timestamps read naturally in Russian-facing apps.\n *\n * ## Usage\n *\n * ```ts\n * import { formatDate } from \"yummies/date-time\";\n * ```\n */\n\nimport dayjs, { type Dayjs, type ManipulateType } from 'dayjs';\nimport duration from 'dayjs/plugin/duration.js';\nimport relativeTime from 'dayjs/plugin/relativeTime.js';\nimport { format } from 'yummies/format';\nimport { ms, unitsToMs } from 'yummies/ms';\nimport { declension } from 'yummies/text';\nimport { typeGuard } from 'yummies/type-guard';\nimport type { Maybe } from 'yummies/types';\n\nimport 'dayjs/locale/ru.js';\n\ndayjs.extend(relativeTime);\ndayjs.extend(duration);\ndayjs.locale('ru');\n\nconst toLibFormat = (value: Maybe<RawDateToFormat>): Dayjs | null => {\n let result: Maybe<Dayjs> = null;\n if (dayjs.isDayjs(value)) {\n result = value;\n } else if (value != null) {\n result = dayjs(value);\n }\n\n if (!result?.isValid()) {\n return null;\n }\n\n return result;\n};\n\nexport type RawDateToFormat = Date | string | number | Dayjs;\n\n/**\n * Formats a date-like value using predefined presets or a custom pattern.\n *\n * @example\n * ```ts\n * formatDate('2024-03-15', { format: 'time-short' });\n * ```\n */\nexport const formatDate = (\n value: Maybe<RawDateToFormat>,\n settings?: Maybe<{\n format?:\n | 'human'\n | 'full'\n | 'short'\n | 'day'\n | 'day-only'\n | 'date'\n | 'month'\n | 'spent-time'\n | 'time'\n | 'time-short';\n pattern?: string;\n asTime?: boolean;\n }>,\n) => {\n const dateFormat = settings?.format;\n const datePattern = settings?.pattern;\n const asTime = settings?.asTime;\n\n let libDate: duration.Duration | dayjs.Dayjs | null = null;\n\n if (asTime && typeGuard.isNumber(value)) {\n libDate = dayjs.duration(value);\n } else {\n libDate = toLibFormat(value);\n }\n\n if (!libDate) {\n return format.NO_VALUE;\n }\n\n if (datePattern) {\n return libDate.format(datePattern);\n }\n\n if (dateFormat === 'human' || dateFormat === 'spent-time') {\n if ('fromNow' in libDate) {\n return libDate.fromNow(dateFormat === 'spent-time');\n } else {\n return format.NO_VALUE;\n }\n }\n\n switch (dateFormat) {\n case 'full': {\n return libDate.format('DD MMM YYYY HH:mm:ss');\n }\n case 'short': {\n return libDate.format('DD MMM HH:mm');\n }\n case 'time': {\n return libDate.format('HH:mm:ss');\n }\n case 'time-short': {\n return libDate.format('HH:mm');\n }\n case 'day': {\n return libDate.format('DD MMM YYYY');\n }\n case 'month': {\n return libDate.format('MMMM YYYY');\n }\n default: {\n return libDate.format('DD.MM.YYYY');\n }\n }\n};\n\n/**\n * Splits a duration in milliseconds into day-based time parts.\n *\n * @example\n * ```ts\n * dayTimeDuration(ms(1, 'day') + ms(2, 'hour'));\n * ```\n */\nexport const dayTimeDuration = (timeInMs: number) => {\n let left = Math.max(timeInMs, 0);\n\n const days = Math.floor(left / unitsToMs.day);\n left = left % unitsToMs.day;\n\n const hours = Math.floor(left / unitsToMs.hour);\n left = left % unitsToMs.hour;\n\n const minutes = Math.floor(left / unitsToMs.min);\n left = left % unitsToMs.min;\n\n const seconds = Math.floor(left / unitsToMs.sec);\n left = left % unitsToMs.sec;\n\n const milliseconds = Math.floor(left);\n\n return {\n days,\n hours,\n minutes,\n seconds,\n milliseconds,\n };\n};\n\ntype DateChangeParam = [amount: number, unit?: Maybe<ManipulateType>];\n\n/**\n * Applies one or more date adjustments and returns a new `Date` instance.\n *\n * @example\n * ```ts\n * changeDate(new Date(), 1, 'day', 30, 'minute');\n * ```\n */\nexport const changeDate = (\n date: Maybe<RawDateToFormat>,\n ...args: [\n ...DateChangeParam,\n ...Partial<DateChangeParam>,\n ...Partial<DateChangeParam>,\n ...Partial<DateChangeParam>,\n ...Partial<DateChangeParam>,\n ...Partial<DateChangeParam>,\n ]\n) => {\n let wrappedDate = toLibFormat(date)!;\n\n for (let i = 0; i < args.length; i += 2) {\n const amount = args[i] as DateChangeParam[0];\n const unit = args[i + 1] as DateChangeParam[1];\n if (unit != null) {\n wrappedDate = wrappedDate.add(amount, unit);\n }\n }\n\n return wrappedDate.toDate();\n};\n\n/**\n * Converts milliseconds into hour-based time parts without keeping full days separately.\n *\n * @example\n * ```ts\n * timeDuration(ms(1, 'hour') + ms(30, 'min'));\n * ```\n */\nexport const timeDuration = (timeInMs: number) => {\n const { days, hours, milliseconds, minutes, seconds } =\n dayTimeDuration(timeInMs);\n\n return {\n hours: hours + unitsToMs.day * days,\n milliseconds,\n minutes,\n seconds,\n };\n};\n\nconst durationFormatLabels = {\n days: { compact: 'д', full: ['день', 'дня', 'дней'] },\n hours: { compact: 'ч', full: ['час', 'часа', 'часов'] },\n minutes: { compact: 'мин', full: ['минута', 'минуты', 'минут'] },\n seconds: { compact: 'сек', full: ['секунда', 'секунды', 'секунд'] },\n} as const;\n\n/**\n * Formats a duration either from milliseconds or between two dates.\n *\n * @example\n * ```ts\n * getFormatDuration(ms(2, 'hour') + ms(15, 'min'));\n * ```\n */\nexport function getFormatDuration(\n dateA: Date,\n dateB: Date,\n compact?: boolean,\n): string;\nexport function getFormatDuration(ms: number, compact?: boolean): string;\n\nexport function getFormatDuration(...args: any[]): string {\n let compact = false;\n let diff = 0;\n\n if (args[0] instanceof Date) {\n const startedDate = dayjs(args[0]);\n const endedDate = dayjs(args[1]);\n\n diff = endedDate.diff(startedDate, 'ms');\n compact = args[2] === true;\n } else {\n diff = args[0];\n compact = args[1] === true;\n }\n\n const { days, hours, minutes, seconds } = dayTimeDuration(diff);\n\n const formattedParts: string[] = [];\n\n if (days) {\n if (compact) {\n formattedParts.push(`${days} ${durationFormatLabels.days.compact}`);\n } else {\n formattedParts.push(\n `${days} ${declension(days, durationFormatLabels.days.full)}`,\n );\n }\n }\n\n if (hours) {\n if (compact) {\n formattedParts.push(`${hours} ${durationFormatLabels.hours.compact}`);\n } else {\n formattedParts.push(\n `${hours} ${declension(hours, durationFormatLabels.hours.full)}`,\n );\n }\n }\n\n if (minutes) {\n if (compact) {\n formattedParts.push(`${minutes} ${durationFormatLabels.minutes.compact}`);\n } else {\n formattedParts.push(\n `${minutes} ${declension(minutes, durationFormatLabels.minutes.full)}`,\n );\n }\n }\n\n if (seconds) {\n if (compact) {\n formattedParts.push(`${seconds} ${durationFormatLabels.seconds.compact}`);\n } else {\n formattedParts.push(\n `${seconds} ${declension(seconds, durationFormatLabels.seconds.full)}`,\n );\n }\n }\n\n return formattedParts.join(' ');\n}\n\nexport type TimeDiff = {\n minutes: number;\n seconds: number;\n total: {\n ms: number;\n hours: number;\n };\n};\n\n/**\n * Calculates the difference between two dates in minutes, seconds and total units.\n *\n * @example\n * ```ts\n * getTimeDiff(new Date('2024-03-15T12:30:00'), new Date('2024-03-15T12:00:00'));\n * ```\n */\nexport const getTimeDiff = (\n dateA: RawDateToFormat,\n dateB: RawDateToFormat,\n): TimeDiff => {\n const leftDate = toLibFormat(dateA)?.toDate();\n const rightDate = toLibFormat(dateB)?.toDate();\n\n if (!leftDate || !rightDate) {\n return {\n minutes: 0,\n seconds: 0,\n total: { ms: 0, hours: 0 },\n };\n }\n\n const msDiff = leftDate.getTime() - rightDate.getTime();\n\n return {\n minutes: Math.max(Math.floor(msDiff / ms(1, 'min')), 0),\n seconds: Math.max(Math.floor((msDiff % ms(1, 'min')) / 1000), 0),\n total: {\n hours: Math.round(msDiff / ms(1, 'hour')),\n ms: msDiff,\n },\n };\n};\n\n/**\n * Returns a new date shifted forward by the provided number of days.\n *\n * @example\n * ```ts\n * addDays(new Date('2024-03-15'), 7);\n * ```\n */\nexport const addDays = (date: RawDateToFormat, count: number) =>\n toLibFormat(date)?.add(count, 'd').toDate();\n\n/**\n * Returns a new date shifted backward by the provided number of days.\n *\n * @example\n * ```ts\n * subtractDays(new Date('2024-03-15'), 7);\n * ```\n */\nexport const subtractDays = (date: RawDateToFormat, count: number) =>\n toLibFormat(date)?.subtract(count, 'd').toDate();\n\n/**\n * Returns a new date shifted forward by the provided number of minutes.\n *\n * @example\n * ```ts\n * addMinutes(new Date('2024-03-15T12:00:00'), 15);\n * ```\n */\nexport const addMinutes = (date: RawDateToFormat, count: number) =>\n toLibFormat(date)?.add(count, 'm').toDate();\n\n/**\n * Returns a new date with the minutes field replaced.\n *\n * @example\n * ```ts\n * setMinutes(new Date('2024-03-15T12:00:00'), 45);\n * ```\n */\nexport const setMinutes = (date: RawDateToFormat, minutes: number) =>\n toLibFormat(date)?.set('m', minutes).toDate();\n\n/**\n * Returns a new date with the hours field replaced.\n *\n * @example\n * ```ts\n * setHours(new Date('2024-03-15T12:00:00'), 9);\n * ```\n */\nexport const setHours = (date: RawDateToFormat, hours: number) =>\n toLibFormat(date)?.set('h', hours).toDate();\n"],"x_google_ignoreList":[0,1,2],"mappings":";;;;;;;;AAAA,EAAC,SAAS,GAAE,GAAE;AAAC,cAAU,OAAO,WAAS,eAAa,OAAO,SAAO,OAAO,UAAQ,GAAG,GAAC,cAAY,OAAO,UAAQ,OAAO,MAAI,OAAO,EAAE,GAAC,CAAC,IAAE,eAAa,OAAO,aAAW,aAAW,KAAG,MAAM,wBAAsB,GAAG;cAAQ,WAAU;AAAC;EAAa,IAAI,GAAE,GAAE,IAAE,KAAI,IAAE,KAAI,IAAE,MAAK,IAAE,OAAM,IAAE,uFAAsF,IAAE,SAAQ,IAAE,QAAO,IAAE,uKAAsK,IAAE;GAAC,OAAM;GAAE,QAAO;GAAE,MAAK;GAAE,OAAM;GAAE,SAAQ;GAAE,SAAQ;GAAE,cAAa;GAAE,OAAM;GAAO,EAAC,IAAE,SAAS,GAAE;AAAC,UAAO,aAAa;KAAG,IAAE,SAAS,GAAE,GAAE,GAAE;AAAC,UAAO,IAAI,EAAE,GAAE,GAAE,EAAE,GAAG;KAAE,IAAE,SAAS,GAAE;AAAC,UAAO,EAAE,EAAE,EAAE,GAAC;KAAK,IAAE,SAAS,GAAE;AAAC,UAAO,IAAE;KAAG,IAAE,SAAS,GAAE;AAAC,UAAO,EAAE,EAAE,GAAC,KAAK,KAAK,EAAE,GAAC,KAAK,MAAM,EAAE;KAAE,IAAE,SAAS,GAAE;AAAC,UAAO,KAAK,IAAI,EAAE;KAAE,IAAE,SAAS,GAAE,GAAE;AAAC,UAAO,IAAE,EAAE,EAAE,GAAC;IAAC,UAAS,CAAC;IAAE,QAAO,KAAG,EAAE,EAAE,GAAC;IAAE,GAAC;IAAC,UAAS,CAAC;IAAE,QAAO,KAAG,IAAE;IAAE,GAAC;IAAC,UAAS,CAAC;IAAE,QAAO;IAAG;KAAE,IAAE,WAAU;GAAC,SAAS,EAAE,GAAE,GAAE,GAAE;IAAC,IAAI,IAAE;AAAK,QAAG,KAAK,KAAG,EAAE,EAAC,KAAK,KAAG,GAAE,KAAK,MAAI,MAAI,KAAK,MAAI,GAAE,KAAK,uBAAuB,GAAE,EAAE,QAAO,EAAE,IAAE,EAAE,EAAE,EAAE,GAAE,KAAK;AAAC,QAAG,YAAU,OAAO,EAAE,QAAO,KAAK,MAAI,GAAE,KAAK,uBAAuB,EAAC;AAAK,QAAG,YAAU,OAAO,EAAE,QAAO,OAAO,KAAK,EAAE,CAAC,SAAS,SAAS,GAAE;AAAC,OAAE,GAAG,EAAE,EAAE,IAAE,EAAE;OAAK,EAAC,KAAK,iBAAiB,EAAC;AAAK,QAAG,YAAU,OAAO,GAAE;KAAC,IAAI,IAAE,EAAE,MAAM,EAAE;AAAC,SAAG,GAAE;MAAC,IAAI,IAAE,EAAE,MAAM,EAAE,CAAC,KAAK,SAAS,GAAE;AAAC,cAAO,QAAM,IAAE,OAAO,EAAE,GAAC;SAAI;AAAC,aAAO,KAAK,GAAG,QAAM,EAAE,IAAG,KAAK,GAAG,SAAO,EAAE,IAAG,KAAK,GAAG,QAAM,EAAE,IAAG,KAAK,GAAG,OAAK,EAAE,IAAG,KAAK,GAAG,QAAM,EAAE,IAAG,KAAK,GAAG,UAAQ,EAAE,IAAG,KAAK,GAAG,UAAQ,EAAE,IAAG,KAAK,iBAAiB,EAAC;;;AAAM,WAAO;;GAAK,IAAI,IAAE,EAAE;AAAU,UAAO,EAAE,kBAAgB,WAAU;IAAC,IAAI,IAAE;AAAK,SAAK,MAAI,OAAO,KAAK,KAAK,GAAG,CAAC,QAAQ,SAAS,GAAE,GAAE;AAAC,YAAO,KAAG,EAAE,GAAG,MAAI,KAAG,EAAE;QAAK,EAAE;MAAE,EAAE,wBAAsB,WAAU;IAAC,IAAI,IAAE,KAAK;AAAI,SAAK,GAAG,QAAM,EAAE,IAAE,EAAE,EAAC,KAAG,GAAE,KAAK,GAAG,SAAO,EAAE,IAAE,EAAE,EAAC,KAAG,GAAE,KAAK,GAAG,OAAK,EAAE,IAAE,EAAE,EAAC,KAAG,GAAE,KAAK,GAAG,QAAM,EAAE,IAAE,EAAE,EAAC,KAAG,GAAE,KAAK,GAAG,UAAQ,EAAE,IAAE,EAAE,EAAC,KAAG,GAAE,KAAK,GAAG,UAAQ,EAAE,IAAE,EAAE,EAAC,KAAG,GAAE,KAAK,GAAG,eAAa;MAAG,EAAE,cAAY,WAAU;IAAC,IAAI,IAAE,EAAE,KAAK,GAAG,OAAM,IAAI,EAAC,IAAE,EAAE,KAAK,GAAG,QAAO,IAAI,EAAC,IAAE,CAAC,KAAK,GAAG,QAAM;AAAE,SAAK,GAAG,UAAQ,KAAG,IAAE,KAAK,GAAG;IAAO,IAAI,IAAE,EAAE,GAAE,IAAI,EAAC,IAAE,EAAE,KAAK,GAAG,OAAM,IAAI,EAAC,IAAE,EAAE,KAAK,GAAG,SAAQ,IAAI,EAAC,IAAE,KAAK,GAAG,WAAS;AAAE,SAAK,GAAG,iBAAe,KAAG,KAAK,GAAG,eAAa,KAAI,IAAE,KAAK,MAAM,MAAI,EAAE,GAAC;IAAK,IAAI,IAAE,EAAE,GAAE,IAAI,EAAC,IAAE,EAAE,YAAU,EAAE,YAAU,EAAE,YAAU,EAAE,YAAU,EAAE,YAAU,EAAE,UAAS,IAAE,EAAE,UAAQ,EAAE,UAAQ,EAAE,SAAO,MAAI,IAAG,KAAG,IAAE,MAAI,MAAI,MAAI,EAAE,SAAO,EAAE,SAAO,EAAE,SAAO,IAAE,EAAE,SAAO,EAAE,SAAO,EAAE;AAAO,WAAM,QAAM,KAAG,SAAO,IAAE,QAAM;MAAG,EAAE,SAAO,WAAU;AAAC,WAAO,KAAK,aAAa;MAAE,EAAE,SAAO,SAAS,GAAE;IAAC,IAAI,IAAE,KAAG,uBAAsB,IAAE;KAAC,GAAE,KAAK,GAAG;KAAM,IAAG,EAAE,EAAE,KAAK,GAAG,OAAM,GAAE,IAAI;KAAC,MAAK,EAAE,EAAE,KAAK,GAAG,OAAM,GAAE,IAAI;KAAC,GAAE,KAAK,GAAG;KAAO,IAAG,EAAE,EAAE,KAAK,GAAG,QAAO,GAAE,IAAI;KAAC,GAAE,KAAK,GAAG;KAAK,IAAG,EAAE,EAAE,KAAK,GAAG,MAAK,GAAE,IAAI;KAAC,GAAE,KAAK,GAAG;KAAM,IAAG,EAAE,EAAE,KAAK,GAAG,OAAM,GAAE,IAAI;KAAC,GAAE,KAAK,GAAG;KAAQ,IAAG,EAAE,EAAE,KAAK,GAAG,SAAQ,GAAE,IAAI;KAAC,GAAE,KAAK,GAAG;KAAQ,IAAG,EAAE,EAAE,KAAK,GAAG,SAAQ,GAAE,IAAI;KAAC,KAAI,EAAE,EAAE,KAAK,GAAG,cAAa,GAAE,IAAI;KAAC;AAAC,WAAO,EAAE,QAAQ,IAAG,SAAS,GAAE,GAAE;AAAC,YAAO,KAAG,OAAO,EAAE,GAAG;OAAG;MAAE,EAAE,KAAG,SAAS,GAAE;AAAC,WAAO,KAAK,MAAI,EAAE,EAAE,EAAE;MAAG,EAAE,MAAI,SAAS,GAAE;IAAC,IAAI,IAAE,KAAK,KAAI,IAAE,EAAE,EAAE;AAAC,WAAM,mBAAiB,IAAE,KAAG,MAAI,IAAE,YAAU,IAAE,EAAE,IAAE,EAAE,GAAG,GAAC,KAAK,GAAG,IAAG,KAAG;MAAG,EAAE,MAAI,SAAS,GAAE,GAAE,GAAE;IAAC,IAAI;AAAE,WAAO,IAAE,IAAE,IAAE,EAAE,EAAE,EAAE,IAAE,EAAE,EAAE,GAAC,EAAE,MAAI,EAAE,GAAE,KAAK,CAAC,KAAI,EAAE,KAAK,MAAI,KAAG,IAAE,KAAG,IAAG,KAAK;MAAE,EAAE,WAAS,SAAS,GAAE,GAAE;AAAC,WAAO,KAAK,IAAI,GAAE,GAAE,CAAC,EAAE;MAAE,EAAE,SAAO,SAAS,GAAE;IAAC,IAAI,IAAE,KAAK,OAAO;AAAC,WAAO,EAAE,KAAG,GAAE;MAAG,EAAE,QAAM,WAAU;AAAC,WAAO,EAAE,KAAK,KAAI,KAAK;MAAE,EAAE,WAAS,SAAS,GAAE;AAAC,WAAO,GAAG,CAAC,IAAI,KAAK,KAAI,KAAK,CAAC,OAAO,KAAK,GAAG,CAAC,QAAQ,CAAC,EAAE;MAAE,EAAE,UAAQ,WAAU;AAAC,WAAO,KAAK,gBAAgB;MAAE,EAAE,eAAa,WAAU;AAAC,WAAO,KAAK,IAAI,eAAe;MAAE,EAAE,iBAAe,WAAU;AAAC,WAAO,KAAK,GAAG,eAAe;MAAE,EAAE,UAAQ,WAAU;AAAC,WAAO,KAAK,IAAI,UAAU;MAAE,EAAE,YAAU,WAAU;AAAC,WAAO,KAAK,GAAG,UAAU;MAAE,EAAE,UAAQ,WAAU;AAAC,WAAO,KAAK,IAAI,UAAU;MAAE,EAAE,YAAU,WAAU;AAAC,WAAO,KAAK,GAAG,UAAU;MAAE,EAAE,QAAM,WAAU;AAAC,WAAO,KAAK,IAAI,QAAQ;MAAE,EAAE,UAAQ,WAAU;AAAC,WAAO,KAAK,GAAG,QAAQ;MAAE,EAAE,OAAK,WAAU;AAAC,WAAO,KAAK,IAAI,OAAO;MAAE,EAAE,SAAO,WAAU;AAAC,WAAO,KAAK,GAAG,OAAO;MAAE,EAAE,QAAM,WAAU;AAAC,WAAO,KAAK,IAAI,QAAQ;MAAE,EAAE,UAAQ,WAAU;AAAC,WAAO,KAAK,GAAG,QAAQ;MAAE,EAAE,SAAO,WAAU;AAAC,WAAO,KAAK,IAAI,SAAS;MAAE,EAAE,WAAS,WAAU;AAAC,WAAO,KAAK,GAAG,SAAS;MAAE,EAAE,QAAM,WAAU;AAAC,WAAO,KAAK,IAAI,QAAQ;MAAE,EAAE,UAAQ,WAAU;AAAC,WAAO,KAAK,GAAG,QAAQ;MAAE;KAAI,EAAC,IAAE,SAAS,GAAE,GAAE,GAAE;AAAC,UAAO,EAAE,IAAI,EAAE,OAAO,GAAC,GAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,GAAC,GAAE,IAAI,CAAC,IAAI,EAAE,MAAM,GAAC,GAAE,IAAI,CAAC,IAAI,EAAE,OAAO,GAAC,GAAE,IAAI,CAAC,IAAI,EAAE,SAAS,GAAC,GAAE,IAAI,CAAC,IAAI,EAAE,SAAS,GAAC,GAAE,IAAI,CAAC,IAAI,EAAE,cAAc,GAAC,GAAE,KAAK;;AAAE,SAAO,SAAS,GAAE,GAAE,GAAE;AAAC,OAAE,GAAE,IAAE,GAAG,CAAC,QAAQ,EAAC,EAAE,WAAS,SAAS,GAAE,GAAE;AAAkB,WAAO,EAAE,GAAE,EAAC,IAAvB,EAAE,QAAQ,EAAkB,EAAC,EAAE;MAAE,EAAE,aAAW;GAAE,IAAI,IAAE,EAAE,UAAU,KAAI,IAAE,EAAE,UAAU;AAAS,KAAE,UAAU,MAAI,SAAS,GAAE,GAAE;AAAC,WAAO,EAAE,EAAE,GAAC,EAAE,MAAK,GAAE,EAAE,GAAC,EAAE,KAAK,KAAK,CAAC,GAAE,EAAE;MAAE,EAAE,UAAU,WAAS,SAAS,GAAE,GAAE;AAAC,WAAO,EAAE,EAAE,GAAC,EAAE,MAAK,GAAE,GAAG,GAAC,EAAE,KAAK,KAAK,CAAC,GAAE,EAAE;;;IAAK;;;;;ACA5uJ,EAAC,SAAS,GAAE,GAAE;AAAC,cAAU,OAAO,WAAS,eAAa,OAAO,SAAO,OAAO,UAAQ,GAAG,GAAC,cAAY,OAAO,UAAQ,OAAO,MAAI,OAAO,EAAE,GAAC,CAAC,IAAE,eAAa,OAAO,aAAW,aAAW,KAAG,MAAM,4BAA0B,GAAG;cAAQ,WAAU;AAAC;AAAa,SAAO,SAAS,GAAE,GAAE,GAAE;AAAC,OAAE,KAAG,EAAE;GAAC,IAAI,IAAE,EAAE,WAAU,IAAE;IAAC,QAAO;IAAQ,MAAK;IAAS,GAAE;IAAgB,GAAE;IAAW,IAAG;IAAa,GAAE;IAAU,IAAG;IAAW,GAAE;IAAQ,IAAG;IAAU,GAAE;IAAU,IAAG;IAAY,GAAE;IAAS,IAAG;IAAW;GAAC,SAAS,EAAE,GAAE,GAAE,GAAE,GAAE;AAAC,WAAO,EAAE,WAAW,GAAE,GAAE,GAAE,EAAE;;AAAC,KAAE,GAAG,eAAa,GAAE,EAAE,aAAW,SAAS,GAAE,GAAE,GAAE,GAAE,GAAE;AAAC,SAAI,IAAI,GAAE,GAAE,GAAE,IAAE,EAAE,SAAS,CAAC,gBAAc,GAAE,IAAE,EAAE,cAAY;KAAC;MAAC,GAAE;MAAI,GAAE;MAAG,GAAE;MAAS;KAAC;MAAC,GAAE;MAAI,GAAE;MAAG;KAAC;MAAC,GAAE;MAAK,GAAE;MAAG,GAAE;MAAS;KAAC;MAAC,GAAE;MAAI,GAAE;MAAG;KAAC;MAAC,GAAE;MAAK,GAAE;MAAG,GAAE;MAAO;KAAC;MAAC,GAAE;MAAI,GAAE;MAAG;KAAC;MAAC,GAAE;MAAK,GAAE;MAAG,GAAE;MAAM;KAAC;MAAC,GAAE;MAAI,GAAE;MAAG;KAAC;MAAC,GAAE;MAAK,GAAE;MAAG,GAAE;MAAQ;KAAC;MAAC,GAAE;MAAI,GAAE;MAAG;KAAC;MAAC,GAAE;MAAK,GAAE;MAAO;KAAC,EAAC,IAAE,EAAE,QAAO,IAAE,GAAE,IAAE,GAAE,KAAG,GAAE;KAAC,IAAI,IAAE,EAAE;AAAG,OAAE,MAAI,IAAE,IAAE,EAAE,EAAE,CAAC,KAAK,GAAE,EAAE,GAAE,CAAC,EAAE,GAAC,EAAE,KAAK,GAAE,EAAE,GAAE,CAAC,EAAE;KAAE,IAAI,KAAG,EAAE,YAAU,KAAK,OAAO,KAAK,IAAI,EAAE,CAAC;AAAC,SAAG,IAAE,IAAE,GAAE,KAAG,EAAE,KAAG,CAAC,EAAE,GAAE;AAAC,WAAG,KAAG,IAAE,MAAI,IAAE,EAAE,IAAE;MAAI,IAAI,IAAE,EAAE,EAAE;AAAG,YAAI,IAAE,EAAE,KAAG,EAAE,GAAE,IAAE,YAAU,OAAO,IAAE,EAAE,QAAQ,MAAK,EAAE,GAAC,EAAE,GAAE,GAAE,EAAE,GAAE,EAAE;AAAC;;;AAAO,QAAG,EAAE,QAAO;IAAE,IAAI,IAAE,IAAE,EAAE,SAAO,EAAE;AAAK,WAAM,cAAY,OAAO,IAAE,EAAE,EAAE,GAAC,EAAE,QAAQ,MAAK,EAAE;MAAE,EAAE,KAAG,SAAS,GAAE,GAAE;AAAC,WAAO,EAAE,GAAE,GAAE,MAAK,CAAC,EAAE;MAAE,EAAE,OAAK,SAAS,GAAE,GAAE;AAAC,WAAO,EAAE,GAAE,GAAE,KAAK;;GAAE,IAAI,IAAE,SAAS,GAAE;AAAC,WAAO,EAAE,KAAG,EAAE,KAAK,GAAC,GAAG;;AAAE,KAAE,QAAM,SAAS,GAAE;AAAC,WAAO,KAAK,GAAG,EAAE,KAAK,EAAC,EAAE;MAAE,EAAE,UAAQ,SAAS,GAAE;AAAC,WAAO,KAAK,KAAK,EAAE,KAAK,EAAC,EAAE;;;IAAK;;;;;ACA74C,EAAC,SAAS,GAAE,GAAE;AAAC,cAAU,OAAO,WAAS,eAAa,OAAO,SAAO,OAAO,UAAQ,EAAA,UAAU,QAAQ,CAAC,GAAC,cAAY,OAAO,UAAQ,OAAO,MAAI,OAAO,CAAC,QAAQ,EAAC,EAAE,GAAC,CAAC,IAAE,eAAa,OAAO,aAAW,aAAW,KAAG,MAAM,kBAAgB,EAAE,EAAE,MAAM;cAAQ,SAAS,GAAE;AAAC;EAAa,SAAS,EAAE,GAAE;AAAC,UAAO,KAAG,YAAU,OAAO,KAAG,aAAY,IAAE,IAAE,EAAC,SAAQ,GAAE;;EAAC,IAAI,IAAE,EAAE,EAAE,EAAC,IAAE,oFAAoF,MAAM,IAAI,EAAC,IAAE,kFAAkF,MAAM,IAAI,EAAC,IAAE,gEAAgE,MAAM,IAAI,EAAC,IAAE,gEAAgE,MAAM,IAAI,EAAC,IAAE;EAA+B,SAAS,EAAE,GAAE,GAAE,GAAE;GAAC,IAAI,GAAE;AAAE,UAAM,QAAM,IAAE,IAAE,WAAS,WAAS,IAAE,OAAK,IAAE,CAAC,GAAE,IAAE;IAAC,IAAG,IAAE,wBAAsB;IAAsB,IAAG;IAAiB,IAAG;IAAgB,IAAG;IAAuB,IAAG;IAAe,CAAC,GAAG,MAAM,IAAI,EAAC,IAAE,MAAI,KAAG,IAAE,OAAK,KAAG,EAAE,KAAG,IAAE,MAAI,KAAG,IAAE,MAAI,MAAI,IAAE,MAAI,MAAI,IAAE,OAAK,MAAI,EAAE,KAAG,EAAE;;EAAI,IAAI,IAAE,SAAS,GAAE,GAAE;AAAC,UAAO,EAAE,KAAK,EAAE,GAAC,EAAE,EAAE,OAAO,IAAE,EAAE,EAAE,OAAO;;AAAG,IAAE,IAAE,GAAE,EAAE,IAAE;EAAE,IAAI,IAAE,SAAS,GAAE,GAAE;AAAC,UAAO,EAAE,KAAK,EAAE,GAAC,EAAE,EAAE,OAAO,IAAE,EAAE,EAAE,OAAO;;AAAG,IAAE,IAAE,GAAE,EAAE,IAAE;EAAE,IAAI,IAAE;GAAC,MAAK;GAAK,UAAS,gEAAgE,MAAM,IAAI;GAAC,eAAc,8BAA8B,MAAM,IAAI;GAAC,aAAY,uBAAuB,MAAM,IAAI;GAAC,QAAO;GAAE,aAAY;GAAE,WAAU;GAAE,WAAU;GAAE,SAAQ;IAAC,IAAG;IAAO,KAAI;IAAU,GAAE;IAAa,IAAG;IAAiB,KAAI;IAAuB,MAAK;IAA6B;GAAC,cAAa;IAAC,QAAO;IAAW,MAAK;IAAW,GAAE;IAAmB,GAAE;IAAE,IAAG;IAAE,GAAE;IAAM,IAAG;IAAE,GAAE;IAAO,IAAG;IAAE,GAAE;IAAQ,IAAG;IAAE,GAAE;IAAM,IAAG;IAAE;GAAC,SAAQ,SAAS,GAAE;AAAC,WAAO;;GAAG,UAAS,SAAS,GAAE;AAAC,WAAO,IAAE,IAAE,SAAO,IAAE,KAAG,SAAO,IAAE,KAAG,QAAM;;GAAU;AAAC,SAAO,EAAE,QAAQ,OAAO,GAAE,MAAK,CAAC,EAAE,EAAC;IAAI;;;;;;;;;;;;;;;;;;;;;;;AC4BhzD,MAAM,OAAO,oBAAA,QAAa;AAC1B,MAAM,OAAO,gBAAA,QAAS;AACtB,MAAM,OAAO,KAAK;AAElB,IAAM,eAAe,UAAgD;CACnE,IAAI,SAAuB;AAC3B,KAAI,MAAM,QAAQ,MAAM,CACtB,UAAS;UACA,SAAS,KAClB,UAAS,MAAM,MAAM;AAGvB,KAAI,CAAC,QAAQ,SAAS,CACpB,QAAO;AAGT,QAAO;;;;;;;;;;AAaT,IAAa,cACX,OACA,aAeG;CACH,MAAM,aAAa,UAAU;CAC7B,MAAM,cAAc,UAAU;CAC9B,MAAM,SAAS,UAAU;CAEzB,IAAI,UAAkD;AAEtD,KAAI,UAAU,UAAU,SAAS,MAAM,CACrC,WAAU,MAAM,SAAS,MAAM;KAE/B,WAAU,YAAY,MAAM;AAG9B,KAAI,CAAC,QACH,QAAO,OAAO;AAGhB,KAAI,YACF,QAAO,QAAQ,OAAO,YAAY;AAGpC,KAAI,eAAe,WAAW,eAAe,aAC3C,KAAI,aAAa,QACf,QAAO,QAAQ,QAAQ,eAAe,aAAa;KAEnD,QAAO,OAAO;AAIlB,SAAQ,YAAR;EACE,KAAK,OACH,QAAO,QAAQ,OAAO,uBAAuB;EAE/C,KAAK,QACH,QAAO,QAAQ,OAAO,eAAe;EAEvC,KAAK,OACH,QAAO,QAAQ,OAAO,WAAW;EAEnC,KAAK,aACH,QAAO,QAAQ,OAAO,QAAQ;EAEhC,KAAK,MACH,QAAO,QAAQ,OAAO,cAAc;EAEtC,KAAK,QACH,QAAO,QAAQ,OAAO,YAAY;EAEpC,QACE,QAAO,QAAQ,OAAO,aAAa;;;;;;;;;;;AAazC,IAAa,mBAAmB,aAAqB;CACnD,IAAI,OAAO,KAAK,IAAI,UAAU,EAAE;CAEhC,MAAM,OAAO,KAAK,MAAM,OAAO,UAAU,IAAI;AAC7C,QAAO,OAAO,UAAU;CAExB,MAAM,QAAQ,KAAK,MAAM,OAAO,UAAU,KAAK;AAC/C,QAAO,OAAO,UAAU;CAExB,MAAM,UAAU,KAAK,MAAM,OAAO,UAAU,IAAI;AAChD,QAAO,OAAO,UAAU;CAExB,MAAM,UAAU,KAAK,MAAM,OAAO,UAAU,IAAI;AAChD,QAAO,OAAO,UAAU;AAIxB,QAAO;EACL;EACA;EACA;EACA;EACA,cAPmB,KAAK,MAAM,KAAK;EAQpC;;;;;;;;;;AAaH,IAAa,cACX,MACA,GAAG,SAQA;CACH,IAAI,cAAc,YAAY,KAAK;AAEnC,MAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK,GAAG;EACvC,MAAM,SAAS,KAAK;EACpB,MAAM,OAAO,KAAK,IAAI;AACtB,MAAI,QAAQ,KACV,eAAc,YAAY,IAAI,QAAQ,KAAK;;AAI/C,QAAO,YAAY,QAAQ;;;;;;;;;;AAW7B,IAAa,gBAAgB,aAAqB;CAChD,MAAM,EAAE,MAAM,OAAO,cAAc,SAAS,YAC1C,gBAAgB,SAAS;AAE3B,QAAO;EACL,OAAO,QAAQ,UAAU,MAAM;EAC/B;EACA;EACA;EACD;;AAGH,IAAM,uBAAuB;CAC3B,MAAM;EAAE,SAAS;EAAK,MAAM;GAAC;GAAQ;GAAO;GAAQ;EAAE;CACtD,OAAO;EAAE,SAAS;EAAK,MAAM;GAAC;GAAO;GAAQ;GAAQ;EAAE;CACvD,SAAS;EAAE,SAAS;EAAO,MAAM;GAAC;GAAU;GAAU;GAAQ;EAAE;CAChE,SAAS;EAAE,SAAS;EAAO,MAAM;GAAC;GAAW;GAAW;GAAS;EAAE;CACpE;AAiBD,SAAgB,kBAAkB,GAAG,MAAqB;CACxD,IAAI,UAAU;CACd,IAAI,OAAO;AAEX,KAAI,KAAK,cAAc,MAAM;EAC3B,MAAM,cAAc,MAAM,KAAK,GAAG;AAGlC,SAFkB,MAAM,KAAK,GAAG,CAEf,KAAK,aAAa,KAAK;AACxC,YAAU,KAAK,OAAO;QACjB;AACL,SAAO,KAAK;AACZ,YAAU,KAAK,OAAO;;CAGxB,MAAM,EAAE,MAAM,OAAO,SAAS,YAAY,gBAAgB,KAAK;CAE/D,MAAM,iBAA2B,EAAE;AAEnC,KAAI,KACF,KAAI,QACF,gBAAe,KAAK,GAAG,KAAK,GAAG,qBAAqB,KAAK,UAAU;KAEnE,gBAAe,KACb,GAAG,KAAK,GAAG,WAAW,MAAM,qBAAqB,KAAK,KAAK,GAC5D;AAIL,KAAI,MACF,KAAI,QACF,gBAAe,KAAK,GAAG,MAAM,GAAG,qBAAqB,MAAM,UAAU;KAErE,gBAAe,KACb,GAAG,MAAM,GAAG,WAAW,OAAO,qBAAqB,MAAM,KAAK,GAC/D;AAIL,KAAI,QACF,KAAI,QACF,gBAAe,KAAK,GAAG,QAAQ,GAAG,qBAAqB,QAAQ,UAAU;KAEzE,gBAAe,KACb,GAAG,QAAQ,GAAG,WAAW,SAAS,qBAAqB,QAAQ,KAAK,GACrE;AAIL,KAAI,QACF,KAAI,QACF,gBAAe,KAAK,GAAG,QAAQ,GAAG,qBAAqB,QAAQ,UAAU;KAEzE,gBAAe,KACb,GAAG,QAAQ,GAAG,WAAW,SAAS,qBAAqB,QAAQ,KAAK,GACrE;AAIL,QAAO,eAAe,KAAK,IAAI;;;;;;;;;;AAoBjC,IAAa,eACX,OACA,UACa;CACb,MAAM,WAAW,YAAY,MAAM,EAAE,QAAQ;CAC7C,MAAM,YAAY,YAAY,MAAM,EAAE,QAAQ;AAE9C,KAAI,CAAC,YAAY,CAAC,UAChB,QAAO;EACL,SAAS;EACT,SAAS;EACT,OAAO;GAAE,IAAI;GAAG,OAAO;GAAG;EAC3B;CAGH,MAAM,SAAS,SAAS,SAAS,GAAG,UAAU,SAAS;AAEvD,QAAO;EACL,SAAS,KAAK,IAAI,KAAK,MAAM,SAAS,GAAG,GAAG,MAAM,CAAC,EAAE,EAAE;EACvD,SAAS,KAAK,IAAI,KAAK,MAAO,SAAS,GAAG,GAAG,MAAM,GAAI,IAAK,EAAE,EAAE;EAChE,OAAO;GACL,OAAO,KAAK,MAAM,SAAS,GAAG,GAAG,OAAO,CAAC;GACzC,IAAI;GACL;EACF;;;;;;;;;;AAWH,IAAa,WAAW,MAAuB,UAC7C,YAAY,KAAK,EAAE,IAAI,OAAO,IAAI,CAAC,QAAQ;;;;;;;;;AAU7C,IAAa,gBAAgB,MAAuB,UAClD,YAAY,KAAK,EAAE,SAAS,OAAO,IAAI,CAAC,QAAQ;;;;;;;;;AAUlD,IAAa,cAAc,MAAuB,UAChD,YAAY,KAAK,EAAE,IAAI,OAAO,IAAI,CAAC,QAAQ;;;;;;;;;AAU7C,IAAa,cAAc,MAAuB,YAChD,YAAY,KAAK,EAAE,IAAI,KAAK,QAAQ,CAAC,QAAQ;;;;;;;;;AAU/C,IAAa,YAAY,MAAuB,UAC9C,YAAY,KAAK,EAAE,IAAI,KAAK,MAAM,CAAC,QAAQ"}
package/device.cjs CHANGED
@@ -1,6 +1,23 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  //#region src/device.ts
3
3
  /**
4
+ * ---header-docs-section---
5
+ * # yummies/device
6
+ *
7
+ * ## Description
8
+ *
9
+ * Lightweight user-agent sniffing for product UI: mobile/tablet heuristics and a normalized UA
10
+ * string accessor. These checks are best-effort (browsers spoof and evolve) and should gate only
11
+ * non-critical layout or analytics, never security. Prefer feature detection when the platform API
12
+ * is what you actually need.
13
+ *
14
+ * ## Usage
15
+ *
16
+ * ```ts
17
+ * import { checkIsMobileDevice, getUserAgent } from "yummies/device";
18
+ * ```
19
+ */
20
+ /**
4
21
  * Returns the normalized user agent string in lowercase.
5
22
  *
6
23
  * @example
package/device.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"device.cjs","names":[],"sources":["../src/device.ts"],"sourcesContent":["/**\n * Returns the normalized user agent string in lowercase.\n *\n * @example\n * ```ts\n * const userAgent = getUserAgent();\n * ```\n */\nexport const getUserAgent = () =>\n (\n navigator.userAgent ||\n navigator.vendor ||\n // @ts-expect-error skip opera\n globalThis.opera ||\n ''\n ).toLowerCase();\n\n/**\n * Detects whether the current device should be treated as mobile based on the user agent.\n *\n * @example\n * ```ts\n * const isMobile = checkIsMobileDevice();\n * ```\n */\nexport const checkIsMobileDevice = () => {\n const userAgent = getUserAgent();\n\n if (\n /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(\n userAgent || '',\n ) ||\n /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test(\n (userAgent || '').slice(0, 4),\n )\n ) {\n return true;\n }\n\n return false;\n};\n\n/**\n * Detects whether the current device should be treated as a tablet based on the user agent.\n *\n * @example\n * ```ts\n * const isTablet = checkIsTabletDevice();\n * ```\n */\nexport const checkIsTabletDevice = () => {\n const userAgent = getUserAgent();\n\n return /(ipad|tablet|(android(?!.*mobile))|(windows(?!.*phone)(.*touch))|kindle|playbook|silk|(puffin(?!.*(IP|AP|WP))))/.test(\n userAgent,\n );\n};\n\n/**\n * Detects whether the current device supports a touch-first form factor.\n *\n * @example\n * ```ts\n * const isTouch = checkIsTouchDevice();\n * ```\n */\nexport const checkIsTouchDevice = () =>\n checkIsMobileDevice() || checkIsTabletDevice();\n\nexport const isMobileDevice = checkIsMobileDevice();\n\nexport const isTabletDevice = checkIsTabletDevice();\n\nexport const isTouchDevice = isMobileDevice || isTabletDevice;\n"],"mappings":";;;;;;;;;;AAQA,IAAa,sBAET,UAAU,aACV,UAAU,UAEV,WAAW,SACX,IACA,aAAa;;;;;;;;;AAUjB,IAAa,4BAA4B;CACvC,MAAM,YAAY,cAAc;AAEhC,KACE,2TAA2T,KACzT,aAAa,GACd,IACD,4hDAA4hD,MACzhD,aAAa,IAAI,MAAM,GAAG,EAAE,CAC9B,CAED,QAAO;AAGT,QAAO;;;;;;;;;;AAWT,IAAa,4BAA4B;CACvC,MAAM,YAAY,cAAc;AAEhC,QAAO,kHAAkH,KACvH,UACD;;;;;;;;;;AAWH,IAAa,2BACX,qBAAqB,IAAI,qBAAqB;AAEhD,IAAa,iBAAiB,qBAAqB;AAEnD,IAAa,iBAAiB,qBAAqB;AAEnD,IAAa,gBAAgB,kBAAkB"}
1
+ {"version":3,"file":"device.cjs","names":[],"sources":["../src/device.ts"],"sourcesContent":["/**\n * ---header-docs-section---\n * # yummies/device\n *\n * ## Description\n *\n * Lightweight user-agent sniffing for product UI: mobile/tablet heuristics and a normalized UA\n * string accessor. These checks are best-effort (browsers spoof and evolve) and should gate only\n * non-critical layout or analytics, never security. Prefer feature detection when the platform API\n * is what you actually need.\n *\n * ## Usage\n *\n * ```ts\n * import { checkIsMobileDevice, getUserAgent } from \"yummies/device\";\n * ```\n */\n\n/**\n * Returns the normalized user agent string in lowercase.\n *\n * @example\n * ```ts\n * const userAgent = getUserAgent();\n * ```\n */\nexport const getUserAgent = () =>\n (\n navigator.userAgent ||\n navigator.vendor ||\n // @ts-expect-error skip opera\n globalThis.opera ||\n ''\n ).toLowerCase();\n\n/**\n * Detects whether the current device should be treated as mobile based on the user agent.\n *\n * @example\n * ```ts\n * const isMobile = checkIsMobileDevice();\n * ```\n */\nexport const checkIsMobileDevice = () => {\n const userAgent = getUserAgent();\n\n if (\n /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(\n userAgent || '',\n ) ||\n /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test(\n (userAgent || '').slice(0, 4),\n )\n ) {\n return true;\n }\n\n return false;\n};\n\n/**\n * Detects whether the current device should be treated as a tablet based on the user agent.\n *\n * @example\n * ```ts\n * const isTablet = checkIsTabletDevice();\n * ```\n */\nexport const checkIsTabletDevice = () => {\n const userAgent = getUserAgent();\n\n return /(ipad|tablet|(android(?!.*mobile))|(windows(?!.*phone)(.*touch))|kindle|playbook|silk|(puffin(?!.*(IP|AP|WP))))/.test(\n userAgent,\n );\n};\n\n/**\n * Detects whether the current device supports a touch-first form factor.\n *\n * @example\n * ```ts\n * const isTouch = checkIsTouchDevice();\n * ```\n */\nexport const checkIsTouchDevice = () =>\n checkIsMobileDevice() || checkIsTabletDevice();\n\nexport const isMobileDevice = checkIsMobileDevice();\n\nexport const isTabletDevice = checkIsTabletDevice();\n\nexport const isTouchDevice = isMobileDevice || isTabletDevice;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BA,IAAa,sBAET,UAAU,aACV,UAAU,UAEV,WAAW,SACX,IACA,aAAa;;;;;;;;;AAUjB,IAAa,4BAA4B;CACvC,MAAM,YAAY,cAAc;AAEhC,KACE,2TAA2T,KACzT,aAAa,GACd,IACD,4hDAA4hD,MACzhD,aAAa,IAAI,MAAM,GAAG,EAAE,CAC9B,CAED,QAAO;AAGT,QAAO;;;;;;;;;;AAWT,IAAa,4BAA4B;CACvC,MAAM,YAAY,cAAc;AAEhC,QAAO,kHAAkH,KACvH,UACD;;;;;;;;;;AAWH,IAAa,2BACX,qBAAqB,IAAI,qBAAqB;AAEhD,IAAa,iBAAiB,qBAAqB;AAEnD,IAAa,iBAAiB,qBAAqB;AAEnD,IAAa,gBAAgB,kBAAkB"}
package/device.d.ts CHANGED
@@ -1,3 +1,20 @@
1
+ /**
2
+ * ---header-docs-section---
3
+ * # yummies/device
4
+ *
5
+ * ## Description
6
+ *
7
+ * Lightweight user-agent sniffing for product UI: mobile/tablet heuristics and a normalized UA
8
+ * string accessor. These checks are best-effort (browsers spoof and evolve) and should gate only
9
+ * non-critical layout or analytics, never security. Prefer feature detection when the platform API
10
+ * is what you actually need.
11
+ *
12
+ * ## Usage
13
+ *
14
+ * ```ts
15
+ * import { checkIsMobileDevice, getUserAgent } from "yummies/device";
16
+ * ```
17
+ */
1
18
  /**
2
19
  * Returns the normalized user agent string in lowercase.
3
20
  *
package/device.js CHANGED
@@ -1,5 +1,22 @@
1
1
  //#region src/device.ts
2
2
  /**
3
+ * ---header-docs-section---
4
+ * # yummies/device
5
+ *
6
+ * ## Description
7
+ *
8
+ * Lightweight user-agent sniffing for product UI: mobile/tablet heuristics and a normalized UA
9
+ * string accessor. These checks are best-effort (browsers spoof and evolve) and should gate only
10
+ * non-critical layout or analytics, never security. Prefer feature detection when the platform API
11
+ * is what you actually need.
12
+ *
13
+ * ## Usage
14
+ *
15
+ * ```ts
16
+ * import { checkIsMobileDevice, getUserAgent } from "yummies/device";
17
+ * ```
18
+ */
19
+ /**
3
20
  * Returns the normalized user agent string in lowercase.
4
21
  *
5
22
  * @example
package/device.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"device.js","names":[],"sources":["../src/device.ts"],"sourcesContent":["/**\n * Returns the normalized user agent string in lowercase.\n *\n * @example\n * ```ts\n * const userAgent = getUserAgent();\n * ```\n */\nexport const getUserAgent = () =>\n (\n navigator.userAgent ||\n navigator.vendor ||\n // @ts-expect-error skip opera\n globalThis.opera ||\n ''\n ).toLowerCase();\n\n/**\n * Detects whether the current device should be treated as mobile based on the user agent.\n *\n * @example\n * ```ts\n * const isMobile = checkIsMobileDevice();\n * ```\n */\nexport const checkIsMobileDevice = () => {\n const userAgent = getUserAgent();\n\n if (\n /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(\n userAgent || '',\n ) ||\n /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test(\n (userAgent || '').slice(0, 4),\n )\n ) {\n return true;\n }\n\n return false;\n};\n\n/**\n * Detects whether the current device should be treated as a tablet based on the user agent.\n *\n * @example\n * ```ts\n * const isTablet = checkIsTabletDevice();\n * ```\n */\nexport const checkIsTabletDevice = () => {\n const userAgent = getUserAgent();\n\n return /(ipad|tablet|(android(?!.*mobile))|(windows(?!.*phone)(.*touch))|kindle|playbook|silk|(puffin(?!.*(IP|AP|WP))))/.test(\n userAgent,\n );\n};\n\n/**\n * Detects whether the current device supports a touch-first form factor.\n *\n * @example\n * ```ts\n * const isTouch = checkIsTouchDevice();\n * ```\n */\nexport const checkIsTouchDevice = () =>\n checkIsMobileDevice() || checkIsTabletDevice();\n\nexport const isMobileDevice = checkIsMobileDevice();\n\nexport const isTabletDevice = checkIsTabletDevice();\n\nexport const isTouchDevice = isMobileDevice || isTabletDevice;\n"],"mappings":";;;;;;;;;AAQA,IAAa,sBAET,UAAU,aACV,UAAU,UAEV,WAAW,SACX,IACA,aAAa;;;;;;;;;AAUjB,IAAa,4BAA4B;CACvC,MAAM,YAAY,cAAc;AAEhC,KACE,2TAA2T,KACzT,aAAa,GACd,IACD,4hDAA4hD,MACzhD,aAAa,IAAI,MAAM,GAAG,EAAE,CAC9B,CAED,QAAO;AAGT,QAAO;;;;;;;;;;AAWT,IAAa,4BAA4B;CACvC,MAAM,YAAY,cAAc;AAEhC,QAAO,kHAAkH,KACvH,UACD;;;;;;;;;;AAWH,IAAa,2BACX,qBAAqB,IAAI,qBAAqB;AAEhD,IAAa,iBAAiB,qBAAqB;AAEnD,IAAa,iBAAiB,qBAAqB;AAEnD,IAAa,gBAAgB,kBAAkB"}
1
+ {"version":3,"file":"device.js","names":[],"sources":["../src/device.ts"],"sourcesContent":["/**\n * ---header-docs-section---\n * # yummies/device\n *\n * ## Description\n *\n * Lightweight user-agent sniffing for product UI: mobile/tablet heuristics and a normalized UA\n * string accessor. These checks are best-effort (browsers spoof and evolve) and should gate only\n * non-critical layout or analytics, never security. Prefer feature detection when the platform API\n * is what you actually need.\n *\n * ## Usage\n *\n * ```ts\n * import { checkIsMobileDevice, getUserAgent } from \"yummies/device\";\n * ```\n */\n\n/**\n * Returns the normalized user agent string in lowercase.\n *\n * @example\n * ```ts\n * const userAgent = getUserAgent();\n * ```\n */\nexport const getUserAgent = () =>\n (\n navigator.userAgent ||\n navigator.vendor ||\n // @ts-expect-error skip opera\n globalThis.opera ||\n ''\n ).toLowerCase();\n\n/**\n * Detects whether the current device should be treated as mobile based on the user agent.\n *\n * @example\n * ```ts\n * const isMobile = checkIsMobileDevice();\n * ```\n */\nexport const checkIsMobileDevice = () => {\n const userAgent = getUserAgent();\n\n if (\n /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(\n userAgent || '',\n ) ||\n /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test(\n (userAgent || '').slice(0, 4),\n )\n ) {\n return true;\n }\n\n return false;\n};\n\n/**\n * Detects whether the current device should be treated as a tablet based on the user agent.\n *\n * @example\n * ```ts\n * const isTablet = checkIsTabletDevice();\n * ```\n */\nexport const checkIsTabletDevice = () => {\n const userAgent = getUserAgent();\n\n return /(ipad|tablet|(android(?!.*mobile))|(windows(?!.*phone)(.*touch))|kindle|playbook|silk|(puffin(?!.*(IP|AP|WP))))/.test(\n userAgent,\n );\n};\n\n/**\n * Detects whether the current device supports a touch-first form factor.\n *\n * @example\n * ```ts\n * const isTouch = checkIsTouchDevice();\n * ```\n */\nexport const checkIsTouchDevice = () =>\n checkIsMobileDevice() || checkIsTabletDevice();\n\nexport const isMobileDevice = checkIsMobileDevice();\n\nexport const isTabletDevice = checkIsTabletDevice();\n\nexport const isTouchDevice = isMobileDevice || isTabletDevice;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AA0BA,IAAa,sBAET,UAAU,aACV,UAAU,UAEV,WAAW,SACX,IACA,aAAa;;;;;;;;;AAUjB,IAAa,4BAA4B;CACvC,MAAM,YAAY,cAAc;AAEhC,KACE,2TAA2T,KACzT,aAAa,GACd,IACD,4hDAA4hD,MACzhD,aAAa,IAAI,MAAM,GAAG,EAAE,CAC9B,CAED,QAAO;AAGT,QAAO;;;;;;;;;;AAWT,IAAa,4BAA4B;CACvC,MAAM,YAAY,cAAc;AAEhC,QAAO,kHAAkH,KACvH,UACD;;;;;;;;;;AAWH,IAAa,2BACX,qBAAqB,IAAI,qBAAqB;AAEhD,IAAa,iBAAiB,qBAAqB;AAEnD,IAAa,iBAAiB,qBAAqB;AAEnD,IAAa,gBAAgB,kBAAkB"}
package/encodings.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"encodings.cjs","names":[],"sources":["../src/encodings.ts"],"sourcesContent":["import type { AnyObject } from 'yummies/types';\n\nconst DMap: AnyObject = {\n 0: 0,\n 1: 1,\n 2: 2,\n 3: 3,\n 4: 4,\n 5: 5,\n 6: 6,\n 7: 7,\n 8: 8,\n 9: 9,\n 10: 10,\n 11: 11,\n 12: 12,\n 13: 13,\n 14: 14,\n 15: 15,\n 16: 16,\n 17: 17,\n 18: 18,\n 19: 19,\n 20: 20,\n 21: 21,\n 22: 22,\n 23: 23,\n 24: 24,\n 25: 25,\n 26: 26,\n 27: 27,\n 28: 28,\n 29: 29,\n 30: 30,\n 31: 31,\n 32: 32,\n 33: 33,\n 34: 34,\n 35: 35,\n 36: 36,\n 37: 37,\n 38: 38,\n 39: 39,\n 40: 40,\n 41: 41,\n 42: 42,\n 43: 43,\n 44: 44,\n 45: 45,\n 46: 46,\n 47: 47,\n 48: 48,\n 49: 49,\n 50: 50,\n 51: 51,\n 52: 52,\n 53: 53,\n 54: 54,\n 55: 55,\n 56: 56,\n 57: 57,\n 58: 58,\n 59: 59,\n 60: 60,\n 61: 61,\n 62: 62,\n 63: 63,\n 64: 64,\n 65: 65,\n 66: 66,\n 67: 67,\n 68: 68,\n 69: 69,\n 70: 70,\n 71: 71,\n 72: 72,\n 73: 73,\n 74: 74,\n 75: 75,\n 76: 76,\n 77: 77,\n 78: 78,\n 79: 79,\n 80: 80,\n 81: 81,\n 82: 82,\n 83: 83,\n 84: 84,\n 85: 85,\n 86: 86,\n 87: 87,\n 88: 88,\n 89: 89,\n 90: 90,\n 91: 91,\n 92: 92,\n 93: 93,\n 94: 94,\n 95: 95,\n 96: 96,\n 97: 97,\n 98: 98,\n 99: 99,\n 100: 100,\n 101: 101,\n 102: 102,\n 103: 103,\n 104: 104,\n 105: 105,\n 106: 106,\n 107: 107,\n 108: 108,\n 109: 109,\n 110: 110,\n 111: 111,\n 112: 112,\n 113: 113,\n 114: 114,\n 115: 115,\n 116: 116,\n 117: 117,\n 118: 118,\n 119: 119,\n 120: 120,\n 121: 121,\n 122: 122,\n 123: 123,\n 124: 124,\n 125: 125,\n 126: 126,\n 127: 127,\n 1027: 129,\n 8225: 135,\n 1046: 198,\n 8222: 132,\n 1047: 199,\n 1168: 165,\n 1048: 200,\n 1113: 154,\n 1049: 201,\n 1045: 197,\n 1050: 202,\n 1028: 170,\n 160: 160,\n 1040: 192,\n 1051: 203,\n 164: 164,\n 166: 166,\n 167: 167,\n 169: 169,\n 171: 171,\n 172: 172,\n 173: 173,\n 174: 174,\n 1053: 205,\n 176: 176,\n 177: 177,\n 1114: 156,\n 181: 181,\n 182: 182,\n 183: 183,\n 8221: 148,\n 187: 187,\n 1029: 189,\n 1056: 208,\n 1057: 209,\n 1058: 210,\n 8364: 136,\n 1112: 188,\n 1115: 158,\n 1059: 211,\n 1060: 212,\n 1030: 178,\n 1061: 213,\n 1062: 214,\n 1063: 215,\n 1116: 157,\n 1064: 216,\n 1065: 217,\n 1031: 175,\n 1066: 218,\n 1067: 219,\n 1068: 220,\n 1069: 221,\n 1070: 222,\n 1032: 163,\n 8226: 149,\n 1071: 223,\n 1072: 224,\n 8482: 153,\n 1073: 225,\n 8240: 137,\n 1118: 162,\n 1074: 226,\n 1110: 179,\n 8230: 133,\n 1075: 227,\n 1033: 138,\n 1076: 228,\n 1077: 229,\n 8211: 150,\n 1078: 230,\n 1119: 159,\n 1079: 231,\n 1042: 194,\n 1080: 232,\n 1034: 140,\n 1025: 168,\n 1081: 233,\n 1082: 234,\n 8212: 151,\n 1083: 235,\n 1169: 180,\n 1084: 236,\n 1052: 204,\n 1085: 237,\n 1035: 142,\n 1086: 238,\n 1087: 239,\n 1088: 240,\n 1089: 241,\n 1090: 242,\n 1036: 141,\n 1041: 193,\n 1091: 243,\n 1092: 244,\n 8224: 134,\n 1093: 245,\n 8470: 185,\n 1094: 246,\n 1054: 206,\n 1095: 247,\n 1096: 248,\n 8249: 139,\n 1097: 249,\n 1098: 250,\n 1044: 196,\n 1099: 251,\n 1111: 191,\n 1055: 207,\n 1100: 252,\n 1038: 161,\n 8220: 147,\n 1101: 253,\n 8250: 155,\n 1102: 254,\n 8216: 145,\n 1103: 255,\n 1043: 195,\n 1105: 184,\n 1039: 143,\n 1026: 128,\n 1106: 144,\n 8218: 130,\n 1107: 131,\n 8217: 146,\n 1108: 186,\n 1109: 190,\n};\n\n/**\n * Converts a Unicode string into a Win-1251 encoded binary string.\n *\n * @example\n * ```ts\n * unicodeToWin1251('Привет');\n * ```\n */\nexport function unicodeToWin1251(s: string) {\n const L = [];\n for (let i = 0; i < s.length; i++) {\n const ord = s.charCodeAt(i);\n if (!(ord in DMap))\n throw new Error(`Character ${s.charAt(i)} isn't supported by win1251!`);\n L.push(String.fromCharCode(DMap[ord]));\n }\n return L.join('');\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"encodings.cjs","names":[],"sources":["../src/encodings.ts"],"sourcesContent":["/**\n * ---header-docs-section---\n * # yummies/encodings\n *\n * ## Description\n *\n * String encoding utilities such as mapping Unicode text to legacy **Windows-1251** byte\n * sequences for interoperability with older backends or binary protocols. The helpers focus on\n * explicit transforms rather than implicit `TextEncoder` defaults so you can reason about output\n * in environments where charset mistakes are costly.\n *\n * ## Usage\n *\n * ```ts\n * import { unicodeToWin1251 } from \"yummies/encodings\";\n * ```\n */\n\nimport type { AnyObject } from 'yummies/types';\n\nconst DMap: AnyObject = {\n 0: 0,\n 1: 1,\n 2: 2,\n 3: 3,\n 4: 4,\n 5: 5,\n 6: 6,\n 7: 7,\n 8: 8,\n 9: 9,\n 10: 10,\n 11: 11,\n 12: 12,\n 13: 13,\n 14: 14,\n 15: 15,\n 16: 16,\n 17: 17,\n 18: 18,\n 19: 19,\n 20: 20,\n 21: 21,\n 22: 22,\n 23: 23,\n 24: 24,\n 25: 25,\n 26: 26,\n 27: 27,\n 28: 28,\n 29: 29,\n 30: 30,\n 31: 31,\n 32: 32,\n 33: 33,\n 34: 34,\n 35: 35,\n 36: 36,\n 37: 37,\n 38: 38,\n 39: 39,\n 40: 40,\n 41: 41,\n 42: 42,\n 43: 43,\n 44: 44,\n 45: 45,\n 46: 46,\n 47: 47,\n 48: 48,\n 49: 49,\n 50: 50,\n 51: 51,\n 52: 52,\n 53: 53,\n 54: 54,\n 55: 55,\n 56: 56,\n 57: 57,\n 58: 58,\n 59: 59,\n 60: 60,\n 61: 61,\n 62: 62,\n 63: 63,\n 64: 64,\n 65: 65,\n 66: 66,\n 67: 67,\n 68: 68,\n 69: 69,\n 70: 70,\n 71: 71,\n 72: 72,\n 73: 73,\n 74: 74,\n 75: 75,\n 76: 76,\n 77: 77,\n 78: 78,\n 79: 79,\n 80: 80,\n 81: 81,\n 82: 82,\n 83: 83,\n 84: 84,\n 85: 85,\n 86: 86,\n 87: 87,\n 88: 88,\n 89: 89,\n 90: 90,\n 91: 91,\n 92: 92,\n 93: 93,\n 94: 94,\n 95: 95,\n 96: 96,\n 97: 97,\n 98: 98,\n 99: 99,\n 100: 100,\n 101: 101,\n 102: 102,\n 103: 103,\n 104: 104,\n 105: 105,\n 106: 106,\n 107: 107,\n 108: 108,\n 109: 109,\n 110: 110,\n 111: 111,\n 112: 112,\n 113: 113,\n 114: 114,\n 115: 115,\n 116: 116,\n 117: 117,\n 118: 118,\n 119: 119,\n 120: 120,\n 121: 121,\n 122: 122,\n 123: 123,\n 124: 124,\n 125: 125,\n 126: 126,\n 127: 127,\n 1027: 129,\n 8225: 135,\n 1046: 198,\n 8222: 132,\n 1047: 199,\n 1168: 165,\n 1048: 200,\n 1113: 154,\n 1049: 201,\n 1045: 197,\n 1050: 202,\n 1028: 170,\n 160: 160,\n 1040: 192,\n 1051: 203,\n 164: 164,\n 166: 166,\n 167: 167,\n 169: 169,\n 171: 171,\n 172: 172,\n 173: 173,\n 174: 174,\n 1053: 205,\n 176: 176,\n 177: 177,\n 1114: 156,\n 181: 181,\n 182: 182,\n 183: 183,\n 8221: 148,\n 187: 187,\n 1029: 189,\n 1056: 208,\n 1057: 209,\n 1058: 210,\n 8364: 136,\n 1112: 188,\n 1115: 158,\n 1059: 211,\n 1060: 212,\n 1030: 178,\n 1061: 213,\n 1062: 214,\n 1063: 215,\n 1116: 157,\n 1064: 216,\n 1065: 217,\n 1031: 175,\n 1066: 218,\n 1067: 219,\n 1068: 220,\n 1069: 221,\n 1070: 222,\n 1032: 163,\n 8226: 149,\n 1071: 223,\n 1072: 224,\n 8482: 153,\n 1073: 225,\n 8240: 137,\n 1118: 162,\n 1074: 226,\n 1110: 179,\n 8230: 133,\n 1075: 227,\n 1033: 138,\n 1076: 228,\n 1077: 229,\n 8211: 150,\n 1078: 230,\n 1119: 159,\n 1079: 231,\n 1042: 194,\n 1080: 232,\n 1034: 140,\n 1025: 168,\n 1081: 233,\n 1082: 234,\n 8212: 151,\n 1083: 235,\n 1169: 180,\n 1084: 236,\n 1052: 204,\n 1085: 237,\n 1035: 142,\n 1086: 238,\n 1087: 239,\n 1088: 240,\n 1089: 241,\n 1090: 242,\n 1036: 141,\n 1041: 193,\n 1091: 243,\n 1092: 244,\n 8224: 134,\n 1093: 245,\n 8470: 185,\n 1094: 246,\n 1054: 206,\n 1095: 247,\n 1096: 248,\n 8249: 139,\n 1097: 249,\n 1098: 250,\n 1044: 196,\n 1099: 251,\n 1111: 191,\n 1055: 207,\n 1100: 252,\n 1038: 161,\n 8220: 147,\n 1101: 253,\n 8250: 155,\n 1102: 254,\n 8216: 145,\n 1103: 255,\n 1043: 195,\n 1105: 184,\n 1039: 143,\n 1026: 128,\n 1106: 144,\n 8218: 130,\n 1107: 131,\n 8217: 146,\n 1108: 186,\n 1109: 190,\n};\n\n/**\n * Converts a Unicode string into a Win-1251 encoded binary string.\n *\n * @example\n * ```ts\n * unicodeToWin1251('Привет');\n * ```\n */\nexport function unicodeToWin1251(s: string) {\n const L = [];\n for (let i = 0; i < s.length; i++) {\n const ord = s.charCodeAt(i);\n if (!(ord in DMap))\n throw new Error(`Character ${s.charAt(i)} isn't supported by win1251!`);\n L.push(String.fromCharCode(DMap[ord]));\n }\n return L.join('');\n}\n"],"mappings":"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"}
package/encodings.d.ts CHANGED
@@ -1,3 +1,20 @@
1
+ /**
2
+ * ---header-docs-section---
3
+ * # yummies/encodings
4
+ *
5
+ * ## Description
6
+ *
7
+ * String encoding utilities such as mapping Unicode text to legacy **Windows-1251** byte
8
+ * sequences for interoperability with older backends or binary protocols. The helpers focus on
9
+ * explicit transforms rather than implicit `TextEncoder` defaults so you can reason about output
10
+ * in environments where charset mistakes are costly.
11
+ *
12
+ * ## Usage
13
+ *
14
+ * ```ts
15
+ * import { unicodeToWin1251 } from "yummies/encodings";
16
+ * ```
17
+ */
1
18
  /**
2
19
  * Converts a Unicode string into a Win-1251 encoded binary string.
3
20
  *