@koine/browser 2.0.0-beta.13 → 2.0.0-beta.131

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 (151) hide show
  1. package/README.md +1 -1
  2. package/createStorage.cjs.d.ts +2 -0
  3. package/createStorage.cjs.default.js +1 -0
  4. package/createStorage.cjs.js +50 -0
  5. package/createStorage.cjs.mjs +2 -0
  6. package/createStorage.d.ts +7 -54
  7. package/createStorage.esm.d.ts +2 -0
  8. package/createStorage.esm.js +45 -0
  9. package/getZonedDate.cjs.d.ts +2 -0
  10. package/getZonedDate.cjs.default.js +1 -0
  11. package/{getZonedDate.mjs → getZonedDate.cjs.js} +13 -18
  12. package/getZonedDate.cjs.mjs +2 -0
  13. package/getZonedDate.d.ts +1 -15
  14. package/getZonedDate.esm.d.ts +2 -0
  15. package/getZonedDate.esm.js +21 -0
  16. package/gtag.cjs.d.ts +2 -0
  17. package/gtag.cjs.default.js +1 -0
  18. package/gtag.cjs.js +22 -0
  19. package/gtag.cjs.mjs +2 -0
  20. package/gtag.d.ts +2 -0
  21. package/gtag.esm.d.ts +2 -0
  22. package/gtag.esm.js +17 -0
  23. package/gtagPageview.cjs.d.ts +2 -0
  24. package/gtagPageview.cjs.default.js +1 -0
  25. package/gtagPageview.cjs.js +12 -0
  26. package/gtagPageview.cjs.mjs +2 -0
  27. package/gtagPageview.d.ts +1 -4
  28. package/gtagPageview.esm.d.ts +2 -0
  29. package/gtagPageview.esm.js +7 -0
  30. package/index.cjs.d.ts +1 -0
  31. package/index.cjs.default.js +1 -0
  32. package/index.cjs.js +41 -0
  33. package/index.cjs.mjs +2 -0
  34. package/index.d.ts +4 -1
  35. package/index.esm.d.ts +1 -0
  36. package/index.esm.js +18 -0
  37. package/isIE.cjs.d.ts +2 -0
  38. package/isIE.cjs.default.js +1 -0
  39. package/isIE.cjs.js +14 -0
  40. package/isIE.cjs.mjs +2 -0
  41. package/isIE.d.ts +1 -6
  42. package/isIE.esm.d.ts +2 -0
  43. package/isIE.esm.js +9 -0
  44. package/isMobile.cjs.d.ts +2 -0
  45. package/isMobile.cjs.default.js +1 -0
  46. package/isMobile.cjs.js +16 -0
  47. package/isMobile.cjs.mjs +2 -0
  48. package/isMobile.d.ts +1 -6
  49. package/isMobile.esm.d.ts +2 -0
  50. package/isMobile.esm.js +11 -0
  51. package/listenUrlSearch.cjs.d.ts +2 -0
  52. package/listenUrlSearch.cjs.default.js +1 -0
  53. package/listenUrlSearch.cjs.js +32 -0
  54. package/listenUrlSearch.cjs.mjs +2 -0
  55. package/listenUrlSearch.d.ts +3 -0
  56. package/listenUrlSearch.esm.d.ts +2 -0
  57. package/listenUrlSearch.esm.js +27 -0
  58. package/listenUrlSearchParams.cjs.d.ts +2 -0
  59. package/listenUrlSearchParams.cjs.default.js +1 -0
  60. package/listenUrlSearchParams.cjs.js +14 -0
  61. package/listenUrlSearchParams.cjs.mjs +2 -0
  62. package/listenUrlSearchParams.d.ts +2 -0
  63. package/listenUrlSearchParams.esm.d.ts +2 -0
  64. package/listenUrlSearchParams.esm.js +9 -0
  65. package/navigateToHash.cjs.d.ts +2 -0
  66. package/navigateToHash.cjs.default.js +1 -0
  67. package/navigateToHash.cjs.js +15 -0
  68. package/navigateToHash.cjs.mjs +2 -0
  69. package/navigateToHash.d.ts +1 -7
  70. package/navigateToHash.esm.d.ts +2 -0
  71. package/navigateToHash.esm.js +10 -0
  72. package/navigateToHashParams.cjs.d.ts +2 -0
  73. package/navigateToHashParams.cjs.default.js +1 -0
  74. package/navigateToHashParams.cjs.js +15 -0
  75. package/navigateToHashParams.cjs.mjs +2 -0
  76. package/navigateToHashParams.d.ts +2 -8
  77. package/navigateToHashParams.esm.d.ts +2 -0
  78. package/navigateToHashParams.esm.js +10 -0
  79. package/navigateToMergedHashParams.cjs.d.ts +2 -0
  80. package/navigateToMergedHashParams.cjs.default.js +1 -0
  81. package/navigateToMergedHashParams.cjs.js +15 -0
  82. package/navigateToMergedHashParams.cjs.mjs +2 -0
  83. package/navigateToMergedHashParams.d.ts +2 -7
  84. package/navigateToMergedHashParams.esm.d.ts +2 -0
  85. package/navigateToMergedHashParams.esm.js +10 -0
  86. package/navigateToMergedParams.cjs.d.ts +2 -0
  87. package/navigateToMergedParams.cjs.default.js +1 -0
  88. package/navigateToMergedParams.cjs.js +16 -0
  89. package/navigateToMergedParams.cjs.mjs +2 -0
  90. package/navigateToMergedParams.d.ts +2 -8
  91. package/navigateToMergedParams.esm.d.ts +2 -0
  92. package/navigateToMergedParams.esm.js +11 -0
  93. package/navigateToParams.cjs.d.ts +2 -0
  94. package/navigateToParams.cjs.default.js +1 -0
  95. package/navigateToParams.cjs.js +17 -0
  96. package/navigateToParams.cjs.mjs +2 -0
  97. package/navigateToParams.d.ts +2 -9
  98. package/navigateToParams.esm.d.ts +2 -0
  99. package/navigateToParams.esm.js +12 -0
  100. package/navigateToUrl.cjs.d.ts +2 -0
  101. package/navigateToUrl.cjs.default.js +1 -0
  102. package/navigateToUrl.cjs.js +12 -0
  103. package/navigateToUrl.cjs.mjs +2 -0
  104. package/navigateToUrl.d.ts +1 -6
  105. package/navigateToUrl.esm.d.ts +2 -0
  106. package/navigateToUrl.esm.js +7 -0
  107. package/navigateWithoutUrlParam.cjs.d.ts +2 -0
  108. package/navigateWithoutUrlParam.cjs.default.js +1 -0
  109. package/navigateWithoutUrlParam.cjs.js +16 -0
  110. package/navigateWithoutUrlParam.cjs.mjs +2 -0
  111. package/navigateWithoutUrlParam.d.ts +1 -7
  112. package/navigateWithoutUrlParam.esm.d.ts +2 -0
  113. package/navigateWithoutUrlParam.esm.js +11 -0
  114. package/package.json +129 -8
  115. package/redirectTo.cjs.d.ts +2 -0
  116. package/redirectTo.cjs.default.js +1 -0
  117. package/redirectTo.cjs.js +15 -0
  118. package/redirectTo.cjs.mjs +2 -0
  119. package/redirectTo.d.ts +2 -8
  120. package/redirectTo.esm.d.ts +2 -0
  121. package/redirectTo.esm.js +10 -0
  122. package/storage.cjs.d.ts +2 -0
  123. package/storage.cjs.default.js +1 -0
  124. package/storage.cjs.js +14 -0
  125. package/storage.cjs.mjs +2 -0
  126. package/storage.d.ts +7 -12
  127. package/storage.esm.d.ts +2 -0
  128. package/storage.esm.js +9 -0
  129. package/storageClient.cjs.d.ts +2 -0
  130. package/storageClient.cjs.default.js +1 -0
  131. package/storageClient.cjs.js +21 -0
  132. package/storageClient.cjs.mjs +2 -0
  133. package/storageClient.d.ts +5 -13
  134. package/storageClient.esm.d.ts +2 -0
  135. package/storageClient.esm.js +16 -0
  136. package/createStorage.mjs +0 -133
  137. package/gtagPageview.mjs +0 -23
  138. package/index.mjs +0 -15
  139. package/isIE.mjs +0 -16
  140. package/isMobile.mjs +0 -14
  141. package/navigateToHash.mjs +0 -11
  142. package/navigateToHashParams.mjs +0 -19
  143. package/navigateToMergedHashParams.mjs +0 -11
  144. package/navigateToMergedParams.mjs +0 -12
  145. package/navigateToParams.mjs +0 -17
  146. package/navigateToUrl.mjs +0 -10
  147. package/navigateWithoutUrlParam.mjs +0 -18
  148. package/redirectTo.mjs +0 -14
  149. package/storage.mjs +0 -10
  150. package/storageClient.mjs +0 -97
  151. package/typings.d.ts +0 -12
package/README.md CHANGED
@@ -1 +1 @@
1
- # @koine/browser
1
+ # @koine/i18n
@@ -0,0 +1,2 @@
1
+ export * from "./createStorage";
2
+ export { default } from "./createStorage";
@@ -0,0 +1 @@
1
+ exports._default = require('./createStorage.cjs.js').default;
@@ -0,0 +1,50 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var utils = require('@koine/utils');
6
+ var dom = require('@koine/dom');
7
+ var storage = require('./storage.cjs.js');
8
+
9
+ /**
10
+ * @category storage
11
+ *//**
12
+ * Utility to create a storage instance to interact with `localStorage` using
13
+ * encrypted (encoded) key/values.
14
+ *
15
+ * @category storage
16
+ */let createStorage=(a,n)=>{let c=n?storage.storage.s:storage.storage.l,m=Object.keys(a).reduce((e,o)=>({...e,[o]:utils.encode(o)}),{});return {/**
17
+ * Get all storage value (it uses `localStorage.get()`).
18
+ *
19
+ * Unparseable values with `JSON.parse()` return their value as it is.
20
+ * On ssr or if the given `key` argument is not found `defaultValue` is
21
+ * returned, otherwise `null`.
22
+ */get:(t,o)=>c.get(m[t],utils.decode,o),/**
23
+ * Get all storage values (it uses `localStorage.get()`).
24
+ *
25
+ * `undefined` and `null` values are not returned.
26
+ */getAll(e){if(!utils.isBrowser)return "development"===process.env.NODE_ENV&&console.log("[@koine/utils:createStorage] attempt to use 'getAll' outside of browser."),{};let t={};for(let o in m){let s=this.get(o),l=e?.[o];utils.isNullOrUndefined(s)?l&&// NOTE: without the assertion typedoc does not compile
27
+ (t[o]=l):t[o]=s;}return t},/**
28
+ * Set a storage value (it uses `localStorage.set()`).
29
+ *
30
+ * Non-string values are stringified with `JSON.stringify()`
31
+ */set(e,o){c.set(m[e],o,utils.encode);},/**
32
+ * Set all given storage values (it uses `localStorage.set()`).
33
+ *
34
+ * Non-string values are stringified with `JSON.stringify()`, `undefined`
35
+ * and `null` values are removed from the storage
36
+ */setMany(e){if("development"!==process.env.NODE_ENV||utils.isBrowser||console.log("[@koine/utils:createStorage] attempt to use 'setMany' outside of browser."),utils.isBrowser)for(let t in e){let o=e[t];utils.isNullOrUndefined(o)?this.remove(t):this.set(t,o);}},/**
37
+ * Check if a storage value is _truthy_ (it uses `localStorage.get()`).
38
+ */has:e=>c.has(m[e]),/**
39
+ * Remove a storage value (it uses `localStorage.remove()`).
40
+ */remove(e){c.remove(m[e]);},/**
41
+ * Clear all storage values (it uses `localStorage.remove()`).
42
+ */clear(){if("development"!==process.env.NODE_ENV||utils.isBrowser||console.log("[@koine/utils:createStorage] attempt to use 'clear' outside of browser."),utils.isBrowser)for(let e in m)c.remove(m[e]);},/**
43
+ * Watch a storage value changes, this needs to be executed only in browser
44
+ * context (it uses `window.addEventListener("storage")`).
45
+ *
46
+ * Inspiration from [Multi Tab Logout in React — Redux](https://medium.com/front-end-weekly/multi-tab-logout-in-react-redux-4715f071c7fa)
47
+ */watch:(e,t,r)=>utils.isBrowser?dom.on(window,"storage",o=>{let{key:s,oldValue:l,newValue:i}=o;s===m[e]&&(l&&!i?t?.():!l&&i&&r?.());}):("development"===process.env.NODE_ENV&&console.log("[@koine/utils:createStorage] attempt to use 'watch' outside of browser."),utils.noop)}};
48
+
49
+ exports.createStorage = createStorage;
50
+ exports.default = createStorage;
@@ -0,0 +1,2 @@
1
+ export * from './createStorage.cjs.js';
2
+ export { _default as default } from './createStorage.cjs.default.js';
@@ -1,59 +1,12 @@
1
- /**
2
- * @category storage
3
- */
4
1
  export type CreateStorageConfig = Record<string, any>;
5
- /**
6
- * Utility to create a storage instance to interact with `localStorage` using
7
- * encrypted (encoded) key/values.
8
- *
9
- * @category storage
10
- */
11
- export declare const createStorage: <T extends CreateStorageConfig>(config: Partial<T>, useSessionStorage?: boolean) => {
12
- /**
13
- * Get all storage value (it uses `localStorage.get()`).
14
- *
15
- * Unparseable values with `JSON.parse()` return their value as it is.
16
- * On ssr or if the given `key` argument is not found `defaultValue` is
17
- * returned, otherwise `null`.
18
- */
19
- get<TKey extends Extract<keyof T, string>>(key: TKey, defaultValue?: T[TKey] | null | undefined): T[TKey] | null;
20
- /**
21
- * Get all storage values (it uses `localStorage.get()`).
22
- *
23
- * `undefined` and `null` values are not returned.
24
- */
25
- getAll(defaultValues?: Partial<T> | undefined): T;
26
- /**
27
- * Set a storage value (it uses `localStorage.set()`).
28
- *
29
- * Non-string values are stringified with `JSON.stringify()`
30
- */
31
- set<TKey_1 extends Extract<keyof T, string>>(key: TKey_1, value?: T[TKey_1] | undefined): void;
32
- /**
33
- * Set all given storage values (it uses `localStorage.set()`).
34
- *
35
- * Non-string values are stringified with `JSON.stringify()`, `undefined`
36
- * and `null` values are removed from the storage
37
- */
2
+ export declare let createStorage: <T extends CreateStorageConfig>(config: Partial<T>, useSessionStorage?: boolean) => {
3
+ get<TKey extends Extract<keyof T, string>>(key: TKey, defaultValue?: null | T[TKey]): T[TKey] | null;
4
+ getAll(defaultValues?: Partial<T>): T;
5
+ set<TKey extends Extract<keyof T, string>>(key: TKey, value?: T[TKey]): void;
38
6
  setMany(newValues: Partial<T>): void;
39
- /**
40
- * Check if a storage value is _truthy_ (it uses `localStorage.get()`).
41
- */
42
- has<TKey_2 extends Extract<keyof T, string>>(key: TKey_2): any;
43
- /**
44
- * Remove a storage value (it uses `localStorage.remove()`).
45
- */
46
- remove<TKey_3 extends Extract<keyof T, string>>(key: TKey_3): void;
47
- /**
48
- * Clear all storage values (it uses `localStorage.remove()`).
49
- */
7
+ has<TKey extends Extract<keyof T, string>>(key: TKey): any;
8
+ remove<TKey extends Extract<keyof T, string>>(key: TKey): void;
50
9
  clear(): void;
51
- /**
52
- * Watch a storage value changes, this needs to be executed only in browser
53
- * context (it uses `window.addEventListener("storage")`).
54
- *
55
- * Inspiration from [Multi Tab Logout in React — Redux](https://medium.com/front-end-weekly/multi-tab-logout-in-react-redux-4715f071c7fa)
56
- */
57
- watch: <TKey_4 extends keyof T>(keyToWatch: TKey_4, onRemoved?: () => void, onAdded?: () => void) => () => void | undefined;
10
+ watch: <TKey extends keyof T>(keyToWatch: TKey, onRemoved?: () => void, onAdded?: () => void) => () => void | undefined;
58
11
  };
59
12
  export default createStorage;
@@ -0,0 +1,2 @@
1
+ export * from "./createStorage";
2
+ export { default } from "./createStorage";
@@ -0,0 +1,45 @@
1
+ import { encode, decode, isBrowser, isNullOrUndefined, noop } from '@koine/utils';
2
+ import { on } from '@koine/dom';
3
+ import { storage } from './storage.esm.js';
4
+
5
+ /**
6
+ * @category storage
7
+ *//**
8
+ * Utility to create a storage instance to interact with `localStorage` using
9
+ * encrypted (encoded) key/values.
10
+ *
11
+ * @category storage
12
+ */let createStorage=(a,n)=>{let c=n?storage.s:storage.l,m=Object.keys(a).reduce((e,o)=>({...e,[o]:encode(o)}),{});return {/**
13
+ * Get all storage value (it uses `localStorage.get()`).
14
+ *
15
+ * Unparseable values with `JSON.parse()` return their value as it is.
16
+ * On ssr or if the given `key` argument is not found `defaultValue` is
17
+ * returned, otherwise `null`.
18
+ */get:(t,o)=>c.get(m[t],decode,o),/**
19
+ * Get all storage values (it uses `localStorage.get()`).
20
+ *
21
+ * `undefined` and `null` values are not returned.
22
+ */getAll(e){if(!isBrowser)return "development"===process.env.NODE_ENV&&console.log("[@koine/utils:createStorage] attempt to use 'getAll' outside of browser."),{};let t={};for(let o in m){let s=this.get(o),l=e?.[o];isNullOrUndefined(s)?l&&// NOTE: without the assertion typedoc does not compile
23
+ (t[o]=l):t[o]=s;}return t},/**
24
+ * Set a storage value (it uses `localStorage.set()`).
25
+ *
26
+ * Non-string values are stringified with `JSON.stringify()`
27
+ */set(e,o){c.set(m[e],o,encode);},/**
28
+ * Set all given storage values (it uses `localStorage.set()`).
29
+ *
30
+ * Non-string values are stringified with `JSON.stringify()`, `undefined`
31
+ * and `null` values are removed from the storage
32
+ */setMany(e){if("development"!==process.env.NODE_ENV||isBrowser||console.log("[@koine/utils:createStorage] attempt to use 'setMany' outside of browser."),isBrowser)for(let t in e){let o=e[t];isNullOrUndefined(o)?this.remove(t):this.set(t,o);}},/**
33
+ * Check if a storage value is _truthy_ (it uses `localStorage.get()`).
34
+ */has:e=>c.has(m[e]),/**
35
+ * Remove a storage value (it uses `localStorage.remove()`).
36
+ */remove(e){c.remove(m[e]);},/**
37
+ * Clear all storage values (it uses `localStorage.remove()`).
38
+ */clear(){if("development"!==process.env.NODE_ENV||isBrowser||console.log("[@koine/utils:createStorage] attempt to use 'clear' outside of browser."),isBrowser)for(let e in m)c.remove(m[e]);},/**
39
+ * Watch a storage value changes, this needs to be executed only in browser
40
+ * context (it uses `window.addEventListener("storage")`).
41
+ *
42
+ * Inspiration from [Multi Tab Logout in React — Redux](https://medium.com/front-end-weekly/multi-tab-logout-in-react-redux-4715f071c7fa)
43
+ */watch:(e,t,r)=>isBrowser?on(window,"storage",o=>{let{key:s,oldValue:l,newValue:i}=o;s===m[e]&&(l&&!i?t?.():!l&&i&&r?.());}):("development"===process.env.NODE_ENV&&console.log("[@koine/utils:createStorage] attempt to use 'watch' outside of browser."),noop)}};
44
+
45
+ export { createStorage, createStorage as default };
@@ -0,0 +1,2 @@
1
+ export * from "./getZonedDate";
2
+ export { default } from "./getZonedDate";
@@ -0,0 +1 @@
1
+ exports._default = require('./getZonedDate.cjs.js').default;
@@ -1,5 +1,10 @@
1
- import utcToZonedTime from "date-fns-tz/utcToZonedTime";
2
- import isBrowser from "@koine/utils/isBrowser";
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var dateFnsTz = require('date-fns-tz');
6
+ var utils = require('@koine/utils');
7
+
3
8
  /**
4
9
  * It returns a `Date` object from a date `string` adjusted on the user timeZone,
5
10
  * if a timeZone is not provided we try getting it from the `Intl` browwser native
@@ -13,19 +18,9 @@ import isBrowser from "@koine/utils/isBrowser";
13
18
  *
14
19
  * @param dateString A parseable date as string, `Z` is automatically suffixed if not present to correctly get time zone based time from a UTC date.
15
20
  * @param timeZone Optionally pass a timeZone (e.g. from user preference or from the server), it falls back trying to read it from the `Intl` browwser native API.
16
- */ export function getZonedDate(dateString = "", timeZone) {
17
- if (!dateString.endsWith("Z")) dateString += "Z";
18
- if (!timeZone && isBrowser) {
19
- try {
20
- timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;
21
- } catch (e) {
22
- if (process.env["NODE_ENV"] !== "production") {
23
- console.warn("[@koine/utils:getZonedDate] failed reading timeZone, error", e);
24
- }
25
- // no need to do anything here, it just means `Intl` failed, probably
26
- // because the browser does not support it
27
- }
28
- }
29
- return timeZone ? utcToZonedTime(new Date(dateString), timeZone) : new Date(dateString);
30
- }
31
- export default getZonedDate;
21
+ */let getZonedDate=(o="",n)=>{if(o.endsWith("Z")||(o+="Z"),!n&&utils.isBrowser)try{n=Intl.DateTimeFormat().resolvedOptions().timeZone;}catch(e){"development"===process.env.NODE_ENV&&console.warn("[@koine/browser:getZonedDate] failed reading timeZone, error",e);}// no need to do anything here, it just means `Intl` failed, probably
22
+ // because the browser does not support it
23
+ return n?dateFnsTz.toZonedTime(new Date(o),n):new Date(o)};
24
+
25
+ exports.default = getZonedDate;
26
+ exports.getZonedDate = getZonedDate;
@@ -0,0 +1,2 @@
1
+ export * from './getZonedDate.cjs.js';
2
+ export { _default as default } from './getZonedDate.cjs.default.js';
package/getZonedDate.d.ts CHANGED
@@ -1,16 +1,2 @@
1
- /**
2
- * It returns a `Date` object from a date `string` adjusted on the user timeZone,
3
- * if a timeZone is not provided we try getting it from the `Intl` browwser native
4
- * API. It gracefully falls back returning a _non-timezone-based_ `Date`.
5
- *
6
- * @category date
7
- *
8
- * @resources
9
- * - to get the timeZone client side see [this article](https://attacomsian.com/blog/javascript-current-timezone)
10
- * - for converting the date based on the time zone [date-fns docs](https://date-fns.org/v2.27.0/docs/Time-Zones) and [date-fns-tz docs](https://github.com/marnusw/date-fns-tz)
11
- *
12
- * @param dateString A parseable date as string, `Z` is automatically suffixed if not present to correctly get time zone based time from a UTC date.
13
- * @param timeZone Optionally pass a timeZone (e.g. from user preference or from the server), it falls back trying to read it from the `Intl` browwser native API.
14
- */
15
- export declare function getZonedDate(dateString?: string, timeZone?: string): Date;
1
+ export declare let getZonedDate: (dateString?: string, timeZone?: string) => Date;
16
2
  export default getZonedDate;
@@ -0,0 +1,2 @@
1
+ export * from "./getZonedDate";
2
+ export { default } from "./getZonedDate";
@@ -0,0 +1,21 @@
1
+ import { toZonedTime } from 'date-fns-tz';
2
+ import { isBrowser } from '@koine/utils';
3
+
4
+ /**
5
+ * It returns a `Date` object from a date `string` adjusted on the user timeZone,
6
+ * if a timeZone is not provided we try getting it from the `Intl` browwser native
7
+ * API. It gracefully falls back returning a _non-timezone-based_ `Date`.
8
+ *
9
+ * @category date
10
+ *
11
+ * @resources
12
+ * - to get the timeZone client side see [this article](https://attacomsian.com/blog/javascript-current-timezone)
13
+ * - for converting the date based on the time zone [date-fns docs](https://date-fns.org/v2.27.0/docs/Time-Zones) and [date-fns-tz docs](https://github.com/marnusw/date-fns-tz)
14
+ *
15
+ * @param dateString A parseable date as string, `Z` is automatically suffixed if not present to correctly get time zone based time from a UTC date.
16
+ * @param timeZone Optionally pass a timeZone (e.g. from user preference or from the server), it falls back trying to read it from the `Intl` browwser native API.
17
+ */let getZonedDate=(o="",n)=>{if(o.endsWith("Z")||(o+="Z"),!n&&isBrowser)try{n=Intl.DateTimeFormat().resolvedOptions().timeZone;}catch(e){"development"===process.env.NODE_ENV&&console.warn("[@koine/browser:getZonedDate] failed reading timeZone, error",e);}// no need to do anything here, it just means `Intl` failed, probably
18
+ // because the browser does not support it
19
+ return n?toZonedTime(new Date(o),n):new Date(o)};
20
+
21
+ export { getZonedDate as default, getZonedDate };
package/gtag.cjs.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export * from "./gtag";
2
+ export { default } from "./gtag";
@@ -0,0 +1 @@
1
+ exports._default = require('./gtag.cjs.js').default;
package/gtag.cjs.js ADDED
@@ -0,0 +1,22 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var utils = require('@koine/utils');
6
+
7
+ /**
8
+ * @category analytics-google
9
+ *
10
+ * If you like you could add to your globals `.d.ts` types:
11
+ *
12
+ * ```ts
13
+ * declare interface Window {
14
+ * gtag: <T extends unknown[]>(...args: T) => void;
15
+ * }
16
+ * ```
17
+ */let gtag=(...o)=>{// @ts-expect-error nevermind
18
+ utils.isUndefined(window)||utils.isUndefined(window.gtag)?utils.noop():// @ts-expect-error nevermind
19
+ window.gtag(...o);};// export type GtmEventArgs = [
20
+
21
+ exports.default = gtag;
22
+ exports.gtag = gtag;
package/gtag.cjs.mjs ADDED
@@ -0,0 +1,2 @@
1
+ export * from './gtag.cjs.js';
2
+ export { _default as default } from './gtag.cjs.default.js';
package/gtag.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export declare let gtag: <T extends unknown[]>(...args: T) => void;
2
+ export default gtag;
package/gtag.esm.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export * from "./gtag";
2
+ export { default } from "./gtag";
package/gtag.esm.js ADDED
@@ -0,0 +1,17 @@
1
+ import { isUndefined, noop } from '@koine/utils';
2
+
3
+ /**
4
+ * @category analytics-google
5
+ *
6
+ * If you like you could add to your globals `.d.ts` types:
7
+ *
8
+ * ```ts
9
+ * declare interface Window {
10
+ * gtag: <T extends unknown[]>(...args: T) => void;
11
+ * }
12
+ * ```
13
+ */let gtag=(...o)=>{// @ts-expect-error nevermind
14
+ isUndefined(window)||isUndefined(window.gtag)?noop():// @ts-expect-error nevermind
15
+ window.gtag(...o);};// export type GtmEventArgs = [
16
+
17
+ export { gtag as default, gtag };
@@ -0,0 +1,2 @@
1
+ export * from "./gtagPageview";
2
+ export { default } from "./gtagPageview";
@@ -0,0 +1 @@
1
+ exports._default = require('./gtagPageview.cjs.js').default;
@@ -0,0 +1,12 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var gtag = require('./gtag.cjs.js');
6
+
7
+ /**
8
+ * @category analytics-google
9
+ */let gtagPageview=(...t)=>gtag.gtag("event","page_view",{page_path:t[0]||location.pathname,page_title:t[1]||document.title,page_location:t[2]||location.href});// send_to: '<GA_MEASUREMENT_ID>'
10
+
11
+ exports.default = gtagPageview;
12
+ exports.gtagPageview = gtagPageview;
@@ -0,0 +1,2 @@
1
+ export * from './gtagPageview.cjs.js';
2
+ export { _default as default } from './gtagPageview.cjs.default.js';
package/gtagPageview.d.ts CHANGED
@@ -3,8 +3,5 @@ export type GtmPageviewArgs = [
3
3
  page_title?: string,
4
4
  page_location?: string
5
5
  ];
6
- /**
7
- * @category analytics-google
8
- */
9
- export declare const gtagPageview: (page_path?: string | undefined, page_title?: string | undefined, page_location?: string | undefined) => void;
6
+ export declare let gtagPageview: (page_path?: string | undefined, page_title?: string | undefined, page_location?: string | undefined) => void;
10
7
  export default gtagPageview;
@@ -0,0 +1,2 @@
1
+ export * from "./gtagPageview";
2
+ export { default } from "./gtagPageview";
@@ -0,0 +1,7 @@
1
+ import { gtag } from './gtag.esm.js';
2
+
3
+ /**
4
+ * @category analytics-google
5
+ */let gtagPageview=(...t)=>gtag("event","page_view",{page_path:t[0]||location.pathname,page_title:t[1]||document.title,page_location:t[2]||location.href});// send_to: '<GA_MEASUREMENT_ID>'
6
+
7
+ export { gtagPageview as default, gtagPageview };
package/index.cjs.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from "./index";
@@ -0,0 +1 @@
1
+ exports._default = require('./index.cjs.js').default;
package/index.cjs.js ADDED
@@ -0,0 +1,41 @@
1
+ 'use strict';
2
+
3
+ var createStorage = require('./createStorage.cjs.js');
4
+ var getZonedDate = require('./getZonedDate.cjs.js');
5
+ var gtag = require('./gtag.cjs.js');
6
+ var gtagPageview = require('./gtagPageview.cjs.js');
7
+ var isIE = require('./isIE.cjs.js');
8
+ var isMobile = require('./isMobile.cjs.js');
9
+ var listenUrlSearch = require('./listenUrlSearch.cjs.js');
10
+ var listenUrlSearchParams = require('./listenUrlSearchParams.cjs.js');
11
+ var navigateToHash = require('./navigateToHash.cjs.js');
12
+ var navigateToHashParams = require('./navigateToHashParams.cjs.js');
13
+ var navigateToMergedHashParams = require('./navigateToMergedHashParams.cjs.js');
14
+ var navigateToMergedParams = require('./navigateToMergedParams.cjs.js');
15
+ var navigateToParams = require('./navigateToParams.cjs.js');
16
+ var navigateToUrl = require('./navigateToUrl.cjs.js');
17
+ var navigateWithoutUrlParam = require('./navigateWithoutUrlParam.cjs.js');
18
+ var storage = require('./storage.cjs.js');
19
+ var redirectTo = require('./redirectTo.cjs.js');
20
+ var storageClient = require('./storageClient.cjs.js');
21
+
22
+
23
+
24
+ exports.createStorage = createStorage.createStorage;
25
+ exports.getZonedDate = getZonedDate.getZonedDate;
26
+ exports.gtag = gtag.gtag;
27
+ exports.gtagPageview = gtagPageview.gtagPageview;
28
+ exports.isIE = isIE.isIE;
29
+ exports.isMobile = isMobile.isMobile;
30
+ exports.listenUrlSearch = listenUrlSearch.listenUrlSearch;
31
+ exports.listenUrlSearchParams = listenUrlSearchParams.listenUrlSearchParams;
32
+ exports.navigateToHash = navigateToHash.navigateToHash;
33
+ exports.navigateToHashParams = navigateToHashParams.navigateToHashParams;
34
+ exports.navigateToMergedHashParams = navigateToMergedHashParams.navigateToMergedHashParams;
35
+ exports.navigateToMergedParams = navigateToMergedParams.navigateToMergedParams;
36
+ exports.navigateToParams = navigateToParams.navigateToParams;
37
+ exports.navigateToUrl = navigateToUrl.navigateToUrl;
38
+ exports.navigateWithoutUrlParam = navigateWithoutUrlParam.navigateWithoutUrlParam;
39
+ exports.storage = storage.storage;
40
+ exports.redirectTo = redirectTo.redirectTo;
41
+ exports.storageClient = storageClient.storageClient;
package/index.cjs.mjs ADDED
@@ -0,0 +1,2 @@
1
+ export * from './index.cjs.js';
2
+ export { _default as default } from './index.cjs.default.js';
package/index.d.ts CHANGED
@@ -1,8 +1,11 @@
1
1
  export { createStorage, type CreateStorageConfig } from "./createStorage";
2
2
  export { getZonedDate } from "./getZonedDate";
3
+ export { gtag } from "./gtag";
3
4
  export { gtagPageview, type GtmPageviewArgs } from "./gtagPageview";
4
5
  export { isIE } from "./isIE";
5
6
  export { isMobile } from "./isMobile";
7
+ export { listenUrlSearch } from "./listenUrlSearch";
8
+ export { listenUrlSearchParams } from "./listenUrlSearchParams";
6
9
  export { navigateToHash } from "./navigateToHash";
7
10
  export { navigateToHashParams } from "./navigateToHashParams";
8
11
  export { navigateToMergedHashParams } from "./navigateToMergedHashParams";
@@ -10,6 +13,6 @@ export { navigateToMergedParams } from "./navigateToMergedParams";
10
13
  export { navigateToParams } from "./navigateToParams";
11
14
  export { navigateToUrl } from "./navigateToUrl";
12
15
  export { navigateWithoutUrlParam } from "./navigateWithoutUrlParam";
13
- export { redirectTo } from "./redirectTo";
14
16
  export { storage } from "./storage";
17
+ export { redirectTo } from "./redirectTo";
15
18
  export { storageClient, type StorageClientConfig } from "./storageClient";
package/index.esm.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from "./index";
package/index.esm.js ADDED
@@ -0,0 +1,18 @@
1
+ export { createStorage } from './createStorage.esm.js';
2
+ export { getZonedDate } from './getZonedDate.esm.js';
3
+ export { gtag } from './gtag.esm.js';
4
+ export { gtagPageview } from './gtagPageview.esm.js';
5
+ export { isIE } from './isIE.esm.js';
6
+ export { isMobile } from './isMobile.esm.js';
7
+ export { listenUrlSearch } from './listenUrlSearch.esm.js';
8
+ export { listenUrlSearchParams } from './listenUrlSearchParams.esm.js';
9
+ export { navigateToHash } from './navigateToHash.esm.js';
10
+ export { navigateToHashParams } from './navigateToHashParams.esm.js';
11
+ export { navigateToMergedHashParams } from './navigateToMergedHashParams.esm.js';
12
+ export { navigateToMergedParams } from './navigateToMergedParams.esm.js';
13
+ export { navigateToParams } from './navigateToParams.esm.js';
14
+ export { navigateToUrl } from './navigateToUrl.esm.js';
15
+ export { navigateWithoutUrlParam } from './navigateWithoutUrlParam.esm.js';
16
+ export { storage } from './storage.esm.js';
17
+ export { redirectTo } from './redirectTo.esm.js';
18
+ export { storageClient } from './storageClient.esm.js';
package/isIE.cjs.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export * from "./isIE";
2
+ export { default } from "./isIE";
@@ -0,0 +1 @@
1
+ exports._default = require('./isIE.cjs.js').default;
package/isIE.cjs.js ADDED
@@ -0,0 +1,14 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var utils = require('@koine/utils');
6
+
7
+ /**
8
+ * @category detect
9
+ * @category is
10
+ * @see https://stackoverflow.com/a/21712356/12285349
11
+ */let isIE=(t=!0)=>{if(utils.isServer)return t;let i=window.navigator.userAgent;return !!(i.indexOf("MSIE ")>0||i.indexOf("Trident/")>0)};
12
+
13
+ exports.default = isIE;
14
+ exports.isIE = isIE;
package/isIE.cjs.mjs ADDED
@@ -0,0 +1,2 @@
1
+ export * from './isIE.cjs.js';
2
+ export { _default as default } from './isIE.cjs.default.js';
package/isIE.d.ts CHANGED
@@ -1,7 +1,2 @@
1
- /**
2
- * @category detect
3
- * @category is
4
- * @see https://stackoverflow.com/a/21712356/12285349
5
- */
6
- export declare function isIE(ssrValue?: boolean): boolean;
1
+ export declare let isIE: (ssrValue?: boolean) => boolean;
7
2
  export default isIE;
package/isIE.esm.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export * from "./isIE";
2
+ export { default } from "./isIE";
package/isIE.esm.js ADDED
@@ -0,0 +1,9 @@
1
+ import { isServer } from '@koine/utils';
2
+
3
+ /**
4
+ * @category detect
5
+ * @category is
6
+ * @see https://stackoverflow.com/a/21712356/12285349
7
+ */let isIE=(t=!0)=>{if(isServer)return t;let i=window.navigator.userAgent;return !!(i.indexOf("MSIE ")>0||i.indexOf("Trident/")>0)};
8
+
9
+ export { isIE as default, isIE };
@@ -0,0 +1,2 @@
1
+ export * from "./isMobile";
2
+ export { default } from "./isMobile";
@@ -0,0 +1 @@
1
+ exports._default = require('./isMobile.cjs.js').default;
@@ -0,0 +1,16 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var utils = require('@koine/utils');
6
+
7
+ /**
8
+ * @category detect
9
+ * @category is
10
+ * @see https://stackoverflow.com/a/3540295
11
+ */let isMobile=(e=!0)=>utils.isServer?e:// /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|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|phone)|xda|xiino/i.test(navigator.userAgent)
12
+ // || /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(navigator.userAgent.substr(0,4)
13
+ /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(window.navigator.userAgent);
14
+
15
+ exports.default = isMobile;
16
+ exports.isMobile = isMobile;
@@ -0,0 +1,2 @@
1
+ export * from './isMobile.cjs.js';
2
+ export { _default as default } from './isMobile.cjs.default.js';
package/isMobile.d.ts CHANGED
@@ -1,7 +1,2 @@
1
- /**
2
- * @category detect
3
- * @category is
4
- * @see https://stackoverflow.com/a/3540295
5
- */
6
- export declare function isMobile(ssrValue?: boolean): boolean;
1
+ export declare let isMobile: (ssrValue?: boolean) => boolean;
7
2
  export default isMobile;
@@ -0,0 +1,2 @@
1
+ export * from "./isMobile";
2
+ export { default } from "./isMobile";
@@ -0,0 +1,11 @@
1
+ import { isServer } from '@koine/utils';
2
+
3
+ /**
4
+ * @category detect
5
+ * @category is
6
+ * @see https://stackoverflow.com/a/3540295
7
+ */let isMobile=(e=!0)=>isServer?e:// /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|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|phone)|xda|xiino/i.test(navigator.userAgent)
8
+ // || /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(navigator.userAgent.substr(0,4)
9
+ /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(window.navigator.userAgent);
10
+
11
+ export { isMobile as default, isMobile };
@@ -0,0 +1,2 @@
1
+ export * from "./listenUrlSearch";
2
+ export { default } from "./listenUrlSearch";
@@ -0,0 +1 @@
1
+ exports._default = require('./listenUrlSearch.cjs.js').default;