@koine/browser 2.0.0-beta.74 → 2.0.0-beta.76

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 (74) hide show
  1. package/{browser → cjs/browser}/createStorage.js +1 -1
  2. package/{browser → cjs/browser}/getZonedDate.js +1 -1
  3. package/cjs/browser/gtag.js +1 -0
  4. package/{browser → cjs/browser}/gtagPageview.js +1 -1
  5. package/cjs/browser/isIE.js +1 -0
  6. package/{browser → cjs/browser}/isMobile.js +1 -1
  7. package/cjs/browser/listenUrlSearch.js +1 -0
  8. package/{browser → cjs/browser}/listenUrlSearchParams.js +1 -1
  9. package/cjs/browser/navigateToHash.js +1 -0
  10. package/cjs/browser/navigateToHashParams.js +1 -0
  11. package/cjs/browser/navigateToMergedHashParams.js +1 -0
  12. package/cjs/browser/navigateToMergedParams.js +1 -0
  13. package/cjs/browser/navigateToParams.js +1 -0
  14. package/{browser → cjs/browser}/navigateToUrl.js +1 -1
  15. package/{browser → cjs/browser}/navigateWithoutUrlParam.js +1 -1
  16. package/cjs/browser/redirectTo.js +1 -0
  17. package/{browser → cjs/browser}/storage.js +1 -1
  18. package/{browser → cjs/browser}/storageClient.js +1 -1
  19. package/cjs/createStorage.d.ts +12 -0
  20. package/cjs/getZonedDate.d.ts +2 -0
  21. package/cjs/gtag.d.ts +2 -0
  22. package/cjs/gtagPageview.d.ts +7 -0
  23. package/cjs/index.d.ts +18 -0
  24. package/cjs/isIE.d.ts +2 -0
  25. package/cjs/isMobile.d.ts +2 -0
  26. package/cjs/listenUrlSearch.d.ts +3 -0
  27. package/cjs/listenUrlSearchParams.d.ts +2 -0
  28. package/cjs/navigateToHash.d.ts +2 -0
  29. package/cjs/navigateToHashParams.d.ts +3 -0
  30. package/cjs/navigateToMergedHashParams.d.ts +3 -0
  31. package/cjs/navigateToMergedParams.d.ts +3 -0
  32. package/cjs/navigateToParams.d.ts +3 -0
  33. package/cjs/navigateToUrl.d.ts +2 -0
  34. package/cjs/navigateWithoutUrlParam.d.ts +2 -0
  35. package/cjs/package.json +16 -0
  36. package/cjs/redirectTo.d.ts +3 -0
  37. package/cjs/storage.d.ts +15 -0
  38. package/cjs/storageClient.d.ts +8 -0
  39. package/createStorage.js +1 -93
  40. package/getZonedDate.js +1 -22
  41. package/gtag.js +1 -8
  42. package/gtagPageview.js +1 -7
  43. package/index.js +1 -18
  44. package/isIE.js +1 -12
  45. package/isMobile.js +1 -6
  46. package/listenUrlSearch.js +1 -39
  47. package/listenUrlSearchParams.js +1 -10
  48. package/navigateToHash.js +1 -6
  49. package/navigateToHashParams.js +1 -13
  50. package/navigateToMergedHashParams.js +1 -4
  51. package/navigateToMergedParams.js +1 -4
  52. package/navigateToParams.js +1 -10
  53. package/navigateToUrl.js +1 -6
  54. package/navigateWithoutUrlParam.js +1 -13
  55. package/package.json +80 -9
  56. package/redirectTo.js +1 -8
  57. package/storage.js +1 -6
  58. package/storageClient.js +1 -91
  59. package/README.md +0 -1
  60. package/browser/gtag.js +0 -1
  61. package/browser/isIE.js +0 -1
  62. package/browser/listenUrlSearch.js +0 -1
  63. package/browser/navigateToHash.js +0 -1
  64. package/browser/navigateToHashParams.js +0 -1
  65. package/browser/navigateToMergedHashParams.js +0 -1
  66. package/browser/navigateToMergedParams.js +0 -1
  67. package/browser/navigateToParams.js +0 -1
  68. package/browser/redirectTo.js +0 -1
  69. package/index.cjs.d.ts +0 -1
  70. package/index.cjs.default.js +0 -1
  71. package/index.cjs.js +0 -61
  72. package/index.cjs.mjs +0 -2
  73. package/index.esm.js +0 -40
  74. /package/{browser → cjs/browser}/index.js +0 -0
@@ -1 +1 @@
1
- import{decode as e,encode as t,isBrowser as o,isNullOrUndefined as r,noop as s}from"@koine/utils";import{on as l}from"@koine/dom";import{storage as i}from"./storage";export let createStorage=(n,a)=>{let c=a?i.s:i.l,m=Object.keys(n).reduce((e,o)=>({...e,[o]:t(o)}),{});return{get:(t,o)=>c.get(m[t],e,o),getAll(e){if(!o)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];r(s)?l&&(t[o]=l):t[o]=s}return t},set(e,o){c.set(m[e],o,t)},setMany(e){if("development"!==process.env.NODE_ENV||o||console.log("[@koine/utils:createStorage] attempt to use 'setMany' outside of browser."),o)for(let t in e){let o=e[t];r(o)?this.remove(t):this.set(t,o)}},has:e=>c.has(m[e]),remove(e){c.remove(m[e])},clear(){if("development"!==process.env.NODE_ENV||o||console.log("[@koine/utils:createStorage] attempt to use 'clear' outside of browser."),o)for(let e in m)c.remove(m[e])},watch:(e,t,r)=>o?l(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."),s)}};
1
+ import{decode as e,encode as t,isBrowser as o,isNullOrUndefined as r,noop as s}from"@koine/utils";import{on as l}from"@koine/dom";import{storage as i}from"./storage";export let createStorage=(a,n)=>{let c=n?i.s:i.l,m=Object.keys(a).reduce((e,o)=>({...e,[o]:t(o)}),{});return{get:(t,o)=>c.get(m[t],e,o),getAll(e){if(!o)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];r(s)?l&&(t[o]=l):t[o]=s}return t},set(e,o){c.set(m[e],o,t)},setMany(e){if("development"!==process.env.NODE_ENV||o||console.log("[@koine/utils:createStorage] attempt to use 'setMany' outside of browser."),o)for(let t in e){let o=e[t];r(o)?this.remove(t):this.set(t,o)}},has:e=>c.has(m[e]),remove(e){c.remove(m[e])},clear(){if("development"!==process.env.NODE_ENV||o||console.log("[@koine/utils:createStorage] attempt to use 'clear' outside of browser."),o)for(let e in m)c.remove(m[e])},watch:(e,t,r)=>o?l(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."),s)}};export default createStorage;
@@ -1 +1 @@
1
- import{isBrowser as e}from"@koine/utils";let t=(e,t)=>e;export let getZonedDate=(o="",n)=>{if(o.endsWith("Z")||(o+="Z"),!n&&e)try{n=Intl.DateTimeFormat().resolvedOptions().timeZone}catch(e){"development"===process.env.NODE_ENV&&console.warn("[@koine/browser:getZonedDate] failed reading timeZone, error",e)}return n?t(new Date(o),n):new Date(o)};
1
+ import{isBrowser as e}from"@koine/utils";let t=(e,t)=>e;export let getZonedDate=(o="",n)=>{if(o.endsWith("Z")||(o+="Z"),!n&&e)try{n=Intl.DateTimeFormat().resolvedOptions().timeZone}catch(e){"development"===process.env.NODE_ENV&&console.warn("[@koine/browser:getZonedDate] failed reading timeZone, error",e)}return n?t(new Date(o),n):new Date(o)};export default getZonedDate;
@@ -0,0 +1 @@
1
+ import{isUndefined as t,noop as g}from"@koine/utils";export let gtag=(...o)=>{t(window)||t(window.gtag)?g():window.gtag(...o)};export default gtag;
@@ -1 +1 @@
1
- import{gtag as e}from"./gtag";export let gtagPageview=(...t)=>e("event","page_view",{page_path:t[0]||location.pathname,page_title:t[1]||document.title,page_location:t[2]||location.href});
1
+ import{gtag as e}from"./gtag";export let gtagPageview=(...t)=>e("event","page_view",{page_path:t[0]||location.pathname,page_title:t[1]||document.title,page_location:t[2]||location.href});export default gtagPageview;
@@ -0,0 +1 @@
1
+ import{isServer as e}from"@koine/utils";export let isIE=(t=!0)=>{if(e)return t;let i=window.navigator.userAgent;return!!(i.indexOf("MSIE ")>0||i.indexOf("Trident/")>0)};export default isIE;
@@ -1 +1 @@
1
- import{isServer as i}from"@koine/utils";export let isMobile=(e=!0)=>i?e:/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(window.navigator.userAgent);
1
+ import{isServer as i}from"@koine/utils";export let isMobile=(e=!0)=>i?e:/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(window.navigator.userAgent);export default isMobile;
@@ -0,0 +1 @@
1
+ import{isBrowser as t}from"@koine/utils";import{on as e}from"@koine/dom";let r=(t,e,r)=>function(...o){if(r)return e(),t.apply(this,o);let i=t.apply(this,o);return e(),i},o=t?location.search:"",i=()=>{let t=location.search;if(t!==o)for(let e of history.__.h.values())e(o,t);o=t};export let listenUrlSearch=t=>(history.__||(history.pushState=r(history.pushState,i),history.replaceState=r(history.replaceState,i),e(window,"popstate",i),history.__={h:new Set}),history.__.h.has(t)||history.__.h.add(t),()=>{history.__.h.delete(t)});export default listenUrlSearch;
@@ -1 +1 @@
1
- import{listenUrlSearch as e}from"./listenUrlSearch";export let listenUrlSearchParams=(r,a)=>e((e,t)=>{let l=new URLSearchParams(e),m=new URLSearchParams(t).get(r);l.get(r)!==m&&a(m)});
1
+ import{listenUrlSearch as e}from"./listenUrlSearch";export let listenUrlSearchParams=(r,a)=>e((e,t)=>{let l=new URLSearchParams(e),s=new URLSearchParams(t).get(r);l.get(r)!==s&&a(s)});export default listenUrlSearchParams;
@@ -0,0 +1 @@
1
+ import{navigateToUrl as a}from"./navigateToUrl";export let navigateToHash=(t="")=>{let{pathname:o,search:e}=location;a(o+(e?"?"+e:"")+(t?"#"+t:""),!0)};export default navigateToHash;
@@ -0,0 +1 @@
1
+ import{buildUrlQueryString as a,getUrlHashPathname as t}from"@koine/utils";export let navigateToHashParams=(o={},e="")=>{let r=!e,i="#/"+t(e=e||location.hash)+("string"==typeof o?o:a(o));return r&&(location.hash=i),i};export default navigateToHashParams;
@@ -0,0 +1 @@
1
+ import{getUrlHashParams as a,mergeUrlQueryParams as e}from"@koine/utils";import{navigateToHashParams as r}from"./navigateToHashParams";export let navigateToMergedHashParams=(o={},t="")=>r(e(a(t),o),t);export default navigateToMergedHashParams;
@@ -0,0 +1 @@
1
+ import{getUrlQueryParams as a,mergeUrlQueryParams as e}from"@koine/utils";import{navigateToParams as r}from"./navigateToParams";export let navigateToMergedParams=(o={},t)=>r(e(a(),o),t);export default navigateToMergedParams;
@@ -0,0 +1 @@
1
+ import{buildUrlQueryString as t,isBrowser as a}from"@koine/utils";import{navigateToUrl as o}from"./navigateToUrl";export let navigateToParams=(e={},r)=>{let i="string"==typeof e?e:t(e);return a&&o(location.pathname+i,r),i};export default navigateToParams;
@@ -1 +1 @@
1
- export let navigateToUrl=(t="",e)=>{t&&history[e?"replaceState":"pushState"](history.state,"",t)};
1
+ export let navigateToUrl=(t="",e)=>{t&&history[e?"replaceState":"pushState"](history.state,"",t)};export default navigateToUrl;
@@ -1 +1 @@
1
- import{getUrlQueryParams as t}from"@koine/utils";import{navigateToParams as r}from"./navigateToParams";export let navigateWithoutUrlParam=(o,a)=>{let e={},i=t();for(let t in i)t!==o&&(e[t]=i[t]);return r(e,a)};
1
+ import{getUrlQueryParams as t}from"@koine/utils";import{navigateToParams as r}from"./navigateToParams";export let navigateWithoutUrlParam=(a,e)=>{let o={},i=t();for(let t in i)t!==a&&(o[t]=i[t]);return r(o,e)};export default navigateWithoutUrlParam;
@@ -0,0 +1 @@
1
+ import{buildUrlQueryString as e,isBrowser as r}from"@koine/utils";export let redirectTo=(t,o)=>{if(r){let r=e(o);location.href=t.replace(/\?+$/g,"")+r}};export default redirectTo;
@@ -1 +1 @@
1
- import{storageClient as t}from"./storageClient";export let storage={l:t(),s:t(!0)};
1
+ import{storageClient as t}from"./storageClient";export let storage={l:t(),s:t(!0)};export default storage;
@@ -1 +1 @@
1
- import{isBrowser as e,isString as o}from"@koine/utils";let t={g:"getItem",s:"setItem",r:"removeItem"};export let storageClient=s=>{let r=(o,r,l)=>e?window[s?"sessionStorage":"localStorage"][t[o]](r,l):()=>{"development"===process.env.NODE_ENV&&console.warn(`[@koine/utils:storageClient]: ${s?"sessionStorage":"localStorage"} does not exists outside of browser.`)};return{get:(o,t,s)=>{let l=s??null;if("development"!==process.env.NODE_ENV||e||console.log(`[@koine/utils:storage] called 'get' outside of browser with default value '${JSON.stringify(s)}'.`),e){let e=r("g",o);if(e){e=t?t(e):e;try{let o=JSON.parse(e);o&&(l=o)}catch(o){l=e}}}return l},set:(t,s,l=e=>e)=>{if("development"!==process.env.NODE_ENV||e||console.log("[@koine/utils:storage] called 'set' outside of browser does not work."),e)try{let e=l(o(s)?s:JSON.stringify(s));r("s",t,e)}catch(e){"development"===process.env.NODE_ENV&&console.warn("[@koine/utils:createStorage]: 'set' error.",e)}},remove:o=>{if("development"!==process.env.NODE_ENV||e||console.log("[@koine/utils:storage] called 'remove' outside of browser does not work."),e)try{r("r",o)}catch(e){"development"===process.env.NODE_ENV&&console.warn("[@koine/utils:createStorage]: 'remove' error.",e)}},has:(o,t)=>{let s=t??!1;return"development"!==process.env.NODE_ENV||e||console.log(`[@koine/utils:storage] called 'has' outside of browser with default value '${JSON.stringify(t)}'.`),e&&(s=r("g",o)??!1),s}}};
1
+ import{isBrowser as e,isString as o}from"@koine/utils";let t={g:"getItem",s:"setItem",r:"removeItem"};export let storageClient=s=>{let r=(o,r,l)=>e?window[s?"sessionStorage":"localStorage"][t[o]](r,l):()=>{"development"===process.env.NODE_ENV&&console.warn(`[@koine/utils:storageClient]: ${s?"sessionStorage":"localStorage"} does not exists outside of browser.`)};return{get:(o,t,s)=>{let l=s??null;if("development"!==process.env.NODE_ENV||e||console.log(`[@koine/utils:storage] called 'get' outside of browser with default value '${JSON.stringify(s)}'.`),e){let e=r("g",o);if(e){e=t?t(e):e;try{let o=JSON.parse(e);o&&(l=o)}catch(o){l=e}}}return l},set:(t,s,l=e=>e)=>{if("development"!==process.env.NODE_ENV||e||console.log("[@koine/utils:storage] called 'set' outside of browser does not work."),e)try{let e=l(o(s)?s:JSON.stringify(s));r("s",t,e)}catch(e){"development"===process.env.NODE_ENV&&console.warn("[@koine/utils:createStorage]: 'set' error.",e)}},remove:o=>{if("development"!==process.env.NODE_ENV||e||console.log("[@koine/utils:storage] called 'remove' outside of browser does not work."),e)try{r("r",o)}catch(e){"development"===process.env.NODE_ENV&&console.warn("[@koine/utils:createStorage]: 'remove' error.",e)}},has:(o,t)=>{let s=t??!1;return"development"!==process.env.NODE_ENV||e||console.log(`[@koine/utils:storage] called 'has' outside of browser with default value '${JSON.stringify(t)}'.`),e&&(s=r("g",o)??!1),s}}};export default storageClient;
@@ -0,0 +1,12 @@
1
+ export type CreateStorageConfig = Record<string, any>;
2
+ export declare let createStorage: <T extends CreateStorageConfig>(config: Partial<T>, useSessionStorage?: boolean) => {
3
+ get<TKey extends Extract<keyof T, string>>(key: TKey, defaultValue?: T[TKey] | null | undefined): T[TKey] | null;
4
+ getAll(defaultValues?: Partial<T> | undefined): T;
5
+ set<TKey_1 extends Extract<keyof T, string>>(key: TKey_1, value?: T[TKey_1] | undefined): void;
6
+ setMany(newValues: Partial<T>): void;
7
+ has<TKey_2 extends Extract<keyof T, string>>(key: TKey_2): any;
8
+ remove<TKey_3 extends Extract<keyof T, string>>(key: TKey_3): void;
9
+ clear(): void;
10
+ watch: <TKey_4 extends keyof T>(keyToWatch: TKey_4, onRemoved?: () => void, onAdded?: () => void) => () => void | undefined;
11
+ };
12
+ export default createStorage;
@@ -0,0 +1,2 @@
1
+ export declare let getZonedDate: (dateString?: string, timeZone?: string) => Date;
2
+ export default getZonedDate;
package/cjs/gtag.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export declare let gtag: <T extends unknown[]>(...args: T) => void;
2
+ export default gtag;
@@ -0,0 +1,7 @@
1
+ export type GtmPageviewArgs = [
2
+ page_path?: string,
3
+ page_title?: string,
4
+ page_location?: string
5
+ ];
6
+ export declare let gtagPageview: (page_path?: string | undefined, page_title?: string | undefined, page_location?: string | undefined) => void;
7
+ export default gtagPageview;
package/cjs/index.d.ts ADDED
@@ -0,0 +1,18 @@
1
+ export { createStorage, type CreateStorageConfig } from "./createStorage";
2
+ export { getZonedDate } from "./getZonedDate";
3
+ export { gtag } from "./gtag";
4
+ export { gtagPageview, type GtmPageviewArgs } from "./gtagPageview";
5
+ export { isIE } from "./isIE";
6
+ export { isMobile } from "./isMobile";
7
+ export { listenUrlSearch } from "./listenUrlSearch";
8
+ export { listenUrlSearchParams } from "./listenUrlSearchParams";
9
+ export { navigateToHash } from "./navigateToHash";
10
+ export { navigateToHashParams } from "./navigateToHashParams";
11
+ export { navigateToMergedHashParams } from "./navigateToMergedHashParams";
12
+ export { navigateToMergedParams } from "./navigateToMergedParams";
13
+ export { navigateToParams } from "./navigateToParams";
14
+ export { navigateToUrl } from "./navigateToUrl";
15
+ export { navigateWithoutUrlParam } from "./navigateWithoutUrlParam";
16
+ export { redirectTo } from "./redirectTo";
17
+ export { storage } from "./storage";
18
+ export { storageClient, type StorageClientConfig } from "./storageClient";
package/cjs/isIE.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export declare let isIE: (ssrValue?: boolean) => boolean;
2
+ export default isIE;
@@ -0,0 +1,2 @@
1
+ export declare let isMobile: (ssrValue?: boolean) => boolean;
2
+ export default isMobile;
@@ -0,0 +1,3 @@
1
+ type Handler = (prevLocationSearch: string, newLocationSearch: string) => void;
2
+ export declare let listenUrlSearch: (handler: Handler) => () => void;
3
+ export default listenUrlSearch;
@@ -0,0 +1,2 @@
1
+ export declare let listenUrlSearchParams: (paramName: string, handler: (paramNewValue: string | null) => void) => () => void;
2
+ export default listenUrlSearchParams;
@@ -0,0 +1,2 @@
1
+ export declare let navigateToHash: (hash?: string) => void;
2
+ export default navigateToHash;
@@ -0,0 +1,3 @@
1
+ import { type AnyQueryParams } from "@koine/utils";
2
+ export declare let navigateToHashParams: (params?: string | AnyQueryParams, hash?: string) => string;
3
+ export default navigateToHashParams;
@@ -0,0 +1,3 @@
1
+ import { type AnyQueryParams } from "@koine/utils";
2
+ export declare let navigateToMergedHashParams: (params?: NonNullable<AnyQueryParams>, hash?: string) => string;
3
+ export default navigateToMergedHashParams;
@@ -0,0 +1,3 @@
1
+ import { type AnyQueryParams } from "@koine/utils";
2
+ export declare let navigateToMergedParams: (params?: NonNullable<AnyQueryParams>, replace?: boolean) => string;
3
+ export default navigateToMergedParams;
@@ -0,0 +1,3 @@
1
+ import { type AnyQueryParams } from "@koine/utils";
2
+ export declare let navigateToParams: (params?: string | AnyQueryParams, replace?: boolean) => string;
3
+ export default navigateToParams;
@@ -0,0 +1,2 @@
1
+ export declare let navigateToUrl: (url?: string, replace?: boolean) => void;
2
+ export default navigateToUrl;
@@ -0,0 +1,2 @@
1
+ export declare let navigateWithoutUrlParam: (paramName?: string, replace?: boolean) => string;
2
+ export default navigateWithoutUrlParam;
@@ -0,0 +1,16 @@
1
+ {
2
+ "name": "@koine/browser",
3
+ "sideEffects": false,
4
+ "dependencies": {
5
+ "@koine/dom": "*",
6
+ "@koine/utils": "*"
7
+ },
8
+ "peerDependenciesMeta": {
9
+ "date-fns-tz": {
10
+ "optional": true
11
+ }
12
+ },
13
+ "module": "./index.js",
14
+ "type": "module",
15
+ "main": "./index.js"
16
+ }
@@ -0,0 +1,3 @@
1
+ import { type AnyQueryParams } from "@koine/utils";
2
+ export declare let redirectTo: (url: string, params?: AnyQueryParams) => void;
3
+ export default redirectTo;
@@ -0,0 +1,15 @@
1
+ export declare let storage: {
2
+ l: {
3
+ get: <TKey extends string, TValue = any>(key: TKey, transform?: ((value: string) => TValue) | undefined, defaultValue?: TValue | null | undefined) => NonNullable<TValue> | null;
4
+ set: <TKey_1 extends string, TValue_1 = any>(key: TKey_1, value?: TValue_1 | undefined, transform?: (value: any) => string) => void;
5
+ remove: <TKey_2 extends string>(key: TKey_2) => void;
6
+ has: <TKey_3 extends string, TValue_2 = any>(key: TKey_3, defaultValue?: TValue_2 | undefined) => boolean | NonNullable<TValue_2>;
7
+ };
8
+ s: {
9
+ get: <TKey extends string, TValue = any>(key: TKey, transform?: ((value: string) => TValue) | undefined, defaultValue?: TValue | null | undefined) => NonNullable<TValue> | null;
10
+ set: <TKey_1 extends string, TValue_1 = any>(key: TKey_1, value?: TValue_1 | undefined, transform?: (value: any) => string) => void;
11
+ remove: <TKey_2 extends string>(key: TKey_2) => void;
12
+ has: <TKey_3 extends string, TValue_2 = any>(key: TKey_3, defaultValue?: TValue_2 | undefined) => boolean | NonNullable<TValue_2>;
13
+ };
14
+ };
15
+ export default storage;
@@ -0,0 +1,8 @@
1
+ export type StorageClientConfig = Record<string, any>;
2
+ export declare let storageClient: <TConfig extends StorageClientConfig = StorageClientConfig>(useSessionStorage?: boolean) => {
3
+ get: <TKey extends Extract<keyof TConfig, string>, TValue = TConfig[TKey]>(key: TKey, transform?: ((value: string) => TValue) | undefined, defaultValue?: TValue | null | undefined) => NonNullable<TValue> | null;
4
+ set: <TKey_1 extends Extract<keyof TConfig, string>, TValue_1 = TConfig[TKey_1]>(key: TKey_1, value?: TValue_1 | undefined, transform?: (value: any) => string) => void;
5
+ remove: <TKey_2 extends Extract<keyof TConfig, string>>(key: TKey_2) => void;
6
+ has: <TKey_3 extends Extract<keyof TConfig, string>, TValue_2 = TConfig[TKey_3]>(key: TKey_3, defaultValue?: TValue_2 | undefined) => boolean | NonNullable<TValue_2>;
7
+ };
8
+ export default storageClient;
package/createStorage.js CHANGED
@@ -1,93 +1 @@
1
- import { decode, encode, isBrowser, isNullOrUndefined, noop, } from "@koine/utils";
2
- import { on } from "@koine/dom";
3
- import { storage } from "./storage";
4
- export let createStorage = (config, useSessionStorage) => {
5
- const client = useSessionStorage ? storage.s : storage.l;
6
- const keys = Object.keys(config).reduce((map, key) => ({ ...map, [key]: encode(key) }), {});
7
- return {
8
- get(key, defaultValue) {
9
- return client.get(keys[key], decode, defaultValue);
10
- },
11
- getAll(defaultValues) {
12
- if (!isBrowser) {
13
- if (process.env["NODE_ENV"] === "development") {
14
- console.log(`[@koine/utils:createStorage] attempt to use 'getAll' outside of browser.`);
15
- }
16
- return {};
17
- }
18
- const all = {};
19
- for (const key in keys) {
20
- const value = this.get(key);
21
- const defaultValue = defaultValues?.[key];
22
- if (!isNullOrUndefined(value)) {
23
- all[key] = value;
24
- }
25
- else if (defaultValue) {
26
- all[key] = defaultValue;
27
- }
28
- }
29
- return all;
30
- },
31
- set(key, value) {
32
- client.set(keys[key], value, encode);
33
- },
34
- setMany(newValues) {
35
- if (process.env["NODE_ENV"] === "development") {
36
- if (!isBrowser) {
37
- console.log(`[@koine/utils:createStorage] attempt to use 'setMany' outside of browser.`);
38
- }
39
- }
40
- if (isBrowser) {
41
- for (const key in newValues) {
42
- const value = newValues[key];
43
- if (!isNullOrUndefined(value)) {
44
- this.set(key, value);
45
- }
46
- else {
47
- this.remove(key);
48
- }
49
- }
50
- }
51
- },
52
- has(key) {
53
- return client.has(keys[key]);
54
- },
55
- remove(key) {
56
- client.remove(keys[key]);
57
- },
58
- clear() {
59
- if (process.env["NODE_ENV"] === "development") {
60
- if (!isBrowser) {
61
- console.log(`[@koine/utils:createStorage] attempt to use 'clear' outside of browser.`);
62
- }
63
- }
64
- if (isBrowser) {
65
- for (const key in keys) {
66
- client.remove(keys[key]);
67
- }
68
- }
69
- },
70
- watch: (keyToWatch, onRemoved, onAdded) => {
71
- if (!isBrowser) {
72
- if (process.env["NODE_ENV"] === "development") {
73
- console.log(`[@koine/utils:createStorage] attempt to use 'watch' outside of browser.`);
74
- }
75
- return noop;
76
- }
77
- const handler = (event) => {
78
- const { key, oldValue, newValue } = event;
79
- if (key === keys[keyToWatch]) {
80
- if (oldValue && !newValue) {
81
- onRemoved?.();
82
- }
83
- else if (!oldValue && newValue) {
84
- onAdded?.();
85
- }
86
- }
87
- };
88
- const listener = on(window, "storage", handler);
89
- return listener;
90
- },
91
- };
92
- };
93
- export default createStorage;
1
+ import{decode as e,encode as t,isBrowser as o,isNullOrUndefined as r,noop as s}from"@koine/utils";import{on as l}from"@koine/dom";import{storage as i}from"./storage";export let createStorage=(a,n)=>{let c=n?i.s:i.l,m=Object.keys(a).reduce((e,o)=>({...e,[o]:t(o)}),{});return{get:(t,o)=>c.get(m[t],e,o),getAll(e){if(!o)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];r(s)?l&&(t[o]=l):t[o]=s}return t},set(e,o){c.set(m[e],o,t)},setMany(e){if("development"!==process.env.NODE_ENV||o||console.log("[@koine/utils:createStorage] attempt to use 'setMany' outside of browser."),o)for(let t in e){let o=e[t];r(o)?this.remove(t):this.set(t,o)}},has:e=>c.has(m[e]),remove(e){c.remove(m[e])},clear(){if("development"!==process.env.NODE_ENV||o||console.log("[@koine/utils:createStorage] attempt to use 'clear' outside of browser."),o)for(let e in m)c.remove(m[e])},watch:(e,t,r)=>o?l(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."),s)}};export default createStorage;
package/getZonedDate.js CHANGED
@@ -1,22 +1 @@
1
- import { isBrowser } from "@koine/utils";
2
- const utcToZonedTime = (date, _tz) => {
3
- return date;
4
- };
5
- export let getZonedDate = (dateString = "", timeZone) => {
6
- if (!dateString.endsWith("Z"))
7
- dateString += "Z";
8
- if (!timeZone && isBrowser) {
9
- try {
10
- timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;
11
- }
12
- catch (e) {
13
- if (process.env["NODE_ENV"] === "development") {
14
- console.warn("[@koine/browser:getZonedDate] failed reading timeZone, error", e);
15
- }
16
- }
17
- }
18
- return timeZone
19
- ? utcToZonedTime(new Date(dateString), timeZone)
20
- : new Date(dateString);
21
- };
22
- export default getZonedDate;
1
+ import{isBrowser as e}from"@koine/utils";let t=(e,t)=>e;export let getZonedDate=(o="",n)=>{if(o.endsWith("Z")||(o+="Z"),!n&&e)try{n=Intl.DateTimeFormat().resolvedOptions().timeZone}catch(e){"development"===process.env.NODE_ENV&&console.warn("[@koine/browser:getZonedDate] failed reading timeZone, error",e)}return n?t(new Date(o),n):new Date(o)};export default getZonedDate;
package/gtag.js CHANGED
@@ -1,8 +1 @@
1
- import { isUndefined, noop } from "@koine/utils";
2
- export let gtag = (...args) => {
3
- !isUndefined(window) && !isUndefined(window.gtag)
4
- ?
5
- window.gtag(...args)
6
- : noop();
7
- };
8
- export default gtag;
1
+ import{isUndefined as t,noop as g}from"@koine/utils";export let gtag=(...o)=>{t(window)||t(window.gtag)?g():window.gtag(...o)};export default gtag;
package/gtagPageview.js CHANGED
@@ -1,7 +1 @@
1
- import { gtag } from "./gtag";
2
- export let gtagPageview = (...args) => gtag("event", "page_view", {
3
- page_path: args[0] || location.pathname,
4
- page_title: args[1] || document.title,
5
- page_location: args[2] || location.href,
6
- });
7
- export default gtagPageview;
1
+ import{gtag as e}from"./gtag";export let gtagPageview=(...t)=>e("event","page_view",{page_path:t[0]||location.pathname,page_title:t[1]||document.title,page_location:t[2]||location.href});export default gtagPageview;
package/index.js CHANGED
@@ -1,18 +1 @@
1
- export { createStorage } from "./createStorage";
2
- export { getZonedDate } from "./getZonedDate";
3
- export { gtag } from "./gtag";
4
- export { gtagPageview } from "./gtagPageview";
5
- export { isIE } from "./isIE";
6
- export { isMobile } from "./isMobile";
7
- export { listenUrlSearch } from "./listenUrlSearch";
8
- export { listenUrlSearchParams } from "./listenUrlSearchParams";
9
- export { navigateToHash } from "./navigateToHash";
10
- export { navigateToHashParams } from "./navigateToHashParams";
11
- export { navigateToMergedHashParams } from "./navigateToMergedHashParams";
12
- export { navigateToMergedParams } from "./navigateToMergedParams";
13
- export { navigateToParams } from "./navigateToParams";
14
- export { navigateToUrl } from "./navigateToUrl";
15
- export { navigateWithoutUrlParam } from "./navigateWithoutUrlParam";
16
- export { redirectTo } from "./redirectTo";
17
- export { storage } from "./storage";
18
- export { storageClient } from "./storageClient";
1
+ export{createStorage}from"./createStorage";export{getZonedDate}from"./getZonedDate";export{gtag}from"./gtag";export{gtagPageview}from"./gtagPageview";export{isIE}from"./isIE";export{isMobile}from"./isMobile";export{listenUrlSearch}from"./listenUrlSearch";export{listenUrlSearchParams}from"./listenUrlSearchParams";export{navigateToHash}from"./navigateToHash";export{navigateToHashParams}from"./navigateToHashParams";export{navigateToMergedHashParams}from"./navigateToMergedHashParams";export{navigateToMergedParams}from"./navigateToMergedParams";export{navigateToParams}from"./navigateToParams";export{navigateToUrl}from"./navigateToUrl";export{navigateWithoutUrlParam}from"./navigateWithoutUrlParam";export{redirectTo}from"./redirectTo";export{storage}from"./storage";export{storageClient}from"./storageClient";
package/isIE.js CHANGED
@@ -1,12 +1 @@
1
- import { isServer } from "@koine/utils";
2
- export let isIE = (ssrValue = true) => {
3
- if (isServer) {
4
- return ssrValue;
5
- }
6
- const ua = window.navigator.userAgent;
7
- if (ua.indexOf("MSIE ") > 0 || ua.indexOf("Trident/") > 0) {
8
- return true;
9
- }
10
- return false;
11
- };
12
- export default isIE;
1
+ import{isServer as e}from"@koine/utils";export let isIE=(t=!0)=>{if(e)return t;let i=window.navigator.userAgent;return!!(i.indexOf("MSIE ")>0||i.indexOf("Trident/")>0)};export default isIE;
package/isMobile.js CHANGED
@@ -1,6 +1 @@
1
- import { isServer } from "@koine/utils";
2
- export let isMobile = (ssrValue = true) => isServer
3
- ? ssrValue
4
- :
5
- /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(window.navigator.userAgent);
6
- export default isMobile;
1
+ import{isServer as i}from"@koine/utils";export let isMobile=(e=!0)=>i?e:/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(window.navigator.userAgent);export default isMobile;
@@ -1,39 +1 @@
1
- import { isBrowser } from "@koine/utils";
2
- import { on } from "@koine/dom";
3
- let extendHistoryMethod = (fn, runHandlers, before) => {
4
- return function interceptor(...args) {
5
- if (before) {
6
- runHandlers();
7
- return fn.apply(this, args);
8
- }
9
- const result = fn.apply(this, args);
10
- runHandlers();
11
- return result;
12
- };
13
- };
14
- let prevSearch = isBrowser ? location.search : "";
15
- let runHandlers = () => {
16
- const newSearch = location.search;
17
- if (newSearch !== prevSearch) {
18
- const listeners = history.__.h.values();
19
- for (const listener of listeners) {
20
- listener(prevSearch, newSearch);
21
- }
22
- }
23
- prevSearch = newSearch;
24
- };
25
- export let listenUrlSearch = (handler) => {
26
- if (!history.__) {
27
- history.pushState = extendHistoryMethod(history.pushState, runHandlers);
28
- history.replaceState = extendHistoryMethod(history.replaceState, runHandlers);
29
- on(window, "popstate", runHandlers);
30
- history.__ = { h: new Set() };
31
- }
32
- if (!history.__.h.has(handler)) {
33
- history.__.h.add(handler);
34
- }
35
- return () => {
36
- history.__.h.delete(handler);
37
- };
38
- };
39
- export default listenUrlSearch;
1
+ import{isBrowser as t}from"@koine/utils";import{on as e}from"@koine/dom";let r=(t,e,r)=>function(...o){if(r)return e(),t.apply(this,o);let i=t.apply(this,o);return e(),i},o=t?location.search:"",i=()=>{let t=location.search;if(t!==o)for(let e of history.__.h.values())e(o,t);o=t};export let listenUrlSearch=t=>(history.__||(history.pushState=r(history.pushState,i),history.replaceState=r(history.replaceState,i),e(window,"popstate",i),history.__={h:new Set}),history.__.h.has(t)||history.__.h.add(t),()=>{history.__.h.delete(t)});export default listenUrlSearch;
@@ -1,10 +1 @@
1
- import { listenUrlSearch } from "./listenUrlSearch";
2
- export let listenUrlSearchParams = (paramName, handler) => listenUrlSearch((prevSearch, newSearch) => {
3
- const prevParams = new URLSearchParams(prevSearch);
4
- const newParams = new URLSearchParams(newSearch);
5
- const newValue = newParams.get(paramName);
6
- if (prevParams.get(paramName) !== newValue) {
7
- handler(newValue);
8
- }
9
- });
10
- export default listenUrlSearchParams;
1
+ import{listenUrlSearch as e}from"./listenUrlSearch";export let listenUrlSearchParams=(r,a)=>e((e,t)=>{let l=new URLSearchParams(e),s=new URLSearchParams(t).get(r);l.get(r)!==s&&a(s)});export default listenUrlSearchParams;
package/navigateToHash.js CHANGED
@@ -1,6 +1 @@
1
- import { navigateToUrl } from "./navigateToUrl";
2
- export let navigateToHash = (hash = "") => {
3
- const { pathname, search } = location;
4
- navigateToUrl(pathname + (search ? "?" + search : "") + (hash ? "#" + hash : ""), true);
5
- };
6
- export default navigateToHash;
1
+ import{navigateToUrl as a}from"./navigateToUrl";export let navigateToHash=(t="")=>{let{pathname:o,search:e}=location;a(o+(e?"?"+e:"")+(t?"#"+t:""),!0)};export default navigateToHash;
@@ -1,13 +1 @@
1
- import { buildUrlQueryString, getUrlHashPathname, } from "@koine/utils";
2
- export let navigateToHashParams = (params = {}, hash = "") => {
3
- const useLocation = !hash;
4
- hash = hash || location.hash;
5
- const hashQueryLess = getUrlHashPathname(hash);
6
- const queryString = typeof params === "string" ? params : buildUrlQueryString(params);
7
- const newHash = "#/" + hashQueryLess + queryString;
8
- if (useLocation) {
9
- location.hash = newHash;
10
- }
11
- return newHash;
12
- };
13
- export default navigateToHashParams;
1
+ import{buildUrlQueryString as a,getUrlHashPathname as t}from"@koine/utils";export let navigateToHashParams=(o={},e="")=>{let r=!e,i="#/"+t(e=e||location.hash)+("string"==typeof o?o:a(o));return r&&(location.hash=i),i};export default navigateToHashParams;
@@ -1,4 +1 @@
1
- import { getUrlHashParams, mergeUrlQueryParams, } from "@koine/utils";
2
- import { navigateToHashParams } from "./navigateToHashParams";
3
- export let navigateToMergedHashParams = (params = {}, hash = "") => navigateToHashParams(mergeUrlQueryParams(getUrlHashParams(hash), params), hash);
4
- export default navigateToMergedHashParams;
1
+ import{getUrlHashParams as a,mergeUrlQueryParams as e}from"@koine/utils";import{navigateToHashParams as r}from"./navigateToHashParams";export let navigateToMergedHashParams=(o={},t="")=>r(e(a(t),o),t);export default navigateToMergedHashParams;
@@ -1,4 +1 @@
1
- import { getUrlQueryParams, mergeUrlQueryParams, } from "@koine/utils";
2
- import { navigateToParams } from "./navigateToParams";
3
- export let navigateToMergedParams = (params = {}, replace) => navigateToParams(mergeUrlQueryParams(getUrlQueryParams(), params), replace);
4
- export default navigateToMergedParams;
1
+ import{getUrlQueryParams as a,mergeUrlQueryParams as e}from"@koine/utils";import{navigateToParams as r}from"./navigateToParams";export let navigateToMergedParams=(o={},t)=>r(e(a(),o),t);export default navigateToMergedParams;
@@ -1,10 +1 @@
1
- import { buildUrlQueryString, isBrowser, } from "@koine/utils";
2
- import { navigateToUrl } from "./navigateToUrl";
3
- export let navigateToParams = (params = {}, replace) => {
4
- const queryString = typeof params === "string" ? params : buildUrlQueryString(params);
5
- if (isBrowser) {
6
- navigateToUrl(location.pathname + queryString, replace);
7
- }
8
- return queryString;
9
- };
10
- export default navigateToParams;
1
+ import{buildUrlQueryString as t,isBrowser as a}from"@koine/utils";import{navigateToUrl as o}from"./navigateToUrl";export let navigateToParams=(e={},r)=>{let i="string"==typeof e?e:t(e);return a&&o(location.pathname+i,r),i};export default navigateToParams;
package/navigateToUrl.js CHANGED
@@ -1,6 +1 @@
1
- export let navigateToUrl = (url = "", replace) => {
2
- if (url) {
3
- history[replace ? "replaceState" : "pushState"](history.state, "", url);
4
- }
5
- };
6
- export default navigateToUrl;
1
+ export let navigateToUrl=(t="",e)=>{t&&history[e?"replaceState":"pushState"](history.state,"",t)};export default navigateToUrl;
@@ -1,13 +1 @@
1
- import { getUrlQueryParams } from "@koine/utils";
2
- import { navigateToParams } from "./navigateToParams";
3
- export let navigateWithoutUrlParam = (paramName, replace) => {
4
- const params = {};
5
- const currentParams = getUrlQueryParams();
6
- for (const key in currentParams) {
7
- if (key !== paramName) {
8
- params[key] = currentParams[key];
9
- }
10
- }
11
- return navigateToParams(params, replace);
12
- };
13
- export default navigateWithoutUrlParam;
1
+ import{getUrlQueryParams as t}from"@koine/utils";import{navigateToParams as r}from"./navigateToParams";export let navigateWithoutUrlParam=(a,e)=>{let o={},i=t();for(let t in i)t!==a&&(o[t]=i[t]);return r(o,e)};export default navigateWithoutUrlParam;
package/package.json CHANGED
@@ -2,23 +2,94 @@
2
2
  "name": "@koine/browser",
3
3
  "sideEffects": false,
4
4
  "dependencies": {
5
- "@koine/dom": "2.0.0-beta.74",
6
- "@koine/utils": "2.0.0-beta.74"
5
+ "@koine/dom": "2.0.0-beta.76",
6
+ "@koine/utils": "2.0.0-beta.76"
7
7
  },
8
8
  "peerDependenciesMeta": {
9
9
  "date-fns-tz": {
10
10
  "optional": true
11
11
  }
12
12
  },
13
+ "module": "./index.js",
14
+ "type": "module",
15
+ "main": "./cjs/index.js",
13
16
  "exports": {
14
- "./package.json": "./package.json",
15
17
  ".": {
16
- "module": "./index.esm.js",
17
- "import": "./index.cjs.mjs",
18
- "default": "./index.cjs.js"
18
+ "require": "./cjs/index.js",
19
+ "import": "./index.js"
20
+ },
21
+ "./createStorage": {
22
+ "require": "./cjs/createStorage.js",
23
+ "import": "./createStorage.js"
24
+ },
25
+ "./getZonedDate": {
26
+ "require": "./cjs/getZonedDate.js",
27
+ "import": "./getZonedDate.js"
28
+ },
29
+ "./gtag": {
30
+ "require": "./cjs/gtag.js",
31
+ "import": "./gtag.js"
32
+ },
33
+ "./gtagPageview": {
34
+ "require": "./cjs/gtagPageview.js",
35
+ "import": "./gtagPageview.js"
36
+ },
37
+ "./isIE": {
38
+ "require": "./cjs/isIE.js",
39
+ "import": "./isIE.js"
40
+ },
41
+ "./isMobile": {
42
+ "require": "./cjs/isMobile.js",
43
+ "import": "./isMobile.js"
44
+ },
45
+ "./listenUrlSearch": {
46
+ "require": "./cjs/listenUrlSearch.js",
47
+ "import": "./listenUrlSearch.js"
48
+ },
49
+ "./listenUrlSearchParams": {
50
+ "require": "./cjs/listenUrlSearchParams.js",
51
+ "import": "./listenUrlSearchParams.js"
52
+ },
53
+ "./navigateToHash": {
54
+ "require": "./cjs/navigateToHash.js",
55
+ "import": "./navigateToHash.js"
56
+ },
57
+ "./navigateToHashParams": {
58
+ "require": "./cjs/navigateToHashParams.js",
59
+ "import": "./navigateToHashParams.js"
60
+ },
61
+ "./navigateToMergedHashParams": {
62
+ "require": "./cjs/navigateToMergedHashParams.js",
63
+ "import": "./navigateToMergedHashParams.js"
64
+ },
65
+ "./navigateToMergedParams": {
66
+ "require": "./cjs/navigateToMergedParams.js",
67
+ "import": "./navigateToMergedParams.js"
68
+ },
69
+ "./navigateToParams": {
70
+ "require": "./cjs/navigateToParams.js",
71
+ "import": "./navigateToParams.js"
72
+ },
73
+ "./navigateToUrl": {
74
+ "require": "./cjs/navigateToUrl.js",
75
+ "import": "./navigateToUrl.js"
76
+ },
77
+ "./navigateWithoutUrlParam": {
78
+ "require": "./cjs/navigateWithoutUrlParam.js",
79
+ "import": "./navigateWithoutUrlParam.js"
80
+ },
81
+ "./redirectTo": {
82
+ "require": "./cjs/redirectTo.js",
83
+ "import": "./redirectTo.js"
84
+ },
85
+ "./storage": {
86
+ "require": "./cjs/storage.js",
87
+ "import": "./storage.js"
88
+ },
89
+ "./storageClient": {
90
+ "require": "./cjs/storageClient.js",
91
+ "import": "./storageClient.js"
19
92
  }
20
93
  },
21
- "module": "./index.esm.js",
22
- "main": "./index.cjs.js",
23
- "version": "2.0.0-beta.74"
94
+ "version": "2.0.0-beta.76"
24
95
  }
package/redirectTo.js CHANGED
@@ -1,8 +1 @@
1
- import { buildUrlQueryString, isBrowser, } from "@koine/utils";
2
- export let redirectTo = (url, params) => {
3
- if (isBrowser) {
4
- const queryString = buildUrlQueryString(params);
5
- location.href = url.replace(/\?+$/g, "") + queryString;
6
- }
7
- };
8
- export default redirectTo;
1
+ import{buildUrlQueryString as e,isBrowser as r}from"@koine/utils";export let redirectTo=(t,o)=>{if(r){let r=e(o);location.href=t.replace(/\?+$/g,"")+r}};export default redirectTo;
package/storage.js CHANGED
@@ -1,6 +1 @@
1
- import { storageClient } from "./storageClient";
2
- export let storage = {
3
- l: storageClient(),
4
- s: storageClient(true),
5
- };
6
- export default storage;
1
+ import{storageClient as t}from"./storageClient";export let storage={l:t(),s:t(!0)};export default storage;
package/storageClient.js CHANGED
@@ -1,91 +1 @@
1
- import { isBrowser, isString } from "@koine/utils";
2
- const methodsMap = { g: "getItem", s: "setItem", r: "removeItem" };
3
- export let storageClient = (useSessionStorage) => {
4
- const nativeMethod = (method, key, value) => isBrowser
5
- ? window[useSessionStorage ? "sessionStorage" : "localStorage"][methodsMap[method]](key, value)
6
- : () => {
7
- if (process.env["NODE_ENV"] === "development") {
8
- console.warn(`[@koine/utils:storageClient]: ${useSessionStorage ? "sessionStorage" : "localStorage"} does not exists outside of browser.`);
9
- }
10
- };
11
- const get = (key, transform, defaultValue) => {
12
- let value = defaultValue ?? null;
13
- if (process.env["NODE_ENV"] === "development") {
14
- if (!isBrowser) {
15
- console.log(`[@koine/utils:storage] called 'get' outside of browser with default value '${JSON.stringify(defaultValue)}'.`);
16
- }
17
- }
18
- if (isBrowser) {
19
- let stored = nativeMethod("g", key);
20
- if (stored) {
21
- stored = transform ? transform(stored) : stored;
22
- try {
23
- const parsed = JSON.parse(stored);
24
- if (parsed)
25
- value = parsed;
26
- }
27
- catch (_e) {
28
- value = stored;
29
- }
30
- }
31
- }
32
- return value;
33
- };
34
- const set = (key, value, transform = (value) => value) => {
35
- if (process.env["NODE_ENV"] === "development") {
36
- if (!isBrowser) {
37
- console.log(`[@koine/utils:storage] called 'set' outside of browser does not work.`);
38
- }
39
- }
40
- if (isBrowser) {
41
- try {
42
- const transformedValue = isString(value)
43
- ? transform(value)
44
- : transform(JSON.stringify(value));
45
- nativeMethod("s", key, transformedValue);
46
- }
47
- catch (_e) {
48
- if (process.env["NODE_ENV"] === "development") {
49
- console.warn(`[@koine/utils:createStorage]: 'set' error.`, _e);
50
- }
51
- }
52
- }
53
- };
54
- const remove = (key) => {
55
- if (process.env["NODE_ENV"] === "development") {
56
- if (!isBrowser) {
57
- console.log(`[@koine/utils:storage] called 'remove' outside of browser does not work.`);
58
- }
59
- }
60
- if (isBrowser) {
61
- try {
62
- nativeMethod("r", key);
63
- }
64
- catch (_e) {
65
- if (process.env["NODE_ENV"] === "development") {
66
- console.warn(`[@koine/utils:createStorage]: 'remove' error.`, _e);
67
- }
68
- }
69
- }
70
- };
71
- const has = (key, defaultValue) => {
72
- let value = defaultValue ?? false;
73
- if (process.env["NODE_ENV"] === "development") {
74
- if (!isBrowser) {
75
- console.log(`[@koine/utils:storage] called 'has' outside of browser with default value '${JSON.stringify(defaultValue)}'.`);
76
- }
77
- }
78
- if (isBrowser) {
79
- const stored = nativeMethod("g", key);
80
- value = stored ?? false;
81
- }
82
- return value;
83
- };
84
- return {
85
- get,
86
- set,
87
- remove,
88
- has,
89
- };
90
- };
91
- export default storageClient;
1
+ import{isBrowser as e,isString as o}from"@koine/utils";let t={g:"getItem",s:"setItem",r:"removeItem"};export let storageClient=s=>{let r=(o,r,l)=>e?window[s?"sessionStorage":"localStorage"][t[o]](r,l):()=>{"development"===process.env.NODE_ENV&&console.warn(`[@koine/utils:storageClient]: ${s?"sessionStorage":"localStorage"} does not exists outside of browser.`)};return{get:(o,t,s)=>{let l=s??null;if("development"!==process.env.NODE_ENV||e||console.log(`[@koine/utils:storage] called 'get' outside of browser with default value '${JSON.stringify(s)}'.`),e){let e=r("g",o);if(e){e=t?t(e):e;try{let o=JSON.parse(e);o&&(l=o)}catch(o){l=e}}}return l},set:(t,s,l=e=>e)=>{if("development"!==process.env.NODE_ENV||e||console.log("[@koine/utils:storage] called 'set' outside of browser does not work."),e)try{let e=l(o(s)?s:JSON.stringify(s));r("s",t,e)}catch(e){"development"===process.env.NODE_ENV&&console.warn("[@koine/utils:createStorage]: 'set' error.",e)}},remove:o=>{if("development"!==process.env.NODE_ENV||e||console.log("[@koine/utils:storage] called 'remove' outside of browser does not work."),e)try{r("r",o)}catch(e){"development"===process.env.NODE_ENV&&console.warn("[@koine/utils:createStorage]: 'remove' error.",e)}},has:(o,t)=>{let s=t??!1;return"development"!==process.env.NODE_ENV||e||console.log(`[@koine/utils:storage] called 'has' outside of browser with default value '${JSON.stringify(t)}'.`),e&&(s=r("g",o)??!1),s}}};export default storageClient;
package/README.md DELETED
@@ -1 +0,0 @@
1
- # @koine/i18n
package/browser/gtag.js DELETED
@@ -1 +0,0 @@
1
- import{isUndefined as o,noop as t}from"@koine/utils";export let gtag=(...g)=>{o(window)||o(window.gtag)?t():window.gtag(...g)};
package/browser/isIE.js DELETED
@@ -1 +0,0 @@
1
- import{isServer as e}from"@koine/utils";export let isIE=(i=!0)=>{if(e)return i;let r=window.navigator.userAgent;return!!(r.indexOf("MSIE ")>0||r.indexOf("Trident/")>0)};
@@ -1 +0,0 @@
1
- import{isBrowser as t}from"@koine/utils";import{on as e}from"@koine/dom";let o=(t,e,o)=>function(...r){if(o)return e(),t.apply(this,r);let i=t.apply(this,r);return e(),i},r=t?location.search:"",i=()=>{let t=location.search;if(t!==r)for(let e of history.__.h.values())e(r,t);r=t};export let listenUrlSearch=t=>(history.__||(history.pushState=o(history.pushState,i),history.replaceState=o(history.replaceState,i),e(window,"popstate",i),history.__={h:new Set}),history.__.h.has(t)||history.__.h.add(t),()=>{history.__.h.delete(t)});
@@ -1 +0,0 @@
1
- import{navigateToUrl as o}from"./navigateToUrl";export let navigateToHash=(t="")=>{let{pathname:a,search:e}=location;o(a+(e?"?"+e:"")+(t?"#"+t:""),!0)};
@@ -1 +0,0 @@
1
- import{buildUrlQueryString as t,getUrlHashPathname as o}from"@koine/utils";export let navigateToHashParams=(a={},e="")=>{let i=!e,r="#/"+o(e=e||location.hash)+("string"==typeof a?a:t(a));return i&&(location.hash=r),r};
@@ -1 +0,0 @@
1
- import{getUrlHashParams as a,mergeUrlQueryParams as o}from"@koine/utils";import{navigateToHashParams as r}from"./navigateToHashParams";export let navigateToMergedHashParams=(e={},t="")=>r(o(a(t),e),t);
@@ -1 +0,0 @@
1
- import{getUrlQueryParams as a,mergeUrlQueryParams as o}from"@koine/utils";import{navigateToParams as r}from"./navigateToParams";export let navigateToMergedParams=(e={},t)=>r(o(a(),e),t);
@@ -1 +0,0 @@
1
- import{buildUrlQueryString as t,isBrowser as o}from"@koine/utils";import{navigateToUrl as r}from"./navigateToUrl";export let navigateToParams=(a={},e)=>{let i="string"==typeof a?a:t(a);return o&&r(location.pathname+i,e),i};
@@ -1 +0,0 @@
1
- import{buildUrlQueryString as e,isBrowser as o}from"@koine/utils";export let redirectTo=(r,t)=>{if(o){let o=e(t);location.href=r.replace(/\?+$/g,"")+o}};
package/index.cjs.d.ts DELETED
@@ -1 +0,0 @@
1
- export * from "./index";
@@ -1 +0,0 @@
1
- exports._default = require('./index.cjs.js').default;
package/index.cjs.js DELETED
@@ -1,61 +0,0 @@
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
-
8
- let t$1={g:"getItem",s:"setItem",r:"removeItem"};let storageClient=s=>{let r=(o,r,l)=>utils.isBrowser?window[s?"sessionStorage":"localStorage"][t$1[o]](r,l):()=>{"development"===process.env.NODE_ENV&&console.warn(`[@koine/utils:storageClient]: ${s?"sessionStorage":"localStorage"} does not exists outside of browser.`);};return {get:(o,t,s)=>{let l=s??null;if("development"!==process.env.NODE_ENV||utils.isBrowser||console.log(`[@koine/utils:storage] called 'get' outside of browser with default value '${JSON.stringify(s)}'.`),utils.isBrowser){let e=r("g",o);if(e){e=t?t(e):e;try{let o=JSON.parse(e);o&&(l=o);}catch(o){l=e;}}}return l},set:(t,s,l=e=>e)=>{if("development"!==process.env.NODE_ENV||utils.isBrowser||console.log("[@koine/utils:storage] called 'set' outside of browser does not work."),utils.isBrowser)try{let e=l(utils.isString(s)?s:JSON.stringify(s));r("s",t,e);}catch(e){"development"===process.env.NODE_ENV&&console.warn("[@koine/utils:createStorage]: 'set' error.",e);}},remove:o=>{if("development"!==process.env.NODE_ENV||utils.isBrowser||console.log("[@koine/utils:storage] called 'remove' outside of browser does not work."),utils.isBrowser)try{r("r",o);}catch(e){"development"===process.env.NODE_ENV&&console.warn("[@koine/utils:createStorage]: 'remove' error.",e);}},has:(o,t)=>{let s=t??!1;return "development"!==process.env.NODE_ENV||utils.isBrowser||console.log(`[@koine/utils:storage] called 'has' outside of browser with default value '${JSON.stringify(t)}'.`),utils.isBrowser&&(s=r("g",o)??!1),s}}};
9
-
10
- let storage={l:storageClient(),s:storageClient(!0)};
11
-
12
- let createStorage=(a,n)=>{let c=n?storage.s:storage.l,m=Object.keys(a).reduce((e,o)=>({...e,[o]:utils.encode(o)}),{});return {get:(t,o)=>c.get(m[t],utils.decode,o),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&&(t[o]=l):t[o]=s;}return t},set(e,o){c.set(m[e],o,utils.encode);},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);}},has:e=>c.has(m[e]),remove(e){c.remove(m[e]);},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]);},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)}};
13
-
14
- let t=(e,t)=>e;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);}return n?t(new Date(o)):new Date(o)};
15
-
16
- let gtag=(...o)=>{utils.isUndefined(window)||utils.isUndefined(window.gtag)?utils.noop():window.gtag(...o);};
17
-
18
- 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});
19
-
20
- let isIE=(t=!0)=>{if(utils.isServer)return t;let i=window.navigator.userAgent;return !!(i.indexOf("MSIE ")>0||i.indexOf("Trident/")>0)};
21
-
22
- let isMobile=(e=!0)=>utils.isServer?e:/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(window.navigator.userAgent);
23
-
24
- let r=(t,e,r)=>function(...o){if(r)return e(),t.apply(this,o);let i=t.apply(this,o);return e(),i},o=utils.isBrowser?location.search:"",i=()=>{let t=location.search;if(t!==o)for(let e of history.__.h.values())e(o,t);o=t;};let listenUrlSearch=t=>(history.__||(history.pushState=r(history.pushState,i),history.replaceState=r(history.replaceState,i),dom.on(window,"popstate",i),history.__={h:new Set}),history.__.h.has(t)||history.__.h.add(t),()=>{history.__.h.delete(t);});
25
-
26
- let listenUrlSearchParams=(r,a)=>listenUrlSearch((e,t)=>{let l=new URLSearchParams(e),s=new URLSearchParams(t).get(r);l.get(r)!==s&&a(s);});
27
-
28
- let navigateToUrl=(t="",e)=>{t&&history[e?"replaceState":"pushState"](history.state,"",t);};
29
-
30
- let navigateToHash=(t="")=>{let{pathname:o,search:e}=location;navigateToUrl(o+(e?"?"+e:"")+(t?"#"+t:""),!0);};
31
-
32
- let navigateToHashParams=(o={},e="")=>{let r=!e,i="#/"+utils.getUrlHashPathname(e=e||location.hash)+("string"==typeof o?o:utils.buildUrlQueryString(o));return r&&(location.hash=i),i};
33
-
34
- let navigateToMergedHashParams=(o={},t="")=>navigateToHashParams(utils.mergeUrlQueryParams(utils.getUrlHashParams(t),o),t);
35
-
36
- let navigateToParams=(e={},r)=>{let i="string"==typeof e?e:utils.buildUrlQueryString(e);return utils.isBrowser&&navigateToUrl(location.pathname+i,r),i};
37
-
38
- let navigateToMergedParams=(o={},t)=>navigateToParams(utils.mergeUrlQueryParams(utils.getUrlQueryParams(),o),t);
39
-
40
- let navigateWithoutUrlParam=(a,e)=>{let o={},i=utils.getUrlQueryParams();for(let t in i)t!==a&&(o[t]=i[t]);return navigateToParams(o,e)};
41
-
42
- let redirectTo=(t,o)=>{if(utils.isBrowser){let r=utils.buildUrlQueryString(o);location.href=t.replace(/\?+$/g,"")+r;}};
43
-
44
- exports.createStorage = createStorage;
45
- exports.getZonedDate = getZonedDate;
46
- exports.gtag = gtag;
47
- exports.gtagPageview = gtagPageview;
48
- exports.isIE = isIE;
49
- exports.isMobile = isMobile;
50
- exports.listenUrlSearch = listenUrlSearch;
51
- exports.listenUrlSearchParams = listenUrlSearchParams;
52
- exports.navigateToHash = navigateToHash;
53
- exports.navigateToHashParams = navigateToHashParams;
54
- exports.navigateToMergedHashParams = navigateToMergedHashParams;
55
- exports.navigateToMergedParams = navigateToMergedParams;
56
- exports.navigateToParams = navigateToParams;
57
- exports.navigateToUrl = navigateToUrl;
58
- exports.navigateWithoutUrlParam = navigateWithoutUrlParam;
59
- exports.redirectTo = redirectTo;
60
- exports.storage = storage;
61
- exports.storageClient = storageClient;
package/index.cjs.mjs DELETED
@@ -1,2 +0,0 @@
1
- export * from './index.cjs.js';
2
- export { _default as default } from './index.cjs.default.js';
package/index.esm.js DELETED
@@ -1,40 +0,0 @@
1
- import { isBrowser, isString, encode, decode, isNullOrUndefined, noop, isUndefined, isServer, getUrlHashPathname, buildUrlQueryString, mergeUrlQueryParams, getUrlHashParams, getUrlQueryParams } from '@koine/utils';
2
- import { on } from '@koine/dom';
3
-
4
- let t$1={g:"getItem",s:"setItem",r:"removeItem"};let storageClient=s=>{let r=(o,r,l)=>isBrowser?window[s?"sessionStorage":"localStorage"][t$1[o]](r,l):()=>{"development"===process.env.NODE_ENV&&console.warn(`[@koine/utils:storageClient]: ${s?"sessionStorage":"localStorage"} does not exists outside of browser.`);};return {get:(o,t,s)=>{let l=s??null;if("development"!==process.env.NODE_ENV||isBrowser||console.log(`[@koine/utils:storage] called 'get' outside of browser with default value '${JSON.stringify(s)}'.`),isBrowser){let e=r("g",o);if(e){e=t?t(e):e;try{let o=JSON.parse(e);o&&(l=o);}catch(o){l=e;}}}return l},set:(t,s,l=e=>e)=>{if("development"!==process.env.NODE_ENV||isBrowser||console.log("[@koine/utils:storage] called 'set' outside of browser does not work."),isBrowser)try{let e=l(isString(s)?s:JSON.stringify(s));r("s",t,e);}catch(e){"development"===process.env.NODE_ENV&&console.warn("[@koine/utils:createStorage]: 'set' error.",e);}},remove:o=>{if("development"!==process.env.NODE_ENV||isBrowser||console.log("[@koine/utils:storage] called 'remove' outside of browser does not work."),isBrowser)try{r("r",o);}catch(e){"development"===process.env.NODE_ENV&&console.warn("[@koine/utils:createStorage]: 'remove' error.",e);}},has:(o,t)=>{let s=t??!1;return "development"!==process.env.NODE_ENV||isBrowser||console.log(`[@koine/utils:storage] called 'has' outside of browser with default value '${JSON.stringify(t)}'.`),isBrowser&&(s=r("g",o)??!1),s}}};
5
-
6
- let storage={l:storageClient(),s:storageClient(!0)};
7
-
8
- let createStorage=(a,n)=>{let c=n?storage.s:storage.l,m=Object.keys(a).reduce((e,o)=>({...e,[o]:encode(o)}),{});return {get:(t,o)=>c.get(m[t],decode,o),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&&(t[o]=l):t[o]=s;}return t},set(e,o){c.set(m[e],o,encode);},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);}},has:e=>c.has(m[e]),remove(e){c.remove(m[e]);},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]);},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)}};
9
-
10
- let t=(e,t)=>e;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);}return n?t(new Date(o)):new Date(o)};
11
-
12
- let gtag=(...o)=>{isUndefined(window)||isUndefined(window.gtag)?noop():window.gtag(...o);};
13
-
14
- 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});
15
-
16
- let isIE=(t=!0)=>{if(isServer)return t;let i=window.navigator.userAgent;return !!(i.indexOf("MSIE ")>0||i.indexOf("Trident/")>0)};
17
-
18
- let isMobile=(e=!0)=>isServer?e:/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(window.navigator.userAgent);
19
-
20
- let r=(t,e,r)=>function(...o){if(r)return e(),t.apply(this,o);let i=t.apply(this,o);return e(),i},o=isBrowser?location.search:"",i=()=>{let t=location.search;if(t!==o)for(let e of history.__.h.values())e(o,t);o=t;};let listenUrlSearch=t=>(history.__||(history.pushState=r(history.pushState,i),history.replaceState=r(history.replaceState,i),on(window,"popstate",i),history.__={h:new Set}),history.__.h.has(t)||history.__.h.add(t),()=>{history.__.h.delete(t);});
21
-
22
- let listenUrlSearchParams=(r,a)=>listenUrlSearch((e,t)=>{let l=new URLSearchParams(e),s=new URLSearchParams(t).get(r);l.get(r)!==s&&a(s);});
23
-
24
- let navigateToUrl=(t="",e)=>{t&&history[e?"replaceState":"pushState"](history.state,"",t);};
25
-
26
- let navigateToHash=(t="")=>{let{pathname:o,search:e}=location;navigateToUrl(o+(e?"?"+e:"")+(t?"#"+t:""),!0);};
27
-
28
- let navigateToHashParams=(o={},e="")=>{let r=!e,i="#/"+getUrlHashPathname(e=e||location.hash)+("string"==typeof o?o:buildUrlQueryString(o));return r&&(location.hash=i),i};
29
-
30
- let navigateToMergedHashParams=(o={},t="")=>navigateToHashParams(mergeUrlQueryParams(getUrlHashParams(t),o),t);
31
-
32
- let navigateToParams=(e={},r)=>{let i="string"==typeof e?e:buildUrlQueryString(e);return isBrowser&&navigateToUrl(location.pathname+i,r),i};
33
-
34
- let navigateToMergedParams=(o={},t)=>navigateToParams(mergeUrlQueryParams(getUrlQueryParams(),o),t);
35
-
36
- let navigateWithoutUrlParam=(a,e)=>{let o={},i=getUrlQueryParams();for(let t in i)t!==a&&(o[t]=i[t]);return navigateToParams(o,e)};
37
-
38
- let redirectTo=(t,o)=>{if(isBrowser){let r=buildUrlQueryString(o);location.href=t.replace(/\?+$/g,"")+r;}};
39
-
40
- export { createStorage, getZonedDate, gtag, gtagPageview, isIE, isMobile, listenUrlSearch, listenUrlSearchParams, navigateToHash, navigateToHashParams, navigateToMergedHashParams, navigateToMergedParams, navigateToParams, navigateToUrl, navigateWithoutUrlParam, redirectTo, storage, storageClient };
File without changes