@underpeaks/generator-flutter 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 (277) hide show
  1. package/dist/adapters/bloc/bloc.d.ts +3 -0
  2. package/dist/adapters/bloc/bloc.d.ts.map +1 -0
  3. package/dist/adapters/bloc/bloc.js +283 -0
  4. package/dist/adapters/bloc/bloc.js.map +1 -0
  5. package/dist/adapters/provider/provider.d.ts +3 -0
  6. package/dist/adapters/provider/provider.d.ts.map +1 -0
  7. package/dist/adapters/provider/provider.js +182 -0
  8. package/dist/adapters/provider/provider.js.map +1 -0
  9. package/dist/adapters/riverpod/provider.d.ts +3 -0
  10. package/dist/adapters/riverpod/provider.d.ts.map +1 -0
  11. package/dist/adapters/riverpod/provider.js +230 -0
  12. package/dist/adapters/riverpod/provider.js.map +1 -0
  13. package/dist/generator.d.ts +3 -0
  14. package/dist/generator.d.ts.map +1 -0
  15. package/dist/generator.js +199 -0
  16. package/dist/generator.js.map +1 -0
  17. package/dist/index.d.ts +2 -0
  18. package/dist/index.d.ts.map +1 -0
  19. package/dist/index.js +6 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/integrations/algolia.d.ts +3 -0
  22. package/dist/integrations/algolia.d.ts.map +1 -0
  23. package/dist/integrations/algolia.js +51 -0
  24. package/dist/integrations/algolia.js.map +1 -0
  25. package/dist/integrations/anthropic.d.ts +3 -0
  26. package/dist/integrations/anthropic.d.ts.map +1 -0
  27. package/dist/integrations/anthropic.js +49 -0
  28. package/dist/integrations/anthropic.js.map +1 -0
  29. package/dist/integrations/aws-s3.d.ts +3 -0
  30. package/dist/integrations/aws-s3.d.ts.map +1 -0
  31. package/dist/integrations/aws-s3.js +67 -0
  32. package/dist/integrations/aws-s3.js.map +1 -0
  33. package/dist/integrations/clerk.d.ts +3 -0
  34. package/dist/integrations/clerk.d.ts.map +1 -0
  35. package/dist/integrations/clerk.js +68 -0
  36. package/dist/integrations/clerk.js.map +1 -0
  37. package/dist/integrations/cloudinary.d.ts +3 -0
  38. package/dist/integrations/cloudinary.d.ts.map +1 -0
  39. package/dist/integrations/cloudinary.js +64 -0
  40. package/dist/integrations/cloudinary.js.map +1 -0
  41. package/dist/integrations/crisp.d.ts +3 -0
  42. package/dist/integrations/crisp.d.ts.map +1 -0
  43. package/dist/integrations/crisp.js +42 -0
  44. package/dist/integrations/crisp.js.map +1 -0
  45. package/dist/integrations/firebase.d.ts +3 -0
  46. package/dist/integrations/firebase.d.ts.map +1 -0
  47. package/dist/integrations/firebase.js +78 -0
  48. package/dist/integrations/firebase.js.map +1 -0
  49. package/dist/integrations/flutterwave.d.ts +3 -0
  50. package/dist/integrations/flutterwave.d.ts.map +1 -0
  51. package/dist/integrations/flutterwave.js +58 -0
  52. package/dist/integrations/flutterwave.js.map +1 -0
  53. package/dist/integrations/gemini.d.ts +3 -0
  54. package/dist/integrations/gemini.d.ts.map +1 -0
  55. package/dist/integrations/gemini.js +49 -0
  56. package/dist/integrations/gemini.js.map +1 -0
  57. package/dist/integrations/github.d.ts +3 -0
  58. package/dist/integrations/github.d.ts.map +1 -0
  59. package/dist/integrations/github.js +58 -0
  60. package/dist/integrations/github.js.map +1 -0
  61. package/dist/integrations/hubspot.d.ts +3 -0
  62. package/dist/integrations/hubspot.d.ts.map +1 -0
  63. package/dist/integrations/hubspot.js +70 -0
  64. package/dist/integrations/hubspot.js.map +1 -0
  65. package/dist/integrations/index.d.ts +3 -0
  66. package/dist/integrations/index.d.ts.map +1 -0
  67. package/dist/integrations/index.js +63 -0
  68. package/dist/integrations/index.js.map +1 -0
  69. package/dist/integrations/lemonsqueezy.d.ts +3 -0
  70. package/dist/integrations/lemonsqueezy.d.ts.map +1 -0
  71. package/dist/integrations/lemonsqueezy.js +49 -0
  72. package/dist/integrations/lemonsqueezy.js.map +1 -0
  73. package/dist/integrations/mailchimp.d.ts +3 -0
  74. package/dist/integrations/mailchimp.d.ts.map +1 -0
  75. package/dist/integrations/mailchimp.js +49 -0
  76. package/dist/integrations/mailchimp.js.map +1 -0
  77. package/dist/integrations/openai.d.ts +3 -0
  78. package/dist/integrations/openai.d.ts.map +1 -0
  79. package/dist/integrations/openai.js +55 -0
  80. package/dist/integrations/openai.js.map +1 -0
  81. package/dist/integrations/payfast.d.ts +3 -0
  82. package/dist/integrations/payfast.d.ts.map +1 -0
  83. package/dist/integrations/payfast.js +55 -0
  84. package/dist/integrations/payfast.js.map +1 -0
  85. package/dist/integrations/pusher.d.ts +3 -0
  86. package/dist/integrations/pusher.d.ts.map +1 -0
  87. package/dist/integrations/pusher.js +64 -0
  88. package/dist/integrations/pusher.js.map +1 -0
  89. package/dist/integrations/resend.d.ts +3 -0
  90. package/dist/integrations/resend.d.ts.map +1 -0
  91. package/dist/integrations/resend.js +51 -0
  92. package/dist/integrations/resend.js.map +1 -0
  93. package/dist/integrations/sendgrid.d.ts +3 -0
  94. package/dist/integrations/sendgrid.d.ts.map +1 -0
  95. package/dist/integrations/sendgrid.js +49 -0
  96. package/dist/integrations/sendgrid.js.map +1 -0
  97. package/dist/integrations/sentry.d.ts +3 -0
  98. package/dist/integrations/sentry.d.ts.map +1 -0
  99. package/dist/integrations/sentry.js +62 -0
  100. package/dist/integrations/sentry.js.map +1 -0
  101. package/dist/integrations/slack.d.ts +3 -0
  102. package/dist/integrations/slack.d.ts.map +1 -0
  103. package/dist/integrations/slack.js +41 -0
  104. package/dist/integrations/slack.js.map +1 -0
  105. package/dist/integrations/storage.d.ts +3 -0
  106. package/dist/integrations/storage.d.ts.map +1 -0
  107. package/dist/integrations/storage.js +106 -0
  108. package/dist/integrations/storage.js.map +1 -0
  109. package/dist/integrations/stripe.d.ts +3 -0
  110. package/dist/integrations/stripe.d.ts.map +1 -0
  111. package/dist/integrations/stripe.js +78 -0
  112. package/dist/integrations/stripe.js.map +1 -0
  113. package/dist/integrations/twilio.d.ts +3 -0
  114. package/dist/integrations/twilio.d.ts.map +1 -0
  115. package/dist/integrations/twilio.js +54 -0
  116. package/dist/integrations/twilio.js.map +1 -0
  117. package/dist/integrations/uploadthing.d.ts +3 -0
  118. package/dist/integrations/uploadthing.d.ts.map +1 -0
  119. package/dist/integrations/uploadthing.js +57 -0
  120. package/dist/integrations/uploadthing.js.map +1 -0
  121. package/dist/templates/api-builder.d.ts +12 -0
  122. package/dist/templates/api-builder.d.ts.map +1 -0
  123. package/dist/templates/api-builder.js +104 -0
  124. package/dist/templates/api-builder.js.map +1 -0
  125. package/dist/templates/api-config.d.ts +3 -0
  126. package/dist/templates/api-config.d.ts.map +1 -0
  127. package/dist/templates/api-config.js +60 -0
  128. package/dist/templates/api-config.js.map +1 -0
  129. package/dist/templates/env.d.ts +3 -0
  130. package/dist/templates/env.d.ts.map +1 -0
  131. package/dist/templates/env.js +27 -0
  132. package/dist/templates/env.js.map +1 -0
  133. package/dist/templates/gitignore.d.ts +3 -0
  134. package/dist/templates/gitignore.d.ts.map +1 -0
  135. package/dist/templates/gitignore.js +61 -0
  136. package/dist/templates/gitignore.js.map +1 -0
  137. package/dist/templates/main.d.ts +3 -0
  138. package/dist/templates/main.d.ts.map +1 -0
  139. package/dist/templates/main.js +66 -0
  140. package/dist/templates/main.js.map +1 -0
  141. package/dist/templates/model.d.ts +3 -0
  142. package/dist/templates/model.d.ts.map +1 -0
  143. package/dist/templates/model.js +104 -0
  144. package/dist/templates/model.js.map +1 -0
  145. package/dist/templates/navigation.d.ts +3 -0
  146. package/dist/templates/navigation.d.ts.map +1 -0
  147. package/dist/templates/navigation.js +306 -0
  148. package/dist/templates/navigation.js.map +1 -0
  149. package/dist/templates/page-auth.d.ts +3 -0
  150. package/dist/templates/page-auth.d.ts.map +1 -0
  151. package/dist/templates/page-auth.js +523 -0
  152. package/dist/templates/page-auth.js.map +1 -0
  153. package/dist/templates/page-blog-post.d.ts +3 -0
  154. package/dist/templates/page-blog-post.d.ts.map +1 -0
  155. package/dist/templates/page-blog-post.js +118 -0
  156. package/dist/templates/page-blog-post.js.map +1 -0
  157. package/dist/templates/page-calendar.d.ts +3 -0
  158. package/dist/templates/page-calendar.d.ts.map +1 -0
  159. package/dist/templates/page-calendar.js +173 -0
  160. package/dist/templates/page-calendar.js.map +1 -0
  161. package/dist/templates/page-cart.d.ts +3 -0
  162. package/dist/templates/page-cart.d.ts.map +1 -0
  163. package/dist/templates/page-cart.js +151 -0
  164. package/dist/templates/page-cart.js.map +1 -0
  165. package/dist/templates/page-chat.d.ts +3 -0
  166. package/dist/templates/page-chat.d.ts.map +1 -0
  167. package/dist/templates/page-chat.js +158 -0
  168. package/dist/templates/page-chat.js.map +1 -0
  169. package/dist/templates/page-checkout.d.ts +3 -0
  170. package/dist/templates/page-checkout.d.ts.map +1 -0
  171. package/dist/templates/page-checkout.js +180 -0
  172. package/dist/templates/page-checkout.js.map +1 -0
  173. package/dist/templates/page-contact.d.ts +1 -0
  174. package/dist/templates/page-contact.d.ts.map +1 -0
  175. package/dist/templates/page-contact.js +143 -0
  176. package/dist/templates/page-contact.js.map +1 -0
  177. package/dist/templates/page-custom.d.ts +3 -0
  178. package/dist/templates/page-custom.d.ts.map +1 -0
  179. package/dist/templates/page-custom.js +45 -0
  180. package/dist/templates/page-custom.js.map +1 -0
  181. package/dist/templates/page-dashboard.d.ts +3 -0
  182. package/dist/templates/page-dashboard.d.ts.map +1 -0
  183. package/dist/templates/page-dashboard.js +157 -0
  184. package/dist/templates/page-dashboard.js.map +1 -0
  185. package/dist/templates/page-detail.d.ts +3 -0
  186. package/dist/templates/page-detail.d.ts.map +1 -0
  187. package/dist/templates/page-detail.js +165 -0
  188. package/dist/templates/page-detail.js.map +1 -0
  189. package/dist/templates/page-feed.d.ts +3 -0
  190. package/dist/templates/page-feed.d.ts.map +1 -0
  191. package/dist/templates/page-feed.js +168 -0
  192. package/dist/templates/page-feed.js.map +1 -0
  193. package/dist/templates/page-form.d.ts +3 -0
  194. package/dist/templates/page-form.d.ts.map +1 -0
  195. package/dist/templates/page-form.js +205 -0
  196. package/dist/templates/page-form.js.map +1 -0
  197. package/dist/templates/page-gallery.d.ts +3 -0
  198. package/dist/templates/page-gallery.d.ts.map +1 -0
  199. package/dist/templates/page-gallery.js +152 -0
  200. package/dist/templates/page-gallery.js.map +1 -0
  201. package/dist/templates/page-invoice.d.ts +3 -0
  202. package/dist/templates/page-invoice.d.ts.map +1 -0
  203. package/dist/templates/page-invoice.js +144 -0
  204. package/dist/templates/page-invoice.js.map +1 -0
  205. package/dist/templates/page-kanban.d.ts +3 -0
  206. package/dist/templates/page-kanban.d.ts.map +1 -0
  207. package/dist/templates/page-kanban.js +114 -0
  208. package/dist/templates/page-kanban.js.map +1 -0
  209. package/dist/templates/page-list.d.ts +3 -0
  210. package/dist/templates/page-list.d.ts.map +1 -0
  211. package/dist/templates/page-list.js +284 -0
  212. package/dist/templates/page-list.js.map +1 -0
  213. package/dist/templates/page-map.d.ts +3 -0
  214. package/dist/templates/page-map.d.ts.map +1 -0
  215. package/dist/templates/page-map.js +94 -0
  216. package/dist/templates/page-map.js.map +1 -0
  217. package/dist/templates/page-messages.d.ts +3 -0
  218. package/dist/templates/page-messages.d.ts.map +1 -0
  219. package/dist/templates/page-messages.js +48 -0
  220. package/dist/templates/page-messages.js.map +1 -0
  221. package/dist/templates/page-onboarding.d.ts +3 -0
  222. package/dist/templates/page-onboarding.d.ts.map +1 -0
  223. package/dist/templates/page-onboarding.js +164 -0
  224. package/dist/templates/page-onboarding.js.map +1 -0
  225. package/dist/templates/page-otp.d.ts +3 -0
  226. package/dist/templates/page-otp.d.ts.map +1 -0
  227. package/dist/templates/page-otp.js +216 -0
  228. package/dist/templates/page-otp.js.map +1 -0
  229. package/dist/templates/page-profile.d.ts +3 -0
  230. package/dist/templates/page-profile.d.ts.map +1 -0
  231. package/dist/templates/page-profile.js +159 -0
  232. package/dist/templates/page-profile.js.map +1 -0
  233. package/dist/templates/page-reset-password.d.ts +3 -0
  234. package/dist/templates/page-reset-password.d.ts.map +1 -0
  235. package/dist/templates/page-reset-password.js +168 -0
  236. package/dist/templates/page-reset-password.js.map +1 -0
  237. package/dist/templates/page-search.d.ts +3 -0
  238. package/dist/templates/page-search.d.ts.map +1 -0
  239. package/dist/templates/page-search.js +112 -0
  240. package/dist/templates/page-search.js.map +1 -0
  241. package/dist/templates/page-settings.d.ts +3 -0
  242. package/dist/templates/page-settings.d.ts.map +1 -0
  243. package/dist/templates/page-settings.js +123 -0
  244. package/dist/templates/page-settings.js.map +1 -0
  245. package/dist/templates/page-splash.d.ts +3 -0
  246. package/dist/templates/page-splash.d.ts.map +1 -0
  247. package/dist/templates/page-splash.js +93 -0
  248. package/dist/templates/page-splash.js.map +1 -0
  249. package/dist/templates/page-wallet.d.ts +3 -0
  250. package/dist/templates/page-wallet.d.ts.map +1 -0
  251. package/dist/templates/page-wallet.js +97 -0
  252. package/dist/templates/page-wallet.js.map +1 -0
  253. package/dist/templates/pubspec.d.ts +3 -0
  254. package/dist/templates/pubspec.d.ts.map +1 -0
  255. package/dist/templates/pubspec.js +72 -0
  256. package/dist/templates/pubspec.js.map +1 -0
  257. package/dist/templates/readme.d.ts +3 -0
  258. package/dist/templates/readme.d.ts.map +1 -0
  259. package/dist/templates/readme.js +111 -0
  260. package/dist/templates/readme.js.map +1 -0
  261. package/dist/templates/repository.d.ts +3 -0
  262. package/dist/templates/repository.d.ts.map +1 -0
  263. package/dist/templates/repository.js +224 -0
  264. package/dist/templates/repository.js.map +1 -0
  265. package/dist/templates/theme.d.ts +3 -0
  266. package/dist/templates/theme.d.ts.map +1 -0
  267. package/dist/templates/theme.js +163 -0
  268. package/dist/templates/theme.js.map +1 -0
  269. package/dist/templates/validators.d.ts +3 -0
  270. package/dist/templates/validators.d.ts.map +1 -0
  271. package/dist/templates/validators.js +38 -0
  272. package/dist/templates/validators.js.map +1 -0
  273. package/dist/templates/widget-card.d.ts +3 -0
  274. package/dist/templates/widget-card.d.ts.map +1 -0
  275. package/dist/templates/widget-card.js +91 -0
  276. package/dist/templates/widget-card.js.map +1 -0
  277. package/package.json +24 -0
@@ -0,0 +1,230 @@
1
+ "use strict";
2
+ // File: underpeaks_codegen/packages/generator-flutter/src/adapters/riverpod/provider.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.generateRiverpodProvider = generateRiverpodProvider;
5
+ const generator_core_1 = require("@underpeaks/generator-core");
6
+ function generateRiverpodProvider(model) {
7
+ const className = (0, generator_core_1.modelToClassName)(model.name);
8
+ const fileName = (0, generator_core_1.modelToFileName)(model.name);
9
+ const pk = (0, generator_core_1.getPrimaryKey)(model);
10
+ const pkName = pk?.name ?? 'id';
11
+ const content = `// GENERATED FILE — DO NOT EDIT MANUALLY
12
+ // Generated by Underpeaks CodeGen v1.0.0
13
+ // Source model: ${model.name}
14
+ // Regenerate: nxf generate flutter --model=${className}
15
+ // ignore_for_file: lines_longer_than_80_chars
16
+
17
+ import 'package:flutter_riverpod/flutter_riverpod.dart';
18
+ import '../models/${fileName}.g.dart';
19
+ import '../repositories/${fileName}_repository.g.dart';
20
+
21
+ // ── Repository Provider ───────────────────────────────────────────────────
22
+
23
+ final ${fileName}RepositoryProvider = Provider<${className}Repository>((ref) {
24
+ return Nxf${className}Repository();
25
+ });
26
+
27
+ // ── State ─────────────────────────────────────────────────────────────────
28
+
29
+ class ${className}State {
30
+ final List<${className}> items;
31
+ final ${className}? selected;
32
+ final bool loading;
33
+ final bool loadingMore;
34
+ final bool hasMore;
35
+ final int page;
36
+ final String? error;
37
+
38
+ const ${className}State({
39
+ this.items = const [],
40
+ this.selected,
41
+ this.loading = false,
42
+ this.loadingMore = false,
43
+ this.hasMore = true,
44
+ this.page = 1,
45
+ this.error,
46
+ });
47
+
48
+ ${className}State copyWith({
49
+ List<${className}>? items,
50
+ ${className}? selected,
51
+ bool? loading,
52
+ bool? loadingMore,
53
+ bool? hasMore,
54
+ int? page,
55
+ String? error,
56
+ }) {
57
+ return ${className}State(
58
+ items: items ?? this.items,
59
+ selected: selected ?? this.selected,
60
+ loading: loading ?? this.loading,
61
+ loadingMore: loadingMore ?? this.loadingMore,
62
+ hasMore: hasMore ?? this.hasMore,
63
+ page: page ?? this.page,
64
+ error: error ?? this.error,
65
+ );
66
+ }
67
+
68
+ // Reset error — needed since copyWith can't set null explicitly
69
+ ${className}State clearError() => ${className}State(
70
+ items: items,
71
+ selected: selected,
72
+ loading: loading,
73
+ loadingMore: loadingMore,
74
+ hasMore: hasMore,
75
+ page: page,
76
+ );
77
+ }
78
+
79
+ // ── Notifier ──────────────────────────────────────────────────────────────
80
+
81
+ class ${className}Notifier extends StateNotifier<${className}State> {
82
+ final ${className}Repository _repository;
83
+
84
+ static const int _pageSize = 20;
85
+
86
+ ${className}Notifier(this._repository) : super(const ${className}State());
87
+
88
+ // ── Load initial page ─────────────────────────────────────────────────────
89
+
90
+ Future<void> loadAll({Map<String, String>? filters}) async {
91
+ state = state.copyWith(loading: true, page: 1, hasMore: true);
92
+ try {
93
+ final result = await _repository.findAll(
94
+ filters: filters,
95
+ page: 1,
96
+ limit: _pageSize,
97
+ );
98
+ state = ${className}State(
99
+ items: result.items,
100
+ hasMore: result.hasMore,
101
+ page: 1,
102
+ );
103
+ } catch (e) {
104
+ state = state.copyWith(loading: false, error: e.toString());
105
+ }
106
+ }
107
+
108
+ // ── Pull to refresh ────────────────────────────────────────────────────────
109
+
110
+ Future<void> refresh({Map<String, String>? filters}) async {
111
+ state = const ${className}State(loading: true);
112
+ try {
113
+ final result = await _repository.findAll(
114
+ filters: filters,
115
+ page: 1,
116
+ limit: _pageSize,
117
+ );
118
+ state = ${className}State(
119
+ items: result.items,
120
+ hasMore: result.hasMore,
121
+ page: 1,
122
+ );
123
+ } catch (e) {
124
+ state = state.copyWith(loading: false, error: e.toString());
125
+ }
126
+ }
127
+
128
+ // ── Load next page (pagination) ───────────────────────────────────────────
129
+
130
+ Future<void> loadMore({Map<String, String>? filters}) async {
131
+ if (state.loadingMore || !state.hasMore) return;
132
+ state = state.copyWith(loadingMore: true);
133
+ try {
134
+ final nextPage = state.page + 1;
135
+ final result = await _repository.findAll(
136
+ filters: filters,
137
+ page: nextPage,
138
+ limit: _pageSize,
139
+ );
140
+ state = state.copyWith(
141
+ items: [...state.items, ...result.items],
142
+ hasMore: result.hasMore,
143
+ page: nextPage,
144
+ loadingMore: false,
145
+ );
146
+ } catch (e) {
147
+ state = state.copyWith(loadingMore: false, error: e.toString());
148
+ }
149
+ }
150
+
151
+ // ── Load single record ────────────────────────────────────────────────────
152
+
153
+ Future<void> loadOne(String ${pkName}) async {
154
+ state = state.copyWith(loading: true);
155
+ try {
156
+ final item = await _repository.findById(${pkName});
157
+ state = state.copyWith(loading: false, selected: item);
158
+ } catch (e) {
159
+ state = state.copyWith(loading: false, error: e.toString());
160
+ }
161
+ }
162
+
163
+ // ── Create ────────────────────────────────────────────────────────────────
164
+
165
+ Future<void> create(${className} item) async {
166
+ state = state.copyWith(loading: true);
167
+ try {
168
+ final created = await _repository.create(item);
169
+ state = state.copyWith(
170
+ items: [created, ...state.items],
171
+ loading: false,
172
+ );
173
+ } catch (e) {
174
+ state = state.copyWith(loading: false, error: e.toString());
175
+ }
176
+ }
177
+
178
+ // ── Update ────────────────────────────────────────────────────────────────
179
+
180
+ Future<void> update(String ${pkName}, ${className} item) async {
181
+ state = state.copyWith(loading: true);
182
+ try {
183
+ final updated = await _repository.update(${pkName}, item);
184
+ state = state.copyWith(
185
+ items: state.items
186
+ .map((i) => i.${pkName} == ${pkName} ? updated : i)
187
+ .toList(),
188
+ selected: updated,
189
+ loading: false,
190
+ );
191
+ } catch (e) {
192
+ state = state.copyWith(loading: false, error: e.toString());
193
+ }
194
+ }
195
+
196
+ // ── Delete ────────────────────────────────────────────────────────────────
197
+
198
+ Future<void> delete(String ${pkName}) async {
199
+ state = state.copyWith(loading: true);
200
+ try {
201
+ await _repository.delete(${pkName});
202
+ state = state.copyWith(
203
+ items: state.items.where((i) => i.${pkName} != ${pkName}).toList(),
204
+ loading: false,
205
+ );
206
+ } catch (e) {
207
+ state = state.copyWith(loading: false, error: e.toString());
208
+ }
209
+ }
210
+
211
+ // ── Clear error ───────────────────────────────────────────────────────────
212
+
213
+ void clearError() => state = state.clearError();
214
+ }
215
+
216
+ // ── Provider ──────────────────────────────────────────────────────────────
217
+
218
+ final ${fileName}Provider =
219
+ StateNotifierProvider<${className}Notifier, ${className}State>((ref) {
220
+ final repository = ref.watch(${fileName}RepositoryProvider);
221
+ return ${className}Notifier(repository);
222
+ });
223
+ `;
224
+ return {
225
+ path: `lib/generated/providers/${fileName}_provider.g.dart`,
226
+ content,
227
+ category: 'generated',
228
+ };
229
+ }
230
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../src/adapters/riverpod/provider.ts"],"names":[],"mappings":";AAAA,wFAAwF;;AAKxF,4DAiOC;AAnOD,+DAA6F;AAE7F,SAAgB,wBAAwB,CAAC,KAAY;IACnD,MAAM,SAAS,GAAG,IAAA,iCAAgB,EAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC9C,MAAM,QAAQ,GAAI,IAAA,gCAAe,EAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC7C,MAAM,EAAE,GAAU,IAAA,8BAAa,EAAC,KAAK,CAAC,CAAA;IACtC,MAAM,MAAM,GAAM,EAAE,EAAE,IAAI,IAAI,IAAI,CAAA;IAElC,MAAM,OAAO,GAAG;;mBAEC,KAAK,CAAC,IAAI;8CACiB,SAAS;;;;oBAInC,QAAQ;0BACF,QAAQ;;;;QAI1B,QAAQ,iCAAiC,SAAS;cAC5C,SAAS;;;;;QAKf,SAAS;eACF,SAAS;UACd,SAAS;;;;;;;UAOT,SAAS;;;;;;;;;;IAUf,SAAS;WACF,SAAS;MACd,SAAS;;;;;;;aAOF,SAAS;;;;;;;;;;;;IAYlB,SAAS,yBAAyB,SAAS;;;;;;;;;;;;QAYvC,SAAS,kCAAkC,SAAS;UAClD,SAAS;;;;IAIf,SAAS,4CAA4C,SAAS;;;;;;;;;;;;gBAYlD,SAAS;;;;;;;;;;;;;oBAaL,SAAS;;;;;;;gBAOb,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAmCO,MAAM;;;gDAGU,MAAM;;;;;;;;;wBAS9B,SAAS;;;;;;;;;;;;;;;+BAeF,MAAM,KAAK,SAAS;;;iDAGF,MAAM;;;4BAG3B,MAAM,OAAO,MAAM;;;;;;;;;;;;+BAYhB,MAAM;;;iCAGJ,MAAM;;8CAEO,MAAM,OAAO,MAAM;;;;;;;;;;;;;;;QAezD,QAAQ;4BACY,SAAS,aAAa,SAAS;iCAC1B,QAAQ;WAC9B,SAAS;;CAEnB,CAAA;IAEC,OAAO;QACL,IAAI,EAAM,2BAA2B,QAAQ,kBAAkB;QAC/D,OAAO;QACP,QAAQ,EAAE,WAAW;KACtB,CAAA;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ProjectData, GeneratedFile } from '@underpeaks/generator-core';
2
+ export declare function generateFlutter(data: ProjectData): Promise<GeneratedFile[]>;
3
+ //# sourceMappingURL=generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AA+C5E,wBAAsB,eAAe,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CA8IjF"}
@@ -0,0 +1,199 @@
1
+ "use strict";
2
+ // File: underpeaks_codegen/packages/generator-flutter/src/generator.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.generateFlutter = generateFlutter;
5
+ const generator_core_1 = require("@underpeaks/generator-core");
6
+ const model_1 = require("./templates/model");
7
+ const repository_1 = require("./templates/repository");
8
+ const page_list_1 = require("./templates/page-list");
9
+ const page_detail_1 = require("./templates/page-detail");
10
+ const page_form_1 = require("./templates/page-form");
11
+ const page_auth_1 = require("./templates/page-auth");
12
+ const page_gallery_1 = require("./templates/page-gallery");
13
+ const page_dashboard_1 = require("./templates/page-dashboard");
14
+ const page_profile_1 = require("./templates/page-profile");
15
+ const page_blog_post_1 = require("./templates/page-blog-post");
16
+ // import { generateContactPage } from './templates/page-contact'
17
+ const page_cart_1 = require("./templates/page-cart");
18
+ const page_checkout_1 = require("./templates/page-checkout");
19
+ const page_wallet_1 = require("./templates/page-wallet");
20
+ const page_invoice_1 = require("./templates/page-invoice");
21
+ const page_chat_1 = require("./templates/page-chat");
22
+ const page_messages_1 = require("./templates/page-messages");
23
+ const page_feed_1 = require("./templates/page-feed");
24
+ const page_map_1 = require("./templates/page-map");
25
+ const page_search_1 = require("./templates/page-search");
26
+ const page_settings_1 = require("./templates/page-settings");
27
+ const page_otp_1 = require("./templates/page-otp");
28
+ const page_kanban_1 = require("./templates/page-kanban");
29
+ const page_calendar_1 = require("./templates/page-calendar");
30
+ const page_custom_1 = require("./templates/page-custom");
31
+ const page_splash_1 = require("./templates/page-splash");
32
+ const page_onboarding_1 = require("./templates/page-onboarding");
33
+ const page_reset_password_1 = require("./templates/page-reset-password");
34
+ const navigation_1 = require("./templates/navigation");
35
+ const theme_1 = require("./templates/theme");
36
+ const pubspec_1 = require("./templates/pubspec");
37
+ const main_1 = require("./templates/main");
38
+ const api_config_1 = require("./templates/api-config");
39
+ const env_1 = require("./templates/env");
40
+ const gitignore_1 = require("./templates/gitignore");
41
+ const readme_1 = require("./templates/readme");
42
+ const widget_card_1 = require("./templates/widget-card");
43
+ const api_builder_1 = require("./templates/api-builder");
44
+ const index_1 = require("./integrations/index");
45
+ const storage_1 = require("./integrations/storage");
46
+ const provider_1 = require("./adapters/riverpod/provider");
47
+ const bloc_1 = require("./adapters/bloc/bloc");
48
+ const provider_2 = require("./adapters/provider/provider");
49
+ const validators_1 = require("./templates/validators");
50
+ async function generateFlutter(data) {
51
+ const filtered = (0, generator_core_1.filterProjectData)(data);
52
+ const files = [];
53
+ // ── Generated layer (always regenerated) ──────────────────────────────────
54
+ for (const model of filtered.models) {
55
+ files.push((0, model_1.generateModel)(model, data.state_manager));
56
+ files.push((0, repository_1.generateRepository)(model, data.state_manager, data.source));
57
+ switch (data.state_manager) {
58
+ case 'riverpod':
59
+ files.push((0, provider_1.generateRiverpodProvider)(model));
60
+ break;
61
+ case 'bloc':
62
+ files.push(...(0, bloc_1.generateBlocFiles)(model));
63
+ break;
64
+ case 'provider':
65
+ files.push((0, provider_2.generateProviderNotifier)(model));
66
+ break;
67
+ }
68
+ }
69
+ files.push((0, navigation_1.generateNavigation)(filtered.pages, filtered.routes, filtered.models, data.state_manager));
70
+ if (data.theme)
71
+ files.push((0, theme_1.generateTheme)(data.theme));
72
+ // API Builder codegen
73
+ files.push((0, api_builder_1.generateApiBuilderFlutter)(data.endpoints ?? []));
74
+ // Integration codegen
75
+ if (data.integrations && data.integrations.length > 0) {
76
+ files.push(...(0, index_1.generateFlutterIntegrations)(data.integrations));
77
+ }
78
+ // Hosted storage — always available on Studio
79
+ files.push((0, storage_1.generateStorageFlutter)({}));
80
+ // ── Presentation layer (generated once, user owns) ────────────────────────
81
+ for (const page of filtered.pages) {
82
+ const model = filtered.models.find((m) => m.sm_id === page.model_id);
83
+ switch (page.template_type) {
84
+ case 'list':
85
+ case 'grid':
86
+ if (model) {
87
+ files.push((0, page_list_1.generateListPage)(page, model, data.state_manager));
88
+ files.push((0, widget_card_1.generateCardWidget)(model));
89
+ }
90
+ break;
91
+ case 'detail':
92
+ if (model)
93
+ files.push((0, page_detail_1.generateDetailPage)(page, model, data.state_manager));
94
+ break;
95
+ case 'form':
96
+ if (model)
97
+ files.push((0, page_form_1.generateFormPage)(page, model, data.state_manager));
98
+ break;
99
+ case 'gallery':
100
+ if (model)
101
+ files.push((0, page_gallery_1.generateGalleryPage)(page, model, data.state_manager));
102
+ break;
103
+ case 'dashboard':
104
+ if (model)
105
+ files.push((0, page_dashboard_1.generateDashboardPage)(page, model, data.state_manager));
106
+ break;
107
+ case 'profile':
108
+ if (model)
109
+ files.push((0, page_profile_1.generateProfilePage)(page, model, data.state_manager));
110
+ break;
111
+ case 'blog-post':
112
+ if (model)
113
+ files.push((0, page_blog_post_1.generateBlogPostPage)(page, model, data.state_manager));
114
+ break;
115
+ case 'cart':
116
+ // FIX: generateCartPage now needs the full pages array to resolve
117
+ // real "Continue Shopping" / "Proceed to Checkout" routes instead
118
+ // of hardcoded '/products' / '/checkout'.
119
+ if (model)
120
+ files.push((0, page_cart_1.generateCartPage)(page, model, data.state_manager, filtered.pages));
121
+ break;
122
+ case 'invoice':
123
+ if (model)
124
+ files.push((0, page_invoice_1.generateInvoicePage)(page, model, data.state_manager));
125
+ break;
126
+ case 'feed':
127
+ if (model)
128
+ files.push((0, page_feed_1.generateFeedPage)(page, model, data.state_manager));
129
+ break;
130
+ case 'search':
131
+ if (model)
132
+ files.push((0, page_search_1.generateSearchPage)(page, model, data.state_manager));
133
+ break;
134
+ case 'kanban':
135
+ if (model)
136
+ files.push((0, page_kanban_1.generateKanbanPage)(page, model, data.state_manager));
137
+ break;
138
+ case 'calendar':
139
+ if (model)
140
+ files.push((0, page_calendar_1.generateCalendarPage)(page, model, data.state_manager));
141
+ break;
142
+ // case 'contact':
143
+ // files.push(generateContactPage(page, data.state_manager))
144
+ // break
145
+ case 'checkout':
146
+ files.push((0, page_checkout_1.generateCheckoutPage)(page, data.state_manager));
147
+ break;
148
+ case 'wallet':
149
+ files.push((0, page_wallet_1.generateWalletPage)(page, data.state_manager));
150
+ break;
151
+ case 'chat':
152
+ files.push((0, page_chat_1.generateChatPage)(page, data.state_manager));
153
+ break;
154
+ case 'messages':
155
+ files.push((0, page_messages_1.generateMessagesPage)(page, data.state_manager));
156
+ break;
157
+ case 'map':
158
+ files.push((0, page_map_1.generateMapPage)(page, data.state_manager));
159
+ break;
160
+ case 'settings':
161
+ files.push((0, page_settings_1.generateSettingsPage)(page, data.state_manager));
162
+ break;
163
+ case 'splash':
164
+ files.push((0, page_splash_1.generateSplashPage)(page, data.state_manager));
165
+ break;
166
+ case 'onboarding':
167
+ files.push((0, page_onboarding_1.generateOnboardingPage)(page, data.state_manager));
168
+ break;
169
+ case 'custom':
170
+ files.push((0, page_custom_1.generateCustomPage)(page, data.state_manager));
171
+ break;
172
+ case 'sign_in':
173
+ case 'sign_up':
174
+ case 'forgot_password':
175
+ // FIX: generateAuthPages now needs the full pages array to resolve
176
+ // real sign-in/sign-up/forgot-password routes instead of hardcoded
177
+ // '/sign-in', '/sign-up', '/forgot-password'.
178
+ files.push(...(0, page_auth_1.generateAuthPages)(page, data.state_manager, filtered.pages));
179
+ break;
180
+ case 'reset_password':
181
+ files.push((0, page_reset_password_1.generateResetPasswordPage)(page, data.state_manager));
182
+ break;
183
+ case 'otp_request':
184
+ case 'otp_entry':
185
+ files.push(...(0, page_otp_1.generateOtpPages)(page, data.state_manager));
186
+ break;
187
+ }
188
+ }
189
+ // ── Config + root ─────────────────────────────────────────────────────────
190
+ files.push((0, api_config_1.generateApiConfig)());
191
+ files.push((0, env_1.generateEnvTemplate)(data.project_id));
192
+ files.push((0, gitignore_1.generateGitignore)());
193
+ files.push((0, readme_1.generateReadme)(data.project_name));
194
+ files.push((0, pubspec_1.generatePubspec)(data.project_name, data.state_manager));
195
+ files.push((0, main_1.generateMain)(data.project_name, filtered.pages, data.state_manager));
196
+ files.push((0, validators_1.generateValidators)());
197
+ return files;
198
+ }
199
+ //# sourceMappingURL=generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { generateFlutter } from './generator';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateFlutter = void 0;
4
+ var generator_1 = require("./generator");
5
+ Object.defineProperty(exports, "generateFlutter", { enumerable: true, get: function () { return generator_1.generateFlutter; } });
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AACA,yCAA6C;AAApC,4GAAA,eAAe,OAAA"}
@@ -0,0 +1,3 @@
1
+ import type { GeneratedFile } from '@underpeaks/generator-core';
2
+ export declare function generateAlgoliaFlutter(config: Record<string, string>): GeneratedFile;
3
+ //# sourceMappingURL=algolia.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"algolia.d.ts","sourceRoot":"","sources":["../../src/integrations/algolia.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,CA+CpF"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ // File: underpeaks_codegen/packages/generator-flutter/src/integrations/algolia.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.generateAlgoliaFlutter = generateAlgoliaFlutter;
5
+ function generateAlgoliaFlutter(config) {
6
+ const appId = config['app_id'] ?? 'YOUR_APP_ID';
7
+ const searchKey = config['search_api_key'] ?? 'YOUR_SEARCH_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: Algolia`);
12
+ lines.push(`// ignore_for_file: lines_longer_than_80_chars`);
13
+ lines.push(``);
14
+ lines.push(`// ── Setup instructions ────────────────────────────────────────────────────`);
15
+ lines.push(`// 1. Add to pubspec.yaml:`);
16
+ lines.push(`// algolia: ^1.1.2`);
17
+ lines.push(``);
18
+ lines.push(`import 'package:algolia/algolia.dart';`);
19
+ lines.push(``);
20
+ lines.push(`class NxfAlgolia {`);
21
+ lines.push(` NxfAlgolia._();`);
22
+ lines.push(``);
23
+ lines.push(` static final Algolia _client = Algolia.init(`);
24
+ lines.push(` applicationId: '${appId}',`);
25
+ lines.push(` apiKey: '${searchKey}',`);
26
+ lines.push(` );`);
27
+ lines.push(``);
28
+ lines.push(` static Future<List<Map<String, dynamic>>> search(`);
29
+ lines.push(` String indexName,`);
30
+ lines.push(` String query, {`);
31
+ lines.push(` int hitsPerPage = 20,`);
32
+ lines.push(` }) async {`);
33
+ lines.push(` final results = await _client`);
34
+ lines.push(` .instance`);
35
+ lines.push(` .index(indexName)`);
36
+ lines.push(` .query(query)`);
37
+ lines.push(` .setHitsPerPage(hitsPerPage)`);
38
+ lines.push(` .getObjects();`);
39
+ lines.push(``);
40
+ lines.push(` return results.hits`);
41
+ lines.push(` .map((hit) => hit.data)`);
42
+ lines.push(` .toList();`);
43
+ lines.push(` }`);
44
+ lines.push(`}`);
45
+ return {
46
+ path: 'lib/generated/integrations/algolia.g.dart',
47
+ content: lines.join('\n'),
48
+ category: 'generated',
49
+ };
50
+ }
51
+ //# sourceMappingURL=algolia.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"algolia.js","sourceRoot":"","sources":["../../src/integrations/algolia.ts"],"names":[],"mappings":";AAAA,kFAAkF;;AAIlF,wDA+CC;AA/CD,SAAgB,sBAAsB,CAAC,MAA8B;IACnE,MAAM,KAAK,GAAS,MAAM,CAAC,QAAQ,CAAC,IAAY,aAAa,CAAA;IAC7D,MAAM,SAAS,GAAK,MAAM,CAAC,gBAAgB,CAAC,IAAI,iBAAiB,CAAA;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,yBAAyB,CAAC,CAAA;IACrC,KAAK,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAA;IAC5D,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,+EAA+E,CAAC,CAAA;IAC3F,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAA;IACxC,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAA;IACrC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAA;IACpD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;IAChC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;IAC/B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAA;IAC5D,KAAK,CAAC,IAAI,CAAC,uBAAuB,KAAK,IAAI,CAAC,CAAA;IAC5C,KAAK,CAAC,IAAI,CAAC,uBAAuB,SAAS,IAAI,CAAC,CAAA;IAChD,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAClB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAA;IACjE,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAA;IACnC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAA;IACjC,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAA;IACvC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;IAC1B,KAAK,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAA;IAC/C,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;IAC/B,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAA;IACvC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAA;IACnC,KAAK,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAA;IAClD,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAA;IACpC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAA;IACrC,KAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAA;IAC7C,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;IAChC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACjB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAEf,OAAO;QACL,IAAI,EAAM,2CAA2C;QACrD,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 generateAnthropicFlutter(config: Record<string, string>): GeneratedFile;
3
+ //# sourceMappingURL=anthropic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../src/integrations/anthropic.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAE/D,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,aAAa,CA6CtF"}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ // File: underpeaks_codegen/packages/generator-flutter/src/integrations/anthropic.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.generateAnthropicFlutter = generateAnthropicFlutter;
5
+ function generateAnthropicFlutter(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: Anthropic Claude`);
10
+ lines.push(`// ignore_for_file: lines_longer_than_80_chars`);
11
+ lines.push(``);
12
+ lines.push(`import 'dart:convert';`);
13
+ lines.push(`import 'package:http/http.dart' as http;`);
14
+ lines.push(`import '../../config/api_config.dart';`);
15
+ lines.push(``);
16
+ lines.push(`class NxfAnthropic {`);
17
+ lines.push(` NxfAnthropic._();`);
18
+ lines.push(``);
19
+ lines.push(` static Future<String> complete({`);
20
+ lines.push(` required String prompt,`);
21
+ lines.push(` String model = 'claude-3-5-haiku-20241022',`);
22
+ lines.push(` int maxTokens = 1000,`);
23
+ lines.push(` }) async {`);
24
+ lines.push(` final res = await http.post(`);
25
+ lines.push(` Uri.parse('\${ApiConfig.baseUrl}/api-public/v1/\${ApiConfig.projectId}/ai/complete'),`);
26
+ lines.push(` headers: {`);
27
+ lines.push(` 'Content-Type': 'application/json',`);
28
+ lines.push(` 'x-api-key': ApiConfig.apiKey,`);
29
+ lines.push(` 'x-customer-token': ApiConfig.token,`);
30
+ lines.push(` },`);
31
+ lines.push(` body: jsonEncode({`);
32
+ lines.push(` 'provider': 'anthropic',`);
33
+ lines.push(` 'prompt': prompt,`);
34
+ lines.push(` 'model': model,`);
35
+ lines.push(` 'max_tokens': maxTokens,`);
36
+ lines.push(` }),`);
37
+ lines.push(` );`);
38
+ lines.push(` if (res.statusCode != 200) throw Exception('Anthropic request failed: \${res.body}');`);
39
+ lines.push(` final data = jsonDecode(res.body) as Map<String, dynamic>;`);
40
+ lines.push(` return data['text'] as String;`);
41
+ lines.push(` }`);
42
+ lines.push(`}`);
43
+ return {
44
+ path: 'lib/generated/integrations/anthropic.g.dart',
45
+ content: lines.join('\n'),
46
+ category: 'generated',
47
+ };
48
+ }
49
+ //# sourceMappingURL=anthropic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/integrations/anthropic.ts"],"names":[],"mappings":";AAAA,oFAAoF;;AAIpF,4DA6CC;AA7CD,SAAgB,wBAAwB,CAAC,MAA8B;IACrE,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,kCAAkC,CAAC,CAAA;IAC9C,KAAK,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAA;IAC5D,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAA;IACpC,KAAK,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAA;IACtD,KAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAA;IACpD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAA;IAClC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAA;IACjC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAA;IAChD,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAA;IACzC,KAAK,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAA;IAC9D,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAA;IACvC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;IAC1B,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAA;IAC9C,KAAK,CAAC,IAAI,CAAC,6FAA6F,CAAC,CAAA;IACzG,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;IAC9B,KAAK,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAA;IAC7D,KAAK,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAA;IAC3D,KAAK,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAA;IAC1D,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IACtB,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAA;IACtC,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAA;IAChD,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAA;IAC3C,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAA;IAC1C,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAA;IAC9C,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IACvB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACpB,KAAK,CAAC,IAAI,CAAC,2FAA2F,CAAC,CAAA;IACvG,KAAK,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAA;IAC5E,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAA;IAChD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACjB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAEf,OAAO;QACL,IAAI,EAAM,6CAA6C;QACvD,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 generateAwsS3Flutter(config: Record<string, string>): GeneratedFile;
3
+ //# sourceMappingURL=aws-s3.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aws-s3.d.ts","sourceRoot":"","sources":["../../src/integrations/aws-s3.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,CA+DlF"}