@ram_28/kf-ai-sdk 2.0.20-beta.1 → 2.0.20

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 (94) hide show
  1. package/README.md +16 -8
  2. package/dist/api.cjs +1 -1
  3. package/dist/api.mjs +1 -1
  4. package/dist/auth/authConfig.d.ts +1 -1
  5. package/dist/auth/types.d.ts +1 -1
  6. package/dist/auth/types.d.ts.map +1 -1
  7. package/dist/auth.cjs +1 -1
  8. package/dist/auth.mjs +1 -1
  9. package/dist/bdo/core/Item.d.ts.map +1 -1
  10. package/dist/bdo.cjs +1 -1
  11. package/dist/bdo.mjs +297 -276
  12. package/dist/components/hooks/useActivityForm/types.d.ts +4 -5
  13. package/dist/components/hooks/useActivityForm/types.d.ts.map +1 -1
  14. package/dist/components/hooks/useActivityForm/useActivityForm.d.ts.map +1 -1
  15. package/dist/components/hooks/useActivityTable/types.d.ts +5 -4
  16. package/dist/components/hooks/useActivityTable/types.d.ts.map +1 -1
  17. package/dist/components/hooks/useActivityTable/useActivityTable.d.ts.map +1 -1
  18. package/dist/components/hooks/useBDOForm/createItemProxy.d.ts +2 -2
  19. package/dist/components/hooks/useBDOForm/createItemProxy.d.ts.map +1 -1
  20. package/dist/components/hooks/useBDOTable/types.d.ts +20 -12
  21. package/dist/components/hooks/useBDOTable/types.d.ts.map +1 -1
  22. package/dist/components/hooks/useBDOTable/useBDOTable.d.ts +2 -2
  23. package/dist/components/hooks/useBDOTable/useBDOTable.d.ts.map +1 -1
  24. package/dist/{constants-ConHc1oS.js → constants-Cyi942Yr.js} +5 -5
  25. package/dist/constants-DEmYwKfC.cjs +1 -0
  26. package/dist/filter.cjs +1 -1
  27. package/dist/filter.mjs +1 -1
  28. package/dist/form.cjs +1 -1
  29. package/dist/form.mjs +1 -1
  30. package/dist/table.cjs +1 -1
  31. package/dist/table.mjs +15 -16
  32. package/dist/table.types.d.ts +1 -1
  33. package/dist/table.types.d.ts.map +1 -1
  34. package/dist/types/constants.d.ts +1 -1
  35. package/dist/workflow/Activity.d.ts +8 -5
  36. package/dist/workflow/Activity.d.ts.map +1 -1
  37. package/dist/workflow.cjs +1 -1
  38. package/dist/workflow.mjs +461 -476
  39. package/docs/README.md +57 -0
  40. package/docs/bdo/README.md +161 -0
  41. package/docs/bdo/api_reference.md +281 -0
  42. package/docs/examples/bdo/create-product.md +69 -0
  43. package/docs/examples/bdo/edit-product-dialog.md +95 -0
  44. package/docs/examples/bdo/filtered-product-table.md +100 -0
  45. package/docs/examples/bdo/product-listing.md +73 -0
  46. package/docs/examples/bdo/supplier-dropdown.md +60 -0
  47. package/docs/examples/fields/complex-fields.md +248 -0
  48. package/docs/examples/fields/primitive-fields.md +217 -0
  49. package/docs/examples/workflow/approve-leave-request.md +76 -0
  50. package/docs/examples/workflow/filtered-activity-table.md +101 -0
  51. package/docs/examples/workflow/my-pending-requests.md +90 -0
  52. package/docs/examples/workflow/start-new-workflow.md +47 -0
  53. package/docs/examples/workflow/submit-leave-request.md +72 -0
  54. package/docs/examples/workflow/workflow-progress.md +49 -0
  55. package/docs/fields/README.md +141 -0
  56. package/docs/fields/api_reference.md +134 -0
  57. package/docs/useActivityForm/README.md +244 -0
  58. package/docs/useActivityForm/api_reference.md +279 -0
  59. package/docs/useActivityTable/README.md +263 -0
  60. package/docs/useActivityTable/api_reference.md +294 -0
  61. package/docs/useBDOForm/README.md +175 -0
  62. package/docs/useBDOForm/api_reference.md +244 -0
  63. package/docs/useBDOTable/README.md +242 -0
  64. package/docs/useBDOTable/api_reference.md +253 -0
  65. package/docs/useFilter/README.md +323 -0
  66. package/docs/useFilter/api_reference.md +228 -0
  67. package/docs/workflow/README.md +158 -0
  68. package/docs/workflow/api_reference.md +161 -0
  69. package/package.json +15 -14
  70. package/sdk/auth/authConfig.ts +1 -1
  71. package/sdk/auth/types.ts +1 -1
  72. package/sdk/bdo/core/Item.ts +2 -1
  73. package/sdk/bdo/expressions/evaluator.ts +55 -9
  74. package/sdk/components/hooks/useActivityForm/types.ts +4 -6
  75. package/sdk/components/hooks/useActivityForm/useActivityForm.ts +10 -73
  76. package/sdk/components/hooks/useActivityTable/types.ts +4 -5
  77. package/sdk/components/hooks/useActivityTable/useActivityTable.ts +10 -8
  78. package/sdk/components/hooks/useBDOForm/createItemProxy.ts +9 -5
  79. package/sdk/components/hooks/useBDOTable/types.ts +20 -10
  80. package/sdk/components/hooks/useBDOTable/useBDOTable.ts +12 -8
  81. package/sdk/table.types.ts +2 -0
  82. package/sdk/types/constants.ts +1 -1
  83. package/sdk/workflow/Activity.ts +39 -7
  84. package/dist/constants-QX2RX-wu.cjs +0 -1
  85. package/docs/api.md +0 -95
  86. package/docs/bdo.md +0 -224
  87. package/docs/gaps.md +0 -360
  88. package/docs/useActivityForm.md +0 -393
  89. package/docs/useActivityTable.md +0 -418
  90. package/docs/useBDOForm.md +0 -498
  91. package/docs/useBDOTable.md +0 -284
  92. package/docs/useFilter.md +0 -188
  93. package/docs/workflow.md +0 -560
  94. /package/docs/{useAuth.md → useAuth/README.md} +0 -0
package/README.md CHANGED
@@ -461,14 +461,22 @@ cn("text-red-500", condition && "text-blue-500");
461
461
 
462
462
  ## Documentation
463
463
 
464
- Detailed documentation for each feature:
465
-
466
- - [useBDOTable Documentation](./docs/useBDOTable.md)
467
- - [useActivityTable Documentation](./docs/useActivityTable.md)
468
- - [useFilter Documentation](./docs/useFilter.md)
469
- - [useBDOForm Documentation](./docs/useBDOForm.md)
470
- - [useAuth Documentation](./docs/useAuth.md)
471
- - [API Documentation](./docs/api.md)
464
+ Detailed, use-case-driven documentation with examples for each module:
465
+
466
+ **Hooks:**
467
+ - [useBDOForm](./docs/useBDOForm/README.md) — BDO-integrated forms with validation and API submission
468
+ - [useBDOTable](./docs/useBDOTable/README.md) — Data tables with sorting, search, filtering, and pagination
469
+ - [useActivityForm](./docs/useActivityForm/README.md) — Workflow activity forms with save-draft and complete
470
+ - [useActivityTable](./docs/useActivityTable/README.md) — Activity instance tables for workflow tasks
471
+ - [useFilter](./docs/useFilter/README.md) — Filter condition builder with nested groups
472
+
473
+ **Core:**
474
+ - [BDO](./docs/bdo/README.md) — Type-safe, role-based data access layer
475
+ - [Workflow](./docs/workflow/README.md) — Business process orchestration
476
+ - [API Client](./docs/api/README.md) — Low-level CRUD, metric, pivot, draft, and attachment operations
477
+
478
+ **Auth:**
479
+ - [useAuth](./docs/useAuth/README.md) — Cookie-based authentication with session management
472
480
 
473
481
  ## Requirements
474
482
 
package/dist/api.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("./client-D5k4SYuw.cjs"),u=require("./metadata-DWXQPDav.cjs"),o=require("./constants-QX2RX-wu.cjs"),p={DATE:"%Y-%m-%d",TIME:"%H:%M:%S",DATE_TIME:"%Y-%m-%d %H:%M:%S"};function D(t){const[e,a,r]=t.$__d__.split("-").map(Number);return new Date(e,a-1,r)}function g(t){return new Date(t.$__dt__*1e3)}function l(t){const e=t.getFullYear(),a=String(t.getMonth()+1).padStart(2,"0"),r=String(t.getDate()).padStart(2,"0");return`${e}-${a}-${r}`}function S(t){const e=t.getFullYear(),a=String(t.getMonth()+1).padStart(2,"0"),r=String(t.getDate()).padStart(2,"0"),s=String(t.getHours()).padStart(2,"0"),i=String(t.getMinutes()).padStart(2,"0"),c=String(t.getSeconds()).padStart(2,"0");return`${e}-${a}-${r} ${s}:${i}:${c}`}function y(t){const[e,a,r]=t.split("-").map(Number);return new Date(e,a-1,r)}function f(t){const[e,a]=t.split(" "),[r,s,i]=e.split("-").map(Number),[c,d,m]=a.split(":").map(Number);return new Date(r,s-1,i,c,d,m)}exports.api=n.api;exports.getApiBaseUrl=n.getApiBaseUrl;exports.getDefaultHeaders=n.getDefaultHeaders;exports.setApiBaseUrl=n.setApiBaseUrl;exports.setDefaultHeaders=n.setDefaultHeaders;exports.getBdoSchema=u.getBdoSchema;exports.listMetadata=u.listMetadata;exports.DateEncodingKey=o.DateEncodingKey;exports.DeleteStatus=o.DeleteStatus;exports.HttpMethod=o.HttpMethod;exports.MetricType=o.MetricType;exports.QueryType=o.QueryType;exports.DatetimeFormat=p;exports.decodeDate=D;exports.decodeDateTime=g;exports.formatDate=l;exports.formatDateTime=S;exports.parseDate=y;exports.parseDateTime=f;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("./client-D5k4SYuw.cjs"),u=require("./metadata-DWXQPDav.cjs"),o=require("./constants-DEmYwKfC.cjs"),p={DATE:"%Y-%m-%d",TIME:"%H:%M:%S",DATE_TIME:"%Y-%m-%d %H:%M:%S"};function D(t){const[e,a,r]=t.$__d__.split("-").map(Number);return new Date(e,a-1,r)}function g(t){return new Date(t.$__dt__*1e3)}function l(t){const e=t.getFullYear(),a=String(t.getMonth()+1).padStart(2,"0"),r=String(t.getDate()).padStart(2,"0");return`${e}-${a}-${r}`}function S(t){const e=t.getFullYear(),a=String(t.getMonth()+1).padStart(2,"0"),r=String(t.getDate()).padStart(2,"0"),s=String(t.getHours()).padStart(2,"0"),i=String(t.getMinutes()).padStart(2,"0"),c=String(t.getSeconds()).padStart(2,"0");return`${e}-${a}-${r} ${s}:${i}:${c}`}function y(t){const[e,a,r]=t.split("-").map(Number);return new Date(e,a-1,r)}function f(t){const[e,a]=t.split(" "),[r,s,i]=e.split("-").map(Number),[c,d,m]=a.split(":").map(Number);return new Date(r,s-1,i,c,d,m)}exports.api=n.api;exports.getApiBaseUrl=n.getApiBaseUrl;exports.getDefaultHeaders=n.getDefaultHeaders;exports.setApiBaseUrl=n.setApiBaseUrl;exports.setDefaultHeaders=n.setDefaultHeaders;exports.getBdoSchema=u.getBdoSchema;exports.listMetadata=u.listMetadata;exports.DateEncodingKey=o.DateEncodingKey;exports.DeleteStatus=o.DeleteStatus;exports.HttpMethod=o.HttpMethod;exports.MetricType=o.MetricType;exports.QueryType=o.QueryType;exports.DatetimeFormat=p;exports.decodeDate=D;exports.decodeDateTime=g;exports.formatDate=l;exports.formatDateTime=S;exports.parseDate=y;exports.parseDateTime=f;
package/dist/api.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  import { a as f, c as h, g as M, s as $, b as T } from "./client-_ayziI1d.js";
2
2
  import { g as H, l as b } from "./metadata-Cc1mBcLS.js";
3
- import { a as w, b as x, H as A, M as N, Q as Y } from "./constants-ConHc1oS.js";
3
+ import { a as w, b as x, H as A, M as N, Q as Y } from "./constants-Cyi942Yr.js";
4
4
  const m = {
5
5
  /** Date format: "YYYY-MM-DD" */
6
6
  DATE: "%Y-%m-%d",
@@ -8,7 +8,7 @@ import type { AuthConfigType, AuthProviderNameType, AuthEndpointConfigType } fro
8
8
  * autoRedirect: true,
9
9
  * providers: {
10
10
  * google: { loginPath: "/api/auth/google/login" },
11
- * microsoft: { loginPath: "/api/auth/microsoft/login" },
11
+ * azure: { loginPath: "/api/auth/azure/login" },
12
12
  * },
13
13
  * });
14
14
  * ```
@@ -22,7 +22,7 @@ export type AuthStatusType = "loading" | "authenticated" | "unauthenticated";
22
22
  /**
23
23
  * Authentication provider type (extensible for multiple OAuth providers)
24
24
  */
25
- export type AuthProviderNameType = "google" | "microsoft" | "github" | "azure" | "custom";
25
+ export type AuthProviderNameType = "google" | "azure" | "github" | "custom";
26
26
  /**
27
27
  * Auth endpoint configuration for a specific provider
28
28
  */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../sdk/auth/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../sdk/auth/types.ts"],"names":[],"mappings":"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"}
package/dist/auth.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";var J=Object.defineProperty;var X=(e,t,o)=>t in e?J(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o;var Q=(e,t,o)=>X(e,typeof t!="symbol"?t+"":t,o);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const y=require("react/jsx-runtime"),n=require("react"),M=require("@tanstack/react-query"),K=require("./client-D5k4SYuw.cjs"),W=require("./constants-QX2RX-wu.cjs"),Y={sessionEndpoint:"/api/id",providers:{google:{loginPath:"/api/auth/google/login",logoutPath:"/api/auth/logout"}},defaultProvider:"google",autoRedirect:!1,sessionCheckInterval:0,retry:{count:3,delay:1e3},staleTime:5*60*1e3,refetchOnWindowFocus:!1,refetchOnReconnect:!0};let h={...Y};function G(e){h={...h,...e,providers:{...h.providers,...e.providers},retry:{...h.retry,...e.retry}}}function Z(e,t){h.providers[e]=t}function b(){return{...h}}function k(){return h.baseUrl||K.getApiBaseUrl()||(typeof window<"u"?window.location.origin:"")}function H(e){return h.providers[e]}function D(){h={...Y}}class m extends Error{constructor(o,r){super(o);Q(this,"statusCode");this.name="AuthenticationError",this.statusCode=r}}async function ee(){const e=b(),t=k(),o=K.getDefaultHeaders(),r=await fetch(`${t}${e.sessionEndpoint}`,{method:"GET",headers:o,credentials:"include"});if(!r.ok)throw r.status===401||r.status===403?new m("Not authenticated",r.status):new m(`Session check failed: ${r.statusText}`,r.status);return await r.json()}function N(e,t){return new Promise(()=>{const o=b(),r=k();if(!r)throw new Error('Auth base URL is not configured. Call setApiBaseUrl("https://...") or configureAuth({ baseUrl: "https://..." }) first.');const i=e||o.defaultProvider,l=H(i);if(!l){const A=Object.keys(o.providers||{}).join(", ")||"none";throw new Error(`Auth provider "${i}" is not configured. Available providers: ${A}`)}if(!l.loginPath)throw new Error(`Login path not configured for provider "${i}". Configure it with: configureAuth({ providers: { ${i}: { loginPath: '/api/auth/...' } } })`);let g;try{g=new URL(`${r}${l.loginPath}`)}catch{throw new Error(`Failed to construct login URL. Base URL: "${r}", Login path: "${l.loginPath}". Ensure baseUrl is a valid URL (e.g., "https://example.com").`)}(t!=null&&t.callbackUrl||o.callbackUrl)&&g.searchParams.set("callbackUrl",(t==null?void 0:t.callbackUrl)||o.callbackUrl||window.location.href),t!=null&&t.params&&Object.entries(t.params).forEach(([A,v])=>{g.searchParams.set(A,v)}),window.open(g.toString(),"_blank")})}async function te(e){const t=b(),o=k(),r=H(t.defaultProvider),i=r==null?void 0:r.logoutPath;if(i&&(e==null?void 0:e.callLogoutEndpoint)!==!1)try{await fetch(`${o}${i}`)}catch(l){console.warn("Logout endpoint call failed:",l)}e!=null&&e.redirectUrl?window.location.href=e.redirectUrl:t.loginRedirectUrl&&(window.location.href=t.loginRedirectUrl)}const V=n.createContext(null),_=["auth","session"];function re({children:e,config:t,onAuthChange:o,onError:r,loadingComponent:i,unauthenticatedComponent:l,skipInitialCheck:g=!1}){const A=n.useRef(!1);t&&!A.current&&(G(t),A.current=!0);const v=M.useQueryClient(),c=b(),{data:u,isLoading:f,error:U,refetch:R,isFetching:C}=M.useQuery({queryKey:_,queryFn:ee,enabled:!g,retry:(s,w)=>w instanceof m&&(w.statusCode===401||w.statusCode===403)?!1:s<c.retry.count,retryDelay:c.retry.delay,staleTime:c.staleTime,gcTime:c.staleTime*2,refetchOnWindowFocus:c.refetchOnWindowFocus??!0,refetchOnReconnect:c.refetchOnReconnect??!0,refetchInterval:c.sessionCheckInterval||!1}),[S,L]=n.useState(null),d=n.useMemo(()=>f||C?"loading":Object.keys((u==null?void 0:u.userDetails)||{}).length>0?"authenticated":"unauthenticated",[f,C,u]),a=(u==null?void 0:u.userDetails)||null,x=(u==null?void 0:u.staticBaseUrl)||null,$=(u==null?void 0:u.buildId)||null,j=d==="authenticated",P=n.useRef(o);P.current=o;const E=n.useRef(r);E.current=r,n.useEffect(()=>{var s;f||(s=P.current)==null||s.call(P,d,a)},[d,a,f]),n.useEffect(()=>{var s;U&&(L(U),(s=E.current)==null||s.call(E,U))},[U]),n.useEffect(()=>{d==="unauthenticated"&&c.autoRedirect&&!f&&N()},[d,f,c.autoRedirect]);const p=n.useCallback((s,w)=>{N(s,w)},[]),q=n.useCallback(async s=>{v.removeQueries({queryKey:_}),await te(s)},[v]),B=n.useCallback(async()=>{if(C)return u||null;try{return(await R()).data||null}catch(s){return L(s),null}},[R,C,u]),O=n.useCallback(s=>(a==null?void 0:a.Role)===s,[a]),I=n.useCallback(s=>s.includes((a==null?void 0:a.Role)||""),[a]),F=n.useCallback(()=>{L(null)},[]),T=n.useCallback(()=>{R()},[R]),z=n.useMemo(()=>({user:a,staticBaseUrl:x,buildId:$,status:d,isAuthenticated:j,isLoading:f,login:p,logout:q,refreshSession:B,hasRole:O,hasAnyRole:I,error:S,clearError:F,_forceCheck:T}),[a,x,$,d,j,f,p,q,B,O,I,S,F,T]);return d==="loading"&&i?y.jsx(y.Fragment,{children:i}):d==="unauthenticated"&&!c.autoRedirect&&l?y.jsx(y.Fragment,{children:l}):y.jsx(V.Provider,{value:z,children:e})}function ne(){const e=n.useContext(V);if(!e)throw new Error("useAuth must be used within an AuthProvider");return e}function oe(){const e=ne();return n.useMemo(()=>({user:e.user,staticBaseUrl:e.staticBaseUrl,buildId:e.buildId,status:e.status,isAuthenticated:e.isAuthenticated,isLoading:e.isLoading,login:e.login,logout:e.logout,refreshSession:e.refreshSession,hasRole:e.hasRole,hasAnyRole:e.hasAnyRole,error:e.error,clearError:e.clearError}),[e.user,e.staticBaseUrl,e.buildId,e.status,e.isAuthenticated,e.isLoading,e.login,e.logout,e.refreshSession,e.hasRole,e.hasAnyRole,e.error,e.clearError])}exports.AuthProviderName=W.AuthProviderName;exports.AuthStatus=W.AuthStatus;exports.AuthProvider=re;exports.AuthenticationError=m;exports.configureAuth=G;exports.getAuthBaseUrl=k;exports.getAuthConfig=b;exports.resetAuthConfig=D;exports.setAuthProvider=Z;exports.useAuth=oe;
1
+ "use strict";var J=Object.defineProperty;var X=(e,t,o)=>t in e?J(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o;var Q=(e,t,o)=>X(e,typeof t!="symbol"?t+"":t,o);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const y=require("react/jsx-runtime"),n=require("react"),M=require("@tanstack/react-query"),K=require("./client-D5k4SYuw.cjs"),W=require("./constants-DEmYwKfC.cjs"),Y={sessionEndpoint:"/api/id",providers:{google:{loginPath:"/api/auth/google/login",logoutPath:"/api/auth/logout"}},defaultProvider:"google",autoRedirect:!1,sessionCheckInterval:0,retry:{count:3,delay:1e3},staleTime:5*60*1e3,refetchOnWindowFocus:!1,refetchOnReconnect:!0};let h={...Y};function G(e){h={...h,...e,providers:{...h.providers,...e.providers},retry:{...h.retry,...e.retry}}}function Z(e,t){h.providers[e]=t}function b(){return{...h}}function k(){return h.baseUrl||K.getApiBaseUrl()||(typeof window<"u"?window.location.origin:"")}function H(e){return h.providers[e]}function D(){h={...Y}}class m extends Error{constructor(o,r){super(o);Q(this,"statusCode");this.name="AuthenticationError",this.statusCode=r}}async function ee(){const e=b(),t=k(),o=K.getDefaultHeaders(),r=await fetch(`${t}${e.sessionEndpoint}`,{method:"GET",headers:o,credentials:"include"});if(!r.ok)throw r.status===401||r.status===403?new m("Not authenticated",r.status):new m(`Session check failed: ${r.statusText}`,r.status);return await r.json()}function N(e,t){return new Promise(()=>{const o=b(),r=k();if(!r)throw new Error('Auth base URL is not configured. Call setApiBaseUrl("https://...") or configureAuth({ baseUrl: "https://..." }) first.');const i=e||o.defaultProvider,l=H(i);if(!l){const A=Object.keys(o.providers||{}).join(", ")||"none";throw new Error(`Auth provider "${i}" is not configured. Available providers: ${A}`)}if(!l.loginPath)throw new Error(`Login path not configured for provider "${i}". Configure it with: configureAuth({ providers: { ${i}: { loginPath: '/api/auth/...' } } })`);let g;try{g=new URL(`${r}${l.loginPath}`)}catch{throw new Error(`Failed to construct login URL. Base URL: "${r}", Login path: "${l.loginPath}". Ensure baseUrl is a valid URL (e.g., "https://example.com").`)}(t!=null&&t.callbackUrl||o.callbackUrl)&&g.searchParams.set("callbackUrl",(t==null?void 0:t.callbackUrl)||o.callbackUrl||window.location.href),t!=null&&t.params&&Object.entries(t.params).forEach(([A,v])=>{g.searchParams.set(A,v)}),window.open(g.toString(),"_blank")})}async function te(e){const t=b(),o=k(),r=H(t.defaultProvider),i=r==null?void 0:r.logoutPath;if(i&&(e==null?void 0:e.callLogoutEndpoint)!==!1)try{await fetch(`${o}${i}`)}catch(l){console.warn("Logout endpoint call failed:",l)}e!=null&&e.redirectUrl?window.location.href=e.redirectUrl:t.loginRedirectUrl&&(window.location.href=t.loginRedirectUrl)}const V=n.createContext(null),_=["auth","session"];function re({children:e,config:t,onAuthChange:o,onError:r,loadingComponent:i,unauthenticatedComponent:l,skipInitialCheck:g=!1}){const A=n.useRef(!1);t&&!A.current&&(G(t),A.current=!0);const v=M.useQueryClient(),c=b(),{data:u,isLoading:f,error:U,refetch:R,isFetching:C}=M.useQuery({queryKey:_,queryFn:ee,enabled:!g,retry:(s,w)=>w instanceof m&&(w.statusCode===401||w.statusCode===403)?!1:s<c.retry.count,retryDelay:c.retry.delay,staleTime:c.staleTime,gcTime:c.staleTime*2,refetchOnWindowFocus:c.refetchOnWindowFocus??!0,refetchOnReconnect:c.refetchOnReconnect??!0,refetchInterval:c.sessionCheckInterval||!1}),[S,L]=n.useState(null),d=n.useMemo(()=>f||C?"loading":Object.keys((u==null?void 0:u.userDetails)||{}).length>0?"authenticated":"unauthenticated",[f,C,u]),a=(u==null?void 0:u.userDetails)||null,x=(u==null?void 0:u.staticBaseUrl)||null,$=(u==null?void 0:u.buildId)||null,j=d==="authenticated",P=n.useRef(o);P.current=o;const E=n.useRef(r);E.current=r,n.useEffect(()=>{var s;f||(s=P.current)==null||s.call(P,d,a)},[d,a,f]),n.useEffect(()=>{var s;U&&(L(U),(s=E.current)==null||s.call(E,U))},[U]),n.useEffect(()=>{d==="unauthenticated"&&c.autoRedirect&&!f&&N()},[d,f,c.autoRedirect]);const p=n.useCallback((s,w)=>{N(s,w)},[]),q=n.useCallback(async s=>{v.removeQueries({queryKey:_}),await te(s)},[v]),B=n.useCallback(async()=>{if(C)return u||null;try{return(await R()).data||null}catch(s){return L(s),null}},[R,C,u]),O=n.useCallback(s=>(a==null?void 0:a.Role)===s,[a]),I=n.useCallback(s=>s.includes((a==null?void 0:a.Role)||""),[a]),F=n.useCallback(()=>{L(null)},[]),T=n.useCallback(()=>{R()},[R]),z=n.useMemo(()=>({user:a,staticBaseUrl:x,buildId:$,status:d,isAuthenticated:j,isLoading:f,login:p,logout:q,refreshSession:B,hasRole:O,hasAnyRole:I,error:S,clearError:F,_forceCheck:T}),[a,x,$,d,j,f,p,q,B,O,I,S,F,T]);return d==="loading"&&i?y.jsx(y.Fragment,{children:i}):d==="unauthenticated"&&!c.autoRedirect&&l?y.jsx(y.Fragment,{children:l}):y.jsx(V.Provider,{value:z,children:e})}function ne(){const e=n.useContext(V);if(!e)throw new Error("useAuth must be used within an AuthProvider");return e}function oe(){const e=ne();return n.useMemo(()=>({user:e.user,staticBaseUrl:e.staticBaseUrl,buildId:e.buildId,status:e.status,isAuthenticated:e.isAuthenticated,isLoading:e.isLoading,login:e.login,logout:e.logout,refreshSession:e.refreshSession,hasRole:e.hasRole,hasAnyRole:e.hasAnyRole,error:e.error,clearError:e.clearError}),[e.user,e.staticBaseUrl,e.buildId,e.status,e.isAuthenticated,e.isLoading,e.login,e.logout,e.refreshSession,e.hasRole,e.hasAnyRole,e.error,e.clearError])}exports.AuthProviderName=W.AuthProviderName;exports.AuthStatus=W.AuthStatus;exports.AuthProvider=re;exports.AuthenticationError=m;exports.configureAuth=G;exports.getAuthBaseUrl=k;exports.getAuthConfig=b;exports.resetAuthConfig=D;exports.setAuthProvider=Z;exports.useAuth=oe;
package/dist/auth.mjs CHANGED
@@ -5,7 +5,7 @@ import { jsx as C, Fragment as W } from "react/jsx-runtime";
5
5
  import { useRef as p, useState as Z, useMemo as k, useEffect as L, useCallback as f, createContext as D, useContext as ee } from "react";
6
6
  import { useQueryClient as te, useQuery as re } from "@tanstack/react-query";
7
7
  import { c as ne, g as oe } from "./client-_ayziI1d.js";
8
- import { c as me, A as be } from "./constants-ConHc1oS.js";
8
+ import { c as me, A as be } from "./constants-Cyi942Yr.js";
9
9
  const H = {
10
10
  sessionEndpoint: "/api/id",
11
11
  providers: {
@@ -1 +1 @@
1
- {"version":3,"file":"Item.d.ts","sourceRoot":"","sources":["../../../sdk/bdo/core/Item.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,oBAAoB,EACpB,iBAAiB,EACjB,yBAAyB,EACzB,yBAAyB,EACzB,iBAAiB,EACjB,8BAA8B,EAC9B,8BAA8B,EAC9B,6BAA6B,EAC7B,6BAA6B,EAC9B,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAEV,cAAc,EACd,aAAa,EACd,MAAM,yBAAyB,CAAC;AAYjC;;GAEG;AACH,UAAU,OAAO;IACf,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IAChD,WAAW,IAAI,OAAO,CAAC;IACvB,uBAAuB,CACrB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,oBAAoB,CAAC;IACxB,OAAO,IAAI,MAAM,CAAC;CACnB;AAGD,YAAY,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,CAAC;AAE3G;;GAEG;AACH,KAAK,uBAAuB,CAAC,CAAC,IAC5B;IAAC,CAAC;CAAC,SAAS,CAAC,cAAc,CAAC,GACxB,8BAA8B,GAC9B,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,GACzB,6BAA6B,GAC7B,yBAAyB,CAAC,CAAC,CAAC,CAAC;AAErC;;GAEG;AACH,KAAK,uBAAuB,CAAC,CAAC,IAC5B;IAAC,CAAC;CAAC,SAAS,CAAC,cAAc,CAAC,GACxB,8BAA8B,GAC9B,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,GACzB,6BAA6B,GAC7B,yBAAyB,CAAC,CAAC,CAAC,CAAC;AAErC;;GAEG;AACH,KAAK,iBAAiB,CAAC,CAAC,IAAI;KACzB,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,KAAK,GAAG,KAAK,GAAG,CAAC,GAAG,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC7E,CAAC;AAEF;;GAEG;AACH,KAAK,iBAAiB,CAAC,CAAC,IAAI;KACzB,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,KAAK,GAAG,KAAK,GAAG,CAAC,GAAG,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC7E,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,QAAQ,CAClB,SAAS,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACzC,SAAS,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,EAAE,IAC5C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,GAC7B,iBAAiB,CAAC,SAAS,CAAC,GAC5B,iBAAiB,CAAC,SAAS,CAAC,GAC5B;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3B;;;;;;;;;;;;;;GAcG;AACH,qBAAa,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACjD,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAU;IAC/B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAsD;gBAEzE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IAgF1C,OAAO,CAAC,kBAAkB;IAI1B;;;OAGG;IACH,OAAO,CAAC,YAAY;IA6PpB;;OAEG;IACH,QAAQ,IAAI,oBAAoB;IAqChC;;OAEG;IACH,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC;CAGrB"}
1
+ {"version":3,"file":"Item.d.ts","sourceRoot":"","sources":["../../../sdk/bdo/core/Item.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,oBAAoB,EACpB,iBAAiB,EACjB,yBAAyB,EACzB,yBAAyB,EACzB,iBAAiB,EACjB,8BAA8B,EAC9B,8BAA8B,EAC9B,6BAA6B,EAC7B,6BAA6B,EAC9B,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAEV,cAAc,EACd,aAAa,EACd,MAAM,yBAAyB,CAAC;AAYjC;;GAEG;AACH,UAAU,OAAO;IACf,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IAChD,WAAW,IAAI,OAAO,CAAC;IACvB,uBAAuB,CACrB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,oBAAoB,CAAC;IACxB,OAAO,IAAI,MAAM,CAAC;CACnB;AAGD,YAAY,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,CAAC;AAE3G;;GAEG;AACH,KAAK,uBAAuB,CAAC,CAAC,IAC5B;IAAC,CAAC;CAAC,SAAS,CAAC,cAAc,CAAC,GACxB,8BAA8B,GAC9B,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,GACzB,6BAA6B,GAC7B,yBAAyB,CAAC,CAAC,CAAC,CAAC;AAErC;;GAEG;AACH,KAAK,uBAAuB,CAAC,CAAC,IAC5B;IAAC,CAAC;CAAC,SAAS,CAAC,cAAc,CAAC,GACxB,8BAA8B,GAC9B,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,GACzB,6BAA6B,GAC7B,yBAAyB,CAAC,CAAC,CAAC,CAAC;AAErC;;GAEG;AACH,KAAK,iBAAiB,CAAC,CAAC,IAAI;KACzB,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,KAAK,GAAG,KAAK,GAAG,CAAC,GAAG,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC7E,CAAC;AAEF;;GAEG;AACH,KAAK,iBAAiB,CAAC,CAAC,IAAI;KACzB,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,KAAK,GAAG,KAAK,GAAG,CAAC,GAAG,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC7E,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,QAAQ,CAClB,SAAS,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACzC,SAAS,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,EAAE,IAC5C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,GAC7B,iBAAiB,CAAC,SAAS,CAAC,GAC5B,iBAAiB,CAAC,SAAS,CAAC,GAC5B;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3B;;;;;;;;;;;;;;GAcG;AACH,qBAAa,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACjD,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAU;IAC/B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAsD;gBAEzE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IAgF1C,OAAO,CAAC,kBAAkB;IAK1B;;;OAGG;IACH,OAAO,CAAC,YAAY;IA6PpB;;OAEG;IACH,QAAQ,IAAI,oBAAoB;IAqChC;;OAEG;IACH,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC;CAGrB"}
package/dist/bdo.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";var E=Object.defineProperty;var T=(r,e,t)=>e in r?E(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var m=(r,e,t)=>T(r,typeof e!="symbol"?e+"":e,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("./client-D5k4SYuw.cjs"),w=require("./attachment-constants-B5jlqoKI.cjs"),o=require("./FileField-DU4UWo_t.cjs"),U=require("./constants-QX2RX-wu.cjs");class x{constructor(e,t){m(this,"_data");m(this,"_bdo");m(this,"_accessorCache",new Map);return this._bdo=e,this._data={...t},new Proxy(this,{get(a,s,n){return s==="validate"||s==="toJSON"||s==="_bdo"||s==="_data"||s==="_accessorCache"||s==="_getAccessor"||s==="_requireInstanceId"||typeof s=="symbol"?Reflect.get(a,s,n):s==="_id"?a._data._id:a._getAccessor(s)},set(a,s,n){return s==="_bdo"||s==="_data"||s==="_accessorCache"||s==="validate"||s==="toJSON"?!1:typeof s=="symbol"?Reflect.set(a,s,n):(a._data[s]=n,!0)},has(a,s){return s==="validate"||s==="toJSON"?!0:s in a._data||s in a._bdo.getFields()},ownKeys(a){return[...Object.keys(a._bdo.getFields()),"validate","toJSON"]},getOwnPropertyDescriptor(a,s){if(s==="validate"||s==="toJSON")return{configurable:!0,enumerable:!1,value:a[s]};const n=a._bdo.getFields();if(s in n||s in a._data)return{configurable:!0,enumerable:!0,get:()=>a._getAccessor(s)}}})}_requireInstanceId(){return this._data._id||"draft"}_getAccessor(e){if(this._accessorCache.has(e))return this._accessorCache.get(e);const a=this._bdo.getFields()[e],s=(a==null?void 0:a.meta)??{_id:e,Name:e,Type:"String"},n=(a==null?void 0:a.readOnly)??!1,d=()=>{if(a){const _=a.validate(this._data[e]);if(!_.valid)return _}return this._bdo.hasMetadata()?this._bdo.validateFieldExpression(e,this._data[e],this.toJSON()):{valid:!0,errors:[]}},h=_=>{const f=this._data[e];return f??_};let y;if(n?y={label:(a==null?void 0:a.label)??e,required:(a==null?void 0:a.required)??!1,readOnly:!0,defaultValue:a==null?void 0:a.defaultValue,meta:s,get:()=>this._data[e],getOrDefault:h,validate:d}:y={label:(a==null?void 0:a.label)??e,required:(a==null?void 0:a.required)??!1,readOnly:!1,defaultValue:a==null?void 0:a.defaultValue,meta:s,get:()=>this._data[e],getOrDefault:h,set:_=>{this._data[e]=_},validate:d},s.Type==="Image"||s.Type==="File"){const _=this._bdo.getBoId(),f=y;s.Type==="Image"?(f.getDownloadUrl=async l=>{const c=this._requireInstanceId(),g=this._data[e];if(!(g!=null&&g._id))throw new Error(`${e} has no image to download`);return i.api(_).getDownloadUrl(c,e,g._id,l)},n||(f.upload=async l=>{w.validateFileExtension(l.name,"Image");const c=this._requireInstanceId(),g={FileName:l.name,Size:l.size,FileExtension:w.extractFileExtension(l.name)},[u]=await i.api(_).getUploadUrl(c,e,[g]);await fetch(u.UploadUrl.URL,{method:"PUT",headers:{"Content-Type":u.ContentType},body:l});const F={_id:u._id,_name:u._name,FileName:u.FileName,FileExtension:u.FileExtension,Size:u.Size,ContentType:u.ContentType};return this._data[e]=F,F},f.deleteAttachment=async()=>{const l=this._requireInstanceId(),c=this._data[e];if(!(c!=null&&c._id))throw new Error(`${e} has no image to delete`);await i.api(_).deleteAttachment(l,e,c._id),this._data[e]=null})):(f.getDownloadUrl=async(l,c)=>{const g=this._requireInstanceId();return i.api(_).getDownloadUrl(g,e,l,c)},f.getDownloadUrls=async l=>{const c=this._requireInstanceId();return i.api(_).getDownloadUrls(c,e,l)},n||(f.upload=async l=>{for(const b of l)w.validateFileExtension(b.name,"File");const c=this._requireInstanceId(),g=l.map(b=>({FileName:b.name,Size:b.size,FileExtension:w.extractFileExtension(b.name)})),u=await i.api(_).getUploadUrl(c,e,g),F=await Promise.all(l.map(async(b,p)=>(await fetch(u[p].UploadUrl.URL,{method:"PUT",headers:{"Content-Type":u[p].ContentType},body:b}),{_id:u[p]._id,_name:u[p]._name,FileName:u[p].FileName,FileExtension:u[p].FileExtension,Size:u[p].Size,ContentType:u[p].ContentType}))),v=this._data[e]??[];return this._data[e]=[...v,...F],F},f.deleteAttachment=async l=>{const c=this._requireInstanceId();await i.api(_).deleteAttachment(c,e,l);const g=this._data[e]??[];this._data[e]=g.filter(u=>u._id!==l)}))}return this._accessorCache.set(e,y),y}validate(){const e=this._bdo.getFields(),t=[],a=this.toJSON();for(const[s,n]of Object.entries(e)){if(n.readOnly)continue;const d=this._data[s],h=n.validate(d);if(!h.valid){t.push(...h.errors);continue}if(this._bdo.hasMetadata()){const y=this._bdo.validateFieldExpression(s,d,a);y.valid||t.push(...y.errors)}}return{valid:t.length===0,errors:t}}toJSON(){return{...this._data}}}const A={CONCAT:(...r)=>r.map(e=>String(e??"")).join(""),UPPER:r=>String(r??"").toUpperCase(),LOWER:r=>String(r??"").toLowerCase(),TRIM:r=>String(r??"").trim(),LENGTH:r=>String(r??"").length,SUBSTRING:(r,e,t)=>String(r??"").substring(e,t!==void 0?e+t:void 0),REPLACE:(r,e,t)=>String(r??"").replace(e,t),SUM:(...r)=>r.reduce((e,t)=>e+(Number(t)||0),0),AVG:(...r)=>{const e=r.filter(t=>t!=null&&!isNaN(Number(t)));return e.length===0?0:e.reduce((t,a)=>t+Number(a),0)/e.length},MIN:(...r)=>{const e=r.filter(t=>t!=null&&!isNaN(Number(t))).map(t=>Number(t));return e.length===0?0:Math.min(...e)},MAX:(...r)=>{const e=r.filter(t=>t!=null&&!isNaN(Number(t))).map(t=>Number(t));return e.length===0?0:Math.max(...e)},ABS:r=>Math.abs(Number(r)||0),ROUND:r=>Math.round(Number(r)||0),FLOOR:r=>Math.floor(Number(r)||0),CEIL:r=>Math.ceil(Number(r)||0),YEAR:r=>{const e=new Date(r);return isNaN(e.getTime())?0:e.getFullYear()},MONTH:r=>{const e=new Date(r);return isNaN(e.getTime())?0:e.getMonth()+1},DAY:r=>{const e=new Date(r);return isNaN(e.getTime())?0:e.getDate()},DATE_DIFF:(r,e)=>{const t=new Date(r),a=new Date(e);if(isNaN(t.getTime())||isNaN(a.getTime()))return 0;const s=Math.abs(t.getTime()-a.getTime());return Math.ceil(s/(1e3*60*60*24))},ADD_DAYS:(r,e)=>{const t=new Date(r);return isNaN(t.getTime())?new Date(NaN):(t.setDate(t.getDate()+e),t)},ADD_MONTHS:(r,e)=>{const t=new Date(r);return isNaN(t.getTime())?new Date(NaN):(t.setMonth(t.getMonth()+e),t)},IF:(r,e,t)=>r?e:t,UUID:()=>typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,r=>{const e=Math.random()*16|0;return(r==="x"?e:e&3|8).toString(16)})};function S(){const r=new Date;return{NOW:r,TODAY:new Date(r.getFullYear(),r.getMonth(),r.getDate()),CURRENT_USER:{Id:"",Email:"",FirstName:"",LastName:""}}}function N(r,e){var t;switch(r.Type){case"Literal":return r.Value;case"Identifier":return e.formValues[r.Name];case"SystemIdentifier":return O(r,e);case"BinaryExpression":return R(r,e);case"LogicalExpression":return D(r,e);case"CallExpression":return C(r,e);case"MemberExpression":return M(r,e);case"AssignmentExpression":return((t=r.Arguments)==null?void 0:t.length)===1?N(r.Arguments[0],e):void 0;default:throw new Error(`Unsupported expression type: ${r.Type}`)}}function O(r,e){const t=r.Name,a=e.systemValues[t];return r.Property?a&&typeof a=="object"?a[r.Property.Name]:void 0:a}function R(r,e){if(!r.Arguments||r.Arguments.length<2)throw new Error("BinaryExpression requires 2 arguments");const[t,a]=r.Arguments,s=N(t,e),n=N(a,e);switch(r.Operator){case"==":return s==n;case"!=":return s!=n;case"<":return Number(s)<Number(n);case"<=":return Number(s)<=Number(n);case">":return Number(s)>Number(n);case">=":return Number(s)>=Number(n);case"+":return Number(s)+Number(n);case"-":return Number(s)-Number(n);case"*":return Number(s)*Number(n);case"/":return Number(n)!==0?Number(s)/Number(n):0;case"%":return Number(s)%Number(n);default:throw new Error(`Unsupported binary operator: ${r.Operator}`)}}function D(r,e){if(!r.Arguments||r.Arguments.length===0)throw new Error("LogicalExpression requires at least 1 argument");const t=r.Arguments;switch(r.Operator){case"AND":return t.every(a=>!!N(a,e));case"OR":return t.some(a=>!!N(a,e));case"!":return!N(t[0],e);default:throw new Error(`Unsupported logical operator: ${r.Operator}`)}}function C(r,e){if(!r.Callee)throw new Error("CallExpression requires a Callee");const t=A[r.Callee];if(!t)throw new Error(`Unknown function: ${r.Callee}`);const a=(r.Arguments??[]).map(s=>N(s,e));return t(...a)}function M(r,e){var s,n;if(!((s=r.Arguments)!=null&&s.length))return;const t=N(r.Arguments[0],e),a=(n=r.Arguments[0].Property)==null?void 0:n.Name;return a&&t&&typeof t=="object"?t[a]:t}class B{constructor(){m(this,"fieldRules",new Map);m(this,"metadata",null)}loadMetadata(e){var t,a;this.metadata=e,this.fieldRules.clear();for(const[s,n]of Object.entries(e.Fields)){const d=[];if(n.Validation&&Array.isArray(n.Validation)){for(const h of n.Validation)if(typeof h=="object"&&h.ExpressionTree)d.push(h);else if(typeof h=="string"){const y=(a=(t=e.Rules)==null?void 0:t.Validation)==null?void 0:a[h];y&&d.push(y)}}d.length>0&&this.fieldRules.set(s,d)}}hasMetadata(){return this.metadata!==null}getFieldRules(e){return this.fieldRules.get(e)??[]}validateField(e,t,a){const s=this.fieldRules.get(e);if(!s||s.length===0)return{valid:!0,errors:[]};const n={formValues:{...a,[e]:t},systemValues:S()};for(const d of s)try{if(!N(d.ExpressionTree,n))return{valid:!1,errors:[d.Message||`Validation failed: ${d.Name||d.Id}`]}}catch(h){console.warn(`Expression evaluation failed for rule ${d.Id}:`,h)}return{valid:!0,errors:[]}}validateAll(e){const t=[];for(const a of this.fieldRules.keys()){const s=this.validateField(a,e[a],e);s.valid||t.push(...s.errors)}return{valid:t.length===0,errors:t}}}class I{constructor(){m(this,"_id",new o.StringField({_id:"_id",Name:"ID",Type:"String",ReadOnly:!0}));m(this,"_created_at",new o.DateTimeField({_id:"_created_at",Name:"Created At",Type:"DateTime",ReadOnly:!0}));m(this,"_modified_at",new o.DateTimeField({_id:"_modified_at",Name:"Modified At",Type:"DateTime",ReadOnly:!0}));m(this,"_created_by",new o.UserField({_id:"_created_by",Name:"Created By",Type:"User",ReadOnly:!0}));m(this,"_modified_by",new o.UserField({_id:"_modified_by",Name:"Modified By",Type:"User",ReadOnly:!0}));m(this,"_version",new o.StringField({_id:"_version",Name:"Version",Type:"String",ReadOnly:!0}));m(this,"_m_version",new o.StringField({_id:"_m_version",Name:"Metadata Version",Type:"String",ReadOnly:!0}));m(this,"_fieldsBound",!1);m(this,"_fieldsCache",null);m(this,"_expressionEngine",new B)}getBoId(){return this.meta._id}getFields(){if(this._fieldsCache)return this._fieldsCache;const e={};for(const t of Object.keys(this)){const a=this[t];a instanceof o.BaseField&&(e[t]=a)}if(!this._fieldsBound){for(const t of Object.values(e))t._parentBoId=this.meta._id;this._fieldsBound=!0}return this._fieldsCache=e,e}loadMetadata(e){this._expressionEngine.loadMetadata(e)}hasMetadata(){return this._expressionEngine.hasMetadata()}validateFieldExpression(e,t,a){return this._expressionEngine.hasMetadata()?this._expressionEngine.validateField(e,t,a):{valid:!0,errors:[]}}async get(e){const t=await i.api(this.meta._id).get(e);return new x(this,t)}async list(e){return(await i.api(this.meta._id).list(e)).Data.map(a=>new x(this,a))}async count(e){return(await i.api(this.meta._id).count(e)).Count}async create(e){const t=await i.api(this.meta._id).create(e);return new x(this,{...e,_id:t._id})}async update(e,t){return i.api(this.meta._id).update(e,t)}async delete(e){return i.api(this.meta._id).delete(e)}async draft(e){return i.api(this.meta._id).draft(e)}async draftInteraction(e){return i.api(this.meta._id).draftInteraction(e)}createItem(e){return new x(this,e??{})}async draftUpdate(e,t){return i.api(this.meta._id).draftUpdate(e,t)}async draftPatch(e,t){return i.api(this.meta._id).draftPatch(e,t)}async metric(e){return i.api(this.meta._id).metric(e)}async pivot(e){return i.api(this.meta._id).pivot(e)}async getUploadUrl(e,t,a){return i.api(this.meta._id).getUploadUrl(e,t,a)}async getDownloadUrl(e,t,a,s){return i.api(this.meta._id).getDownloadUrl(e,t,a,s)}async getDownloadUrls(e,t,a){return i.api(this.meta._id).getDownloadUrls(e,t,a)}async deleteAttachment(e,t,a){return i.api(this.meta._id).deleteAttachment(e,t,a)}}class q extends o.BaseField{constructor(e){super(e)}get elementType(){return this._meta.Property}validate(e){return e!=null&&!Array.isArray(e)?{valid:!1,errors:[`${this.label} must be an array`]}:{valid:!0,errors:[]}}}class V extends o.BaseField{constructor(e){super(e)}get properties(){return this._meta.Property}validate(e){return e==null?{valid:!0,errors:[]}:typeof e!="object"||Array.isArray(e)?{valid:!1,errors:[`${this.label} must be a valid object`]}:{valid:!0,errors:[]}}}class j extends o.BaseField{constructor(e){super(e)}validate(e){return e==null?{valid:!0,errors:[]}:typeof e!="object"||Array.isArray(e)?{valid:!1,errors:[`${this.label} must be a valid image object`]}:!e._id||!e.FileName?{valid:!1,errors:[`${this.label} must have _id and FileName`]}:{valid:!0,errors:[]}}}exports.BaseField=o.BaseField;exports.BooleanField=o.BooleanField;exports.DateField=o.DateField;exports.DateTimeField=o.DateTimeField;exports.FileField=o.FileField;exports.NumberField=o.NumberField;exports.ReferenceField=o.ReferenceField;exports.SelectField=o.SelectField;exports.StringField=o.StringField;exports.TextAreaField=o.TextField;exports.TextField=o.TextField;exports.UserField=o.UserField;exports.SystemField=U.SystemField;exports.ArrayField=q;exports.BaseBdo=I;exports.ImageField=j;exports.ObjectField=V;
1
+ "use strict";var v=Object.defineProperty;var A=(t,e,r)=>e in t?v(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var h=(t,e,r)=>A(t,typeof e!="symbol"?e+"":e,r);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("./client-D5k4SYuw.cjs"),w=require("./attachment-constants-B5jlqoKI.cjs"),l=require("./FileField-DU4UWo_t.cjs"),S=require("./constants-DEmYwKfC.cjs");class x{constructor(e,r){h(this,"_data");h(this,"_bdo");h(this,"_accessorCache",new Map);return this._bdo=e,this._data={...r},new Proxy(this,{get(a,s,n){return s==="validate"||s==="toJSON"||s==="_bdo"||s==="_data"||s==="_accessorCache"||s==="_getAccessor"||s==="_requireInstanceId"||typeof s=="symbol"?Reflect.get(a,s,n):s==="_id"?a._data._id:a._getAccessor(s)},set(a,s,n){return s==="_bdo"||s==="_data"||s==="_accessorCache"||s==="validate"||s==="toJSON"?!1:typeof s=="symbol"?Reflect.set(a,s,n):(a._data[s]=n,!0)},has(a,s){return s==="validate"||s==="toJSON"?!0:s in a._data||s in a._bdo.getFields()},ownKeys(a){return[...Object.keys(a._bdo.getFields()),"validate","toJSON"]},getOwnPropertyDescriptor(a,s){if(s==="validate"||s==="toJSON")return{configurable:!0,enumerable:!1,value:a[s]};const n=a._bdo.getFields();if(s in n||s in a._data)return{configurable:!0,enumerable:!0,get:()=>a._getAccessor(s)}}})}_requireInstanceId(){return this._data._id||"draft"}_getAccessor(e){if(this._accessorCache.has(e))return this._accessorCache.get(e);const a=this._bdo.getFields()[e],s=(a==null?void 0:a.meta)??{_id:e,Name:e,Type:"String"},n=(a==null?void 0:a.readOnly)??!1,i=()=>{if(a){const _=a.validate(this._data[e]);if(!_.valid)return _}return this._bdo.hasMetadata()?this._bdo.validateFieldExpression(e,this._data[e],this.toJSON()):{valid:!0,errors:[]}},u=_=>{const f=this._data[e];return f??_};let y;if(n?y={label:(a==null?void 0:a.label)??e,required:(a==null?void 0:a.required)??!1,readOnly:!0,defaultValue:a==null?void 0:a.defaultValue,meta:s,get:()=>this._data[e],getOrDefault:u,validate:i}:y={label:(a==null?void 0:a.label)??e,required:(a==null?void 0:a.required)??!1,readOnly:!1,defaultValue:a==null?void 0:a.defaultValue,meta:s,get:()=>this._data[e],getOrDefault:u,set:_=>{this._data[e]=_},validate:i},s.Type==="Image"||s.Type==="File"){const _=this._bdo.getBoId(),f=y;s.Type==="Image"?(f.getDownloadUrl=async d=>{const m=this._requireInstanceId(),g=this._data[e];if(!(g!=null&&g._id))throw new Error(`${e} has no image to download`);return o.api(_).getDownloadUrl(m,e,g._id,d)},n||(f.upload=async d=>{w.validateFileExtension(d.name,"Image");const m=this._requireInstanceId(),g={FileName:d.name,Size:d.size,FileExtension:w.extractFileExtension(d.name)},[c]=await o.api(_).getUploadUrl(m,e,[g]);await fetch(c.UploadUrl.URL,{method:"PUT",headers:{"Content-Type":c.ContentType},body:d});const b={_id:c._id,_name:c._name,FileName:c.FileName,FileExtension:c.FileExtension,Size:c.Size,ContentType:c.ContentType};return this._data[e]=b,b},f.deleteAttachment=async()=>{const d=this._requireInstanceId(),m=this._data[e];if(!(m!=null&&m._id))throw new Error(`${e} has no image to delete`);await o.api(_).deleteAttachment(d,e,m._id),this._data[e]=null})):(f.getDownloadUrl=async(d,m)=>{const g=this._requireInstanceId();return o.api(_).getDownloadUrl(g,e,d,m)},f.getDownloadUrls=async d=>{const m=this._requireInstanceId();return o.api(_).getDownloadUrls(m,e,d)},n||(f.upload=async d=>{for(const F of d)w.validateFileExtension(F.name,"File");const m=this._requireInstanceId(),g=d.map(F=>({FileName:F.name,Size:F.size,FileExtension:w.extractFileExtension(F.name)})),c=await o.api(_).getUploadUrl(m,e,g),b=await Promise.all(d.map(async(F,N)=>(await fetch(c[N].UploadUrl.URL,{method:"PUT",headers:{"Content-Type":c[N].ContentType},body:F}),{_id:c[N]._id,_name:c[N]._name,FileName:c[N].FileName,FileExtension:c[N].FileExtension,Size:c[N].Size,ContentType:c[N].ContentType}))),U=this._data[e]??[];return this._data[e]=[...U,...b],b},f.deleteAttachment=async d=>{const m=this._requireInstanceId();await o.api(_).deleteAttachment(m,e,d);const g=this._data[e]??[];this._data[e]=g.filter(c=>c._id!==d)}))}return this._accessorCache.set(e,y),y}validate(){const e=this._bdo.getFields(),r=[],a=this.toJSON();for(const[s,n]of Object.entries(e)){if(n.readOnly)continue;const i=this._data[s],u=n.validate(i);if(!u.valid){r.push(...u.errors);continue}if(this._bdo.hasMetadata()){const y=this._bdo.validateFieldExpression(s,i,a);y.valid||r.push(...y.errors)}}return{valid:r.length===0,errors:r}}toJSON(){return{...this._data}}}const O={CONCAT:(...t)=>t.map(e=>String(e??"")).join(""),UPPER:t=>String(t??"").toUpperCase(),LOWER:t=>String(t??"").toLowerCase(),TRIM:t=>String(t??"").trim(),LENGTH:t=>String(t??"").length,SUBSTRING:(t,e,r)=>String(t??"").substring(e,r!==void 0?e+r:void 0),REPLACE:(t,e,r)=>String(t??"").replace(e,r),SUM:(...t)=>t.reduce((e,r)=>e+(Number(r)||0),0),AVG:(...t)=>{const e=t.filter(r=>r!=null&&!isNaN(Number(r)));return e.length===0?0:e.reduce((r,a)=>r+Number(a),0)/e.length},MIN:(...t)=>{const e=t.filter(r=>r!=null&&!isNaN(Number(r))).map(r=>Number(r));return e.length===0?0:Math.min(...e)},MAX:(...t)=>{const e=t.filter(r=>r!=null&&!isNaN(Number(r))).map(r=>Number(r));return e.length===0?0:Math.max(...e)},ABS:t=>Math.abs(Number(t)||0),ROUND:t=>Math.round(Number(t)||0),FLOOR:t=>Math.floor(Number(t)||0),CEIL:t=>Math.ceil(Number(t)||0),YEAR:t=>{const e=new Date(t);return isNaN(e.getTime())?0:e.getFullYear()},MONTH:t=>{const e=new Date(t);return isNaN(e.getTime())?0:e.getMonth()+1},DAY:t=>{const e=new Date(t);return isNaN(e.getTime())?0:e.getDate()},DATE_DIFF:(t,e)=>{const r=new Date(t),a=new Date(e);if(isNaN(r.getTime())||isNaN(a.getTime()))return 0;const s=Math.abs(r.getTime()-a.getTime());return Math.ceil(s/(1e3*60*60*24))},ADD_DAYS:(t,e)=>{const r=new Date(t);return isNaN(r.getTime())?new Date(NaN):(r.setDate(r.getDate()+e),r)},ADD_MONTHS:(t,e)=>{const r=new Date(t);return isNaN(r.getTime())?new Date(NaN):(r.setMonth(r.getMonth()+e),r)},IF:(t,e,r)=>t?e:r,UUID:()=>typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,t=>{const e=Math.random()*16|0;return(t==="x"?e:e&3|8).toString(16)})};function D(){const t=new Date;return{NOW:t,TODAY:new Date(t.getFullYear(),t.getMonth(),t.getDate()),CURRENT_USER:{Id:"",Email:"",FirstName:"",LastName:""}}}function p(t,e){var r;switch(t.Type){case"Literal":return t.Value;case"Identifier":return e.formValues[t.Name];case"SystemIdentifier":return R(t,e);case"BinaryExpression":return M(t,e);case"LogicalExpression":return B(t,e);case"CallExpression":return I(t,e);case"MemberExpression":return q(t,e);case"AssignmentExpression":return((r=t.Arguments)==null?void 0:r.length)===1?p(t.Arguments[0],e):void 0;default:throw new Error(`Unsupported expression type: ${t.Type}`)}}function R(t,e){const r=t.Name,a=e.systemValues[r];return t.Property?a&&typeof a=="object"?a[t.Property.Name]:void 0:a}const C=/^\d{4}-\d{2}-\d{2}([ T]\d{2}:\d{2}(:\d{2})?)?$/;function E(t){if(t instanceof Date)return t.getTime();if(typeof t=="string"&&C.test(t)){const e=t.includes("T")||t.includes(" ")?t.replace(" ","T"):t+"T00:00:00";return new Date(e).getTime()}return NaN}function T(t,e){const r=E(t),a=E(e);return!isNaN(r)&&!isNaN(a)?{l:r,r:a}:{l:Number(t),r:Number(e)}}function M(t,e){if(!t.Arguments||t.Arguments.length<2)throw new Error("BinaryExpression requires 2 arguments");const[r,a]=t.Arguments,s=p(r,e),n=p(a,e);switch(t.Operator){case"==":return s==n;case"!=":return s!=n;case"<":{const{l:i,r:u}=T(s,n);return i<u}case"<=":{const{l:i,r:u}=T(s,n);return i<=u}case">":{const{l:i,r:u}=T(s,n);return i>u}case">=":{const{l:i,r:u}=T(s,n);return i>=u}case"+":return Number(s)+Number(n);case"-":return Number(s)-Number(n);case"*":return Number(s)*Number(n);case"/":return Number(n)!==0?Number(s)/Number(n):0;case"%":return Number(s)%Number(n);default:throw new Error(`Unsupported binary operator: ${t.Operator}`)}}function B(t,e){if(!t.Arguments||t.Arguments.length===0)throw new Error("LogicalExpression requires at least 1 argument");const r=t.Arguments;switch(t.Operator){case"AND":return r.every(a=>!!p(a,e));case"OR":return r.some(a=>!!p(a,e));case"!":return!p(r[0],e);default:throw new Error(`Unsupported logical operator: ${t.Operator}`)}}function I(t,e){if(!t.Callee)throw new Error("CallExpression requires a Callee");const r=O[t.Callee];if(!r)throw new Error(`Unknown function: ${t.Callee}`);const a=(t.Arguments??[]).map(s=>p(s,e));return r(...a)}function q(t,e){var s,n;if(!((s=t.Arguments)!=null&&s.length))return;const r=p(t.Arguments[0],e),a=(n=t.Arguments[0].Property)==null?void 0:n.Name;return a&&r&&typeof r=="object"?r[a]:r}class V{constructor(){h(this,"fieldRules",new Map);h(this,"metadata",null)}loadMetadata(e){var r,a;this.metadata=e,this.fieldRules.clear();for(const[s,n]of Object.entries(e.Fields)){const i=[];if(n.Validation&&Array.isArray(n.Validation)){for(const u of n.Validation)if(typeof u=="object"&&u.ExpressionTree)i.push(u);else if(typeof u=="string"){const y=(a=(r=e.Rules)==null?void 0:r.Validation)==null?void 0:a[u];y&&i.push(y)}}i.length>0&&this.fieldRules.set(s,i)}}hasMetadata(){return this.metadata!==null}getFieldRules(e){return this.fieldRules.get(e)??[]}validateField(e,r,a){const s=this.fieldRules.get(e);if(!s||s.length===0)return{valid:!0,errors:[]};const n={formValues:{...a,[e]:r},systemValues:D()};for(const i of s)try{if(!p(i.ExpressionTree,n))return{valid:!1,errors:[i.Message||`Validation failed: ${i.Name||i.Id}`]}}catch(u){console.warn(`Expression evaluation failed for rule ${i.Id}:`,u)}return{valid:!0,errors:[]}}validateAll(e){const r=[];for(const a of this.fieldRules.keys()){const s=this.validateField(a,e[a],e);s.valid||r.push(...s.errors)}return{valid:r.length===0,errors:r}}}class j{constructor(){h(this,"_id",new l.StringField({_id:"_id",Name:"ID",Type:"String",ReadOnly:!0}));h(this,"_created_at",new l.DateTimeField({_id:"_created_at",Name:"Created At",Type:"DateTime",ReadOnly:!0}));h(this,"_modified_at",new l.DateTimeField({_id:"_modified_at",Name:"Modified At",Type:"DateTime",ReadOnly:!0}));h(this,"_created_by",new l.UserField({_id:"_created_by",Name:"Created By",Type:"User",ReadOnly:!0}));h(this,"_modified_by",new l.UserField({_id:"_modified_by",Name:"Modified By",Type:"User",ReadOnly:!0}));h(this,"_version",new l.StringField({_id:"_version",Name:"Version",Type:"String",ReadOnly:!0}));h(this,"_m_version",new l.StringField({_id:"_m_version",Name:"Metadata Version",Type:"String",ReadOnly:!0}));h(this,"_fieldsBound",!1);h(this,"_fieldsCache",null);h(this,"_expressionEngine",new V)}getBoId(){return this.meta._id}getFields(){if(this._fieldsCache)return this._fieldsCache;const e={};for(const r of Object.keys(this)){const a=this[r];a instanceof l.BaseField&&(e[r]=a)}if(!this._fieldsBound){for(const r of Object.values(e))r._parentBoId=this.meta._id;this._fieldsBound=!0}return this._fieldsCache=e,e}loadMetadata(e){this._expressionEngine.loadMetadata(e)}hasMetadata(){return this._expressionEngine.hasMetadata()}validateFieldExpression(e,r,a){return this._expressionEngine.hasMetadata()?this._expressionEngine.validateField(e,r,a):{valid:!0,errors:[]}}async get(e){const r=await o.api(this.meta._id).get(e);return new x(this,r)}async list(e){return(await o.api(this.meta._id).list(e)).Data.map(a=>new x(this,a))}async count(e){return(await o.api(this.meta._id).count(e)).Count}async create(e){const r=await o.api(this.meta._id).create(e);return new x(this,{...e,_id:r._id})}async update(e,r){return o.api(this.meta._id).update(e,r)}async delete(e){return o.api(this.meta._id).delete(e)}async draft(e){return o.api(this.meta._id).draft(e)}async draftInteraction(e){return o.api(this.meta._id).draftInteraction(e)}createItem(e){return new x(this,e??{})}async draftUpdate(e,r){return o.api(this.meta._id).draftUpdate(e,r)}async draftPatch(e,r){return o.api(this.meta._id).draftPatch(e,r)}async metric(e){return o.api(this.meta._id).metric(e)}async pivot(e){return o.api(this.meta._id).pivot(e)}async getUploadUrl(e,r,a){return o.api(this.meta._id).getUploadUrl(e,r,a)}async getDownloadUrl(e,r,a,s){return o.api(this.meta._id).getDownloadUrl(e,r,a,s)}async getDownloadUrls(e,r,a){return o.api(this.meta._id).getDownloadUrls(e,r,a)}async deleteAttachment(e,r,a){return o.api(this.meta._id).deleteAttachment(e,r,a)}}class P extends l.BaseField{constructor(e){super(e)}get elementType(){return this._meta.Property}validate(e){return e!=null&&!Array.isArray(e)?{valid:!1,errors:[`${this.label} must be an array`]}:{valid:!0,errors:[]}}}class L extends l.BaseField{constructor(e){super(e)}get properties(){return this._meta.Property}validate(e){return e==null?{valid:!0,errors:[]}:typeof e!="object"||Array.isArray(e)?{valid:!1,errors:[`${this.label} must be a valid object`]}:{valid:!0,errors:[]}}}class $ extends l.BaseField{constructor(e){super(e)}validate(e){return e==null?{valid:!0,errors:[]}:typeof e!="object"||Array.isArray(e)?{valid:!1,errors:[`${this.label} must be a valid image object`]}:!e._id||!e.FileName?{valid:!1,errors:[`${this.label} must have _id and FileName`]}:{valid:!0,errors:[]}}}exports.BaseField=l.BaseField;exports.BooleanField=l.BooleanField;exports.DateField=l.DateField;exports.DateTimeField=l.DateTimeField;exports.FileField=l.FileField;exports.NumberField=l.NumberField;exports.ReferenceField=l.ReferenceField;exports.SelectField=l.SelectField;exports.StringField=l.StringField;exports.TextAreaField=l.TextField;exports.TextField=l.TextField;exports.UserField=l.UserField;exports.SystemField=S.SystemField;exports.ArrayField=P;exports.BaseBdo=j;exports.ImageField=$;exports.ObjectField=L;