@uptrademedia/site-kit 1.0.0 → 1.0.3
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/blog/index.js.map +1 -1
- package/dist/blog/index.mjs.map +1 -1
- package/dist/chunk-5R4R3WDP.js +1451 -0
- package/dist/chunk-5R4R3WDP.js.map +1 -0
- package/dist/{chunk-COI6GOX2.mjs → chunk-63JNO4QN.mjs} +3 -3
- package/dist/chunk-63JNO4QN.mjs.map +1 -0
- package/dist/chunk-6EXHT7PS.mjs +330 -0
- package/dist/chunk-6EXHT7PS.mjs.map +1 -0
- package/dist/{chunk-RV7H3I6J.js → chunk-ADHVEFWD.js} +68 -2
- package/dist/chunk-ADHVEFWD.js.map +1 -0
- package/dist/chunk-BGJLOJ7T.mjs +605 -0
- package/dist/chunk-BGJLOJ7T.mjs.map +1 -0
- package/dist/chunk-BZBJVG5Y.js +88 -0
- package/dist/chunk-BZBJVG5Y.js.map +1 -0
- package/dist/chunk-DRFTRTKV.js +809 -0
- package/dist/chunk-DRFTRTKV.js.map +1 -0
- package/dist/chunk-EL5QTAA3.mjs +805 -0
- package/dist/chunk-EL5QTAA3.mjs.map +1 -0
- package/dist/chunk-JG2K4S2I.js +997 -0
- package/dist/chunk-JG2K4S2I.js.map +1 -0
- package/dist/chunk-P7LGOKGI.mjs +981 -0
- package/dist/chunk-P7LGOKGI.mjs.map +1 -0
- package/dist/{chunk-3MUOUXHV.js → chunk-PYYEPAHL.js} +3 -3
- package/dist/chunk-PYYEPAHL.js.map +1 -0
- package/dist/chunk-QAYJV4KK.js +608 -0
- package/dist/chunk-QAYJV4KK.js.map +1 -0
- package/dist/{chunk-FEBYQGY4 2.mjs → chunk-SMUFNQLM.mjs} +67 -3
- package/dist/chunk-SMUFNQLM.mjs.map +1 -0
- package/dist/chunk-VDMZZL2O.mjs +83 -0
- package/dist/chunk-VDMZZL2O.mjs.map +1 -0
- package/dist/chunk-XFRPT5ZX.mjs +1449 -0
- package/dist/chunk-XFRPT5ZX.mjs.map +1 -0
- package/dist/chunk-YKMCG3DS.js +332 -0
- package/dist/chunk-YKMCG3DS.js.map +1 -0
- package/dist/commerce/index.js +38 -38
- package/dist/commerce/index.mjs +1 -1
- package/dist/engage/index.js +7 -40
- package/dist/engage/index.js.map +1 -1
- package/dist/engage/index.mjs +1 -41
- package/dist/engage/index.mjs.map +1 -1
- package/dist/forms/index.js +13 -5
- package/dist/forms/index.js.map +1 -1
- package/dist/forms/index.mjs +2 -2
- package/dist/forms/index.mjs.map +1 -1
- package/dist/{generators-7Y5ABRYV 2.mjs → generators-TO2FKJR6.mjs} +134 -3
- package/dist/generators-TO2FKJR6.mjs.map +1 -0
- package/dist/{generators-GWIYCA5M.js → generators-YZWIGHCO.js} +135 -2
- package/dist/generators-YZWIGHCO.js.map +1 -0
- package/dist/images/index.js +41 -0
- package/dist/images/index.js.map +1 -0
- package/dist/images/index.mjs +8 -0
- package/dist/images/index.mjs.map +1 -0
- package/dist/index.js +1355 -104
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1242 -76
- package/dist/index.mjs.map +1 -1
- package/dist/redirects/index.js +25 -0
- package/dist/redirects/index.js.map +1 -0
- package/dist/redirects/index.mjs +4 -0
- package/dist/redirects/index.mjs.map +1 -0
- package/dist/{scanner-MF7P3CDE 2.mjs → scanner-AZV5I6US.mjs} +123 -4
- package/dist/scanner-AZV5I6US.mjs.map +1 -0
- package/dist/{scanner-NT6YG4TD 2.js → scanner-ETJAMIT7.js} +124 -3
- package/dist/scanner-ETJAMIT7.js.map +1 -0
- package/dist/setup/client.js +30 -0
- package/dist/setup/client.js.map +1 -0
- package/dist/setup/client.mjs +5 -0
- package/dist/setup/client.mjs.map +1 -0
- package/dist/setup/index.js +28 -1043
- package/dist/setup/index.js.map +1 -1
- package/dist/setup/index.mjs +3 -1043
- package/dist/setup/index.mjs.map +1 -1
- package/dist/setup/server.js +13 -0
- package/dist/setup/server.js.map +1 -0
- package/dist/setup/server.mjs +4 -0
- package/dist/setup/server.mjs.map +1 -0
- package/package.json +21 -1
- package/dist/chunk-3MUOUXHV.js.map +0 -1
- package/dist/chunk-4HVYXYQL 2.mjs +0 -255
- package/dist/chunk-4HVYXYQL.mjs +0 -255
- package/dist/chunk-4HVYXYQL.mjs.map +0 -1
- package/dist/chunk-COI6GOX2.mjs.map +0 -1
- package/dist/chunk-EQCVQC35.js 2.map +0 -1
- package/dist/chunk-FEBYQGY4.mjs +0 -251
- package/dist/chunk-FEBYQGY4.mjs.map +0 -1
- package/dist/chunk-NYKRE2FL 2.mjs +0 -31
- package/dist/chunk-NYKRE2FL.mjs 2.map +0 -1
- package/dist/chunk-RV7H3I6J.js 2.map +0 -1
- package/dist/chunk-RV7H3I6J.js.map +0 -1
- package/dist/chunk-TUKGA3UK.js +0 -257
- package/dist/chunk-TUKGA3UK.js 2.map +0 -1
- package/dist/chunk-TUKGA3UK.js.map +0 -1
- package/dist/generators-7Y5ABRYV.mjs +0 -161
- package/dist/generators-7Y5ABRYV.mjs 2.map +0 -1
- package/dist/generators-7Y5ABRYV.mjs.map +0 -1
- package/dist/generators-GWIYCA5M.js 2.map +0 -1
- package/dist/generators-GWIYCA5M.js.map +0 -1
- package/dist/index 2.mjs +0 -74
- package/dist/index.js 2.map +0 -1
- package/dist/migrator-V6KS75EA 2.mjs +0 -265
- package/dist/migrator-V6KS75EA.mjs 2.map +0 -1
- package/dist/migrator-XKM7YQCY.js 2.map +0 -1
- package/dist/scanner-MF7P3CDE.mjs +0 -14386
- package/dist/scanner-MF7P3CDE.mjs 2.map +0 -1
- package/dist/scanner-MF7P3CDE.mjs.map +0 -1
- package/dist/scanner-NT6YG4TD.js +0 -14397
- package/dist/scanner-NT6YG4TD.js 2.map +0 -1
- package/dist/scanner-NT6YG4TD.js.map +0 -1
- package/dist/web-vitals-BH55V7EJ.js 2.map +0 -1
- package/dist/web-vitals-RJYPWAR3 2.mjs +0 -241
- package/dist/web-vitals-RJYPWAR3.mjs 2.map +0 -1
|
@@ -0,0 +1,332 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var server = require('next/server');
|
|
4
|
+
|
|
5
|
+
// src/setup/api-handlers.ts
|
|
6
|
+
var PORTAL_URL = process.env.UPTRADE_PORTAL_URL || "https://portal.uptrademedia.com";
|
|
7
|
+
var API_URL = process.env.UPTRADE_API_URL || "https://api.uptrademedia.com";
|
|
8
|
+
var authSession = {};
|
|
9
|
+
async function handleStatus() {
|
|
10
|
+
const configured = !!(process.env.NEXT_PUBLIC_UPTRADE_PROJECT_ID && process.env.NEXT_PUBLIC_SUPABASE_URL);
|
|
11
|
+
return server.NextResponse.json({
|
|
12
|
+
configured,
|
|
13
|
+
authenticated: !!authSession.accessToken,
|
|
14
|
+
email: authSession.email
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
async function handleAuthStart() {
|
|
18
|
+
const state = Math.random().toString(36).substring(7);
|
|
19
|
+
const redirectUri = "http://localhost:3000/_uptrade/api/auth/callback";
|
|
20
|
+
const authUrl = `${PORTAL_URL}/auth/cli?` + new URLSearchParams({
|
|
21
|
+
redirect_uri: redirectUri,
|
|
22
|
+
state
|
|
23
|
+
});
|
|
24
|
+
return server.NextResponse.json({ authUrl, state });
|
|
25
|
+
}
|
|
26
|
+
async function handleAuthCallback(req) {
|
|
27
|
+
const { searchParams } = new URL(req.url);
|
|
28
|
+
const code = searchParams.get("code");
|
|
29
|
+
const error = searchParams.get("error");
|
|
30
|
+
if (error) {
|
|
31
|
+
return new server.NextResponse(errorHtml("Authentication Failed", error), {
|
|
32
|
+
headers: { "Content-Type": "text/html" }
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
if (!code) {
|
|
36
|
+
return new server.NextResponse(errorHtml("Missing Code", "No authorization code received"), {
|
|
37
|
+
headers: { "Content-Type": "text/html" }
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
try {
|
|
41
|
+
const tokenResponse = await fetch(`${API_URL}/auth/cli-token`, {
|
|
42
|
+
method: "POST",
|
|
43
|
+
headers: { "Content-Type": "application/json" },
|
|
44
|
+
body: JSON.stringify({
|
|
45
|
+
code,
|
|
46
|
+
redirect_uri: "http://localhost:3000/_uptrade/api/auth/callback"
|
|
47
|
+
})
|
|
48
|
+
});
|
|
49
|
+
if (!tokenResponse.ok) {
|
|
50
|
+
throw new Error("Failed to exchange code for token");
|
|
51
|
+
}
|
|
52
|
+
const { access_token, user_id, email } = await tokenResponse.json();
|
|
53
|
+
authSession = {
|
|
54
|
+
accessToken: access_token,
|
|
55
|
+
userId: user_id,
|
|
56
|
+
email
|
|
57
|
+
};
|
|
58
|
+
return new server.NextResponse(successHtml(), {
|
|
59
|
+
headers: { "Content-Type": "text/html" }
|
|
60
|
+
});
|
|
61
|
+
} catch (err) {
|
|
62
|
+
return new server.NextResponse(errorHtml("Token Exchange Failed", err.message), {
|
|
63
|
+
headers: { "Content-Type": "text/html" }
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
async function handleAuthStatus() {
|
|
68
|
+
return server.NextResponse.json({
|
|
69
|
+
authenticated: !!authSession.accessToken,
|
|
70
|
+
email: authSession.email
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
async function handleApiKeyAuth(req) {
|
|
74
|
+
const { apiKey } = await req.json();
|
|
75
|
+
try {
|
|
76
|
+
const response = await fetch(`${API_URL}/auth/verify-api-key`, {
|
|
77
|
+
headers: { "Authorization": `Bearer ${apiKey}` }
|
|
78
|
+
});
|
|
79
|
+
if (!response.ok) {
|
|
80
|
+
return server.NextResponse.json({ error: "Invalid API key" }, { status: 401 });
|
|
81
|
+
}
|
|
82
|
+
const { user_id, email } = await response.json();
|
|
83
|
+
authSession = {
|
|
84
|
+
accessToken: apiKey,
|
|
85
|
+
userId: user_id,
|
|
86
|
+
email
|
|
87
|
+
};
|
|
88
|
+
return server.NextResponse.json({ email });
|
|
89
|
+
} catch {
|
|
90
|
+
return server.NextResponse.json({ error: "Authentication failed" }, { status: 500 });
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
async function handleGetOrganizations() {
|
|
94
|
+
if (!authSession.accessToken) {
|
|
95
|
+
return server.NextResponse.json({ error: "Not authenticated" }, { status: 401 });
|
|
96
|
+
}
|
|
97
|
+
try {
|
|
98
|
+
const response = await fetch(`${API_URL}/organizations`, {
|
|
99
|
+
headers: { "Authorization": `Bearer ${authSession.accessToken}` }
|
|
100
|
+
});
|
|
101
|
+
if (!response.ok) {
|
|
102
|
+
throw new Error("Failed to fetch organizations");
|
|
103
|
+
}
|
|
104
|
+
const organizations = await response.json();
|
|
105
|
+
return server.NextResponse.json({ organizations });
|
|
106
|
+
} catch (err) {
|
|
107
|
+
return server.NextResponse.json({ error: err.message }, { status: 500 });
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
async function handleCreateProject(req) {
|
|
111
|
+
if (!authSession.accessToken) {
|
|
112
|
+
return server.NextResponse.json({ error: "Not authenticated" }, { status: 401 });
|
|
113
|
+
}
|
|
114
|
+
const { orgId, name, domain } = await req.json();
|
|
115
|
+
try {
|
|
116
|
+
const response = await fetch(`${API_URL}/organizations/${orgId}/projects`, {
|
|
117
|
+
method: "POST",
|
|
118
|
+
headers: {
|
|
119
|
+
"Authorization": `Bearer ${authSession.accessToken}`,
|
|
120
|
+
"Content-Type": "application/json"
|
|
121
|
+
},
|
|
122
|
+
body: JSON.stringify({ name, domain })
|
|
123
|
+
});
|
|
124
|
+
if (!response.ok) {
|
|
125
|
+
throw new Error("Failed to create project");
|
|
126
|
+
}
|
|
127
|
+
const project = await response.json();
|
|
128
|
+
return server.NextResponse.json(project);
|
|
129
|
+
} catch (err) {
|
|
130
|
+
return server.NextResponse.json({ error: err.message }, { status: 500 });
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
async function handleScan() {
|
|
134
|
+
const { scanCodebase } = await import('./scanner-ETJAMIT7.js');
|
|
135
|
+
try {
|
|
136
|
+
const results = await scanCodebase(process.cwd());
|
|
137
|
+
return server.NextResponse.json({
|
|
138
|
+
forms: results.forms.map((f) => ({
|
|
139
|
+
type: "form",
|
|
140
|
+
form_library: f.formLibrary,
|
|
141
|
+
file: f.filePath,
|
|
142
|
+
component_name: f.componentName,
|
|
143
|
+
line: f.startLine,
|
|
144
|
+
fields: f.fields,
|
|
145
|
+
complexity: f.complexity,
|
|
146
|
+
suggested_action: f.suggestedAction,
|
|
147
|
+
has_validation: f.hasValidation,
|
|
148
|
+
submits_to: f.submitsTo
|
|
149
|
+
})),
|
|
150
|
+
widgets: results.widgets.map((w) => ({
|
|
151
|
+
type: "widget",
|
|
152
|
+
widget_type: w.widgetType,
|
|
153
|
+
file: w.filePath,
|
|
154
|
+
line: w.startLine
|
|
155
|
+
})),
|
|
156
|
+
metadata: results.metadata.map((m) => ({
|
|
157
|
+
type: "metadata",
|
|
158
|
+
metadata_type: m.type,
|
|
159
|
+
file: m.filePath,
|
|
160
|
+
title: m.title,
|
|
161
|
+
description: m.description
|
|
162
|
+
})),
|
|
163
|
+
sitemaps: results.sitemaps.map((s) => ({
|
|
164
|
+
type: "sitemap",
|
|
165
|
+
sitemap_type: s.type,
|
|
166
|
+
file: s.filePath,
|
|
167
|
+
line: s.startLine,
|
|
168
|
+
generator: s.generator
|
|
169
|
+
}))
|
|
170
|
+
});
|
|
171
|
+
} catch (err) {
|
|
172
|
+
return server.NextResponse.json({ error: err.message }, { status: 500 });
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
async function handleMigrate(req) {
|
|
176
|
+
if (!authSession.accessToken) {
|
|
177
|
+
return server.NextResponse.json({ error: "Not authenticated" }, { status: 401 });
|
|
178
|
+
}
|
|
179
|
+
const { item, projectId } = await req.json();
|
|
180
|
+
const { migrateFiles } = await import('./migrator-XKM7YQCY.js');
|
|
181
|
+
try {
|
|
182
|
+
await migrateFiles([item], projectId, authSession.accessToken);
|
|
183
|
+
return server.NextResponse.json({ success: true });
|
|
184
|
+
} catch (err) {
|
|
185
|
+
return server.NextResponse.json({ error: err.message }, { status: 500 });
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
async function handleConfigure(req) {
|
|
189
|
+
if (!authSession.accessToken) {
|
|
190
|
+
return server.NextResponse.json({ error: "Not authenticated" }, { status: 401 });
|
|
191
|
+
}
|
|
192
|
+
const { projectId } = await req.json();
|
|
193
|
+
const { generateEnvFile, generateProvider } = await import('./generators-YZWIGHCO.js');
|
|
194
|
+
try {
|
|
195
|
+
const configResponse = await fetch(`${API_URL}/projects/${projectId}/config`, {
|
|
196
|
+
headers: { "Authorization": `Bearer ${authSession.accessToken}` }
|
|
197
|
+
});
|
|
198
|
+
if (!configResponse.ok) {
|
|
199
|
+
throw new Error("Failed to fetch project config");
|
|
200
|
+
}
|
|
201
|
+
const config = await configResponse.json();
|
|
202
|
+
const keyResponse = await fetch(`${API_URL}/projects/${projectId}/api-keys`, {
|
|
203
|
+
method: "POST",
|
|
204
|
+
headers: {
|
|
205
|
+
"Authorization": `Bearer ${authSession.accessToken}`,
|
|
206
|
+
"Content-Type": "application/json"
|
|
207
|
+
},
|
|
208
|
+
body: JSON.stringify({ name: "Site-Kit Setup" })
|
|
209
|
+
});
|
|
210
|
+
let apiKey = "ut_xxx";
|
|
211
|
+
if (keyResponse.ok) {
|
|
212
|
+
const keyData = await keyResponse.json();
|
|
213
|
+
apiKey = keyData.key;
|
|
214
|
+
}
|
|
215
|
+
await generateEnvFile({
|
|
216
|
+
projectId,
|
|
217
|
+
supabaseUrl: config.supabase_url,
|
|
218
|
+
supabaseAnonKey: config.supabase_anon_key,
|
|
219
|
+
apiKey
|
|
220
|
+
});
|
|
221
|
+
await generateProvider({ projectId });
|
|
222
|
+
return server.NextResponse.json({ success: true });
|
|
223
|
+
} catch (err) {
|
|
224
|
+
return server.NextResponse.json({ error: err.message }, { status: 500 });
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
async function handleSelfDestruct() {
|
|
228
|
+
const { selfDestruct } = await import('./generators-YZWIGHCO.js');
|
|
229
|
+
try {
|
|
230
|
+
await selfDestruct();
|
|
231
|
+
return server.NextResponse.json({ success: true });
|
|
232
|
+
} catch (err) {
|
|
233
|
+
return server.NextResponse.json({ error: err.message }, { status: 500 });
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
function successHtml() {
|
|
237
|
+
return `<!DOCTYPE html>
|
|
238
|
+
<html>
|
|
239
|
+
<head>
|
|
240
|
+
<title>Uptrade - Authenticated</title>
|
|
241
|
+
<style>
|
|
242
|
+
body {
|
|
243
|
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
|
244
|
+
display: flex; justify-content: center; align-items: center;
|
|
245
|
+
height: 100vh; margin: 0;
|
|
246
|
+
background: linear-gradient(135deg, #1a1a2e 0%, #0f0f1a 100%);
|
|
247
|
+
color: white;
|
|
248
|
+
}
|
|
249
|
+
.container {
|
|
250
|
+
text-align: center; padding: 3rem;
|
|
251
|
+
background: rgba(255, 255, 255, 0.05);
|
|
252
|
+
border-radius: 1rem; border: 1px solid rgba(255, 255, 255, 0.1);
|
|
253
|
+
}
|
|
254
|
+
.icon { font-size: 4rem; margin-bottom: 1rem; }
|
|
255
|
+
h1 { margin: 0 0 0.5rem; }
|
|
256
|
+
p { color: rgba(255, 255, 255, 0.7); margin: 0; }
|
|
257
|
+
</style>
|
|
258
|
+
<script>setTimeout(() => window.close(), 2000)</script>
|
|
259
|
+
</head>
|
|
260
|
+
<body>
|
|
261
|
+
<div class="container">
|
|
262
|
+
<div class="icon">\u2713</div>
|
|
263
|
+
<h1>Authenticated!</h1>
|
|
264
|
+
<p>This window will close automatically...</p>
|
|
265
|
+
</div>
|
|
266
|
+
</body>
|
|
267
|
+
</html>`;
|
|
268
|
+
}
|
|
269
|
+
function errorHtml(title, message) {
|
|
270
|
+
return `<!DOCTYPE html>
|
|
271
|
+
<html>
|
|
272
|
+
<head>
|
|
273
|
+
<title>Uptrade - Error</title>
|
|
274
|
+
<style>
|
|
275
|
+
body {
|
|
276
|
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
|
277
|
+
display: flex; justify-content: center; align-items: center;
|
|
278
|
+
height: 100vh; margin: 0;
|
|
279
|
+
background: linear-gradient(135deg, #2e1a1a 0%, #1a0f0f 100%);
|
|
280
|
+
color: white;
|
|
281
|
+
}
|
|
282
|
+
.container {
|
|
283
|
+
text-align: center; padding: 3rem;
|
|
284
|
+
background: rgba(255, 255, 255, 0.05);
|
|
285
|
+
border-radius: 1rem; border: 1px solid rgba(255, 100, 100, 0.2);
|
|
286
|
+
}
|
|
287
|
+
.icon { font-size: 4rem; margin-bottom: 1rem; }
|
|
288
|
+
h1 { margin: 0 0 0.5rem; color: #ff6b6b; }
|
|
289
|
+
p { color: rgba(255, 255, 255, 0.7); margin: 0; }
|
|
290
|
+
</style>
|
|
291
|
+
</head>
|
|
292
|
+
<body>
|
|
293
|
+
<div class="container">
|
|
294
|
+
<div class="icon">\u2717</div>
|
|
295
|
+
<h1>${title}</h1>
|
|
296
|
+
<p>${message}</p>
|
|
297
|
+
</div>
|
|
298
|
+
</body>
|
|
299
|
+
</html>`;
|
|
300
|
+
}
|
|
301
|
+
async function handleRequest(req, route) {
|
|
302
|
+
switch (route) {
|
|
303
|
+
case "status":
|
|
304
|
+
return handleStatus();
|
|
305
|
+
case "auth/start":
|
|
306
|
+
return handleAuthStart();
|
|
307
|
+
case "auth/callback":
|
|
308
|
+
return handleAuthCallback(req);
|
|
309
|
+
case "auth/status":
|
|
310
|
+
return handleAuthStatus();
|
|
311
|
+
case "auth/apikey":
|
|
312
|
+
return handleApiKeyAuth(req);
|
|
313
|
+
case "organizations":
|
|
314
|
+
return handleGetOrganizations();
|
|
315
|
+
case "projects":
|
|
316
|
+
return handleCreateProject(req);
|
|
317
|
+
case "scan":
|
|
318
|
+
return handleScan();
|
|
319
|
+
case "migrate":
|
|
320
|
+
return handleMigrate(req);
|
|
321
|
+
case "configure":
|
|
322
|
+
return handleConfigure(req);
|
|
323
|
+
case "self-destruct":
|
|
324
|
+
return handleSelfDestruct();
|
|
325
|
+
default:
|
|
326
|
+
return server.NextResponse.json({ error: "Not found" }, { status: 404 });
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
exports.handleRequest = handleRequest;
|
|
331
|
+
//# sourceMappingURL=chunk-YKMCG3DS.js.map
|
|
332
|
+
//# sourceMappingURL=chunk-YKMCG3DS.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/setup/api-handlers.ts"],"names":["NextResponse"],"mappings":"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","file":"chunk-YKMCG3DS.js","sourcesContent":["/**\n * Setup Wizard API Handlers\n * \n * These are Next.js API route handlers that the SetupWizard component calls.\n * They run on the server and have access to fs for code generation.\n * \n * Usage: Copy these to your app/_uptrade/api/ folder\n */\n\nimport { NextRequest, NextResponse } from 'next/server'\n\n// ============================================\n// Configuration\n// ============================================\n\nconst PORTAL_URL = process.env.UPTRADE_PORTAL_URL || 'https://portal.uptrademedia.com'\nconst API_URL = process.env.UPTRADE_API_URL || 'https://api.uptrademedia.com'\n\n// In-memory session store (for dev server only)\nlet authSession: {\n accessToken?: string\n userId?: string\n email?: string\n pendingCode?: string\n} = {}\n\n// ============================================\n// Status Handler\n// ============================================\n\nexport async function handleStatus(): Promise<NextResponse> {\n const configured = !!(\n process.env.NEXT_PUBLIC_UPTRADE_PROJECT_ID &&\n process.env.NEXT_PUBLIC_SUPABASE_URL\n )\n\n return NextResponse.json({\n configured,\n authenticated: !!authSession.accessToken,\n email: authSession.email\n })\n}\n\n// ============================================\n// Auth Handlers\n// ============================================\n\nexport async function handleAuthStart(): Promise<NextResponse> {\n const state = Math.random().toString(36).substring(7)\n const redirectUri = 'http://localhost:3000/_uptrade/api/auth/callback'\n \n const authUrl = `${PORTAL_URL}/auth/cli?` + new URLSearchParams({\n redirect_uri: redirectUri,\n state\n })\n\n return NextResponse.json({ authUrl, state })\n}\n\nexport async function handleAuthCallback(req: NextRequest): Promise<NextResponse> {\n const { searchParams } = new URL(req.url)\n const code = searchParams.get('code')\n const error = searchParams.get('error')\n\n if (error) {\n return new NextResponse(errorHtml('Authentication Failed', error), {\n headers: { 'Content-Type': 'text/html' }\n })\n }\n\n if (!code) {\n return new NextResponse(errorHtml('Missing Code', 'No authorization code received'), {\n headers: { 'Content-Type': 'text/html' }\n })\n }\n\n try {\n // Exchange code for token\n const tokenResponse = await fetch(`${API_URL}/auth/cli-token`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n code,\n redirect_uri: 'http://localhost:3000/_uptrade/api/auth/callback'\n })\n })\n\n if (!tokenResponse.ok) {\n throw new Error('Failed to exchange code for token')\n }\n\n const { access_token, user_id, email } = await tokenResponse.json()\n \n authSession = {\n accessToken: access_token,\n userId: user_id,\n email\n }\n\n return new NextResponse(successHtml(), {\n headers: { 'Content-Type': 'text/html' }\n })\n } catch (err) {\n return new NextResponse(errorHtml('Token Exchange Failed', (err as Error).message), {\n headers: { 'Content-Type': 'text/html' }\n })\n }\n}\n\nexport async function handleAuthStatus(): Promise<NextResponse> {\n return NextResponse.json({\n authenticated: !!authSession.accessToken,\n email: authSession.email\n })\n}\n\nexport async function handleApiKeyAuth(req: NextRequest): Promise<NextResponse> {\n const { apiKey } = await req.json()\n\n try {\n const response = await fetch(`${API_URL}/auth/verify-api-key`, {\n headers: { 'Authorization': `Bearer ${apiKey}` }\n })\n\n if (!response.ok) {\n return NextResponse.json({ error: 'Invalid API key' }, { status: 401 })\n }\n\n const { user_id, email } = await response.json()\n \n authSession = {\n accessToken: apiKey,\n userId: user_id,\n email\n }\n\n return NextResponse.json({ email })\n } catch {\n return NextResponse.json({ error: 'Authentication failed' }, { status: 500 })\n }\n}\n\n// ============================================\n// Organization & Project Handlers\n// ============================================\n\nexport async function handleGetOrganizations(): Promise<NextResponse> {\n if (!authSession.accessToken) {\n return NextResponse.json({ error: 'Not authenticated' }, { status: 401 })\n }\n\n try {\n const response = await fetch(`${API_URL}/organizations`, {\n headers: { 'Authorization': `Bearer ${authSession.accessToken}` }\n })\n\n if (!response.ok) {\n throw new Error('Failed to fetch organizations')\n }\n\n const organizations = await response.json()\n return NextResponse.json({ organizations })\n } catch (err) {\n return NextResponse.json({ error: (err as Error).message }, { status: 500 })\n }\n}\n\nexport async function handleCreateProject(req: NextRequest): Promise<NextResponse> {\n if (!authSession.accessToken) {\n return NextResponse.json({ error: 'Not authenticated' }, { status: 401 })\n }\n\n const { orgId, name, domain } = await req.json()\n\n try {\n const response = await fetch(`${API_URL}/organizations/${orgId}/projects`, {\n method: 'POST',\n headers: {\n 'Authorization': `Bearer ${authSession.accessToken}`,\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({ name, domain })\n })\n\n if (!response.ok) {\n throw new Error('Failed to create project')\n }\n\n const project = await response.json()\n return NextResponse.json(project)\n } catch (err) {\n return NextResponse.json({ error: (err as Error).message }, { status: 500 })\n }\n}\n\n// ============================================\n// Scan Handler\n// ============================================\n\nexport async function handleScan(): Promise<NextResponse> {\n const { scanCodebase } = await import('../cli/scanner')\n \n try {\n const results = await scanCodebase(process.cwd())\n \n return NextResponse.json({\n forms: results.forms.map(f => ({\n type: 'form',\n form_library: f.formLibrary,\n file: f.filePath,\n component_name: f.componentName,\n line: f.startLine,\n fields: f.fields,\n complexity: f.complexity,\n suggested_action: f.suggestedAction,\n has_validation: f.hasValidation,\n submits_to: f.submitsTo,\n })),\n widgets: results.widgets.map(w => ({\n type: 'widget',\n widget_type: w.widgetType,\n file: w.filePath,\n line: w.startLine,\n })),\n metadata: results.metadata.map(m => ({\n type: 'metadata',\n metadata_type: m.type,\n file: m.filePath,\n title: m.title,\n description: m.description,\n })),\n sitemaps: results.sitemaps.map(s => ({\n type: 'sitemap',\n sitemap_type: s.type,\n file: s.filePath,\n line: s.startLine,\n generator: s.generator,\n })),\n })\n } catch (err) {\n return NextResponse.json({ error: (err as Error).message }, { status: 500 })\n }\n}\n\n// ============================================\n// Migrate Handler\n// ============================================\n\nexport async function handleMigrate(req: NextRequest): Promise<NextResponse> {\n if (!authSession.accessToken) {\n return NextResponse.json({ error: 'Not authenticated' }, { status: 401 })\n }\n\n const { item, projectId } = await req.json()\n const { migrateFiles } = await import('../cli/migrator')\n\n try {\n await migrateFiles([item], projectId, authSession.accessToken)\n return NextResponse.json({ success: true })\n } catch (err) {\n return NextResponse.json({ error: (err as Error).message }, { status: 500 })\n }\n}\n\n// ============================================\n// Configure Handler\n// ============================================\n\nexport async function handleConfigure(req: NextRequest): Promise<NextResponse> {\n if (!authSession.accessToken) {\n return NextResponse.json({ error: 'Not authenticated' }, { status: 401 })\n }\n\n const { projectId } = await req.json()\n const { generateEnvFile, generateProvider } = await import('../cli/generators')\n\n try {\n // Get Supabase config from API\n const configResponse = await fetch(`${API_URL}/projects/${projectId}/config`, {\n headers: { 'Authorization': `Bearer ${authSession.accessToken}` }\n })\n\n if (!configResponse.ok) {\n throw new Error('Failed to fetch project config')\n }\n\n const config = await configResponse.json()\n\n // Generate API key\n const keyResponse = await fetch(`${API_URL}/projects/${projectId}/api-keys`, {\n method: 'POST',\n headers: {\n 'Authorization': `Bearer ${authSession.accessToken}`,\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({ name: 'Site-Kit Setup' })\n })\n\n let apiKey = 'ut_xxx'\n if (keyResponse.ok) {\n const keyData = await keyResponse.json()\n // Portal API returns { key: string, apiKey: {...} }\n apiKey = keyData.key\n }\n\n // Generate env file\n await generateEnvFile({\n projectId,\n supabaseUrl: config.supabase_url,\n supabaseAnonKey: config.supabase_anon_key,\n apiKey\n })\n\n // Generate provider in layout\n await generateProvider({ projectId })\n\n return NextResponse.json({ success: true })\n } catch (err) {\n return NextResponse.json({ error: (err as Error).message }, { status: 500 })\n }\n}\n\n// ============================================\n// Self-Destruct Handler\n// ============================================\n\nexport async function handleSelfDestruct(): Promise<NextResponse> {\n const { selfDestruct } = await import('../cli/generators')\n\n try {\n await selfDestruct()\n return NextResponse.json({ success: true })\n } catch (err) {\n return NextResponse.json({ error: (err as Error).message }, { status: 500 })\n }\n}\n\n// ============================================\n// HTML Templates\n// ============================================\n\nfunction successHtml(): string {\n return `<!DOCTYPE html>\n<html>\n<head>\n <title>Uptrade - Authenticated</title>\n <style>\n body {\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n display: flex; justify-content: center; align-items: center;\n height: 100vh; margin: 0;\n background: linear-gradient(135deg, #1a1a2e 0%, #0f0f1a 100%);\n color: white;\n }\n .container {\n text-align: center; padding: 3rem;\n background: rgba(255, 255, 255, 0.05);\n border-radius: 1rem; border: 1px solid rgba(255, 255, 255, 0.1);\n }\n .icon { font-size: 4rem; margin-bottom: 1rem; }\n h1 { margin: 0 0 0.5rem; }\n p { color: rgba(255, 255, 255, 0.7); margin: 0; }\n </style>\n <script>setTimeout(() => window.close(), 2000)</script>\n</head>\n<body>\n <div class=\"container\">\n <div class=\"icon\">✓</div>\n <h1>Authenticated!</h1>\n <p>This window will close automatically...</p>\n </div>\n</body>\n</html>`\n}\n\nfunction errorHtml(title: string, message: string): string {\n return `<!DOCTYPE html>\n<html>\n<head>\n <title>Uptrade - Error</title>\n <style>\n body {\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n display: flex; justify-content: center; align-items: center;\n height: 100vh; margin: 0;\n background: linear-gradient(135deg, #2e1a1a 0%, #1a0f0f 100%);\n color: white;\n }\n .container {\n text-align: center; padding: 3rem;\n background: rgba(255, 255, 255, 0.05);\n border-radius: 1rem; border: 1px solid rgba(255, 100, 100, 0.2);\n }\n .icon { font-size: 4rem; margin-bottom: 1rem; }\n h1 { margin: 0 0 0.5rem; color: #ff6b6b; }\n p { color: rgba(255, 255, 255, 0.7); margin: 0; }\n </style>\n</head>\n<body>\n <div class=\"container\">\n <div class=\"icon\">✗</div>\n <h1>${title}</h1>\n <p>${message}</p>\n </div>\n</body>\n</html>`\n}\n\n// ============================================\n// Unified Route Handler\n// ============================================\n\nexport async function handleRequest(\n req: NextRequest,\n route: string\n): Promise<NextResponse> {\n switch (route) {\n case 'status':\n return handleStatus()\n case 'auth/start':\n return handleAuthStart()\n case 'auth/callback':\n return handleAuthCallback(req)\n case 'auth/status':\n return handleAuthStatus()\n case 'auth/apikey':\n return handleApiKeyAuth(req)\n case 'organizations':\n return handleGetOrganizations()\n case 'projects':\n return handleCreateProject(req)\n case 'scan':\n return handleScan()\n case 'migrate':\n return handleMigrate(req)\n case 'configure':\n return handleConfigure(req)\n case 'self-destruct':\n return handleSelfDestruct()\n default:\n return NextResponse.json({ error: 'Not found' }, { status: 404 })\n }\n}\n"]}
|
package/dist/commerce/index.js
CHANGED
|
@@ -1,157 +1,157 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkPYYEPAHL_js = require('../chunk-PYYEPAHL.js');
|
|
4
4
|
require('../chunk-EQCVQC35.js');
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
Object.defineProperty(exports, "CalendarView", {
|
|
9
9
|
enumerable: true,
|
|
10
|
-
get: function () { return
|
|
10
|
+
get: function () { return chunkPYYEPAHL_js.CalendarView; }
|
|
11
11
|
});
|
|
12
12
|
Object.defineProperty(exports, "CheckoutForm", {
|
|
13
13
|
enumerable: true,
|
|
14
|
-
get: function () { return
|
|
14
|
+
get: function () { return chunkPYYEPAHL_js.CheckoutForm; }
|
|
15
15
|
});
|
|
16
16
|
Object.defineProperty(exports, "EventCalendar", {
|
|
17
17
|
enumerable: true,
|
|
18
|
-
get: function () { return
|
|
18
|
+
get: function () { return chunkPYYEPAHL_js.EventCalendar; }
|
|
19
19
|
});
|
|
20
20
|
Object.defineProperty(exports, "EventEmbed", {
|
|
21
21
|
enumerable: true,
|
|
22
|
-
get: function () { return
|
|
22
|
+
get: function () { return chunkPYYEPAHL_js.EventEmbed; }
|
|
23
23
|
});
|
|
24
24
|
Object.defineProperty(exports, "EventModal", {
|
|
25
25
|
enumerable: true,
|
|
26
|
-
get: function () { return
|
|
26
|
+
get: function () { return chunkPYYEPAHL_js.EventModal; }
|
|
27
27
|
});
|
|
28
28
|
Object.defineProperty(exports, "EventTile", {
|
|
29
29
|
enumerable: true,
|
|
30
|
-
get: function () { return
|
|
30
|
+
get: function () { return chunkPYYEPAHL_js.EventTile; }
|
|
31
31
|
});
|
|
32
32
|
Object.defineProperty(exports, "EventsWidget", {
|
|
33
33
|
enumerable: true,
|
|
34
|
-
get: function () { return
|
|
34
|
+
get: function () { return chunkPYYEPAHL_js.EventsWidget; }
|
|
35
35
|
});
|
|
36
36
|
Object.defineProperty(exports, "OfferingCard", {
|
|
37
37
|
enumerable: true,
|
|
38
|
-
get: function () { return
|
|
38
|
+
get: function () { return chunkPYYEPAHL_js.OfferingCard; }
|
|
39
39
|
});
|
|
40
40
|
Object.defineProperty(exports, "OfferingList", {
|
|
41
41
|
enumerable: true,
|
|
42
|
-
get: function () { return
|
|
42
|
+
get: function () { return chunkPYYEPAHL_js.OfferingList; }
|
|
43
43
|
});
|
|
44
44
|
Object.defineProperty(exports, "ProductDetail", {
|
|
45
45
|
enumerable: true,
|
|
46
|
-
get: function () { return
|
|
46
|
+
get: function () { return chunkPYYEPAHL_js.ProductDetail; }
|
|
47
47
|
});
|
|
48
48
|
Object.defineProperty(exports, "ProductEmbed", {
|
|
49
49
|
enumerable: true,
|
|
50
|
-
get: function () { return
|
|
50
|
+
get: function () { return chunkPYYEPAHL_js.ProductEmbed; }
|
|
51
51
|
});
|
|
52
52
|
Object.defineProperty(exports, "ProductGrid", {
|
|
53
53
|
enumerable: true,
|
|
54
|
-
get: function () { return
|
|
54
|
+
get: function () { return chunkPYYEPAHL_js.ProductGrid; }
|
|
55
55
|
});
|
|
56
56
|
Object.defineProperty(exports, "ProductPage", {
|
|
57
57
|
enumerable: true,
|
|
58
|
-
get: function () { return
|
|
58
|
+
get: function () { return chunkPYYEPAHL_js.ProductPage; }
|
|
59
59
|
});
|
|
60
60
|
Object.defineProperty(exports, "RegistrationForm", {
|
|
61
61
|
enumerable: true,
|
|
62
|
-
get: function () { return
|
|
62
|
+
get: function () { return chunkPYYEPAHL_js.RegistrationForm; }
|
|
63
63
|
});
|
|
64
64
|
Object.defineProperty(exports, "UpcomingEvents", {
|
|
65
65
|
enumerable: true,
|
|
66
|
-
get: function () { return
|
|
66
|
+
get: function () { return chunkPYYEPAHL_js.UpcomingEvents; }
|
|
67
67
|
});
|
|
68
68
|
Object.defineProperty(exports, "createCheckoutSession", {
|
|
69
69
|
enumerable: true,
|
|
70
|
-
get: function () { return
|
|
70
|
+
get: function () { return chunkPYYEPAHL_js.createCheckoutSession; }
|
|
71
71
|
});
|
|
72
72
|
Object.defineProperty(exports, "fetchCategories", {
|
|
73
73
|
enumerable: true,
|
|
74
|
-
get: function () { return
|
|
74
|
+
get: function () { return chunkPYYEPAHL_js.fetchCategories; }
|
|
75
75
|
});
|
|
76
76
|
Object.defineProperty(exports, "fetchLatestOffering", {
|
|
77
77
|
enumerable: true,
|
|
78
|
-
get: function () { return
|
|
78
|
+
get: function () { return chunkPYYEPAHL_js.fetchLatestOffering; }
|
|
79
79
|
});
|
|
80
80
|
Object.defineProperty(exports, "fetchNextEvent", {
|
|
81
81
|
enumerable: true,
|
|
82
|
-
get: function () { return
|
|
82
|
+
get: function () { return chunkPYYEPAHL_js.fetchNextEvent; }
|
|
83
83
|
});
|
|
84
84
|
Object.defineProperty(exports, "fetchOffering", {
|
|
85
85
|
enumerable: true,
|
|
86
|
-
get: function () { return
|
|
86
|
+
get: function () { return chunkPYYEPAHL_js.fetchOffering; }
|
|
87
87
|
});
|
|
88
88
|
Object.defineProperty(exports, "fetchOfferings", {
|
|
89
89
|
enumerable: true,
|
|
90
|
-
get: function () { return
|
|
90
|
+
get: function () { return chunkPYYEPAHL_js.fetchOfferings; }
|
|
91
91
|
});
|
|
92
92
|
Object.defineProperty(exports, "fetchProductBySlug", {
|
|
93
93
|
enumerable: true,
|
|
94
|
-
get: function () { return
|
|
94
|
+
get: function () { return chunkPYYEPAHL_js.fetchProductBySlug; }
|
|
95
95
|
});
|
|
96
96
|
Object.defineProperty(exports, "fetchProducts", {
|
|
97
97
|
enumerable: true,
|
|
98
|
-
get: function () { return
|
|
98
|
+
get: function () { return chunkPYYEPAHL_js.fetchProducts; }
|
|
99
99
|
});
|
|
100
100
|
Object.defineProperty(exports, "fetchProductsPublic", {
|
|
101
101
|
enumerable: true,
|
|
102
|
-
get: function () { return
|
|
102
|
+
get: function () { return chunkPYYEPAHL_js.fetchProductsPublic; }
|
|
103
103
|
});
|
|
104
104
|
Object.defineProperty(exports, "fetchServices", {
|
|
105
105
|
enumerable: true,
|
|
106
|
-
get: function () { return
|
|
106
|
+
get: function () { return chunkPYYEPAHL_js.fetchServices; }
|
|
107
107
|
});
|
|
108
108
|
Object.defineProperty(exports, "fetchUpcomingEvents", {
|
|
109
109
|
enumerable: true,
|
|
110
|
-
get: function () { return
|
|
110
|
+
get: function () { return chunkPYYEPAHL_js.fetchUpcomingEvents; }
|
|
111
111
|
});
|
|
112
112
|
Object.defineProperty(exports, "formatDate", {
|
|
113
113
|
enumerable: true,
|
|
114
|
-
get: function () { return
|
|
114
|
+
get: function () { return chunkPYYEPAHL_js.formatDate; }
|
|
115
115
|
});
|
|
116
116
|
Object.defineProperty(exports, "formatDateRange", {
|
|
117
117
|
enumerable: true,
|
|
118
|
-
get: function () { return
|
|
118
|
+
get: function () { return chunkPYYEPAHL_js.formatDateRange; }
|
|
119
119
|
});
|
|
120
120
|
Object.defineProperty(exports, "formatDateTime", {
|
|
121
121
|
enumerable: true,
|
|
122
|
-
get: function () { return
|
|
122
|
+
get: function () { return chunkPYYEPAHL_js.formatDateTime; }
|
|
123
123
|
});
|
|
124
124
|
Object.defineProperty(exports, "formatPrice", {
|
|
125
125
|
enumerable: true,
|
|
126
|
-
get: function () { return
|
|
126
|
+
get: function () { return chunkPYYEPAHL_js.formatPrice; }
|
|
127
127
|
});
|
|
128
128
|
Object.defineProperty(exports, "formatTime", {
|
|
129
129
|
enumerable: true,
|
|
130
|
-
get: function () { return
|
|
130
|
+
get: function () { return chunkPYYEPAHL_js.formatTime; }
|
|
131
131
|
});
|
|
132
132
|
Object.defineProperty(exports, "getOfferingUrl", {
|
|
133
133
|
enumerable: true,
|
|
134
|
-
get: function () { return
|
|
134
|
+
get: function () { return chunkPYYEPAHL_js.getOfferingUrl; }
|
|
135
135
|
});
|
|
136
136
|
Object.defineProperty(exports, "getRelativeTimeUntil", {
|
|
137
137
|
enumerable: true,
|
|
138
|
-
get: function () { return
|
|
138
|
+
get: function () { return chunkPYYEPAHL_js.getRelativeTimeUntil; }
|
|
139
139
|
});
|
|
140
140
|
Object.defineProperty(exports, "getSpotsRemaining", {
|
|
141
141
|
enumerable: true,
|
|
142
|
-
get: function () { return
|
|
142
|
+
get: function () { return chunkPYYEPAHL_js.getSpotsRemaining; }
|
|
143
143
|
});
|
|
144
144
|
Object.defineProperty(exports, "isEventSoldOut", {
|
|
145
145
|
enumerable: true,
|
|
146
|
-
get: function () { return
|
|
146
|
+
get: function () { return chunkPYYEPAHL_js.isEventSoldOut; }
|
|
147
147
|
});
|
|
148
148
|
Object.defineProperty(exports, "registerForEvent", {
|
|
149
149
|
enumerable: true,
|
|
150
|
-
get: function () { return
|
|
150
|
+
get: function () { return chunkPYYEPAHL_js.registerForEvent; }
|
|
151
151
|
});
|
|
152
152
|
Object.defineProperty(exports, "useEventModal", {
|
|
153
153
|
enumerable: true,
|
|
154
|
-
get: function () { return
|
|
154
|
+
get: function () { return chunkPYYEPAHL_js.useEventModal; }
|
|
155
155
|
});
|
|
156
156
|
//# sourceMappingURL=index.js.map
|
|
157
157
|
//# sourceMappingURL=index.js.map
|
package/dist/commerce/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { CalendarView, CheckoutForm, EventCalendar, EventEmbed, EventModal, EventTile, EventsWidget, OfferingCard, OfferingList, ProductDetail, ProductEmbed, ProductGrid, ProductPage, RegistrationForm, UpcomingEvents, createCheckoutSession, fetchCategories, fetchLatestOffering, fetchNextEvent, fetchOffering, fetchOfferings, fetchProductBySlug, fetchProducts, fetchProductsPublic, fetchServices, fetchUpcomingEvents, formatDate, formatDateRange, formatDateTime, formatPrice, formatTime, getOfferingUrl, getRelativeTimeUntil, getSpotsRemaining, isEventSoldOut, registerForEvent, useEventModal } from '../chunk-
|
|
1
|
+
export { CalendarView, CheckoutForm, EventCalendar, EventEmbed, EventModal, EventTile, EventsWidget, OfferingCard, OfferingList, ProductDetail, ProductEmbed, ProductGrid, ProductPage, RegistrationForm, UpcomingEvents, createCheckoutSession, fetchCategories, fetchLatestOffering, fetchNextEvent, fetchOffering, fetchOfferings, fetchProductBySlug, fetchProducts, fetchProductsPublic, fetchServices, fetchUpcomingEvents, formatDate, formatDateRange, formatDateTime, formatPrice, formatTime, getOfferingUrl, getRelativeTimeUntil, getSpotsRemaining, isEventSoldOut, registerForEvent, useEventModal } from '../chunk-63JNO4QN.mjs';
|
|
2
2
|
import '../chunk-NYKRE2FL.mjs';
|
|
3
3
|
//# sourceMappingURL=index.mjs.map
|
|
4
4
|
//# sourceMappingURL=index.mjs.map
|
package/dist/engage/index.js
CHANGED
|
@@ -1,50 +1,17 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkQAYJV4KK_js = require('../chunk-QAYJV4KK.js');
|
|
4
4
|
require('../chunk-EQCVQC35.js');
|
|
5
|
-
var jsxRuntime = require('react/jsx-runtime');
|
|
6
5
|
|
|
7
|
-
function ChatWidget({ projectId, config }) {
|
|
8
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
9
|
-
"div",
|
|
10
|
-
{
|
|
11
|
-
style: {
|
|
12
|
-
position: "fixed",
|
|
13
|
-
[config?.position === "bottom-left" ? "left" : "right"]: 20,
|
|
14
|
-
bottom: 20,
|
|
15
|
-
width: 60,
|
|
16
|
-
height: 60,
|
|
17
|
-
borderRadius: "50%",
|
|
18
|
-
backgroundColor: config?.buttonColor || "#0066cc",
|
|
19
|
-
display: "flex",
|
|
20
|
-
alignItems: "center",
|
|
21
|
-
justifyContent: "center",
|
|
22
|
-
cursor: "pointer",
|
|
23
|
-
boxShadow: "0 4px 12px rgba(0, 0, 0, 0.2)"
|
|
24
|
-
},
|
|
25
|
-
title: "Chat with us",
|
|
26
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
27
|
-
"svg",
|
|
28
|
-
{
|
|
29
|
-
width: "28",
|
|
30
|
-
height: "28",
|
|
31
|
-
viewBox: "0 0 24 24",
|
|
32
|
-
fill: "none",
|
|
33
|
-
stroke: "white",
|
|
34
|
-
strokeWidth: "2",
|
|
35
|
-
strokeLinecap: "round",
|
|
36
|
-
strokeLinejoin: "round",
|
|
37
|
-
children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z" })
|
|
38
|
-
}
|
|
39
|
-
)
|
|
40
|
-
}
|
|
41
|
-
);
|
|
42
|
-
}
|
|
43
6
|
|
|
7
|
+
|
|
8
|
+
Object.defineProperty(exports, "ChatWidget", {
|
|
9
|
+
enumerable: true,
|
|
10
|
+
get: function () { return chunkQAYJV4KK_js.ChatWidget; }
|
|
11
|
+
});
|
|
44
12
|
Object.defineProperty(exports, "EngageWidget", {
|
|
45
13
|
enumerable: true,
|
|
46
|
-
get: function () { return
|
|
14
|
+
get: function () { return chunkQAYJV4KK_js.EngageWidget; }
|
|
47
15
|
});
|
|
48
|
-
exports.ChatWidget = ChatWidget;
|
|
49
16
|
//# sourceMappingURL=index.js.map
|
|
50
17
|
//# sourceMappingURL=index.js.map
|
package/dist/engage/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
|