wexts 2.0.7 → 2.0.8

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 (110) hide show
  1. package/dist/chunk-63MTCWU2.mjs +361 -0
  2. package/dist/chunk-63MTCWU2.mjs.map +1 -0
  3. package/dist/chunk-67IJ6H4J.mjs +44 -0
  4. package/dist/chunk-67IJ6H4J.mjs.map +1 -0
  5. package/dist/chunk-7NSRDJ5C.mjs +1 -0
  6. package/dist/chunk-7NSRDJ5C.mjs.map +1 -0
  7. package/dist/chunk-ASDXAK6G.js +44 -0
  8. package/dist/chunk-ASDXAK6G.js.map +1 -0
  9. package/dist/chunk-CKZ4VSCB.mjs +18 -0
  10. package/dist/chunk-CKZ4VSCB.mjs.map +1 -0
  11. package/dist/chunk-DW6GOKMF.js +57 -0
  12. package/dist/chunk-DW6GOKMF.js.map +1 -0
  13. package/dist/chunk-GKVPGKAH.js +66 -0
  14. package/dist/chunk-GKVPGKAH.js.map +1 -0
  15. package/dist/chunk-HSFLZUJN.mjs +57 -0
  16. package/dist/chunk-HSFLZUJN.mjs.map +1 -0
  17. package/dist/chunk-HU63F22V.js +361 -0
  18. package/dist/chunk-HU63F22V.js.map +1 -0
  19. package/dist/chunk-JMBD6DOP.js +225 -0
  20. package/dist/chunk-JMBD6DOP.js.map +1 -0
  21. package/dist/chunk-K7EIJSYQ.js +1 -0
  22. package/dist/chunk-K7EIJSYQ.js.map +1 -0
  23. package/dist/chunk-OTBYRUBE.mjs +225 -0
  24. package/dist/chunk-OTBYRUBE.mjs.map +1 -0
  25. package/dist/chunk-WMHVXEYQ.mjs +66 -0
  26. package/dist/chunk-WMHVXEYQ.mjs.map +1 -0
  27. package/dist/cli/index.js +146 -25
  28. package/dist/cli/index.js.map +1 -1
  29. package/dist/cli/index.mjs +130 -7
  30. package/dist/cli/index.mjs.map +1 -1
  31. package/dist/client/index.js +2 -2
  32. package/dist/client/index.mjs +2 -2
  33. package/dist/codegen/index.d.mts +1 -0
  34. package/dist/codegen/index.d.ts +1 -0
  35. package/dist/codegen/index.js +13 -0
  36. package/dist/codegen/index.js.map +1 -0
  37. package/dist/codegen/index.mjs +13 -0
  38. package/dist/codegen/index.mjs.map +1 -0
  39. package/dist/dev-server/index.d.mts +1 -0
  40. package/dist/dev-server/index.d.ts +1 -0
  41. package/dist/dev-server/index.js +13 -0
  42. package/dist/dev-server/index.js.map +1 -0
  43. package/dist/dev-server/index.mjs +13 -0
  44. package/dist/dev-server/index.mjs.map +1 -0
  45. package/dist/index-SjUaHgFr.d.mts +75 -0
  46. package/dist/index-SjUaHgFr.d.ts +75 -0
  47. package/dist/index-tFGPFVfQ.d.mts +67 -0
  48. package/dist/index-tFGPFVfQ.d.ts +67 -0
  49. package/dist/index.d.mts +83 -164
  50. package/dist/index.d.ts +83 -164
  51. package/dist/index.js +89 -22
  52. package/dist/index.js.map +1 -1
  53. package/dist/index.mjs +76 -9
  54. package/dist/index.mjs.map +1 -1
  55. package/dist/nest/index.js +2 -2
  56. package/dist/nest/index.mjs +2 -2
  57. package/dist/next/index.d.mts +61 -3
  58. package/dist/next/index.d.ts +61 -3
  59. package/dist/next/index.js +140 -7
  60. package/dist/next/index.js.map +1 -1
  61. package/dist/next/index.mjs +102 -7
  62. package/dist/next/index.mjs.map +1 -1
  63. package/dist/types/index.js +1 -1
  64. package/dist/types/index.mjs +2 -1
  65. package/package.json +1 -1
  66. package/templates/nestjs-api/package-lock.json +5623 -0
  67. package/templates/nestjs-api/package.json +21 -19
  68. package/templates/nestjs-api/prisma/migrations/20251123205437_init/migration.sql +24 -0
  69. package/templates/nestjs-api/prisma/migrations/migration_lock.toml +3 -0
  70. package/templates/nestjs-api/src/auth/auth.controller.ts +5 -5
  71. package/templates/nestjs-api/src/main.ts +1 -1
  72. package/templates/nestjs-api/src/todos/todos.controller.ts +7 -7
  73. package/templates/nestjs-api/src/users/users.controller.ts +3 -3
  74. package/templates/nestjs-api/tsconfig.json +20 -1
  75. package/templates/nextjs-web/app/actions/auth.ts +79 -0
  76. package/templates/nextjs-web/app/dashboard/error.tsx +39 -0
  77. package/templates/nextjs-web/app/dashboard/loading.tsx +14 -0
  78. package/templates/nextjs-web/app/dashboard/page.tsx +2 -172
  79. package/templates/nextjs-web/app/globals.css +80 -15
  80. package/templates/nextjs-web/app/layout.tsx +7 -5
  81. package/templates/nextjs-web/app/login/page.tsx +2 -104
  82. package/templates/nextjs-web/app/page.tsx +1 -1
  83. package/templates/nextjs-web/app/register/page.tsx +2 -127
  84. package/templates/nextjs-web/components/ui/button.tsx +56 -0
  85. package/templates/nextjs-web/components/ui/card.tsx +79 -0
  86. package/templates/nextjs-web/components/ui/input.tsx +25 -0
  87. package/templates/nextjs-web/components/ui/label.tsx +24 -0
  88. package/templates/nextjs-web/features/auth/LoginForm.tsx +140 -0
  89. package/templates/nextjs-web/features/auth/RegisterForm.tsx +159 -0
  90. package/templates/nextjs-web/features/auth/api.ts +35 -0
  91. package/templates/nextjs-web/features/auth/index.ts +3 -0
  92. package/templates/nextjs-web/features/dashboard/DashboardView.tsx +204 -0
  93. package/templates/nextjs-web/features/dashboard/api.ts +9 -0
  94. package/templates/nextjs-web/features/dashboard/components.tsx +74 -0
  95. package/templates/nextjs-web/features/dashboard/index.ts +3 -0
  96. package/templates/nextjs-web/hooks/index.ts +4 -0
  97. package/templates/nextjs-web/lib/api-client.ts +89 -0
  98. package/templates/nextjs-web/lib/axios-global-config.ts +17 -0
  99. package/templates/nextjs-web/lib/utils.ts +6 -0
  100. package/templates/nextjs-web/lib/wexts-client.ts +4 -0
  101. package/templates/nextjs-web/next-env.d.ts +6 -0
  102. package/templates/nextjs-web/next.config.ts +20 -0
  103. package/templates/nextjs-web/package-lock.json +3254 -0
  104. package/templates/nextjs-web/package.json +23 -14
  105. package/templates/nextjs-web/postcss.config.js +6 -0
  106. package/templates/nextjs-web/tailwind.config.ts +55 -1
  107. package/templates/nextjs-web/tsconfig.json +41 -39
  108. package/templates/nestjs-api/.env.example +0 -4
  109. package/templates/nextjs-web/next.config.mjs +0 -4
  110. /package/templates/nextjs-web/{.env.local.example → .env} +0 -0
package/dist/index.js CHANGED
@@ -1,25 +1,24 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } var _class;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var _class;
2
2
 
3
- var _chunkNU2UB242js = require('./chunk-NU2UB242.js');
4
- require('./chunk-MTHKZO55.js');
3
+ var _chunkASDXAK6Gjs = require('./chunk-ASDXAK6G.js');
5
4
 
6
5
 
7
- var _chunkW3YRVEFQjs = require('./chunk-W3YRVEFQ.js');
8
- require('./chunk-2MCBBWEA.js');
6
+ var _chunkGKVPGKAHjs = require('./chunk-GKVPGKAH.js');
7
+ require('./chunk-K7EIJSYQ.js');
9
8
 
10
9
 
11
10
 
12
11
 
13
- var _chunkFYGXL4V7js = require('./chunk-FYGXL4V7.js');
12
+ var _chunkHU63F22Vjs = require('./chunk-HU63F22V.js');
14
13
 
15
14
 
16
- var _chunkGWP6PNSPjs = require('./chunk-GWP6PNSP.js');
15
+ var _chunkJMBD6DOPjs = require('./chunk-JMBD6DOP.js');
17
16
 
18
17
 
19
18
 
20
19
 
21
20
 
22
- var _chunkQP2TMRLGjs = require('./chunk-QP2TMRLG.js');
21
+ var _chunkDW6GOKMFjs = require('./chunk-DW6GOKMF.js');
23
22
 
24
23
 
25
24
  var _chunkPZ5AY32Cjs = require('./chunk-PZ5AY32C.js');
@@ -30,17 +29,17 @@ _chunkPZ5AY32Cjs.__export.call(void 0, core_exports, {
30
29
  APIError: () => APIError,
31
30
  ConfigError: () => ConfigError,
32
31
  ConfigLoader: () => ConfigLoader,
33
- FileSystem: () => _chunkFYGXL4V7js.FileSystem,
32
+ FileSystem: () => _chunkHU63F22Vjs.FileSystem,
34
33
  FusionError: () => FusionError,
35
- LogLevel: () => _chunkQP2TMRLGjs.LogLevel,
36
- Logger: () => _chunkQP2TMRLGjs.Logger,
34
+ LogLevel: () => _chunkDW6GOKMFjs.LogLevel,
35
+ Logger: () => _chunkDW6GOKMFjs.Logger,
37
36
  ProcessManager: () => ProcessManager,
38
37
  ValidationError: () => ValidationError,
39
38
  config: () => config,
40
- createLogger: () => _chunkQP2TMRLGjs.createLogger,
41
- filesystem: () => _chunkFYGXL4V7js.filesystem,
39
+ createLogger: () => _chunkDW6GOKMFjs.createLogger,
40
+ filesystem: () => _chunkHU63F22Vjs.filesystem,
42
41
  load: () => load,
43
- logger: () => _chunkQP2TMRLGjs.logger
42
+ logger: () => _chunkDW6GOKMFjs.logger
44
43
  });
45
44
 
46
45
  // src/core/config.ts
@@ -205,7 +204,7 @@ var ProjectScaffolder = class {
205
204
  async scaffold(options) {
206
205
  const { projectName, template } = options;
207
206
  const projectPath = _path.join.call(void 0, process.cwd(), projectName);
208
- _chunkQP2TMRLGjs.logger.info(`Creating project at: ${projectPath}`);
207
+ _chunkDW6GOKMFjs.logger.info(`Creating project at: ${projectPath}`);
209
208
  await _promises.mkdir.call(void 0, projectPath, { recursive: true });
210
209
  if (template === "monorepo") {
211
210
  await this.createMonorepo(projectPath, projectName);
@@ -214,11 +213,11 @@ var ProjectScaffolder = class {
214
213
  } else if (template === "web") {
215
214
  await this.createNextJSApp(projectPath, projectName);
216
215
  }
217
- _chunkQP2TMRLGjs.logger.success(`Project ${projectName} created successfully!`);
218
- _chunkQP2TMRLGjs.logger.info(`
216
+ _chunkDW6GOKMFjs.logger.success(`Project ${projectName} created successfully!`);
217
+ _chunkDW6GOKMFjs.logger.info(`
219
218
  Next steps:`);
220
- _chunkQP2TMRLGjs.logger.info(` cd ${projectName}`);
221
- _chunkQP2TMRLGjs.logger.info(` fusion dev`);
219
+ _chunkDW6GOKMFjs.logger.info(` cd ${projectName}`);
220
+ _chunkDW6GOKMFjs.logger.info(` fusion dev`);
222
221
  }
223
222
  async createMonorepo(projectPath, projectName) {
224
223
  await _promises.mkdir.call(void 0, _path.join.call(void 0, projectPath, "apps", "api"), { recursive: true });
@@ -255,13 +254,81 @@ fusion dev
255
254
  await _promises.writeFile.call(void 0, _path.join.call(void 0, projectPath, "README.md"), readme);
256
255
  }
257
256
  async createNestJSApp(projectPath, projectName) {
258
- _chunkQP2TMRLGjs.logger.info("Creating NestJS application...");
257
+ _chunkDW6GOKMFjs.logger.info("Creating NestJS application...");
259
258
  }
260
259
  async createNextJSApp(projectPath, projectName) {
261
- _chunkQP2TMRLGjs.logger.info("Creating Next.js application...");
260
+ _chunkDW6GOKMFjs.logger.info("Creating Next.js application...");
262
261
  }
263
262
  };
264
263
 
264
+ // src/next/index.ts
265
+ var next_exports = {};
266
+ _chunkPZ5AY32Cjs.__export.call(void 0, next_exports, {
267
+ FusionProvider: () => FusionProvider,
268
+ useAuth: () => useAuth,
269
+ useFusion: () => useFusion
270
+ });
271
+
272
+ // src/next/provider.tsx
273
+ var _react = require('react'); var _react2 = _interopRequireDefault(_react);
274
+ var FusionContext = _react.createContext.call(void 0, null);
275
+ function FusionProvider({ children, baseUrl = "/api" }) {
276
+ const client = _react2.default.useMemo(() => new (0, _chunkASDXAK6Gjs.FusionFetcher)(baseUrl), [baseUrl]);
277
+ return /* @__PURE__ */ _react2.default.createElement(FusionContext.Provider, { value: { client } }, children);
278
+ }
279
+ function useFusion() {
280
+ const context = _react.useContext.call(void 0, FusionContext);
281
+ if (!context) {
282
+ throw new Error("useFusion must be used within FusionProvider");
283
+ }
284
+ return context;
285
+ }
286
+
287
+ // src/next/useAuth.ts
288
+
289
+ function useAuth() {
290
+ const { client } = useFusion();
291
+ const [user, setUser] = _react.useState.call(void 0, null);
292
+ const [loading, setLoading] = _react.useState.call(void 0, true);
293
+ _react.useEffect.call(void 0, () => {
294
+ const token = localStorage.getItem("fusion_token");
295
+ if (token) {
296
+ loadUser();
297
+ } else {
298
+ setLoading(false);
299
+ }
300
+ }, []);
301
+ const loadUser = async () => {
302
+ try {
303
+ const userData = await client.get("/auth/me");
304
+ setUser(userData);
305
+ } catch (error) {
306
+ localStorage.removeItem("fusion_token");
307
+ } finally {
308
+ setLoading(false);
309
+ }
310
+ };
311
+ const login = async (email, password) => {
312
+ const response = await client.post("/auth/login", {
313
+ email,
314
+ password
315
+ });
316
+ localStorage.setItem("fusion_token", response.token);
317
+ setUser(response.user);
318
+ };
319
+ const logout = async () => {
320
+ localStorage.removeItem("fusion_token");
321
+ setUser(null);
322
+ };
323
+ return {
324
+ user,
325
+ loading,
326
+ login,
327
+ logout,
328
+ isAuthenticated: !!user
329
+ };
330
+ }
331
+
265
332
 
266
333
 
267
334
 
@@ -270,5 +337,5 @@ fusion dev
270
337
 
271
338
 
272
339
 
273
- exports.Codegen = _chunkFYGXL4V7js.codegen_exports; exports.Config = config_exports; exports.Core = core_exports; exports.CreateFusion = create_fusion_exports; exports.DevServer = _chunkGWP6PNSPjs.dev_server_exports; exports.Insight = insight_exports; exports.Nest = _chunkW3YRVEFQjs.nest_exports; exports.Next = _chunkNU2UB242js.next_exports;
340
+ exports.Codegen = _chunkHU63F22Vjs.codegen_exports; exports.Config = config_exports; exports.Core = core_exports; exports.CreateFusion = create_fusion_exports; exports.DevServer = _chunkJMBD6DOPjs.dev_server_exports; exports.Insight = insight_exports; exports.Nest = _chunkGKVPGKAHjs.nest_exports; exports.Next = next_exports;
274
341
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["c:\\Users\\ziad\\Desktop\\wexts\\packages\\dist\\index.js"],"names":[],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B,+BAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B,+BAA4B;AAC5B;AACE;AACA;AACA;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACE;AACA;AACA;AACA;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACA;AACA,IAAI,aAAa,EAAE,CAAC,CAAC;AACrB,uCAAQ,YAAa,EAAE;AACvB,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,QAAQ;AAC1B,EAAE,WAAW,EAAE,CAAC,EAAE,GAAG,WAAW;AAChC,EAAE,YAAY,EAAE,CAAC,EAAE,GAAG,YAAY;AAClC,EAAE,UAAU,EAAE,CAAC,EAAE,GAAG,2BAAU;AAC9B,EAAE,WAAW,EAAE,CAAC,EAAE,GAAG,WAAW;AAChC,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,yBAAQ;AAC1B,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,uBAAM;AACtB,EAAE,cAAc,EAAE,CAAC,EAAE,GAAG,cAAc;AACtC,EAAE,eAAe,EAAE,CAAC,EAAE,GAAG,eAAe;AACxC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,MAAM;AACtB,EAAE,YAAY,EAAE,CAAC,EAAE,GAAG,6BAAY;AAClC,EAAE,UAAU,EAAE,CAAC,EAAE,GAAG,2BAAU;AAC9B,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,IAAI;AAClB,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG;AAChB,CAAC,CAAC;AACF;AACA;AACA,+DAAwB;AACxB,uEAA4B;AAC5B,IAAI,aAAa,YAAE,MAAM;AACzB,iBAAE,OAAO,kBAAkB,IAAI,GAAG,CAAC,EAAC;AACpC,EAAE;AACF,EAAE,WAAW,CAAC,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE;AACzC,IAAI,IAAI,CAAC,UAAU,EAAE,SAAS;AAC9B,EAAE;AACF;AACA;AACA;AACA,EAAE,IAAI,CAAC,GAAG,EAAE,YAAY,EAAE;AAC1B,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AAC9B,MAAM,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;AACjC,IAAI;AACJ,IAAI,MAAM,OAAO,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,UAAA;AACA,UAAA;AACA,QAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA;AACA;AACA;AACA,EAAA;AACA,IAAA;AACA,EAAA;AACA;AACA;AACA;AACA,EAAA;AACA,IAAA;AACA,EAAA;AACA;AACA;AACA;AACA,EAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA;AACA;AACA;AACA,EAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA;AACA;AACA;AACA,EAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA;AACA;AACA;AACA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA;AACA;AACA;AACA;AACA;AACA,EAAA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA;AACA;AACA;AACA;AACA;AACA,EAAA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,WAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,EAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"C:\\Users\\ziad\\Desktop\\wexts\\packages\\dist\\index.js","sourcesContent":[null]}
1
+ {"version":3,"sources":["c:\\Users\\ziad\\Desktop\\wexts\\packages\\dist\\index.js"],"names":[],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B,+BAA4B;AAC5B;AACE;AACA;AACA;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACE;AACA;AACA;AACA;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACA;AACA,IAAI,aAAa,EAAE,CAAC,CAAC;AACrB,uCAAQ,YAAa,EAAE;AACvB,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,QAAQ;AAC1B,EAAE,WAAW,EAAE,CAAC,EAAE,GAAG,WAAW;AAChC,EAAE,YAAY,EAAE,CAAC,EAAE,GAAG,YAAY;AAClC,EAAE,UAAU,EAAE,CAAC,EAAE,GAAG,2BAAU;AAC9B,EAAE,WAAW,EAAE,CAAC,EAAE,GAAG,WAAW;AAChC,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,yBAAQ;AAC1B,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,uBAAM;AACtB,EAAE,cAAc,EAAE,CAAC,EAAE,GAAG,cAAc;AACtC,EAAE,eAAe,EAAE,CAAC,EAAE,GAAG,eAAe;AACxC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,MAAM;AACtB,EAAE,YAAY,EAAE,CAAC,EAAE,GAAG,6BAAY;AAClC,EAAE,UAAU,EAAE,CAAC,EAAE,GAAG,2BAAU;AAC9B,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,IAAI;AAClB,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG;AAChB,CAAC,CAAC;AACF;AACA;AACA,+DAAwB;AACxB,uEAA4B;AAC5B,IAAI,aAAa,YAAE,MAAM;AACzB,iBAAE,OAAO,kBAAkB,IAAI,GAAG,CAAC,EAAC;AACpC,EAAE;AACF,EAAE,WAAW,CAAC,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE;AACzC,IAAI,IAAI,CAAC,UAAU,EAAE,SAAS;AAC9B,EAAE;AACF;AACA;AACA;AACA,EAAE,IAAI,CAAC,GAAG,EAAE,YAAY,EAAE;AAC1B,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AAC9B,MAAM,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;AACjC,IAAI;AACJ,IAAI,MAAM,OAAO,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,UAAA;AACA,UAAA;AACA,QAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA;AACA;AACA;AACA,EAAA;AACA,IAAA;AACA,EAAA;AACA;AACA;AACA;AACA,EAAA;AACA,IAAA;AACA,EAAA;AACA;AACA;AACA;AACA,EAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA;AACA;AACA;AACA,EAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA;AACA;AACA;AACA,EAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA;AACA;AACA;AACA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA;AACA;AACA;AACA;AACA;AACA,EAAA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA;AACA;AACA;AACA;AACA;AACA,EAAA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,WAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,EAAA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"C:\\Users\\ziad\\Desktop\\wexts\\packages\\dist\\index.js","sourcesContent":[null]}
package/dist/index.mjs CHANGED
@@ -1,28 +1,27 @@
1
1
  import {
2
- next_exports
3
- } from "./chunk-RS23R3ZQ.mjs";
4
- import "./chunk-6SVQEGEX.mjs";
2
+ FusionFetcher
3
+ } from "./chunk-67IJ6H4J.mjs";
5
4
  import {
6
5
  nest_exports
7
- } from "./chunk-OTSAVKLY.mjs";
8
- import "./chunk-EFZPSZWO.mjs";
6
+ } from "./chunk-WMHVXEYQ.mjs";
7
+ import "./chunk-7NSRDJ5C.mjs";
9
8
  import {
10
9
  FileSystem,
11
10
  codegen_exports,
12
11
  filesystem
13
- } from "./chunk-NNQFLD7O.mjs";
12
+ } from "./chunk-63MTCWU2.mjs";
14
13
  import {
15
14
  dev_server_exports
16
- } from "./chunk-HQKTXE7E.mjs";
15
+ } from "./chunk-OTBYRUBE.mjs";
17
16
  import {
18
17
  LogLevel,
19
18
  Logger,
20
19
  createLogger,
21
20
  logger
22
- } from "./chunk-NULGSZFE.mjs";
21
+ } from "./chunk-HSFLZUJN.mjs";
23
22
  import {
24
23
  __export
25
- } from "./chunk-J5LGTIGS.mjs";
24
+ } from "./chunk-CKZ4VSCB.mjs";
26
25
 
27
26
  // src/core/index.ts
28
27
  var core_exports = {};
@@ -261,6 +260,74 @@ fusion dev
261
260
  logger.info("Creating Next.js application...");
262
261
  }
263
262
  };
263
+
264
+ // src/next/index.ts
265
+ var next_exports = {};
266
+ __export(next_exports, {
267
+ FusionProvider: () => FusionProvider,
268
+ useAuth: () => useAuth,
269
+ useFusion: () => useFusion
270
+ });
271
+
272
+ // src/next/provider.tsx
273
+ import React, { createContext, useContext } from "react";
274
+ var FusionContext = createContext(null);
275
+ function FusionProvider({ children, baseUrl = "/api" }) {
276
+ const client = React.useMemo(() => new FusionFetcher(baseUrl), [baseUrl]);
277
+ return /* @__PURE__ */ React.createElement(FusionContext.Provider, { value: { client } }, children);
278
+ }
279
+ function useFusion() {
280
+ const context = useContext(FusionContext);
281
+ if (!context) {
282
+ throw new Error("useFusion must be used within FusionProvider");
283
+ }
284
+ return context;
285
+ }
286
+
287
+ // src/next/useAuth.ts
288
+ import { useState, useEffect } from "react";
289
+ function useAuth() {
290
+ const { client } = useFusion();
291
+ const [user, setUser] = useState(null);
292
+ const [loading, setLoading] = useState(true);
293
+ useEffect(() => {
294
+ const token = localStorage.getItem("fusion_token");
295
+ if (token) {
296
+ loadUser();
297
+ } else {
298
+ setLoading(false);
299
+ }
300
+ }, []);
301
+ const loadUser = async () => {
302
+ try {
303
+ const userData = await client.get("/auth/me");
304
+ setUser(userData);
305
+ } catch (error) {
306
+ localStorage.removeItem("fusion_token");
307
+ } finally {
308
+ setLoading(false);
309
+ }
310
+ };
311
+ const login = async (email, password) => {
312
+ const response = await client.post("/auth/login", {
313
+ email,
314
+ password
315
+ });
316
+ localStorage.setItem("fusion_token", response.token);
317
+ setUser(response.user);
318
+ };
319
+ const logout = async () => {
320
+ localStorage.removeItem("fusion_token");
321
+ setUser(null);
322
+ };
323
+ return {
324
+ user,
325
+ loading,
326
+ login,
327
+ logout,
328
+ isAuthenticated: !!user
329
+ };
330
+ }
264
331
  export {
265
332
  codegen_exports as Codegen,
266
333
  config_exports as Config,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/index.ts","../src/core/config.ts","../src/core/process-manager.ts","../src/core/errors.ts","../src/config/index.ts","../src/config/loader.ts","../src/insight/index.ts","../src/insight/server.ts","../src/create-fusion/index.ts","../src/create-fusion/scaffold.ts"],"sourcesContent":["// Core exports placeholder\r\nexport * from './config';\r\nexport * from './logger';\r\nexport * from './filesystem';\r\nexport * from './process-manager';\r\nexport * from './errors';\r\n","import * as fs from 'fs';\r\nimport * as path from 'path';\r\n\r\nexport interface FusionConfig {\r\n [key: string]: any;\r\n}\r\n\r\nexport class ConfigLoader {\r\n private config: Map<string, any> = new Map();\r\n private configDir: string;\r\n\r\n constructor(configDir: string = process.cwd()) {\r\n this.configDir = configDir;\r\n }\r\n\r\n /**\r\n * Load configuration from file or environment\r\n */\r\n load(key: string, defaultValue?: any): any {\r\n if (this.config.has(key)) {\r\n return this.config.get(key);\r\n }\r\n\r\n // Try to load from environment variable\r\n const envKey = `FUSION_${key.toUpperCase()}`;\r\n if (process.env[envKey]) {\r\n const value = this.parseEnvValue(process.env[envKey]!);\r\n this.config.set(key, value);\r\n return value;\r\n }\r\n\r\n // Try to load from config file\r\n const configPath = path.join(this.configDir, 'fusion.config.json');\r\n if (fs.existsSync(configPath)) {\r\n try {\r\n const fileConfig = JSON.parse(fs.readFileSync(configPath, 'utf-8'));\r\n if (fileConfig[key] !== undefined) {\r\n this.config.set(key, fileConfig[key]);\r\n return fileConfig[key];\r\n }\r\n } catch (error) {\r\n // Silently fail and use default\r\n }\r\n }\r\n\r\n return defaultValue;\r\n }\r\n\r\n /**\r\n * Set configuration value\r\n */\r\n set(key: string, value: any): void {\r\n this.config.set(key, value);\r\n }\r\n\r\n /**\r\n * Get all configuration\r\n */\r\n getAll(): FusionConfig {\r\n return Object.fromEntries(this.config);\r\n }\r\n\r\n /**\r\n * Parse environment value (handles JSON strings)\r\n */\r\n private parseEnvValue(value: string): any {\r\n try {\r\n return JSON.parse(value);\r\n } catch {\r\n return value;\r\n }\r\n }\r\n}\r\n\r\n// Export singleton instance\r\nexport const config = new ConfigLoader();\r\n\r\n// Helper function for backward compatibility\r\nexport function load(key: string, defaultValue?: any): any {\r\n return config.load(key, defaultValue);\r\n}\r\n","export class ProcessManager {\r\n /**\r\n * Setup process error handlers\r\n */\r\n static initialize(): void {\r\n process.on('uncaughtException', (error) => {\r\n console.error('[Fusion] Uncaught Exception:', error);\r\n process.exit(1);\r\n });\r\n\r\n process.on('unhandledRejection', (reason, promise) => {\r\n console.error('[Fusion] Unhandled Rejection at:', promise, 'reason:', reason);\r\n });\r\n\r\n process.on('SIGTERM', () => {\r\n console.log('[Fusion] SIGTERM received, shutting down gracefully');\r\n process.exit(0);\r\n });\r\n\r\n process.on('SIGINT', () => {\r\n console.log('[Fusion] SIGINT received, shutting down gracefully');\r\n process.exit(0);\r\n });\r\n }\r\n\r\n /**\r\n * Graceful shutdown helper\r\n */\r\n static async shutdown(cleanup: () => Promise<void>): Promise<void> {\r\n try {\r\n await cleanup();\r\n process.exit(0);\r\n } catch (error) {\r\n console.error('[Fusion] Error during shutdown:', error);\r\n process.exit(1);\r\n }\r\n }\r\n}\r\n","export class FusionError extends Error {\r\n constructor(message: string, public code?: string) {\r\n super(message);\r\n this.name = 'FusionError';\r\n }\r\n}\r\n\r\nexport class ConfigError extends FusionError {\r\n constructor(message: string) {\r\n super(message, 'CONFIG_ERROR');\r\n this.name = 'ConfigError';\r\n }\r\n}\r\n\r\nexport class ValidationError extends FusionError {\r\n constructor(message: string) {\r\n super(message, 'VALIDATION_ERROR');\r\n this.name = 'ValidationError';\r\n }\r\n}\r\n\r\nexport class APIError extends FusionError {\r\n constructor(message: string, public statusCode?: number) {\r\n super(message, 'API_ERROR');\r\n this.name = 'APIError';\r\n }\r\n}\r\n","// Config exports placeholder\r\nexport * from './loader';\r\n","export const loader = {\r\n load: () => ({}),\r\n};\r\n","// Insight exports placeholder\r\nexport * from './server';\r\n","export const server = {\r\n start: () => console.log('Insight server started'),\r\n};\r\n","export * from './scaffold';\r\n","import { mkdir, writeFile } from 'fs/promises';\r\nimport { join } from 'path';\r\nimport { logger } from '../core/logger';\r\n\r\nexport interface ScaffoldOptions {\r\n projectName: string;\r\n template: 'monorepo' | 'api' | 'web';\r\n packageManager?: 'npm' | 'pnpm' | 'yarn';\r\n}\r\n\r\nexport class ProjectScaffolder {\r\n async scaffold(options: ScaffoldOptions): Promise<void> {\r\n const { projectName, template } = options;\r\n const projectPath = join(process.cwd(), projectName);\r\n\r\n logger.info(`Creating project at: ${projectPath}`);\r\n\r\n // Create base directory\r\n await mkdir(projectPath, { recursive: true });\r\n\r\n if (template === 'monorepo') {\r\n await this.createMonorepo(projectPath, projectName);\r\n } else if (template === 'api') {\r\n await this.createNestJSApp(projectPath, projectName);\r\n } else if (template === 'web') {\r\n await this.createNextJSApp(projectPath, projectName);\r\n }\r\n\r\n logger.success(`Project ${projectName} created successfully!`);\r\n logger.info(`\\nNext steps:`);\r\n logger.info(` cd ${projectName}`);\r\n logger.info(` fusion dev`);\r\n }\r\n\r\n private async createMonorepo(projectPath: string, projectName: string): Promise<void> {\r\n // Create directory structure\r\n await mkdir(join(projectPath, 'apps', 'api'), { recursive: true });\r\n await mkdir(join(projectPath, 'apps', 'web'), { recursive: true });\r\n await mkdir(join(projectPath, 'packages', 'types'), { recursive: true });\r\n await mkdir(join(projectPath, 'packages', 'api-client'), { recursive: true });\r\n\r\n // Create root package.json\r\n const packageJson = {\r\n name: projectName,\r\n version: '0.0.1',\r\n private: true,\r\n workspaces: ['apps/*', 'packages/*'],\r\n scripts: {\r\n dev: 'fusion dev',\r\n build: 'fusion build',\r\n },\r\n devDependencies: {\r\n 'wexts': '^1.0.0',\r\n },\r\n };\r\n\r\n await writeFile(\r\n join(projectPath, 'package.json'),\r\n JSON.stringify(packageJson, null, 2)\r\n );\r\n\r\n // Create README\r\n const readme = `# ${projectName}\\n\\nCreated with wexts\\n\\n## Getting Started\\n\\n\\`\\`\\`bash\\nfusion dev\\n\\`\\`\\`\\n`;\r\n await writeFile(join(projectPath, 'README.md'), readme);\r\n }\r\n\r\n private async createNestJSApp(projectPath: string, projectName: string): Promise<void> {\r\n // TODO: Implement NestJS scaffolding\r\n logger.info('Creating NestJS application...');\r\n }\r\n\r\n private async createNextJSApp(projectPath: string, projectName: string): Promise<void> {\r\n // TODO: Implement Next.js scaffolding\r\n logger.info('Creating Next.js application...');\r\n }\r\n}\r\n"],"mappings":"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","names":["join","join"]}
1
+ {"version":3,"sources":["../src/core/index.ts","../src/core/config.ts","../src/core/process-manager.ts","../src/core/errors.ts","../src/config/index.ts","../src/config/loader.ts","../src/insight/index.ts","../src/insight/server.ts","../src/create-fusion/index.ts","../src/create-fusion/scaffold.ts","../src/next/index.ts","../src/next/provider.tsx","../src/next/useAuth.ts"],"sourcesContent":["// Core exports placeholder\r\nexport * from './config';\r\nexport * from './logger';\r\nexport * from './filesystem';\r\nexport * from './process-manager';\r\nexport * from './errors';\r\n","import * as fs from 'fs';\r\nimport * as path from 'path';\r\n\r\nexport interface FusionConfig {\r\n [key: string]: any;\r\n}\r\n\r\nexport class ConfigLoader {\r\n private config: Map<string, any> = new Map();\r\n private configDir: string;\r\n\r\n constructor(configDir: string = process.cwd()) {\r\n this.configDir = configDir;\r\n }\r\n\r\n /**\r\n * Load configuration from file or environment\r\n */\r\n load(key: string, defaultValue?: any): any {\r\n if (this.config.has(key)) {\r\n return this.config.get(key);\r\n }\r\n\r\n // Try to load from environment variable\r\n const envKey = `FUSION_${key.toUpperCase()}`;\r\n if (process.env[envKey]) {\r\n const value = this.parseEnvValue(process.env[envKey]!);\r\n this.config.set(key, value);\r\n return value;\r\n }\r\n\r\n // Try to load from config file\r\n const configPath = path.join(this.configDir, 'fusion.config.json');\r\n if (fs.existsSync(configPath)) {\r\n try {\r\n const fileConfig = JSON.parse(fs.readFileSync(configPath, 'utf-8'));\r\n if (fileConfig[key] !== undefined) {\r\n this.config.set(key, fileConfig[key]);\r\n return fileConfig[key];\r\n }\r\n } catch (error) {\r\n // Silently fail and use default\r\n }\r\n }\r\n\r\n return defaultValue;\r\n }\r\n\r\n /**\r\n * Set configuration value\r\n */\r\n set(key: string, value: any): void {\r\n this.config.set(key, value);\r\n }\r\n\r\n /**\r\n * Get all configuration\r\n */\r\n getAll(): FusionConfig {\r\n return Object.fromEntries(this.config);\r\n }\r\n\r\n /**\r\n * Parse environment value (handles JSON strings)\r\n */\r\n private parseEnvValue(value: string): any {\r\n try {\r\n return JSON.parse(value);\r\n } catch {\r\n return value;\r\n }\r\n }\r\n}\r\n\r\n// Export singleton instance\r\nexport const config = new ConfigLoader();\r\n\r\n// Helper function for backward compatibility\r\nexport function load(key: string, defaultValue?: any): any {\r\n return config.load(key, defaultValue);\r\n}\r\n","export class ProcessManager {\r\n /**\r\n * Setup process error handlers\r\n */\r\n static initialize(): void {\r\n process.on('uncaughtException', (error) => {\r\n console.error('[Fusion] Uncaught Exception:', error);\r\n process.exit(1);\r\n });\r\n\r\n process.on('unhandledRejection', (reason, promise) => {\r\n console.error('[Fusion] Unhandled Rejection at:', promise, 'reason:', reason);\r\n });\r\n\r\n process.on('SIGTERM', () => {\r\n console.log('[Fusion] SIGTERM received, shutting down gracefully');\r\n process.exit(0);\r\n });\r\n\r\n process.on('SIGINT', () => {\r\n console.log('[Fusion] SIGINT received, shutting down gracefully');\r\n process.exit(0);\r\n });\r\n }\r\n\r\n /**\r\n * Graceful shutdown helper\r\n */\r\n static async shutdown(cleanup: () => Promise<void>): Promise<void> {\r\n try {\r\n await cleanup();\r\n process.exit(0);\r\n } catch (error) {\r\n console.error('[Fusion] Error during shutdown:', error);\r\n process.exit(1);\r\n }\r\n }\r\n}\r\n","export class FusionError extends Error {\r\n constructor(message: string, public code?: string) {\r\n super(message);\r\n this.name = 'FusionError';\r\n }\r\n}\r\n\r\nexport class ConfigError extends FusionError {\r\n constructor(message: string) {\r\n super(message, 'CONFIG_ERROR');\r\n this.name = 'ConfigError';\r\n }\r\n}\r\n\r\nexport class ValidationError extends FusionError {\r\n constructor(message: string) {\r\n super(message, 'VALIDATION_ERROR');\r\n this.name = 'ValidationError';\r\n }\r\n}\r\n\r\nexport class APIError extends FusionError {\r\n constructor(message: string, public statusCode?: number) {\r\n super(message, 'API_ERROR');\r\n this.name = 'APIError';\r\n }\r\n}\r\n","// Config exports placeholder\r\nexport * from './loader';\r\n","export const loader = {\r\n load: () => ({}),\r\n};\r\n","// Insight exports placeholder\r\nexport * from './server';\r\n","export const server = {\r\n start: () => console.log('Insight server started'),\r\n};\r\n","export * from './scaffold';\r\n","import { mkdir, writeFile } from 'fs/promises';\r\nimport { join } from 'path';\r\nimport { logger } from '../core/logger';\r\n\r\nexport interface ScaffoldOptions {\r\n projectName: string;\r\n template: 'monorepo' | 'api' | 'web';\r\n packageManager?: 'npm' | 'pnpm' | 'yarn';\r\n}\r\n\r\nexport class ProjectScaffolder {\r\n async scaffold(options: ScaffoldOptions): Promise<void> {\r\n const { projectName, template } = options;\r\n const projectPath = join(process.cwd(), projectName);\r\n\r\n logger.info(`Creating project at: ${projectPath}`);\r\n\r\n // Create base directory\r\n await mkdir(projectPath, { recursive: true });\r\n\r\n if (template === 'monorepo') {\r\n await this.createMonorepo(projectPath, projectName);\r\n } else if (template === 'api') {\r\n await this.createNestJSApp(projectPath, projectName);\r\n } else if (template === 'web') {\r\n await this.createNextJSApp(projectPath, projectName);\r\n }\r\n\r\n logger.success(`Project ${projectName} created successfully!`);\r\n logger.info(`\\nNext steps:`);\r\n logger.info(` cd ${projectName}`);\r\n logger.info(` fusion dev`);\r\n }\r\n\r\n private async createMonorepo(projectPath: string, projectName: string): Promise<void> {\r\n // Create directory structure\r\n await mkdir(join(projectPath, 'apps', 'api'), { recursive: true });\r\n await mkdir(join(projectPath, 'apps', 'web'), { recursive: true });\r\n await mkdir(join(projectPath, 'packages', 'types'), { recursive: true });\r\n await mkdir(join(projectPath, 'packages', 'api-client'), { recursive: true });\r\n\r\n // Create root package.json\r\n const packageJson = {\r\n name: projectName,\r\n version: '0.0.1',\r\n private: true,\r\n workspaces: ['apps/*', 'packages/*'],\r\n scripts: {\r\n dev: 'fusion dev',\r\n build: 'fusion build',\r\n },\r\n devDependencies: {\r\n 'wexts': '^1.0.0',\r\n },\r\n };\r\n\r\n await writeFile(\r\n join(projectPath, 'package.json'),\r\n JSON.stringify(packageJson, null, 2)\r\n );\r\n\r\n // Create README\r\n const readme = `# ${projectName}\\n\\nCreated with wexts\\n\\n## Getting Started\\n\\n\\`\\`\\`bash\\nfusion dev\\n\\`\\`\\`\\n`;\r\n await writeFile(join(projectPath, 'README.md'), readme);\r\n }\r\n\r\n private async createNestJSApp(projectPath: string, projectName: string): Promise<void> {\r\n // TODO: Implement NestJS scaffolding\r\n logger.info('Creating NestJS application...');\r\n }\r\n\r\n private async createNextJSApp(projectPath: string, projectName: string): Promise<void> {\r\n // TODO: Implement Next.js scaffolding\r\n logger.info('Creating Next.js application...');\r\n }\r\n}\r\n","export * from './provider';\r\nexport * from './useAuth';\r\n","'use client';\r\n\r\nimport React, { createContext, useContext, ReactNode } from 'react';\r\nimport { FusionFetcher } from '../client/fetcher';\r\n\r\ninterface FusionContextType {\r\n client: FusionFetcher;\r\n}\r\n\r\nconst FusionContext = createContext<FusionContextType | null>(null);\r\n\r\nexport interface FusionProviderProps {\r\n children: ReactNode;\r\n baseUrl?: string;\r\n}\r\n\r\n/**\r\n * FusionProvider - Provides API client to React components\r\n * Usage:\r\n * ```tsx\r\n * <FusionProvider baseUrl=\"/api\">\r\n * <App />\r\n * </FusionProvider>\r\n * ```\r\n */\r\nexport function FusionProvider({ children, baseUrl = '/api' }: FusionProviderProps) {\r\n const client = React.useMemo(() => new FusionFetcher(baseUrl), [baseUrl]);\r\n\r\n return (\r\n <FusionContext.Provider value={{ client }}>\r\n {children}\r\n </FusionContext.Provider>\r\n );\r\n}\r\n\r\n/**\r\n * useFusion hook - Access API client in components\r\n * Usage:\r\n * ```tsx\r\n * const { client } = useFusion();\r\n * const data = await client.get('/users');\r\n * ```\r\n */\r\nexport function useFusion(): FusionContextType {\r\n const context = useContext(FusionContext);\r\n if (!context) {\r\n throw new Error('useFusion must be used within FusionProvider');\r\n }\r\n return context;\r\n}\r\n","'use client';\r\n\r\nimport { useState, useEffect } from 'react';\r\nimport { useFusion } from './provider';\r\n\r\nexport interface AuthUser {\r\n id: string;\r\n email: string;\r\n name?: string;\r\n}\r\n\r\nexport interface UseAuthReturn {\r\n user: AuthUser | null;\r\n loading: boolean;\r\n login: (email: string, password: string) => Promise<void>;\r\n logout: () => Promise<void>;\r\n isAuthenticated: boolean;\r\n}\r\n\r\n/**\r\n * useAuth hook - Authentication state management\r\n * Usage:\r\n * ```tsx\r\n * const { user, login, logout, isAuthenticated } = useAuth();\r\n * ```\r\n */\r\nexport function useAuth(): UseAuthReturn {\r\n const { client } = useFusion();\r\n const [user, setUser] = useState<AuthUser | null>(null);\r\n const [loading, setLoading] = useState(true);\r\n\r\n useEffect(() => {\r\n // Check for existing session\r\n const token = localStorage.getItem('fusion_token');\r\n if (token) {\r\n // Validate token and load user\r\n loadUser();\r\n } else {\r\n setLoading(false);\r\n }\r\n }, []);\r\n\r\n const loadUser = async () => {\r\n try {\r\n const userData = await client.get<AuthUser>('/auth/me');\r\n setUser(userData);\r\n } catch (error) {\r\n localStorage.removeItem('fusion_token');\r\n } finally {\r\n setLoading(false);\r\n }\r\n };\r\n\r\n const login = async (email: string, password: string) => {\r\n const response = await client.post<{ token: string; user: AuthUser }>('/auth/login', {\r\n email,\r\n password,\r\n });\r\n localStorage.setItem('fusion_token', response.token);\r\n setUser(response.user);\r\n };\r\n\r\n const logout = async () => {\r\n localStorage.removeItem('fusion_token');\r\n setUser(null);\r\n };\r\n\r\n return {\r\n user,\r\n loading,\r\n login,\r\n logout,\r\n isAuthenticated: !!user,\r\n };\r\n}\r\n"],"mappings":"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","names":["join","join"]}
@@ -6,7 +6,7 @@
6
6
 
7
7
 
8
8
 
9
- var _chunkW3YRVEFQjs = require('../chunk-W3YRVEFQ.js');
9
+ var _chunkGKVPGKAHjs = require('../chunk-GKVPGKAH.js');
10
10
  require('../chunk-PZ5AY32C.js');
11
11
 
12
12
 
@@ -16,5 +16,5 @@ require('../chunk-PZ5AY32C.js');
16
16
 
17
17
 
18
18
 
19
- exports.FusionController = _chunkW3YRVEFQjs.FusionController; exports.FusionDelete = _chunkW3YRVEFQjs.FusionDelete; exports.FusionGet = _chunkW3YRVEFQjs.FusionGet; exports.FusionPost = _chunkW3YRVEFQjs.FusionPost; exports.FusionPut = _chunkW3YRVEFQjs.FusionPut; exports.FusionRoute = _chunkW3YRVEFQjs.FusionRoute; exports.getFusionMetadata = _chunkW3YRVEFQjs.getFusionMetadata;
19
+ exports.FusionController = _chunkGKVPGKAHjs.FusionController; exports.FusionDelete = _chunkGKVPGKAHjs.FusionDelete; exports.FusionGet = _chunkGKVPGKAHjs.FusionGet; exports.FusionPost = _chunkGKVPGKAHjs.FusionPost; exports.FusionPut = _chunkGKVPGKAHjs.FusionPut; exports.FusionRoute = _chunkGKVPGKAHjs.FusionRoute; exports.getFusionMetadata = _chunkGKVPGKAHjs.getFusionMetadata;
20
20
  //# sourceMappingURL=index.js.map
@@ -6,8 +6,8 @@ import {
6
6
  FusionPut,
7
7
  FusionRoute,
8
8
  getFusionMetadata
9
- } from "../chunk-OTSAVKLY.mjs";
10
- import "../chunk-J5LGTIGS.mjs";
9
+ } from "../chunk-WMHVXEYQ.mjs";
10
+ import "../chunk-CKZ4VSCB.mjs";
11
11
  export {
12
12
  FusionController,
13
13
  FusionDelete,
@@ -1,3 +1,61 @@
1
- export { A as AuthUser, a as FusionProvider, F as FusionProviderProps, U as UseAuthReturn, b as useAuth, u as useFusion } from '../index-kEbGExWM.mjs';
2
- import 'react';
3
- import '../client/index.mjs';
1
+ import React, { ReactNode } from 'react';
2
+
3
+ declare class FusionFetcher {
4
+ private baseUrl;
5
+ constructor(baseUrl?: string);
6
+ private request;
7
+ get<T>(path: string): Promise<T>;
8
+ post<T>(path: string, body: any): Promise<T>;
9
+ put<T>(path: string, body: any): Promise<T>;
10
+ delete<T>(path: string): Promise<T>;
11
+ }
12
+
13
+ interface FusionContextType {
14
+ client: FusionFetcher;
15
+ }
16
+ interface FusionProviderProps {
17
+ children: ReactNode;
18
+ baseUrl?: string;
19
+ }
20
+ /**
21
+ * FusionProvider - Provides API client to React components
22
+ * Usage:
23
+ * ```tsx
24
+ * <FusionProvider baseUrl="/api">
25
+ * <App />
26
+ * </FusionProvider>
27
+ * ```
28
+ */
29
+ declare function FusionProvider({ children, baseUrl }: FusionProviderProps): React.JSX.Element;
30
+ /**
31
+ * useFusion hook - Access API client in components
32
+ * Usage:
33
+ * ```tsx
34
+ * const { client } = useFusion();
35
+ * const data = await client.get('/users');
36
+ * ```
37
+ */
38
+ declare function useFusion(): FusionContextType;
39
+
40
+ interface AuthUser {
41
+ id: string;
42
+ email: string;
43
+ name?: string;
44
+ }
45
+ interface UseAuthReturn {
46
+ user: AuthUser | null;
47
+ loading: boolean;
48
+ login: (email: string, password: string) => Promise<void>;
49
+ logout: () => Promise<void>;
50
+ isAuthenticated: boolean;
51
+ }
52
+ /**
53
+ * useAuth hook - Authentication state management
54
+ * Usage:
55
+ * ```tsx
56
+ * const { user, login, logout, isAuthenticated } = useAuth();
57
+ * ```
58
+ */
59
+ declare function useAuth(): UseAuthReturn;
60
+
61
+ export { type AuthUser, FusionProvider, type FusionProviderProps, type UseAuthReturn, useAuth, useFusion };
@@ -1,3 +1,61 @@
1
- export { A as AuthUser, a as FusionProvider, F as FusionProviderProps, U as UseAuthReturn, b as useAuth, u as useFusion } from '../index-CrbXnXsO.js';
2
- import 'react';
3
- import '../client/index.js';
1
+ import React, { ReactNode } from 'react';
2
+
3
+ declare class FusionFetcher {
4
+ private baseUrl;
5
+ constructor(baseUrl?: string);
6
+ private request;
7
+ get<T>(path: string): Promise<T>;
8
+ post<T>(path: string, body: any): Promise<T>;
9
+ put<T>(path: string, body: any): Promise<T>;
10
+ delete<T>(path: string): Promise<T>;
11
+ }
12
+
13
+ interface FusionContextType {
14
+ client: FusionFetcher;
15
+ }
16
+ interface FusionProviderProps {
17
+ children: ReactNode;
18
+ baseUrl?: string;
19
+ }
20
+ /**
21
+ * FusionProvider - Provides API client to React components
22
+ * Usage:
23
+ * ```tsx
24
+ * <FusionProvider baseUrl="/api">
25
+ * <App />
26
+ * </FusionProvider>
27
+ * ```
28
+ */
29
+ declare function FusionProvider({ children, baseUrl }: FusionProviderProps): React.JSX.Element;
30
+ /**
31
+ * useFusion hook - Access API client in components
32
+ * Usage:
33
+ * ```tsx
34
+ * const { client } = useFusion();
35
+ * const data = await client.get('/users');
36
+ * ```
37
+ */
38
+ declare function useFusion(): FusionContextType;
39
+
40
+ interface AuthUser {
41
+ id: string;
42
+ email: string;
43
+ name?: string;
44
+ }
45
+ interface UseAuthReturn {
46
+ user: AuthUser | null;
47
+ loading: boolean;
48
+ login: (email: string, password: string) => Promise<void>;
49
+ logout: () => Promise<void>;
50
+ isAuthenticated: boolean;
51
+ }
52
+ /**
53
+ * useAuth hook - Authentication state management
54
+ * Usage:
55
+ * ```tsx
56
+ * const { user, login, logout, isAuthenticated } = useAuth();
57
+ * ```
58
+ */
59
+ declare function useAuth(): UseAuthReturn;
60
+
61
+ export { type AuthUser, FusionProvider, type FusionProviderProps, type UseAuthReturn, useAuth, useFusion };