wexts 4.1.0 → 4.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +49 -49
- package/bin/wexts.cjs +2 -2
- package/package.json +153 -148
- package/templates/.dockerignore +43 -43
- package/templates/.env.example +17 -17
- package/templates/Dockerfile +60 -60
- package/templates/Procfile +1 -1
- package/templates/README.md +67 -67
- package/templates/api-sdk.ts +115 -115
- package/templates/docker-compose.yml +34 -34
- package/templates/nestjs-api/.env.example +3 -3
- package/templates/nestjs-api/README.md +87 -87
- package/templates/nestjs-api/nest-cli.json +6 -6
- package/templates/nestjs-api/package.json +40 -40
- package/templates/nestjs-api/prisma/migrations/20251123205437_init/migration.sql +24 -24
- package/templates/nestjs-api/prisma/migrations/migration_lock.toml +3 -3
- package/templates/nestjs-api/prisma/schema.prisma +29 -29
- package/templates/nestjs-api/src/app.module.ts +17 -17
- package/templates/nestjs-api/src/auth/auth.controller.ts +27 -27
- package/templates/nestjs-api/src/auth/auth.module.ts +37 -37
- package/templates/nestjs-api/src/auth/auth.service.ts +86 -86
- package/templates/nestjs-api/src/auth/dto/auth.dto.ts +22 -22
- package/templates/nestjs-api/src/auth/guards/jwt-auth.guard.ts +5 -5
- package/templates/nestjs-api/src/auth/strategies/jwt.strategy.ts +27 -27
- package/templates/nestjs-api/src/main.ts +32 -32
- package/templates/nestjs-api/src/prisma/prisma.module.ts +9 -9
- package/templates/nestjs-api/src/prisma/prisma.service.ts +14 -14
- package/templates/nestjs-api/src/todos/dto/todo.dto.ts +24 -24
- package/templates/nestjs-api/src/todos/todos.controller.ts +39 -39
- package/templates/nestjs-api/src/todos/todos.module.ts +11 -11
- package/templates/nestjs-api/src/todos/todos.service.ts +53 -53
- package/templates/nestjs-api/src/users/users.controller.ts +14 -14
- package/templates/nestjs-api/src/users/users.module.ts +12 -12
- package/templates/nestjs-api/src/users/users.service.ts +19 -19
- package/templates/nestjs-api/tsconfig.json +39 -39
- package/templates/nextjs-web/README.md +76 -76
- package/templates/nextjs-web/app/actions/auth.ts +108 -108
- package/templates/nextjs-web/app/dashboard/error.tsx +39 -39
- package/templates/nextjs-web/app/dashboard/loading.tsx +14 -14
- package/templates/nextjs-web/app/dashboard/page.tsx +5 -5
- package/templates/nextjs-web/app/globals.css +93 -93
- package/templates/nextjs-web/app/layout.tsx +29 -29
- package/templates/nextjs-web/app/login/page.tsx +5 -5
- package/templates/nextjs-web/app/page.tsx +28 -28
- package/templates/nextjs-web/app/register/page.tsx +5 -5
- package/templates/nextjs-web/components/ui/button.tsx +56 -56
- package/templates/nextjs-web/components/ui/card.tsx +79 -79
- package/templates/nextjs-web/components/ui/input.tsx +25 -25
- package/templates/nextjs-web/components/ui/label.tsx +24 -24
- package/templates/nextjs-web/features/auth/LoginForm.tsx +140 -140
- package/templates/nextjs-web/features/auth/RegisterForm.tsx +159 -159
- package/templates/nextjs-web/features/auth/api.ts +35 -35
- package/templates/nextjs-web/features/auth/index.ts +3 -3
- package/templates/nextjs-web/features/dashboard/DashboardView.tsx +204 -204
- package/templates/nextjs-web/features/dashboard/api.ts +9 -9
- package/templates/nextjs-web/features/dashboard/components.tsx +74 -74
- package/templates/nextjs-web/features/dashboard/index.ts +3 -3
- package/templates/nextjs-web/hooks/index.ts +4 -4
- package/templates/nextjs-web/lib/api-client.ts +89 -89
- package/templates/nextjs-web/lib/api.ts +115 -115
- package/templates/nextjs-web/lib/axios-global-config.ts +17 -17
- package/templates/nextjs-web/lib/utils.ts +6 -6
- package/templates/nextjs-web/lib/wexts-client.ts +4 -4
- package/templates/nextjs-web/next-env.d.ts +6 -6
- package/templates/nextjs-web/next.config.ts +20 -20
- package/templates/nextjs-web/package.json +37 -37
- package/templates/nextjs-web/postcss.config.js +6 -6
- package/templates/nextjs-web/tailwind.config.ts +69 -69
- package/templates/nextjs-web/tsconfig.json +41 -41
- package/templates/nixpacks.toml +11 -11
- package/templates/root-package.json +31 -31
- package/templates/server.ts +66 -66
- package/templates/tsconfig.json +30 -30
- package/dist/chunk-2KAQYLVN.js +0 -1
- package/dist/chunk-2KAQYLVN.js.map +0 -1
- package/dist/chunk-2LJVUMXW.js +0 -228
- package/dist/chunk-2LJVUMXW.js.map +0 -1
- package/dist/chunk-342VRT25.mjs +0 -504
- package/dist/chunk-342VRT25.mjs.map +0 -1
- package/dist/chunk-7HNQWJWV.js +0 -504
- package/dist/chunk-7HNQWJWV.js.map +0 -1
- package/dist/chunk-7QKLIVRF.js +0 -94
- package/dist/chunk-7QKLIVRF.js.map +0 -1
- package/dist/chunk-7SSCNCTW.mjs +0 -137
- package/dist/chunk-7SSCNCTW.mjs.map +0 -1
- package/dist/chunk-7TLSPR65.mjs +0 -95
- package/dist/chunk-7TLSPR65.mjs.map +0 -1
- package/dist/chunk-7WULUGLH.mjs +0 -22
- package/dist/chunk-7WULUGLH.mjs.map +0 -1
- package/dist/chunk-AVMQJWYD.js +0 -95
- package/dist/chunk-AVMQJWYD.js.map +0 -1
- package/dist/chunk-BG56B4DE.js +0 -106
- package/dist/chunk-BG56B4DE.js.map +0 -1
- package/dist/chunk-CLM5PNSG.mjs +0 -496
- package/dist/chunk-CLM5PNSG.mjs.map +0 -1
- package/dist/chunk-DNLGCKTT.js +0 -31
- package/dist/chunk-DNLGCKTT.js.map +0 -1
- package/dist/chunk-JHOVXH3X.mjs +0 -65
- package/dist/chunk-JHOVXH3X.mjs.map +0 -1
- package/dist/chunk-MXINIFPC.js +0 -105
- package/dist/chunk-MXINIFPC.js.map +0 -1
- package/dist/chunk-O4II6N34.js +0 -137
- package/dist/chunk-O4II6N34.js.map +0 -1
- package/dist/chunk-SE32ZPOZ.js +0 -496
- package/dist/chunk-SE32ZPOZ.js.map +0 -1
- package/dist/chunk-UAL54DVV.mjs +0 -106
- package/dist/chunk-UAL54DVV.mjs.map +0 -1
- package/dist/chunk-WCKSKU3C.js +0 -65
- package/dist/chunk-WCKSKU3C.js.map +0 -1
- package/dist/chunk-WU6FW77M.mjs +0 -105
- package/dist/chunk-WU6FW77M.mjs.map +0 -1
- package/dist/chunk-XE4OXN2W.js +0 -12
- package/dist/chunk-XE4OXN2W.js.map +0 -1
- package/dist/chunk-YBM3IJEA.mjs +0 -94
- package/dist/chunk-YBM3IJEA.mjs.map +0 -1
- package/dist/chunk-YN6WIWNQ.mjs +0 -228
- package/dist/chunk-YN6WIWNQ.mjs.map +0 -1
- package/dist/chunk-YSLEF5C5.mjs +0 -1
- package/dist/chunk-YSLEF5C5.mjs.map +0 -1
- package/dist/chunk-ZX7QIN24.mjs +0 -31
- package/dist/chunk-ZX7QIN24.mjs.map +0 -1
- package/dist/cli/index.d.mts +0 -23
- package/dist/cli/index.d.ts +0 -23
- package/dist/cli/index.js +0 -716
- package/dist/cli/index.js.map +0 -1
- package/dist/cli/index.mjs +0 -718
- package/dist/cli/index.mjs.map +0 -1
- package/dist/client/index.d.mts +0 -21
- package/dist/client/index.d.ts +0 -21
- package/dist/client/index.js +0 -13
- package/dist/client/index.js.map +0 -1
- package/dist/client/index.mjs +0 -13
- package/dist/client/index.mjs.map +0 -1
- package/dist/codegen/index.d.mts +0 -2
- package/dist/codegen/index.d.ts +0 -2
- package/dist/codegen/index.js +0 -16
- package/dist/codegen/index.js.map +0 -1
- package/dist/codegen/index.mjs +0 -16
- package/dist/codegen/index.mjs.map +0 -1
- package/dist/decorators-BT1FFqN0.d.mts +0 -29
- package/dist/decorators-DvS58PqC.d.ts +0 -29
- package/dist/dev-server/index.d.mts +0 -1
- package/dist/dev-server/index.d.ts +0 -1
- package/dist/dev-server/index.js +0 -13
- package/dist/dev-server/index.js.map +0 -1
- package/dist/dev-server/index.mjs +0 -13
- package/dist/dev-server/index.mjs.map +0 -1
- package/dist/index-7QeQEf37.d.ts +0 -92
- package/dist/index-7RvU-jGE.d.mts +0 -66
- package/dist/index-7RvU-jGE.d.ts +0 -66
- package/dist/index-8nzxy0NN.d.mts +0 -92
- package/dist/index-Co5ZsLqq.d.ts +0 -58
- package/dist/index-D94W1__r.d.mts +0 -58
- package/dist/index-DQmyVp6F.d.mts +0 -27
- package/dist/index-KL_1BrQb.d.ts +0 -27
- package/dist/index.d.mts +0 -294
- package/dist/index.d.ts +0 -294
- package/dist/index.js +0 -424
- package/dist/index.js.map +0 -1
- package/dist/index.mjs +0 -424
- package/dist/index.mjs.map +0 -1
- package/dist/nest/index.d.mts +0 -3
- package/dist/nest/index.d.ts +0 -3
- package/dist/nest/index.js +0 -38
- package/dist/nest/index.js.map +0 -1
- package/dist/nest/index.mjs +0 -38
- package/dist/nest/index.mjs.map +0 -1
- package/dist/next/index.d.mts +0 -66
- package/dist/next/index.d.ts +0 -66
- package/dist/next/index.js +0 -289
- package/dist/next/index.js.map +0 -1
- package/dist/next/index.mjs +0 -251
- package/dist/next/index.mjs.map +0 -1
- package/dist/rpc/index.d.mts +0 -2
- package/dist/rpc/index.d.ts +0 -2
- package/dist/rpc/index.js +0 -23
- package/dist/rpc/index.js.map +0 -1
- package/dist/rpc/index.mjs +0 -23
- package/dist/rpc/index.mjs.map +0 -1
- package/dist/runtime/index.d.mts +0 -55
- package/dist/runtime/index.d.ts +0 -55
- package/dist/runtime/index.js +0 -221
- package/dist/runtime/index.js.map +0 -1
- package/dist/runtime/index.mjs +0 -221
- package/dist/runtime/index.mjs.map +0 -1
- package/dist/types/index.d.mts +0 -12
- package/dist/types/index.d.ts +0 -12
- package/dist/types/index.js +0 -2
- package/dist/types/index.js.map +0 -1
- package/dist/types/index.mjs +0 -3
- package/dist/types/index.mjs.map +0 -1
- package/dist/types-7d_fC-C3.d.mts +0 -32
- package/dist/types-7d_fC-C3.d.ts +0 -32
- package/dist/vercel-builder/index.d.mts +0 -58
- package/dist/vercel-builder/index.d.ts +0 -58
- package/dist/vercel-builder/index.js +0 -330
- package/dist/vercel-builder/index.js.map +0 -1
- package/dist/vercel-builder/index.mjs +0 -330
- package/dist/vercel-builder/index.mjs.map +0 -1
package/dist/chunk-UAL54DVV.mjs
DELETED
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
RequireAuth,
|
|
3
|
-
RpcMethod,
|
|
4
|
-
RpcService,
|
|
5
|
-
WextsRpc,
|
|
6
|
-
WextsRpcService,
|
|
7
|
-
getRpcAuthPolicy,
|
|
8
|
-
getRuntimeRpcMethodsMetadata,
|
|
9
|
-
getRuntimeRpcServiceMetadata
|
|
10
|
-
} from "./chunk-YBM3IJEA.mjs";
|
|
11
|
-
import {
|
|
12
|
-
__export,
|
|
13
|
-
__name
|
|
14
|
-
} from "./chunk-7WULUGLH.mjs";
|
|
15
|
-
|
|
16
|
-
// src/nest/index.ts
|
|
17
|
-
var nest_exports = {};
|
|
18
|
-
__export(nest_exports, {
|
|
19
|
-
FusionController: () => FusionController,
|
|
20
|
-
FusionDelete: () => FusionDelete,
|
|
21
|
-
FusionGet: () => FusionGet,
|
|
22
|
-
FusionPost: () => FusionPost,
|
|
23
|
-
FusionPut: () => FusionPut,
|
|
24
|
-
FusionRoute: () => FusionRoute,
|
|
25
|
-
RequireAuth: () => RequireAuth,
|
|
26
|
-
RpcMethod: () => RpcMethod,
|
|
27
|
-
RpcService: () => RpcService,
|
|
28
|
-
WextsRpc: () => WextsRpc,
|
|
29
|
-
WextsRpcService: () => WextsRpcService,
|
|
30
|
-
getFusionMetadata: () => getFusionMetadata,
|
|
31
|
-
getRpcAuthPolicy: () => getRpcAuthPolicy,
|
|
32
|
-
getRuntimeRpcMethodsMetadata: () => getRuntimeRpcMethodsMetadata,
|
|
33
|
-
getRuntimeRpcServiceMetadata: () => getRuntimeRpcServiceMetadata
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
// src/nest/decorators.ts
|
|
37
|
-
import "reflect-metadata";
|
|
38
|
-
var FUSION_METADATA_KEY = "fusion:routes";
|
|
39
|
-
function FusionController(prefix = "") {
|
|
40
|
-
return function(target) {
|
|
41
|
-
Reflect.defineMetadata("fusion:controller", {
|
|
42
|
-
prefix
|
|
43
|
-
}, target);
|
|
44
|
-
return target;
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
__name(FusionController, "FusionController");
|
|
48
|
-
function FusionRoute(metadata) {
|
|
49
|
-
return function(target, propertyKey, descriptor) {
|
|
50
|
-
const routes = Reflect.getMetadata(FUSION_METADATA_KEY, target.constructor) || [];
|
|
51
|
-
routes.push({
|
|
52
|
-
...metadata,
|
|
53
|
-
handler: propertyKey
|
|
54
|
-
});
|
|
55
|
-
Reflect.defineMetadata(FUSION_METADATA_KEY, routes, target.constructor);
|
|
56
|
-
return descriptor;
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
__name(FusionRoute, "FusionRoute");
|
|
60
|
-
function FusionGet(path = "") {
|
|
61
|
-
return FusionRoute({
|
|
62
|
-
method: "GET",
|
|
63
|
-
path
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
__name(FusionGet, "FusionGet");
|
|
67
|
-
function FusionPost(path = "") {
|
|
68
|
-
return FusionRoute({
|
|
69
|
-
method: "POST",
|
|
70
|
-
path
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
__name(FusionPost, "FusionPost");
|
|
74
|
-
function FusionPut(path = "") {
|
|
75
|
-
return FusionRoute({
|
|
76
|
-
method: "PUT",
|
|
77
|
-
path
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
__name(FusionPut, "FusionPut");
|
|
81
|
-
function FusionDelete(path = "") {
|
|
82
|
-
return FusionRoute({
|
|
83
|
-
method: "DELETE",
|
|
84
|
-
path
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
__name(FusionDelete, "FusionDelete");
|
|
88
|
-
function getFusionMetadata(controller) {
|
|
89
|
-
return {
|
|
90
|
-
controller: Reflect.getMetadata("fusion:controller", controller),
|
|
91
|
-
routes: Reflect.getMetadata(FUSION_METADATA_KEY, controller) || []
|
|
92
|
-
};
|
|
93
|
-
}
|
|
94
|
-
__name(getFusionMetadata, "getFusionMetadata");
|
|
95
|
-
|
|
96
|
-
export {
|
|
97
|
-
FusionController,
|
|
98
|
-
FusionRoute,
|
|
99
|
-
FusionGet,
|
|
100
|
-
FusionPost,
|
|
101
|
-
FusionPut,
|
|
102
|
-
FusionDelete,
|
|
103
|
-
getFusionMetadata,
|
|
104
|
-
nest_exports
|
|
105
|
-
};
|
|
106
|
-
//# sourceMappingURL=chunk-UAL54DVV.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/nest/index.ts","../src/nest/decorators.ts"],"sourcesContent":["export * from './decorators';\nexport * from '../rpc/decorators';\n","// NestJS Integration - Decorators for wexts\n// These decorators add metadata for auto API client generation\n\nimport 'reflect-metadata';\n\nexport interface FusionRouteMetadata {\n method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';\n path: string;\n responseType?: string;\n requestType?: string;\n}\n\nconst FUSION_METADATA_KEY = 'fusion:routes';\n\n/**\n * Mark a NestJS controller for Fusion codegen\n * Usage: @FusionController('users')\n */\nexport function FusionController(prefix: string = ''): ClassDecorator {\n return function (target: any) {\n Reflect.defineMetadata('fusion:controller', { prefix }, target);\n return target;\n };\n}\n\n/**\n * Mark a route for API client generation\n * Usage: @FusionRoute({ method: 'GET', path: '/:id' })\n */\nexport function FusionRoute(metadata: FusionRouteMetadata): MethodDecorator {\n return function (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) {\n const routes = Reflect.getMetadata(FUSION_METADATA_KEY, target.constructor) || [];\n routes.push({\n ...metadata,\n handler: propertyKey,\n });\n Reflect.defineMetadata(FUSION_METADATA_KEY, routes, target.constructor);\n return descriptor;\n };\n}\n\n/**\n * Helper decorators for common HTTP methods\n */\nexport function FusionGet(path: string = ''): MethodDecorator {\n return FusionRoute({ method: 'GET', path });\n}\n\nexport function FusionPost(path: string = ''): MethodDecorator {\n return FusionRoute({ method: 'POST', path });\n}\n\nexport function FusionPut(path: string = ''): MethodDecorator {\n return FusionRoute({ method: 'PUT', path });\n}\n\nexport function FusionDelete(path: string = ''): MethodDecorator {\n return FusionRoute({ method: 'DELETE', path });\n}\n\n/**\n * Get Fusion metadata from a controller\n */\nexport function getFusionMetadata(controller: any): {\n controller: any;\n routes: any[];\n} {\n return {\n controller: Reflect.getMetadata('fusion:controller', controller),\n routes: Reflect.getMetadata(FUSION_METADATA_KEY, controller) || [],\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;;;;;;;ACGA,OAAO;AASP,IAAMA,sBAAsB;AAMrB,SAASC,iBAAiBC,SAAiB,IAAE;AAChD,SAAO,SAAUC,QAAW;AACxBC,YAAQC,eAAe,qBAAqB;MAAEH;IAAO,GAAGC,MAAAA;AACxD,WAAOA;EACX;AACJ;AALgBF;AAWT,SAASK,YAAYC,UAA6B;AACrD,SAAO,SAAUJ,QAAaK,aAA8BC,YAA8B;AACtF,UAAMC,SAASN,QAAQO,YAAYX,qBAAqBG,OAAO,WAAW,KAAK,CAAA;AAC/EO,WAAOE,KAAK;MACR,GAAGL;MACHM,SAASL;IACb,CAAA;AACAJ,YAAQC,eAAeL,qBAAqBU,QAAQP,OAAO,WAAW;AACtE,WAAOM;EACX;AACJ;AAVgBH;AAeT,SAASQ,UAAUC,OAAe,IAAE;AACvC,SAAOT,YAAY;IAAEU,QAAQ;IAAOD;EAAK,CAAA;AAC7C;AAFgBD;AAIT,SAASG,WAAWF,OAAe,IAAE;AACxC,SAAOT,YAAY;IAAEU,QAAQ;IAAQD;EAAK,CAAA;AAC9C;AAFgBE;AAIT,SAASC,UAAUH,OAAe,IAAE;AACvC,SAAOT,YAAY;IAAEU,QAAQ;IAAOD;EAAK,CAAA;AAC7C;AAFgBG;AAIT,SAASC,aAAaJ,OAAe,IAAE;AAC1C,SAAOT,YAAY;IAAEU,QAAQ;IAAUD;EAAK,CAAA;AAChD;AAFgBI;AAOT,SAASC,kBAAkBC,YAAe;AAI7C,SAAO;IACHA,YAAYjB,QAAQO,YAAY,qBAAqBU,UAAAA;IACrDX,QAAQN,QAAQO,YAAYX,qBAAqBqB,UAAAA,KAAe,CAAA;EACpE;AACJ;AARgBD;","names":["FUSION_METADATA_KEY","FusionController","prefix","target","Reflect","defineMetadata","FusionRoute","metadata","propertyKey","descriptor","routes","getMetadata","push","handler","FusionGet","path","method","FusionPost","FusionPut","FusionDelete","getFusionMetadata","controller"]}
|
package/dist/chunk-WCKSKU3C.js
DELETED
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }
|
|
2
|
-
|
|
3
|
-
var _chunkXE4OXN2Wjs = require('./chunk-XE4OXN2W.js');
|
|
4
|
-
|
|
5
|
-
// src/core/logger.ts
|
|
6
|
-
var LogLevel = /* @__PURE__ */ (function(LogLevel2) {
|
|
7
|
-
LogLevel2[LogLevel2["DEBUG"] = 0] = "DEBUG";
|
|
8
|
-
LogLevel2[LogLevel2["INFO"] = 1] = "INFO";
|
|
9
|
-
LogLevel2[LogLevel2["WARN"] = 2] = "WARN";
|
|
10
|
-
LogLevel2[LogLevel2["ERROR"] = 3] = "ERROR";
|
|
11
|
-
return LogLevel2;
|
|
12
|
-
})({});
|
|
13
|
-
var Logger = class {
|
|
14
|
-
static {
|
|
15
|
-
_chunkXE4OXN2Wjs.__name.call(void 0, this, "Logger");
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
constructor(options = {}) {
|
|
21
|
-
this.level = _nullishCoalesce(options.level, () => ( 1));
|
|
22
|
-
this.prefix = _nullishCoalesce(options.prefix, () => ( "[Fusion]"));
|
|
23
|
-
this.timestamp = _nullishCoalesce(options.timestamp, () => ( true));
|
|
24
|
-
}
|
|
25
|
-
formatMessage(level, ...args) {
|
|
26
|
-
const timestamp = this.timestamp ? `[${(/* @__PURE__ */ new Date()).toISOString()}]` : "";
|
|
27
|
-
return `${timestamp} ${this.prefix} ${level}: ${args.join(" ")}`;
|
|
28
|
-
}
|
|
29
|
-
debug(...args) {
|
|
30
|
-
if (this.level <= 0) {
|
|
31
|
-
console.log(this.formatMessage("DEBUG", ...args));
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
info(...args) {
|
|
35
|
-
if (this.level <= 1) {
|
|
36
|
-
console.log(this.formatMessage("INFO", ...args));
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
warn(...args) {
|
|
40
|
-
if (this.level <= 2) {
|
|
41
|
-
console.warn(this.formatMessage("WARN", ...args));
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
error(...args) {
|
|
45
|
-
if (this.level <= 3) {
|
|
46
|
-
console.error(this.formatMessage("ERROR", ...args));
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
success(...args) {
|
|
50
|
-
console.log(this.formatMessage("\u2713", ...args));
|
|
51
|
-
}
|
|
52
|
-
};
|
|
53
|
-
var logger = new Logger();
|
|
54
|
-
function createLogger(options) {
|
|
55
|
-
return new Logger(options);
|
|
56
|
-
}
|
|
57
|
-
_chunkXE4OXN2Wjs.__name.call(void 0, createLogger, "createLogger");
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
exports.LogLevel = LogLevel; exports.Logger = Logger; exports.logger = logger; exports.createLogger = createLogger;
|
|
65
|
-
//# sourceMappingURL=chunk-WCKSKU3C.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/Volumes/Projects/wexts/packages/dist/chunk-WCKSKU3C.js","../src/core/logger.ts"],"names":["LogLevel","Logger","level","prefix","timestamp","options","formatMessage","args","Date","toISOString","console","success","log","logger","createLogger"],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B;AACA;ACJO,IAAKA,SAAAA,kBAAAA,CAAAA,QAAAA,CAAAA,SAAAA,EAAAA;ADMZ,EAAE,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE,OAAO;AAC7C,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,MAAM;AAC3C,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,MAAM;AAC3C,EAAE,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE,OAAO;AAC7C,EAAE,OCVUA,SAAAA;ADWZ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;ACEC,IAAMC,OAAAA,EAAN,MAAMA;ADAb,ECbA,OAaaA;ADCb,IAAI,qCAAM,IAAK,EAAE,QAAQ,CAAC;AAC1B,EAAE;AACF,ECFYC;ADGZ,ECFYC;ADGZ,ECFYC;ADGZ,ECDI,WAAA,CAAYC,QAAAA,EAAyB,CAAC,CAAA,EAAG;AACrC,IAAA,IAAA,CAAKH,MAAAA,mBAAQG,OAAAA,CAAQH,KAAAA,UAAK,GAAA;AAC1B,IAAA,IAAA,CAAKC,OAAAA,mBAASE,OAAAA,CAAQF,MAAAA,UAAU,YAAA;AAChC,IAAA,IAAA,CAAKC,UAAAA,mBAAYC,OAAAA,CAAQD,SAAAA,UAAa,MAAA;ADE9C,ECDI;ADEJ,ECAYE,aAAAA,CAAcJ,KAAAA,EAAAA,GAAkBK,IAAAA,EAAqB;AACzD,IAAA,MAAMH,UAAAA,EAAY,IAAA,CAAKA,UAAAA,EAAY,CAAA,CAAA,EAAA,iBAAI,IAAII,IAAAA,CAAAA,CAAAA,CAAAA,CAAOC,WAAAA,CAAW,CAAA,CAAA,CAAA,EAAA,EAAQ,EAAA;AACrE,IAAA,OAAO,CAAA,EAAA;AACX,EAAA;AAESF,EAAAA;AACD,IAAA;AACAG,MAAAA;AACJ,IAAA;AACJ,EAAA;AAEQH,EAAAA;AACA,IAAA;AACAG,MAAAA;AACJ,IAAA;AACJ,EAAA;AAEQH,EAAAA;AACA,IAAA;AACAG,MAAAA;AACJ,IAAA;AACJ,EAAA;AAESH,EAAAA;AACD,IAAA;AACAG,MAAAA;AACJ,IAAA;AACJ,EAAA;AAEAC,EAAAA;AACYC,IAAAA;AACZ,EAAA;AACJ;AAGaC;AAGGC;AACL,EAAA;AACX;AAFgBA;ADLJ;AACA;AACA;AACA;AACA;AACA;AACA","file":"/Volumes/Projects/wexts/packages/dist/chunk-WCKSKU3C.js","sourcesContent":[null,"export enum LogLevel {\n DEBUG = 0,\n INFO = 1,\n WARN = 2,\n ERROR = 3,\n}\n\nexport interface LoggerOptions {\n level?: LogLevel;\n prefix?: string;\n timestamp?: boolean;\n}\n\nexport class Logger {\n private level: LogLevel;\n private prefix: string;\n private timestamp: boolean;\n\n constructor(options: LoggerOptions = {}) {\n this.level = options.level ?? LogLevel.INFO;\n this.prefix = options.prefix ?? '[Fusion]';\n this.timestamp = options.timestamp ?? true;\n }\n\n private formatMessage(level: string, ...args: any[]): string {\n const timestamp = this.timestamp ? `[${new Date().toISOString()}]` : '';\n return `${timestamp} ${this.prefix} ${level}: ${args.join(' ')}`;\n }\n\n debug(...args: any[]): void {\n if (this.level <= LogLevel.DEBUG) {\n console.log(this.formatMessage('DEBUG', ...args));\n }\n }\n\n info(...args: any[]): void {\n if (this.level <= LogLevel.INFO) {\n console.log(this.formatMessage('INFO', ...args));\n }\n }\n\n warn(...args: any[]): void {\n if (this.level <= LogLevel.WARN) {\n console.warn(this.formatMessage('WARN', ...args));\n }\n }\n\n error(...args: any[]): void {\n if (this.level <= LogLevel.ERROR) {\n console.error(this.formatMessage('ERROR', ...args));\n }\n }\n\n success(...args: any[]): void {\n console.log(this.formatMessage('✓', ...args));\n }\n}\n\n// Export singleton instance\nexport const logger = new Logger();\n\n// Export factory\nexport function createLogger(options: LoggerOptions): Logger {\n return new Logger(options);\n}\n"]}
|
package/dist/chunk-WU6FW77M.mjs
DELETED
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
__name
|
|
3
|
-
} from "./chunk-7WULUGLH.mjs";
|
|
4
|
-
|
|
5
|
-
// src/client/fetcher.ts
|
|
6
|
-
var FusionFetcher = class {
|
|
7
|
-
static {
|
|
8
|
-
__name(this, "FusionFetcher");
|
|
9
|
-
}
|
|
10
|
-
baseUrl;
|
|
11
|
-
constructor(baseUrl = "/api") {
|
|
12
|
-
this.baseUrl = baseUrl;
|
|
13
|
-
}
|
|
14
|
-
async request(method, path, body) {
|
|
15
|
-
const headers = {
|
|
16
|
-
"Content-Type": "application/json"
|
|
17
|
-
};
|
|
18
|
-
if (typeof window !== "undefined") {
|
|
19
|
-
const token = localStorage.getItem("fusion_token");
|
|
20
|
-
if (token) headers["Authorization"] = `Bearer ${token}`;
|
|
21
|
-
}
|
|
22
|
-
const response = await fetch(`${this.baseUrl}${path}`, {
|
|
23
|
-
method,
|
|
24
|
-
headers,
|
|
25
|
-
body: body ? JSON.stringify(body) : void 0
|
|
26
|
-
});
|
|
27
|
-
if (!response.ok) {
|
|
28
|
-
throw new Error(`Fusion API Error: ${response.status} ${response.statusText}`);
|
|
29
|
-
}
|
|
30
|
-
if (response.status === 204) {
|
|
31
|
-
return void 0;
|
|
32
|
-
}
|
|
33
|
-
return response.json();
|
|
34
|
-
}
|
|
35
|
-
get(path) {
|
|
36
|
-
return this.request("GET", path);
|
|
37
|
-
}
|
|
38
|
-
post(path, body) {
|
|
39
|
-
return this.request("POST", path, body);
|
|
40
|
-
}
|
|
41
|
-
put(path, body) {
|
|
42
|
-
return this.request("PUT", path, body);
|
|
43
|
-
}
|
|
44
|
-
delete(path) {
|
|
45
|
-
return this.request("DELETE", path);
|
|
46
|
-
}
|
|
47
|
-
};
|
|
48
|
-
var apiFetcher = new FusionFetcher();
|
|
49
|
-
function createWextsRpcClient(manifest, options = {}) {
|
|
50
|
-
const services = new Set((manifest?.services ?? []).map((service) => service.name));
|
|
51
|
-
const methodMap = /* @__PURE__ */ new Map();
|
|
52
|
-
for (const service of manifest?.services ?? []) {
|
|
53
|
-
methodMap.set(service.name, new Set(service.methods.map((method) => method.name)));
|
|
54
|
-
}
|
|
55
|
-
const createServiceProxy = /* @__PURE__ */ __name((serviceName) => new Proxy({}, {
|
|
56
|
-
get(_target, methodName) {
|
|
57
|
-
if (typeof methodName !== "string") return void 0;
|
|
58
|
-
if (methodName === "then") return void 0;
|
|
59
|
-
const knownMethods = methodMap.get(serviceName);
|
|
60
|
-
if (knownMethods && !knownMethods.has(methodName)) {
|
|
61
|
-
throw new Error(`Wexts RPC method not found: ${serviceName}.${methodName}`);
|
|
62
|
-
}
|
|
63
|
-
return (...args) => invokeRpc(serviceName, methodName, args, options);
|
|
64
|
-
}
|
|
65
|
-
}), "createServiceProxy");
|
|
66
|
-
return new Proxy({}, {
|
|
67
|
-
get(_target, serviceName) {
|
|
68
|
-
if (typeof serviceName !== "string") return void 0;
|
|
69
|
-
if (serviceName === "then") return void 0;
|
|
70
|
-
if (services.size > 0 && !services.has(serviceName)) {
|
|
71
|
-
throw new Error(`Wexts RPC service not found: ${serviceName}`);
|
|
72
|
-
}
|
|
73
|
-
return createServiceProxy(serviceName);
|
|
74
|
-
}
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
__name(createWextsRpcClient, "createWextsRpcClient");
|
|
78
|
-
async function invokeRpc(serviceName, methodName, args, options) {
|
|
79
|
-
const fetchImpl = options.fetch ?? fetch;
|
|
80
|
-
const baseUrl = options.baseUrl ?? "/rpc";
|
|
81
|
-
const headers = {
|
|
82
|
-
"Content-Type": "application/json",
|
|
83
|
-
...await options.getHeaders?.() ?? {}
|
|
84
|
-
};
|
|
85
|
-
const response = await fetchImpl(`${baseUrl}/${encodeURIComponent(serviceName)}/${encodeURIComponent(methodName)}`, {
|
|
86
|
-
method: "POST",
|
|
87
|
-
headers,
|
|
88
|
-
body: JSON.stringify({
|
|
89
|
-
args
|
|
90
|
-
})
|
|
91
|
-
});
|
|
92
|
-
if (!response.ok) {
|
|
93
|
-
throw new Error(`Wexts RPC Error: ${response.status} ${response.statusText}`);
|
|
94
|
-
}
|
|
95
|
-
const payload = await response.json();
|
|
96
|
-
return payload.data;
|
|
97
|
-
}
|
|
98
|
-
__name(invokeRpc, "invokeRpc");
|
|
99
|
-
|
|
100
|
-
export {
|
|
101
|
-
FusionFetcher,
|
|
102
|
-
apiFetcher,
|
|
103
|
-
createWextsRpcClient
|
|
104
|
-
};
|
|
105
|
-
//# sourceMappingURL=chunk-WU6FW77M.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/client/fetcher.ts"],"sourcesContent":["import type { RpcManifest, RpcInvocationResponse } from '../rpc/types';\n\nexport class FusionFetcher {\n private baseUrl: string;\n\n constructor(baseUrl: string = '/api') {\n this.baseUrl = baseUrl;\n }\n\n private async request<T>(method: string, path: string, body?: any): Promise<T> {\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n };\n\n // Automatically attach Fusion Token if present\n if (typeof window !== 'undefined') {\n const token = localStorage.getItem('fusion_token');\n if (token) headers['Authorization'] = `Bearer ${token}`;\n }\n\n const response = await fetch(`${this.baseUrl}${path}`, {\n method,\n headers,\n body: body ? JSON.stringify(body) : undefined,\n });\n\n if (!response.ok) {\n throw new Error(`Fusion API Error: ${response.status} ${response.statusText}`);\n }\n\n if (response.status === 204) {\n return undefined as T;\n }\n\n return response.json();\n }\n\n get<T>(path: string) { return this.request<T>('GET', path); }\n post<T>(path: string, body: any) { return this.request<T>('POST', path, body); }\n put<T>(path: string, body: any) { return this.request<T>('PUT', path, body); }\n delete<T>(path: string) { return this.request<T>('DELETE', path); }\n}\n\nexport const apiFetcher = new FusionFetcher();\n\nexport interface WextsRpcClientOptions {\n baseUrl?: string;\n fetch?: typeof fetch;\n getHeaders?: () => Record<string, string> | Promise<Record<string, string>>;\n}\n\nexport type WextsRpcClient = Record<string, Record<string, (...args: unknown[]) => Promise<unknown>>>;\n\nexport function createWextsRpcClient(\n manifest: Pick<RpcManifest, 'services'> | undefined,\n options: WextsRpcClientOptions = {}\n): WextsRpcClient {\n const services = new Set((manifest?.services ?? []).map((service) => service.name));\n const methodMap = new Map<string, Set<string>>();\n\n for (const service of manifest?.services ?? []) {\n methodMap.set(service.name, new Set(service.methods.map((method) => method.name)));\n }\n\n const createServiceProxy = (serviceName: string) => new Proxy({}, {\n get(_target, methodName) {\n if (typeof methodName !== 'string') return undefined;\n if (methodName === 'then') return undefined;\n\n const knownMethods = methodMap.get(serviceName);\n if (knownMethods && !knownMethods.has(methodName)) {\n throw new Error(`Wexts RPC method not found: ${serviceName}.${methodName}`);\n }\n\n return (...args: unknown[]) => invokeRpc(serviceName, methodName, args, options);\n },\n }) as Record<string, (...args: unknown[]) => Promise<unknown>>;\n\n return new Proxy({}, {\n get(_target, serviceName) {\n if (typeof serviceName !== 'string') return undefined;\n if (serviceName === 'then') return undefined;\n if (services.size > 0 && !services.has(serviceName)) {\n throw new Error(`Wexts RPC service not found: ${serviceName}`);\n }\n\n return createServiceProxy(serviceName);\n },\n }) as WextsRpcClient;\n}\n\nasync function invokeRpc(\n serviceName: string,\n methodName: string,\n args: unknown[],\n options: WextsRpcClientOptions\n): Promise<unknown> {\n const fetchImpl = options.fetch ?? fetch;\n const baseUrl = options.baseUrl ?? '/rpc';\n const headers = {\n 'Content-Type': 'application/json',\n ...(await options.getHeaders?.() ?? {}),\n };\n const response = await fetchImpl(`${baseUrl}/${encodeURIComponent(serviceName)}/${encodeURIComponent(methodName)}`, {\n method: 'POST',\n headers,\n body: JSON.stringify({ args }),\n });\n\n if (!response.ok) {\n throw new Error(`Wexts RPC Error: ${response.status} ${response.statusText}`);\n }\n\n const payload = await response.json() as RpcInvocationResponse;\n return payload.data;\n}\n"],"mappings":"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","names":["FusionFetcher","baseUrl","request","method","path","body","headers","window","token","localStorage","getItem","response","fetch","JSON","stringify","undefined","ok","Error","status","statusText","json","get","post","put","delete","apiFetcher","createWextsRpcClient","manifest","options","services","Set","map","service","name","methodMap","Map","set","methods","createServiceProxy","serviceName","Proxy","_target","methodName","knownMethods","has","args","invokeRpc","size","fetchImpl","getHeaders","encodeURIComponent","payload","data"]}
|
package/dist/chunk-XE4OXN2W.js
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var __defProp = Object.defineProperty;
|
|
2
|
-
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
-
var __export = (target, all) => {
|
|
4
|
-
for (var name in all)
|
|
5
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
6
|
-
};
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
exports.__name = __name; exports.__export = __export;
|
|
12
|
-
//# sourceMappingURL=chunk-XE4OXN2W.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/Volumes/Projects/wexts/packages/dist/chunk-XE4OXN2W.js"],"names":[],"mappings":"AAAA,6EAAI,UAAU,EAAE,MAAM,CAAC,cAAc;AACrC,IAAI,OAAO,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;AACxF,IAAI,SAAS,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG;AAChC,EAAE,IAAI,CAAC,IAAI,KAAK,GAAG,GAAG;AACtB,IAAI,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;AACjE,CAAC;AACD;AACA;AACE;AACA;AACF,qDAAC","file":"/Volumes/Projects/wexts/packages/dist/chunk-XE4OXN2W.js"}
|
package/dist/chunk-YBM3IJEA.mjs
DELETED
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
__name
|
|
3
|
-
} from "./chunk-7WULUGLH.mjs";
|
|
4
|
-
|
|
5
|
-
// src/rpc/decorators.ts
|
|
6
|
-
import "reflect-metadata";
|
|
7
|
-
var RPC_SERVICE_KEY = "wexts:rpc:service";
|
|
8
|
-
var RPC_METHODS_KEY = "wexts:rpc:methods";
|
|
9
|
-
function RpcService(nameOrOptions) {
|
|
10
|
-
const options = normalizeServiceOptions(nameOrOptions);
|
|
11
|
-
return (target) => {
|
|
12
|
-
Reflect.defineMetadata(RPC_SERVICE_KEY, options, target);
|
|
13
|
-
return target;
|
|
14
|
-
};
|
|
15
|
-
}
|
|
16
|
-
__name(RpcService, "RpcService");
|
|
17
|
-
function RpcMethod(nameOrOptions) {
|
|
18
|
-
const options = normalizeMethodOptions(nameOrOptions);
|
|
19
|
-
return (target, propertyKey) => {
|
|
20
|
-
const constructor = target.constructor;
|
|
21
|
-
const methods = Reflect.getMetadata(RPC_METHODS_KEY, constructor) || [];
|
|
22
|
-
const nextMethods = methods.filter((method) => method.propertyKey !== propertyKey);
|
|
23
|
-
nextMethods.push({
|
|
24
|
-
propertyKey,
|
|
25
|
-
...options
|
|
26
|
-
});
|
|
27
|
-
Reflect.defineMetadata(RPC_METHODS_KEY, nextMethods, constructor);
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
__name(RpcMethod, "RpcMethod");
|
|
31
|
-
function RequireAuth() {
|
|
32
|
-
return (target, propertyKey) => {
|
|
33
|
-
if (propertyKey) {
|
|
34
|
-
RpcMethod({
|
|
35
|
-
requireAuth: true
|
|
36
|
-
})(target, propertyKey, Object.getOwnPropertyDescriptor(target, propertyKey));
|
|
37
|
-
return;
|
|
38
|
-
}
|
|
39
|
-
const existing = getRuntimeRpcServiceMetadata(target);
|
|
40
|
-
Reflect.defineMetadata(RPC_SERVICE_KEY, {
|
|
41
|
-
...existing,
|
|
42
|
-
requireAuth: true
|
|
43
|
-
}, target);
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
__name(RequireAuth, "RequireAuth");
|
|
47
|
-
function getRuntimeRpcServiceMetadata(target) {
|
|
48
|
-
return Reflect.getMetadata(RPC_SERVICE_KEY, target);
|
|
49
|
-
}
|
|
50
|
-
__name(getRuntimeRpcServiceMetadata, "getRuntimeRpcServiceMetadata");
|
|
51
|
-
function getRuntimeRpcMethodsMetadata(target) {
|
|
52
|
-
return Reflect.getMetadata(RPC_METHODS_KEY, target) || [];
|
|
53
|
-
}
|
|
54
|
-
__name(getRuntimeRpcMethodsMetadata, "getRuntimeRpcMethodsMetadata");
|
|
55
|
-
function getRpcAuthPolicy(requireAuth) {
|
|
56
|
-
return requireAuth ? "required" : "public";
|
|
57
|
-
}
|
|
58
|
-
__name(getRpcAuthPolicy, "getRpcAuthPolicy");
|
|
59
|
-
var WextsRpcService = RpcService;
|
|
60
|
-
var WextsRpc = RpcMethod;
|
|
61
|
-
function normalizeServiceOptions(input) {
|
|
62
|
-
if (typeof input === "string") {
|
|
63
|
-
return {
|
|
64
|
-
name: input,
|
|
65
|
-
requireAuth: false
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
|
-
return {
|
|
69
|
-
name: input?.name,
|
|
70
|
-
requireAuth: input?.requireAuth ?? true
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
__name(normalizeServiceOptions, "normalizeServiceOptions");
|
|
74
|
-
function normalizeMethodOptions(input) {
|
|
75
|
-
if (typeof input === "string") {
|
|
76
|
-
return {
|
|
77
|
-
name: input
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
return input ?? {};
|
|
81
|
-
}
|
|
82
|
-
__name(normalizeMethodOptions, "normalizeMethodOptions");
|
|
83
|
-
|
|
84
|
-
export {
|
|
85
|
-
RpcService,
|
|
86
|
-
RpcMethod,
|
|
87
|
-
RequireAuth,
|
|
88
|
-
getRuntimeRpcServiceMetadata,
|
|
89
|
-
getRuntimeRpcMethodsMetadata,
|
|
90
|
-
getRpcAuthPolicy,
|
|
91
|
-
WextsRpcService,
|
|
92
|
-
WextsRpc
|
|
93
|
-
};
|
|
94
|
-
//# sourceMappingURL=chunk-YBM3IJEA.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/rpc/decorators.ts"],"sourcesContent":["import 'reflect-metadata';\nimport type { RpcAuthPolicy } from './types';\n\nconst RPC_SERVICE_KEY = 'wexts:rpc:service';\nconst RPC_METHODS_KEY = 'wexts:rpc:methods';\n\nexport interface RpcServiceOptions {\n name?: string;\n requireAuth?: boolean;\n}\n\nexport interface RpcMethodOptions {\n name?: string;\n requireAuth?: boolean;\n}\n\nexport interface RuntimeRpcServiceMetadata {\n name?: string;\n requireAuth: boolean;\n}\n\nexport interface RuntimeRpcMethodMetadata {\n propertyKey: string | symbol;\n name?: string;\n requireAuth?: boolean;\n}\n\nexport function RpcService(nameOrOptions?: string | RpcServiceOptions): ClassDecorator {\n const options = normalizeServiceOptions(nameOrOptions);\n\n return (target) => {\n Reflect.defineMetadata(RPC_SERVICE_KEY, options, target);\n return target;\n };\n}\n\nexport function RpcMethod(nameOrOptions?: string | RpcMethodOptions): MethodDecorator {\n const options = normalizeMethodOptions(nameOrOptions);\n\n return (target, propertyKey) => {\n const constructor = target.constructor;\n const methods: RuntimeRpcMethodMetadata[] = Reflect.getMetadata(RPC_METHODS_KEY, constructor) || [];\n const nextMethods = methods.filter((method) => method.propertyKey !== propertyKey);\n nextMethods.push({ propertyKey, ...options });\n Reflect.defineMetadata(RPC_METHODS_KEY, nextMethods, constructor);\n };\n}\n\nexport function RequireAuth(): MethodDecorator & ClassDecorator {\n return (target: object, propertyKey?: string | symbol) => {\n if (propertyKey) {\n RpcMethod({ requireAuth: true })(target, propertyKey, Object.getOwnPropertyDescriptor(target, propertyKey)!);\n return;\n }\n\n const existing = getRuntimeRpcServiceMetadata(target as Function);\n Reflect.defineMetadata(RPC_SERVICE_KEY, { ...existing, requireAuth: true }, target);\n };\n}\n\nexport function getRuntimeRpcServiceMetadata(target: Function): RuntimeRpcServiceMetadata | undefined {\n return Reflect.getMetadata(RPC_SERVICE_KEY, target);\n}\n\nexport function getRuntimeRpcMethodsMetadata(target: Function): RuntimeRpcMethodMetadata[] {\n return Reflect.getMetadata(RPC_METHODS_KEY, target) || [];\n}\n\nexport function getRpcAuthPolicy(requireAuth?: boolean): RpcAuthPolicy {\n return requireAuth ? 'required' : 'public';\n}\n\nexport const WextsRpcService = RpcService;\nexport const WextsRpc = RpcMethod;\n\nfunction normalizeServiceOptions(input?: string | RpcServiceOptions): RuntimeRpcServiceMetadata {\n if (typeof input === 'string') {\n return { name: input, requireAuth: false };\n }\n\n return {\n name: input?.name,\n requireAuth: input?.requireAuth ?? true,\n };\n}\n\nfunction normalizeMethodOptions(input?: string | RpcMethodOptions): RpcMethodOptions {\n if (typeof input === 'string') {\n return { name: input };\n }\n\n return input ?? {};\n}\n"],"mappings":";;;;;AAAA,OAAO;AAGP,IAAMA,kBAAkB;AACxB,IAAMC,kBAAkB;AAuBjB,SAASC,WAAWC,eAA0C;AACjE,QAAMC,UAAUC,wBAAwBF,aAAAA;AAExC,SAAO,CAACG,WAAAA;AACJC,YAAQC,eAAeR,iBAAiBI,SAASE,MAAAA;AACjD,WAAOA;EACX;AACJ;AAPgBJ;AAST,SAASO,UAAUN,eAAyC;AAC/D,QAAMC,UAAUM,uBAAuBP,aAAAA;AAEvC,SAAO,CAACG,QAAQK,gBAAAA;AACZ,UAAMC,cAAcN,OAAO;AAC3B,UAAMO,UAAsCN,QAAQO,YAAYb,iBAAiBW,WAAAA,KAAgB,CAAA;AACjG,UAAMG,cAAcF,QAAQG,OAAO,CAACC,WAAWA,OAAON,gBAAgBA,WAAAA;AACtEI,gBAAYG,KAAK;MAAEP;MAAa,GAAGP;IAAQ,CAAA;AAC3CG,YAAQC,eAAeP,iBAAiBc,aAAaH,WAAAA;EACzD;AACJ;AAVgBH;AAYT,SAASU,cAAAA;AACZ,SAAO,CAACb,QAAgBK,gBAAAA;AACpB,QAAIA,aAAa;AACbF,gBAAU;QAAEW,aAAa;MAAK,CAAA,EAAGd,QAAQK,aAAaU,OAAOC,yBAAyBhB,QAAQK,WAAAA,CAAAA;AAC9F;IACJ;AAEA,UAAMY,WAAWC,6BAA6BlB,MAAAA;AAC9CC,YAAQC,eAAeR,iBAAiB;MAAE,GAAGuB;MAAUH,aAAa;IAAK,GAAGd,MAAAA;EAChF;AACJ;AAVgBa;AAYT,SAASK,6BAA6BlB,QAAgB;AACzD,SAAOC,QAAQO,YAAYd,iBAAiBM,MAAAA;AAChD;AAFgBkB;AAIT,SAASC,6BAA6BnB,QAAgB;AACzD,SAAOC,QAAQO,YAAYb,iBAAiBK,MAAAA,KAAW,CAAA;AAC3D;AAFgBmB;AAIT,SAASC,iBAAiBN,aAAqB;AAClD,SAAOA,cAAc,aAAa;AACtC;AAFgBM;AAIT,IAAMC,kBAAkBzB;AACxB,IAAM0B,WAAWnB;AAExB,SAASJ,wBAAwBwB,OAAkC;AAC/D,MAAI,OAAOA,UAAU,UAAU;AAC3B,WAAO;MAAEC,MAAMD;MAAOT,aAAa;IAAM;EAC7C;AAEA,SAAO;IACHU,MAAMD,OAAOC;IACjBV,aAAaS,OAAOT,eAAe;EACnC;AACJ;AATSf;AAWT,SAASK,uBAAuBmB,OAAiC;AAC7D,MAAI,OAAOA,UAAU,UAAU;AAC3B,WAAO;MAAEC,MAAMD;IAAM;EACzB;AAEA,SAAOA,SAAS,CAAC;AACrB;AANSnB;","names":["RPC_SERVICE_KEY","RPC_METHODS_KEY","RpcService","nameOrOptions","options","normalizeServiceOptions","target","Reflect","defineMetadata","RpcMethod","normalizeMethodOptions","propertyKey","constructor","methods","getMetadata","nextMethods","filter","method","push","RequireAuth","requireAuth","Object","getOwnPropertyDescriptor","existing","getRuntimeRpcServiceMetadata","getRuntimeRpcMethodsMetadata","getRpcAuthPolicy","WextsRpcService","WextsRpc","input","name"]}
|
package/dist/chunk-YN6WIWNQ.mjs
DELETED
|
@@ -1,228 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
logger
|
|
3
|
-
} from "./chunk-JHOVXH3X.mjs";
|
|
4
|
-
import {
|
|
5
|
-
__export,
|
|
6
|
-
__name
|
|
7
|
-
} from "./chunk-7WULUGLH.mjs";
|
|
8
|
-
|
|
9
|
-
// src/dev-server/index.ts
|
|
10
|
-
var dev_server_exports = {};
|
|
11
|
-
__export(dev_server_exports, {
|
|
12
|
-
FusionDevServer: () => FusionDevServer,
|
|
13
|
-
ProcessRunner: () => ProcessRunner,
|
|
14
|
-
ProxyServer: () => ProxyServer
|
|
15
|
-
});
|
|
16
|
-
|
|
17
|
-
// src/dev-server/process-runner.ts
|
|
18
|
-
import { spawn } from "child_process";
|
|
19
|
-
import * as pc from "picocolors";
|
|
20
|
-
var ProcessRunner = class {
|
|
21
|
-
static {
|
|
22
|
-
__name(this, "ProcessRunner");
|
|
23
|
-
}
|
|
24
|
-
processes = /* @__PURE__ */ new Map();
|
|
25
|
-
colors = {
|
|
26
|
-
cyan: pc.cyan,
|
|
27
|
-
green: pc.green,
|
|
28
|
-
yellow: pc.yellow,
|
|
29
|
-
magenta: pc.magenta,
|
|
30
|
-
blue: pc.blue
|
|
31
|
-
};
|
|
32
|
-
async run(configs) {
|
|
33
|
-
logger.info("\u{1F680} Starting development servers...\n");
|
|
34
|
-
for (const config of configs) {
|
|
35
|
-
this.startProcess(config);
|
|
36
|
-
}
|
|
37
|
-
process.on("SIGINT", () => this.stopAll());
|
|
38
|
-
process.on("SIGTERM", () => this.stopAll());
|
|
39
|
-
}
|
|
40
|
-
startProcess(config) {
|
|
41
|
-
const { name, command, args, cwd, color, env } = config;
|
|
42
|
-
const colorFn = this.colors[color];
|
|
43
|
-
const prefix = colorFn(`[${name}]`);
|
|
44
|
-
logger.info(`${prefix} Starting...`);
|
|
45
|
-
const proc = spawn(command, args, {
|
|
46
|
-
cwd,
|
|
47
|
-
stdio: "pipe",
|
|
48
|
-
shell: true,
|
|
49
|
-
env: {
|
|
50
|
-
...process.env,
|
|
51
|
-
...env
|
|
52
|
-
}
|
|
53
|
-
});
|
|
54
|
-
this.processes.set(name, proc);
|
|
55
|
-
proc.stdout?.on("data", (data) => {
|
|
56
|
-
const lines = data.toString().split("\n").filter((l) => l.trim());
|
|
57
|
-
lines.forEach((line) => {
|
|
58
|
-
console.log(`${prefix} ${line}`);
|
|
59
|
-
});
|
|
60
|
-
});
|
|
61
|
-
proc.stderr?.on("data", (data) => {
|
|
62
|
-
const lines = data.toString().split("\n").filter((l) => l.trim());
|
|
63
|
-
lines.forEach((line) => {
|
|
64
|
-
console.error(`${prefix} ${pc.red(line)}`);
|
|
65
|
-
});
|
|
66
|
-
});
|
|
67
|
-
proc.on("exit", (code) => {
|
|
68
|
-
if (code !== 0 && code !== null) {
|
|
69
|
-
logger.error(`${prefix} Exited with code ${code}`);
|
|
70
|
-
}
|
|
71
|
-
this.processes.delete(name);
|
|
72
|
-
});
|
|
73
|
-
proc.on("error", (error) => {
|
|
74
|
-
logger.error(`${prefix} Error:`, error.message);
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
stopAll() {
|
|
78
|
-
logger.info("\n\u{1F6D1} Stopping all processes...");
|
|
79
|
-
for (const [name, proc] of this.processes.entries()) {
|
|
80
|
-
logger.info(`Stopping ${name}...`);
|
|
81
|
-
proc.kill("SIGTERM");
|
|
82
|
-
}
|
|
83
|
-
setTimeout(() => {
|
|
84
|
-
process.exit(0);
|
|
85
|
-
}, 1e3);
|
|
86
|
-
}
|
|
87
|
-
isRunning(name) {
|
|
88
|
-
return this.processes.has(name);
|
|
89
|
-
}
|
|
90
|
-
};
|
|
91
|
-
|
|
92
|
-
// src/dev-server/dev-server.ts
|
|
93
|
-
import * as path from "path";
|
|
94
|
-
import * as fs from "fs";
|
|
95
|
-
var FusionDevServer = class {
|
|
96
|
-
static {
|
|
97
|
-
__name(this, "FusionDevServer");
|
|
98
|
-
}
|
|
99
|
-
processRunner;
|
|
100
|
-
constructor() {
|
|
101
|
-
this.processRunner = new ProcessRunner();
|
|
102
|
-
}
|
|
103
|
-
async start(config) {
|
|
104
|
-
const { apiPath, webPath, webPort = 3e3, apiPort = 5050, useProxy = false } = config;
|
|
105
|
-
if (useProxy) {
|
|
106
|
-
throw new Error("The legacy dev proxy is disabled because it conflicts with the Next.js port. Use the production runtime for single-port serving.");
|
|
107
|
-
}
|
|
108
|
-
if (!fs.existsSync(apiPath)) {
|
|
109
|
-
throw new Error(`API path not found: ${apiPath}`);
|
|
110
|
-
}
|
|
111
|
-
if (!fs.existsSync(webPath)) {
|
|
112
|
-
throw new Error(`Web path not found: ${webPath}`);
|
|
113
|
-
}
|
|
114
|
-
const processes = [];
|
|
115
|
-
processes.push({
|
|
116
|
-
name: "API",
|
|
117
|
-
command: "npm",
|
|
118
|
-
args: [
|
|
119
|
-
"run",
|
|
120
|
-
"start:dev"
|
|
121
|
-
],
|
|
122
|
-
cwd: path.resolve(apiPath),
|
|
123
|
-
color: "cyan",
|
|
124
|
-
env: {
|
|
125
|
-
PORT: apiPort.toString()
|
|
126
|
-
}
|
|
127
|
-
});
|
|
128
|
-
processes.push({
|
|
129
|
-
name: "Web",
|
|
130
|
-
command: "npm",
|
|
131
|
-
args: [
|
|
132
|
-
"run",
|
|
133
|
-
"dev",
|
|
134
|
-
"--",
|
|
135
|
-
"-p",
|
|
136
|
-
webPort.toString()
|
|
137
|
-
],
|
|
138
|
-
cwd: path.resolve(webPath),
|
|
139
|
-
color: "green",
|
|
140
|
-
env: {
|
|
141
|
-
NEXT_PUBLIC_API_URL: `http://localhost:${apiPort}`
|
|
142
|
-
}
|
|
143
|
-
});
|
|
144
|
-
await this.processRunner.run(processes);
|
|
145
|
-
logger.info("\u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557");
|
|
146
|
-
logger.info("\u2551 Fusion Development Server Ready \u2551");
|
|
147
|
-
logger.info("\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255D\n");
|
|
148
|
-
logger.info(`\u{1F310} Web: http://localhost:${webPort}`);
|
|
149
|
-
logger.info(`\u{1F50C} API: http://localhost:${apiPort}`);
|
|
150
|
-
logger.info("\n");
|
|
151
|
-
}
|
|
152
|
-
stop() {
|
|
153
|
-
this.processRunner.stopAll();
|
|
154
|
-
}
|
|
155
|
-
};
|
|
156
|
-
|
|
157
|
-
// src/dev-server/proxy.ts
|
|
158
|
-
import http from "http";
|
|
159
|
-
import httpProxy from "http-proxy";
|
|
160
|
-
import * as pc2 from "picocolors";
|
|
161
|
-
var ProxyServer = class {
|
|
162
|
-
static {
|
|
163
|
-
__name(this, "ProxyServer");
|
|
164
|
-
}
|
|
165
|
-
server = null;
|
|
166
|
-
proxy = null;
|
|
167
|
-
async start(config) {
|
|
168
|
-
const { port, apiTarget, apiPrefix } = config;
|
|
169
|
-
this.proxy = httpProxy.createProxyServer({
|
|
170
|
-
target: apiTarget,
|
|
171
|
-
changeOrigin: true,
|
|
172
|
-
ws: true
|
|
173
|
-
});
|
|
174
|
-
this.proxy.on("error", (err, req, res) => {
|
|
175
|
-
logger.error("Proxy error:", err.message);
|
|
176
|
-
if (res && "headersSent" in res && !res.headersSent) {
|
|
177
|
-
res.writeHead(502, {
|
|
178
|
-
"Content-Type": "text/plain"
|
|
179
|
-
});
|
|
180
|
-
res.end("Bad Gateway - API server unavailable");
|
|
181
|
-
}
|
|
182
|
-
});
|
|
183
|
-
this.server = http.createServer((req, res) => {
|
|
184
|
-
if (req.url?.startsWith(apiPrefix)) {
|
|
185
|
-
const newUrl = req.url.substring(apiPrefix.length) || "/";
|
|
186
|
-
req.url = newUrl;
|
|
187
|
-
logger.info(pc2.gray(`\u2192 ${req.method} ${apiPrefix}${newUrl}`));
|
|
188
|
-
this.proxy.web(req, res);
|
|
189
|
-
} else {
|
|
190
|
-
res.writeHead(404);
|
|
191
|
-
res.end("Not Found");
|
|
192
|
-
}
|
|
193
|
-
});
|
|
194
|
-
this.server.on("upgrade", (req, socket, head) => {
|
|
195
|
-
if (req.url?.startsWith(apiPrefix)) {
|
|
196
|
-
const newUrl = req.url.substring(apiPrefix.length) || "/";
|
|
197
|
-
req.url = newUrl;
|
|
198
|
-
this.proxy.ws(req, socket, head);
|
|
199
|
-
}
|
|
200
|
-
});
|
|
201
|
-
return new Promise((resolve2) => {
|
|
202
|
-
this.server.listen(port, () => {
|
|
203
|
-
logger.success(`\u2705 Proxy server running on port ${port}`);
|
|
204
|
-
logger.info(` Forwarding ${pc2.cyan(apiPrefix + "/*")} \u2192 ${pc2.cyan(apiTarget)}
|
|
205
|
-
`);
|
|
206
|
-
resolve2();
|
|
207
|
-
});
|
|
208
|
-
});
|
|
209
|
-
}
|
|
210
|
-
stop() {
|
|
211
|
-
if (this.server) {
|
|
212
|
-
this.server.close();
|
|
213
|
-
this.server = null;
|
|
214
|
-
}
|
|
215
|
-
if (this.proxy) {
|
|
216
|
-
this.proxy.close();
|
|
217
|
-
this.proxy = null;
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
};
|
|
221
|
-
|
|
222
|
-
export {
|
|
223
|
-
ProcessRunner,
|
|
224
|
-
FusionDevServer,
|
|
225
|
-
ProxyServer,
|
|
226
|
-
dev_server_exports
|
|
227
|
-
};
|
|
228
|
-
//# sourceMappingURL=chunk-YN6WIWNQ.mjs.map
|