nucleus-core-ts 0.8.21 → 0.8.23
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/client.js +3 -3
- package/dist/dist/index.d.ts +3 -3
- package/dist/fe/components/Captcha/components/Captcha.js +1 -1
- package/dist/index.js +1 -1
- package/dist/src/Client/Proxy/httpProxy.js +1 -1
- package/dist/src/Client/Proxy/index.js +1 -1
- package/dist/src/Client/Proxy/server.js +1 -1
- package/dist/src/Client/Proxy/utils.js +1 -1
- package/dist/src/Client/Proxy/wsProxy.js +1 -1
- package/package.json +1 -1
package/dist/client.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{batch as A,createStore as te}from"h-state";import{useEffectEvent as se}from"react";function ie(e){let n={};for(let t of Object.keys(e))n[t]={isPending:!1,data:null,error:null,code:null};return n}function oe(e,n){let{useStore:t}=te(ie(e),{_callEndpoint:(s)=>async(i,o)=>{if(!s[i])return;A(()=>{s[i].isPending=!0,s[i].error=null});try{let a=await n(i,o.payload);if(A(()=>{if(s[i].isPending=!1,s[i].code=a.code??null,a.isSuccess&&a.data!==void 0)s[i].data=a.data,s[i].error=null;else s[i].error=a.errors??null}),a.isSuccess)o.onAfterHandle?.(a.data??a);else o.onErrorHandle?.(a.errors??{message:"Request failed"},a.code)}catch(a){A(()=>{s[i].isPending=!1,s[i].error={message:a instanceof Error?a.message:"Unknown error"}}),o.onErrorHandle?.({message:a instanceof Error?a.message:"Unknown error"},null)}}});return function(){let i=t(),o=se((a,d)=>{i._callEndpoint(a,d)}),r={};for(let a of Object.keys(e)){let d=(l)=>{o(a,l)};r[a]={state:i[a],start:d}}return r}}var V={$schema:"../schemas/nucleus.tables.schema.json",tables:[{table_name:"users",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"email",type:"varchar",length:255},{name:"password",type:"varchar",length:255},{name:"verified_at",type:"timestamp"},{name:"email_verification_token",type:"varchar",length:255},{name:"email_verification_token_expires_at",type:"timestamp"},{name:"email_verification_sent_at",type:"timestamp"},{name:"email_verification_attempts",type:"integer",default:0},{name:"last_login_at",type:"timestamp"},{name:"login_count",type:"integer",default:0},{name:"is_locked",type:"boolean",default:!1},{name:"locked_until",type:"timestamp"},{name:"failed_login_attempts",type:"integer",default:0},{name:"is_god",type:"boolean",default:!1}],indexes:[{columns:["email"],unique:!0},{columns:["email","is_active"]},{columns:["last_login_at"]},{columns:["is_locked","locked_until"]}]},{table_name:"profiles",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"user_id",type:"uuid",notNull:!0,references:{table:"users",column:"id"}},{name:"first_name",type:"varchar",length:100,notNull:!0},{name:"last_name",type:"varchar",length:100,notNull:!0}],indexes:[{columns:["user_id"],unique:!0},{columns:["first_name","last_name"]}]},{table_name:"roles",feature_set:["authentication","authorization"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"name",type:"varchar",length:100,notNull:!0},{name:"description",type:"varchar",length:500}],indexes:[{columns:["name"],unique:!0}]},{table_name:"claims",feature_set:["authentication","authorization"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"action",type:"varchar",length:100,notNull:!0},{name:"description",type:"varchar",length:500},{name:"path",type:"varchar",length:200,notNull:!0},{name:"method",type:"varchar",length:10,notNull:!0}],indexes:[{columns:["action"],unique:!0},{columns:["path","method"]}]},{table_name:"user_roles",feature_set:["authentication","authorization"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"user_id",type:"uuid",notNull:!0,references:{table:"users",column:"id",onDelete:"cascade"}},{name:"role_id",type:"uuid",notNull:!0,references:{table:"roles",column:"id",onDelete:"cascade"}}],indexes:[{columns:["user_id"]},{columns:["role_id"]}],constraints:{unique:[{name:"unique_user_role",columns:["user_id","role_id"]}]}},{table_name:"role_claims",feature_set:["authentication","authorization"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"role_id",type:"uuid",notNull:!0,references:{table:"roles",column:"id",onDelete:"cascade"}},{name:"claim_id",type:"uuid",notNull:!0,references:{table:"claims",column:"id",onDelete:"cascade"}},{name:"scope",type:"text"}],indexes:[{columns:["role_id"]},{columns:["claim_id"]},{columns:["role_id","claim_id","scope"]}]},{table_name:"files",feature_set:["storage"],add_base_columns:!0,is_form_data:!0,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"name",type:"varchar",length:255,notNull:!0},{name:"original_name",type:"varchar",length:255,notNull:!0},{name:"type",type:"varchar",length:50,enumValues:["image","document","video","audio","profile_picture"]},{name:"path",type:"varchar",length:500,notNull:!0},{name:"size",type:"bigint",mode:"number",notNull:!0},{name:"mime_type",type:"varchar",length:100,notNull:!0},{name:"extension",type:"varchar",length:10,notNull:!0},{name:"uploaded_by",type:"uuid",references:{table:"users",column:"id"}}],indexes:[{columns:["type"]},{columns:["uploaded_by"]},{columns:["size"]}]},{table_name:"addresses",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"owner_type",type:"varchar",length:50,notNull:!0,enumValues:["user","company","contact"]},{name:"owner_id",type:"uuid",notNull:!0},{name:"name",type:"varchar",length:100,notNull:!0},{name:"street",type:"varchar",length:255},{name:"city",type:"varchar",length:100},{name:"state",type:"varchar",length:50},{name:"zip",type:"varchar",length:20},{name:"country",type:"varchar",length:50,default:"US"},{name:"latitude",type:"decimal",precision:10,scale:8},{name:"longitude",type:"decimal",precision:11,scale:8},{name:"neighborhood",type:"varchar",length:100},{name:"apartment",type:"varchar",length:50},{name:"province",type:"varchar",length:100},{name:"district",type:"varchar",length:100},{name:"type",type:"varchar",length:50}],indexes:[{columns:["city","state"]},{columns:["latitude","longitude"]},{columns:["type"]},{columns:["owner_type","owner_id"]}]},{table_name:"phones",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"owner_type",type:"varchar",length:50,notNull:!0,enumValues:["user","company","contact"]},{name:"owner_id",type:"uuid",notNull:!0},{name:"name",type:"varchar",length:100,notNull:!0},{name:"type",type:"varchar",length:50,enumValues:["mobile","office","fax"]},{name:"number",type:"varchar",length:20,notNull:!0},{name:"country_code",type:"varchar",length:10,notNull:!0,default:"+1"},{name:"extension",type:"varchar",length:10}],indexes:[{columns:["number"]},{columns:["type"]},{columns:["owner_type","owner_id"]}]},{table_name:"notifications",feature_set:["authentication","notification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"user_id",type:"uuid",notNull:!0},{name:"title",type:"varchar",length:255,notNull:!0},{name:"body",type:"varchar",length:1000},{name:"entity_name",type:"varchar",length:100},{name:"entity_id",type:"uuid"},{name:"is_seen",type:"boolean",notNull:!0,default:!1},{name:"seen_at",type:"timestamptz"}],indexes:[{columns:["user_id","created_at"]},{columns:["is_seen"]}]},{table_name:"tenants",feature_set:["multi-tenant"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["main"],excluded_schemas:[],excluded_methods:[],columns:[{name:"subdomain",type:"varchar",length:100,notNull:!0,unique:!0},{name:"company_id",type:"uuid",notNull:!0},{name:"schema_name",type:"varchar",length:100,notNull:!0,unique:!0},{name:"company_name",type:"varchar",length:255},{name:"god_admin_email",type:"varchar",length:255}],indexes:[]},{table_name:"verifications",feature_set:["authentication","verification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"requirement_id",type:"uuid",notNull:!0,references:{table:"verificationRequirements",column:"id"}},{name:"verifier_id",type:"uuid",notNull:!0,references:{table:"users",column:"id"}},{name:"signature_id",type:"uuid",references:{table:"files",column:"id"}},{name:"entity_name",type:"varchar",length:100,notNull:!0},{name:"entity_id",type:"uuid",notNull:!0},{name:"step_order",type:"integer",notNull:!0,default:1},{name:"decision",type:"varchar",length:50,notNull:!0,default:"pending",enumValues:["approved","rejected","pending"]},{name:"reason",type:"text"},{name:"diff",type:"jsonb"}],indexes:[{columns:["requirement_id"]},{columns:["verifier_id"]},{columns:["entity_name","entity_id"]},{columns:["entity_name","entity_id","step_order"]},{columns:["decision"]}]},{table_name:"verificationRequirements",feature_set:["authentication","verification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"entity_id",type:"uuid"},{name:"entity_name",type:"varchar",length:100},{name:"verifier_type",type:"varchar",length:30,enumValues:["user","role","entity_creator"]},{name:"verifier_id",type:"uuid"},{name:"verifier_role",type:"varchar",length:50},{name:"is_signature_mandatory",type:"boolean",notNull:!0},{name:"step_order",type:"integer",notNull:!0,default:1},{name:"is_all_required",type:"boolean",notNull:!0,default:!1},{name:"connected_from_step_order",type:"integer"},{name:"position_x",type:"numeric"},{name:"position_y",type:"numeric"}],indexes:[{columns:["entity_id"]}]},{table_name:"verificationFlows",feature_set:["authentication","verification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"entity_name",type:"varchar",length:100,notNull:!0},{name:"name",type:"varchar",length:255,notNull:!0},{name:"description",type:"text"},{name:"trigger_on",type:"varchar",length:50,notNull:!0,default:"update",enumValues:["create","update","delete","manual"]},{name:"trigger_fields",type:"jsonb"},{name:"is_draft",type:"boolean",notNull:!0,default:!0},{name:"published_at",type:"timestamptz"},{name:"viewport",type:"jsonb"}],indexes:[{columns:["entity_name"]},{columns:["entity_name","trigger_on"]},{columns:["is_draft"]}]},{table_name:"verificationSteps",feature_set:["authentication","verification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"flow_id",type:"uuid",notNull:!0,references:{table:"verificationFlows",column:"id",onDelete:"cascade"}},{name:"entity_name",type:"varchar",length:100,notNull:!0},{name:"node_id",type:"varchar",length:100,notNull:!0},{name:"node_type",type:"varchar",length:50,notNull:!0,default:"step",enumValues:["start","step","condition","notification","end"]},{name:"step_order",type:"integer",notNull:!0,default:1},{name:"name",type:"varchar",length:255},{name:"description",type:"text"},{name:"position_x",type:"numeric",notNull:!0,default:0},{name:"position_y",type:"numeric",notNull:!0,default:0},{name:"width",type:"numeric"},{name:"height",type:"numeric"},{name:"style",type:"jsonb"},{name:"data",type:"jsonb"}],indexes:[{columns:["flow_id"]},{columns:["entity_name"]},{columns:["flow_id","node_id"],unique:!0},{columns:["entity_name","step_order"]}]},{table_name:"verificationEdges",feature_set:["authentication","verification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"flow_id",type:"uuid",notNull:!0,references:{table:"verificationFlows",column:"id",onDelete:"cascade"}},{name:"edge_id",type:"varchar",length:100,notNull:!0},{name:"source_node_id",type:"varchar",length:100,notNull:!0},{name:"target_node_id",type:"varchar",length:100,notNull:!0},{name:"source_handle",type:"varchar",length:50},{name:"target_handle",type:"varchar",length:50},{name:"edge_type",type:"varchar",length:50,default:"default",enumValues:["default","conditional","success","failure"]},{name:"label",type:"varchar",length:255},{name:"condition",type:"jsonb"},{name:"style",type:"jsonb"},{name:"animated",type:"boolean",default:!1}],indexes:[{columns:["flow_id"]},{columns:["flow_id","edge_id"],unique:!0},{columns:["source_node_id"]},{columns:["target_node_id"]}]},{table_name:"verificationNotificationRules",feature_set:["authentication","verification","notification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"flow_id",type:"uuid",notNull:!0,references:{table:"verificationFlows",column:"id",onDelete:"cascade"}},{name:"step_node_id",type:"varchar",length:100},{name:"trigger",type:"varchar",length:50,notNull:!0,enumValues:["on_flow_started","on_step_reached","on_approved","on_rejected","on_flow_completed"]},{name:"channel",type:"varchar",length:20,notNull:!0,default:"portal",enumValues:["portal","email","both"]},{name:"title_template",type:"varchar",length:255},{name:"body_template",type:"text"},{name:"starts_at",type:"timestamptz"},{name:"expires_at",type:"timestamptz"}],indexes:[{columns:["flow_id"]},{columns:["flow_id","step_node_id"]},{columns:["trigger"]}]},{table_name:"verificationNotificationRecipients",feature_set:["authentication","verification","notification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"rule_id",type:"uuid",notNull:!0},{name:"recipient_type",type:"varchar",length:20,notNull:!0,enumValues:["user","role","all_verifiers","step_verifier"]},{name:"recipient_user_id",type:"uuid"},{name:"recipient_role_id",type:"uuid"},{name:"channel",type:"varchar",length:20,notNull:!0,enumValues:["portal"]}],indexes:[{columns:["rule_id"]},{columns:["recipient_type"]},{columns:["channel"]}]},{table_name:"user_sessions",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:["POST","PUT","PATCH"],columns:[{name:"user_id",type:"uuid",notNull:!0,references:{table:"users",column:"id",onDelete:"cascade"}},{name:"token_hash",type:"varchar",length:255,notNull:!0},{name:"refresh_token_hash",type:"varchar",length:255},{name:"device_fingerprint",type:"varchar",length:255},{name:"device_name",type:"varchar",length:100},{name:"device_type",type:"varchar",length:50,enumValues:["desktop","mobile","tablet","unknown"]},{name:"browser_name",type:"varchar",length:50},{name:"browser_version",type:"varchar",length:20},{name:"os_name",type:"varchar",length:50},{name:"os_version",type:"varchar",length:20},{name:"ip_address",type:"varchar",length:45,notNull:!0},{name:"location_country",type:"varchar",length:100},{name:"location_city",type:"varchar",length:100},{name:"location_coordinates",type:"varchar",length:50},{name:"last_activity_at",type:"timestamptz",notNull:!0,defaultRaw:"now()"},{name:"expires_at",type:"timestamptz",notNull:!0},{name:"revoked_at",type:"timestamptz"},{name:"revoked_reason",type:"varchar",length:100,enumValues:["user_logout","user_revoked","admin_revoked","security_concern","password_changed","expired","replaced"]},{name:"is_current",type:"boolean",notNull:!0,default:!1},{name:"login_method",type:"varchar",length:50,enumValues:["password","oauth_google","oauth_github","oauth_microsoft","magic_link","sso","api_key"]},{name:"remember_me",type:"boolean",notNull:!0,default:!1},{name:"trust_score",type:"integer",default:100},{name:"approval_status",type:"varchar",length:20,default:"approved",enumValues:["approved","pending","rejected"]},{name:"approval_token",type:"varchar",length:64},{name:"approval_requested_at",type:"timestamptz"},{name:"approval_responded_at",type:"timestamptz"}],indexes:[{columns:["user_id"]},{columns:["token_hash"],unique:!0},{columns:["refresh_token_hash"]},{columns:["user_id","is_active"]},{columns:["expires_at"]},{columns:["device_fingerprint"]},{columns:["ip_address"]},{columns:["last_activity_at"]},{columns:["approval_status"]},{columns:["approval_token"]}]},{table_name:"password_reset_tokens",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:["POST","PUT","PATCH","DELETE"],columns:[{name:"user_id",type:"uuid",notNull:!0,references:{table:"users",column:"id",onDelete:"cascade"}},{name:"token_hash",type:"varchar",length:255,notNull:!0},{name:"expires_at",type:"timestamptz",notNull:!0},{name:"used_at",type:"timestamptz"}],indexes:[{columns:["token_hash"],unique:!0},{columns:["user_id"]},{columns:["expires_at"]}]},{table_name:"magic_link_tokens",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:["POST","PUT","PATCH","DELETE"],columns:[{name:"user_id",type:"uuid",notNull:!0,references:{table:"users",column:"id",onDelete:"cascade"}},{name:"email",type:"varchar",length:255,notNull:!0},{name:"token_hash",type:"varchar",length:255,notNull:!0},{name:"expires_at",type:"timestamptz",notNull:!0},{name:"used_at",type:"timestamptz"}],indexes:[{columns:["token_hash"],unique:!0},{columns:["user_id"]},{columns:["email"]},{columns:["expires_at"]}]},{table_name:"audit_logs",feature_set:["audit"],add_base_columns:!1,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:["POST","PUT","DELETE","PATCH","TOGGLE","VERIFICATION"],columns:[{name:"id",type:"uuid",primaryKey:!0,defaultRaw:"gen_random_uuid()"},{name:"entity_id",type:"uuid"},{name:"entity_name",type:"text",notNull:!0},{name:"operation_type",type:"text",notNull:!0},{name:"user_id",type:"uuid"},{name:"ip_address",type:"text"},{name:"user_agent",type:"text"},{name:"summary",type:"text"},{name:"old_values",type:"jsonb"},{name:"new_values",type:"jsonb"},{name:"created_at",type:"timestamp",notNull:!0,defaultRaw:"now()"},{name:"path",type:"text"},{name:"query",type:"text"}],indexes:[{columns:["entity_id"]},{columns:["entity_name"]},{columns:["user_id"]},{columns:["created_at"]}]}]};var D={login:{key:"LOGIN",method:"POST",defaultRoute:"/auth/login",defaultIsPublic:!0,_payload:void 0,_success:void 0,_error:void 0},register:{key:"REGISTER",method:"POST",defaultRoute:"/auth/register",defaultIsPublic:!0,_payload:void 0,_success:void 0,_error:void 0},logout:{key:"LOGOUT",method:"POST",defaultRoute:"/auth/logout",defaultIsPublic:!1,_payload:void 0,_success:void 0,_error:void 0},refresh:{key:"REFRESH",method:"POST",defaultRoute:"/auth/refresh",defaultIsPublic:!1,_payload:void 0,_success:void 0,_error:void 0},me:{key:"ME",method:"GET",defaultRoute:"/auth/me",defaultIsPublic:!1,_payload:void 0,_success:void 0,_error:void 0},passwordChange:{key:"PASSWORD_CHANGE",method:"POST",defaultRoute:"/auth/password-change",defaultIsPublic:!1,_payload:void 0,_success:void 0,_error:void 0},passwordSet:{key:"PASSWORD_SET",method:"POST",defaultRoute:"/auth/password-set",defaultIsPublic:!1,_payload:void 0,_success:void 0,_error:void 0},passwordReset:{key:"PASSWORD_RESET_REQUEST",method:"POST",defaultRoute:"/auth/password-reset",defaultIsPublic:!0,subEndpoints:[{key:"PASSWORD_RESET_REQUEST",method:"POST",suffix:"/request",_payload:void 0,_success:void 0,_error:void 0},{key:"PASSWORD_RESET_CONFIRM",method:"POST",suffix:"/confirm",_payload:void 0,_success:void 0,_error:void 0}]},sessions:{key:"SESSIONS",method:"GET",defaultRoute:"/auth/sessions",defaultIsPublic:!1,subEndpoints:[{key:"SESSIONS",method:"GET",suffix:"",_payload:void 0,_success:void 0,_error:void 0},{key:"SESSIONS_CURRENT",method:"GET",suffix:"/current",_payload:void 0,_success:void 0,_error:void 0},{key:"SESSIONS_STATS",method:"GET",suffix:"/stats",_payload:void 0,_success:void 0,_error:void 0},{key:"SESSIONS_PENDING",method:"GET",suffix:"/pending",_payload:void 0,_success:void 0,_error:void 0},{key:"SESSIONS_REVOKE",method:"DELETE",suffix:"/:sessionId",_payload:void 0,_success:void 0,_error:void 0},{key:"SESSIONS_REVOKE_ALL",method:"DELETE",suffix:"/all",_payload:void 0,_success:void 0,_error:void 0},{key:"SESSIONS_APPROVE",method:"POST",suffix:"/approve",_payload:void 0,_success:void 0,_error:void 0},{key:"SESSIONS_REJECT",method:"POST",suffix:"/reject",_payload:void 0,_success:void 0,_error:void 0}]},magicLink:{key:"MAGIC_LINK",method:"POST",defaultRoute:"/auth/magic-link",defaultIsPublic:!0,subEndpoints:[{key:"MAGIC_LINK",method:"POST",suffix:"",_payload:void 0,_success:void 0,_error:void 0},{key:"MAGIC_LINK_VERIFY",method:"GET",suffix:"/verify",routeKey:"verifyRoute",_payload:void 0,_success:void 0,_error:void 0}]},invite:{key:"INVITE",method:"POST",defaultRoute:"/auth/invite",defaultIsPublic:!1,_payload:void 0,_success:void 0,_error:void 0},emailVerification:{key:"VERIFY_EMAIL",method:"GET",defaultRoute:"/verify-email",defaultIsPublic:!0,subEndpoints:[{key:"VERIFY_EMAIL",method:"GET",suffix:"",_payload:void 0,_success:void 0,_error:void 0},{key:"RESEND_VERIFICATION",method:"POST",suffix:"",routeKey:"resendRoute",defaultRoute:"/resend-verification",_payload:void 0,_success:void 0,_error:void 0}]},captcha:{key:"CAPTCHA",method:"GET",defaultRoute:"/auth/captcha",defaultIsPublic:!0,subEndpoints:[{key:"CAPTCHA_GENERATE",method:"GET",suffix:"/generate",_payload:void 0,_success:void 0,_error:void 0},{key:"CAPTCHA_VALIDATE",method:"POST",suffix:"/validate",_payload:void 0,_success:void 0,_error:void 0}]}};var re=["profiles","addresses","phones","files","users","roles","claims","user_roles","role_claims"],de=V.tables.filter((e)=>re.includes(e.table_name));function v(e){return e.replace(/([a-z])([A-Z])/g,"$1_$2").replace(/[\s-]+/g,"_").toUpperCase()}function ue(e){return e.replace(/_([a-z])/g,(n,t)=>t.toUpperCase())}function N(e){if(e.endsWith("ies"))return`${e.slice(0,-3)}y`;if(e.endsWith("ses"))return`${e.slice(0,-2)}`;if(e.endsWith("s"))return e.slice(0,-1);return e}function g(e,n){let t=v(e),s=v(N(e));switch(n){case"GET":return`GET_${t}`;case"POST":return`ADD_${s}`;case"PUT":return`UPDATE_${s}`;case"PATCH":return`PATCH_${s}`;case"DELETE":return`DELETE_${s}`}}function C(e,n){let t=v(e);switch(n){case"POST":return`BULK_ADD_${t}`;case"PUT":return`BULK_UPDATE_${t}`;case"DELETE":return`BULK_DELETE_${t}`}}function T(e,n){if(!e.excluded_methods)return!1;let t={GET:"GET",POST:"POST",PUT:"PUT",PATCH:"PATCH",DELETE:"DELETE"};return e.excluded_methods.includes(t[n])}function z(e){let n={};for(let t of e.entities){let s=t.table_name,i=`/${s}`;if(!T(t,"GET")){n[g(s,"GET")]={method:"GET",path:i,isPublic:t.is_public?.GET??!1,_payload:void 0,_success:void 0,_error:void 0};let o=v(N(s));n[`GET_${o}_BY_ID`]={method:"GET",path:`${i}/:id`,isPublic:t.is_public?.GET??!1,_payload:void 0,_success:void 0,_error:void 0},n[`GET_${v(s)}_DISTINCT`]={method:"GET",path:`${i}/distinct/:field`,isPublic:t.is_public?.GET??!1,_payload:void 0,_success:void 0,_error:void 0}}if(!T(t,"POST"))n[g(s,"POST")]={method:"POST",path:i,isPublic:t.is_public?.POST??!1,isFormData:t.is_form_data,_payload:void 0,_success:void 0,_error:void 0};if(!T(t,"PUT"))n[g(s,"PUT")]={method:"PUT",path:`${i}/:id`,isPublic:t.is_public?.PUT??!1,isFormData:t.is_form_data,_payload:void 0,_success:void 0,_error:void 0};if(!T(t,"PATCH"))n[g(s,"PATCH")]={method:"PATCH",path:`${i}/:id`,isPublic:t.is_public?.PATCH??!1,_payload:void 0,_success:void 0,_error:void 0};if(!T(t,"DELETE"))n[g(s,"DELETE")]={method:"DELETE",path:`${i}/:id`,isPublic:t.is_public?.DELETE??!1,_payload:void 0,_success:void 0,_error:void 0};if(t.bulk_endpoints_enabled){if(!T(t,"POST"))n[C(s,"POST")]={method:"POST",path:`${i}/bulk`,isPublic:t.is_public?.POST??!1,_payload:void 0,_success:void 0,_error:void 0};if(!T(t,"PUT"))n[C(s,"PUT")]={method:"PUT",path:`${i}/bulk`,isPublic:t.is_public?.PUT??!1,_payload:void 0,_success:void 0,_error:void 0};if(!T(t,"DELETE"))n[C(s,"DELETE")]={method:"DELETE",path:`${i}/bulk`,isPublic:t.is_public?.DELETE??!1,_payload:void 0,_success:void 0,_error:void 0}}}return n}function H(e){let n={},t=e.authentication;if(!t?.enabled)return n;for(let[s,i]of Object.entries(D)){let o=t[s];if(!o?.enabled)continue;let r=o.route||i.defaultRoute,a=o.isPublic??i.defaultIsPublic;if("subEndpoints"in i&&i.subEndpoints)for(let d of i.subEndpoints){let l="routeKey"in d&&d.routeKey&&o[d.routeKey]?String(o[d.routeKey]):("defaultRoute"in d)&&d.defaultRoute?String(d.defaultRoute):`${r}${d.suffix}`;n[d.key]={method:d.method,path:l,isPublic:d.key==="MAGIC_LINK_VERIFY"?!0:a,_payload:d._payload,_success:d._success,_error:d._error}}else if("_payload"in i)n[i.key]={method:i.method,path:r,isPublic:a,_payload:i._payload,_success:i._success,_error:i._error}}return n}function q(){let e={};for(let n of de){let t=n.table_name,i=`/${ue(t)}`,o=t==="files";e[g(t,"GET")]={method:"GET",path:i,isPublic:!1,_payload:void 0,_success:void 0,_error:void 0};let r=v(N(t));e[`GET_${r}_BY_ID`]={method:"GET",path:`${i}/:id`,isPublic:!1,_payload:void 0,_success:void 0,_error:void 0},e[g(t,"POST")]={method:"POST",path:i,isPublic:!1,isFormData:o,_payload:void 0,_success:void 0,_error:void 0},e[g(t,"PUT")]={method:"PUT",path:`${i}/:id`,isPublic:!1,isFormData:o,_payload:void 0,_success:void 0,_error:void 0},e[g(t,"PATCH")]={method:"PATCH",path:`${i}/:id`,isPublic:!1,_payload:void 0,_success:void 0,_error:void 0},e[g(t,"DELETE")]={method:"DELETE",path:`${i}/:id`,isPublic:!1,_payload:void 0,_success:void 0,_error:void 0}}return e}function le(e,n){let t=z(e),s=H(e),i=q();return{...t,...s,...i,...n??{}}}import{randomUUID as fe}from"crypto";import{randomUUID as pe}from"crypto";var I={debug:0,info:1,warn:2,error:3,fatal:4},W={debug:"\x1B[36m",info:"\x1B[32m",warn:"\x1B[33m",error:"\x1B[31m",fatal:"\x1B[35m"},L="\x1B[0m",O="\x1B[2m",j="\x1B[1m";var ce=["password","secret","token","apiKey","api_key","authorization","cookie","credit_card","creditCard","ssn","privateKey","private_key"];function P(e,n=ce,t=new WeakSet){if(e===null||e===void 0)return e;if(typeof e!=="object")return e;if(t.has(e))return"[Circular]";if(t.add(e),Array.isArray(e))return e.map((i)=>P(i,n,t));let s={};for(let[i,o]of Object.entries(e))if(n.some((a)=>i.toLowerCase().includes(a.toLowerCase()))&&typeof o==="string")s[i]="[REDACTED]";else if(typeof o==="object"&&o!==null)s[i]=P(o,n,t);else s[i]=o;return s}function Y(e=4){let n=Error().stack;if(!n)return{file:"unknown",line:0,function:"unknown"};let s=n.split(`
|
|
3
|
-
`)[e];if(!s)return{file:"unknown",line:0,function:"unknown"};let i=s.match(/at\s+(?:(.+?)\s+)?\(?(.+?):(\d+):(\d+)\)?/);if(!i)return{file:"unknown",line:0,function:"unknown"};let[,o,r,a]=i;return{file:r?r.split("/").pop()||r:"unknown",line:parseInt(a||"0",10),function:o?.replace(/^Object\./,"")||"anonymous"}}function
|
|
4
|
-
`).slice(1,4);for(let m of u)n(` ${i}${m.trim()}${s}`)}}}getConsoleMethod(e){switch(e){case"debug":return console.debug.bind(console);case"info":return console.info.bind(console);case"warn":return console.warn.bind(console);case"error":case"fatal":return console.error.bind(console);default:return console.log.bind(console)}}}class F{name="console-audit";enabled;constructor(e={}){this.enabled=e.enabled??!0}write(e){if(!this.enabled)return;let n="\x1B[35m",t=L,s=O;console.log(`${s}${e.timestamp}${t} ${n}AUDIT${t} [${e.operation}] ${e.entityName}${e.entityId?`:${e.entityId}`:""} ${s}by ${e.userId||"anonymous"}${t}`)}}var me={level:"info",service:"nucleus",environment:"development",redactKeys:[],colorize:!0,prettyPrint:!0,includeCallerInfo:!0,asyncBufferSize:100,flushIntervalMs:1000,auditEnabled:!1};class y{config;transports;auditTransports;context;correlationId;static instance=null;constructor(e={},n={},t){this.config={...me,...e},this.context=n,this.correlationId=t,this.transports=[new $({colorize:this.config.colorize,prettyPrint:this.config.prettyPrint})],this.auditTransports=[new F({enabled:this.config.prettyPrint})]}static getInstance(e){if(!y.instance)y.instance=new y(e);return y.instance}static resetInstance(){y.instance=null}child(e,n){let t=new y(this.config,B(this.context,e)||{},n||this.correlationId);return t.transports=this.transports,t.auditTransports=this.auditTransports,t}withCorrelationId(e){return this.child({},e)}addTransport(e){this.transports.push(e)}addAuditTransport(e){this.auditTransports.push(e)}setLevel(e){this.config.level=e}setAuditEnabled(e){this.config.auditEnabled=e}isAuditEnabled(){return this.config.auditEnabled}shouldLog(e){return I[e]>=I[this.config.level]}createEntry(e,n,t,s,i){let o={timestamp:new Date().toISOString(),level:e,message:n,service:this.config.service,correlationId:this.correlationId},r=B(this.context,t);if(r&&Object.keys(r).length>0)o.context=P(r,this.config.redactKeys);if(this.config.includeCallerInfo)o.caller=Y();if(s)o.error=J(s);if(i!==void 0)o.duration=performance.now()-i;return o}log(e,n,t,s,i){if(!this.shouldLog(e))return;let o=this.createEntry(e,n,t,s,i);for(let r of this.transports)try{r.log(o)}catch(a){console.error(`Logger transport "${r.name}" failed:`,a)}}debug(e,n){this.log("debug",e,n)}info(e,n){this.log("info",e,n)}warn(e,n){this.log("warn",e,n)}error(e,n,t){this.log("error",e,t,n)}fatal(e,n,t){this.log("fatal",e,t,n)}time(e){let n=performance.now();return()=>{this.log("debug",`${e} completed`,void 0,void 0,n)}}async timeAsync(e,n,t){let s=performance.now();try{let i=await n();return this.log("debug",`${e} completed`,t,void 0,s),i}catch(i){throw this.log("error",`${e} failed`,t,i,s),i}}request(e){let n=e.statusCode>=500?"error":e.statusCode>=400?"warn":"info";this.log(n,`${e.method} ${e.path} ${e.statusCode}`,{method:e.method,path:e.path,statusCode:e.statusCode,durationMs:e.duration,correlationId:e.correlationId,userId:e.userId,ip:e.ip,userAgent:e.userAgent})}db(e){let n=e.error?"error":"debug";this.log(n,`DB ${e.operation} on ${e.table}`,{operation:e.operation,table:e.table,durationMs:e.duration,rowCount:e.rowCount},e.error)}async flush(){for(let e of this.transports)if(e.flush)await e.flush()}async audit(e){let n={id:pe(),timestamp:new Date().toISOString(),entityName:e.entityName,entityId:e.entityId??null,operation:e.operation,userId:e.userId??null,summary:e.summary||`${e.operation} on ${e.entityName}`,oldValues:e.oldValues||{},newValues:e.newValues||{},ipAddress:e.ipAddress||"unknown",userAgent:e.userAgent||"unknown",path:e.path||"",query:e.query||"",correlationId:this.correlationId};for(let t of this.auditTransports)try{await t.write(n)}catch(s){console.error(`Audit transport "${t.name}" failed:`,s)}}auditOnly(e){this.audit(e)}async trace(e){let n=e.log!==!1,t=e.writeAudit===!0||e.writeAudit!==!1&&this.config.auditEnabled&&e.audit;if(n)this.log(e.level||"info",e.message,e.context,e.error);if(t&&e.audit)await this.audit(e.audit)}traceSync(e){let n=e.log!==!1,t=e.writeAudit===!0||e.writeAudit!==!1&&this.config.auditEnabled&&e.audit;if(n)this.log(e.level||"info",e.message,e.context,e.error);if(t&&e.audit)this.audit(e.audit)}}var Me=y.getInstance();var Ee={timeout:30000,retries:0,retryDelay:1000,debug:!1};class k{config;logger;constructor(e={}){this.config={...Ee,...e},this.logger=new y({service:"ServerFetch",prettyPrint:this.config.debug,colorize:this.config.debug,auditEnabled:!1})}buildUrl(e){if(e.startsWith("http://")||e.startsWith("https://"))return e;return this.config.baseUrl?`${this.config.baseUrl}${e}`:e}buildHeaders(e){let n=new Headers;if(this.config.defaultHeaders)for(let[t,s]of Object.entries(this.config.defaultHeaders))n.set(t,s);if(e)if(e instanceof Headers)e.forEach((t,s)=>{n.set(s,t)});else if(Array.isArray(e))for(let[t,s]of e)n.set(t,s);else for(let[t,s]of Object.entries(e))n.set(t,s);return n}parseResponseHeaders(e){let n={};if(e.forEach((t,s)=>{if(s.toLowerCase()==="set-cookie"){let i=n[s];n[s]=i?`${i}, ${t}`:t}else n[s]=t}),typeof e.getSetCookie==="function"){let t=e.getSetCookie();if(t.length>0)n["set-cookie"]=t.join(", ")}return n}async executeWithTimeout(e,n,t){let s=new AbortController,i=setTimeout(()=>s.abort(),n);try{return await Promise.race([e,new Promise((r,a)=>{s.signal.addEventListener("abort",()=>{a(Error(`Request timeout after ${n}ms`))})})])}finally{clearTimeout(i)}}async fetch(e){let n=fe(),t=performance.now(),s=this.buildUrl(e.url),i=this.buildHeaders(e.headers),o=e.timeout??this.config.timeout??30000,r=e.retries??this.config.retries??0,a=e.retryDelay??this.config.retryDelay??1000,d;if(e.body)if(typeof e.body==="object"&&!(e.body instanceof FormData)&&!(e.body instanceof URLSearchParams)&&!(e.body instanceof Blob)&&!(e.body instanceof ArrayBuffer)){if(d=JSON.stringify(e.body),!i.has("content-type"))i.set("content-type","application/json")}else d=e.body;this.logger.debug(`[${n}] ${e.method} ${s}`,{method:e.method,url:s,hasBody:!!d});let l=null,f=0;while(f<=r)try{let u=await this.executeWithTimeout(fetch(s,{method:e.method,headers:i,body:d}),o,n),m=performance.now()-t,E=this.parseResponseHeaders(u.headers),b,c,p=await u.text();if(p)try{let h=JSON.parse(p);if(u.ok)b=h;else c=h}catch{if(!u.ok)c={message:p||u.statusText}}else if(!u.ok)c={message:u.statusText};let _={isSuccess:u.ok,response:b,errors:c,code:u.status,headers:E,durationMs:m,requestId:n,createdAt:new Date};if(u.ok)this.logger.info(`[${n}] ${e.method} ${s} ${u.status}`,{method:e.method,url:s,statusCode:u.status,durationMs:Math.round(m)});else this.logger.warn(`[${n}] ${e.method} ${s} ${u.status}`,{method:e.method,url:s,statusCode:u.status,durationMs:Math.round(m),error:c});return _}catch(u){if(l=u instanceof Error?u:Error(String(u)),f++,f<=r)this.logger.warn(`[${n}] Retry ${f}/${r} after error`,{method:e.method,url:s,error:l.message,attempt:f,retries:r}),await new Promise((m)=>setTimeout(m,a))}let R=performance.now()-t;return this.logger.error(`[${n}] ${e.method} ${s} failed`,l,{method:e.method,url:s,durationMs:Math.round(R),attempts:f}),{isSuccess:!1,response:void 0,errors:{message:l?.message||"Unknown error"},code:null,headers:{},durationMs:R,requestId:n,createdAt:new Date}}async get(e,n){return this.fetch({...n,url:e,method:"GET"})}async post(e,n,t){return this.fetch({...t,url:e,method:"POST",body:n})}async put(e,n,t){return this.fetch({...t,url:e,method:"PUT",body:n})}async patch(e,n,t){return this.fetch({...t,url:e,method:"PATCH",body:n})}async delete(e,n){return this.fetch({...n,url:e,method:"DELETE"})}}var Ve=new k;var ge={accessToken:"access_token",refreshToken:"refresh_token",sessionToken:"session_token"};function ye(e){let n=[],t="";for(let s=0;s<e.length;s++){let i=e[s];if(i===","){let o=e.slice(s+1).trimStart();if(/^[a-zA-Z0-9_-]+=/.test(o)){n.push(t.trim()),t="";continue}}t+=i}if(t.trim())n.push(t.trim());return n}function _e(e,n){let t={},s=["x-forwarded-for","x-real-ip","user-agent","accept-language","x-request-id","x-client-ip","cf-connecting-ip","true-client-ip"];for(let d of s){let l=e.get(d);if(l)t[d]=l}if(!t["user-agent"])t["user-agent"]="Nucleus-ServerAction/1.0";let i=e.get(`x-${n.accessToken}`),o=e.get(`x-${n.refreshToken}`),r=e.get(`x-${n.sessionToken}`);if(i)t[`x-${n.accessToken}`]=i;if(o)t[`x-${n.refreshToken}`]=o;if(r)t[`x-${n.sessionToken}`]=r;let a=e.get("cookie");if(a)t.cookie=a;return t}function he(e){return e.replace(/_([a-z])/g,(n,t)=>t.toUpperCase())}function X(e){let n={};for(let[t,s]of Object.entries(e)){let i=t.startsWith("_")?t:he(t);if(s instanceof Date)n[i]=s.toISOString();else if(s&&typeof s==="object"&&!Array.isArray(s))n[i]=X(s);else n[i]=s}return n}function Te(e,n){let t=new URLSearchParams,s=(o,r)=>{if(r===void 0||r===null)return;if(Array.isArray(r))for(let a of r)s(`${o}[]`,a);else if(r instanceof Date)t.append(o,r.toISOString());else if(typeof r==="object")for(let[a,d]of Object.entries(r))s(`${o}[${a}]`,d);else t.append(o,String(r))};for(let[o,r]of Object.entries(n))s(o,r);let i=t.toString();if(!i)return e;return e.includes("?")?`${e}&${i}`:`${e}?${i}`}function Re(e,n,t,s){let i={...ge,...n.tokenNames},o=new k({baseUrl:n.baseUrl,debug:n.debug,timeout:30000,retries:0});return async function(a,d){let l=e[a];if(!l)return{isSuccess:!1,errors:{message:`Endpoint "${a}" not found`},code:404};let f=await t(),R=await s(),u={};R.forEach((p,_)=>{u[_]=p});let m=_e(R,i),E=l.path,b;if(d&&typeof d==="object"&&!(d instanceof FormData)){let p=d;for(let[_,h]of Object.entries(p))if(h!=null){if(_.startsWith("_"))E=E.replace(`:${_.substring(1)}`,String(h));else if(_==="id"&&E.includes(":id"))E=E.replace(":id",String(h))}}if(l.method==="GET"&&d&&typeof d==="object")E=Te(E,d);else if(d!==void 0){if(l.isFormData&&d instanceof FormData)b=d;else if(b=X(d),!m["content-type"])m["content-type"]="application/json"}let c=await o.fetch({url:E,method:l.method,headers:m,body:b});if(c.headers["set-cookie"])try{let p=c.headers["set-cookie"],_=ye(p);for(let h of _){let[M,...ee]=h.split(";");if(!M)continue;let[G,K]=M.split("=");if(G&&K){let S={};for(let ne of ee){let[U,w]=ne.trim().split("=");if(!U)continue;let x=U.toLowerCase();if(x==="path")S.path=w;else if(x==="max-age")S.maxAge=Number(w);else if(x==="expires"&&w)S.expires=new Date(w);else if(x==="httponly")S.httpOnly=!0;else if(x==="secure")S.secure=!0;else if(x==="samesite")S.sameSite=w}f.set(G.trim(),K.trim(),S)}}}catch(p){console.warn("[ServerFactory] Failed to process Set-Cookie headers:",p instanceof Error?p.message:String(p))}return{isSuccess:c.isSuccess,data:c.response,errors:c.errors,code:c.code,message:c.isSuccess?void 0:c.errors?.message}}}export{q as generateSystemTableEndpoints,z as generateEndpointsFromConfig,H as generateAuthEndpoints,le as generateAllEndpoints,Re as createServerFactory,oe as createApiHook,D as AUTH_ENDPOINT_CONFIGS};
|
|
2
|
+
import{batch as N,createStore as se}from"h-state";import{useEffectEvent as ie}from"react";function oe(e){let n={};for(let t of Object.keys(e))n[t]={isPending:!1,data:null,error:null,code:null};return n}function ae(e,n){let{useStore:t}=se(oe(e),{_callEndpoint:(s)=>async(i,o)=>{if(!s[i])return;N(()=>{s[i].isPending=!0,s[i].error=null});try{let a=await n(i,o.payload);if(N(()=>{if(s[i].isPending=!1,s[i].code=a.code??null,a.isSuccess&&a.data!==void 0)s[i].data=a.data,s[i].error=null;else s[i].error=a.errors??null}),a.isSuccess)o.onAfterHandle?.(a.data??a);else o.onErrorHandle?.(a.errors??{message:"Request failed"},a.code)}catch(a){N(()=>{s[i].isPending=!1,s[i].error={message:a instanceof Error?a.message:"Unknown error"}}),o.onErrorHandle?.({message:a instanceof Error?a.message:"Unknown error"},null)}}});return function(){let i=t(),o=ie((a,d)=>{i._callEndpoint(a,d)}),r={};for(let a of Object.keys(e)){let d=(l)=>{o(a,l)};r[a]={state:i[a],start:d}}return r}}var z={$schema:"../schemas/nucleus.tables.schema.json",tables:[{table_name:"users",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"email",type:"varchar",length:255},{name:"password",type:"varchar",length:255},{name:"verified_at",type:"timestamp"},{name:"email_verification_token",type:"varchar",length:255},{name:"email_verification_token_expires_at",type:"timestamp"},{name:"email_verification_sent_at",type:"timestamp"},{name:"email_verification_attempts",type:"integer",default:0},{name:"last_login_at",type:"timestamp"},{name:"login_count",type:"integer",default:0},{name:"is_locked",type:"boolean",default:!1},{name:"locked_until",type:"timestamp"},{name:"failed_login_attempts",type:"integer",default:0},{name:"is_god",type:"boolean",default:!1}],indexes:[{columns:["email"],unique:!0},{columns:["email","is_active"]},{columns:["last_login_at"]},{columns:["is_locked","locked_until"]}]},{table_name:"profiles",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"user_id",type:"uuid",notNull:!0,references:{table:"users",column:"id"}},{name:"first_name",type:"varchar",length:100,notNull:!0},{name:"last_name",type:"varchar",length:100,notNull:!0}],indexes:[{columns:["user_id"],unique:!0},{columns:["first_name","last_name"]}]},{table_name:"roles",feature_set:["authentication","authorization"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"name",type:"varchar",length:100,notNull:!0},{name:"description",type:"varchar",length:500}],indexes:[{columns:["name"],unique:!0}]},{table_name:"claims",feature_set:["authentication","authorization"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"action",type:"varchar",length:100,notNull:!0},{name:"description",type:"varchar",length:500},{name:"path",type:"varchar",length:200,notNull:!0},{name:"method",type:"varchar",length:10,notNull:!0}],indexes:[{columns:["action"],unique:!0},{columns:["path","method"]}]},{table_name:"user_roles",feature_set:["authentication","authorization"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"user_id",type:"uuid",notNull:!0,references:{table:"users",column:"id",onDelete:"cascade"}},{name:"role_id",type:"uuid",notNull:!0,references:{table:"roles",column:"id",onDelete:"cascade"}}],indexes:[{columns:["user_id"]},{columns:["role_id"]}],constraints:{unique:[{name:"unique_user_role",columns:["user_id","role_id"]}]}},{table_name:"role_claims",feature_set:["authentication","authorization"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"role_id",type:"uuid",notNull:!0,references:{table:"roles",column:"id",onDelete:"cascade"}},{name:"claim_id",type:"uuid",notNull:!0,references:{table:"claims",column:"id",onDelete:"cascade"}},{name:"scope",type:"text"}],indexes:[{columns:["role_id"]},{columns:["claim_id"]},{columns:["role_id","claim_id","scope"]}]},{table_name:"files",feature_set:["storage"],add_base_columns:!0,is_form_data:!0,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"name",type:"varchar",length:255,notNull:!0},{name:"original_name",type:"varchar",length:255,notNull:!0},{name:"type",type:"varchar",length:50,enumValues:["image","document","video","audio","profile_picture"]},{name:"path",type:"varchar",length:500,notNull:!0},{name:"size",type:"bigint",mode:"number",notNull:!0},{name:"mime_type",type:"varchar",length:100,notNull:!0},{name:"extension",type:"varchar",length:10,notNull:!0},{name:"uploaded_by",type:"uuid",references:{table:"users",column:"id"}}],indexes:[{columns:["type"]},{columns:["uploaded_by"]},{columns:["size"]}]},{table_name:"addresses",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"owner_type",type:"varchar",length:50,notNull:!0,enumValues:["user","company","contact"]},{name:"owner_id",type:"uuid",notNull:!0},{name:"name",type:"varchar",length:100,notNull:!0},{name:"street",type:"varchar",length:255},{name:"city",type:"varchar",length:100},{name:"state",type:"varchar",length:50},{name:"zip",type:"varchar",length:20},{name:"country",type:"varchar",length:50,default:"US"},{name:"latitude",type:"decimal",precision:10,scale:8},{name:"longitude",type:"decimal",precision:11,scale:8},{name:"neighborhood",type:"varchar",length:100},{name:"apartment",type:"varchar",length:50},{name:"province",type:"varchar",length:100},{name:"district",type:"varchar",length:100},{name:"type",type:"varchar",length:50}],indexes:[{columns:["city","state"]},{columns:["latitude","longitude"]},{columns:["type"]},{columns:["owner_type","owner_id"]}]},{table_name:"phones",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"owner_type",type:"varchar",length:50,notNull:!0,enumValues:["user","company","contact"]},{name:"owner_id",type:"uuid",notNull:!0},{name:"name",type:"varchar",length:100,notNull:!0},{name:"type",type:"varchar",length:50,enumValues:["mobile","office","fax"]},{name:"number",type:"varchar",length:20,notNull:!0},{name:"country_code",type:"varchar",length:10,notNull:!0,default:"+1"},{name:"extension",type:"varchar",length:10}],indexes:[{columns:["number"]},{columns:["type"]},{columns:["owner_type","owner_id"]}]},{table_name:"notifications",feature_set:["authentication","notification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"user_id",type:"uuid",notNull:!0},{name:"title",type:"varchar",length:255,notNull:!0},{name:"body",type:"varchar",length:1000},{name:"entity_name",type:"varchar",length:100},{name:"entity_id",type:"uuid"},{name:"is_seen",type:"boolean",notNull:!0,default:!1},{name:"seen_at",type:"timestamptz"}],indexes:[{columns:["user_id","created_at"]},{columns:["is_seen"]}]},{table_name:"tenants",feature_set:["multi-tenant"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["main"],excluded_schemas:[],excluded_methods:[],columns:[{name:"subdomain",type:"varchar",length:100,notNull:!0,unique:!0},{name:"company_id",type:"uuid",notNull:!0},{name:"schema_name",type:"varchar",length:100,notNull:!0,unique:!0},{name:"company_name",type:"varchar",length:255},{name:"god_admin_email",type:"varchar",length:255}],indexes:[]},{table_name:"verifications",feature_set:["authentication","verification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"requirement_id",type:"uuid",notNull:!0,references:{table:"verificationRequirements",column:"id"}},{name:"verifier_id",type:"uuid",notNull:!0,references:{table:"users",column:"id"}},{name:"signature_id",type:"uuid",references:{table:"files",column:"id"}},{name:"entity_name",type:"varchar",length:100,notNull:!0},{name:"entity_id",type:"uuid",notNull:!0},{name:"step_order",type:"integer",notNull:!0,default:1},{name:"decision",type:"varchar",length:50,notNull:!0,default:"pending",enumValues:["approved","rejected","pending"]},{name:"reason",type:"text"},{name:"diff",type:"jsonb"}],indexes:[{columns:["requirement_id"]},{columns:["verifier_id"]},{columns:["entity_name","entity_id"]},{columns:["entity_name","entity_id","step_order"]},{columns:["decision"]}]},{table_name:"verificationRequirements",feature_set:["authentication","verification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"entity_id",type:"uuid"},{name:"entity_name",type:"varchar",length:100},{name:"verifier_type",type:"varchar",length:30,enumValues:["user","role","entity_creator"]},{name:"verifier_id",type:"uuid"},{name:"verifier_role",type:"varchar",length:50},{name:"is_signature_mandatory",type:"boolean",notNull:!0},{name:"step_order",type:"integer",notNull:!0,default:1},{name:"is_all_required",type:"boolean",notNull:!0,default:!1},{name:"connected_from_step_order",type:"integer"},{name:"position_x",type:"numeric"},{name:"position_y",type:"numeric"}],indexes:[{columns:["entity_id"]}]},{table_name:"verificationFlows",feature_set:["authentication","verification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"entity_name",type:"varchar",length:100,notNull:!0},{name:"name",type:"varchar",length:255,notNull:!0},{name:"description",type:"text"},{name:"trigger_on",type:"varchar",length:50,notNull:!0,default:"update",enumValues:["create","update","delete","manual"]},{name:"trigger_fields",type:"jsonb"},{name:"is_draft",type:"boolean",notNull:!0,default:!0},{name:"published_at",type:"timestamptz"},{name:"viewport",type:"jsonb"}],indexes:[{columns:["entity_name"]},{columns:["entity_name","trigger_on"]},{columns:["is_draft"]}]},{table_name:"verificationSteps",feature_set:["authentication","verification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"flow_id",type:"uuid",notNull:!0,references:{table:"verificationFlows",column:"id",onDelete:"cascade"}},{name:"entity_name",type:"varchar",length:100,notNull:!0},{name:"node_id",type:"varchar",length:100,notNull:!0},{name:"node_type",type:"varchar",length:50,notNull:!0,default:"step",enumValues:["start","step","condition","notification","end"]},{name:"step_order",type:"integer",notNull:!0,default:1},{name:"name",type:"varchar",length:255},{name:"description",type:"text"},{name:"position_x",type:"numeric",notNull:!0,default:0},{name:"position_y",type:"numeric",notNull:!0,default:0},{name:"width",type:"numeric"},{name:"height",type:"numeric"},{name:"style",type:"jsonb"},{name:"data",type:"jsonb"}],indexes:[{columns:["flow_id"]},{columns:["entity_name"]},{columns:["flow_id","node_id"],unique:!0},{columns:["entity_name","step_order"]}]},{table_name:"verificationEdges",feature_set:["authentication","verification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"flow_id",type:"uuid",notNull:!0,references:{table:"verificationFlows",column:"id",onDelete:"cascade"}},{name:"edge_id",type:"varchar",length:100,notNull:!0},{name:"source_node_id",type:"varchar",length:100,notNull:!0},{name:"target_node_id",type:"varchar",length:100,notNull:!0},{name:"source_handle",type:"varchar",length:50},{name:"target_handle",type:"varchar",length:50},{name:"edge_type",type:"varchar",length:50,default:"default",enumValues:["default","conditional","success","failure"]},{name:"label",type:"varchar",length:255},{name:"condition",type:"jsonb"},{name:"style",type:"jsonb"},{name:"animated",type:"boolean",default:!1}],indexes:[{columns:["flow_id"]},{columns:["flow_id","edge_id"],unique:!0},{columns:["source_node_id"]},{columns:["target_node_id"]}]},{table_name:"verificationNotificationRules",feature_set:["authentication","verification","notification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"flow_id",type:"uuid",notNull:!0,references:{table:"verificationFlows",column:"id",onDelete:"cascade"}},{name:"step_node_id",type:"varchar",length:100},{name:"trigger",type:"varchar",length:50,notNull:!0,enumValues:["on_flow_started","on_step_reached","on_approved","on_rejected","on_flow_completed"]},{name:"channel",type:"varchar",length:20,notNull:!0,default:"portal",enumValues:["portal","email","both"]},{name:"title_template",type:"varchar",length:255},{name:"body_template",type:"text"},{name:"starts_at",type:"timestamptz"},{name:"expires_at",type:"timestamptz"}],indexes:[{columns:["flow_id"]},{columns:["flow_id","step_node_id"]},{columns:["trigger"]}]},{table_name:"verificationNotificationRecipients",feature_set:["authentication","verification","notification"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:[],columns:[{name:"rule_id",type:"uuid",notNull:!0},{name:"recipient_type",type:"varchar",length:20,notNull:!0,enumValues:["user","role","all_verifiers","step_verifier"]},{name:"recipient_user_id",type:"uuid"},{name:"recipient_role_id",type:"uuid"},{name:"channel",type:"varchar",length:20,notNull:!0,enumValues:["portal"]}],indexes:[{columns:["rule_id"]},{columns:["recipient_type"]},{columns:["channel"]}]},{table_name:"user_sessions",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:["POST","PUT","PATCH"],columns:[{name:"user_id",type:"uuid",notNull:!0,references:{table:"users",column:"id",onDelete:"cascade"}},{name:"token_hash",type:"varchar",length:255,notNull:!0},{name:"refresh_token_hash",type:"varchar",length:255},{name:"device_fingerprint",type:"varchar",length:255},{name:"device_name",type:"varchar",length:100},{name:"device_type",type:"varchar",length:50,enumValues:["desktop","mobile","tablet","unknown"]},{name:"browser_name",type:"varchar",length:50},{name:"browser_version",type:"varchar",length:20},{name:"os_name",type:"varchar",length:50},{name:"os_version",type:"varchar",length:20},{name:"ip_address",type:"varchar",length:45,notNull:!0},{name:"location_country",type:"varchar",length:100},{name:"location_city",type:"varchar",length:100},{name:"location_coordinates",type:"varchar",length:50},{name:"last_activity_at",type:"timestamptz",notNull:!0,defaultRaw:"now()"},{name:"expires_at",type:"timestamptz",notNull:!0},{name:"revoked_at",type:"timestamptz"},{name:"revoked_reason",type:"varchar",length:100,enumValues:["user_logout","user_revoked","admin_revoked","security_concern","password_changed","expired","replaced"]},{name:"is_current",type:"boolean",notNull:!0,default:!1},{name:"login_method",type:"varchar",length:50,enumValues:["password","oauth_google","oauth_github","oauth_microsoft","magic_link","sso","api_key"]},{name:"remember_me",type:"boolean",notNull:!0,default:!1},{name:"trust_score",type:"integer",default:100},{name:"approval_status",type:"varchar",length:20,default:"approved",enumValues:["approved","pending","rejected"]},{name:"approval_token",type:"varchar",length:64},{name:"approval_requested_at",type:"timestamptz"},{name:"approval_responded_at",type:"timestamptz"}],indexes:[{columns:["user_id"]},{columns:["token_hash"],unique:!0},{columns:["refresh_token_hash"]},{columns:["user_id","is_active"]},{columns:["expires_at"]},{columns:["device_fingerprint"]},{columns:["ip_address"]},{columns:["last_activity_at"]},{columns:["approval_status"]},{columns:["approval_token"]}]},{table_name:"password_reset_tokens",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:["POST","PUT","PATCH","DELETE"],columns:[{name:"user_id",type:"uuid",notNull:!0,references:{table:"users",column:"id",onDelete:"cascade"}},{name:"token_hash",type:"varchar",length:255,notNull:!0},{name:"expires_at",type:"timestamptz",notNull:!0},{name:"used_at",type:"timestamptz"}],indexes:[{columns:["token_hash"],unique:!0},{columns:["user_id"]},{columns:["expires_at"]}]},{table_name:"magic_link_tokens",feature_set:["authentication"],add_base_columns:!0,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:["POST","PUT","PATCH","DELETE"],columns:[{name:"user_id",type:"uuid",notNull:!0,references:{table:"users",column:"id",onDelete:"cascade"}},{name:"email",type:"varchar",length:255,notNull:!0},{name:"token_hash",type:"varchar",length:255,notNull:!0},{name:"expires_at",type:"timestamptz",notNull:!0},{name:"used_at",type:"timestamptz"}],indexes:[{columns:["token_hash"],unique:!0},{columns:["user_id"]},{columns:["email"]},{columns:["expires_at"]}]},{table_name:"audit_logs",feature_set:["audit"],add_base_columns:!1,is_form_data:!1,available_app_ids:["default_be"],available_schemas:["*"],excluded_schemas:[],excluded_methods:["POST","PUT","DELETE","PATCH","TOGGLE","VERIFICATION"],columns:[{name:"id",type:"uuid",primaryKey:!0,defaultRaw:"gen_random_uuid()"},{name:"entity_id",type:"uuid"},{name:"entity_name",type:"text",notNull:!0},{name:"operation_type",type:"text",notNull:!0},{name:"user_id",type:"uuid"},{name:"ip_address",type:"text"},{name:"user_agent",type:"text"},{name:"summary",type:"text"},{name:"old_values",type:"jsonb"},{name:"new_values",type:"jsonb"},{name:"created_at",type:"timestamp",notNull:!0,defaultRaw:"now()"},{name:"path",type:"text"},{name:"query",type:"text"}],indexes:[{columns:["entity_id"]},{columns:["entity_name"]},{columns:["user_id"]},{columns:["created_at"]}]}]};var I={login:{key:"LOGIN",method:"POST",defaultRoute:"/auth/login",defaultIsPublic:!0,_payload:void 0,_success:void 0,_error:void 0},register:{key:"REGISTER",method:"POST",defaultRoute:"/auth/register",defaultIsPublic:!0,_payload:void 0,_success:void 0,_error:void 0},logout:{key:"LOGOUT",method:"POST",defaultRoute:"/auth/logout",defaultIsPublic:!1,_payload:void 0,_success:void 0,_error:void 0},refresh:{key:"REFRESH",method:"POST",defaultRoute:"/auth/refresh",defaultIsPublic:!1,_payload:void 0,_success:void 0,_error:void 0},me:{key:"ME",method:"GET",defaultRoute:"/auth/me",defaultIsPublic:!1,_payload:void 0,_success:void 0,_error:void 0},passwordChange:{key:"PASSWORD_CHANGE",method:"POST",defaultRoute:"/auth/password-change",defaultIsPublic:!1,_payload:void 0,_success:void 0,_error:void 0},passwordSet:{key:"PASSWORD_SET",method:"POST",defaultRoute:"/auth/password-set",defaultIsPublic:!1,_payload:void 0,_success:void 0,_error:void 0},passwordReset:{key:"PASSWORD_RESET_REQUEST",method:"POST",defaultRoute:"/auth/password-reset",defaultIsPublic:!0,subEndpoints:[{key:"PASSWORD_RESET_REQUEST",method:"POST",suffix:"/request",_payload:void 0,_success:void 0,_error:void 0},{key:"PASSWORD_RESET_CONFIRM",method:"POST",suffix:"/confirm",_payload:void 0,_success:void 0,_error:void 0}]},sessions:{key:"SESSIONS",method:"GET",defaultRoute:"/auth/sessions",defaultIsPublic:!1,subEndpoints:[{key:"SESSIONS",method:"GET",suffix:"",_payload:void 0,_success:void 0,_error:void 0},{key:"SESSIONS_CURRENT",method:"GET",suffix:"/current",_payload:void 0,_success:void 0,_error:void 0},{key:"SESSIONS_STATS",method:"GET",suffix:"/stats",_payload:void 0,_success:void 0,_error:void 0},{key:"SESSIONS_PENDING",method:"GET",suffix:"/pending",_payload:void 0,_success:void 0,_error:void 0},{key:"SESSIONS_REVOKE",method:"DELETE",suffix:"/:sessionId",_payload:void 0,_success:void 0,_error:void 0},{key:"SESSIONS_REVOKE_ALL",method:"DELETE",suffix:"/all",_payload:void 0,_success:void 0,_error:void 0},{key:"SESSIONS_APPROVE",method:"POST",suffix:"/approve",_payload:void 0,_success:void 0,_error:void 0},{key:"SESSIONS_REJECT",method:"POST",suffix:"/reject",_payload:void 0,_success:void 0,_error:void 0}]},magicLink:{key:"MAGIC_LINK",method:"POST",defaultRoute:"/auth/magic-link",defaultIsPublic:!0,subEndpoints:[{key:"MAGIC_LINK",method:"POST",suffix:"",_payload:void 0,_success:void 0,_error:void 0},{key:"MAGIC_LINK_VERIFY",method:"GET",suffix:"/verify",routeKey:"verifyRoute",_payload:void 0,_success:void 0,_error:void 0}]},invite:{key:"INVITE",method:"POST",defaultRoute:"/auth/invite",defaultIsPublic:!1,_payload:void 0,_success:void 0,_error:void 0},emailVerification:{key:"VERIFY_EMAIL",method:"GET",defaultRoute:"/verify-email",defaultIsPublic:!0,subEndpoints:[{key:"VERIFY_EMAIL",method:"GET",suffix:"",_payload:void 0,_success:void 0,_error:void 0},{key:"RESEND_VERIFICATION",method:"POST",suffix:"",routeKey:"resendRoute",defaultRoute:"/resend-verification",_payload:void 0,_success:void 0,_error:void 0}]},captcha:{key:"CAPTCHA",method:"GET",defaultRoute:"/auth/captcha",defaultIsPublic:!0,subEndpoints:[{key:"CAPTCHA_GENERATE",method:"GET",suffix:"/generate",_payload:void 0,_success:void 0,_error:void 0},{key:"CAPTCHA_VALIDATE",method:"POST",suffix:"/validate",_payload:void 0,_success:void 0,_error:void 0}]}};var de=["profiles","addresses","phones","files","users","roles","claims","user_roles","role_claims"],ue=z.tables.filter((e)=>de.includes(e.table_name));function w(e){return e.replace(/([a-z])([A-Z])/g,"$1_$2").replace(/[\s-]+/g,"_").toUpperCase()}function le(e){return e.replace(/_([a-z])/g,(n,t)=>t.toUpperCase())}function O(e){if(e.endsWith("ies"))return`${e.slice(0,-3)}y`;if(e.endsWith("ses"))return`${e.slice(0,-2)}`;if(e.endsWith("s"))return e.slice(0,-1);return e}function _(e,n){let t=w(e),s=w(O(e));switch(n){case"GET":return`GET_${t}`;case"POST":return`ADD_${s}`;case"PUT":return`UPDATE_${s}`;case"PATCH":return`PATCH_${s}`;case"DELETE":return`DELETE_${s}`}}function L(e,n){let t=w(e);switch(n){case"POST":return`BULK_ADD_${t}`;case"PUT":return`BULK_UPDATE_${t}`;case"DELETE":return`BULK_DELETE_${t}`}}function R(e,n){if(!e.excluded_methods)return!1;let t={GET:"GET",POST:"POST",PUT:"PUT",PATCH:"PATCH",DELETE:"DELETE"};return e.excluded_methods.includes(t[n])}function q(e){let n={};for(let t of e.entities){let s=t.table_name,i=`/${s}`;if(!R(t,"GET")){n[_(s,"GET")]={method:"GET",path:i,isPublic:t.is_public?.GET??!1,_payload:void 0,_success:void 0,_error:void 0};let o=w(O(s));n[`GET_${o}_BY_ID`]={method:"GET",path:`${i}/:id`,isPublic:t.is_public?.GET??!1,_payload:void 0,_success:void 0,_error:void 0},n[`GET_${w(s)}_DISTINCT`]={method:"GET",path:`${i}/distinct/:field`,isPublic:t.is_public?.GET??!1,_payload:void 0,_success:void 0,_error:void 0}}if(!R(t,"POST"))n[_(s,"POST")]={method:"POST",path:i,isPublic:t.is_public?.POST??!1,isFormData:t.is_form_data,_payload:void 0,_success:void 0,_error:void 0};if(!R(t,"PUT"))n[_(s,"PUT")]={method:"PUT",path:`${i}/:id`,isPublic:t.is_public?.PUT??!1,isFormData:t.is_form_data,_payload:void 0,_success:void 0,_error:void 0};if(!R(t,"PATCH"))n[_(s,"PATCH")]={method:"PATCH",path:`${i}/:id`,isPublic:t.is_public?.PATCH??!1,_payload:void 0,_success:void 0,_error:void 0};if(!R(t,"DELETE"))n[_(s,"DELETE")]={method:"DELETE",path:`${i}/:id`,isPublic:t.is_public?.DELETE??!1,_payload:void 0,_success:void 0,_error:void 0};if(t.bulk_endpoints_enabled){if(!R(t,"POST"))n[L(s,"POST")]={method:"POST",path:`${i}/bulk`,isPublic:t.is_public?.POST??!1,_payload:void 0,_success:void 0,_error:void 0};if(!R(t,"PUT"))n[L(s,"PUT")]={method:"PUT",path:`${i}/bulk`,isPublic:t.is_public?.PUT??!1,_payload:void 0,_success:void 0,_error:void 0};if(!R(t,"DELETE"))n[L(s,"DELETE")]={method:"DELETE",path:`${i}/bulk`,isPublic:t.is_public?.DELETE??!1,_payload:void 0,_success:void 0,_error:void 0}}}return n}function W(e){let n={},t=e.authentication;if(!t?.enabled)return n;for(let[s,i]of Object.entries(I)){let o=t[s];if(!o?.enabled)continue;let r=o.route||i.defaultRoute,a=o.isPublic??i.defaultIsPublic;if("subEndpoints"in i&&i.subEndpoints)for(let d of i.subEndpoints){let l="routeKey"in d&&d.routeKey&&o[d.routeKey]?String(o[d.routeKey]):("defaultRoute"in d)&&d.defaultRoute?String(d.defaultRoute):`${r}${d.suffix}`;n[d.key]={method:d.method,path:l,isPublic:d.key==="MAGIC_LINK_VERIFY"?!0:a,_payload:d._payload,_success:d._success,_error:d._error}}else if("_payload"in i)n[i.key]={method:i.method,path:r,isPublic:a,_payload:i._payload,_success:i._success,_error:i._error}}return n}function j(){let e={};for(let n of ue){let t=n.table_name,i=`/${le(t)}`,o=t==="files";e[_(t,"GET")]={method:"GET",path:i,isPublic:!1,_payload:void 0,_success:void 0,_error:void 0};let r=w(O(t));e[`GET_${r}_BY_ID`]={method:"GET",path:`${i}/:id`,isPublic:!1,_payload:void 0,_success:void 0,_error:void 0},e[_(t,"POST")]={method:"POST",path:i,isPublic:!1,isFormData:o,_payload:void 0,_success:void 0,_error:void 0},e[_(t,"PUT")]={method:"PUT",path:`${i}/:id`,isPublic:!1,isFormData:o,_payload:void 0,_success:void 0,_error:void 0},e[_(t,"PATCH")]={method:"PATCH",path:`${i}/:id`,isPublic:!1,_payload:void 0,_success:void 0,_error:void 0},e[_(t,"DELETE")]={method:"DELETE",path:`${i}/:id`,isPublic:!1,_payload:void 0,_success:void 0,_error:void 0}}return e}function ce(e,n){let t=q(e),s=W(e),i=j();return{...t,...s,...i,...n??{}}}import{randomUUID as Ee}from"crypto";import{randomUUID as me}from"crypto";var B={debug:0,info:1,warn:2,error:3,fatal:4},Y={debug:"\x1B[36m",info:"\x1B[32m",warn:"\x1B[33m",error:"\x1B[31m",fatal:"\x1B[35m"},$="\x1B[0m",F="\x1B[2m",J="\x1B[1m";var pe=["password","secret","token","apiKey","api_key","authorization","cookie","credit_card","creditCard","ssn","privateKey","private_key"];function D(e,n=pe,t=new WeakSet){if(e===null||e===void 0)return e;if(typeof e!=="object")return e;if(t.has(e))return"[Circular]";if(t.add(e),Array.isArray(e))return e.map((i)=>D(i,n,t));let s={};for(let[i,o]of Object.entries(e))if(n.some((a)=>i.toLowerCase().includes(a.toLowerCase()))&&typeof o==="string")s[i]="[REDACTED]";else if(typeof o==="object"&&o!==null)s[i]=D(o,n,t);else s[i]=o;return s}function Q(e=4){let n=Error().stack;if(!n)return{file:"unknown",line:0,function:"unknown"};let s=n.split(`
|
|
3
|
+
`)[e];if(!s)return{file:"unknown",line:0,function:"unknown"};let i=s.match(/at\s+(?:(.+?)\s+)?\(?(.+?):(\d+):(\d+)\)?/);if(!i)return{file:"unknown",line:0,function:"unknown"};let[,o,r,a]=i;return{file:r?r.split("/").pop()||r:"unknown",line:parseInt(a||"0",10),function:o?.replace(/^Object\./,"")||"anonymous"}}function Z(e){if(e instanceof Error)return{name:e.name,message:e.message,stack:e.stack,code:e.code};if(typeof e==="string")return{name:"Error",message:e};return{name:"UnknownError",message:String(e)}}function M(e,n){if(!e&&!n)return;if(!e)return n;if(!n)return e;return{...e,...n}}function X(e){if(e<1)return`${(e*1000).toFixed(2)}\xB5s`;if(e<1000)return`${e.toFixed(2)}ms`;return`${(e/1000).toFixed(2)}s`}function ee(e,n){let t=new WeakSet;return JSON.stringify(e,(s,i)=>{if(typeof i==="object"&&i!==null){if(t.has(i))return"[Circular]";t.add(i)}if(typeof i==="bigint")return i.toString();if(i instanceof Error)return{name:i.name,message:i.message,stack:i.stack};return i},n)}class G{name="console";colorize;prettyPrint;constructor(e={}){this.colorize=e.colorize??!0,this.prettyPrint=e.prettyPrint??!0}log(e){if(this.prettyPrint)this.logPretty(e);else this.logJson(e)}logJson(e){let n=ee(e);this.getConsoleMethod(e.level)(n)}logPretty(e){let n=this.getConsoleMethod(e.level),t=this.colorize?Y[e.level]:"",s=this.colorize?$:"",i=this.colorize?F:"",o=this.colorize?J:"",r=new Date(e.timestamp).toLocaleTimeString("en-US",{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit"}),a=e.level.toUpperCase().padEnd(5),d=e.service?`[${e.service}]`:"",l=e.correlationId?`${i}(${e.correlationId.slice(0,8)})${s}`:"",E=e.duration!==void 0?`${i}${X(e.duration)}${s}`:"",S=`${i}${r}${s} ${t}${o}${a}${s} ${d}${l} ${e.message} ${E}`;if(n(S.trim()),e.caller)n(` ${i}at ${e.caller.function} (${e.caller.file}:${e.caller.line})${s}`);if(e.context&&Object.keys(e.context).length>0)n(` ${i}context:${s}`,e.context);if(e.error){if(n(` ${t}${e.error.name}: ${e.error.message}${s}`),e.error.stack){let u=e.error.stack.split(`
|
|
4
|
+
`).slice(1,4);for(let f of u)n(` ${i}${f.trim()}${s}`)}}}getConsoleMethod(e){switch(e){case"debug":return console.debug.bind(console);case"info":return console.info.bind(console);case"warn":return console.warn.bind(console);case"error":case"fatal":return console.error.bind(console);default:return console.log.bind(console)}}}class K{name="console-audit";enabled;constructor(e={}){this.enabled=e.enabled??!0}write(e){if(!this.enabled)return;let n="\x1B[35m",t=$,s=F;console.log(`${s}${e.timestamp}${t} ${n}AUDIT${t} [${e.operation}] ${e.entityName}${e.entityId?`:${e.entityId}`:""} ${s}by ${e.userId||"anonymous"}${t}`)}}var fe={level:"info",service:"nucleus",environment:"development",redactKeys:[],colorize:!0,prettyPrint:!0,includeCallerInfo:!0,asyncBufferSize:100,flushIntervalMs:1000,auditEnabled:!1};class h{config;transports;auditTransports;context;correlationId;static instance=null;constructor(e={},n={},t){this.config={...fe,...e},this.context=n,this.correlationId=t,this.transports=[new G({colorize:this.config.colorize,prettyPrint:this.config.prettyPrint})],this.auditTransports=[new K({enabled:this.config.prettyPrint})]}static getInstance(e){if(!h.instance)h.instance=new h(e);return h.instance}static resetInstance(){h.instance=null}child(e,n){let t=new h(this.config,M(this.context,e)||{},n||this.correlationId);return t.transports=this.transports,t.auditTransports=this.auditTransports,t}withCorrelationId(e){return this.child({},e)}addTransport(e){this.transports.push(e)}addAuditTransport(e){this.auditTransports.push(e)}setLevel(e){this.config.level=e}setAuditEnabled(e){this.config.auditEnabled=e}isAuditEnabled(){return this.config.auditEnabled}shouldLog(e){return B[e]>=B[this.config.level]}createEntry(e,n,t,s,i){let o={timestamp:new Date().toISOString(),level:e,message:n,service:this.config.service,correlationId:this.correlationId},r=M(this.context,t);if(r&&Object.keys(r).length>0)o.context=D(r,this.config.redactKeys);if(this.config.includeCallerInfo)o.caller=Q();if(s)o.error=Z(s);if(i!==void 0)o.duration=performance.now()-i;return o}log(e,n,t,s,i){if(!this.shouldLog(e))return;let o=this.createEntry(e,n,t,s,i);for(let r of this.transports)try{r.log(o)}catch(a){console.error(`Logger transport "${r.name}" failed:`,a)}}debug(e,n){this.log("debug",e,n)}info(e,n){this.log("info",e,n)}warn(e,n){this.log("warn",e,n)}error(e,n,t){this.log("error",e,t,n)}fatal(e,n,t){this.log("fatal",e,t,n)}time(e){let n=performance.now();return()=>{this.log("debug",`${e} completed`,void 0,void 0,n)}}async timeAsync(e,n,t){let s=performance.now();try{let i=await n();return this.log("debug",`${e} completed`,t,void 0,s),i}catch(i){throw this.log("error",`${e} failed`,t,i,s),i}}request(e){let n=e.statusCode>=500?"error":e.statusCode>=400?"warn":"info";this.log(n,`${e.method} ${e.path} ${e.statusCode}`,{method:e.method,path:e.path,statusCode:e.statusCode,durationMs:e.duration,correlationId:e.correlationId,userId:e.userId,ip:e.ip,userAgent:e.userAgent})}db(e){let n=e.error?"error":"debug";this.log(n,`DB ${e.operation} on ${e.table}`,{operation:e.operation,table:e.table,durationMs:e.duration,rowCount:e.rowCount},e.error)}async flush(){for(let e of this.transports)if(e.flush)await e.flush()}async audit(e){let n={id:me(),timestamp:new Date().toISOString(),entityName:e.entityName,entityId:e.entityId??null,operation:e.operation,userId:e.userId??null,summary:e.summary||`${e.operation} on ${e.entityName}`,oldValues:e.oldValues||{},newValues:e.newValues||{},ipAddress:e.ipAddress||"unknown",userAgent:e.userAgent||"unknown",path:e.path||"",query:e.query||"",correlationId:this.correlationId};for(let t of this.auditTransports)try{await t.write(n)}catch(s){console.error(`Audit transport "${t.name}" failed:`,s)}}auditOnly(e){this.audit(e)}async trace(e){let n=e.log!==!1,t=e.writeAudit===!0||e.writeAudit!==!1&&this.config.auditEnabled&&e.audit;if(n)this.log(e.level||"info",e.message,e.context,e.error);if(t&&e.audit)await this.audit(e.audit)}traceSync(e){let n=e.log!==!1,t=e.writeAudit===!0||e.writeAudit!==!1&&this.config.auditEnabled&&e.audit;if(n)this.log(e.level||"info",e.message,e.context,e.error);if(t&&e.audit)this.audit(e.audit)}}var Ge=h.getInstance();var ge={timeout:30000,retries:0,retryDelay:1000,debug:!1};class C{config;logger;constructor(e={}){this.config={...ge,...e},this.logger=new h({service:"ServerFetch",prettyPrint:this.config.debug,colorize:this.config.debug,auditEnabled:!1})}buildUrl(e){if(e.startsWith("http://")||e.startsWith("https://"))return e;return this.config.baseUrl?`${this.config.baseUrl}${e}`:e}buildHeaders(e){let n=new Headers;if(this.config.defaultHeaders)for(let[t,s]of Object.entries(this.config.defaultHeaders))n.set(t,s);if(e)if(e instanceof Headers)e.forEach((t,s)=>{n.set(s,t)});else if(Array.isArray(e))for(let[t,s]of e)n.set(t,s);else for(let[t,s]of Object.entries(e))n.set(t,s);return n}parseResponseHeaders(e){let n={};if(e.forEach((t,s)=>{if(s.toLowerCase()==="set-cookie"){let i=n[s];n[s]=i?`${i}, ${t}`:t}else n[s]=t}),typeof e.getSetCookie==="function"){let t=e.getSetCookie();if(t.length>0)n["set-cookie"]=t.join(", ")}return n}async executeWithTimeout(e,n,t){let s=new AbortController,i=setTimeout(()=>s.abort(),n);try{return await Promise.race([e,new Promise((r,a)=>{s.signal.addEventListener("abort",()=>{a(Error(`Request timeout after ${n}ms`))})})])}finally{clearTimeout(i)}}async fetch(e){let n=Ee(),t=performance.now(),s=this.buildUrl(e.url),i=this.buildHeaders(e.headers),o=e.timeout??this.config.timeout??30000,r=e.retries??this.config.retries??0,a=e.retryDelay??this.config.retryDelay??1000,d;if(e.body)if(typeof e.body==="object"&&!(e.body instanceof FormData)&&!(e.body instanceof URLSearchParams)&&!(e.body instanceof Blob)&&!(e.body instanceof ArrayBuffer)){if(d=JSON.stringify(e.body),!i.has("content-type"))i.set("content-type","application/json")}else d=e.body;this.logger.debug(`[${n}] ${e.method} ${s}`,{method:e.method,url:s,hasBody:!!d});let l=null,E=0;while(E<=r)try{let u=await this.executeWithTimeout(fetch(s,{method:e.method,headers:i,body:d}),o,n),f=performance.now()-t,g=this.parseResponseHeaders(u.headers),x,c,y=await u.text();if(y)try{let m=JSON.parse(y);if(u.ok)x=m;else c=m}catch{if(!u.ok)c={message:y||u.statusText}}else if(!u.ok)c={message:u.statusText};let p={isSuccess:u.ok,response:x,errors:c,code:u.status,headers:g,durationMs:f,requestId:n,createdAt:new Date};if(u.ok)this.logger.info(`[${n}] ${e.method} ${s} ${u.status}`,{method:e.method,url:s,statusCode:u.status,durationMs:Math.round(f)});else this.logger.warn(`[${n}] ${e.method} ${s} ${u.status}`,{method:e.method,url:s,statusCode:u.status,durationMs:Math.round(f),error:c});return p}catch(u){if(l=u instanceof Error?u:Error(String(u)),E++,E<=r)this.logger.warn(`[${n}] Retry ${E}/${r} after error`,{method:e.method,url:s,error:l.message,attempt:E,retries:r}),await new Promise((f)=>setTimeout(f,a))}let S=performance.now()-t;return this.logger.error(`[${n}] ${e.method} ${s} failed`,l,{method:e.method,url:s,durationMs:Math.round(S),attempts:E}),{isSuccess:!1,response:void 0,errors:{message:l?.message||"Unknown error"},code:null,headers:{},durationMs:S,requestId:n,createdAt:new Date}}async get(e,n){return this.fetch({...n,url:e,method:"GET"})}async post(e,n,t){return this.fetch({...t,url:e,method:"POST",body:n})}async put(e,n,t){return this.fetch({...t,url:e,method:"PUT",body:n})}async patch(e,n,t){return this.fetch({...t,url:e,method:"PATCH",body:n})}async delete(e,n){return this.fetch({...n,url:e,method:"DELETE"})}}var He=new C;var ye={accessToken:"access_token",refreshToken:"refresh_token",sessionToken:"session_token"};function _e(e){let n=[],t="";for(let s=0;s<e.length;s++){let i=e[s];if(i===","){let o=e.slice(s+1).trimStart();if(/^[a-zA-Z0-9_-]+=/.test(o)){n.push(t.trim()),t="";continue}}t+=i}if(t.trim())n.push(t.trim());return n}function he(e,n){let t={},s=["x-forwarded-for","x-real-ip","user-agent","accept-language","x-request-id","x-client-ip","cf-connecting-ip","true-client-ip"];for(let d of s){let l=e.get(d);if(l)t[d]=l}if(!t["user-agent"])t["user-agent"]="Nucleus-ServerAction/1.0";let i=e.get(`x-${n.accessToken}`),o=e.get(`x-${n.refreshToken}`),r=e.get(`x-${n.sessionToken}`);if(i)t[`x-${n.accessToken}`]=i;if(o)t[`x-${n.refreshToken}`]=o;if(r)t[`x-${n.sessionToken}`]=r;let a=e.get("cookie");if(a)t.cookie=a;return t}function Te(e){return e.replace(/_([a-z])/g,(n,t)=>t.toUpperCase())}function ne(e){let n={};for(let[t,s]of Object.entries(e)){let i=t.startsWith("_")?t:Te(t);if(s instanceof Date)n[i]=s.toISOString();else if(s&&typeof s==="object"&&!Array.isArray(s))n[i]=ne(s);else n[i]=s}return n}function Re(e,n){let t=new URLSearchParams,s=(o,r)=>{if(r===void 0||r===null)return;if(Array.isArray(r))for(let a of r)s(`${o}[]`,a);else if(r instanceof Date)t.append(o,r.toISOString());else if(typeof r==="object")for(let[a,d]of Object.entries(r))s(`${o}[${a}]`,d);else t.append(o,String(r))};for(let[o,r]of Object.entries(n))s(o,r);let i=t.toString();if(!i)return e;return e.includes("?")?`${e}&${i}`:`${e}?${i}`}function Se(e,n,t,s){let i={...ye,...n.tokenNames},o=new C({baseUrl:n.baseUrl,debug:n.debug,timeout:30000,retries:0});return async function(a,d){let l=e[a];if(!l)return{isSuccess:!1,errors:{message:`Endpoint "${a}" not found`},code:404};let E=await t(),S=await s(),u={};S.forEach((p,m)=>{u[m]=p});let f=he(S,i),g=l.path,x;if(d&&typeof d==="object"&&!(d instanceof FormData)){let p=d;for(let[m,T]of Object.entries(p))if(T!=null){if(m.startsWith("_"))g=g.replace(`:${m.substring(1)}`,String(T));else if(m==="id"&&g.includes(":id"))g=g.replace(":id",String(T))}}if(l.method==="GET"&&d&&typeof d==="object")g=Re(g,d);else if(d!==void 0){if(l.isFormData&&d instanceof FormData)x=d;else if(x=ne(d),!f["content-type"])f["content-type"]="application/json"}let c=await o.fetch({url:g,method:l.method,headers:f,body:x});if(c.headers["set-cookie"])try{let p=c.headers["set-cookie"],m=_e(p);for(let T of m){let[P,...A]=T.split(";");if(!P)continue;let[U,V]=P.split("=");if(U&&V){let b={};for(let te of A){let[H,k]=te.trim().split("=");if(!H)continue;let v=H.toLowerCase();if(v==="path")b.path=k;else if(v==="max-age")b.maxAge=Number(k);else if(v==="expires"&&k)b.expires=new Date(k);else if(v==="httponly")b.httpOnly=!0;else if(v==="secure")b.secure=!0;else if(v==="samesite")b.sameSite=k}E.set(U.trim(),V.trim(),b)}}}catch(p){console.warn("[ServerFactory] Failed to process Set-Cookie headers:",p instanceof Error?p.message:String(p))}let y=c.response;if(c.isSuccess&&y&&typeof y==="object"&&!Array.isArray(y)){let p=y;if("success"in p&&!("data"in p)){let{success:m,message:T,error:P,...A}=p;y={success:m,...T!==void 0?{message:T}:{},...P!==void 0?{error:P}:{},...Object.keys(A).length>0?{data:A}:{}}}}return{isSuccess:c.isSuccess,data:y,errors:c.errors,code:c.code,message:c.isSuccess?void 0:c.errors?.message}}}export{j as generateSystemTableEndpoints,q as generateEndpointsFromConfig,W as generateAuthEndpoints,ce as generateAllEndpoints,Se as createServerFactory,ae as createApiHook,I as AUTH_ENDPOINT_CONFIGS};
|
package/dist/dist/index.d.ts
CHANGED
|
@@ -19,10 +19,10 @@ declare function hh(n: any): {
|
|
|
19
19
|
reconnectAttempt: number;
|
|
20
20
|
connect: () => void;
|
|
21
21
|
disconnect: () => void;
|
|
22
|
-
subscribe: (
|
|
23
|
-
unsubscribe: (
|
|
22
|
+
subscribe: (w: any) => void;
|
|
23
|
+
unsubscribe: (w: any) => void;
|
|
24
24
|
clearEvents: unknown;
|
|
25
|
-
getEventsByTopic: (
|
|
25
|
+
getEventsByTopic: (w: any) => never[];
|
|
26
26
|
};
|
|
27
27
|
declare var ah: Io;
|
|
28
28
|
declare function Au(): {};
|
|
@@ -88,7 +88,7 @@ export function Captcha({ generateAction, config, onChallengeLoad, onAnswerChang
|
|
|
88
88
|
},
|
|
89
89
|
onAfterHandle: (response)=>{
|
|
90
90
|
const { data } = response;
|
|
91
|
-
console.log("[DEBUG]:",
|
|
91
|
+
console.log("[DEBUG]:", response);
|
|
92
92
|
if (!data || data.rateLimited) {
|
|
93
93
|
setRateLimitError(response.message ?? "Too many requests. Please try again later.");
|
|
94
94
|
setChallengeData(null);
|