@01.software/sdk 0.0.1-260101182719 → 0.1.0-dev.260109.7cf07c9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1,3 +1,921 @@
1
- 'use strict';var jose=require('jose'),qsEsm=require('qs-esm'),reactQuery=require('@tanstack/react-query'),ie=require('react'),react=require('@payloadcms/richtext-lexical/react');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var ie__default=/*#__PURE__*/_interopDefault(ie);var z=Object.defineProperty,M=Object.defineProperties;var H=Object.getOwnPropertyDescriptors;var b=Object.getOwnPropertySymbols;var $=Object.prototype.hasOwnProperty,F=Object.prototype.propertyIsEnumerable;var B=(n,e,t)=>e in n?z(n,e,{enumerable:true,configurable:true,writable:true,value:t}):n[e]=t,c=(n,e)=>{for(var t in e||(e={}))$.call(e,t)&&B(n,t,e[t]);if(b)for(var t of b(e))F.call(e,t)&&B(n,t,e[t]);return n},y=(n,e)=>M(n,H(e));var P=(n,e)=>{var t={};for(var r in n)$.call(n,r)&&e.indexOf(r)<0&&(t[r]=n[r]);if(n!=null&&b)for(var r of b(n))e.indexOf(r)<0&&F.call(n,r)&&(t[r]=n[r]);return t};var i=(n,e,t)=>new Promise((r,o)=>{var s=p=>{try{l(t.next(p));}catch(m){o(m);}},a=p=>{try{l(t.throw(p));}catch(m){o(m);}},l=p=>p.done?r(p.value):Promise.resolve(p.value).then(s,a);l((t=t.apply(n,e)).next());});var h=class n extends Error{constructor(e,t,r,o){super(t),this.name="SDKError",this.code=e,this.status=r,this.details=o,Error.captureStackTrace&&Error.captureStackTrace(this,n);}toJSON(){return {name:this.name,code:this.code,message:this.message,status:this.status,details:this.details}}},g=class extends h{constructor(e,t,r){super("NETWORK_ERROR",e,t,r),this.name="NetworkError";}},v=class extends h{constructor(e,t){super("VALIDATION_ERROR",e,400,t),this.name="ValidationError";}},q=class extends h{constructor(e,t,r){super("API_ERROR",e,t,r),this.name="ApiError";}};var C=class extends h{constructor(e="\uC694\uCCAD\uC774 \uC2DC\uAC04 \uCD08\uACFC\uB418\uC5C8\uC2B5\uB2C8\uB2E4.",t){super("TIMEOUT_ERROR",e,408,t),this.name="TimeoutError";}};var S=(n,e,t)=>new g(n,e,t),W=(n,e)=>new v(n,e),_=(n,e,t)=>new q(n,e,t);var V="https://01.software",X=(n,e)=>i(null,null,function*(){if(!n||!e)throw new Error("clientKey\uC640 secretKey\uB294 \uD544\uC218\uC785\uB2C8\uB2E4.");let t=new TextEncoder().encode(e);return yield new jose.SignJWT({clientKey:n}).setProtectedHeader({alg:"HS256"}).setIssuedAt().setExpirationTime("1h").sign(t)}),d=(n,e)=>i(null,null,function*(){let w=e||{},{clientKey:t,secretKey:r,timeout:o=3e4,baseUrl:s=V}=w,a=P(w,["clientKey","secretKey","timeout","baseUrl"]),l=new Headers(a.headers);if(t&&l.set("X-Client-Key",t),r&&t){let u=yield X(t,r);l.set("Authorization",`Bearer ${u}`);}!l.has("Content-Type")&&a.body&&l.set("Content-Type","application/json");let p=new AbortController,m=setTimeout(()=>p.abort(),o);try{let u=yield fetch(`${s}${n}`,y(c({},a),{headers:l,signal:p.signal}));if(clearTimeout(m),!u.ok)throw S(`HTTP ${u.status}: ${u.statusText}`,u.status,{url:n,method:a.method||"GET"});return u}catch(u){throw clearTimeout(m),u instanceof Error&&u.name==="AbortError"?new C(`\uC694\uCCAD\uC774 ${o}ms \uD6C4 \uD0C0\uC784\uC544\uC6C3\uB418\uC5C8\uC2B5\uB2C8\uB2E4.`,{url:n,timeout:o}):u instanceof TypeError?S("\uB124\uD2B8\uC6CC\uD06C \uC5F0\uACB0\uC5D0 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4. \uC778\uD130\uB137 \uC5F0\uACB0\uC744 \uD655\uC778\uD574\uC8FC\uC138\uC694.",void 0,{url:n,originalError:u.message}):u instanceof g||u instanceof C?u:S(u instanceof Error?u.message:"\uC54C \uC218 \uC5C6\uB294 \uB124\uD2B8\uC6CC\uD06C \uC5D0\uB7EC\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4.",void 0,{url:n,originalError:u})}});var T=class{constructor(e,t){this.api=e;this.collection=t;}find(e){return i(this,null,function*(){return this.api.requestGet(`/api/${String(this.collection)}`,e)})}findById(e,t){return i(this,null,function*(){return this.api.requestGet(`/api/${String(this.collection)}/${String(e)}`,t)})}create(e){return i(this,null,function*(){return this.api.requestPost(`/api/${String(this.collection)}`,e)})}update(e,t){return i(this,null,function*(){return this.api.requestPatch(`/api/${String(this.collection)}/${String(e)}`,t)})}remove(e){return i(this,null,function*(){return this.api.requestDelete(`/api/${String(this.collection)}/${String(e)}`)})}};var E=class{constructor(e,t,r){if(!e)throw W("clientKey\uB294 \uD544\uC218\uC785\uB2C8\uB2E4.");this.clientKey=e,this.secretKey=t,this.baseUrl=r,this.defaultOptions={clientKey:e,secretKey:t,baseUrl:r};}get(e,t){return i(this,null,function*(){let r=this.buildUrl(e,t),o=yield d(r,y(c({},this.defaultOptions),{method:"GET"}));return this.parseResponse(o)})}post(e,t,r){return i(this,null,function*(){let o=yield d(e,y(c(c({},this.defaultOptions),r),{method:"POST",body:t?JSON.stringify(t):void 0}));return this.parseResponse(o)})}patch(e,t,r){return i(this,null,function*(){let o=yield d(e,y(c(c({},this.defaultOptions),r),{method:"PATCH",body:t?JSON.stringify(t):void 0}));return this.parseResponse(o)})}delete(e,t){return i(this,null,function*(){let r=yield d(e,y(c(c({},this.defaultOptions),t),{method:"DELETE"}));return this.parseResponse(r)})}buildUrl(e,t){if(!t)return e;let r=qsEsm.stringify(t,{addQueryPrefix:true});return r?`${e}${r}`:e}parseResponse(e){return i(this,null,function*(){let t=e.headers.get("content-type");try{if(t&&t.includes("application/json")){let o=yield e.json();if(o.docs!==void 0){let s={page:o.page||1,limit:o.limit||20,totalDocs:o.totalDocs||0,totalPages:o.totalPages||0,hasNextPage:o.hasNextPage||!1,hasPrevPage:o.hasPrevPage||!1};return {data:o.docs,success:!0,pagination:s}}return {data:o,success:!0}}return {data:yield e.text(),success:!0}}catch(r){throw _("\uC751\uB2F5 \uD30C\uC2F1\uC5D0 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4.",e.status,{contentType:t,error:r instanceof Error?r.message:r})}})}};var f=class extends E{constructor(e,t,r){super(e,t,r);}from(e){return new T(this,e)}requestGet(e,t){return this.get(e,t)}requestPost(e,t){return this.post(e,t)}requestPatch(e,t){return this.patch(e,t)}requestDelete(e){return this.delete(e)}};function j(){return new reactQuery.QueryClient({defaultOptions:{queries:{staleTime:Number.POSITIVE_INFINITY,refetchOnWindowFocus:false},dehydrate:{shouldDehydrateQuery:n=>reactQuery.defaultShouldDehydrateQuery(n)||n.state.status==="pending",shouldRedactErrors:n=>false}}})}var k;function J(){return reactQuery.isServer?j():(k||(k=j()),k)}var K=class{constructor(e,t){this.queryClient=e,this.collectionsApi=new f((t==null?void 0:t.brandKey)||"",t==null?void 0:t.brandSecret,t==null?void 0:t.baseUrl);}useCollection(e,t,r){let o=t;return reactQuery.useQuery({queryKey:[e,"list",o],queryFn:()=>i(this,null,function*(){return (yield this.collectionsApi.from(e).find(o)).data}),placeholderData:r!=null&&r.keepPreviousData?reactQuery.keepPreviousData:void 0})}useCollectionSingle(e,t,r){let o=t;return reactQuery.useQuery({queryKey:[e,"detail",o],queryFn:()=>i(this,null,function*(){var l;let a=yield this.collectionsApi.from(e).find(o);return a.data.length===0?null:(l=a.data[0])!=null?l:null}),placeholderData:r!=null&&r.keepPreviousData?reactQuery.keepPreviousData:void 0})}useCollectionInfinite(e,t,r){let o=t,s=[e,"list","infinite",o],a=(o==null?void 0:o.limit)||20;return reactQuery.useInfiniteQuery({queryKey:s,queryFn:p=>i(this,[p],function*({pageParam:l=1}){let m=y(c({},o),{page:l,limit:a});return (yield this.collectionsApi.from(e).find(m)).data}),initialPageParam:1,getNextPageParam:(l,p,m)=>!Array.isArray(l)||l.length<a?null:m+1,select:l=>l.pages.flatMap(p=>p),placeholderData:r!=null&&r.keepPreviousData?reactQuery.keepPreviousData:void 0})}useById(e,t,r,o){return reactQuery.useQuery({queryKey:[e,"detail",t],queryFn:()=>i(this,null,function*(){var l;return (l=(yield this.collectionsApi.from(e).findById(t,r)).data)!=null?l:null}),placeholderData:o!=null&&o.keepPreviousData?reactQuery.keepPreviousData:void 0})}prefetchCollection(e,t){return i(this,null,function*(){let r=t,o=[e,"list",r];return this.queryClient.prefetchQuery({queryKey:o,queryFn:()=>i(this,null,function*(){return (yield this.collectionsApi.from(e).find(r)).data})})})}prefetchCollectionSingle(e,t){return i(this,null,function*(){let r=t,o=[e,"detail",r];return this.queryClient.prefetchQuery({queryKey:o,queryFn:()=>i(this,null,function*(){let s=yield this.collectionsApi.from(e).find(r);return s.data.length===0?null:s.data[0]})})})}prefetchCollectionInfinite(e,t){return i(this,null,function*(){let r=t,o=[e,"list","infinite",r],s=(r==null?void 0:r.limit)||20;return this.queryClient.prefetchInfiniteQuery({queryKey:o,queryFn:l=>i(this,[l],function*({pageParam:a=1}){let p=y(c({},r),{page:a,limit:s});return (yield this.collectionsApi.from(e).find(p)).data}),initialPageParam:1,getNextPageParam:(a,l,p)=>!Array.isArray(a)||a.length<s?null:p+1,pages:2})})}prefetchById(e,t,r){return i(this,null,function*(){let o=[e,"detail",t];return this.queryClient.prefetchQuery({queryKey:o,queryFn:()=>i(this,null,function*(){var a;return (a=(yield this.collectionsApi.from(e).findById(t,r)).data)!=null?a:null})})})}invalidateQueries(e,t){let r=t?[e,t]:[e];return this.queryClient.invalidateQueries({queryKey:r})}getQueryData(e,t,...r){let o=[e,t,...r.filter(s=>s!==void 0)];return this.queryClient.getQueryData(o)}setQueryData(e,t,r,...o){let s=[e,t,...o.filter(a=>a!==void 0)];return this.queryClient.setQueryData(s,r)}};var x=class{constructor(e){var r;if(!e.clientKey)throw new Error("clientKey is required.");this.config=c({},e);let t={timestamp:Date.now(),userAgent:typeof window!="undefined"?(r=window.navigator)==null?void 0:r.userAgent:"Node.js"};this.state={metadata:t},this.fetch=d,this.queryClient=J(),this.query=new K(this.queryClient,{brandKey:this.config.clientKey,baseUrl:this.config.baseUrl}),this.collections=new f(this.config.clientKey,void 0,this.config.baseUrl);}getSettings(){return i(this,null,function*(){let{data:e}=yield this.from("brand-settings").find({where:{"brand.clientKey":{equals:this.config.clientKey}}});return e.length>0?e[0]:null})}from(e){return this.collections.from(e)}getState(){return c({},this.state)}},re=n=>new x(n);var Q=m=>i(null,[m],function*({paymentId:n,orderNumber:e,orderProducts:t,email:r,shippingAddress:o,totalAmount:s,secretKey:a,clientKey:l,baseUrl:p}){return (yield d("/api/orders/create",{method:"POST",baseUrl:p,clientKey:l,secretKey:a,body:JSON.stringify({paymentId:n,orderNumber:e,orderProducts:t,email:r,shippingAddress:o,totalAmount:s})})).json()});var D=s=>i(null,[s],function*({orderNumber:n,status:e,secretKey:t,clientKey:r,baseUrl:o}){return (yield d("/api/orders/update",{method:"POST",baseUrl:o,clientKey:r,secretKey:t,body:JSON.stringify({orderNumber:n,status:e})})).json()});var U=l=>i(null,[l],function*({paymentId:n,status:e,paymentMethod:t,receiptUrl:r,secretKey:o,clientKey:s,baseUrl:a}){return (yield d("/api/transactions/update",{method:"POST",baseUrl:a,clientKey:s,secretKey:o,body:JSON.stringify({paymentId:n,status:e,paymentMethod:t,receiptUrl:r})})).json()});var A=class{constructor(e){if(!e.clientKey)throw new Error("clientKey is required.");if(!e.secretKey)throw new Error("secretKey is required.");this.clientKey=e.clientKey,this.secretKey=e.secretKey,this.baseUrl=e.baseUrl;}getCommonOptions(){return {clientKey:this.clientKey,secretKey:this.secretKey,baseUrl:this.baseUrl}}createOrder(e){return Q(c(c({},e),this.getCommonOptions()))}updateOrder(e){return D(c(c({},e),this.getCommonOptions()))}updateTransaction(e){return U(c(c({},e),this.getCommonOptions()))}};var O=class{constructor(e){var r;if(!e.clientKey)throw new Error("clientKey is required.");if(!e.secretKey)throw new Error("secretKey is required.");this.config=c({},e);let t={timestamp:Date.now(),userAgent:typeof window!="undefined"?(r=window.navigator)==null?void 0:r.userAgent:"Node.js"};this.state={metadata:t},this.fetch=d,this.api=new A({clientKey:this.config.clientKey,secretKey:this.config.secretKey,baseUrl:this.config.baseUrl}),this.collections=new f(this.config.clientKey,this.config.secretKey,this.config.baseUrl);}getSettings(){return i(this,null,function*(){let{data:e}=yield this.from("brand-settings").find({where:{"brand.clientKey":{equals:this.config.clientKey}}});return e.length>0?e[0]:null})}from(e){return this.collections.from(e)}getState(){return c({},this.state)}getConfig(){let r=this.config,{secretKey:e}=r;return P(r,["secretKey"])}},ne=n=>new O(n);function At(n,e){return i(this,null,function*(){try{let t=yield n.json();return oe(t)?(yield e(t),new Response(JSON.stringify({success:!0,message:"Webhook processed"}),{status:200,headers:{"Content-Type":"application/json"}})):new Response(JSON.stringify({error:"Invalid webhook event format"}),{status:400,headers:{"Content-Type":"application/json"}})}catch(t){return console.error("Webhook processing error:",t),new Response(JSON.stringify({error:"Internal server error",message:t instanceof Error?t.message:"Unknown error"}),{status:500,headers:{"Content-Type":"application/json"}})}})}function oe(n){return typeof n=="object"&&n!==null&&typeof n.collection=="string"&&(n.operation==="create"||n.operation==="update")&&typeof n.data=="object"&&n.data!==null}function Ot(n,e){return t=>i(null,null,function*(){if(t.collection!==n)throw new Error(`Expected collection "${n}", got "${t.collection}"`);return e(t)})}var Pt=()=>{let n=new Date().getFullYear().toString().slice(-2),e=new Date().getMonth().toString().padStart(2,"0"),t=new Date().getDate().toString().padStart(2,"0"),r=Math.floor(Math.random()*1e6).toString().padStart(6,"0");return `${n}${e}${t}${r}`};var I=n=>typeof n=="number"?null:n;var Kt=n=>{var t,r,o,s;let e=n.length;return e===1?((r=I((t=n==null?void 0:n[0])==null?void 0:t.product))==null?void 0:r.title)||"":`${(s=I((o=n.at(0))==null?void 0:o.product))==null?void 0:s.title} \uC678 ${e-1}\uAC74`};function Qt({data:n,className:e,internalDocToHref:t,blocks:r}){return ie__default.default.createElement(react.RichText,{data:n,className:e,converters:y(c(c({},react.defaultJSXConverters),react.LinkJSXConverter({internalDocToHref:t})),{blocks:r||void 0})})}
2
- exports.ApiClient=A;exports.BrowserClient=x;exports.CollectionQueryBuilder=T;exports.CollectionsApi=f;exports.RichTextContent=Qt;exports.ServerClient=O;exports.UnifiedQueryClient=K;exports.createBrowserClient=re;exports.createOrder=Q;exports.createServerClient=ne;exports.createTypedWebhookHandler=Ot;exports.formatOrderName=Kt;exports.generateOrderNumber=Pt;exports.getQueryClient=J;exports.handleWebhook=At;exports.isValidWebhookEvent=oe;exports.objectFor=I;exports.updateOrder=D;exports.updateTransaction=U;//# sourceMappingURL=index.cjs.map
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __defProps = Object.defineProperties;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
7
+ var __getOwnPropNames = Object.getOwnPropertyNames;
8
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
9
+ var __getProtoOf = Object.getPrototypeOf;
10
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
11
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
12
+ var __pow = Math.pow;
13
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
14
+ var __spreadValues = (a, b) => {
15
+ for (var prop in b || (b = {}))
16
+ if (__hasOwnProp.call(b, prop))
17
+ __defNormalProp(a, prop, b[prop]);
18
+ if (__getOwnPropSymbols)
19
+ for (var prop of __getOwnPropSymbols(b)) {
20
+ if (__propIsEnum.call(b, prop))
21
+ __defNormalProp(a, prop, b[prop]);
22
+ }
23
+ return a;
24
+ };
25
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
26
+ var __objRest = (source, exclude) => {
27
+ var target = {};
28
+ for (var prop in source)
29
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
30
+ target[prop] = source[prop];
31
+ if (source != null && __getOwnPropSymbols)
32
+ for (var prop of __getOwnPropSymbols(source)) {
33
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
34
+ target[prop] = source[prop];
35
+ }
36
+ return target;
37
+ };
38
+ var __export = (target, all) => {
39
+ for (var name in all)
40
+ __defProp(target, name, { get: all[name], enumerable: true });
41
+ };
42
+ var __copyProps = (to, from, except, desc) => {
43
+ if (from && typeof from === "object" || typeof from === "function") {
44
+ for (let key of __getOwnPropNames(from))
45
+ if (!__hasOwnProp.call(to, key) && key !== except)
46
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
47
+ }
48
+ return to;
49
+ };
50
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
51
+ // If the importer is in node compatibility mode or this is not an ESM
52
+ // file that has been converted to a CommonJS file using a Babel-
53
+ // compatible transform (i.e. "__esModule" has not been set), then set
54
+ // "default" to the CommonJS "module.exports" for node compatibility.
55
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
56
+ mod
57
+ ));
58
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
59
+ var __async = (__this, __arguments, generator) => {
60
+ return new Promise((resolve, reject) => {
61
+ var fulfilled = (value) => {
62
+ try {
63
+ step(generator.next(value));
64
+ } catch (e) {
65
+ reject(e);
66
+ }
67
+ };
68
+ var rejected = (value) => {
69
+ try {
70
+ step(generator.throw(value));
71
+ } catch (e) {
72
+ reject(e);
73
+ }
74
+ };
75
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
76
+ step((generator = generator.apply(__this, __arguments)).next());
77
+ });
78
+ };
79
+
80
+ // src/index.ts
81
+ var index_exports = {};
82
+ __export(index_exports, {
83
+ ApiClient: () => ApiClient,
84
+ ApiError: () => ApiError,
85
+ BrowserClient: () => BrowserClient,
86
+ COLLECTIONS: () => COLLECTIONS,
87
+ CollectionQueryBuilder: () => CollectionQueryBuilder,
88
+ CollectionsApi: () => CollectionsApi,
89
+ ConfigError: () => ConfigError,
90
+ NetworkError: () => NetworkError,
91
+ RichTextContent: () => RichTextContent,
92
+ ServerClient: () => ServerClient,
93
+ TimeoutError: () => TimeoutError,
94
+ UnifiedQueryClient: () => UnifiedQueryClient,
95
+ ValidationError: () => ValidationError,
96
+ createBrowserClient: () => createBrowserClient,
97
+ createServerClient: () => createServerClient,
98
+ createTypedWebhookHandler: () => createTypedWebhookHandler,
99
+ formatOrderName: () => formatOrderName,
100
+ generateOrderNumber: () => generateOrderNumber,
101
+ getQueryClient: () => getQueryClient,
102
+ handleWebhook: () => handleWebhook,
103
+ isApiError: () => isApiError,
104
+ isConfigError: () => isConfigError,
105
+ isErrorResponse: () => isErrorResponse,
106
+ isNetworkError: () => isNetworkError,
107
+ isSDKError: () => isSDKError,
108
+ isSuccessResponse: () => isSuccessResponse,
109
+ isTimeoutError: () => isTimeoutError,
110
+ isValidWebhookEvent: () => isValidWebhookEvent,
111
+ isValidationError: () => isValidationError,
112
+ objectFor: () => objectFor
113
+ });
114
+ module.exports = __toCommonJS(index_exports);
115
+
116
+ // src/core/collection/query-builder.ts
117
+ var CollectionQueryBuilder = class {
118
+ constructor(api, collection) {
119
+ this.api = api;
120
+ this.collection = collection;
121
+ }
122
+ find(options) {
123
+ return __async(this, null, function* () {
124
+ return this.api.requestGet(
125
+ `/api/${String(this.collection)}`,
126
+ options
127
+ );
128
+ });
129
+ }
130
+ findById(id, options) {
131
+ return __async(this, null, function* () {
132
+ return this.api.requestGet(
133
+ `/api/${String(this.collection)}/${String(id)}`,
134
+ options
135
+ );
136
+ });
137
+ }
138
+ create(data) {
139
+ return __async(this, null, function* () {
140
+ return this.api.requestPost(
141
+ `/api/${String(this.collection)}`,
142
+ data
143
+ );
144
+ });
145
+ }
146
+ update(id, data) {
147
+ return __async(this, null, function* () {
148
+ return this.api.requestPatch(
149
+ `/api/${String(this.collection)}/${String(id)}`,
150
+ data
151
+ );
152
+ });
153
+ }
154
+ remove(id) {
155
+ return __async(this, null, function* () {
156
+ return this.api.requestDelete(
157
+ `/api/${String(this.collection)}/${String(id)}`
158
+ );
159
+ });
160
+ }
161
+ };
162
+
163
+ // src/core/collection/base.ts
164
+ var import_qs_esm = require("qs-esm");
165
+
166
+ // src/core/internal/utils/index.ts
167
+ var import_jose = require("jose");
168
+
169
+ // src/core/internal/errors/index.ts
170
+ var SDKError = class _SDKError extends Error {
171
+ constructor(code, message, status, details, userMessage, suggestion) {
172
+ super(message);
173
+ this.name = "SDKError";
174
+ this.code = code;
175
+ this.status = status;
176
+ this.details = details;
177
+ this.userMessage = userMessage;
178
+ this.suggestion = suggestion;
179
+ if (Error.captureStackTrace) {
180
+ Error.captureStackTrace(this, _SDKError);
181
+ }
182
+ }
183
+ getUserMessage() {
184
+ return this.userMessage || this.message;
185
+ }
186
+ toJSON() {
187
+ return {
188
+ name: this.name,
189
+ code: this.code,
190
+ message: this.message,
191
+ status: this.status,
192
+ details: this.details,
193
+ userMessage: this.userMessage,
194
+ suggestion: this.suggestion
195
+ };
196
+ }
197
+ };
198
+ var NetworkError = class extends SDKError {
199
+ constructor(message, status, details, userMessage, suggestion) {
200
+ super("NETWORK_ERROR", message, status, details, userMessage, suggestion);
201
+ this.name = "NetworkError";
202
+ }
203
+ };
204
+ var ValidationError = class extends SDKError {
205
+ constructor(message, details, userMessage, suggestion) {
206
+ super("VALIDATION_ERROR", message, 400, details, userMessage, suggestion);
207
+ this.name = "ValidationError";
208
+ }
209
+ };
210
+ var ApiError = class extends SDKError {
211
+ constructor(message, status, details, userMessage, suggestion) {
212
+ super("API_ERROR", message, status, details, userMessage, suggestion);
213
+ this.name = "ApiError";
214
+ }
215
+ };
216
+ var ConfigError = class extends SDKError {
217
+ constructor(message, details, userMessage, suggestion) {
218
+ super("CONFIG_ERROR", message, void 0, details, userMessage, suggestion);
219
+ this.name = "ConfigError";
220
+ }
221
+ };
222
+ var TimeoutError = class extends SDKError {
223
+ constructor(message = "\uC694\uCCAD\uC774 \uC2DC\uAC04 \uCD08\uACFC\uB418\uC5C8\uC2B5\uB2C8\uB2E4.", details, userMessage, suggestion) {
224
+ super("TIMEOUT_ERROR", message, 408, details, userMessage, suggestion);
225
+ this.name = "TimeoutError";
226
+ }
227
+ };
228
+ function isSDKError(error) {
229
+ return error instanceof SDKError;
230
+ }
231
+ function isNetworkError(error) {
232
+ return error instanceof NetworkError;
233
+ }
234
+ function isValidationError(error) {
235
+ return error instanceof ValidationError;
236
+ }
237
+ function isApiError(error) {
238
+ return error instanceof ApiError;
239
+ }
240
+ function isConfigError(error) {
241
+ return error instanceof ConfigError;
242
+ }
243
+ function isTimeoutError(error) {
244
+ return error instanceof TimeoutError;
245
+ }
246
+ var createNetworkError = (message, status, details, userMessage, suggestion) => new NetworkError(message, status, details, userMessage, suggestion);
247
+ var createValidationError = (message, details, userMessage, suggestion) => new ValidationError(message, details, userMessage, suggestion);
248
+ var createApiError = (message, status, details, userMessage, suggestion) => new ApiError(message, status, details, userMessage, suggestion);
249
+
250
+ // src/core/internal/utils/index.ts
251
+ var API_URL = process.env.SOFTWARE_API_URL || "https://stg.01.software";
252
+ var DEFAULT_TIMEOUT = 3e4;
253
+ var DEFAULT_RETRYABLE_STATUSES = [408, 429, 500, 502, 503, 504];
254
+ function createServerToken(clientKey, secretKey) {
255
+ return __async(this, null, function* () {
256
+ if (!clientKey || !secretKey) {
257
+ throw new Error("clientKey\uC640 secretKey\uB294 \uD544\uC218\uC785\uB2C8\uB2E4.");
258
+ }
259
+ const secret = new TextEncoder().encode(secretKey);
260
+ return new import_jose.SignJWT({ clientKey }).setProtectedHeader({ alg: "HS256" }).setIssuedAt().setExpirationTime("1h").sign(secret);
261
+ });
262
+ }
263
+ function debugLog(debug, type, message, data) {
264
+ if (!debug) return;
265
+ const shouldLog = debug === true || type === "request" && debug.logRequests || type === "response" && debug.logResponses || type === "error" && debug.logErrors;
266
+ if (shouldLog) {
267
+ console.group(`[SDK ${type.toUpperCase()}] ${message}`);
268
+ if (data) console.log(data);
269
+ console.groupEnd();
270
+ }
271
+ }
272
+ function getErrorSuggestion(status) {
273
+ if (status === 401) return "\uC778\uC99D \uC815\uBCF4\uB97C \uD655\uC778\uD574\uC8FC\uC138\uC694.";
274
+ if (status === 404) return "\uC694\uCCAD\uD55C \uB9AC\uC18C\uC2A4\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.";
275
+ if (status >= 500)
276
+ return "\uC11C\uBC84 \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. \uC7A0\uC2DC \uD6C4 \uB2E4\uC2DC \uC2DC\uB3C4\uD574\uC8FC\uC138\uC694.";
277
+ return void 0;
278
+ }
279
+ function delay(ms) {
280
+ return __async(this, null, function* () {
281
+ return new Promise((resolve) => setTimeout(resolve, ms));
282
+ });
283
+ }
284
+ function _fetch(url, options) {
285
+ return __async(this, null, function* () {
286
+ var _b, _c, _d;
287
+ const _a = options || {}, {
288
+ clientKey,
289
+ secretKey,
290
+ timeout = DEFAULT_TIMEOUT,
291
+ baseUrl = API_URL,
292
+ debug,
293
+ retry
294
+ } = _a, requestInit = __objRest(_a, [
295
+ "clientKey",
296
+ "secretKey",
297
+ "timeout",
298
+ "baseUrl",
299
+ "debug",
300
+ "retry"
301
+ ]);
302
+ const retryConfig = {
303
+ maxRetries: (_b = retry == null ? void 0 : retry.maxRetries) != null ? _b : 3,
304
+ retryableStatuses: (_c = retry == null ? void 0 : retry.retryableStatuses) != null ? _c : DEFAULT_RETRYABLE_STATUSES,
305
+ retryDelay: (_d = retry == null ? void 0 : retry.retryDelay) != null ? _d : ((attempt) => Math.min(1e3 * __pow(2, attempt), 1e4))
306
+ };
307
+ let lastError;
308
+ for (let attempt = 0; attempt <= retryConfig.maxRetries; attempt++) {
309
+ try {
310
+ const headers = new Headers(requestInit.headers);
311
+ if (clientKey) {
312
+ headers.set("X-Client-Key", clientKey);
313
+ }
314
+ if (secretKey && clientKey) {
315
+ const token = yield createServerToken(clientKey, secretKey);
316
+ headers.set("Authorization", `Bearer ${token}`);
317
+ }
318
+ if (!headers.has("Content-Type") && requestInit.body) {
319
+ headers.set("Content-Type", "application/json");
320
+ }
321
+ debugLog(debug, "request", url, {
322
+ method: requestInit.method || "GET",
323
+ headers: Object.fromEntries(headers.entries()),
324
+ attempt: attempt + 1
325
+ });
326
+ const controller = new AbortController();
327
+ const timeoutId = setTimeout(() => controller.abort(), timeout);
328
+ const response = yield fetch(`${baseUrl}${url}`, __spreadProps(__spreadValues({}, requestInit), {
329
+ headers,
330
+ signal: controller.signal
331
+ }));
332
+ clearTimeout(timeoutId);
333
+ debugLog(debug, "response", url, {
334
+ status: response.status,
335
+ statusText: response.statusText,
336
+ headers: Object.fromEntries(response.headers.entries())
337
+ });
338
+ if (!response.ok) {
339
+ const error = createNetworkError(
340
+ `HTTP ${response.status}: ${response.statusText}`,
341
+ response.status,
342
+ { url, method: requestInit.method || "GET", attempt: attempt + 1 },
343
+ `\uC694\uCCAD\uC774 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4 (\uC0C1\uD0DC \uCF54\uB4DC: ${response.status})`,
344
+ getErrorSuggestion(response.status)
345
+ );
346
+ if (attempt < retryConfig.maxRetries && retryConfig.retryableStatuses.includes(response.status)) {
347
+ lastError = error;
348
+ const retryDelay = retryConfig.retryDelay(attempt);
349
+ debugLog(debug, "error", `\uC7AC\uC2DC\uB3C4 \uB300\uAE30 \uC911... (${retryDelay}ms)`, error);
350
+ yield delay(retryDelay);
351
+ continue;
352
+ }
353
+ throw error;
354
+ }
355
+ return response;
356
+ } catch (error) {
357
+ debugLog(debug, "error", url, error);
358
+ if (error instanceof Error && error.name === "AbortError") {
359
+ const timeoutError = new TimeoutError(
360
+ `\uC694\uCCAD\uC774 ${timeout}ms \uD6C4 \uD0C0\uC784\uC544\uC6C3\uB418\uC5C8\uC2B5\uB2C8\uB2E4.`,
361
+ { url, timeout, attempt: attempt + 1 },
362
+ "\uC694\uCCAD \uC2DC\uAC04\uC774 \uCD08\uACFC\uB418\uC5C8\uC2B5\uB2C8\uB2E4.",
363
+ "\uB124\uD2B8\uC6CC\uD06C \uC5F0\uACB0\uC744 \uD655\uC778\uD558\uAC70\uB098 \uC7A0\uC2DC \uD6C4 \uB2E4\uC2DC \uC2DC\uB3C4\uD574\uC8FC\uC138\uC694."
364
+ );
365
+ if (attempt < retryConfig.maxRetries) {
366
+ lastError = timeoutError;
367
+ yield delay(retryConfig.retryDelay(attempt));
368
+ continue;
369
+ }
370
+ throw timeoutError;
371
+ }
372
+ if (error instanceof TypeError) {
373
+ const networkError = createNetworkError(
374
+ "\uB124\uD2B8\uC6CC\uD06C \uC5F0\uACB0\uC5D0 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4.",
375
+ void 0,
376
+ { url, originalError: error.message, attempt: attempt + 1 },
377
+ "\uB124\uD2B8\uC6CC\uD06C \uC5F0\uACB0\uC5D0 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4.",
378
+ "\uC778\uD130\uB137 \uC5F0\uACB0\uC744 \uD655\uC778\uD558\uACE0 \uB2E4\uC2DC \uC2DC\uB3C4\uD574\uC8FC\uC138\uC694."
379
+ );
380
+ if (attempt < retryConfig.maxRetries) {
381
+ lastError = networkError;
382
+ yield delay(retryConfig.retryDelay(attempt));
383
+ continue;
384
+ }
385
+ throw networkError;
386
+ }
387
+ if (error instanceof NetworkError || error instanceof TimeoutError) {
388
+ if (attempt < retryConfig.maxRetries && error.status && retryConfig.retryableStatuses.includes(error.status)) {
389
+ lastError = error;
390
+ yield delay(retryConfig.retryDelay(attempt));
391
+ continue;
392
+ }
393
+ throw error;
394
+ }
395
+ const unknownError = createNetworkError(
396
+ error instanceof Error ? error.message : "\uC54C \uC218 \uC5C6\uB294 \uB124\uD2B8\uC6CC\uD06C \uC5D0\uB7EC\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4.",
397
+ void 0,
398
+ { url, originalError: error, attempt: attempt + 1 },
399
+ "\uC54C \uC218 \uC5C6\uB294 \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4.",
400
+ "\uC7A0\uC2DC \uD6C4 \uB2E4\uC2DC \uC2DC\uB3C4\uD574\uC8FC\uC138\uC694."
401
+ );
402
+ if (attempt < retryConfig.maxRetries) {
403
+ lastError = unknownError;
404
+ yield delay(retryConfig.retryDelay(attempt));
405
+ continue;
406
+ }
407
+ throw unknownError;
408
+ }
409
+ }
410
+ throw lastError;
411
+ });
412
+ }
413
+
414
+ // src/core/collection/base.ts
415
+ var BaseApiClient = class {
416
+ constructor(clientKey, secretKey) {
417
+ if (!clientKey) {
418
+ throw createValidationError("clientKey\uB294 \uD544\uC218\uC785\uB2C8\uB2E4.");
419
+ }
420
+ this.clientKey = clientKey;
421
+ this.secretKey = secretKey;
422
+ this.defaultOptions = { clientKey, secretKey };
423
+ }
424
+ get(endpoint, options) {
425
+ return __async(this, null, function* () {
426
+ const url = this.buildUrl(endpoint, options);
427
+ const response = yield _fetch(url, __spreadProps(__spreadValues({}, this.defaultOptions), { method: "GET" }));
428
+ return this.parseResponse(response);
429
+ });
430
+ }
431
+ post(endpoint, data, options) {
432
+ return __async(this, null, function* () {
433
+ const response = yield _fetch(endpoint, __spreadProps(__spreadValues(__spreadValues({}, this.defaultOptions), options), {
434
+ method: "POST",
435
+ body: data ? JSON.stringify(data) : void 0
436
+ }));
437
+ return this.parseResponse(response);
438
+ });
439
+ }
440
+ patch(endpoint, data, options) {
441
+ return __async(this, null, function* () {
442
+ const response = yield _fetch(endpoint, __spreadProps(__spreadValues(__spreadValues({}, this.defaultOptions), options), {
443
+ method: "PATCH",
444
+ body: data ? JSON.stringify(data) : void 0
445
+ }));
446
+ return this.parseResponse(response);
447
+ });
448
+ }
449
+ delete(endpoint, options) {
450
+ return __async(this, null, function* () {
451
+ const response = yield _fetch(endpoint, __spreadProps(__spreadValues(__spreadValues({}, this.defaultOptions), options), {
452
+ method: "DELETE"
453
+ }));
454
+ return this.parseResponse(response);
455
+ });
456
+ }
457
+ buildUrl(endpoint, options) {
458
+ if (!options) return endpoint;
459
+ const queryString = (0, import_qs_esm.stringify)(options, { addQueryPrefix: true });
460
+ return queryString ? `${endpoint}${queryString}` : endpoint;
461
+ }
462
+ parseResponse(response) {
463
+ return __async(this, null, function* () {
464
+ const contentType = response.headers.get("content-type");
465
+ try {
466
+ if (contentType == null ? void 0 : contentType.includes("application/json")) {
467
+ const jsonData = yield response.json();
468
+ if (jsonData.docs !== void 0) {
469
+ const pagination = {
470
+ page: jsonData.page || 1,
471
+ limit: jsonData.limit || 20,
472
+ totalDocs: jsonData.totalDocs || 0,
473
+ totalPages: jsonData.totalPages || 0,
474
+ hasNextPage: jsonData.hasNextPage || false,
475
+ hasPrevPage: jsonData.hasPrevPage || false
476
+ };
477
+ return { data: jsonData.docs, success: true, pagination };
478
+ }
479
+ return { data: jsonData, success: true };
480
+ }
481
+ const textData = yield response.text();
482
+ return { data: textData, success: true };
483
+ } catch (error) {
484
+ throw createApiError("\uC751\uB2F5 \uD30C\uC2F1\uC5D0 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4.", response.status, {
485
+ contentType,
486
+ error: error instanceof Error ? error.message : error
487
+ });
488
+ }
489
+ });
490
+ }
491
+ };
492
+
493
+ // src/core/collection/collections-api.ts
494
+ var CollectionsApi = class extends BaseApiClient {
495
+ constructor(clientKey, secretKey) {
496
+ super(clientKey, secretKey);
497
+ }
498
+ from(collection) {
499
+ return new CollectionQueryBuilder(this, collection);
500
+ }
501
+ requestGet(endpoint, options) {
502
+ return this.get(endpoint, options);
503
+ }
504
+ requestPost(endpoint, data) {
505
+ return this.post(endpoint, data);
506
+ }
507
+ requestPatch(endpoint, data) {
508
+ return this.patch(endpoint, data);
509
+ }
510
+ requestDelete(endpoint) {
511
+ return this.delete(endpoint);
512
+ }
513
+ };
514
+
515
+ // src/core/collection/const.ts
516
+ var COLLECTIONS = [
517
+ "tenants",
518
+ "products",
519
+ "product-variants",
520
+ "product-options",
521
+ "product-categories",
522
+ "product-tags",
523
+ "product-images",
524
+ "orders",
525
+ "order-products",
526
+ "returns",
527
+ "return-products",
528
+ "transactions",
529
+ "links",
530
+ "link-images",
531
+ "playlists",
532
+ "playlist-images",
533
+ "musics",
534
+ "posts",
535
+ "post-categories",
536
+ "post-tags",
537
+ "post-images",
538
+ "documents",
539
+ "document-images",
540
+ "entities",
541
+ "entity-categories",
542
+ "entity-tags",
543
+ "entity-images",
544
+ "nodes",
545
+ "galleries",
546
+ "gallery-images",
547
+ "forms"
548
+ ];
549
+
550
+ // src/core/query/get-query-client.ts
551
+ var import_react_query = require("@tanstack/react-query");
552
+ function makeQueryClient() {
553
+ return new import_react_query.QueryClient({
554
+ defaultOptions: {
555
+ queries: {
556
+ staleTime: Number.POSITIVE_INFINITY,
557
+ refetchOnWindowFocus: false
558
+ },
559
+ dehydrate: {
560
+ shouldDehydrateQuery: (query) => (0, import_react_query.defaultShouldDehydrateQuery)(query) || query.state.status === "pending",
561
+ shouldRedactErrors: () => false
562
+ }
563
+ }
564
+ });
565
+ }
566
+ var browserQueryClient;
567
+ function getQueryClient() {
568
+ if (import_react_query.isServer) {
569
+ return makeQueryClient();
570
+ }
571
+ if (!browserQueryClient) {
572
+ browserQueryClient = makeQueryClient();
573
+ }
574
+ return browserQueryClient;
575
+ }
576
+
577
+ // src/core/query/UnifiedQuery.ts
578
+ var import_react_query2 = require("@tanstack/react-query");
579
+ var DEFAULT_PAGE_SIZE = 20;
580
+ var UnifiedQueryClient = class {
581
+ constructor(queryClient, options) {
582
+ this.queryClient = queryClient;
583
+ this.collectionsApi = new CollectionsApi(
584
+ (options == null ? void 0 : options.brandKey) || "",
585
+ options == null ? void 0 : options.brandSecret
586
+ );
587
+ }
588
+ // ===== Query Hooks =====
589
+ useCollection(collection, queryOptions, reactQueryOptions) {
590
+ return (0, import_react_query2.useQuery)({
591
+ queryKey: [collection, "list", queryOptions],
592
+ queryFn: () => __async(this, null, function* () {
593
+ const response = yield this.collectionsApi.from(collection).find(queryOptions);
594
+ return response.data;
595
+ }),
596
+ placeholderData: (reactQueryOptions == null ? void 0 : reactQueryOptions.keepPreviousData) ? import_react_query2.keepPreviousData : void 0
597
+ });
598
+ }
599
+ useCollectionSingle(collection, queryOptions, reactQueryOptions) {
600
+ return (0, import_react_query2.useQuery)({
601
+ queryKey: [collection, "detail", queryOptions],
602
+ queryFn: () => __async(this, null, function* () {
603
+ var _a, _b;
604
+ const response = yield this.collectionsApi.from(collection).find(queryOptions);
605
+ return (_b = (_a = response.data) == null ? void 0 : _a[0]) != null ? _b : null;
606
+ }),
607
+ placeholderData: (reactQueryOptions == null ? void 0 : reactQueryOptions.keepPreviousData) ? import_react_query2.keepPreviousData : void 0
608
+ });
609
+ }
610
+ useCollectionInfinite(collection, queryOptions, reactQueryOptions) {
611
+ const pageSize = (queryOptions == null ? void 0 : queryOptions.limit) || DEFAULT_PAGE_SIZE;
612
+ return (0, import_react_query2.useInfiniteQuery)({
613
+ queryKey: [collection, "list", "infinite", queryOptions],
614
+ queryFn: (_0) => __async(this, [_0], function* ({ pageParam = 1 }) {
615
+ var _a;
616
+ const response = yield this.collectionsApi.from(collection).find(__spreadProps(__spreadValues({}, queryOptions), { page: pageParam, limit: pageSize }));
617
+ return (_a = response.data) != null ? _a : [];
618
+ }),
619
+ initialPageParam: 1,
620
+ getNextPageParam: (lastPage, _pages, lastPageParams) => {
621
+ if (!Array.isArray(lastPage) || lastPage.length < pageSize) return null;
622
+ return lastPageParams + 1;
623
+ },
624
+ select: (data) => data.pages.flatMap((page) => page),
625
+ placeholderData: (reactQueryOptions == null ? void 0 : reactQueryOptions.keepPreviousData) ? import_react_query2.keepPreviousData : void 0
626
+ });
627
+ }
628
+ useById(collection, id, queryOptions, reactQueryOptions) {
629
+ return (0, import_react_query2.useQuery)({
630
+ queryKey: [collection, "detail", id],
631
+ queryFn: () => __async(this, null, function* () {
632
+ var _a;
633
+ const response = yield this.collectionsApi.from(collection).findById(id, queryOptions);
634
+ return (_a = response.data) != null ? _a : null;
635
+ }),
636
+ placeholderData: (reactQueryOptions == null ? void 0 : reactQueryOptions.keepPreviousData) ? import_react_query2.keepPreviousData : void 0
637
+ });
638
+ }
639
+ // ===== Prefetch Methods =====
640
+ prefetchCollection(collection, queryOptions) {
641
+ return __async(this, null, function* () {
642
+ return this.queryClient.prefetchQuery({
643
+ queryKey: [collection, "list", queryOptions],
644
+ queryFn: () => __async(this, null, function* () {
645
+ const response = yield this.collectionsApi.from(collection).find(queryOptions);
646
+ return response.data;
647
+ })
648
+ });
649
+ });
650
+ }
651
+ prefetchCollectionSingle(collection, queryOptions) {
652
+ return __async(this, null, function* () {
653
+ return this.queryClient.prefetchQuery({
654
+ queryKey: [collection, "detail", queryOptions],
655
+ queryFn: () => __async(this, null, function* () {
656
+ var _a, _b;
657
+ const response = yield this.collectionsApi.from(collection).find(queryOptions);
658
+ return (_b = (_a = response.data) == null ? void 0 : _a[0]) != null ? _b : null;
659
+ })
660
+ });
661
+ });
662
+ }
663
+ prefetchCollectionInfinite(collection, queryOptions) {
664
+ return __async(this, null, function* () {
665
+ const pageSize = (queryOptions == null ? void 0 : queryOptions.limit) || DEFAULT_PAGE_SIZE;
666
+ return this.queryClient.prefetchInfiniteQuery({
667
+ queryKey: [collection, "list", "infinite", queryOptions],
668
+ queryFn: (_0) => __async(this, [_0], function* ({ pageParam = 1 }) {
669
+ var _a;
670
+ const response = yield this.collectionsApi.from(collection).find(__spreadProps(__spreadValues({}, queryOptions), { page: pageParam, limit: pageSize }));
671
+ return (_a = response.data) != null ? _a : [];
672
+ }),
673
+ initialPageParam: 1,
674
+ getNextPageParam: (lastPage, _allPages, lastPageParams) => {
675
+ if (!Array.isArray(lastPage) || lastPage.length < pageSize) return null;
676
+ return lastPageParams + 1;
677
+ },
678
+ pages: 2
679
+ });
680
+ });
681
+ }
682
+ prefetchById(collection, id, queryOptions) {
683
+ return __async(this, null, function* () {
684
+ return this.queryClient.prefetchQuery({
685
+ queryKey: [collection, "detail", id],
686
+ queryFn: () => __async(this, null, function* () {
687
+ var _a;
688
+ const response = yield this.collectionsApi.from(collection).findById(id, queryOptions);
689
+ return (_a = response.data) != null ? _a : null;
690
+ })
691
+ });
692
+ });
693
+ }
694
+ // ===== Cache Methods =====
695
+ invalidateQueries(collection, operation) {
696
+ const queryKey = operation ? [collection, operation] : [collection];
697
+ return this.queryClient.invalidateQueries({ queryKey });
698
+ }
699
+ getQueryData(collection, operation, ...params) {
700
+ const queryKey = [collection, operation, ...params.filter((p) => p !== void 0)];
701
+ return this.queryClient.getQueryData(queryKey);
702
+ }
703
+ setQueryData(collection, operation, data, ...params) {
704
+ const queryKey = [collection, operation, ...params.filter((p) => p !== void 0)];
705
+ return this.queryClient.setQueryData(queryKey, data);
706
+ }
707
+ };
708
+
709
+ // src/core/client/client.ts
710
+ var BrowserClient = class {
711
+ constructor(options) {
712
+ var _a;
713
+ if (!options.clientKey) {
714
+ throw new Error("clientKey is required.");
715
+ }
716
+ this.config = __spreadValues({}, options);
717
+ const metadata = {
718
+ timestamp: Date.now(),
719
+ userAgent: typeof window !== "undefined" ? (_a = window.navigator) == null ? void 0 : _a.userAgent : "Node.js"
720
+ };
721
+ this.state = { metadata };
722
+ this.queryClient = getQueryClient();
723
+ this.query = new UnifiedQueryClient(this.queryClient, {
724
+ brandKey: this.config.clientKey
725
+ });
726
+ this.collections = new CollectionsApi(this.config.clientKey);
727
+ }
728
+ from(collection) {
729
+ return this.collections.from(collection);
730
+ }
731
+ getState() {
732
+ return __spreadValues({}, this.state);
733
+ }
734
+ };
735
+ function createBrowserClient(options) {
736
+ return new BrowserClient(options);
737
+ }
738
+
739
+ // src/core/api/api-client.ts
740
+ var ApiClient = class {
741
+ constructor(options) {
742
+ if (!options.clientKey) {
743
+ throw new Error("clientKey is required.");
744
+ }
745
+ if (!options.secretKey) {
746
+ throw new Error("secretKey is required.");
747
+ }
748
+ this.clientKey = options.clientKey;
749
+ this.secretKey = options.secretKey;
750
+ this.baseUrl = options.baseUrl;
751
+ }
752
+ request(endpoint, body) {
753
+ return __async(this, null, function* () {
754
+ const response = yield _fetch(endpoint, {
755
+ method: "POST",
756
+ clientKey: this.clientKey,
757
+ secretKey: this.secretKey,
758
+ baseUrl: this.baseUrl,
759
+ body: JSON.stringify(body)
760
+ });
761
+ const data = yield response.json();
762
+ if (data.error) {
763
+ throw createApiError(
764
+ data.error,
765
+ response.status,
766
+ data,
767
+ data.error,
768
+ "\uC694\uCCAD \uCC98\uB9AC \uC911 \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4."
769
+ );
770
+ }
771
+ return data;
772
+ });
773
+ }
774
+ createOrder(params) {
775
+ return this.request("/api/orders/create", params);
776
+ }
777
+ updateOrder(params) {
778
+ return this.request("/api/orders/update", params);
779
+ }
780
+ updateTransaction(params) {
781
+ return this.request("/api/transactions/update", params);
782
+ }
783
+ };
784
+
785
+ // src/core/client/client.server.ts
786
+ var ServerClient = class {
787
+ constructor(options) {
788
+ var _a;
789
+ if (!options.clientKey) {
790
+ throw new Error("clientKey is required.");
791
+ }
792
+ if (!options.secretKey) {
793
+ throw new Error("secretKey is required.");
794
+ }
795
+ this.config = __spreadValues({}, options);
796
+ const metadata = {
797
+ timestamp: Date.now(),
798
+ userAgent: typeof window !== "undefined" ? (_a = window.navigator) == null ? void 0 : _a.userAgent : "Node.js"
799
+ };
800
+ this.state = { metadata };
801
+ this.api = new ApiClient({
802
+ clientKey: this.config.clientKey,
803
+ secretKey: this.config.secretKey
804
+ });
805
+ this.collections = new CollectionsApi(
806
+ this.config.clientKey,
807
+ this.config.secretKey
808
+ );
809
+ }
810
+ from(collection) {
811
+ return this.collections.from(collection);
812
+ }
813
+ getState() {
814
+ return __spreadValues({}, this.state);
815
+ }
816
+ getConfig() {
817
+ const _a = this.config, { secretKey: _ } = _a, safeConfig = __objRest(_a, ["secretKey"]);
818
+ return safeConfig;
819
+ }
820
+ };
821
+ function createServerClient(options) {
822
+ return new ServerClient(options);
823
+ }
824
+
825
+ // src/core/webhook/index.tsx
826
+ function isValidWebhookEvent(data) {
827
+ if (typeof data !== "object" || data === null) return false;
828
+ const obj = data;
829
+ return typeof obj.collection === "string" && (obj.operation === "create" || obj.operation === "update") && typeof obj.data === "object" && obj.data !== null;
830
+ }
831
+ function handleWebhook(request, handler) {
832
+ return __async(this, null, function* () {
833
+ try {
834
+ const body = yield request.json();
835
+ if (!isValidWebhookEvent(body)) {
836
+ return new Response(
837
+ JSON.stringify({ error: "Invalid webhook event format" }),
838
+ { status: 400, headers: { "Content-Type": "application/json" } }
839
+ );
840
+ }
841
+ yield handler(body);
842
+ return new Response(
843
+ JSON.stringify({ success: true, message: "Webhook processed" }),
844
+ { status: 200, headers: { "Content-Type": "application/json" } }
845
+ );
846
+ } catch (error) {
847
+ console.error("Webhook processing error:", error);
848
+ return new Response(
849
+ JSON.stringify({
850
+ error: "Internal server error",
851
+ message: error instanceof Error ? error.message : "Unknown error"
852
+ }),
853
+ { status: 500, headers: { "Content-Type": "application/json" } }
854
+ );
855
+ }
856
+ });
857
+ }
858
+ function createTypedWebhookHandler(collection, handler) {
859
+ return (event) => __async(null, null, function* () {
860
+ if (event.collection !== collection) {
861
+ throw new Error(`Expected collection "${collection}", got "${event.collection}"`);
862
+ }
863
+ return handler(event);
864
+ });
865
+ }
866
+
867
+ // src/utils/order/generateOrderNumber.ts
868
+ var generateOrderNumber = () => {
869
+ const year = (/* @__PURE__ */ new Date()).getFullYear().toString().slice(-2);
870
+ const month = (/* @__PURE__ */ new Date()).getMonth().toString().padStart(2, "0");
871
+ const day = (/* @__PURE__ */ new Date()).getDate().toString().padStart(2, "0");
872
+ const random = Math.floor(Math.random() * 1e6).toString().padStart(6, "0");
873
+ return `${year}${month}${day}${random}`;
874
+ };
875
+
876
+ // src/utils/types.ts
877
+ var objectFor = (data) => {
878
+ if (typeof data === "number") {
879
+ return null;
880
+ }
881
+ return data;
882
+ };
883
+
884
+ // src/utils/order/formatOrderName.ts
885
+ var formatOrderName = (options) => {
886
+ var _a, _b, _c, _d;
887
+ const optionLength = options.length;
888
+ return optionLength === 1 ? ((_b = objectFor((_a = options == null ? void 0 : options[0]) == null ? void 0 : _a.product)) == null ? void 0 : _b.title) || "" : `${(_d = objectFor((_c = options.at(0)) == null ? void 0 : _c.product)) == null ? void 0 : _d.title} \uC678 ${optionLength - 1}\uAC74`;
889
+ };
890
+
891
+ // src/components/RichTextContent/index.tsx
892
+ var import_react = __toESM(require("react"), 1);
893
+ var import_react2 = require("@payloadcms/richtext-lexical/react");
894
+ function RichTextContent({
895
+ data,
896
+ className,
897
+ internalDocToHref,
898
+ blocks
899
+ }) {
900
+ return /* @__PURE__ */ import_react.default.createElement(
901
+ import_react2.RichText,
902
+ {
903
+ data,
904
+ className,
905
+ converters: __spreadProps(__spreadValues(__spreadValues({}, import_react2.defaultJSXConverters), (0, import_react2.LinkJSXConverter)({
906
+ internalDocToHref
907
+ })), {
908
+ blocks: blocks ? blocks : void 0
909
+ })
910
+ }
911
+ );
912
+ }
913
+
914
+ // src/core/client/types.ts
915
+ function isSuccessResponse(response) {
916
+ return response.success === true;
917
+ }
918
+ function isErrorResponse(response) {
919
+ return response.success === false;
920
+ }
3
921
  //# sourceMappingURL=index.cjs.map