@amaster.ai/entity-client 1.1.1 → 1.1.2

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,2 +1,2 @@
1
- 'use strict';var httpClient=require('@amaster.ai/http-client');function c(s){let e;if(s instanceof Date?e=s:typeof s=="string"?e=new Date(s):e=new Date(s),Number.isNaN(e.getTime()))return String(s);let o=e.getUTCFullYear(),r=String(e.getUTCMonth()+1).padStart(2,"0"),n=String(e.getUTCDate()).padStart(2,"0"),t=String(e.getUTCHours()).padStart(2,"0"),i=String(e.getUTCMinutes()).padStart(2,"0"),a=String(e.getUTCSeconds()).padStart(2,"0");return `${o}-${r}-${n} ${t}:${i}:${a}`}function g(s){if(s==null)return s;if(s instanceof Date)return c(s);if(Array.isArray(s))return s.map(e=>g(e));if(typeof s=="object"){let e={};for(let[o,r]of Object.entries(s))e[o]=g(r);return e}return typeof s=="string"&&/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}/.test(s)?c(s):s}function u(s,e,o=""){let r=`/api/entity/data/${s}/${e}`;return o?`${r}${o.startsWith("/")?o:`/${o}`}`:r}function d(s){if(!s||Object.keys(s).length===0)return "";let e=new URLSearchParams;for(let[r,n]of Object.entries(s))if(n!=null)if(r==="__filter"&&typeof n=="object")e.append(r,JSON.stringify(n));else if(r==="__relations"&&Array.isArray(n))for(let t of n)e.append("__relations[]",String(t));else if(r==="__fields"&&Array.isArray(n))n.forEach((t,i)=>{e.append(`__fields[${i}]`,String(t));});else if(r==="__keywords"&&typeof n=="object"&&!Array.isArray(n)){let t=n;if(t.fields&&t.fields.length>0&&t.value){let i=t.fields.join(",");e.append(`__keywords[${i}]`,t.value);}}else if(Array.isArray(n))for(let t of n)e.append(r,String(t));else if(typeof n=="object"&&!Array.isArray(n)){for(let[t,i]of Object.entries(n))if(i!=null)if(typeof i=="object"&&!Array.isArray(i))for(let[a,l]of Object.entries(i))l!=null&&e.append(`${r}[${t}][${a}]`,String(l));else Array.isArray(i)?i.forEach((a,l)=>{e.append(`${r}[${t}][${l}]`,String(a));}):e.append(`${r}[${t}]`,String(i));}else e.append(r,String(n));let o=e.toString();return o?`?${o}`:""}function p(s=httpClient.createHttpClient()){return {async list(e,o,r){let n=u(e,o)+d(r),t=await s.request({url:n,method:"get"});if(t.error||!t.data)return {data:{items:[],total:0},error:t.error,status:t.status};let i=Array.isArray(t.data.items)?t.data.items:[],a=t.data.total??t.data.count??i.length;return {...t,data:{items:i,total:a,page:t.data.page,perPage:t.data.perPage||t.data.pageSize}}},get(e,o,r){if(!r)return Promise.resolve({data:null,error:{message:"Entity ID is required",status:400},status:400});let n=u(e,o,`/${r}`);return s.request({url:n,method:"get"})},create(e,o,r){if(!r||typeof r!="object")return Promise.resolve({data:null,error:{message:"Entity data is required",status:400},status:400});let n=g(r),t=u(e,o);return s.request({url:t,method:"post",headers:{"Content-Type":"application/json"},data:n})},update(e,o,r,n){if(!r)return Promise.resolve({data:null,error:{message:"Entity ID is required",status:400},status:400});if(!n||typeof n!="object")return Promise.resolve({data:null,error:{message:"Entity data is required",status:400},status:400});let t=g(n),i=u(e,o,`/${r}`);return s.request({url:i,method:"put",headers:{"Content-Type":"application/json"},data:t})},async delete(e,o,r){if(!r)return {data:null,error:{message:"Entity ID is required",status:400},status:400};let n=u(e,o,`/${r}`),t=await s.request({url:n,method:"delete"});return t.status===204?{...t,data:null}:t},async options(e,o,r){let n=r&&r.length>0?{"__fields[]":r}:void 0,t=u(e,o,"/options")+d(n),i=await s.request({url:t,method:"get"});return i.error||!i.data?{data:null,error:i.error,status:i.status}:{...i,data:i.data.items||[]}},bulkUpdate(e,o,r){if(!r||r.length===0)return Promise.resolve({data:null,error:{message:"Items array is required",status:400},status:400});let n=r.map(i=>g(i)),t=u(e,o,"/bulkUpdate");return s.request({url:t,method:"post",headers:{"Content-Type":"application/json"},data:{items:n}})},async bulkDelete(e,o,r){if(!r||r.length===0)return {data:null,error:{message:"IDs array is required",status:400},status:400};let n=u(e,o,`/${r.join(",")}`),t=await s.request({url:n,method:"delete"});return t.status===204?{...t,data:null}:t}}}exports.createEntityClient=p;//# sourceMappingURL=index.cjs.map
1
+ 'use strict';var httpClient=require('@amaster.ai/http-client');function c(s){let t;if(s instanceof Date?t=s:typeof s=="string"?t=new Date(s):t=new Date(s),Number.isNaN(t.getTime()))return String(s);let o=t.getUTCFullYear(),r=String(t.getUTCMonth()+1).padStart(2,"0"),n=String(t.getUTCDate()).padStart(2,"0"),e=String(t.getUTCHours()).padStart(2,"0"),i=String(t.getUTCMinutes()).padStart(2,"0"),u=String(t.getUTCSeconds()).padStart(2,"0");return `${o}-${r}-${n} ${e}:${i}:${u}`}function g(s){if(s==null)return s;if(s instanceof Date)return c(s);if(Array.isArray(s))return s.map(t=>g(t));if(typeof s=="object"){let t={};for(let[o,r]of Object.entries(s))t[o]=g(r);return t}return typeof s=="string"&&/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}/.test(s)?c(s):s}function a(s,t,o=""){let r=`/api/entity/data/${s}/${t}`;return o?`${r}${o.startsWith("/")?o:`/${o}`}`:r}function d(s){if(!s||Object.keys(s).length===0)return "";let t=new URLSearchParams;for(let[r,n]of Object.entries(s))if(n!=null)if(r==="__filter"&&typeof n=="object")t.append(r,JSON.stringify(n));else if(r==="__relations"&&Array.isArray(n))for(let e of n)t.append("__relations[]",String(e));else if(r==="__fields"&&Array.isArray(n))n.forEach((e,i)=>{t.append(`__fields[${i}]`,String(e));});else if(r==="__keywords"&&typeof n=="object"&&!Array.isArray(n)){let e=n;if(e.fields&&e.fields.length>0&&e.value){let i=e.fields.join(",");t.append(`__keywords[${i}]`,e.value);}}else if(Array.isArray(n))for(let e of n)t.append(r,String(e));else if(typeof n=="object"&&!Array.isArray(n)){for(let[e,i]of Object.entries(n))if(i!=null)if(typeof i=="object"&&!Array.isArray(i))for(let[u,l]of Object.entries(i))l!=null&&t.append(`${r}[${e}][${u}]`,String(l));else Array.isArray(i)?i.forEach((u,l)=>{t.append(`${r}[${e}][${l}]`,String(u));}):t.append(`${r}[${e}]`,String(i));}else t.append(r,String(n));let o=t.toString();return o?`?${o}`:""}function p(s=httpClient.createHttpClient()){return {async list(t,o,r){let n=a(t,o)+d(r),e=await s.request({url:n,method:"get"});if(e.error||!e.data)return {data:{items:[],total:0},error:e.error,status:e.status};let i=Array.isArray(e.data.items)?e.data.items:[],u=e.data.total??e.data.count??i.length;return {...e,data:{items:i,total:u,page:e.data.page,perPage:e.data.perPage||e.data.pageSize}}},get(t,o,r){if(!r)return Promise.resolve({data:null,error:{message:"Entity ID is required",status:400},status:400});let n=a(t,o,`/${r}`);return s.request({url:n,method:"get"})},create(t,o,r){if(!r||typeof r!="object")return Promise.resolve({data:null,error:{message:"Entity data is required",status:400},status:400});let n=g(r),e=a(t,o);return s.request({url:e,method:"post",headers:{"Content-Type":"application/json"},data:n})},update(t,o,r,n){if(!r)return Promise.resolve({data:null,error:{message:"Entity ID is required",status:400},status:400});if(!n||typeof n!="object")return Promise.resolve({data:null,error:{message:"Entity data is required",status:400},status:400});let e=g(n),i=a(t,o,`/${r}`);return s.request({url:i,method:"put",headers:{"Content-Type":"application/json"},data:e})},async delete(t,o,r){if(!r)return {data:null,error:{message:"Entity ID is required",status:400},status:400};let n=a(t,o,`/${r}`),e=await s.request({url:n,method:"delete"});return e.status===204?{...e,data:null}:e},async options(t,o,r){let n=r&&r.length>0?{"__fields[]":r}:void 0,e=a(t,o,"/options")+d(n),i=await s.request({url:e,method:"get"});return i.error||!i.data?{data:null,error:i.error,status:i.status}:{...i,data:i.data.items||[]}},bulkUpdate(t,o,r){if(!r||r.length===0)return Promise.resolve({data:null,error:{message:"Items array is required",status:400},status:400});let n=r.map(i=>g(i)),e=a(t,o,"/bulkUpdate");return s.request({url:e,method:"post",headers:{"Content-Type":"application/json"},data:{items:n}})},async bulkDelete(t,o,r){if(!r||r.length===0)return {data:null,error:{message:"IDs array is required",status:400},status:400};let n=a(t,o,`/${r.join(",")}`),e=await s.request({url:n,method:"delete"});return e.status===204?{...e,data:null}:e}}}exports.createEntityClient=p;//# sourceMappingURL=index.cjs.map
2
2
  //# sourceMappingURL=index.cjs.map
package/dist/index.d.cts CHANGED
@@ -68,6 +68,16 @@ type KeywordsSearch = {
68
68
  fields: string[];
69
69
  value: string;
70
70
  };
71
+ /**
72
+ * Between filter value format
73
+ *
74
+ * @example
75
+ * { 'created_at[bt]': { from: '2024-01-01', to: '2024-12-31' } }
76
+ */
77
+ type BetweenValue = {
78
+ from?: string | number | Date;
79
+ to?: string | number | Date;
80
+ };
71
81
  /**
72
82
  * Entity query parameters
73
83
  *
@@ -173,4 +183,4 @@ type EntityClient = {
173
183
  };
174
184
  declare function createEntityClient(http?: HttpClient): EntityClient;
175
185
 
176
- export { type EntityClient, type EntityListResponse, type EntityQueryParams, type FilterGroup, type FilterItem, type FilterOperator, createEntityClient };
186
+ export { type AdvancedFilterOperator, type BetweenValue, type EntityClient, type EntityListResponse, type EntityQueryParams, type FilterGroup, type FilterItem, type FilterOperator, type KeywordsSearch, createEntityClient };
package/dist/index.d.ts CHANGED
@@ -68,6 +68,16 @@ type KeywordsSearch = {
68
68
  fields: string[];
69
69
  value: string;
70
70
  };
71
+ /**
72
+ * Between filter value format
73
+ *
74
+ * @example
75
+ * { 'created_at[bt]': { from: '2024-01-01', to: '2024-12-31' } }
76
+ */
77
+ type BetweenValue = {
78
+ from?: string | number | Date;
79
+ to?: string | number | Date;
80
+ };
71
81
  /**
72
82
  * Entity query parameters
73
83
  *
@@ -173,4 +183,4 @@ type EntityClient = {
173
183
  };
174
184
  declare function createEntityClient(http?: HttpClient): EntityClient;
175
185
 
176
- export { type EntityClient, type EntityListResponse, type EntityQueryParams, type FilterGroup, type FilterItem, type FilterOperator, createEntityClient };
186
+ export { type AdvancedFilterOperator, type BetweenValue, type EntityClient, type EntityListResponse, type EntityQueryParams, type FilterGroup, type FilterItem, type FilterOperator, type KeywordsSearch, createEntityClient };
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import {createHttpClient}from'@amaster.ai/http-client';function c(s){let e;if(s instanceof Date?e=s:typeof s=="string"?e=new Date(s):e=new Date(s),Number.isNaN(e.getTime()))return String(s);let o=e.getUTCFullYear(),r=String(e.getUTCMonth()+1).padStart(2,"0"),n=String(e.getUTCDate()).padStart(2,"0"),t=String(e.getUTCHours()).padStart(2,"0"),i=String(e.getUTCMinutes()).padStart(2,"0"),a=String(e.getUTCSeconds()).padStart(2,"0");return `${o}-${r}-${n} ${t}:${i}:${a}`}function g(s){if(s==null)return s;if(s instanceof Date)return c(s);if(Array.isArray(s))return s.map(e=>g(e));if(typeof s=="object"){let e={};for(let[o,r]of Object.entries(s))e[o]=g(r);return e}return typeof s=="string"&&/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}/.test(s)?c(s):s}function u(s,e,o=""){let r=`/api/entity/data/${s}/${e}`;return o?`${r}${o.startsWith("/")?o:`/${o}`}`:r}function d(s){if(!s||Object.keys(s).length===0)return "";let e=new URLSearchParams;for(let[r,n]of Object.entries(s))if(n!=null)if(r==="__filter"&&typeof n=="object")e.append(r,JSON.stringify(n));else if(r==="__relations"&&Array.isArray(n))for(let t of n)e.append("__relations[]",String(t));else if(r==="__fields"&&Array.isArray(n))n.forEach((t,i)=>{e.append(`__fields[${i}]`,String(t));});else if(r==="__keywords"&&typeof n=="object"&&!Array.isArray(n)){let t=n;if(t.fields&&t.fields.length>0&&t.value){let i=t.fields.join(",");e.append(`__keywords[${i}]`,t.value);}}else if(Array.isArray(n))for(let t of n)e.append(r,String(t));else if(typeof n=="object"&&!Array.isArray(n)){for(let[t,i]of Object.entries(n))if(i!=null)if(typeof i=="object"&&!Array.isArray(i))for(let[a,l]of Object.entries(i))l!=null&&e.append(`${r}[${t}][${a}]`,String(l));else Array.isArray(i)?i.forEach((a,l)=>{e.append(`${r}[${t}][${l}]`,String(a));}):e.append(`${r}[${t}]`,String(i));}else e.append(r,String(n));let o=e.toString();return o?`?${o}`:""}function p(s=createHttpClient()){return {async list(e,o,r){let n=u(e,o)+d(r),t=await s.request({url:n,method:"get"});if(t.error||!t.data)return {data:{items:[],total:0},error:t.error,status:t.status};let i=Array.isArray(t.data.items)?t.data.items:[],a=t.data.total??t.data.count??i.length;return {...t,data:{items:i,total:a,page:t.data.page,perPage:t.data.perPage||t.data.pageSize}}},get(e,o,r){if(!r)return Promise.resolve({data:null,error:{message:"Entity ID is required",status:400},status:400});let n=u(e,o,`/${r}`);return s.request({url:n,method:"get"})},create(e,o,r){if(!r||typeof r!="object")return Promise.resolve({data:null,error:{message:"Entity data is required",status:400},status:400});let n=g(r),t=u(e,o);return s.request({url:t,method:"post",headers:{"Content-Type":"application/json"},data:n})},update(e,o,r,n){if(!r)return Promise.resolve({data:null,error:{message:"Entity ID is required",status:400},status:400});if(!n||typeof n!="object")return Promise.resolve({data:null,error:{message:"Entity data is required",status:400},status:400});let t=g(n),i=u(e,o,`/${r}`);return s.request({url:i,method:"put",headers:{"Content-Type":"application/json"},data:t})},async delete(e,o,r){if(!r)return {data:null,error:{message:"Entity ID is required",status:400},status:400};let n=u(e,o,`/${r}`),t=await s.request({url:n,method:"delete"});return t.status===204?{...t,data:null}:t},async options(e,o,r){let n=r&&r.length>0?{"__fields[]":r}:void 0,t=u(e,o,"/options")+d(n),i=await s.request({url:t,method:"get"});return i.error||!i.data?{data:null,error:i.error,status:i.status}:{...i,data:i.data.items||[]}},bulkUpdate(e,o,r){if(!r||r.length===0)return Promise.resolve({data:null,error:{message:"Items array is required",status:400},status:400});let n=r.map(i=>g(i)),t=u(e,o,"/bulkUpdate");return s.request({url:t,method:"post",headers:{"Content-Type":"application/json"},data:{items:n}})},async bulkDelete(e,o,r){if(!r||r.length===0)return {data:null,error:{message:"IDs array is required",status:400},status:400};let n=u(e,o,`/${r.join(",")}`),t=await s.request({url:n,method:"delete"});return t.status===204?{...t,data:null}:t}}}export{p as createEntityClient};//# sourceMappingURL=index.js.map
1
+ import {createHttpClient}from'@amaster.ai/http-client';function c(s){let t;if(s instanceof Date?t=s:typeof s=="string"?t=new Date(s):t=new Date(s),Number.isNaN(t.getTime()))return String(s);let o=t.getUTCFullYear(),r=String(t.getUTCMonth()+1).padStart(2,"0"),n=String(t.getUTCDate()).padStart(2,"0"),e=String(t.getUTCHours()).padStart(2,"0"),i=String(t.getUTCMinutes()).padStart(2,"0"),u=String(t.getUTCSeconds()).padStart(2,"0");return `${o}-${r}-${n} ${e}:${i}:${u}`}function g(s){if(s==null)return s;if(s instanceof Date)return c(s);if(Array.isArray(s))return s.map(t=>g(t));if(typeof s=="object"){let t={};for(let[o,r]of Object.entries(s))t[o]=g(r);return t}return typeof s=="string"&&/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}/.test(s)?c(s):s}function a(s,t,o=""){let r=`/api/entity/data/${s}/${t}`;return o?`${r}${o.startsWith("/")?o:`/${o}`}`:r}function d(s){if(!s||Object.keys(s).length===0)return "";let t=new URLSearchParams;for(let[r,n]of Object.entries(s))if(n!=null)if(r==="__filter"&&typeof n=="object")t.append(r,JSON.stringify(n));else if(r==="__relations"&&Array.isArray(n))for(let e of n)t.append("__relations[]",String(e));else if(r==="__fields"&&Array.isArray(n))n.forEach((e,i)=>{t.append(`__fields[${i}]`,String(e));});else if(r==="__keywords"&&typeof n=="object"&&!Array.isArray(n)){let e=n;if(e.fields&&e.fields.length>0&&e.value){let i=e.fields.join(",");t.append(`__keywords[${i}]`,e.value);}}else if(Array.isArray(n))for(let e of n)t.append(r,String(e));else if(typeof n=="object"&&!Array.isArray(n)){for(let[e,i]of Object.entries(n))if(i!=null)if(typeof i=="object"&&!Array.isArray(i))for(let[u,l]of Object.entries(i))l!=null&&t.append(`${r}[${e}][${u}]`,String(l));else Array.isArray(i)?i.forEach((u,l)=>{t.append(`${r}[${e}][${l}]`,String(u));}):t.append(`${r}[${e}]`,String(i));}else t.append(r,String(n));let o=t.toString();return o?`?${o}`:""}function p(s=createHttpClient()){return {async list(t,o,r){let n=a(t,o)+d(r),e=await s.request({url:n,method:"get"});if(e.error||!e.data)return {data:{items:[],total:0},error:e.error,status:e.status};let i=Array.isArray(e.data.items)?e.data.items:[],u=e.data.total??e.data.count??i.length;return {...e,data:{items:i,total:u,page:e.data.page,perPage:e.data.perPage||e.data.pageSize}}},get(t,o,r){if(!r)return Promise.resolve({data:null,error:{message:"Entity ID is required",status:400},status:400});let n=a(t,o,`/${r}`);return s.request({url:n,method:"get"})},create(t,o,r){if(!r||typeof r!="object")return Promise.resolve({data:null,error:{message:"Entity data is required",status:400},status:400});let n=g(r),e=a(t,o);return s.request({url:e,method:"post",headers:{"Content-Type":"application/json"},data:n})},update(t,o,r,n){if(!r)return Promise.resolve({data:null,error:{message:"Entity ID is required",status:400},status:400});if(!n||typeof n!="object")return Promise.resolve({data:null,error:{message:"Entity data is required",status:400},status:400});let e=g(n),i=a(t,o,`/${r}`);return s.request({url:i,method:"put",headers:{"Content-Type":"application/json"},data:e})},async delete(t,o,r){if(!r)return {data:null,error:{message:"Entity ID is required",status:400},status:400};let n=a(t,o,`/${r}`),e=await s.request({url:n,method:"delete"});return e.status===204?{...e,data:null}:e},async options(t,o,r){let n=r&&r.length>0?{"__fields[]":r}:void 0,e=a(t,o,"/options")+d(n),i=await s.request({url:e,method:"get"});return i.error||!i.data?{data:null,error:i.error,status:i.status}:{...i,data:i.data.items||[]}},bulkUpdate(t,o,r){if(!r||r.length===0)return Promise.resolve({data:null,error:{message:"Items array is required",status:400},status:400});let n=r.map(i=>g(i)),e=a(t,o,"/bulkUpdate");return s.request({url:e,method:"post",headers:{"Content-Type":"application/json"},data:{items:n}})},async bulkDelete(t,o,r){if(!r||r.length===0)return {data:null,error:{message:"IDs array is required",status:400},status:400};let n=a(t,o,`/${r.join(",")}`),e=await s.request({url:n,method:"delete"});return e.status===204?{...e,data:null}:e}}}export{p as createEntityClient};//# sourceMappingURL=index.js.map
2
2
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@amaster.ai/entity-client",
3
- "version": "1.1.1",
3
+ "version": "1.1.2",
4
4
  "description": "Type-safe CRUD client for entity data management",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -31,7 +31,7 @@
31
31
  "registry": "https://registry.npmjs.org/"
32
32
  },
33
33
  "dependencies": {
34
- "@amaster.ai/http-client": "1.1.1"
34
+ "@amaster.ai/http-client": "1.1.2"
35
35
  },
36
36
  "peerDependencies": {
37
37
  "axios": "^1.11.0"