@tslite/operators 0.4.3 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1,11 +1,11 @@
1
- 'use strict';var parser=require('@tslite/parser');var p=n=>{let e=parser.parse(n),t={};for(let r of e.body)r.type==="TSTypeAliasDeclaration"&&r.id?.name&&r.typeAnnotation&&(t[r.id.name]=h(r.typeAnnotation,r.typeParameters));return t};function h(n,e){return e?.length?n.t==="fn"?{...n,typeParams:e}:n.t==="overload"?{...n,signatures:n.signatures.map(t=>({...t,typeParams:e}))}:n:n}var T=`
1
+ 'use strict';var parser=require('@tslite/parser');var p=n=>{let e=parser.parse(n),t={};for(let r of e.body)r.type==="TSTypeAliasDeclaration"&&r.id?.name&&r.typeAnnotation&&(t[r.id.name]=x(r.typeAnnotation,r.typeParameters));return t};function x(n,e){return e?.length?n.t==="fn"?{...n,typeParams:e}:n.t==="overload"?{...n,signatures:n.signatures.map(t=>({...t,typeParams:e}))}:n:n}var u=`
2
2
  type identity<T> = (x: T) => T;
3
- type always<T> = (value: T) => () => T;
3
+ type constant<T> = (value: T) => () => T;
4
4
  type tap<T> = {
5
5
  (fn: (x: T) => unknown): (x: T) => T;
6
6
  (fn: (x: T) => unknown, x: T): T;
7
7
  };
8
- `;var u=`
8
+ `;var T=`
9
9
  type prop<T, K extends keyof T> = {
10
10
  (key: K): (obj: T) => T[K];
11
11
  (key: K, obj: T): T[K];
@@ -34,7 +34,7 @@ type omit<T> = {
34
34
  (keys: string[]): (obj: T) => T;
35
35
  (keys: string[], obj: T): T;
36
36
  };
37
- type assoc<T, V> = {
37
+ type set<T, V> = {
38
38
  (key: string, value: V): (obj: T) => T;
39
39
  (key: string, value: V, obj: T): T;
40
40
  };
@@ -46,7 +46,7 @@ type keys<T> = (obj: T) => (keyof T)[];
46
46
  type values<T> = (obj: T) => T[keyof T][];
47
47
  type entries<T> = (obj: T) => [keyof T, T[keyof T]][];
48
48
  type fromEntries<V> = (pairs: [string, V][]) => { [k: string]: V };
49
- type has<T> = {
49
+ type hasOwn<T> = {
50
50
  (key: string): (obj: T) => boolean;
51
51
  (key: string, obj: T): boolean;
52
52
  };
@@ -60,24 +60,28 @@ type evolve<T> = {
60
60
  };
61
61
  `;var c=`
62
62
  type map<T, U> = {
63
- (fn: (item: T) => U): (list: T[]) => U[];
64
- (fn: (item: T) => U, list: T[]): U[];
63
+ (fn: (item: T, index: number) => U): (list: T[]) => U[];
64
+ (fn: (item: T, index: number) => U, list: T[]): U[];
65
65
  };
66
- type filter<T> = {
67
- (pred: (item: T) => boolean): (list: T[]) => T[];
68
- (pred: (item: T) => boolean, list: T[]): T[];
66
+ type filter<T, S extends T> = {
67
+ (pred: (item: T, index: number) => item is S): (list: T[]) => S[];
68
+ (pred: (item: T, index: number) => item is S, list: T[]): S[];
69
+ (pred: (item: T, index: number) => boolean): (list: T[]) => T[];
70
+ (pred: (item: T, index: number) => boolean, list: T[]): T[];
69
71
  };
70
72
  type reject<T> = {
71
- (pred: (item: T) => boolean): (list: T[]) => T[];
72
- (pred: (item: T) => boolean, list: T[]): T[];
73
+ (pred: (item: T, index: number) => boolean): (list: T[]) => T[];
74
+ (pred: (item: T, index: number) => boolean, list: T[]): T[];
73
75
  };
74
- type find<T> = {
75
- (pred: (item: T) => boolean): (list: T[]) => T | undefined;
76
- (pred: (item: T) => boolean, list: T[]): T | undefined;
76
+ type find<T, S extends T> = {
77
+ (pred: (item: T, index: number) => item is S): (list: T[]) => S | undefined;
78
+ (pred: (item: T, index: number) => item is S, list: T[]): S | undefined;
79
+ (pred: (item: T, index: number) => boolean): (list: T[]) => T | undefined;
80
+ (pred: (item: T, index: number) => boolean, list: T[]): T | undefined;
77
81
  };
78
82
  type reduce<T, A> = {
79
- (fn: (acc: A, item: T) => A, init: A): (list: T[]) => A;
80
- (fn: (acc: A, item: T) => A, init: A, list: T[]): A;
83
+ (fn: (acc: A, item: T, index: number) => A, init: A): (list: T[]) => A;
84
+ (fn: (acc: A, item: T, index: number) => A, init: A, list: T[]): A;
81
85
  };
82
86
  type pluck<T, K extends keyof T> = {
83
87
  (key: K): (list: T[]) => T[K][];
@@ -91,7 +95,7 @@ type groupBy<T> = {
91
95
  (fn: (item: T) => string): (list: T[]) => { [k: string]: T[] };
92
96
  (fn: (item: T) => string, list: T[]): { [k: string]: T[] };
93
97
  };
94
- type uniqBy<T, U> = {
98
+ type uniqueBy<T, U> = {
95
99
  (fn: (item: T) => U): (list: T[]) => T[];
96
100
  (fn: (item: T) => U, list: T[]): T[];
97
101
  };
@@ -99,22 +103,26 @@ type sortBy<T, U> = {
99
103
  (fn: (item: T) => U): (list: T[]) => T[];
100
104
  (fn: (item: T) => U, list: T[]): T[];
101
105
  };
102
- type flatten<T> = (list: T[][]) => T[];
106
+ type flat<T> = {
107
+ (list: T[][]): T[];
108
+ (depth: number): (list: unknown[]) => unknown[];
109
+ (depth: number, list: unknown[]): unknown[];
110
+ };
103
111
  type includes<T> = {
104
112
  (value: T): (list: T[]) => boolean;
105
113
  (value: T, list: T[]): boolean;
106
114
  };
107
115
  type some<T> = {
108
- (pred: (item: T) => boolean): (list: T[]) => boolean;
109
- (pred: (item: T) => boolean, list: T[]): boolean;
116
+ (pred: (item: T, index: number) => boolean): (list: T[]) => boolean;
117
+ (pred: (item: T, index: number) => boolean, list: T[]): boolean;
110
118
  };
111
119
  type length<T> = {
112
120
  (str: string): number;
113
121
  (list: T[]): number;
114
122
  };
115
123
  type sum = (list: number[]) => number;
116
- `;var f=`
117
- type equals<T> = {
124
+ `;var d=`
125
+ type isDeepEqual<T> = {
118
126
  (a: T): (b: T) => boolean;
119
127
  (a: T, b: T): boolean;
120
128
  };
@@ -122,7 +130,7 @@ type propEq = {
122
130
  (key: string, value: unknown): (obj: unknown) => boolean;
123
131
  (key: string, value: unknown, obj: unknown): boolean;
124
132
  };
125
- type whereEq = {
133
+ type hasSubObject = {
126
134
  (spec: { [k: string]: unknown }): (obj: unknown) => boolean;
127
135
  (spec: { [k: string]: unknown }, obj: unknown): boolean;
128
136
  };
@@ -144,11 +152,11 @@ type defaultTo<T> = {
144
152
  (def: T): (value: T) => T;
145
153
  (def: T, value: T): T;
146
154
  };
147
- type isNil = (value: unknown) => boolean;
155
+ type isNullish = (value: unknown) => value is null | undefined;
148
156
  type isEmpty = (value: unknown) => boolean;
149
- `;var d=`
150
- type toUpper = (str: string) => string;
151
- type toLower = (str: string) => string;
157
+ `;var f=`
158
+ type toUpperCase = (str: string) => string;
159
+ type toLowerCase = (str: string) => string;
152
160
  type trim = (str: string) => string;
153
161
  type split = {
154
162
  (sep: string): (str: string) => string[];
@@ -162,11 +170,11 @@ type template = {
162
170
  (tpl: string): (data: unknown) => string;
163
171
  (tpl: string, data: unknown): string;
164
172
  };
165
- `;var g=`
173
+ `;var m=`
166
174
  type toNumber = (value: unknown) => number;
167
175
  type asString = (value: string | number | boolean | null | undefined) => string;
168
176
  type toBoolean = (value: unknown) => boolean;
169
177
  type parse = (text: string) => unknown;
170
178
  type stringify = (value: unknown) => string;
171
- `;var m=[T,u,c,f,d,g].join(`
172
- `),x=p(m);var o=(n,e)=>{let t=r=>r.length>=n?e(...r.slice(0,n)):(...a)=>t([...r,...a]);return (...r)=>t(r)},l=(n,e)=>{if(n===e)return true;if(n===null||e===null||typeof n!="object"||typeof e!="object")return n===e;if(Array.isArray(n)!==Array.isArray(e))return false;let r=Object.keys(n),a=Object.keys(e);return r.length!==a.length?false:r.every(y=>l(n[y],e[y]))},s=n=>n==null,j={identity:n=>n,always:n=>()=>n,tap:o(2,(n,e)=>(n(e),e)),prop:o(2,(n,e)=>s(e)?void 0:e[n]),path:o(2,(n,e)=>n.reduce((t,r)=>s(t)?void 0:t[r],e)),propOr:o(3,(n,e,t)=>{let r=s(t)?void 0:t[e];return s(r)?n:r}),pathOr:o(3,(n,e,t)=>{let r=e.reduce((a,y)=>s(a)?void 0:a[y],t);return s(r)?n:r}),pick:o(2,(n,e)=>{let t={};if(!s(e))for(let r of n)r in e&&(t[r]=e[r]);return t}),omit:o(2,(n,e)=>{let t=new Set(n),r={};for(let a in e)t.has(a)||(r[a]=e[a]);return r}),assoc:o(3,(n,e,t)=>({...t,[n]:e})),merge:o(2,(n,e)=>({...n,...e})),keys:n=>Object.keys(n??{}),values:n=>Object.values(n??{}),entries:n=>Object.entries(n??{}),fromEntries:n=>Object.fromEntries(n),has:o(2,(n,e)=>!s(e)&&Object.prototype.hasOwnProperty.call(e,n)),applySpec:o(2,(n,e)=>{let t={};for(let r in n)t[r]=n[r](e);return t}),evolve:o(2,(n,e)=>{let t={...e};for(let r in n)r in t&&(t[r]=n[r](t[r]));return t}),map:o(2,(n,e)=>e.map(t=>n(t))),filter:o(2,(n,e)=>e.filter(t=>n(t))),reject:o(2,(n,e)=>e.filter(t=>!n(t))),find:o(2,(n,e)=>e.find(t=>n(t))),reduce:o(3,(n,e,t)=>t.reduce((r,a)=>n(r,a),e)),pluck:o(2,(n,e)=>e.map(t=>s(t)?void 0:t[n])),indexBy:o(2,(n,e)=>{let t={};for(let r of e)t[n(r)]=r;return t}),groupBy:o(2,(n,e)=>{var r;let t={};for(let a of e)(t[r=n(a)]??(t[r]=[])).push(a);return t}),uniqBy:o(2,(n,e)=>{let t=new Set,r=[];for(let a of e){let y=n(a);t.has(y)||(t.add(y),r.push(a));}return r}),sortBy:o(2,(n,e)=>[...e].sort((t,r)=>{let a=n(t),y=n(r);return a<y?-1:a>y?1:0})),flatten:n=>n.reduce((e,t)=>e.concat(t),[]),includes:o(2,(n,e)=>e.some(t=>l(t,n))),some:o(2,(n,e)=>e.some(t=>n(t))),length:n=>n.length,sum:n=>n.reduce((e,t)=>e+t,0),equals:o(2,(n,e)=>l(n,e)),propEq:o(3,(n,e,t)=>!s(t)&&l(t[n],e)),whereEq:o(2,(n,e)=>{for(let t in n)if(s(e)||!l(e[t],n[t]))return false;return true}),ifElse:o(4,(n,e,t,r)=>n(r)?e(r):t(r)),when:o(3,(n,e,t)=>n(t)?e(t):t),cond:n=>e=>{for(let[t,r]of n)if(t(e))return r(e)},defaultTo:o(2,(n,e)=>s(e)||typeof e=="number"&&Number.isNaN(e)?n:e),isNil:n=>s(n),isEmpty:n=>s(n)?true:typeof n=="string"||Array.isArray(n)?n.length===0:typeof n=="object"?Object.keys(n).length===0:false,toUpper:n=>n.toUpperCase(),toLower:n=>n.toLowerCase(),trim:n=>n.trim(),split:o(2,(n,e)=>e.split(n)),join:o(2,(n,e)=>e.join(n)),template:o(2,(n,e)=>n.replace(/\{(\w+)\}/g,(t,r)=>{let a=s(e)?void 0:e[r];return s(a)?"":String(a)})),toNumber:n=>Number(n),asString:n=>String(n),toBoolean:n=>!!n,parse:n=>JSON.parse(n),stringify:n=>JSON.stringify(n)};var i=(n,e,t)=>({operator:n,on:e,call:t}),k={length:i("length","value",n=>`length(${n})`),map:i("map","array",(n,e)=>`map(${e[0]??"fn"}, ${n})`),filter:i("filter","array",(n,e)=>`filter(${e[0]??"fn"}, ${n})`),find:i("find","array",(n,e)=>`find(${e[0]??"fn"}, ${n})`),reduce:i("reduce","array",(n,e)=>`reduce(${e[0]??"fn"}, ${e[1]??"init"}, ${n})`),some:i("some","array",(n,e)=>`some(${e[0]??"fn"}, ${n})`),includes:i("includes","value",(n,e)=>`includes(${e[0]??"x"}, ${n})`),flat:i("flatten","array",n=>`flatten(${n})`),join:i("join","array",(n,e)=>`join(${e[0]??'", "'}, ${n})`),trim:i("trim","string",n=>`trim(${n})`),toUpperCase:i("toUpper","string",n=>`toUpper(${n})`),toLowerCase:i("toLower","string",n=>`toLower(${n})`),split:i("split","string",(n,e)=>`split(${e[0]??'","'}, ${n})`),toString:i("asString","value",n=>`asString(${n})`)},b=new Set(["push","pop","shift","unshift","splice","sort","reverse","slice","concat","indexOf","lastIndexOf","forEach","every","flatMap","fill","charAt","charCodeAt","substring","substr","replace","replaceAll","padStart","padEnd","startsWith","endsWith","repeat","at","keys","values","entries","hasOwnProperty","valueOf"]),v=n=>n in k||b.has(n);exports.isKnownProtoMember=v;exports.jsMethodReplacements=k;exports.knownProtoMembersWithoutOperator=b;exports.loadOperators=p;exports.vanilla=x;exports.vanillaRuntime=j;exports.vanillaSource=m;
179
+ `;var g=[u,T,c,d,f,m].join(`
180
+ `),h=p(g);var o=(n,e)=>{let t=r=>r.length>=n?e(...r.slice(0,n)):(...i)=>t([...r,...i]);return (...r)=>t(r)},l=(n,e)=>{if(n===e)return true;if(n===null||e===null||typeof n!="object"||typeof e!="object")return n===e;if(Array.isArray(n)!==Array.isArray(e))return false;let r=Object.keys(n),i=Object.keys(e);return r.length!==i.length?false:r.every(y=>l(n[y],e[y]))},s=n=>n==null,j={identity:n=>n,constant:n=>()=>n,tap:o(2,(n,e)=>(n(e),e)),prop:o(2,(n,e)=>s(e)?void 0:e[n]),path:o(2,(n,e)=>n.reduce((t,r)=>s(t)?void 0:t[r],e)),propOr:o(3,(n,e,t)=>{let r=s(t)?void 0:t[e];return s(r)?n:r}),pathOr:o(3,(n,e,t)=>{let r=e.reduce((i,y)=>s(i)?void 0:i[y],t);return s(r)?n:r}),pick:o(2,(n,e)=>{let t={};if(!s(e))for(let r of n)r in e&&(t[r]=e[r]);return t}),omit:o(2,(n,e)=>{let t=new Set(n),r={};for(let i in e)t.has(i)||(r[i]=e[i]);return r}),set:o(3,(n,e,t)=>({...t,[n]:e})),merge:o(2,(n,e)=>({...n,...e})),keys:n=>Object.keys(n??{}),values:n=>Object.values(n??{}),entries:n=>Object.entries(n??{}),fromEntries:n=>Object.fromEntries(n),hasOwn:o(2,(n,e)=>!s(e)&&Object.prototype.hasOwnProperty.call(e,n)),applySpec:o(2,(n,e)=>{let t={};for(let r in n)t[r]=n[r](e);return t}),evolve:o(2,(n,e)=>{let t={...e};for(let r in n)r in t&&(t[r]=n[r](t[r]));return t}),map:o(2,(n,e)=>e.map((t,r)=>n(t,r))),filter:o(2,(n,e)=>e.filter((t,r)=>n(t,r))),reject:o(2,(n,e)=>e.filter((t,r)=>!n(t,r))),find:o(2,(n,e)=>e.find((t,r)=>n(t,r))),reduce:o(3,(n,e,t)=>t.reduce((r,i,y)=>n(r,i,y),e)),pluck:o(2,(n,e)=>e.map(t=>s(t)?void 0:t[n])),indexBy:o(2,(n,e)=>{let t={};for(let r of e)t[n(r)]=r;return t}),groupBy:o(2,(n,e)=>{var r;let t={};for(let i of e)(t[r=n(i)]??(t[r]=[])).push(i);return t}),uniqueBy:o(2,(n,e)=>{let t=new Set,r=[];for(let i of e){let y=n(i);t.has(y)||(t.add(y),r.push(i));}return r}),sortBy:o(2,(n,e)=>[...e].sort((t,r)=>{let i=n(t),y=n(r);return i<y?-1:i>y?1:0})),flat:(...n)=>n.length===1&&Array.isArray(n[0])?n[0].flat():o(2,(e,t)=>t.flat(e))(...n),includes:o(2,(n,e)=>e.some(t=>l(t,n))),some:o(2,(n,e)=>e.some((t,r)=>n(t,r))),length:n=>n.length,sum:n=>n.reduce((e,t)=>e+t,0),isDeepEqual:o(2,(n,e)=>l(n,e)),propEq:o(3,(n,e,t)=>!s(t)&&l(t[n],e)),hasSubObject:o(2,(n,e)=>{for(let t in n)if(s(e)||!l(e[t],n[t]))return false;return true}),ifElse:o(4,(n,e,t,r)=>n(r)?e(r):t(r)),when:o(3,(n,e,t)=>n(t)?e(t):t),cond:n=>e=>{for(let[t,r]of n)if(t(e))return r(e)},defaultTo:o(2,(n,e)=>s(e)||typeof e=="number"&&Number.isNaN(e)?n:e),isNullish:n=>s(n),isEmpty:n=>s(n)?true:typeof n=="string"||Array.isArray(n)?n.length===0:typeof n=="object"?Object.keys(n).length===0:false,toUpperCase:n=>n.toUpperCase(),toLowerCase:n=>n.toLowerCase(),trim:n=>n.trim(),split:o(2,(n,e)=>e.split(n)),join:o(2,(n,e)=>e.join(n)),template:o(2,(n,e)=>n.replace(/\{(\w+)\}/g,(t,r)=>{let i=s(e)?void 0:e[r];return s(i)?"":String(i)})),toNumber:n=>Number(n),asString:n=>String(n),toBoolean:n=>!!n,parse:n=>JSON.parse(n),stringify:n=>JSON.stringify(n)};var a=(n,e,t)=>({operator:n,on:e,call:t}),k={length:a("length","value",n=>`length(${n})`),map:a("map","array",(n,e)=>`map(${e[0]??"fn"}, ${n})`),filter:a("filter","array",(n,e)=>`filter(${e[0]??"fn"}, ${n})`),find:a("find","array",(n,e)=>`find(${e[0]??"fn"}, ${n})`),reduce:a("reduce","array",(n,e)=>`reduce(${e[0]??"fn"}, ${e[1]??"init"}, ${n})`),some:a("some","array",(n,e)=>`some(${e[0]??"fn"}, ${n})`),includes:a("includes","value",(n,e)=>`includes(${e[0]??"x"}, ${n})`),flat:a("flat","array",n=>`flat(${n})`),join:a("join","array",(n,e)=>`join(${e[0]??'", "'}, ${n})`),trim:a("trim","string",n=>`trim(${n})`),toUpperCase:a("toUpperCase","string",n=>`toUpperCase(${n})`),toLowerCase:a("toLowerCase","string",n=>`toLowerCase(${n})`),split:a("split","string",(n,e)=>`split(${e[0]??'","'}, ${n})`),toString:a("asString","value",n=>`asString(${n})`)},b=new Set(["push","pop","shift","unshift","splice","sort","reverse","slice","concat","indexOf","lastIndexOf","forEach","every","flatMap","fill","charAt","charCodeAt","substring","substr","replace","replaceAll","padStart","padEnd","startsWith","endsWith","repeat","at","keys","values","entries","hasOwnProperty","valueOf"]),S=n=>n in k||b.has(n);exports.isKnownProtoMember=S;exports.jsMethodReplacements=k;exports.knownProtoMembersWithoutOperator=b;exports.loadOperators=p;exports.vanilla=h;exports.vanillaRuntime=j;exports.vanillaSource=g;
package/dist/index.js CHANGED
@@ -1,11 +1,11 @@
1
- import {parse}from'@tslite/parser';var p=n=>{let e=parse(n),t={};for(let r of e.body)r.type==="TSTypeAliasDeclaration"&&r.id?.name&&r.typeAnnotation&&(t[r.id.name]=h(r.typeAnnotation,r.typeParameters));return t};function h(n,e){return e?.length?n.t==="fn"?{...n,typeParams:e}:n.t==="overload"?{...n,signatures:n.signatures.map(t=>({...t,typeParams:e}))}:n:n}var T=`
1
+ import {parse}from'@tslite/parser';var p=n=>{let e=parse(n),t={};for(let r of e.body)r.type==="TSTypeAliasDeclaration"&&r.id?.name&&r.typeAnnotation&&(t[r.id.name]=x(r.typeAnnotation,r.typeParameters));return t};function x(n,e){return e?.length?n.t==="fn"?{...n,typeParams:e}:n.t==="overload"?{...n,signatures:n.signatures.map(t=>({...t,typeParams:e}))}:n:n}var u=`
2
2
  type identity<T> = (x: T) => T;
3
- type always<T> = (value: T) => () => T;
3
+ type constant<T> = (value: T) => () => T;
4
4
  type tap<T> = {
5
5
  (fn: (x: T) => unknown): (x: T) => T;
6
6
  (fn: (x: T) => unknown, x: T): T;
7
7
  };
8
- `;var u=`
8
+ `;var T=`
9
9
  type prop<T, K extends keyof T> = {
10
10
  (key: K): (obj: T) => T[K];
11
11
  (key: K, obj: T): T[K];
@@ -34,7 +34,7 @@ type omit<T> = {
34
34
  (keys: string[]): (obj: T) => T;
35
35
  (keys: string[], obj: T): T;
36
36
  };
37
- type assoc<T, V> = {
37
+ type set<T, V> = {
38
38
  (key: string, value: V): (obj: T) => T;
39
39
  (key: string, value: V, obj: T): T;
40
40
  };
@@ -46,7 +46,7 @@ type keys<T> = (obj: T) => (keyof T)[];
46
46
  type values<T> = (obj: T) => T[keyof T][];
47
47
  type entries<T> = (obj: T) => [keyof T, T[keyof T]][];
48
48
  type fromEntries<V> = (pairs: [string, V][]) => { [k: string]: V };
49
- type has<T> = {
49
+ type hasOwn<T> = {
50
50
  (key: string): (obj: T) => boolean;
51
51
  (key: string, obj: T): boolean;
52
52
  };
@@ -60,24 +60,28 @@ type evolve<T> = {
60
60
  };
61
61
  `;var c=`
62
62
  type map<T, U> = {
63
- (fn: (item: T) => U): (list: T[]) => U[];
64
- (fn: (item: T) => U, list: T[]): U[];
63
+ (fn: (item: T, index: number) => U): (list: T[]) => U[];
64
+ (fn: (item: T, index: number) => U, list: T[]): U[];
65
65
  };
66
- type filter<T> = {
67
- (pred: (item: T) => boolean): (list: T[]) => T[];
68
- (pred: (item: T) => boolean, list: T[]): T[];
66
+ type filter<T, S extends T> = {
67
+ (pred: (item: T, index: number) => item is S): (list: T[]) => S[];
68
+ (pred: (item: T, index: number) => item is S, list: T[]): S[];
69
+ (pred: (item: T, index: number) => boolean): (list: T[]) => T[];
70
+ (pred: (item: T, index: number) => boolean, list: T[]): T[];
69
71
  };
70
72
  type reject<T> = {
71
- (pred: (item: T) => boolean): (list: T[]) => T[];
72
- (pred: (item: T) => boolean, list: T[]): T[];
73
+ (pred: (item: T, index: number) => boolean): (list: T[]) => T[];
74
+ (pred: (item: T, index: number) => boolean, list: T[]): T[];
73
75
  };
74
- type find<T> = {
75
- (pred: (item: T) => boolean): (list: T[]) => T | undefined;
76
- (pred: (item: T) => boolean, list: T[]): T | undefined;
76
+ type find<T, S extends T> = {
77
+ (pred: (item: T, index: number) => item is S): (list: T[]) => S | undefined;
78
+ (pred: (item: T, index: number) => item is S, list: T[]): S | undefined;
79
+ (pred: (item: T, index: number) => boolean): (list: T[]) => T | undefined;
80
+ (pred: (item: T, index: number) => boolean, list: T[]): T | undefined;
77
81
  };
78
82
  type reduce<T, A> = {
79
- (fn: (acc: A, item: T) => A, init: A): (list: T[]) => A;
80
- (fn: (acc: A, item: T) => A, init: A, list: T[]): A;
83
+ (fn: (acc: A, item: T, index: number) => A, init: A): (list: T[]) => A;
84
+ (fn: (acc: A, item: T, index: number) => A, init: A, list: T[]): A;
81
85
  };
82
86
  type pluck<T, K extends keyof T> = {
83
87
  (key: K): (list: T[]) => T[K][];
@@ -91,7 +95,7 @@ type groupBy<T> = {
91
95
  (fn: (item: T) => string): (list: T[]) => { [k: string]: T[] };
92
96
  (fn: (item: T) => string, list: T[]): { [k: string]: T[] };
93
97
  };
94
- type uniqBy<T, U> = {
98
+ type uniqueBy<T, U> = {
95
99
  (fn: (item: T) => U): (list: T[]) => T[];
96
100
  (fn: (item: T) => U, list: T[]): T[];
97
101
  };
@@ -99,22 +103,26 @@ type sortBy<T, U> = {
99
103
  (fn: (item: T) => U): (list: T[]) => T[];
100
104
  (fn: (item: T) => U, list: T[]): T[];
101
105
  };
102
- type flatten<T> = (list: T[][]) => T[];
106
+ type flat<T> = {
107
+ (list: T[][]): T[];
108
+ (depth: number): (list: unknown[]) => unknown[];
109
+ (depth: number, list: unknown[]): unknown[];
110
+ };
103
111
  type includes<T> = {
104
112
  (value: T): (list: T[]) => boolean;
105
113
  (value: T, list: T[]): boolean;
106
114
  };
107
115
  type some<T> = {
108
- (pred: (item: T) => boolean): (list: T[]) => boolean;
109
- (pred: (item: T) => boolean, list: T[]): boolean;
116
+ (pred: (item: T, index: number) => boolean): (list: T[]) => boolean;
117
+ (pred: (item: T, index: number) => boolean, list: T[]): boolean;
110
118
  };
111
119
  type length<T> = {
112
120
  (str: string): number;
113
121
  (list: T[]): number;
114
122
  };
115
123
  type sum = (list: number[]) => number;
116
- `;var f=`
117
- type equals<T> = {
124
+ `;var d=`
125
+ type isDeepEqual<T> = {
118
126
  (a: T): (b: T) => boolean;
119
127
  (a: T, b: T): boolean;
120
128
  };
@@ -122,7 +130,7 @@ type propEq = {
122
130
  (key: string, value: unknown): (obj: unknown) => boolean;
123
131
  (key: string, value: unknown, obj: unknown): boolean;
124
132
  };
125
- type whereEq = {
133
+ type hasSubObject = {
126
134
  (spec: { [k: string]: unknown }): (obj: unknown) => boolean;
127
135
  (spec: { [k: string]: unknown }, obj: unknown): boolean;
128
136
  };
@@ -144,11 +152,11 @@ type defaultTo<T> = {
144
152
  (def: T): (value: T) => T;
145
153
  (def: T, value: T): T;
146
154
  };
147
- type isNil = (value: unknown) => boolean;
155
+ type isNullish = (value: unknown) => value is null | undefined;
148
156
  type isEmpty = (value: unknown) => boolean;
149
- `;var d=`
150
- type toUpper = (str: string) => string;
151
- type toLower = (str: string) => string;
157
+ `;var f=`
158
+ type toUpperCase = (str: string) => string;
159
+ type toLowerCase = (str: string) => string;
152
160
  type trim = (str: string) => string;
153
161
  type split = {
154
162
  (sep: string): (str: string) => string[];
@@ -162,11 +170,11 @@ type template = {
162
170
  (tpl: string): (data: unknown) => string;
163
171
  (tpl: string, data: unknown): string;
164
172
  };
165
- `;var g=`
173
+ `;var m=`
166
174
  type toNumber = (value: unknown) => number;
167
175
  type asString = (value: string | number | boolean | null | undefined) => string;
168
176
  type toBoolean = (value: unknown) => boolean;
169
177
  type parse = (text: string) => unknown;
170
178
  type stringify = (value: unknown) => string;
171
- `;var m=[T,u,c,f,d,g].join(`
172
- `),x=p(m);var o=(n,e)=>{let t=r=>r.length>=n?e(...r.slice(0,n)):(...a)=>t([...r,...a]);return (...r)=>t(r)},l=(n,e)=>{if(n===e)return true;if(n===null||e===null||typeof n!="object"||typeof e!="object")return n===e;if(Array.isArray(n)!==Array.isArray(e))return false;let r=Object.keys(n),a=Object.keys(e);return r.length!==a.length?false:r.every(y=>l(n[y],e[y]))},s=n=>n==null,j={identity:n=>n,always:n=>()=>n,tap:o(2,(n,e)=>(n(e),e)),prop:o(2,(n,e)=>s(e)?void 0:e[n]),path:o(2,(n,e)=>n.reduce((t,r)=>s(t)?void 0:t[r],e)),propOr:o(3,(n,e,t)=>{let r=s(t)?void 0:t[e];return s(r)?n:r}),pathOr:o(3,(n,e,t)=>{let r=e.reduce((a,y)=>s(a)?void 0:a[y],t);return s(r)?n:r}),pick:o(2,(n,e)=>{let t={};if(!s(e))for(let r of n)r in e&&(t[r]=e[r]);return t}),omit:o(2,(n,e)=>{let t=new Set(n),r={};for(let a in e)t.has(a)||(r[a]=e[a]);return r}),assoc:o(3,(n,e,t)=>({...t,[n]:e})),merge:o(2,(n,e)=>({...n,...e})),keys:n=>Object.keys(n??{}),values:n=>Object.values(n??{}),entries:n=>Object.entries(n??{}),fromEntries:n=>Object.fromEntries(n),has:o(2,(n,e)=>!s(e)&&Object.prototype.hasOwnProperty.call(e,n)),applySpec:o(2,(n,e)=>{let t={};for(let r in n)t[r]=n[r](e);return t}),evolve:o(2,(n,e)=>{let t={...e};for(let r in n)r in t&&(t[r]=n[r](t[r]));return t}),map:o(2,(n,e)=>e.map(t=>n(t))),filter:o(2,(n,e)=>e.filter(t=>n(t))),reject:o(2,(n,e)=>e.filter(t=>!n(t))),find:o(2,(n,e)=>e.find(t=>n(t))),reduce:o(3,(n,e,t)=>t.reduce((r,a)=>n(r,a),e)),pluck:o(2,(n,e)=>e.map(t=>s(t)?void 0:t[n])),indexBy:o(2,(n,e)=>{let t={};for(let r of e)t[n(r)]=r;return t}),groupBy:o(2,(n,e)=>{var r;let t={};for(let a of e)(t[r=n(a)]??(t[r]=[])).push(a);return t}),uniqBy:o(2,(n,e)=>{let t=new Set,r=[];for(let a of e){let y=n(a);t.has(y)||(t.add(y),r.push(a));}return r}),sortBy:o(2,(n,e)=>[...e].sort((t,r)=>{let a=n(t),y=n(r);return a<y?-1:a>y?1:0})),flatten:n=>n.reduce((e,t)=>e.concat(t),[]),includes:o(2,(n,e)=>e.some(t=>l(t,n))),some:o(2,(n,e)=>e.some(t=>n(t))),length:n=>n.length,sum:n=>n.reduce((e,t)=>e+t,0),equals:o(2,(n,e)=>l(n,e)),propEq:o(3,(n,e,t)=>!s(t)&&l(t[n],e)),whereEq:o(2,(n,e)=>{for(let t in n)if(s(e)||!l(e[t],n[t]))return false;return true}),ifElse:o(4,(n,e,t,r)=>n(r)?e(r):t(r)),when:o(3,(n,e,t)=>n(t)?e(t):t),cond:n=>e=>{for(let[t,r]of n)if(t(e))return r(e)},defaultTo:o(2,(n,e)=>s(e)||typeof e=="number"&&Number.isNaN(e)?n:e),isNil:n=>s(n),isEmpty:n=>s(n)?true:typeof n=="string"||Array.isArray(n)?n.length===0:typeof n=="object"?Object.keys(n).length===0:false,toUpper:n=>n.toUpperCase(),toLower:n=>n.toLowerCase(),trim:n=>n.trim(),split:o(2,(n,e)=>e.split(n)),join:o(2,(n,e)=>e.join(n)),template:o(2,(n,e)=>n.replace(/\{(\w+)\}/g,(t,r)=>{let a=s(e)?void 0:e[r];return s(a)?"":String(a)})),toNumber:n=>Number(n),asString:n=>String(n),toBoolean:n=>!!n,parse:n=>JSON.parse(n),stringify:n=>JSON.stringify(n)};var i=(n,e,t)=>({operator:n,on:e,call:t}),k={length:i("length","value",n=>`length(${n})`),map:i("map","array",(n,e)=>`map(${e[0]??"fn"}, ${n})`),filter:i("filter","array",(n,e)=>`filter(${e[0]??"fn"}, ${n})`),find:i("find","array",(n,e)=>`find(${e[0]??"fn"}, ${n})`),reduce:i("reduce","array",(n,e)=>`reduce(${e[0]??"fn"}, ${e[1]??"init"}, ${n})`),some:i("some","array",(n,e)=>`some(${e[0]??"fn"}, ${n})`),includes:i("includes","value",(n,e)=>`includes(${e[0]??"x"}, ${n})`),flat:i("flatten","array",n=>`flatten(${n})`),join:i("join","array",(n,e)=>`join(${e[0]??'", "'}, ${n})`),trim:i("trim","string",n=>`trim(${n})`),toUpperCase:i("toUpper","string",n=>`toUpper(${n})`),toLowerCase:i("toLower","string",n=>`toLower(${n})`),split:i("split","string",(n,e)=>`split(${e[0]??'","'}, ${n})`),toString:i("asString","value",n=>`asString(${n})`)},b=new Set(["push","pop","shift","unshift","splice","sort","reverse","slice","concat","indexOf","lastIndexOf","forEach","every","flatMap","fill","charAt","charCodeAt","substring","substr","replace","replaceAll","padStart","padEnd","startsWith","endsWith","repeat","at","keys","values","entries","hasOwnProperty","valueOf"]),v=n=>n in k||b.has(n);export{v as isKnownProtoMember,k as jsMethodReplacements,b as knownProtoMembersWithoutOperator,p as loadOperators,x as vanilla,j as vanillaRuntime,m as vanillaSource};
179
+ `;var g=[u,T,c,d,f,m].join(`
180
+ `),h=p(g);var o=(n,e)=>{let t=r=>r.length>=n?e(...r.slice(0,n)):(...i)=>t([...r,...i]);return (...r)=>t(r)},l=(n,e)=>{if(n===e)return true;if(n===null||e===null||typeof n!="object"||typeof e!="object")return n===e;if(Array.isArray(n)!==Array.isArray(e))return false;let r=Object.keys(n),i=Object.keys(e);return r.length!==i.length?false:r.every(y=>l(n[y],e[y]))},s=n=>n==null,j={identity:n=>n,constant:n=>()=>n,tap:o(2,(n,e)=>(n(e),e)),prop:o(2,(n,e)=>s(e)?void 0:e[n]),path:o(2,(n,e)=>n.reduce((t,r)=>s(t)?void 0:t[r],e)),propOr:o(3,(n,e,t)=>{let r=s(t)?void 0:t[e];return s(r)?n:r}),pathOr:o(3,(n,e,t)=>{let r=e.reduce((i,y)=>s(i)?void 0:i[y],t);return s(r)?n:r}),pick:o(2,(n,e)=>{let t={};if(!s(e))for(let r of n)r in e&&(t[r]=e[r]);return t}),omit:o(2,(n,e)=>{let t=new Set(n),r={};for(let i in e)t.has(i)||(r[i]=e[i]);return r}),set:o(3,(n,e,t)=>({...t,[n]:e})),merge:o(2,(n,e)=>({...n,...e})),keys:n=>Object.keys(n??{}),values:n=>Object.values(n??{}),entries:n=>Object.entries(n??{}),fromEntries:n=>Object.fromEntries(n),hasOwn:o(2,(n,e)=>!s(e)&&Object.prototype.hasOwnProperty.call(e,n)),applySpec:o(2,(n,e)=>{let t={};for(let r in n)t[r]=n[r](e);return t}),evolve:o(2,(n,e)=>{let t={...e};for(let r in n)r in t&&(t[r]=n[r](t[r]));return t}),map:o(2,(n,e)=>e.map((t,r)=>n(t,r))),filter:o(2,(n,e)=>e.filter((t,r)=>n(t,r))),reject:o(2,(n,e)=>e.filter((t,r)=>!n(t,r))),find:o(2,(n,e)=>e.find((t,r)=>n(t,r))),reduce:o(3,(n,e,t)=>t.reduce((r,i,y)=>n(r,i,y),e)),pluck:o(2,(n,e)=>e.map(t=>s(t)?void 0:t[n])),indexBy:o(2,(n,e)=>{let t={};for(let r of e)t[n(r)]=r;return t}),groupBy:o(2,(n,e)=>{var r;let t={};for(let i of e)(t[r=n(i)]??(t[r]=[])).push(i);return t}),uniqueBy:o(2,(n,e)=>{let t=new Set,r=[];for(let i of e){let y=n(i);t.has(y)||(t.add(y),r.push(i));}return r}),sortBy:o(2,(n,e)=>[...e].sort((t,r)=>{let i=n(t),y=n(r);return i<y?-1:i>y?1:0})),flat:(...n)=>n.length===1&&Array.isArray(n[0])?n[0].flat():o(2,(e,t)=>t.flat(e))(...n),includes:o(2,(n,e)=>e.some(t=>l(t,n))),some:o(2,(n,e)=>e.some((t,r)=>n(t,r))),length:n=>n.length,sum:n=>n.reduce((e,t)=>e+t,0),isDeepEqual:o(2,(n,e)=>l(n,e)),propEq:o(3,(n,e,t)=>!s(t)&&l(t[n],e)),hasSubObject:o(2,(n,e)=>{for(let t in n)if(s(e)||!l(e[t],n[t]))return false;return true}),ifElse:o(4,(n,e,t,r)=>n(r)?e(r):t(r)),when:o(3,(n,e,t)=>n(t)?e(t):t),cond:n=>e=>{for(let[t,r]of n)if(t(e))return r(e)},defaultTo:o(2,(n,e)=>s(e)||typeof e=="number"&&Number.isNaN(e)?n:e),isNullish:n=>s(n),isEmpty:n=>s(n)?true:typeof n=="string"||Array.isArray(n)?n.length===0:typeof n=="object"?Object.keys(n).length===0:false,toUpperCase:n=>n.toUpperCase(),toLowerCase:n=>n.toLowerCase(),trim:n=>n.trim(),split:o(2,(n,e)=>e.split(n)),join:o(2,(n,e)=>e.join(n)),template:o(2,(n,e)=>n.replace(/\{(\w+)\}/g,(t,r)=>{let i=s(e)?void 0:e[r];return s(i)?"":String(i)})),toNumber:n=>Number(n),asString:n=>String(n),toBoolean:n=>!!n,parse:n=>JSON.parse(n),stringify:n=>JSON.stringify(n)};var a=(n,e,t)=>({operator:n,on:e,call:t}),k={length:a("length","value",n=>`length(${n})`),map:a("map","array",(n,e)=>`map(${e[0]??"fn"}, ${n})`),filter:a("filter","array",(n,e)=>`filter(${e[0]??"fn"}, ${n})`),find:a("find","array",(n,e)=>`find(${e[0]??"fn"}, ${n})`),reduce:a("reduce","array",(n,e)=>`reduce(${e[0]??"fn"}, ${e[1]??"init"}, ${n})`),some:a("some","array",(n,e)=>`some(${e[0]??"fn"}, ${n})`),includes:a("includes","value",(n,e)=>`includes(${e[0]??"x"}, ${n})`),flat:a("flat","array",n=>`flat(${n})`),join:a("join","array",(n,e)=>`join(${e[0]??'", "'}, ${n})`),trim:a("trim","string",n=>`trim(${n})`),toUpperCase:a("toUpperCase","string",n=>`toUpperCase(${n})`),toLowerCase:a("toLowerCase","string",n=>`toLowerCase(${n})`),split:a("split","string",(n,e)=>`split(${e[0]??'","'}, ${n})`),toString:a("asString","value",n=>`asString(${n})`)},b=new Set(["push","pop","shift","unshift","splice","sort","reverse","slice","concat","indexOf","lastIndexOf","forEach","every","flatMap","fill","charAt","charCodeAt","substring","substr","replace","replaceAll","padStart","padEnd","startsWith","endsWith","repeat","at","keys","values","entries","hasOwnProperty","valueOf"]),S=n=>n in k||b.has(n);export{S as isKnownProtoMember,k as jsMethodReplacements,b as knownProtoMembersWithoutOperator,p as loadOperators,h as vanilla,j as vanillaRuntime,g as vanillaSource};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tslite/operators",
3
- "version": "0.4.3",
3
+ "version": "1.0.0",
4
4
  "description": "TSLite operators — functional operator signatures as native TSL types, injectable into the checker Env (FP, no OO). The typed stdlib for JSON mappers.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -40,12 +40,12 @@
40
40
  "access": "public"
41
41
  },
42
42
  "dependencies": {
43
- "@tslite/parser": "1.2.0",
44
- "@tslite/type-core": "0.3.2"
43
+ "@tslite/parser": "1.3.0",
44
+ "@tslite/type-core": "0.3.4"
45
45
  },
46
46
  "devDependencies": {
47
- "@tslite/checker": "0.9.2",
48
- "@tslite/interpret": "0.4.2"
47
+ "@tslite/checker": "0.9.4",
48
+ "@tslite/interpret": "0.4.3"
49
49
  },
50
50
  "scripts": {
51
51
  "build": "tsup",