@koine/utils 2.0.0-beta.187 → 2.0.0-beta.189

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.
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- let createConsole=e=>{let o=(o,r,...t)=>{"development"===process.env.NODE_ENV&&console[o]("\x1b[90m%s\x1b[0m"+r,e?"["+e+"] ":"",...t);},r=e=>{let r=(r,...t)=>o(e,r,...t);if("development"===process.env.NODE_ENV){let t=new Set,n="";r.once=(r,...n)=>{t.has(r)||(t.add(r),o(e,r,...n));},r.first=(r,...t)=>{r!==n&&(n=r,o(e,r,...t));};}else r.once=(...e)=>void 0,r.first=(...e)=>void 0;return r},t={};return ["log","info","warn","error","debug"].forEach(e=>{t[e]=r(e);}),t};
5
+ let createConsole=e=>{let r=(r,o,...t)=>{console[r]("\x1b[90m%s\x1b[0m"+o,e?"["+e+"] ":"",...t);},o=e=>{let o=(o,...t)=>r(e,o,...t),t=new Set,n="";return o.once=(o,...n)=>{t.has(o)||(t.add(o),r(e,o,...n));},o.first=(o,...t)=>{o!==n&&(n=o,r(e,o,...t));},o},t={};return ["log","info","warn","error","debug"].forEach(e=>{t[e]=o(e);}),t};
6
6
 
7
7
  exports.createConsole = createConsole;
8
8
  exports.default = createConsole;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * A basic native `console` enhancement enabled only when `process.env["NODE_ENV"] === "development"`:
2
+ * A basic native `console` enhancement:
3
3
  * - optional _prefix_ to all messages
4
4
  * - `first` logging method which prints only the first message among equals (a kind of more basic throttling)
5
5
  * - `once` logging method which prints only once a message among equals
@@ -1,3 +1,3 @@
1
- let createConsole=e=>{let o=(o,r,...t)=>{"development"===process.env.NODE_ENV&&console[o]("\x1b[90m%s\x1b[0m"+r,e?"["+e+"] ":"",...t);},r=e=>{let r=(r,...t)=>o(e,r,...t);if("development"===process.env.NODE_ENV){let t=new Set,n="";r.once=(r,...n)=>{t.has(r)||(t.add(r),o(e,r,...n));},r.first=(r,...t)=>{r!==n&&(n=r,o(e,r,...t));};}else r.once=(...e)=>void 0,r.first=(...e)=>void 0;return r},t={};return ["log","info","warn","error","debug"].forEach(e=>{t[e]=r(e);}),t};
1
+ let createConsole=e=>{let r=(r,o,...t)=>{console[r]("\x1b[90m%s\x1b[0m"+o,e?"["+e+"] ":"",...t);},o=e=>{let o=(o,...t)=>r(e,o,...t),t=new Set,n="";return o.once=(o,...n)=>{t.has(o)||(t.add(o),r(e,o,...n));},o.first=(o,...t)=>{o!==n&&(n=o,r(e,o,...t));},o},t={};return ["log","info","warn","error","debug"].forEach(e=>{t[e]=o(e);}),t};
2
2
 
3
3
  export { createConsole, createConsole as default };
package/index.cjs.js CHANGED
@@ -153,6 +153,7 @@ var uid = require('./uid.cjs.js');
153
153
  var updateLinkParams = require('./updateLinkParams.cjs.js');
154
154
  var updateUrlQueryParams = require('./updateUrlQueryParams.cjs.js');
155
155
  var uppercase = require('./uppercase.cjs.js');
156
+ var urlSearchParamsSerializer = require('./urlSearchParamsSerializer.cjs.js');
156
157
  var uuid = require('./uuid.cjs.js');
157
158
  var uuidNumeric = require('./uuidNumeric.cjs.js');
158
159
  var wait = require('./wait.cjs.js');
@@ -312,6 +313,7 @@ exports.uid = uid.uid;
312
313
  exports.updateLinkParams = updateLinkParams.updateLinkParams;
313
314
  exports.updateUrlQueryParams = updateUrlQueryParams.updateUrlQueryParams;
314
315
  exports.uppercase = uppercase.uppercase;
316
+ exports.urlSearchParamsSerializer = urlSearchParamsSerializer.urlSearchParamsSerializer;
315
317
  exports.uuid = uuid.uuid;
316
318
  exports.uuidNumeric = uuidNumeric.uuidNumeric;
317
319
  exports.wait = wait.wait;
package/index.d.ts CHANGED
@@ -153,10 +153,11 @@ export { uid } from "./uid";
153
153
  export { updateLinkParams } from "./updateLinkParams";
154
154
  export { updateUrlQueryParams } from "./updateUrlQueryParams";
155
155
  export { uppercase } from "./uppercase";
156
+ export { urlSearchParamsSerializer, type UrlSearchParamSerializer } from "./urlSearchParamsSerializer";
156
157
  export { uuid } from "./uuid";
157
158
  export { uuidNumeric } from "./uuidNumeric";
158
159
  export { wait } from "./wait";
159
- export type { AnythingFalsy, FlatObjectFirstLevel, KeysStartsWith, KeysTailsStartsWith, NonNullableObjectDeep, NullableObjectDeep, OmitNever, PickStartsWith, PickStartsWithTails, RequiredNonNullableObjectDeep, RequiredObjectDeep, Reverse, TestType, } from "./types";
160
+ export type { AnythingFalsy, FlatObjectFirstLevel, KeysStartsWith, KeysTailsStartsWith, KeysOfValue, NonNullableObjectDeep, NullableObjectDeep, OmitNever, PickStartsWith, PickStartsWithTails, RequiredNonNullableObjectDeep, RequiredObjectDeep, Reverse, TestType, OverloadsToTuple } from "./types";
160
161
  /**
161
162
  * These types should not be documented by using [`excludeExternals` TypeDoc flag](https://typedoc.org/options/input/#excludeexternals)
162
163
  */
package/index.esm.js CHANGED
@@ -151,6 +151,7 @@ export { uid } from './uid.esm.js';
151
151
  export { updateLinkParams } from './updateLinkParams.esm.js';
152
152
  export { updateUrlQueryParams } from './updateUrlQueryParams.esm.js';
153
153
  export { uppercase } from './uppercase.esm.js';
154
+ export { urlSearchParamsSerializer } from './urlSearchParamsSerializer.esm.js';
154
155
  export { uuid } from './uuid.esm.js';
155
156
  export { uuidNumeric } from './uuidNumeric.esm.js';
156
157
  export { wait } from './wait.esm.js';
package/package.json CHANGED
@@ -984,6 +984,12 @@
984
984
  "import": "./uppercase.cjs.mjs",
985
985
  "default": "./uppercase.cjs.js"
986
986
  },
987
+ "./urlSearchParamsSerializer": {
988
+ "module": "./urlSearchParamsSerializer.esm.js",
989
+ "types": "./urlSearchParamsSerializer.esm.d.ts",
990
+ "import": "./urlSearchParamsSerializer.cjs.mjs",
991
+ "default": "./urlSearchParamsSerializer.cjs.js"
992
+ },
987
993
  "./uuid": {
988
994
  "module": "./uuid.esm.js",
989
995
  "types": "./uuid.esm.d.ts",
@@ -1015,5 +1021,5 @@
1015
1021
  "module": "./index.esm.js",
1016
1022
  "main": "./index.cjs.js",
1017
1023
  "types": "./index.esm.d.ts",
1018
- "version": "2.0.0-beta.187"
1024
+ "version": "2.0.0-beta.189"
1019
1025
  }
package/types.d.ts CHANGED
@@ -64,6 +64,13 @@ export type PickStartsWithTails<T extends object, S extends string> = {
64
64
  * @category type
65
65
  */
66
66
  export type KeysTailsStartsWith<T extends object, S extends string> = keyof PickStartsWithTails<T, S>;
67
+ /**
68
+ * @borrows [Matt Pocock's _Get Keys of an Object Where Values Are of a Given Type_](https://www.totaltypescript.com/get-keys-of-an-object-where-values-are-of-a-given-type)
69
+ * @category type
70
+ */
71
+ export type KeysOfValue<T, TCondition> = {
72
+ [K in keyof T]: T[K] extends TCondition ? K : never;
73
+ }[keyof T];
67
74
  /**
68
75
  * @borrows [SO's answer by 钵钵鸡实力代购](https://stackoverflow.com/a/64994122/1938970)
69
76
  */
@@ -118,3 +125,30 @@ type B = OmitNever<{ a: never; b: 1 }> // B = { b: 1; }
118
125
  export type OmitNever<T> = {
119
126
  [K in keyof T as T[K] extends never ? never : K]: T[K];
120
127
  };
128
+ export type OverloadsToTuple<T> = OverloadsToTuple5<T>;
129
+ type OverloadsToTuple5<T> = T extends {
130
+ (...args: infer P1): infer R1;
131
+ (...args: infer P2): infer R2;
132
+ (...args: infer P3): infer R3;
133
+ (...args: infer P4): infer R4;
134
+ (...args: infer P5): infer R5;
135
+ } ? [(...args: P1) => R1, (...args: P2) => R2, (...args: P3) => R3, (...args: P4) => R4, (...args: P5) => R5] : OverloadsToTuple4<T>;
136
+ type OverloadsToTuple4<T> = T extends {
137
+ (...args: infer P1): infer R1;
138
+ (...args: infer P2): infer R2;
139
+ (...args: infer P3): infer R3;
140
+ (...args: infer P4): infer R4;
141
+ } ? [(...args: P1) => R1, (...args: P2) => R2, (...args: P3) => R3, (...args: P4) => R4] : OverloadsToTuple3<T>;
142
+ type OverloadsToTuple3<T> = T extends {
143
+ (...args: infer P1): infer R1;
144
+ (...args: infer P2): infer R2;
145
+ (...args: infer P3): infer R3;
146
+ } ? [(...args: P1) => R1, (...args: P2) => R2, (...args: P3) => R3] : OverloadsToTuple2<T>;
147
+ type OverloadsToTuple2<T> = T extends {
148
+ (...args: infer P1): infer R1;
149
+ (...args: infer P2): infer R2;
150
+ } ? [(...args: P1) => R1, (...args: P2) => R2] : OverloadsToTuple1<T>;
151
+ type OverloadsToTuple1<T> = T extends {
152
+ (...args: infer P1): infer R1;
153
+ } ? [(...args: P1) => R1] : never;
154
+ export {};
@@ -0,0 +1,2 @@
1
+ export * from "./urlSearchParamsSerializer";
2
+ export { default } from "./urlSearchParamsSerializer";
@@ -0,0 +1 @@
1
+ exports._default = require('./urlSearchParamsSerializer.cjs.js').default;
@@ -0,0 +1,8 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ const urlSearchParamsSerializer=(e,r)=>{let t=Object.keys(e).reduce((r,t)=>(r[t]=e[t][1],r),{}),l=e=>r?`${r}_${e}`:e,a=Object.keys(e).reduce((r,t)=>(r[t]=l(e[t][0]),r),{});return {names:Object.values(a),toNames:a,defaults:t,fromUrl:r=>{let t={};for(let a in e){let[u,c,o]=e[a],s=r.get(l(u));t[a]=s?o(s):c;}return t},toUrl:r=>{let a={};for(let u in t){let[t,c,,o]=e[u],s=o(r[u]??c);s&&(a[l(t)]=s);}return a}}};
6
+
7
+ exports.default = urlSearchParamsSerializer;
8
+ exports.urlSearchParamsSerializer = urlSearchParamsSerializer;
@@ -0,0 +1,2 @@
1
+ export * from './urlSearchParamsSerializer.cjs.js';
2
+ export { _default as default } from './urlSearchParamsSerializer.cjs.default.js';
@@ -0,0 +1,35 @@
1
+ /**
2
+ * @param {string} searchParamName
3
+ * @param {any} defaultValue
4
+ * @param {(valueFromUrl: string) => DefaultValue} serializeFromUrlSearchParamValue
5
+ * @param {(valueToUrl: DefaultValue) => string} serializeToUrlSearchParamValue
6
+ */
7
+ export type UrlSearchParamSerializer<NameInUrl extends string, DefaultValue> = [
8
+ NameInUrl,
9
+ DefaultValue,
10
+ (valueFromUrl: string) => DefaultValue,
11
+ (valueToUrl: DefaultValue) => string
12
+ ];
13
+ export declare const urlSearchParamsSerializer: <Serializers extends Record<string, UrlSearchParamSerializer<any, any>>, Prefix extends string | undefined>(serializers: Serializers, prefix?: Prefix) => {
14
+ /**
15
+ * Array of the search params `names` as they appear in the URL
16
+ */
17
+ names: { [Key in keyof Serializers]: Prefix extends undefined ? Serializers[Key][0] : `${Prefix}_${Serializers[Key][0]}`; }[keyof Serializers][];
18
+ /**
19
+ * Map of the search params `state` name to the `name` as it appears in the URL
20
+ */
21
+ toNames: { [Key in keyof Serializers]: Prefix extends undefined ? Serializers[Key][0] : `${Prefix}_${Serializers[Key][0]}`; };
22
+ /**
23
+ * Default state of the search params value
24
+ */
25
+ defaults: { [Key_1 in keyof Serializers]: Serializers[Key_1][1]; };
26
+ /**
27
+ * Deserialize search params state from the URL ones
28
+ */
29
+ fromUrl: (searchParams: URLSearchParams) => { [Key_2 in keyof Serializers]: Serializers[Key_2][1]; };
30
+ /**
31
+ * Serialize state to URL search params
32
+ */
33
+ toUrl: (data: { [Key_2 in keyof Serializers]?: Serializers[Key_2][1]; }) => Record<string, string>;
34
+ };
35
+ export default urlSearchParamsSerializer;
@@ -0,0 +1,2 @@
1
+ export * from "./urlSearchParamsSerializer";
2
+ export { default } from "./urlSearchParamsSerializer";
@@ -0,0 +1,3 @@
1
+ const urlSearchParamsSerializer=(e,r)=>{let t=Object.keys(e).reduce((r,t)=>(r[t]=e[t][1],r),{}),l=e=>r?`${r}_${e}`:e,a=Object.keys(e).reduce((r,t)=>(r[t]=l(e[t][0]),r),{});return {names:Object.values(a),toNames:a,defaults:t,fromUrl:r=>{let t={};for(let a in e){let[u,c,o]=e[a],s=r.get(l(u));t[a]=s?o(s):c;}return t},toUrl:r=>{let a={};for(let u in t){let[t,c,,o]=e[u],s=o(r[u]??c);s&&(a[l(t)]=s);}return a}}};
2
+
3
+ export { urlSearchParamsSerializer as default, urlSearchParamsSerializer };