@underpeaks/generator-nextjs 1.0.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (185) hide show
  1. package/dist/generator.d.ts +3 -0
  2. package/dist/generator.d.ts.map +1 -0
  3. package/dist/generator.js +113 -0
  4. package/dist/generator.js.map +1 -0
  5. package/dist/index.d.ts +2 -0
  6. package/dist/index.d.ts.map +1 -0
  7. package/dist/index.js +7 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/integrations/algolia.d.ts +3 -0
  10. package/dist/integrations/algolia.d.ts.map +1 -0
  11. package/dist/integrations/algolia.js +56 -0
  12. package/dist/integrations/algolia.js.map +1 -0
  13. package/dist/integrations/anthropic.d.ts +3 -0
  14. package/dist/integrations/anthropic.d.ts.map +1 -0
  15. package/dist/integrations/anthropic.js +54 -0
  16. package/dist/integrations/anthropic.js.map +1 -0
  17. package/dist/integrations/aws-s3.d.ts +3 -0
  18. package/dist/integrations/aws-s3.d.ts.map +1 -0
  19. package/dist/integrations/aws-s3.js +59 -0
  20. package/dist/integrations/aws-s3.js.map +1 -0
  21. package/dist/integrations/clerk.d.ts +3 -0
  22. package/dist/integrations/clerk.d.ts.map +1 -0
  23. package/dist/integrations/clerk.js +34 -0
  24. package/dist/integrations/clerk.js.map +1 -0
  25. package/dist/integrations/cloudinary.d.ts +3 -0
  26. package/dist/integrations/cloudinary.d.ts.map +1 -0
  27. package/dist/integrations/cloudinary.js +57 -0
  28. package/dist/integrations/cloudinary.js.map +1 -0
  29. package/dist/integrations/crisp.d.ts +3 -0
  30. package/dist/integrations/crisp.d.ts.map +1 -0
  31. package/dist/integrations/crisp.js +53 -0
  32. package/dist/integrations/crisp.js.map +1 -0
  33. package/dist/integrations/firebase.d.ts +3 -0
  34. package/dist/integrations/firebase.d.ts.map +1 -0
  35. package/dist/integrations/firebase.js +53 -0
  36. package/dist/integrations/firebase.js.map +1 -0
  37. package/dist/integrations/flutterwave.d.ts +3 -0
  38. package/dist/integrations/flutterwave.d.ts.map +1 -0
  39. package/dist/integrations/flutterwave.js +53 -0
  40. package/dist/integrations/flutterwave.js.map +1 -0
  41. package/dist/integrations/gemini.d.ts +3 -0
  42. package/dist/integrations/gemini.d.ts.map +1 -0
  43. package/dist/integrations/gemini.js +40 -0
  44. package/dist/integrations/gemini.js.map +1 -0
  45. package/dist/integrations/github.d.ts +3 -0
  46. package/dist/integrations/github.d.ts.map +1 -0
  47. package/dist/integrations/github.js +53 -0
  48. package/dist/integrations/github.js.map +1 -0
  49. package/dist/integrations/hubspot.d.ts +3 -0
  50. package/dist/integrations/hubspot.d.ts.map +1 -0
  51. package/dist/integrations/hubspot.js +54 -0
  52. package/dist/integrations/hubspot.js.map +1 -0
  53. package/dist/integrations/index.d.ts +3 -0
  54. package/dist/integrations/index.d.ts.map +1 -0
  55. package/dist/integrations/index.js +63 -0
  56. package/dist/integrations/index.js.map +1 -0
  57. package/dist/integrations/lemonsqueezy.d.ts +3 -0
  58. package/dist/integrations/lemonsqueezy.d.ts.map +1 -0
  59. package/dist/integrations/lemonsqueezy.js +43 -0
  60. package/dist/integrations/lemonsqueezy.js.map +1 -0
  61. package/dist/integrations/mailchimp.d.ts +3 -0
  62. package/dist/integrations/mailchimp.d.ts.map +1 -0
  63. package/dist/integrations/mailchimp.js +52 -0
  64. package/dist/integrations/mailchimp.js.map +1 -0
  65. package/dist/integrations/openai.d.ts +3 -0
  66. package/dist/integrations/openai.d.ts.map +1 -0
  67. package/dist/integrations/openai.js +78 -0
  68. package/dist/integrations/openai.js.map +1 -0
  69. package/dist/integrations/payfast.d.ts +3 -0
  70. package/dist/integrations/payfast.d.ts.map +1 -0
  71. package/dist/integrations/payfast.js +94 -0
  72. package/dist/integrations/payfast.js.map +1 -0
  73. package/dist/integrations/pusher.d.ts +3 -0
  74. package/dist/integrations/pusher.d.ts.map +1 -0
  75. package/dist/integrations/pusher.js +86 -0
  76. package/dist/integrations/pusher.js.map +1 -0
  77. package/dist/integrations/resend.d.ts +3 -0
  78. package/dist/integrations/resend.d.ts.map +1 -0
  79. package/dist/integrations/resend.js +45 -0
  80. package/dist/integrations/resend.js.map +1 -0
  81. package/dist/integrations/sendgrid.d.ts +3 -0
  82. package/dist/integrations/sendgrid.d.ts.map +1 -0
  83. package/dist/integrations/sendgrid.js +42 -0
  84. package/dist/integrations/sendgrid.js.map +1 -0
  85. package/dist/integrations/sentry.d.ts +3 -0
  86. package/dist/integrations/sentry.d.ts.map +1 -0
  87. package/dist/integrations/sentry.js +49 -0
  88. package/dist/integrations/sentry.js.map +1 -0
  89. package/dist/integrations/slack.d.ts +3 -0
  90. package/dist/integrations/slack.d.ts.map +1 -0
  91. package/dist/integrations/slack.js +54 -0
  92. package/dist/integrations/slack.js.map +1 -0
  93. package/dist/integrations/storage.d.ts +3 -0
  94. package/dist/integrations/storage.d.ts.map +1 -0
  95. package/dist/integrations/storage.js +71 -0
  96. package/dist/integrations/storage.js.map +1 -0
  97. package/dist/integrations/stripe.d.ts +3 -0
  98. package/dist/integrations/stripe.d.ts.map +1 -0
  99. package/dist/integrations/stripe.js +65 -0
  100. package/dist/integrations/stripe.js.map +1 -0
  101. package/dist/integrations/twilio.d.ts +3 -0
  102. package/dist/integrations/twilio.d.ts.map +1 -0
  103. package/dist/integrations/twilio.js +45 -0
  104. package/dist/integrations/twilio.js.map +1 -0
  105. package/dist/integrations/uploadthing.d.ts +3 -0
  106. package/dist/integrations/uploadthing.d.ts.map +1 -0
  107. package/dist/integrations/uploadthing.js +41 -0
  108. package/dist/integrations/uploadthing.js.map +1 -0
  109. package/dist/templates/api-builder.d.ts +12 -0
  110. package/dist/templates/api-builder.d.ts.map +1 -0
  111. package/dist/templates/api-builder.js +76 -0
  112. package/dist/templates/api-builder.js.map +1 -0
  113. package/dist/templates/api-route-id.d.ts +3 -0
  114. package/dist/templates/api-route-id.d.ts.map +1 -0
  115. package/dist/templates/api-route-id.js +137 -0
  116. package/dist/templates/api-route-id.js.map +1 -0
  117. package/dist/templates/api-route.d.ts +3 -0
  118. package/dist/templates/api-route.d.ts.map +1 -0
  119. package/dist/templates/api-route.js +85 -0
  120. package/dist/templates/api-route.js.map +1 -0
  121. package/dist/templates/app-nav.d.ts +23 -0
  122. package/dist/templates/app-nav.d.ts.map +1 -0
  123. package/dist/templates/app-nav.js +132 -0
  124. package/dist/templates/app-nav.js.map +1 -0
  125. package/dist/templates/env.d.ts +3 -0
  126. package/dist/templates/env.d.ts.map +1 -0
  127. package/dist/templates/env.js +39 -0
  128. package/dist/templates/env.js.map +1 -0
  129. package/dist/templates/layout.d.ts +3 -0
  130. package/dist/templates/layout.d.ts.map +1 -0
  131. package/dist/templates/layout.js +50 -0
  132. package/dist/templates/layout.js.map +1 -0
  133. package/dist/templates/navigation.d.ts +3 -0
  134. package/dist/templates/navigation.d.ts.map +1 -0
  135. package/dist/templates/navigation.js +129 -0
  136. package/dist/templates/navigation.js.map +1 -0
  137. package/dist/templates/nxf-client.d.ts +3 -0
  138. package/dist/templates/nxf-client.d.ts.map +1 -0
  139. package/dist/templates/nxf-client.js +96 -0
  140. package/dist/templates/nxf-client.js.map +1 -0
  141. package/dist/templates/page-auth.d.ts +3 -0
  142. package/dist/templates/page-auth.d.ts.map +1 -0
  143. package/dist/templates/page-auth.js +344 -0
  144. package/dist/templates/page-auth.js.map +1 -0
  145. package/dist/templates/page-detail.d.ts +3 -0
  146. package/dist/templates/page-detail.d.ts.map +1 -0
  147. package/dist/templates/page-detail.js +86 -0
  148. package/dist/templates/page-detail.js.map +1 -0
  149. package/dist/templates/page-form.d.ts +3 -0
  150. package/dist/templates/page-form.d.ts.map +1 -0
  151. package/dist/templates/page-form.js +159 -0
  152. package/dist/templates/page-form.js.map +1 -0
  153. package/dist/templates/page-landing.d.ts +3 -0
  154. package/dist/templates/page-landing.d.ts.map +1 -0
  155. package/dist/templates/page-landing.js +140 -0
  156. package/dist/templates/page-landing.js.map +1 -0
  157. package/dist/templates/page-list.d.ts +3 -0
  158. package/dist/templates/page-list.d.ts.map +1 -0
  159. package/dist/templates/page-list.js +130 -0
  160. package/dist/templates/page-list.js.map +1 -0
  161. package/dist/templates/page-remaining.d.ts +3 -0
  162. package/dist/templates/page-remaining.d.ts.map +1 -0
  163. package/dist/templates/page-remaining.js +870 -0
  164. package/dist/templates/page-remaining.js.map +1 -0
  165. package/dist/templates/readme.d.ts +3 -0
  166. package/dist/templates/readme.d.ts.map +1 -0
  167. package/dist/templates/readme.js +87 -0
  168. package/dist/templates/readme.js.map +1 -0
  169. package/dist/templates/tailwind.d.ts +3 -0
  170. package/dist/templates/tailwind.d.ts.map +1 -0
  171. package/dist/templates/tailwind.js +63 -0
  172. package/dist/templates/tailwind.js.map +1 -0
  173. package/dist/templates/theme.d.ts +3 -0
  174. package/dist/templates/theme.d.ts.map +1 -0
  175. package/dist/templates/theme.js +49 -0
  176. package/dist/templates/theme.js.map +1 -0
  177. package/dist/templates/types.d.ts +3 -0
  178. package/dist/templates/types.d.ts.map +1 -0
  179. package/dist/templates/types.js +74 -0
  180. package/dist/templates/types.js.map +1 -0
  181. package/dist/templates/validators.d.ts +3 -0
  182. package/dist/templates/validators.d.ts.map +1 -0
  183. package/dist/templates/validators.js +37 -0
  184. package/dist/templates/validators.js.map +1 -0
  185. package/package.json +24 -0
@@ -0,0 +1,3 @@
1
+ import type { GeneratedFile } from '@underpeaks/generator-core';
2
+ export declare function generatePayfastNextjs(config: Record<string, string>): GeneratedFile;
3
+ //# sourceMappingURL=payfast.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payfast.d.ts","sourceRoot":"","sources":["../../src/integrations/payfast.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAE/D,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,aAAa,CA0FnF"}
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ // File: underpeaks_codegen/packages/generator-nextjs/src/integrations/payfast.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.generatePayfastNextjs = generatePayfastNextjs;
5
+ function generatePayfastNextjs(config) {
6
+ const merchantId = config['merchant_id'] ?? 'YOUR_MERCHANT_ID';
7
+ const merchantKey = config['merchant_key'] ?? 'YOUR_MERCHANT_KEY';
8
+ const lines = [];
9
+ lines.push(`// GENERATED FILE — DO NOT EDIT MANUALLY`);
10
+ lines.push(`// Generated by Underpeaks CodeGen v1.0.0`);
11
+ lines.push(`// Integration: PayFast`);
12
+ lines.push(``);
13
+ lines.push(`// ── Note ──────────────────────────────────────────────────────────────────`);
14
+ lines.push(`// PayFast works by redirecting users to their hosted payment page.`);
15
+ lines.push(`// Build the payment form server-side and redirect the user.`);
16
+ lines.push(``);
17
+ lines.push(`// ── Setup instructions ────────────────────────────────────────────────────`);
18
+ lines.push(`// Add PAYFAST_PASSPHRASE to .env.local. PayFast requires an MD5 signature`);
19
+ lines.push(`// of all submitted fields (plus your passphrase) to prevent tampering —`);
20
+ lines.push(`// without it, PayFast will reject the request or (if signature checking`);
21
+ lines.push(`// is misconfigured on your account) silently accept a tampered amount.`);
22
+ lines.push(``);
23
+ lines.push(`import crypto from 'crypto'`);
24
+ lines.push(``);
25
+ lines.push(`export interface PayfastPayment {`);
26
+ lines.push(` merchantId: string`);
27
+ lines.push(` merchantKey: string`);
28
+ lines.push(` returnUrl: string`);
29
+ lines.push(` cancelUrl: string`);
30
+ lines.push(` notifyUrl: string`);
31
+ lines.push(` nameFirst: string`);
32
+ lines.push(` emailAddress: string`);
33
+ lines.push(` mPaymentId: string`);
34
+ lines.push(` amount: string`);
35
+ lines.push(` itemName: string`);
36
+ lines.push(`}`);
37
+ lines.push(``);
38
+ // FIX: crypto was imported but never used — no MD5 signature was ever
39
+ // generated, despite PayFast requiring one. Without a signature, a
40
+ // client could alter `amount` (or any other field) in the redirect URL
41
+ // before the user is sent to PayFast, and PayFast has no way to detect
42
+ // the tampering. generateSignature() now builds the exact
43
+ // param-string-then-MD5 signature PayFast's own docs specify (alphabetical
44
+ // key order is NOT required by PayFast — insertion order of the actual
45
+ // submitted fields is used, matching how the form itself is built), and
46
+ // buildPayfastUrl() includes it as the final `signature` param.
47
+ lines.push(`function generateSignature(`);
48
+ lines.push(` data: Record<string, string>,`);
49
+ lines.push(` passphrase?: string,`);
50
+ lines.push(`): string {`);
51
+ lines.push(` let paramString = Object.entries(data)`);
52
+ lines.push(` .map(([k, v]) => \`\${k}=\${encodeURIComponent(v.trim()).replace(/%20/g, '+')}\`)`);
53
+ lines.push(` .join('&')`);
54
+ lines.push(``);
55
+ lines.push(` if (passphrase) {`);
56
+ lines.push(` paramString += \`&passphrase=\${encodeURIComponent(passphrase.trim()).replace(/%20/g, '+')}\``);
57
+ lines.push(` }`);
58
+ lines.push(``);
59
+ lines.push(` return crypto.createHash('md5').update(paramString).digest('hex')`);
60
+ lines.push(`}`);
61
+ lines.push(``);
62
+ lines.push(`export function buildPayfastUrl(payment: PayfastPayment, sandbox = false): string {`);
63
+ lines.push(` const base = sandbox`);
64
+ lines.push(` ? 'https://sandbox.payfast.co.za/eng/process'`);
65
+ lines.push(` : 'https://www.payfast.co.za/eng/process'`);
66
+ lines.push(``);
67
+ lines.push(` const data: Record<string, string> = {`);
68
+ lines.push(` merchant_id: payment.merchantId || '${merchantId}',`);
69
+ lines.push(` merchant_key: payment.merchantKey || '${merchantKey}',`);
70
+ lines.push(` return_url: payment.returnUrl,`);
71
+ lines.push(` cancel_url: payment.cancelUrl,`);
72
+ lines.push(` notify_url: payment.notifyUrl,`);
73
+ lines.push(` name_first: payment.nameFirst,`);
74
+ lines.push(` email_address: payment.emailAddress,`);
75
+ lines.push(` m_payment_id: payment.mPaymentId,`);
76
+ lines.push(` amount: payment.amount,`);
77
+ lines.push(` item_name: payment.itemName,`);
78
+ lines.push(` }`);
79
+ lines.push(``);
80
+ lines.push(` const signature = generateSignature(data, process.env.PAYFAST_PASSPHRASE)`);
81
+ lines.push(``);
82
+ lines.push(` const paramString = Object.entries({ ...data, signature })`);
83
+ lines.push(` .map(([k, v]) => \`\${encodeURIComponent(k)}=\${encodeURIComponent(v)}\`)`);
84
+ lines.push(` .join('&')`);
85
+ lines.push(``);
86
+ lines.push(` return \`\${base}?\${paramString}\``);
87
+ lines.push(`}`);
88
+ return {
89
+ path: 'lib/generated/integrations/payfast.ts',
90
+ content: lines.join('\n'),
91
+ category: 'generated',
92
+ };
93
+ }
94
+ //# sourceMappingURL=payfast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payfast.js","sourceRoot":"","sources":["../../src/integrations/payfast.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { GeneratedFile } from '@underpeaks/generator-core';
2
+ export declare function generatePusherNextjs(config: Record<string, string>): GeneratedFile;
3
+ //# sourceMappingURL=pusher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pusher.d.ts","sourceRoot":"","sources":["../../src/integrations/pusher.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAE/D,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,aAAa,CAkFlF"}
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ // File: underpeaks_codegen/packages/generator-nextjs/src/integrations/pusher.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.generatePusherNextjs = generatePusherNextjs;
5
+ function generatePusherNextjs(config) {
6
+ const appKey = config['key'] ?? 'YOUR_PUSHER_KEY';
7
+ const cluster = config['cluster'] ?? 'mt1';
8
+ const appId = config['app_id'] ?? 'YOUR_APP_ID';
9
+ const lines = [];
10
+ lines.push(`// GENERATED FILE — DO NOT EDIT MANUALLY`);
11
+ lines.push(`// Generated by Underpeaks CodeGen v1.0.0`);
12
+ lines.push(`// Integration: Pusher`);
13
+ lines.push(``);
14
+ lines.push(`// ── Setup instructions ────────────────────────────────────────────────────`);
15
+ lines.push(`// 1. npm install pusher pusher-js`);
16
+ lines.push(`// 2. Add PUSHER_SECRET to .env.local — required, no fallback is generated`);
17
+ lines.push(`// into this file. Pusher server secrets must never ship in source.`);
18
+ lines.push(``);
19
+ lines.push(`// ── Client-side (use in components) ──────────────────────────────────────`);
20
+ lines.push(``);
21
+ lines.push(`import PusherClient from 'pusher-js'`);
22
+ lines.push(`import PusherServer from 'pusher'`);
23
+ lines.push(``);
24
+ lines.push(`let pusherClient: PusherClient | null = null`);
25
+ lines.push(``);
26
+ lines.push(`export function getPusherClient(): PusherClient {`);
27
+ lines.push(` if (!pusherClient) {`);
28
+ lines.push(` pusherClient = new PusherClient('${appKey}', { cluster: '${cluster}' })`);
29
+ lines.push(` }`);
30
+ lines.push(` return pusherClient`);
31
+ lines.push(`}`);
32
+ lines.push(``);
33
+ lines.push(`export function subscribeToChannel(`);
34
+ lines.push(` channelName: string,`);
35
+ lines.push(` eventName: string,`);
36
+ lines.push(` callback: (data: unknown) => void,`);
37
+ lines.push(`) {`);
38
+ lines.push(` const client = getPusherClient()`);
39
+ lines.push(` const channel = client.subscribe(channelName)`);
40
+ lines.push(` channel.bind(eventName, callback)`);
41
+ lines.push(` return () => {`);
42
+ lines.push(` channel.unbind(eventName, callback)`);
43
+ lines.push(` client.unsubscribe(channelName)`);
44
+ lines.push(` }`);
45
+ lines.push(`}`);
46
+ lines.push(``);
47
+ lines.push(`// ── Server-side (use in API routes only) ─────────────────────────────────`);
48
+ lines.push(``);
49
+ lines.push(`export function getPusherServer(): PusherServer {`);
50
+ // FIX: was `secret: process.env.PUSHER_SECRET ?? '${secret}'` — a real
51
+ // secret value could be baked as a literal string fallback directly into
52
+ // this committed source file if PUSHER_SECRET wasn't set at generation
53
+ // time. Pusher server secrets must stay server-only and out of source
54
+ // control entirely. Now throws a clear error at runtime instead of ever
55
+ // embedding a literal secret — no `secret` config value is read here at
56
+ // all anymore.
57
+ lines.push(` if (!process.env.PUSHER_SECRET) {`);
58
+ lines.push(` throw new Error(`);
59
+ lines.push(` 'PUSHER_SECRET is not set. Add it to your .env.local — ' +`);
60
+ lines.push(` 'never hardcode Pusher server secrets in source.',`);
61
+ lines.push(` )`);
62
+ lines.push(` }`);
63
+ lines.push(` return new PusherServer({`);
64
+ lines.push(` appId: '${appId}',`);
65
+ lines.push(` key: '${appKey}',`);
66
+ lines.push(` secret: process.env.PUSHER_SECRET,`);
67
+ lines.push(` cluster: '${cluster}',`);
68
+ lines.push(` useTLS: true,`);
69
+ lines.push(` })`);
70
+ lines.push(`}`);
71
+ lines.push(``);
72
+ lines.push(`export async function triggerEvent(`);
73
+ lines.push(` channel: string,`);
74
+ lines.push(` event: string,`);
75
+ lines.push(` data: unknown,`);
76
+ lines.push(`) {`);
77
+ lines.push(` const server = getPusherServer()`);
78
+ lines.push(` await server.trigger(channel, event, data)`);
79
+ lines.push(`}`);
80
+ return {
81
+ path: 'lib/generated/integrations/pusher.ts',
82
+ content: lines.join('\n'),
83
+ category: 'generated',
84
+ };
85
+ }
86
+ //# sourceMappingURL=pusher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pusher.js","sourceRoot":"","sources":["../../src/integrations/pusher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { GeneratedFile } from '@underpeaks/generator-core';
2
+ export declare function generateResendNextjs(config: Record<string, string>): GeneratedFile;
3
+ //# sourceMappingURL=resend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resend.d.ts","sourceRoot":"","sources":["../../src/integrations/resend.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAE/D,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,aAAa,CAyClF"}
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ // File: underpeaks_codegen/packages/generator-nextjs/src/integrations/resend.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.generateResendNextjs = generateResendNextjs;
5
+ function generateResendNextjs(config) {
6
+ const lines = [];
7
+ lines.push(`// GENERATED FILE — DO NOT EDIT MANUALLY`);
8
+ lines.push(`// Generated by Underpeaks CodeGen v1.0.0`);
9
+ lines.push(`// Integration: Resend`);
10
+ lines.push(``);
11
+ lines.push(`// ── Setup instructions ────────────────────────────────────────────────────`);
12
+ lines.push(`// 1. npm install resend`);
13
+ lines.push(`// 2. Add RESEND_API_KEY to .env.local`);
14
+ lines.push(`// 3. Only use in API routes or Server Actions`);
15
+ lines.push(``);
16
+ lines.push(`import { Resend } from 'resend'`);
17
+ lines.push(``);
18
+ lines.push(`let client: Resend | null = null`);
19
+ lines.push(``);
20
+ lines.push(`export function getResendClient(): Resend {`);
21
+ lines.push(` if (!client) client = new Resend(process.env.RESEND_API_KEY)`);
22
+ lines.push(` return client`);
23
+ lines.push(`}`);
24
+ lines.push(``);
25
+ lines.push(`export async function sendEmail({`);
26
+ lines.push(` to,`);
27
+ lines.push(` subject,`);
28
+ lines.push(` html,`);
29
+ lines.push(` from = 'noreply@yourdomain.com',`);
30
+ lines.push(`}: {`);
31
+ lines.push(` to: string | string[]`);
32
+ lines.push(` subject: string`);
33
+ lines.push(` html: string`);
34
+ lines.push(` from?: string`);
35
+ lines.push(`}) {`);
36
+ lines.push(` const resend = getResendClient()`);
37
+ lines.push(` return resend.emails.send({ from, to, subject, html })`);
38
+ lines.push(`}`);
39
+ return {
40
+ path: 'lib/generated/integrations/resend.ts',
41
+ content: lines.join('\n'),
42
+ category: 'generated',
43
+ };
44
+ }
45
+ //# sourceMappingURL=resend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resend.js","sourceRoot":"","sources":["../../src/integrations/resend.ts"],"names":[],"mappings":";AAAA,gFAAgF;;AAIhF,oDAyCC;AAzCD,SAAgB,oBAAoB,CAAC,MAA8B;IACjE,MAAM,KAAK,GAAa,EAAE,CAAA;IAE1B,KAAK,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAA;IACtD,KAAK,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAA;IACvD,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAA;IACpC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,+EAA+E,CAAC,CAAA;IAC3F,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAA;IACtC,KAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAA;IACpD,KAAK,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAA;IAC5D,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAA;IAC7C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAA;IAC9C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAA;IACzD,KAAK,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAA;IAC5E,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;IAC7B,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACf,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAA;IAC/C,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACnB,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;IACxB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IACrB,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAA;IAChD,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAClB,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAA;IAC1C,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;IAC/B,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;IAC/B,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;IAC/B,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAClB,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAA;IAChD,KAAK,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAA;IACtE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAEf,OAAO;QACL,IAAI,EAAM,sCAAsC;QAChD,OAAO,EAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QAC1B,QAAQ,EAAE,WAAW;KACtB,CAAA;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { GeneratedFile } from '@underpeaks/generator-core';
2
+ export declare function generateSendGridNextjs(config: Record<string, string>): GeneratedFile;
3
+ //# sourceMappingURL=sendgrid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sendgrid.d.ts","sourceRoot":"","sources":["../../src/integrations/sendgrid.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAE/D,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,aAAa,CAsCpF"}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ // File: underpeaks_codegen/packages/generator-nextjs/src/integrations/sendgrid.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.generateSendGridNextjs = generateSendGridNextjs;
5
+ function generateSendGridNextjs(config) {
6
+ const lines = [];
7
+ lines.push(`// GENERATED FILE — DO NOT EDIT MANUALLY`);
8
+ lines.push(`// Generated by Underpeaks CodeGen v1.0.0`);
9
+ lines.push(`// Integration: SendGrid`);
10
+ lines.push(``);
11
+ lines.push(`// ── Setup instructions ────────────────────────────────────────────────────`);
12
+ lines.push(`// 1. npm install @sendgrid/mail`);
13
+ lines.push(`// 2. Add SENDGRID_API_KEY to .env.local`);
14
+ lines.push(`// 3. Only use in API routes or Server Actions`);
15
+ lines.push(``);
16
+ lines.push(`import sgMail from '@sendgrid/mail'`);
17
+ lines.push(``);
18
+ lines.push(`export function initSendGrid() {`);
19
+ lines.push(` sgMail.setApiKey(process.env.SENDGRID_API_KEY ?? '')`);
20
+ lines.push(`}`);
21
+ lines.push(``);
22
+ lines.push(`export async function sendEmail({`);
23
+ lines.push(` to,`);
24
+ lines.push(` subject,`);
25
+ lines.push(` html,`);
26
+ lines.push(` from = 'noreply@yourdomain.com',`);
27
+ lines.push(`}: {`);
28
+ lines.push(` to: string`);
29
+ lines.push(` subject: string`);
30
+ lines.push(` html: string`);
31
+ lines.push(` from?: string`);
32
+ lines.push(`}) {`);
33
+ lines.push(` initSendGrid()`);
34
+ lines.push(` return sgMail.send({ to, from, subject, html })`);
35
+ lines.push(`}`);
36
+ return {
37
+ path: 'lib/generated/integrations/sendgrid.ts',
38
+ content: lines.join('\n'),
39
+ category: 'generated',
40
+ };
41
+ }
42
+ //# sourceMappingURL=sendgrid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sendgrid.js","sourceRoot":"","sources":["../../src/integrations/sendgrid.ts"],"names":[],"mappings":";AAAA,kFAAkF;;AAIlF,wDAsCC;AAtCD,SAAgB,sBAAsB,CAAC,MAA8B;IACnE,MAAM,KAAK,GAAa,EAAE,CAAA;IAE1B,KAAK,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAA;IACtD,KAAK,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAA;IACvD,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAA;IACtC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,+EAA+E,CAAC,CAAA;IAC3F,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAA;IAC9C,KAAK,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAA;IACtD,KAAK,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAA;IAC5D,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAA;IACjD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAA;IAC9C,KAAK,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAA;IACpE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACf,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAA;IAC/C,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACnB,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;IACxB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IACrB,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAA;IAChD,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAClB,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;IAC/B,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;IAC/B,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;IAC/B,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;IAC/B,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAClB,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;IAC9B,KAAK,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAA;IAC/D,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAEf,OAAO;QACL,IAAI,EAAM,wCAAwC;QAClD,OAAO,EAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QAC1B,QAAQ,EAAE,WAAW;KACtB,CAAA;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { GeneratedFile } from '@underpeaks/generator-core';
2
+ export declare function generateSentryNextjs(config: Record<string, string>): GeneratedFile;
3
+ //# sourceMappingURL=sentry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sentry.d.ts","sourceRoot":"","sources":["../../src/integrations/sentry.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAE/D,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,aAAa,CA6ClF"}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ // File: underpeaks_codegen/packages/generator-nextjs/src/integrations/sentry.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.generateSentryNextjs = generateSentryNextjs;
5
+ function generateSentryNextjs(config) {
6
+ const dsn = config['dsn'] ?? 'YOUR_SENTRY_DSN';
7
+ const env = config['environment'] ?? 'production';
8
+ const lines = [];
9
+ lines.push(`// GENERATED FILE — DO NOT EDIT MANUALLY`);
10
+ lines.push(`// Generated by Underpeaks CodeGen v1.0.0`);
11
+ lines.push(`// Integration: Sentry`);
12
+ lines.push(``);
13
+ lines.push(`// ── Setup instructions ────────────────────────────────────────────────────`);
14
+ lines.push(`// 1. npm install @sentry/nextjs`);
15
+ lines.push(`// 2. Add sentry.client.config.ts and sentry.server.config.ts`);
16
+ lines.push(`// 3. Run: npx @sentry/wizard@latest -i nextjs`);
17
+ lines.push(``);
18
+ lines.push(`import * as Sentry from '@sentry/nextjs'`);
19
+ lines.push(``);
20
+ lines.push(`export function initSentry() {`);
21
+ lines.push(` Sentry.init({`);
22
+ lines.push(` dsn: '${dsn}',`);
23
+ lines.push(` environment: '${env}',`);
24
+ lines.push(` tracesSampleRate: 1.0,`);
25
+ lines.push(` })`);
26
+ lines.push(`}`);
27
+ lines.push(``);
28
+ lines.push(`export function captureException(error: unknown) {`);
29
+ lines.push(` Sentry.captureException(error)`);
30
+ lines.push(`}`);
31
+ lines.push(``);
32
+ lines.push(`export function captureMessage(message: string) {`);
33
+ lines.push(` Sentry.captureMessage(message)`);
34
+ lines.push(`}`);
35
+ lines.push(``);
36
+ lines.push(`export function setUser(id: string, email?: string) {`);
37
+ lines.push(` Sentry.setUser({ id, email })`);
38
+ lines.push(`}`);
39
+ lines.push(``);
40
+ lines.push(`export function clearUser() {`);
41
+ lines.push(` Sentry.setUser(null)`);
42
+ lines.push(`}`);
43
+ return {
44
+ path: 'lib/generated/integrations/sentry.ts',
45
+ content: lines.join('\n'),
46
+ category: 'generated',
47
+ };
48
+ }
49
+ //# sourceMappingURL=sentry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sentry.js","sourceRoot":"","sources":["../../src/integrations/sentry.ts"],"names":[],"mappings":";AAAA,gFAAgF;;AAIhF,oDA6CC;AA7CD,SAAgB,oBAAoB,CAAC,MAA8B;IACjE,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,IAAY,iBAAiB,CAAA;IACtD,MAAM,GAAG,GAAG,MAAM,CAAC,aAAa,CAAC,IAAI,YAAY,CAAA;IACjD,MAAM,KAAK,GAAa,EAAE,CAAA;IAE1B,KAAK,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAA;IACtD,KAAK,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAA;IACvD,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAA;IACpC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,+EAA+E,CAAC,CAAA;IAC3F,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAA;IAC9C,KAAK,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAA;IAC3E,KAAK,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAA;IAC5D,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAA;IACtD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAA;IAC5C,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;IAC7B,KAAK,CAAC,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,CAAA;IAC7C,KAAK,CAAC,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,CAAA;IAC7C,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAA;IACxC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAClB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACf,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAA;IAChE,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAA;IAC9C,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACf,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAA;IAC/D,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAA;IAC9C,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACf,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAA;IACnE,KAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAA;IAC7C,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACf,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAA;IAC3C,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAA;IACpC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAEf,OAAO;QACL,IAAI,EAAM,sCAAsC;QAChD,OAAO,EAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QAC1B,QAAQ,EAAE,WAAW;KACtB,CAAA;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { GeneratedFile } from '@underpeaks/generator-core';
2
+ export declare function generateSlackNextjs(config: Record<string, string>): GeneratedFile;
3
+ //# sourceMappingURL=slack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slack.d.ts","sourceRoot":"","sources":["../../src/integrations/slack.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAE/D,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,aAAa,CAkDjF"}
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ // File: underpeaks_codegen/packages/generator-nextjs/src/integrations/slack.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.generateSlackNextjs = generateSlackNextjs;
5
+ function generateSlackNextjs(config) {
6
+ const lines = [];
7
+ lines.push(`// GENERATED FILE — DO NOT EDIT MANUALLY`);
8
+ lines.push(`// Generated by Underpeaks CodeGen v1.0.0`);
9
+ lines.push(`// Integration: Slack`);
10
+ lines.push(``);
11
+ lines.push(`// ── Setup instructions ────────────────────────────────────────────────────`);
12
+ lines.push(`// 1. npm install @slack/web-api`);
13
+ lines.push(`// 2. Add SLACK_BOT_TOKEN to .env.local`);
14
+ lines.push(`// 3. Only use in API routes or Server Actions`);
15
+ lines.push(``);
16
+ lines.push(`import { WebClient } from '@slack/web-api'`);
17
+ lines.push(``);
18
+ lines.push(`let client: WebClient | null = null`);
19
+ lines.push(``);
20
+ lines.push(`export function getSlackClient(): WebClient {`);
21
+ lines.push(` if (!client) {`);
22
+ lines.push(` client = new WebClient(process.env.SLACK_BOT_TOKEN)`);
23
+ lines.push(` }`);
24
+ lines.push(` return client`);
25
+ lines.push(`}`);
26
+ lines.push(``);
27
+ lines.push(`export async function sendMessage({`);
28
+ lines.push(` channel,`);
29
+ lines.push(` text,`);
30
+ lines.push(`}: {`);
31
+ lines.push(` channel: string`);
32
+ lines.push(` text: string`);
33
+ lines.push(`}) {`);
34
+ lines.push(` const slack = getSlackClient()`);
35
+ lines.push(` return slack.chat.postMessage({ channel, text })`);
36
+ lines.push(`}`);
37
+ lines.push(``);
38
+ lines.push(`export async function sendBlock({`);
39
+ lines.push(` channel,`);
40
+ lines.push(` blocks,`);
41
+ lines.push(`}: {`);
42
+ lines.push(` channel: string`);
43
+ lines.push(` blocks: unknown[]`);
44
+ lines.push(`}) {`);
45
+ lines.push(` const slack = getSlackClient()`);
46
+ lines.push(` return slack.chat.postMessage({ channel, blocks: blocks as any })`);
47
+ lines.push(`}`);
48
+ return {
49
+ path: 'lib/generated/integrations/slack.ts',
50
+ content: lines.join('\n'),
51
+ category: 'generated',
52
+ };
53
+ }
54
+ //# sourceMappingURL=slack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slack.js","sourceRoot":"","sources":["../../src/integrations/slack.ts"],"names":[],"mappings":";AAAA,+EAA+E;;AAI/E,kDAkDC;AAlDD,SAAgB,mBAAmB,CAAC,MAA8B;IAChE,MAAM,KAAK,GAAa,EAAE,CAAA;IAE1B,KAAK,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAA;IACtD,KAAK,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAA;IACvD,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAA;IACnC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,+EAA+E,CAAC,CAAA;IAC3F,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAA;IAC9C,KAAK,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAA;IACrD,KAAK,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAA;IAC5D,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAA;IACxD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAA;IACjD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAA;IAC3D,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;IAC9B,KAAK,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAA;IACrE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACjB,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;IAC7B,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACf,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAA;IACjD,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;IACxB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IACrB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAClB,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;IAC/B,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;IAC/B,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAClB,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAA;IAC9C,KAAK,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAA;IAChE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACf,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAA;IAC/C,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;IACxB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IACvB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAClB,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;IAC/B,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAA;IAClC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAClB,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAA;IAC9C,KAAK,CAAC,IAAI,CAAC,qEAAqE,CAAC,CAAA;IACjF,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAEf,OAAO;QACL,IAAI,EAAM,qCAAqC;QAC/C,OAAO,EAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QAC1B,QAAQ,EAAE,WAAW;KACtB,CAAA;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { GeneratedFile } from '@underpeaks/generator-core';
2
+ export declare function generateStorageNextjs(config: Record<string, string>): GeneratedFile;
3
+ //# sourceMappingURL=storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/integrations/storage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAE/D,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,aAAa,CAmEnF"}
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ // File: underpeaks_codegen/packages/generator-nextjs/src/integrations/storage.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.generateStorageNextjs = generateStorageNextjs;
5
+ function generateStorageNextjs(config) {
6
+ const lines = [];
7
+ lines.push(`// GENERATED FILE — DO NOT EDIT MANUALLY`);
8
+ lines.push(`// Generated by Underpeaks CodeGen v1.0.0`);
9
+ lines.push(`// Integration: Underpeaks Hosted Storage`);
10
+ lines.push(``);
11
+ lines.push(`// ── Note ──────────────────────────────────────────────────────────────────`);
12
+ lines.push(`// Files upload to your Underpeaks hosted storage. The returned URL is permanent`);
13
+ lines.push(`// and safe to store — render it directly in <img src>.`);
14
+ lines.push(`// Files are organised into folders (e.g. 'avatars', 'documents'). If you don't`);
15
+ lines.push(`// specify a folder, files are uploaded to the default 'uploads' folder.`);
16
+ lines.push(``);
17
+ lines.push(`import { apiConfig } from '../config/api-config'`);
18
+ lines.push(``);
19
+ lines.push(`export interface NxfStorageFile {`);
20
+ lines.push(` storage_id: string`);
21
+ lines.push(` url: string`);
22
+ lines.push(` file_name: string`);
23
+ lines.push(` folder: string`);
24
+ lines.push(` size: number`);
25
+ lines.push(`}`);
26
+ lines.push(``);
27
+ lines.push(`const base = () =>`);
28
+ lines.push(' `${apiConfig.baseUrl}/api-public/v1/${apiConfig.projectId}/storage`');
29
+ lines.push(``);
30
+ lines.push(`/**`);
31
+ lines.push(` * Upload a file. Optionally pass a folder to organise it`);
32
+ lines.push(` * (e.g. 'avatars', 'documents') — defaults to 'uploads' if omitted.`);
33
+ lines.push(` */`);
34
+ lines.push(`export async function uploadFile(file: File, folder?: string): Promise<NxfStorageFile> {`);
35
+ lines.push(` const form = new FormData()`);
36
+ lines.push(` form.append('file', file)`);
37
+ lines.push(` if (folder) form.append('folder', folder)`);
38
+ lines.push(``);
39
+ lines.push(' const res = await fetch(`${base()}/upload`, {');
40
+ lines.push(` method: 'POST',`);
41
+ lines.push(` headers: { 'x-api-key': apiConfig.apiKey },`);
42
+ lines.push(` body: form,`);
43
+ lines.push(` })`);
44
+ lines.push(` if (!res.ok) throw new Error('Upload failed: ' + (await res.text()))`);
45
+ lines.push(` return res.json()`);
46
+ lines.push(`}`);
47
+ lines.push(``);
48
+ lines.push(`export async function listFiles(): Promise<NxfStorageFile[]> {`);
49
+ lines.push(' const res = await fetch(`${base()}/list`, {');
50
+ lines.push(` headers: { 'x-api-key': apiConfig.apiKey },`);
51
+ lines.push(` })`);
52
+ lines.push(` if (!res.ok) throw new Error('List failed: ' + (await res.text()))`);
53
+ lines.push(` const data = await res.json()`);
54
+ lines.push(` return data.files ?? []`);
55
+ lines.push(`}`);
56
+ lines.push(``);
57
+ lines.push(`export async function deleteFile(storageId: string): Promise<void> {`);
58
+ lines.push(' const res = await fetch(`${base()}/delete`, {');
59
+ lines.push(` method: 'POST',`);
60
+ lines.push(` headers: { 'Content-Type': 'application/json', 'x-api-key': apiConfig.apiKey },`);
61
+ lines.push(` body: JSON.stringify({ id: storageId }),`);
62
+ lines.push(` })`);
63
+ lines.push(` if (!res.ok) throw new Error('Delete failed: ' + (await res.text()))`);
64
+ lines.push(`}`);
65
+ return {
66
+ path: 'lib/generated/integrations/storage.ts',
67
+ content: lines.join('\n'),
68
+ category: 'generated',
69
+ };
70
+ }
71
+ //# sourceMappingURL=storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/integrations/storage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { GeneratedFile } from '@underpeaks/generator-core';
2
+ export declare function generateStripeNextjs(config: Record<string, string>): GeneratedFile;
3
+ //# sourceMappingURL=stripe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stripe.d.ts","sourceRoot":"","sources":["../../src/integrations/stripe.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAE/D,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,aAAa,CA6DlF"}