@superblocksteam/vite-plugin-file-sync 2.0.6-next.88 → 2.0.6-next.9

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 (249) hide show
  1. package/dist/ai-service/app-interface/linter.d.ts +2 -7
  2. package/dist/ai-service/app-interface/linter.d.ts.map +1 -1
  3. package/dist/ai-service/app-interface/linter.js +41 -52
  4. package/dist/ai-service/app-interface/linter.js.map +1 -1
  5. package/dist/ai-service/app-interface/shell.d.ts +0 -2
  6. package/dist/ai-service/app-interface/shell.d.ts.map +1 -1
  7. package/dist/ai-service/app-interface/shell.js +4 -13
  8. package/dist/ai-service/app-interface/shell.js.map +1 -1
  9. package/dist/ai-service/const.d.ts +0 -2
  10. package/dist/ai-service/const.d.ts.map +1 -1
  11. package/dist/ai-service/const.js +0 -2
  12. package/dist/ai-service/const.js.map +1 -1
  13. package/dist/ai-service/eval/template-renderer.d.ts.map +1 -1
  14. package/dist/ai-service/eval/template-renderer.js +1 -1
  15. package/dist/ai-service/eval/template-renderer.js.map +1 -1
  16. package/dist/ai-service/index.d.ts.map +1 -1
  17. package/dist/ai-service/index.js +12 -4
  18. package/dist/ai-service/index.js.map +1 -1
  19. package/dist/ai-service/prompts/generated/library-components/SbButtonPropsDocs.d.ts +1 -1
  20. package/dist/ai-service/prompts/generated/library-components/SbButtonPropsDocs.d.ts.map +1 -1
  21. package/dist/ai-service/prompts/generated/library-components/SbButtonPropsDocs.js +2 -2
  22. package/dist/ai-service/prompts/generated/library-components/SbButtonPropsDocs.js.map +1 -1
  23. package/dist/ai-service/prompts/generated/library-components/SbCheckboxPropsDocs.d.ts +1 -1
  24. package/dist/ai-service/prompts/generated/library-components/SbCheckboxPropsDocs.d.ts.map +1 -1
  25. package/dist/ai-service/prompts/generated/library-components/SbCheckboxPropsDocs.js +2 -2
  26. package/dist/ai-service/prompts/generated/library-components/SbCheckboxPropsDocs.js.map +1 -1
  27. package/dist/ai-service/prompts/generated/library-components/SbColumnPropsDocs.d.ts +1 -1
  28. package/dist/ai-service/prompts/generated/library-components/SbColumnPropsDocs.d.ts.map +1 -1
  29. package/dist/ai-service/prompts/generated/library-components/SbColumnPropsDocs.js +2 -2
  30. package/dist/ai-service/prompts/generated/library-components/SbColumnPropsDocs.js.map +1 -1
  31. package/dist/ai-service/prompts/generated/library-components/SbContainerPropsDocs.d.ts +1 -1
  32. package/dist/ai-service/prompts/generated/library-components/SbContainerPropsDocs.d.ts.map +1 -1
  33. package/dist/ai-service/prompts/generated/library-components/SbContainerPropsDocs.js +2 -2
  34. package/dist/ai-service/prompts/generated/library-components/SbContainerPropsDocs.js.map +1 -1
  35. package/dist/ai-service/prompts/generated/library-components/SbDatePickerPropsDocs.d.ts +1 -1
  36. package/dist/ai-service/prompts/generated/library-components/SbDatePickerPropsDocs.d.ts.map +1 -1
  37. package/dist/ai-service/prompts/generated/library-components/SbDatePickerPropsDocs.js +2 -2
  38. package/dist/ai-service/prompts/generated/library-components/SbDatePickerPropsDocs.js.map +1 -1
  39. package/dist/ai-service/prompts/generated/library-components/SbDropdownPropsDocs.d.ts +1 -1
  40. package/dist/ai-service/prompts/generated/library-components/SbDropdownPropsDocs.d.ts.map +1 -1
  41. package/dist/ai-service/prompts/generated/library-components/SbDropdownPropsDocs.js +2 -2
  42. package/dist/ai-service/prompts/generated/library-components/SbDropdownPropsDocs.js.map +1 -1
  43. package/dist/ai-service/prompts/generated/library-components/SbIconPropsDocs.d.ts +1 -1
  44. package/dist/ai-service/prompts/generated/library-components/SbIconPropsDocs.d.ts.map +1 -1
  45. package/dist/ai-service/prompts/generated/library-components/SbIconPropsDocs.js +2 -2
  46. package/dist/ai-service/prompts/generated/library-components/SbIconPropsDocs.js.map +1 -1
  47. package/dist/ai-service/prompts/generated/library-components/SbImagePropsDocs.d.ts +1 -1
  48. package/dist/ai-service/prompts/generated/library-components/SbImagePropsDocs.d.ts.map +1 -1
  49. package/dist/ai-service/prompts/generated/library-components/SbImagePropsDocs.js +2 -2
  50. package/dist/ai-service/prompts/generated/library-components/SbImagePropsDocs.js.map +1 -1
  51. package/dist/ai-service/prompts/generated/library-components/SbInputPropsDocs.d.ts +1 -1
  52. package/dist/ai-service/prompts/generated/library-components/SbInputPropsDocs.d.ts.map +1 -1
  53. package/dist/ai-service/prompts/generated/library-components/SbInputPropsDocs.js +2 -2
  54. package/dist/ai-service/prompts/generated/library-components/SbInputPropsDocs.js.map +1 -1
  55. package/dist/ai-service/prompts/generated/library-components/SbModalPropsDocs.d.ts +1 -1
  56. package/dist/ai-service/prompts/generated/library-components/SbModalPropsDocs.d.ts.map +1 -1
  57. package/dist/ai-service/prompts/generated/library-components/SbModalPropsDocs.js +2 -2
  58. package/dist/ai-service/prompts/generated/library-components/SbModalPropsDocs.js.map +1 -1
  59. package/dist/ai-service/prompts/generated/library-components/SbPagePropsDocs.d.ts +1 -1
  60. package/dist/ai-service/prompts/generated/library-components/SbPagePropsDocs.d.ts.map +1 -1
  61. package/dist/ai-service/prompts/generated/library-components/SbPagePropsDocs.js +2 -2
  62. package/dist/ai-service/prompts/generated/library-components/SbPagePropsDocs.js.map +1 -1
  63. package/dist/ai-service/prompts/generated/library-components/SbSectionPropsDocs.d.ts +1 -1
  64. package/dist/ai-service/prompts/generated/library-components/SbSectionPropsDocs.d.ts.map +1 -1
  65. package/dist/ai-service/prompts/generated/library-components/SbSectionPropsDocs.js +2 -2
  66. package/dist/ai-service/prompts/generated/library-components/SbSectionPropsDocs.js.map +1 -1
  67. package/dist/ai-service/prompts/generated/library-components/SbSlideoutPropsDocs.d.ts +1 -1
  68. package/dist/ai-service/prompts/generated/library-components/SbSlideoutPropsDocs.d.ts.map +1 -1
  69. package/dist/ai-service/prompts/generated/library-components/SbSlideoutPropsDocs.js +2 -2
  70. package/dist/ai-service/prompts/generated/library-components/SbSlideoutPropsDocs.js.map +1 -1
  71. package/dist/ai-service/prompts/generated/library-components/SbSwitchPropsDocs.d.ts +1 -1
  72. package/dist/ai-service/prompts/generated/library-components/SbSwitchPropsDocs.d.ts.map +1 -1
  73. package/dist/ai-service/prompts/generated/library-components/SbSwitchPropsDocs.js +2 -2
  74. package/dist/ai-service/prompts/generated/library-components/SbSwitchPropsDocs.js.map +1 -1
  75. package/dist/ai-service/prompts/generated/library-components/SbTablePropsDocs.d.ts +1 -1
  76. package/dist/ai-service/prompts/generated/library-components/SbTablePropsDocs.d.ts.map +1 -1
  77. package/dist/ai-service/prompts/generated/library-components/SbTablePropsDocs.js +2 -2
  78. package/dist/ai-service/prompts/generated/library-components/SbTablePropsDocs.js.map +1 -1
  79. package/dist/ai-service/prompts/generated/library-components/SbTextPropsDocs.d.ts +1 -1
  80. package/dist/ai-service/prompts/generated/library-components/SbTextPropsDocs.d.ts.map +1 -1
  81. package/dist/ai-service/prompts/generated/library-components/SbTextPropsDocs.js +2 -2
  82. package/dist/ai-service/prompts/generated/library-components/SbTextPropsDocs.js.map +1 -1
  83. package/dist/ai-service/prompts/generated/library-typedefs/Dim.js +1 -1
  84. package/dist/ai-service/prompts/generated/library-typedefs/SbEventFlow.js +1 -1
  85. package/dist/ai-service/prompts/generated/library-typedefs/index.d.ts +0 -1
  86. package/dist/ai-service/prompts/generated/library-typedefs/index.d.ts.map +1 -1
  87. package/dist/ai-service/prompts/generated/library-typedefs/index.js +0 -1
  88. package/dist/ai-service/prompts/generated/library-typedefs/index.js.map +1 -1
  89. package/dist/ai-service/prompts/generated/subprompts/full-examples.js +1 -1
  90. package/dist/ai-service/prompts/generated/subprompts/superblocks-api.d.ts +1 -1
  91. package/dist/ai-service/prompts/generated/subprompts/superblocks-api.d.ts.map +1 -1
  92. package/dist/ai-service/prompts/generated/subprompts/superblocks-api.js +2 -2
  93. package/dist/ai-service/prompts/generated/subprompts/superblocks-api.js.map +1 -1
  94. package/dist/ai-service/prompts/generated/subprompts/superblocks-components-rules.js +1 -1
  95. package/dist/ai-service/prompts/generated/subprompts/superblocks-custom-components.js +1 -1
  96. package/dist/ai-service/prompts/generated/subprompts/superblocks-data-filtering.js +1 -1
  97. package/dist/ai-service/prompts/generated/subprompts/superblocks-event-flow.js +1 -1
  98. package/dist/ai-service/prompts/generated/subprompts/superblocks-forms.js +1 -1
  99. package/dist/ai-service/prompts/generated/subprompts/superblocks-layouts.js +1 -1
  100. package/dist/ai-service/prompts/generated/subprompts/superblocks-page.js +1 -1
  101. package/dist/ai-service/prompts/generated/subprompts/superblocks-rbac.js +1 -1
  102. package/dist/ai-service/prompts/generated/subprompts/superblocks-routes.js +1 -1
  103. package/dist/ai-service/prompts/generated/subprompts/superblocks-state.js +1 -1
  104. package/dist/ai-service/prompts/generated/subprompts/superblocks-theming.js +1 -1
  105. package/dist/ai-service/prompts/generated/subprompts/system.js +1 -1
  106. package/dist/ai-service/prompts/system.d.ts.map +1 -1
  107. package/dist/ai-service/prompts/system.js +0 -4
  108. package/dist/ai-service/prompts/system.js.map +1 -1
  109. package/dist/ai-service/state-machine/clark-fsm.d.ts +0 -2
  110. package/dist/ai-service/state-machine/clark-fsm.d.ts.map +1 -1
  111. package/dist/ai-service/state-machine/handlers/agent-planning.d.ts.map +1 -1
  112. package/dist/ai-service/state-machine/handlers/agent-planning.js +0 -10
  113. package/dist/ai-service/state-machine/handlers/agent-planning.js.map +1 -1
  114. package/dist/ai-service/state-machine/handlers/llm-generating.d.ts +1 -1
  115. package/dist/ai-service/state-machine/handlers/llm-generating.d.ts.map +1 -1
  116. package/dist/ai-service/state-machine/handlers/llm-generating.js +24 -70
  117. package/dist/ai-service/state-machine/handlers/llm-generating.js.map +1 -1
  118. package/dist/ai-service/transform/add-metadata-to-api-yaml/transformer.d.ts.map +1 -1
  119. package/dist/ai-service/transform/add-metadata-to-api-yaml/transformer.js +2 -3
  120. package/dist/ai-service/transform/add-metadata-to-api-yaml/transformer.js.map +1 -1
  121. package/dist/ai-service/transform/shared.d.ts.map +1 -1
  122. package/dist/ai-service/transform/shared.js +8 -9
  123. package/dist/ai-service/transform/shared.js.map +1 -1
  124. package/dist/ai-service/types.d.ts +1 -23
  125. package/dist/ai-service/types.d.ts.map +1 -1
  126. package/dist/ai-service/types.js.map +1 -1
  127. package/dist/codegen.js +1 -1
  128. package/dist/codegen.js.map +1 -1
  129. package/dist/file-sync-vite-plugin.d.ts.map +1 -1
  130. package/dist/file-sync-vite-plugin.js +13 -34
  131. package/dist/file-sync-vite-plugin.js.map +1 -1
  132. package/dist/file-system-helpers.d.ts +0 -4
  133. package/dist/file-system-helpers.d.ts.map +1 -1
  134. package/dist/file-system-helpers.js +0 -10
  135. package/dist/file-system-helpers.js.map +1 -1
  136. package/dist/file-system-manager.d.ts +39 -52
  137. package/dist/file-system-manager.d.ts.map +1 -1
  138. package/dist/file-system-manager.js +514 -633
  139. package/dist/file-system-manager.js.map +1 -1
  140. package/dist/index.d.ts +0 -1
  141. package/dist/index.d.ts.map +1 -1
  142. package/dist/index.js +0 -1
  143. package/dist/index.js.map +1 -1
  144. package/dist/inject-index-vite-plugin.d.ts +2 -0
  145. package/dist/inject-index-vite-plugin.d.ts.map +1 -1
  146. package/dist/inject-index-vite-plugin.js +2 -2
  147. package/dist/inject-index-vite-plugin.js.map +1 -1
  148. package/dist/injected-index.d.ts +2 -2
  149. package/dist/injected-index.d.ts.map +1 -1
  150. package/dist/injected-index.js.map +1 -1
  151. package/dist/lock-service/index.d.ts.map +1 -1
  152. package/dist/lock-service/index.js +2 -13
  153. package/dist/lock-service/index.js.map +1 -1
  154. package/dist/parsing/computed/to-code-computed.d.ts.map +1 -1
  155. package/dist/parsing/computed/to-code-computed.js +3 -7
  156. package/dist/parsing/computed/to-code-computed.js.map +1 -1
  157. package/dist/parsing/events/to-code-events.d.ts.map +1 -1
  158. package/dist/parsing/events/to-code-events.js +1 -12
  159. package/dist/parsing/events/to-code-events.js.map +1 -1
  160. package/dist/parsing/events/to-value-events.d.ts.map +1 -1
  161. package/dist/parsing/events/to-value-events.js +0 -47
  162. package/dist/parsing/events/to-value-events.js.map +1 -1
  163. package/dist/parsing/template/index.js +1 -1
  164. package/dist/parsing/template/index.js.map +1 -1
  165. package/dist/parsing/template/to-code-template.d.ts +1 -2
  166. package/dist/parsing/template/to-code-template.d.ts.map +1 -1
  167. package/dist/parsing/template/to-code-template.js +2 -2
  168. package/dist/parsing/template/to-code-template.js.map +1 -1
  169. package/dist/plugin-options.d.ts +2 -0
  170. package/dist/plugin-options.d.ts.map +1 -1
  171. package/dist/plugin-options.js.map +1 -1
  172. package/dist/refactor/javascript.d.ts +4 -0
  173. package/dist/refactor/javascript.d.ts.map +1 -1
  174. package/dist/refactor/javascript.js +8 -0
  175. package/dist/refactor/javascript.js.map +1 -1
  176. package/dist/rename-manager.d.ts +5 -0
  177. package/dist/rename-manager.d.ts.map +1 -1
  178. package/dist/rename-manager.js +27 -1
  179. package/dist/rename-manager.js.map +1 -1
  180. package/dist/routing.d.ts +2 -2
  181. package/dist/routing.d.ts.map +1 -1
  182. package/dist/routing.js +1 -21
  183. package/dist/routing.js.map +1 -1
  184. package/dist/sb-scope-manager.d.ts +1 -1
  185. package/dist/sb-scope-manager.d.ts.map +1 -1
  186. package/dist/sb-scope-manager.js +0 -10
  187. package/dist/sb-scope-manager.js.map +1 -1
  188. package/dist/socket-manager.d.ts +2 -2
  189. package/dist/socket-manager.d.ts.map +1 -1
  190. package/dist/socket-manager.js +5 -7
  191. package/dist/socket-manager.js.map +1 -1
  192. package/dist/source-tracker.d.ts +20 -20
  193. package/dist/source-tracker.d.ts.map +1 -1
  194. package/dist/source-tracker.js +17 -33
  195. package/dist/source-tracker.js.map +1 -1
  196. package/dist/sync-service/index.d.ts.map +1 -1
  197. package/dist/sync-service/index.js +1 -2
  198. package/dist/sync-service/index.js.map +1 -1
  199. package/dist/sync-service/list-dir.js +1 -1
  200. package/dist/sync-service/list-dir.js.map +1 -1
  201. package/dist/util/logger.d.ts +17 -13
  202. package/dist/util/logger.d.ts.map +1 -1
  203. package/dist/util/logger.js +44 -34
  204. package/dist/util/logger.js.map +1 -1
  205. package/dist/util/tracing.d.ts +4 -0
  206. package/dist/util/tracing.d.ts.map +1 -0
  207. package/dist/util/tracing.js +56 -0
  208. package/dist/util/tracing.js.map +1 -0
  209. package/dist/util.d.ts +0 -1
  210. package/dist/util.d.ts.map +1 -1
  211. package/dist/util.js +0 -8
  212. package/dist/util.js.map +1 -1
  213. package/package.json +6 -15
  214. package/dist/ai-service/prompts/generated/library-typedefs/TextStyleWithVariant.d.ts +0 -2
  215. package/dist/ai-service/prompts/generated/library-typedefs/TextStyleWithVariant.d.ts.map +0 -1
  216. package/dist/ai-service/prompts/generated/library-typedefs/TextStyleWithVariant.js +0 -6
  217. package/dist/ai-service/prompts/generated/library-typedefs/TextStyleWithVariant.js.map +0 -1
  218. package/dist/ai-service/test-utils/app-generation-mocks/orders-app.d.ts +0 -3
  219. package/dist/ai-service/test-utils/app-generation-mocks/orders-app.d.ts.map +0 -1
  220. package/dist/ai-service/test-utils/app-generation-mocks/orders-app.js +0 -851
  221. package/dist/ai-service/test-utils/app-generation-mocks/orders-app.js.map +0 -1
  222. package/dist/ai-service/test-utils/app-generation-mocks/smoketest.d.ts +0 -3
  223. package/dist/ai-service/test-utils/app-generation-mocks/smoketest.d.ts.map +0 -1
  224. package/dist/ai-service/test-utils/app-generation-mocks/smoketest.js +0 -111
  225. package/dist/ai-service/test-utils/app-generation-mocks/smoketest.js.map +0 -1
  226. package/dist/ai-service/test-utils/mock-utils.d.ts +0 -22
  227. package/dist/ai-service/test-utils/mock-utils.d.ts.map +0 -1
  228. package/dist/ai-service/test-utils/mock-utils.js +0 -46
  229. package/dist/ai-service/test-utils/mock-utils.js.map +0 -1
  230. package/dist/binding-extraction/index.d.ts +0 -2
  231. package/dist/binding-extraction/index.d.ts.map +0 -1
  232. package/dist/binding-extraction/index.js +0 -2
  233. package/dist/binding-extraction/index.js.map +0 -1
  234. package/dist/operations/operation-processor.d.ts +0 -24
  235. package/dist/operations/operation-processor.d.ts.map +0 -1
  236. package/dist/operations/operation-processor.js +0 -80
  237. package/dist/operations/operation-processor.js.map +0 -1
  238. package/dist/operations/types.d.ts +0 -8
  239. package/dist/operations/types.d.ts.map +0 -1
  240. package/dist/operations/types.js +0 -2
  241. package/dist/operations/types.js.map +0 -1
  242. package/dist/parsing/index.d.ts +0 -3
  243. package/dist/parsing/index.d.ts.map +0 -1
  244. package/dist/parsing/index.js +0 -3
  245. package/dist/parsing/index.js.map +0 -1
  246. package/dist/refactor/entities.d.ts +0 -6
  247. package/dist/refactor/entities.d.ts.map +0 -1
  248. package/dist/refactor/entities.js +0 -62
  249. package/dist/refactor/entities.js.map +0 -1
@@ -1,38 +1,45 @@
1
- import { createLogger, format, transports } from "winston";
2
- const loggerPrefix = "[file-sync]";
3
- const activeTransports = [];
4
- if (process.env.SUPERBLOCKS_IS_CSB === "true") {
5
- activeTransports.push(new transports.File({ filename: `/tmp/dev-server.log`, level: "info" }));
6
- }
7
- activeTransports.push(new transports.Console({
8
- format: format.combine(format.colorize(), format.timestamp({
9
- format: "HH:mm:ss.SSS",
10
- }), format.printf((props) => {
11
- const { message, timestamp, error, level } = props;
12
- const base = process.env.SUPERBLOCKS_IS_CSB === "true"
13
- ? `${timestamp} ${loggerPrefix} ${message}`
14
- : `${loggerPrefix} ${message}`;
15
- if (level === "error") {
16
- return `${base} ${error.message} ${error.stack}`;
17
- }
18
- return base;
19
- })),
20
- forceConsole: true,
21
- }));
22
- const winstonLogger = createLogger({
23
- level: "debug",
24
- exitOnError: false,
25
- format: format.json(),
26
- transports: activeTransports,
1
+ const loggerPrefix = "[vite-plugin-file-sync]";
2
+ const getTimestamp = () => new Date().toISOString();
3
+ // Create default logger with frozen object to prevent modifications
4
+ let logger = Object.freeze({
5
+ debug: (message, ...meta) => {
6
+ console.log(`[${getTimestamp()}] ${loggerPrefix} ${message}`, ...meta);
7
+ },
8
+ info: (message, ...meta) => {
9
+ console.log(`[${getTimestamp()}] ${loggerPrefix} ${message}`, ...meta);
10
+ },
11
+ warn: (message, ...meta) => {
12
+ console.warn(`[${getTimestamp()}] ${loggerPrefix} ${message}`, ...meta);
13
+ },
14
+ error: (message, ...meta) => {
15
+ console.error(`[${getTimestamp()}] ${loggerPrefix} ${message}`, ...meta);
16
+ },
27
17
  });
28
- const logger = Object.freeze({
29
- debug: (...messages) => winstonLogger.debug(messages.length > 0 ? messages.join(" ") : messages[0]),
30
- log: (...messages) => winstonLogger.info(messages.length > 0 ? messages.join(" ") : messages[0]),
31
- info: (...messages) => winstonLogger.info(messages.length > 0 ? messages.join(" ") : messages[0]),
32
- warn: (...messages) => winstonLogger.warn(messages.length > 0 ? messages.join(" ") : messages[0]),
33
- error: (message, meta) => winstonLogger.error(message, meta),
34
- });
35
- export function getLogger() {
18
+ export function setLogger(newLogger) {
19
+ if (!newLogger) {
20
+ return logger;
21
+ }
22
+ // Validate all required methods exist
23
+ const requiredMethods = ["debug", "info", "warn", "error"];
24
+ for (const method of requiredMethods) {
25
+ if (typeof newLogger[method] !== "function") {
26
+ throw new Error(`Logger must implement ${method} method`);
27
+ }
28
+ }
29
+ logger = Object.freeze({
30
+ debug: (message, ...meta) => {
31
+ newLogger.debug(`[${getTimestamp()}] ${loggerPrefix} ${message}`, ...meta);
32
+ },
33
+ info: (message, ...meta) => {
34
+ newLogger.info(`[${getTimestamp()}] ${loggerPrefix} ${message}`, ...meta);
35
+ },
36
+ warn: (message, ...meta) => {
37
+ newLogger.warn(`[${getTimestamp()}] ${loggerPrefix} ${message}`, ...meta);
38
+ },
39
+ error: (message, ...meta) => {
40
+ newLogger.error(`[${getTimestamp()}] ${loggerPrefix} ${message}`, ...meta);
41
+ },
42
+ });
36
43
  return logger;
37
44
  }
38
45
  export function getErrorMeta(error) {
@@ -52,4 +59,7 @@ export function getErrorMeta(error) {
52
59
  },
53
60
  };
54
61
  }
62
+ export function getLogger() {
63
+ return logger;
64
+ }
55
65
  //# sourceMappingURL=logger.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/util/logger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/util/logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { Tracer } from "@opentelemetry/api";
2
+ import type { MethodHandlers } from "@superblocksteam/shared";
3
+ export declare const withMethodTracing: <M, P, R>(tracer: Tracer | undefined, methods: MethodHandlers<M, P, R>, basePath?: string) => MethodHandlers<M, P, R>;
4
+ //# sourceMappingURL=tracing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracing.d.ts","sourceRoot":"","sources":["../../src/util/tracing.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,eAAO,MAAM,iBAAiB,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EACvC,QAAQ,MAAM,GAAG,SAAS,EAC1B,SAAS,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAChC,WAAU,MAAW,KACpB,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAqExB,CAAC"}
@@ -0,0 +1,56 @@
1
+ import { SpanStatusCode } from "@opentelemetry/api";
2
+ export const withMethodTracing = (tracer, methods, basePath = "") => {
3
+ if (!tracer) {
4
+ return methods;
5
+ }
6
+ const properties = Object.keys(methods);
7
+ return properties.reduce((tracedMethods, property) => {
8
+ const propertyPath = `${basePath ? `${basePath}.` : ""}${property.toString()}`;
9
+ if (Array.isArray(methods[property])) {
10
+ const methodHandlers = methods[property];
11
+ tracedMethods[property] = methodHandlers.map((handler) => {
12
+ return (...args) => {
13
+ const span = tracer.startSpan(propertyPath);
14
+ try {
15
+ const result = handler(...args);
16
+ // Handle promise-based results
17
+ if (result instanceof Promise) {
18
+ return result
19
+ .then((resolvedResult) => {
20
+ span.setStatus({ code: SpanStatusCode.OK });
21
+ span.end();
22
+ return resolvedResult;
23
+ })
24
+ .catch((error) => {
25
+ span.recordException(error);
26
+ span.setStatus({
27
+ code: SpanStatusCode.ERROR,
28
+ message: error.message,
29
+ });
30
+ span.end();
31
+ throw error;
32
+ });
33
+ }
34
+ // Handle synchronous results
35
+ span.setStatus({ code: SpanStatusCode.OK });
36
+ span.end();
37
+ return result;
38
+ }
39
+ catch (error) {
40
+ span.recordException(error);
41
+ span.setStatus({
42
+ code: SpanStatusCode.ERROR,
43
+ message: error.message,
44
+ });
45
+ span.end();
46
+ throw error;
47
+ }
48
+ };
49
+ });
50
+ return tracedMethods;
51
+ }
52
+ tracedMethods[property] = withMethodTracing(tracer, methods[property], propertyPath);
53
+ return tracedMethods;
54
+ }, {});
55
+ };
56
+ //# sourceMappingURL=tracing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracing.js","sourceRoot":"","sources":["../../src/util/tracing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAKpD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,MAA0B,EAC1B,OAAgC,EAChC,WAAmB,EAAE,EACI,EAAE;IAC3B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAsC,CAAC;IAC7E,OAAO,UAAU,CAAC,MAAM,CACtB,CAAC,aAAa,EAAE,QAAQ,EAAE,EAAE;QAC1B,MAAM,YAAY,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC;QAC/E,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;YACrC,MAAM,cAAc,GAAG,OAAO,CAAC,QAAQ,CAKpC,CAAC;YACJ,aAAa,CAAC,QAAQ,CAAC,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;gBACvD,OAAO,CAAC,GAAG,IAAgC,EAAE,EAAE;oBAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;oBAE5C,IAAI,CAAC;wBACH,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;wBAEhC,+BAA+B;wBAC/B,IAAI,MAAM,YAAY,OAAO,EAAE,CAAC;4BAC9B,OAAO,MAAM;iCACV,IAAI,CAAC,CAAC,cAAc,EAAE,EAAE;gCACvB,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,EAAE,CAAC,CAAC;gCAC5C,IAAI,CAAC,GAAG,EAAE,CAAC;gCACX,OAAO,cAAc,CAAC;4BACxB,CAAC,CAAC;iCACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gCACf,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;gCAC5B,IAAI,CAAC,SAAS,CAAC;oCACb,IAAI,EAAE,cAAc,CAAC,KAAK;oCAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;iCACvB,CAAC,CAAC;gCACH,IAAI,CAAC,GAAG,EAAE,CAAC;gCACX,MAAM,KAAK,CAAC;4BACd,CAAC,CAAC,CAAC;wBACP,CAAC;wBAED,6BAA6B;wBAC7B,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,EAAE,CAAC,CAAC;wBAC5C,IAAI,CAAC,GAAG,EAAE,CAAC;wBACX,OAAO,MAAM,CAAC;oBAChB,CAAC;oBAAC,OAAO,KAAU,EAAE,CAAC;wBACpB,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;wBAC5B,IAAI,CAAC,SAAS,CAAC;4BACb,IAAI,EAAE,cAAc,CAAC,KAAK;4BAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;yBACvB,CAAC,CAAC;wBACH,IAAI,CAAC,GAAG,EAAE,CAAC;wBACX,MAAM,KAAK,CAAC;oBACd,CAAC;gBACH,CAAC,CAAC;YACJ,CAAC,CAAqC,CAAC;YACvC,OAAO,aAAa,CAAC;QACvB,CAAC;QAED,aAAa,CAAC,QAAQ,CAAC,GAAG,iBAAiB,CACzC,MAAM,EACN,OAAO,CAAC,QAAQ,CAAQ,EACxB,YAAY,CACuB,CAAC;QACtC,OAAO,aAAa,CAAC;IACvB,CAAC,EACD,EAA6B,CAC9B,CAAC;AACJ,CAAC,CAAC"}
package/dist/util.d.ts CHANGED
@@ -8,7 +8,6 @@ type PageData = {
8
8
  export declare function getAllPages({ rootDir, }: {
9
9
  rootDir: string;
10
10
  }): Promise<PageData[]>;
11
- export declare const getPageName: (path: string) => string;
12
11
  export declare function getAllApiDefinitions({ rootDir, currentUrl, }: {
13
12
  rootDir: string;
14
13
  currentUrl: string;
@@ -1 +1 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAEjD,KAAK,QAAQ,GAAG;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,wBAAsB,WAAW,CAAC,EAChC,OAAO,GACR,EAAE;IACD,OAAO,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CA2BtB;AAED,eAAO,MAAM,WAAW,GAAI,MAAM,MAAM,WAOvC,CAAC;AAEF,wBAAsB,oBAAoB,CAAC,EACzC,OAAO,EACP,UAAU,GACX,EAAE;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAkErD;AAED,wBAAsB,oBAAoB,CAAC,EACzC,OAAO,EACP,UAAU,EACV,OAAO,GACR,EAAE;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;UA5EyB,MAAM;cAAY,MAAM;eAgFjD;AAED,eAAO,MAAM,UAAU,GAAI,KAAK,GAAG,6BAqDlC,CAAC"}
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAEjD,KAAK,QAAQ,GAAG;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,wBAAsB,WAAW,CAAC,EAChC,OAAO,GACR,EAAE;IACD,OAAO,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CA2BtB;AAED,wBAAsB,oBAAoB,CAAC,EACzC,OAAO,EACP,UAAU,GACX,EAAE;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAkErD;AAED,wBAAsB,oBAAoB,CAAC,EACzC,OAAO,EACP,UAAU,EACV,OAAO,GACR,EAAE;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;UA5EyB,MAAM;cAAY,MAAM;eAgFjD;AAED,eAAO,MAAM,UAAU,GAAI,KAAK,GAAG,6BAqDlC,CAAC"}
package/dist/util.js CHANGED
@@ -22,14 +22,6 @@ export async function getAllPages({ rootDir, }) {
22
22
  return [];
23
23
  }
24
24
  }
25
- export const getPageName = (path) => {
26
- const parts = path.split("/");
27
- const pagesIndex = parts.findIndex((part) => part === "pages");
28
- if (pagesIndex !== -1 && parts[pagesIndex + 1]) {
29
- return parts[pagesIndex + 1] ?? "";
30
- }
31
- return "";
32
- };
33
25
  export async function getAllApiDefinitions({ rootDir, currentUrl, }) {
34
26
  const logger = getLogger();
35
27
  try {
package/dist/util.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@superblocksteam/vite-plugin-file-sync",
3
- "version": "2.0.6-next.88",
3
+ "version": "2.0.6-next.9",
4
4
  "type": "module",
5
5
  "engines": {
6
6
  "node": ">=20.11.0"
@@ -10,10 +10,6 @@
10
10
  "types": "./dist/index.d.ts",
11
11
  "import": "./dist/index.js"
12
12
  },
13
- "./binding-extraction": {
14
- "types": "./dist/binding-extraction/index.d.ts",
15
- "import": "./dist/binding-extraction/index.js"
16
- },
17
13
  "./sync-service": {
18
14
  "types": "./dist/sync-service/index.d.ts",
19
15
  "import": "./dist/sync-service/index.js"
@@ -41,10 +37,6 @@
41
37
  "./inject-index": {
42
38
  "types": "./dist/inject-index-vite-plugin.d.ts",
43
39
  "import": "./dist/inject-index-vite-plugin.js"
44
- },
45
- "./parsing": {
46
- "types": "./dist/parsing/index.d.ts",
47
- "import": "./dist/parsing/index.js"
48
40
  }
49
41
  },
50
42
  "files": [
@@ -62,11 +54,11 @@
62
54
  "@lezer/common": "1.2.3",
63
55
  "@lezer/python": "^1.1.15",
64
56
  "@opentelemetry/api": "^1.9.0",
65
- "@superblocksteam/ai-service-templates": "2.0.6-next.88",
66
- "@superblocksteam/library": "2.0.6-next.88",
67
- "@superblocksteam/library-shared": "2.0.6-next.88",
57
+ "@superblocksteam/ai-service-templates": "2.0.6-next.9",
58
+ "@superblocksteam/library": "2.0.6-next.9",
59
+ "@superblocksteam/library-shared": "2.0.6-next.9",
68
60
  "@superblocksteam/shared": "0.9160.0",
69
- "@superblocksteam/util": "2.0.6-next.88",
61
+ "@superblocksteam/util": "2.0.6-next.9",
70
62
  "@typescript-eslint/parser": "^8.32.1",
71
63
  "acorn": "^8.14.0",
72
64
  "ai": "^4.3.13",
@@ -83,7 +75,6 @@
83
75
  "prettier": "^3.5.3",
84
76
  "recast": "^0.23.9",
85
77
  "vite": "^6.2.3",
86
- "winston": "^3.17.0",
87
78
  "ws": "^8.18.1",
88
79
  "yaml": "^2.7.0",
89
80
  "zod": "^3.23.8"
@@ -113,7 +104,7 @@
113
104
  "tsx": "^4.19.3",
114
105
  "typescript": "^5.8.2",
115
106
  "typescript-eslint": "^8.18.0",
116
- "vitest": "^3.2.0"
107
+ "vitest": "^3.0.9"
117
108
  },
118
109
  "lint-staged": {
119
110
  "**/*": [
@@ -1,2 +0,0 @@
1
- export declare const content = "## TextStyleWithVariant\n\nThe `TextStyleWithVariant` type is used to define the text styling values. Usually a variant is chosen which comes with pre-defined styling that you can see the details of in the Theme object, but also the naming is semantic. You can override the color using the textColor property. You can use \"SB_CUSTOM_TEXT_STYLE\" as the variant type if you want to define ad hoc text style values for a given component.\n\n```typescript\ntype TextStyleWithVariant {\n variant: \"heading1\" | \"heading2\" | \"heading3\" | \"heading4\" | \"heading5\" | \"heading6\" | \"body1\" | \"body2\" | \"body3\" | \"label\" | \"inputLabel\" | \"inputPlaceholder\" | \"inputText\" | \"buttonLabel\" | \"link\" | \"code\" | \"SB_CUSTOM_TEXT_STYLE\" | string; // This could also be a variant name that's user-created if it's available in the Theme\n textColor?: {\n default: string;\n }\n // If variant is SB_CUSTOM_TEXT_STYLE, then we set the custom\n // styling using these properties\n fontFamily?: string;\n fontSize?: string; // ex: \"14px\"\n fontWeight?: number;\n lineHeight?: number | string; // ex: 1.2, \"18px\", etc.\n textDecoration?: string; // the css text-decoration values\n fontStyle?: \"normal\" | \"italic\" | \"inherit\";\n letterSpacing?: string; // ex: \"-2px\"\n textTransform?: \"uppercase\" | \"lowercase\" | \"capitalize\" | \"none\" | \"inherit\";\n}\n```\n";
2
- //# sourceMappingURL=TextStyleWithVariant.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TextStyleWithVariant.d.ts","sourceRoot":"","sources":["../../../../../src/ai-service/prompts/generated/library-typedefs/TextStyleWithVariant.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,OAAO,i4CAAi4C,CAAC"}
@@ -1,6 +0,0 @@
1
- /* eslint-disable */
2
- // Auto-generated from TextStyleWithVariant.md
3
- // Do not edit this file directly
4
- // Generated at: 2025-07-01T16:54:54.815Z
5
- export const content = "## TextStyleWithVariant\n\nThe `TextStyleWithVariant` type is used to define the text styling values. Usually a variant is chosen which comes with pre-defined styling that you can see the details of in the Theme object, but also the naming is semantic. You can override the color using the textColor property. You can use \"SB_CUSTOM_TEXT_STYLE\" as the variant type if you want to define ad hoc text style values for a given component.\n\n```typescript\ntype TextStyleWithVariant {\n variant: \"heading1\" | \"heading2\" | \"heading3\" | \"heading4\" | \"heading5\" | \"heading6\" | \"body1\" | \"body2\" | \"body3\" | \"label\" | \"inputLabel\" | \"inputPlaceholder\" | \"inputText\" | \"buttonLabel\" | \"link\" | \"code\" | \"SB_CUSTOM_TEXT_STYLE\" | string; // This could also be a variant name that's user-created if it's available in the Theme\n textColor?: {\n default: string;\n }\n // If variant is SB_CUSTOM_TEXT_STYLE, then we set the custom\n // styling using these properties\n fontFamily?: string;\n fontSize?: string; // ex: \"14px\"\n fontWeight?: number;\n lineHeight?: number | string; // ex: 1.2, \"18px\", etc.\n textDecoration?: string; // the css text-decoration values\n fontStyle?: \"normal\" | \"italic\" | \"inherit\";\n letterSpacing?: string; // ex: \"-2px\"\n textTransform?: \"uppercase\" | \"lowercase\" | \"capitalize\" | \"none\" | \"inherit\";\n}\n```\n";
6
- //# sourceMappingURL=TextStyleWithVariant.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TextStyleWithVariant.js","sourceRoot":"","sources":["../../../../../src/ai-service/prompts/generated/library-typedefs/TextStyleWithVariant.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,8CAA8C;AAC9C,iCAAiC;AACjC,yCAAyC;AAEzC,MAAM,CAAC,MAAM,OAAO,GAAG,83CAA83C,CAAC"}
@@ -1,3 +0,0 @@
1
- declare const _default: "BUILDING APPLICATION FROM MOCK RESPONSE: I'll create a comprehensive order management app with CRUD operations using the DemoOrders and DemoShipping databases.\n\n<boltArtifact id=\"order-management-app\" title=\"Order Management App\">\n<boltAction type=\"file\" filePath=\"routes.json\">\n{\n \"/\": {\n \"file\": \"Page1/index.tsx\"\n }\n}\n</boltAction>\n\n<boltAction type=\"file\" filePath=\"pages/Page1/scope.ts\">\nimport {\n createSbScope,\n SbApi,\n SbVariable,\n SbVariablePersistence,\n sbComputed,\n} from \"@superblocksteam/library\";\n\nexport const Page1Scope = createSbScope<{\n OrdersTable: any;\n ProductFilterInput: any;\n CreateOrderModal: any;\n EditOrderModal: any;\n OrderDetailsModal: any;\n CreateOrderButton: any;\n NewOrderProductInput: any;\n NewOrderUserEmailInput: any;\n NewOrderPriceInput: any;\n NewOrderImageInput: any;\n EditOrderProductInput: any;\n EditOrderUserEmailInput: any;\n EditOrderPriceInput: any;\n EditOrderImageInput: any;\n}>(\n ({\n entities: {\n OrdersTable,\n ProductFilterInput,\n getMetricsApi,\n getOrdersApi,\n getOrderDetailsApi,\n getShippingInfoApi,\n createOrderApi,\n updateOrderApi,\n deleteOrderApi,\n NewOrderProductInput,\n NewOrderUserEmailInput,\n NewOrderPriceInput,\n NewOrderImageInput,\n EditOrderProductInput,\n EditOrderUserEmailInput,\n EditOrderPriceInput,\n EditOrderImageInput,\n },\n }) => ({\n getMetricsApi: SbApi({}),\n getOrdersApi: SbApi({}),\n getOrderDetailsApi: SbApi({}),\n getShippingInfoApi: SbApi({}),\n createOrderApi: SbApi({}),\n updateOrderApi: SbApi({}),\n deleteOrderApi: SbApi({}),\n \n filteredOrdersVar: SbVariable({\n defaultValue: sbComputed(() => {\n const orders = getOrdersApi.response || [];\n const filterText = ProductFilterInput.value?.toLowerCase() || '';\n \n if (!filterText) return orders;\n \n return orders.filter((order: any) =>\n order.product?.toLowerCase().includes(filterText)\n );\n }),\n persistence: SbVariablePersistence.TEMPORARY,\n }),\n }),\n {\n name: \"Page1\",\n }\n);\n\nexport const Page1 = Page1Scope.entities;\n</boltAction>\n\n<boltAction type=\"file\" filePath=\"pages/Page1/index.tsx\">\nimport {\n SbPage,\n Dim,\n SbSection,\n SbColumn,\n registerPage,\n SbTable,\n sbComputed,\n SbContainer,\n SbInput,\n SbButton,\n SbEventFlow,\n SbModal,\n SbText,\n Theme,\n} from \"@superblocksteam/library\";\nimport MetricCard from \"components/MetricCard/MetricCard\";\nimport AppHeader from \"components/AppHeader/AppHeader\";\nimport KeyValue from \"components/KeyValue\";\nimport { Page1, Page1Scope } from \"./scope\";\n\nfunction Page() {\n const {\n OrdersTable,\n ProductFilterInput,\n CreateOrderModal,\n EditOrderModal,\n CreateOrderButton,\n OrderDetailsModal,\n NewOrderProductInput,\n NewOrderUserEmailInput,\n NewOrderPriceInput,\n NewOrderImageInput,\n EditOrderProductInput,\n EditOrderUserEmailInput,\n EditOrderPriceInput,\n EditOrderImageInput,\n getMetricsApi,\n getOrdersApi,\n getOrderDetailsApi,\n getShippingInfoApi,\n createOrderApi,\n updateOrderApi,\n deleteOrderApi,\n filteredOrdersVar,\n } = Page1;\n\n return (\n <SbPage\n name=\"Page1\"\n height={Dim.fill()}\n width={Dim.fill()}\n onLoad={SbEventFlow.runApis([getMetricsApi, getOrdersApi])}\n >\n <SbSection height={Dim.fill()}>\n <SbColumn width={Dim.fill()} spacing={Dim.px(0)}>\n <AppHeader\n title=\"Order Management\"\n avatarUrl=\"https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?w=40&h=40&fit=crop&crop=face\"\n userEmail=\"admin@company.com\"\n height={Dim.fit()}\n />\n \n <SbContainer\n layout=\"vertical\"\n spacing={Dim.px(24)}\n padding={{\n top: Dim.px(24),\n bottom: Dim.px(24),\n left: Dim.px(24),\n right: Dim.px(24),\n }}\n height={Dim.fill()}\n >\n {/* Metrics Cards */}\n <SbContainer layout=\"horizontal\" spacing={Dim.px(16)}>\n <MetricCard\n title=\"Total Orders\"\n value={sbComputed(() => getMetricsApi.response?.totalOrders?.toString() || \"0\")}\n icon=\"receipt_long\"\n width={Dim.fill()}\n />\n <MetricCard\n title=\"Total Revenue\"\n value={sbComputed(() => `$${getMetricsApi.response?.totalRevenue?.toLocaleString() || \"0\"}`)}\n icon=\"attach_money\"\n width={Dim.fill()}\n />\n <MetricCard\n title=\"Orders This Month\"\n value={sbComputed(() => getMetricsApi.response?.ordersThisMonth?.toString() || \"0\")}\n icon=\"calendar_today\"\n width={Dim.fill()}\n />\n <MetricCard\n title=\"Active Shipments\"\n value={sbComputed(() => getMetricsApi.response?.activeShipments?.toString() || \"0\")}\n icon=\"local_shipping\"\n width={Dim.fill()}\n />\n </SbContainer>\n\n {/* Orders Section */}\n <SbContainer layout=\"vertical\" spacing={Dim.px(16)} variant=\"card\">\n <SbContainer layout=\"horizontal\" spacing={Dim.px(12)} verticalAlign=\"bottom\">\n <SbInput\n bind={ProductFilterInput}\n label=\"Filter by Product\"\n placeholder=\"Search products...\"\n width={Dim.px(300)}\n />\n <SbButton\n bind={CreateOrderButton}\n label=\"Create Order\"\n variant=\"primary\"\n icon=\"add\"\n onClick={SbEventFlow.controlModal(CreateOrderModal, \"open\")}\n />\n </SbContainer>\n\n <SbTable\n bind={OrdersTable}\n tableData={sbComputed(() => filteredOrdersVar.value)}\n columns={{\n id: {\n label: \"Order ID\",\n columnType: \"text\",\n },\n product: {\n label: \"Product\",\n columnType: \"text\",\n },\n user_email: {\n label: \"Customer Email\",\n columnType: \"email\",\n },\n date_purchased: {\n label: \"Date Purchased\",\n columnType: \"date\",\n inputFormat: \"YYYY-MM-DD\",\n outputFormat: \"MM/DD/YYYY\",\n },\n price: {\n label: \"Price\",\n columnType: \"currency\",\n currency: \"USD\",\n },\n actions: {\n label: \"Actions\",\n columnType: \"button\",\n buttonLabel: \"View Details\",\n onClick: SbEventFlow.runJS(() => {\n getOrderDetailsApi.run();\n getShippingInfoApi.run();\n }).controlModal(OrderDetailsModal, \"open\"),\n },\n }}\n onRowClick={SbEventFlow.runJS(() => {\n EditOrderProductInput.text = OrdersTable.selectedRow?.product || \"\";\n EditOrderUserEmailInput.text = OrdersTable.selectedRow?.user_email || \"\";\n EditOrderPriceInput.text = OrdersTable.selectedRow?.price?.toString() || \"\";\n EditOrderImageInput.text = OrdersTable.selectedRow?.image || \"\";\n }).controlModal(EditOrderModal, \"open\")}\n height={Dim.px(400)}\n />\n </SbContainer>\n </SbContainer>\n </SbColumn>\n </SbSection>\n\n {/* Create Order Modal */}\n <SbModal bind={CreateOrderModal}>\n <SbContainer layout=\"vertical\" spacing={Dim.px(24)} width={Dim.fill()}>\n <SbText text=\"Create New Order\" textStyle={{ variant: \"heading3\" }} />\n \n <SbContainer layout=\"vertical\" spacing={Dim.px(16)} width={Dim.fill()}>\n <SbInput\n bind={NewOrderProductInput}\n label=\"Product Name\"\n placeholder=\"Enter product name\"\n width={Dim.fill()}\n isRequired={true}\n />\n <SbInput\n bind={NewOrderUserEmailInput}\n label=\"Customer Email\"\n placeholder=\"Enter customer email\"\n inputType=\"EMAIL\"\n width={Dim.fill()}\n isRequired={true}\n />\n <SbInput\n bind={NewOrderPriceInput}\n label=\"Price\"\n placeholder=\"Enter price\"\n inputType=\"NUMBER\"\n width={Dim.fill()}\n isRequired={true}\n />\n <SbInput\n bind={NewOrderImageInput}\n label=\"Product Image URL\"\n placeholder=\"Enter image URL (optional)\"\n width={Dim.fill()}\n />\n </SbContainer>\n\n <SbContainer layout=\"horizontal\" spacing={Dim.px(12)} horizontalAlign=\"right\" width={Dim.fill()}>\n <SbButton\n label=\"Cancel\"\n variant=\"secondary\"\n onClick={SbEventFlow.runJS(() => {\n NewOrderProductInput.text = \"\";\n NewOrderUserEmailInput.text = \"\";\n NewOrderPriceInput.text = \"\";\n NewOrderImageInput.text = \"\";\n }).controlModal(CreateOrderModal, \"close\")}\n />\n <SbButton\n label=\"Create Order\"\n variant=\"primary\"\n onClick={SbEventFlow.runApis([createOrderApi])\n .runApis([getMetricsApi, getOrdersApi])\n .runJS(() => {\n NewOrderProductInput.text = \"\";\n NewOrderUserEmailInput.text = \"\";\n NewOrderPriceInput.text = \"\";\n NewOrderImageInput.text = \"\";\n })\n .controlModal(CreateOrderModal, \"close\")}\n />\n </SbContainer>\n </SbContainer>\n </SbModal>\n\n {/* Edit Order Modal */}\n <SbModal bind={EditOrderModal}>\n <SbContainer layout=\"vertical\" spacing={Dim.px(24)} width={Dim.fill()}>\n <SbContainer layout=\"horizontal\" spacing={Dim.px(12)} horizontalAlign=\"space-between\" width={Dim.fill()}>\n <SbText \n width={Dim.fit()}\n text={sbComputed(() => `Edit Order #${OrdersTable.selectedRow?.id || \"\"}`)} \n textStyle={{ variant: \"heading3\" }} \n />\n </SbContainer>\n \n <SbContainer layout=\"vertical\" spacing={Dim.px(16)} width={Dim.fill()}>\n <SbInput\n bind={EditOrderProductInput}\n label=\"Product Name\"\n width={Dim.fill()}\n isRequired={true}\n />\n <SbInput\n bind={EditOrderUserEmailInput}\n label=\"Customer Email\"\n inputType=\"EMAIL\"\n width={Dim.fill()}\n isRequired={true}\n />\n <SbInput\n bind={EditOrderPriceInput}\n label=\"Price\"\n inputType=\"NUMBER\"\n width={Dim.fill()}\n isRequired={true}\n />\n <SbInput\n bind={EditOrderImageInput}\n label=\"Product Image URL\"\n width={Dim.fill()}\n />\n </SbContainer>\n\n <SbContainer layout=\"horizontal\" spacing={Dim.px(12)} horizontalAlign=\"right\" width={Dim.fill()}>\n <SbButton\n label=\"Cancel\"\n variant=\"secondary\"\n onClick={SbEventFlow.controlModal(EditOrderModal, \"close\")}\n />\n <SbButton\n label=\"Update Order\"\n variant=\"primary\"\n onClick={SbEventFlow.runApis([updateOrderApi])\n .runApis([getMetricsApi, getOrdersApi])\n .controlModal(EditOrderModal, \"close\")}\n />\n </SbContainer>\n </SbContainer>\n </SbModal>\n\n {/* Order Details Modal */}\n <SbModal bind={OrderDetailsModal}>\n <SbContainer layout=\"vertical\" spacing={Dim.px(24)} width={Dim.fill()}>\n <SbText \n text={sbComputed(() => `Order Details #${OrdersTable.selectedRow?.id || \"\"}`)} \n textStyle={{ variant: \"heading3\" }} \n />\n \n <SbContainer layout=\"horizontal\" spacing={Dim.px(24)} width={Dim.fill()}>\n <SbContainer layout=\"vertical\" spacing={Dim.px(16)} width={Dim.fill()}>\n <KeyValue\n label=\"Order Information\"\n data={sbComputed(() => getOrderDetailsApi.response || {})}\n />\n </SbContainer>\n \n <SbContainer layout=\"vertical\" spacing={Dim.px(16)} width={Dim.fill()}>\n <KeyValue\n label=\"Shipping Information\"\n data={sbComputed(() => getShippingInfoApi.response || {})}\n />\n </SbContainer>\n </SbContainer>\n\n <SbContainer layout=\"horizontal\" spacing={Dim.px(12)} horizontalAlign=\"right\" width={Dim.fill()}>\n <SbButton\n label=\"Close\"\n variant=\"secondary\"\n onClick={SbEventFlow.controlModal(OrderDetailsModal, \"close\")}\n />\n </SbContainer>\n </SbContainer>\n </SbModal>\n </SbPage>\n );\n}\n\nexport default registerPage(Page, Page1Scope);\n</boltAction>\n\n<boltAction type=\"file\" filePath=\"pages/Page1/apis/getMetricsApi.ts\">\nimport {\n Api,\n JavaScript,\n Python,\n Databricks,\n Snowflake,\n PostgreSQL,\n RestApi,\n Email,\n Conditional,\n TryCatch,\n Variables,\n Loop,\n Parallel,\n Throw,\n Return,\n} from \"@superblocksteam/library\";\n\nexport default new Api(\"getMetricsApi\", [\n new JavaScript(\"getMetrics\", {\n fn: () => {\n return {\n totalOrders: 45,\n totalRevenue: 12489.50,\n ordersThisMonth: 8,\n activeShipments: 12,\n };\n },\n }),\n]);\n</boltAction>\n\n<boltAction type=\"file\" filePath=\"pages/Page1/apis/getOrdersApi.ts\">\nimport {\n Api,\n JavaScript,\n Python,\n Databricks,\n Snowflake,\n PostgreSQL,\n RestApi,\n Email,\n Conditional,\n TryCatch,\n Variables,\n Loop,\n Parallel,\n Throw,\n Return,\n} from \"@superblocksteam/library\";\n\nexport default new Api(\"getOrdersApi\", [\n new JavaScript(\"getOrders\", {\n fn: () => {\n return [\n {\n id: 1,\n product: \"Wireless Headphones\",\n user_email: \"john.doe@example.com\",\n date_purchased: \"2024-01-15\",\n price: 199.99,\n image: \"https://images.unsplash.com/photo-1505740420928-5e560c06d30e?w=200&h=200&fit=crop\",\n },\n {\n id: 2,\n product: \"Smart Watch\",\n user_email: \"jane.smith@example.com\",\n date_purchased: \"2024-01-14\",\n price: 299.99,\n image: \"https://images.unsplash.com/photo-1523275335684-37898b6baf30?w=200&h=200&fit=crop\",\n },\n {\n id: 3,\n product: \"Laptop Stand\",\n user_email: \"mike.johnson@example.com\",\n date_purchased: \"2024-01-13\",\n price: 49.99,\n image: \"https://images.unsplash.com/photo-1527864550417-7fd91fc51a46?w=200&h=200&fit=crop\",\n },\n {\n id: 4,\n product: \"Bluetooth Speaker\",\n user_email: \"sarah.wilson@example.com\",\n date_purchased: \"2024-01-12\",\n price: 79.99,\n image: \"https://images.unsplash.com/photo-1608043152269-423dbba4e7e1?w=200&h=200&fit=crop\",\n },\n {\n id: 5,\n product: \"Gaming Mouse\",\n user_email: \"alex.brown@example.com\",\n date_purchased: \"2024-01-11\",\n price: 89.99,\n image: \"https://images.unsplash.com/photo-1527814050087-3793815479db?w=200&h=200&fit=crop\",\n },\n {\n id: 6,\n product: \"USB-C Hub\",\n user_email: \"emily.davis@example.com\",\n date_purchased: \"2024-01-10\",\n price: 39.99,\n image: \"https://images.unsplash.com/photo-1558618047-3c8c76ca7d13?w=200&h=200&fit=crop\",\n },\n {\n id: 7,\n product: \"Phone Case\",\n user_email: \"david.miller@example.com\",\n date_purchased: \"2024-01-09\",\n price: 24.99,\n image: \"https://images.unsplash.com/photo-1601944177325-f8867652837f?w=200&h=200&fit=crop\",\n },\n {\n id: 8,\n product: \"Tablet Stand\",\n user_email: \"lisa.garcia@example.com\",\n date_purchased: \"2024-01-08\",\n price: 34.99,\n image: \"https://images.unsplash.com/photo-1544244015-0df4b3ffc6b0?w=200&h=200&fit=crop\",\n },\n ];\n },\n }),\n]);\n</boltAction>\n\n<boltAction type=\"file\" filePath=\"pages/Page1/apis/getOrderDetailsApi.ts\">\nimport {\n Api,\n JavaScript,\n Python,\n Databricks,\n Snowflake,\n PostgreSQL,\n RestApi,\n Email,\n Conditional,\n TryCatch,\n Variables,\n Loop,\n Parallel,\n Throw,\n Return,\n} from \"@superblocksteam/library\";\n\nexport default new Api(\"getOrderDetailsApi\", [\n new JavaScript(\"getOrderDetails\", {\n fn: ({ OrdersTable }) => {\n const order = OrdersTable.selectedRow;\n if (!order) return {};\n \n // Generate a user_id if not present (for display purposes)\n const userId = order.user_id || Math.floor(Math.random() * 10000) + 1000;\n \n return {\n \"Order ID\": order.id,\n \"Product\": order.product,\n \"Customer Email\": order.user_email,\n \"User ID\": userId,\n \"Date Purchased\": order.date_purchased,\n \"Price\": `$${order.price}`,\n \"Image URL\": order.image || \"N/A\",\n };\n },\n }),\n]);\n</boltAction>\n\n<boltAction type=\"file\" filePath=\"pages/Page1/apis/getShippingInfoApi.ts\">\nimport {\n Api,\n JavaScript,\n Python,\n Databricks,\n Snowflake,\n PostgreSQL,\n RestApi,\n Email,\n Conditional,\n TryCatch,\n Variables,\n Loop,\n Parallel,\n Throw,\n Return,\n} from \"@superblocksteam/library\";\n\nexport default new Api(\"getShippingInfoApi\", [\n new JavaScript(\"getShippingInfo\", {\n fn: ({ OrdersTable }) => {\n const order = OrdersTable.selectedRow;\n if (!order) return { \"Shipping Status\": \"No shipping info\" };\n \n const orderId = order.id;\n \n // Generate shipping data based on order ID patterns\n const shippingStatuses = [\"Processing\", \"In Transit\", \"Delivered\", \"Out for Delivery\"];\n const locations = [\"Los Angeles, CA\", \"Phoenix, AZ\", \"Denver, CO\", \"Chicago, IL\", \"Miami, FL\"];\n const activities = [\"Order received\", \"Package shipped\", \"In transit\", \"Out for delivery\", \"Delivered\"];\n \n const statusIndex = orderId % shippingStatuses.length;\n const status = shippingStatuses[statusIndex];\n \n // Generate 2-3 shipping activities\n const numActivities = 2 + (orderId % 2);\n const history = [];\n \n for (let i = 0; i < numActivities; i++) {\n const date = new Date();\n date.setDate(date.getDate() - (numActivities - i));\n const timestamp = date.toISOString().replace('T', ' ').substring(0, 19);\n \n history.push({\n TIMESTAMP: timestamp,\n ACTIVITY: activities[i % activities.length],\n LOCATION: locations[i % locations.length],\n });\n }\n \n const result = {\n \"Shipping Status\": status,\n };\n \n history.forEach((item, index) => {\n result[`Activity ${index + 1}`] = `${item.ACTIVITY} - ${item.LOCATION} (${item.TIMESTAMP})`;\n });\n \n return result;\n },\n }),\n]);\n</boltAction>\n\n<boltAction type=\"file\" filePath=\"pages/Page1/apis/createOrderApi.ts\">\nimport {\n Api,\n JavaScript,\n Python,\n Databricks,\n Snowflake,\n PostgreSQL,\n RestApi,\n Email,\n Conditional,\n TryCatch,\n Variables,\n Loop,\n Parallel,\n Throw,\n Return,\n} from \"@superblocksteam/library\";\n\nexport default new Api(\"createOrderApi\", [\n new Conditional(\"validateInputs\", {\n if: {\n when: ({ NewOrderProductInput, NewOrderUserEmailInput, NewOrderPriceInput }) =>\n !NewOrderProductInput.value || \n !NewOrderUserEmailInput.value || \n !NewOrderPriceInput.value,\n then: [\n new Throw(\"validation_error\", {\n error: \"Product name, customer email, and price are required\",\n }),\n ],\n },\n }),\n \n new JavaScript(\"createOrder\", {\n fn: ({ NewOrderProductInput, NewOrderUserEmailInput, NewOrderPriceInput, NewOrderImageInput }) => {\n // Generate a new order ID and user ID\n const orderId = Math.floor(Math.random() * 1000) + 100;\n const userId = Math.floor(Math.random() * 10000) + 1;\n const currentDate = new Date().toISOString().split('T')[0];\n \n // Simulate order creation\n console.log(\"Creating order:\", {\n id: orderId,\n user_id: userId,\n product: NewOrderProductInput.value,\n user_email: NewOrderUserEmailInput.value,\n price: NewOrderPriceInput.value,\n date_purchased: currentDate,\n image: NewOrderImageInput.value || \"\",\n });\n \n return {\n success: true,\n message: \"Order created successfully\",\n orderId: orderId,\n };\n },\n }),\n]);\n</boltAction>\n\n<boltAction type=\"file\" filePath=\"pages/Page1/apis/updateOrderApi.ts\">\nimport {\n Api,\n JavaScript,\n Python,\n Databricks,\n Snowflake,\n PostgreSQL,\n RestApi,\n Email,\n Conditional,\n TryCatch,\n Variables,\n Loop,\n Parallel,\n Throw,\n Return,\n} from \"@superblocksteam/library\";\n\nexport default new Api(\"updateOrderApi\", [\n new Conditional(\"validateInputs\", {\n if: {\n when: ({ EditOrderProductInput, EditOrderUserEmailInput, EditOrderPriceInput }) =>\n !EditOrderProductInput.value || \n !EditOrderUserEmailInput.value || \n !EditOrderPriceInput.value,\n then: [\n new Throw(\"validation_error\", {\n error: \"Product name, customer email, and price are required\",\n }),\n ],\n },\n }),\n \n new JavaScript(\"updateOrder\", {\n fn: ({ OrdersTable, EditOrderProductInput, EditOrderUserEmailInput, EditOrderPriceInput, EditOrderImageInput }) => {\n const orderId = OrdersTable.selectedRow?.id;\n if (!orderId) {\n throw new Error(\"No order selected for update\");\n }\n \n // Simulate order update\n console.log(\"Updating order:\", {\n id: orderId,\n product: EditOrderProductInput.value,\n user_email: EditOrderUserEmailInput.value,\n price: EditOrderPriceInput.value,\n image: EditOrderImageInput.value || \"\",\n });\n \n return {\n success: true,\n message: \"Order updated successfully\",\n orderId: orderId,\n };\n },\n }),\n]);\n</boltAction>\n\n<boltAction type=\"file\" filePath=\"pages/Page1/apis/deleteOrderApi.ts\">\nimport {\n Api,\n JavaScript,\n Python,\n Databricks,\n Snowflake,\n PostgreSQL,\n RestApi,\n Email,\n Conditional,\n TryCatch,\n Variables,\n Loop,\n Parallel,\n Throw,\n Return,\n} from \"@superblocksteam/library\";\n\nexport default new Api(\"deleteOrderApi\", [\n new JavaScript(\"deleteOrder\", {\n fn: ({ OrdersTable }) => {\n const orderId = OrdersTable.selectedRow?.id;\n if (!orderId) {\n throw new Error(\"No order selected for deletion\");\n }\n \n // Simulate order deletion\n console.log(\"Deleting order:\", {\n id: orderId,\n product: OrdersTable.selectedRow?.product,\n user_email: OrdersTable.selectedRow?.user_email,\n });\n \n return {\n success: true,\n message: \"Order deleted successfully\",\n deletedOrderId: orderId,\n };\n },\n }),\n]);\n</boltAction>\n</boltArtifact>\n\nThe order management app is now complete with all the requested features:\n\n## **Key Features:**\n\n### **Metrics Dashboard**\n- **Total Orders**: Count of all records from DemoOrders\n- **Total Revenue**: Sum of price field from DemoOrders \n- **Orders This Month**: Count of orders from current month\n- **Active Shipments**: Count of records in DemoShipping SHIPPING_STATUS table\n\n### **Orders Management**\n- **Orders Table**: Displays all orders with id, product, user_email, date_purchased, price\n- **Product Filter**: Real-time text filtering on product names\n- **CRUD Operations**:\n - **Create**: Add new orders with product, email, price, and optional image\n - **Update**: Edit existing orders (click row to edit)\n - **Delete**: Remove orders (delete button in edit modal)\n - **View Details**: See full order info plus shipping status (click \"View Details\" button)\n\n### **Shipping Integration**\n- **Order Details Modal**: Shows order information plus shipping status and recent activity from DemoShipping tables\n- **Real-time Data**: Fetches shipping status and history by ORDER_ID\n\n### **User Experience**\n- Clean, professional interface with metric cards\n- Intuitive modals for all CRUD operations\n- Real-time filtering and data updates\n- Proper validation and error handling\n- Responsive design with consistent spacing\n\nThe app automatically loads metrics and orders data on page load, and all operations refresh the data to keep everything in sync.";
2
- export default _default;
3
- //# sourceMappingURL=orders-app.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"orders-app.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/test-utils/app-generation-mocks/orders-app.ts"],"names":[],"mappings":";AAAA,wBAi1BmI"}