@wxn0brp/vql-client 0.2.5 → 0.2.7

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.d.ts CHANGED
@@ -23,3 +23,4 @@ export interface FetchOptions {
23
23
  export declare const VConfig: Config;
24
24
  export declare function fetchVQL<T = any>(query: VQLUQ<T>, vars?: any, hookContext?: any, fetchOptions?: FetchOptions): Promise<T>;
25
25
  export declare function defTransport(query: VQLUQ, fetchOptions?: FetchOptions): Promise<any>;
26
+ export declare const V: <T = any>(strings: TemplateStringsArray, ...values: any[]) => Promise<T>;
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  ;
2
2
  export const VConfig = {
3
3
  transport: defTransport,
4
- fetchImplementation: fetch,
4
+ fetchImplementation: (input, init) => fetch(input, init),
5
5
  hooks: {},
6
6
  url: "/VQL"
7
7
  };
@@ -53,10 +53,17 @@ export async function defTransport(query, fetchOptions) {
53
53
  throw new Error(`VQL request failed: ${res.status}`);
54
54
  return await res.json();
55
55
  }
56
+ export const V = async (strings, ...values) => {
57
+ const query = strings
58
+ .map((str, i) => str.trim() + (values[i] !== undefined ? values[i] : ""))
59
+ .join(" ");
60
+ return fetchVQL(query);
61
+ };
56
62
  if (typeof window !== "undefined") {
57
63
  window.VQLClient = {
58
64
  fetchVQL,
59
65
  defTransport,
66
+ VQL: V,
60
67
  cfg: VConfig
61
68
  };
62
69
  }
package/dist/min.js CHANGED
@@ -1 +1 @@
1
- var VQLClient=(()=>{var c=Object.defineProperty;var L=Object.getOwnPropertyDescriptor;var w=Object.getOwnPropertyNames;var h=Object.prototype.hasOwnProperty;var m=(n,t)=>{for(var e in t)c(n,e,{get:t[e],enumerable:!0})},b=(n,t,e,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of w(t))!h.call(n,a)&&a!==e&&c(n,a,{get:()=>t[a],enumerable:!(s=L(t,a))||s.enumerable});return n};var T=n=>b(c({},"__esModule",{value:!0}),n);var x={};m(x,{VConfig:()=>i,defTransport:()=>y,fetchVQL:()=>u});var i={transport:y,fetchImplementation:fetch,hooks:{},url:"/VQL"};async function u(n,t={},e={},s={}){var d,f,p,Q;let{transport:a,hooks:r}=i,g=Date.now();try{e=Object.assign({},i.hookContext,t,e),(d=r.onStart)==null||d.call(r,n,e),typeof n=="string"&&Object.keys(t).length&&(n={query:n,var:t});let o=await a(n,s),V=Date.now()-g;if((f=r.onEnd)==null||f.call(r,n,V,o,e),o!=null&&o.err){let l=new Error(o.err);throw(p=r.onError)==null||p.call(r,n,l,o,e),l}return o.result!==void 0?o.result:o}catch(o){throw(Q=r.onError)==null||Q.call(r,n,o,null,e),o}}async function y(n,t){let e=Object.assign({"Content-Type":"application/json"},i.headers,t.headers),s=Object.assign({},i.body,t.body,{query:n}),a={method:"POST",headers:e,body:JSON.stringify(s)};t.signal&&(a.signal=t.signal);let r=await i.fetchImplementation(i.url,a);if(!r.ok)throw new Error(`VQL request failed: ${r.status}`);return await r.json()}typeof window!="undefined"&&(window.VQLClient={fetchVQL:u,defTransport:y,cfg:i});return T(x);})();
1
+ var VQLClient=(()=>{var c=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var w=Object.getOwnPropertyNames;var h=Object.prototype.hasOwnProperty;var T=(t,n)=>{for(var e in n)c(t,e,{get:n[e],enumerable:!0})},b=(t,n,e,i)=>{if(n&&typeof n=="object"||typeof n=="function")for(let o of w(n))!h.call(t,o)&&o!==e&&c(t,o,{get:()=>n[o],enumerable:!(i=m(n,o))||i.enumerable});return t};var x=t=>b(c({},"__esModule",{value:!0}),t);var O={};T(O,{V:()=>g,VConfig:()=>s,defTransport:()=>d,fetchVQL:()=>y});var s={transport:d,fetchImplementation:(t,n)=>fetch(t,n),hooks:{},url:"/VQL"};async function y(t,n={},e={},i={}){var p,f,u,Q;let{transport:o,hooks:r}=s,V=Date.now();try{e=Object.assign({},s.hookContext,n,e),(p=r.onStart)==null||p.call(r,t,e),typeof t=="string"&&Object.keys(n).length&&(t={query:t,var:n});let a=await o(t,i),L=Date.now()-V;if((f=r.onEnd)==null||f.call(r,t,L,a,e),a!=null&&a.err){let l=new Error(a.err);throw(u=r.onError)==null||u.call(r,t,l,a,e),l}return a.result!==void 0?a.result:a}catch(a){throw(Q=r.onError)==null||Q.call(r,t,a,null,e),a}}async function d(t,n){let e=Object.assign({"Content-Type":"application/json"},s.headers,n.headers),i=Object.assign({},s.body,n.body,{query:t}),o={method:"POST",headers:e,body:JSON.stringify(i)};n.signal&&(o.signal=n.signal);let r=await s.fetchImplementation(s.url,o);if(!r.ok)throw new Error(`VQL request failed: ${r.status}`);return await r.json()}var g=async(t,...n)=>{let e=t.map((i,o)=>i.trim()+(n[o]!==void 0?n[o]:"")).join(" ");return y(e)};typeof window!="undefined"&&(window.VQLClient={fetchVQL:y,defTransport:d,VQL:g,cfg:s});return x(O);})();
package/dist/vql.d.ts CHANGED
@@ -7,66 +7,74 @@ export interface VContext {
7
7
  export type KeysMatching<T, V, C = V> = {
8
8
  [K in keyof T]-?: T[K] extends C ? K : never;
9
9
  }[keyof T];
10
- export type PartialOfType<T, V, C = V> = Partial<Record<KeysMatching<T, V, C>, V>>;
11
- export type PartialPickMatching<T, V, C = V> = Partial<Pick<T, KeysMatching<T, V, C>>>;
10
+ export type NestedValue<T, V, C = V> = {
11
+ [K in keyof T as T[K] extends C ? K : T[K] extends object ? K : never]?: T[K] extends C ? V : T[K] extends object ? NestedValue<T[K], V, C> : never;
12
+ };
13
+ export type DeepPartial<T> = {
14
+ [K in keyof T]?: T[K] extends object ? DeepPartial<T[K]> : T[K];
15
+ };
12
16
  export type LogicalOperators<T = any> = {
13
17
  $and?: Array<SearchOptions<T>>;
14
18
  $or?: Array<SearchOptions<T>>;
15
19
  $not?: SearchOptions<T>;
16
20
  };
17
21
  export type ComparisonOperators<T = any> = {
18
- $gt?: PartialOfType<T, number>;
19
- $lt?: PartialOfType<T, number>;
20
- $gte?: PartialOfType<T, number>;
21
- $lte?: PartialOfType<T, number>;
22
- $between?: PartialOfType<T, [
22
+ $gt?: NestedValue<T, number, number>;
23
+ $lt?: NestedValue<T, number, number>;
24
+ $gte?: NestedValue<T, number, number>;
25
+ $lte?: NestedValue<T, number, number>;
26
+ $between?: NestedValue<T, [
23
27
  number,
24
28
  number
25
29
  ], number>;
26
- $in?: Partial<Record<keyof T, T[keyof T][]>>;
27
- $nin?: Partial<Record<keyof T, T[keyof T][]>>;
28
- $idGt?: PartialOfType<T, string | number>;
29
- $idLt?: PartialOfType<T, string | number>;
30
- $idGte?: PartialOfType<T, string | number>;
31
- $idLte?: PartialOfType<T, string | number>;
30
+ $in?: DeepPartial<T> & {
31
+ [K in keyof T]?: T[K] extends any[] ? T[K] : T[K][];
32
+ };
33
+ $nin?: DeepPartial<T> & {
34
+ [K in keyof T]?: T[K] extends any[] ? T[K] : T[K][];
35
+ };
36
+ $idGt?: NestedValue<T, string | number, string | number>;
37
+ $idLt?: NestedValue<T, string | number, string | number>;
38
+ $idGte?: NestedValue<T, string | number, string | number>;
39
+ $idLte?: NestedValue<T, string | number, string | number>;
32
40
  };
33
41
  export type TypeAndExistenceOperators<T = any> = {
34
- $exists?: PartialOfType<T, boolean, any>;
35
- $type?: PartialOfType<T, string>;
42
+ $exists?: NestedValue<T, boolean>;
43
+ $type?: NestedValue<T, string>;
36
44
  };
37
45
  export type ArrayOperators<T = any> = {
38
- $arrinc?: PartialPickMatching<T, any[]>;
39
- $arrincall?: PartialPickMatching<T, any[]>;
40
- $size?: PartialOfType<T, number>;
46
+ $arrinc?: DeepPartial<T>;
47
+ $arrincall?: DeepPartial<T>;
48
+ $size?: NestedValue<T, number>;
41
49
  };
42
50
  export type StringOperators<T = any> = {
43
- $regex?: PartialOfType<T, RegExp | string, string>;
44
- $startsWith?: PartialOfType<T, string>;
45
- $endsWith?: PartialOfType<T, string>;
51
+ $regex?: NestedValue<T, RegExp | string, string>;
52
+ $startsWith?: NestedValue<T, string, string>;
53
+ $endsWith?: NestedValue<T, string, string>;
46
54
  };
47
55
  export type OtherOperators<T = any> = {
48
- $subset?: Partial<Record<keyof T, T[keyof T]>>;
56
+ $subset?: DeepPartial<T>;
49
57
  };
50
58
  export type PredefinedSearchOperators<T = any> = LogicalOperators<T> & ComparisonOperators<T> & TypeAndExistenceOperators<T> & ArrayOperators<T> & StringOperators<T> & OtherOperators<T>;
51
- export type SearchOptions<T = any> = PredefinedSearchOperators<T> & Arg<T>;
59
+ export type SearchOptions<T = any> = PredefinedSearchOperators<T> & DeepPartial<T> & Record<string, any>;
52
60
  export type ArrayUpdater<T = any> = {
53
- $push?: PartialOfType<T, any>;
54
- $pushset?: PartialOfType<T, any>;
55
- $pull?: PartialOfType<T, any>;
56
- $pullall?: PartialOfType<T, any>;
61
+ $push?: NestedValue<T, any>;
62
+ $pushset?: NestedValue<T, any>;
63
+ $pull?: NestedValue<T, any>;
64
+ $pullall?: NestedValue<T, any>;
57
65
  };
58
66
  export type ObjectUpdater<T = any> = {
59
- $merge?: PartialOfType<T, any>;
60
- $deepMerge?: PartialOfType<T, any>;
67
+ $merge?: NestedValue<T, any>;
68
+ $deepMerge?: NestedValue<T, any>;
61
69
  };
62
70
  export type ValueUpdater<T = any> = {
63
- $inc?: PartialOfType<T, number>;
64
- $dec?: PartialOfType<T, number>;
65
- $unset?: PartialOfType<T, any>;
66
- $rename?: PartialOfType<T, any>;
67
- $set?: PartialOfType<T, any>;
71
+ $inc?: NestedValue<T, number>;
72
+ $dec?: NestedValue<T, number>;
73
+ $unset?: NestedValue<T, any>;
74
+ $rename?: NestedValue<T, any>;
75
+ $set?: NestedValue<T, any>;
68
76
  };
69
- export type UpdaterArg<T = any> = ArrayUpdater<T> & ObjectUpdater<T> & ValueUpdater<T> & Arg<T>;
77
+ export type UpdaterArg<T = any> = ArrayUpdater<T> & ObjectUpdater<T> & ValueUpdater<T> & DeepPartial<T> & Record<string, any>;
70
78
  export type Arg<T = any> = {
71
79
  [K in keyof T]?: any;
72
80
  } & Record<string, any>;
@@ -76,7 +84,7 @@ export type Search<T = any> = SearchOptions<T> | SearchFunc<T>;
76
84
  export type Updater<T = any> = UpdaterArg<T> | UpdaterArg<T>[] | UpdaterFunc<T>;
77
85
  export interface DbFindOpts<T = any> {
78
86
  reverse?: boolean;
79
- max?: number;
87
+ limit?: number;
80
88
  offset?: number;
81
89
  sortBy?: KeysMatching<T, any>;
82
90
  sortAsc?: boolean;
@@ -91,14 +99,14 @@ declare class CollectionManager<D = Data> {
91
99
  private collection;
92
100
  constructor(db: ValtheraCompatible, collection: string);
93
101
  add<T = Data>(data: Arg<T & D>, id_gen?: boolean): Promise<T>;
94
- find<T = Data>(search?: Search<T & D>, options?: DbFindOpts<T & Data>, findOpts?: FindOpts<T & Data>, context?: VContext): Promise<T[]>;
95
- findOne<T = Data>(search?: Search<T & Data>, findOpts?: FindOpts<T & Data>, context?: VContext): Promise<T>;
96
- update<T = Data>(search: Search<T & Data>, updater: Updater<T & Data>, context?: VContext): Promise<boolean>;
97
- updateOne<T = Data>(search: Search<T & Data>, updater: Updater<T & Data>, context?: VContext): Promise<boolean>;
98
- remove<T = Data>(search: Search<T & Data>, context?: VContext): Promise<boolean>;
99
- removeOne<T = Data>(search: Search<T & Data>, context?: VContext): Promise<boolean>;
100
- updateOneOrAdd<T = Data>(search: Search<T & Data>, updater: Updater<T & Data>, { add_arg, context, id_gen }: UpdateOneOrAdd<T & Data>): Promise<boolean>;
101
- toggleOne<T = Data>(search: Search<T & Data>, data?: Arg<T & Data>, context?: VContext): Promise<boolean>;
102
+ find<T = Data>(search?: Search<T & D>, options?: DbFindOpts<T & D>, findOpts?: FindOpts<T & D>, context?: VContext): Promise<T[]>;
103
+ findOne<T = Data>(search?: Search<T & D>, findOpts?: FindOpts<T & D>, context?: VContext): Promise<T>;
104
+ update<T = Data>(search: Search<T & D>, updater: Updater<T & D>, context?: VContext): Promise<boolean>;
105
+ updateOne<T = Data>(search: Search<T & D>, updater: Updater<T & D>, context?: VContext): Promise<boolean>;
106
+ remove<T = Data>(search: Search<T & D>, context?: VContext): Promise<boolean>;
107
+ removeOne<T = Data>(search: Search<T & D>, context?: VContext): Promise<boolean>;
108
+ updateOneOrAdd<T = Data>(search: Search<T & D>, updater: Updater<T & D>, { add_arg, context, id_gen }: UpdateOneOrAdd<T & D>): Promise<boolean>;
109
+ toggleOne<T = Data>(search: Search<T & D>, data?: Arg<T & D>, context?: VContext): Promise<boolean>;
102
110
  }
103
111
  export interface ValtheraCompatible {
104
112
  c(collection: string): CollectionManager;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wxn0brp/vql-client",
3
- "version": "0.2.5",
3
+ "version": "0.2.7",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "description": "VQL Client",