epistery 1.3.2 → 1.3.3

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 (48) hide show
  1. package/MobileIdentity.md +222 -0
  2. package/artifacts/build-info/4b5aa62ad21f91b268d8ca803f49dd33.json +1 -0
  3. package/artifacts/contracts/IdentityContract.sol/IdentityContract.dbg.json +1 -1
  4. package/artifacts/contracts/agent.sol/Agent.dbg.json +1 -1
  5. package/artifacts/contracts/agent.sol/Agent.json +2 -7
  6. package/cli/epistery.mjs +1 -1
  7. package/contracts/agent.sol +2 -3
  8. package/dist/epistery.d.ts.map +1 -1
  9. package/dist/epistery.js +21 -6
  10. package/dist/epistery.js.map +1 -1
  11. package/dist/utils/CliWallet.js +1 -1
  12. package/dist/utils/CliWallet.js.map +1 -1
  13. package/dist/utils/Utils.d.ts +1 -1
  14. package/dist/utils/Utils.d.ts.map +1 -1
  15. package/dist/utils/Utils.js +2 -2
  16. package/dist/utils/Utils.js.map +1 -1
  17. package/hardhat.config.js +2 -1
  18. package/index.mjs +6 -8
  19. package/package.json +1 -1
  20. package/src/epistery.ts +18 -6
  21. package/src/utils/CliWallet.ts +1 -1
  22. package/src/utils/Utils.ts +2 -2
  23. package/artifacts/build-info/77fa7a8b1d8980b54997e3a44ae9801d.json +0 -1
  24. package/artifacts/build-info/d543a0323a7b2da80b60c3056668fbde.json +0 -1
  25. package/dist/api.d.ts +0 -2
  26. package/dist/api.d.ts.map +0 -1
  27. package/dist/api.js +0 -130
  28. package/dist/api.js.map +0 -1
  29. package/dist/controllers/baseController.d.ts +0 -8
  30. package/dist/controllers/baseController.d.ts.map +0 -1
  31. package/dist/controllers/baseController.js +0 -25
  32. package/dist/controllers/baseController.js.map +0 -1
  33. package/dist/controllers/create/CreateController.d.ts +0 -6
  34. package/dist/controllers/create/CreateController.d.ts.map +0 -1
  35. package/dist/controllers/create/CreateController.js +0 -17
  36. package/dist/controllers/create/CreateController.js.map +0 -1
  37. package/dist/controllers/ssl/SSLController.d.ts +0 -17
  38. package/dist/controllers/ssl/SSLController.d.ts.map +0 -1
  39. package/dist/controllers/ssl/SSLController.js +0 -129
  40. package/dist/controllers/ssl/SSLController.js.map +0 -1
  41. package/dist/controllers/status/StatusController.d.ts +0 -6
  42. package/dist/controllers/status/StatusController.d.ts.map +0 -1
  43. package/dist/controllers/status/StatusController.js +0 -29
  44. package/dist/controllers/status/StatusController.js.map +0 -1
  45. package/dist/controllers/write/WriteController.d.ts +0 -7
  46. package/dist/controllers/write/WriteController.d.ts.map +0 -1
  47. package/dist/controllers/write/WriteController.js +0 -50
  48. package/dist/controllers/write/WriteController.js.map +0 -1
package/dist/api.d.ts DELETED
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=api.d.ts.map
package/dist/api.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":""}
package/dist/api.js DELETED
@@ -1,130 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- const dotenv = __importStar(require("dotenv"));
40
- const express_1 = __importDefault(require("express"));
41
- const cookie_parser_1 = __importDefault(require("cookie-parser"));
42
- const path_1 = __importDefault(require("path"));
43
- const fs_1 = __importDefault(require("fs"));
44
- const index_js_1 = require("./utils/index.js");
45
- const CreateController_js_1 = require("./controllers/create/CreateController.js");
46
- const StatusController_js_1 = require("./controllers/status/StatusController.js");
47
- const WriteController_js_1 = require("./controllers/write/WriteController.js");
48
- const epistery_1 = require("epistery");
49
- dotenv.config();
50
- epistery_1.Epistery.initialize();
51
- const app = (0, express_1.default)();
52
- const PORT = process.env.PORT || 3000;
53
- app.use(express_1.default.json());
54
- app.use((0, cookie_parser_1.default)());
55
- // attach to the active domain. The domain is declared by context not by the environment
56
- app.use(async (req, res, next) => {
57
- if (req.app.locals.episteryConfig?.domain?.name !== req.hostname) {
58
- req.app.locals.episteryConfig = index_js_1.Utils.GetConfig();
59
- index_js_1.Utils.InitServerWallet(req.hostname);
60
- await app.locals.episteryConfig.loadDomain(req.hostname);
61
- }
62
- next();
63
- });
64
- const createController = new CreateController_js_1.CreateController();
65
- const statusController = new StatusController_js_1.StatusController();
66
- const writeController = new WriteController_js_1.WriteController();
67
- // Client library routes
68
- const library = {
69
- "client.js": "client/client.js",
70
- "witness.js": "client/witness.js",
71
- "ethers.js": "client/ethers.js",
72
- "ethers.min.js": "client/ethers.min.js"
73
- };
74
- // Serve client library files
75
- app.get('/.epistery/lib/:module', (req, res) => {
76
- const modulePath = library[req.params.module];
77
- if (!modulePath)
78
- return res.status(404).send('Library not found');
79
- const fullPath = path_1.default.resolve(modulePath);
80
- if (!fs_1.default.existsSync(fullPath))
81
- return res.status(404).send('File not found');
82
- const ext = fullPath.slice(fullPath.lastIndexOf('.') + 1);
83
- const contentTypes = {
84
- 'js': 'text/javascript',
85
- 'mjs': 'text/javascript',
86
- 'css': 'text/css',
87
- 'html': 'text/html',
88
- 'json': 'application/json'
89
- };
90
- if (contentTypes[ext]) {
91
- res.set('Content-Type', contentTypes[ext]);
92
- }
93
- res.sendFile(fullPath);
94
- });
95
- // HTML status page
96
- app.get('/.epistery/status.html', (req, res) => {
97
- const config = index_js_1.Utils.GetConfig();
98
- const domain = config.activeDomain.domain;
99
- const serverDomain = index_js_1.Utils.GetDomainInfo(domain);
100
- if (!serverDomain.wallet) {
101
- return res.status(500).send('Server wallet not found');
102
- }
103
- const status = epistery_1.Epistery.getStatus({}, serverDomain);
104
- const templatePath = path_1.default.resolve('client/status.html');
105
- if (!fs_1.default.existsSync(templatePath)) {
106
- return res.status(404).send('Status template not found');
107
- }
108
- let template = fs_1.default.readFileSync(templatePath, 'utf8');
109
- // Simple template replacement
110
- template = template.replace(/\{\{server\.domain\}\}/g, domain);
111
- template = template.replace(/\{\{server\.walletAddress\}\}/g, status.server.walletAddress || '');
112
- template = template.replace(/\{\{server\.provider\}\}/g, status.server.provider || '');
113
- template = template.replace(/\{\{server\.chainId\}\}/g, status.server.chainId?.toString() || '');
114
- template = template.replace(/\{\{timestamp\}\}/g, status.timestamp);
115
- res.send(template);
116
- });
117
- // API routes
118
- app.get('/.epistery/status', statusController.index.bind(statusController));
119
- app.get('/.epistery/create', createController.index.bind(createController));
120
- app.post('/.epistery/data/write', writeController.index.bind(writeController));
121
- app.listen(PORT, () => {
122
- console.log(`Server is running on http://localhost:${PORT}`);
123
- console.log('Available routes:');
124
- console.log(' GET /.epistery/status');
125
- console.log(' GET /.epistery/status.html');
126
- console.log(' GET /.epistery/create');
127
- console.log(' GET /.epistery/lib/:module');
128
- console.log(' POST /.epistery/data/write');
129
- });
130
- //# sourceMappingURL=api.js.map
package/dist/api.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- import { Response, Request } from 'express';
2
- export declare abstract class Controller {
3
- protected sendResponse(res: Response, data: any, statusCode?: number): void;
4
- protected setCookie(res: Response, name: string, data: any): void;
5
- protected getCookie(req: Request, name: string): any;
6
- protected sendError(res: Response, message: string, statusCode?: number): void;
7
- }
8
- //# sourceMappingURL=baseController.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"baseController.d.ts","sourceRoot":"","sources":["../../src/controllers/baseController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAC5C,8BAAsB,UAAU;IAC9B,SAAS,CAAC,YAAY,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,GAAE,MAAY;IAIzE,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG;IAI1D,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,GAAG;IAOpD,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,GAAE,MAAY;CAM7E"}
@@ -1,25 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Controller = void 0;
4
- class Controller {
5
- sendResponse(res, data, statusCode = 200) {
6
- res.status(statusCode).json(data);
7
- }
8
- setCookie(res, name, data) {
9
- res.cookie(name, JSON.stringify(data));
10
- }
11
- getCookie(req, name) {
12
- try {
13
- return req.cookies[name];
14
- }
15
- catch (e) { }
16
- }
17
- sendError(res, message, statusCode = 500) {
18
- res.status(statusCode).json({
19
- error: message,
20
- timestamp: new Date().toISOString()
21
- });
22
- }
23
- }
24
- exports.Controller = Controller;
25
- //# sourceMappingURL=baseController.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"baseController.js","sourceRoot":"","sources":["../../src/controllers/baseController.ts"],"names":[],"mappings":";;;AACA,MAAsB,UAAU;IACpB,YAAY,CAAC,GAAa,EAAE,IAAS,EAAE,aAAqB,GAAG;QACvE,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAES,SAAS,CAAC,GAAa,EAAE,IAAY,EAAE,IAAS;QACxD,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACzC,CAAC;IAES,SAAS,CAAC,GAAY,EAAE,IAAY;QAC5C,IAAI,CAAC;YACH,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;QACD,OAAM,CAAC,EAAE,CAAC,CAAA,CAAC;IACb,CAAC;IAES,SAAS,CAAC,GAAa,EAAE,OAAe,EAAE,aAAqB,GAAG;QAC1E,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC;YAC1B,KAAK,EAAE,OAAO;YACd,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;IACL,CAAC;CACF;AAtBD,gCAsBC"}
@@ -1,6 +0,0 @@
1
- import { Request, Response } from 'express';
2
- import { Controller } from '../baseController';
3
- export declare class CreateController extends Controller {
4
- index(req: Request, res: Response): void;
5
- }
6
- //# sourceMappingURL=CreateController.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CreateController.d.ts","sourceRoot":"","sources":["../../../src/controllers/create/CreateController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAI/C,qBAAa,gBAAiB,SAAQ,UAAU;IACvC,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ;CASzC"}
@@ -1,17 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CreateController = void 0;
4
- const baseController_1 = require("../baseController");
5
- const epistery_1 = require("epistery");
6
- class CreateController extends baseController_1.Controller {
7
- index(req, res) {
8
- const walletInfo = epistery_1.Epistery.createWallet();
9
- const clientCookie = {
10
- wallet: walletInfo
11
- };
12
- this.setCookie(res, 'epistery-client', clientCookie);
13
- this.sendResponse(res, clientCookie);
14
- }
15
- }
16
- exports.CreateController = CreateController;
17
- //# sourceMappingURL=CreateController.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CreateController.js","sourceRoot":"","sources":["../../../src/controllers/create/CreateController.ts"],"names":[],"mappings":";;;AACA,sDAA+C;AAC/C,uCAAoC;AAGpC,MAAa,gBAAiB,SAAQ,2BAAU;IACvC,KAAK,CAAC,GAAY,EAAE,GAAa;QACtC,MAAM,UAAU,GAAoB,mBAAQ,CAAC,YAAY,EAAE,CAAC;QAC5D,MAAM,YAAY,GAAG;YACnB,MAAM,EAAE,UAAU;SACnB,CAAC;QAEF,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,iBAAiB,EAAE,YAAY,CAAC,CAAC;QACrD,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IACvC,CAAC;CACF;AAVD,4CAUC"}
@@ -1,17 +0,0 @@
1
- import { Request, Response } from 'express';
2
- import { Controller } from '../baseController';
3
- import tls from 'tls';
4
- export declare class SSLController extends Controller {
5
- private pending;
6
- private challenges;
7
- private acme?;
8
- private epistery;
9
- constructor();
10
- index(req: Request, res: Response): void;
11
- initialize(): Promise<void>;
12
- static get SNI(): {
13
- SNICallback: (hostname: string, cb: (err: Error | null, ctx?: tls.SecureContext) => void) => void;
14
- };
15
- getCert(servername: string, attempt?: number): Promise<void>;
16
- }
17
- //# sourceMappingURL=SSLController.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SSLController.d.ts","sourceRoot":"","sources":["../../../src/controllers/ssl/SSLController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,GAAG,MAAM,KAAK,CAAC;AActB,qBAAa,aAAc,SAAQ,UAAU;IACzC,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,IAAI,CAAC,CAAc;IAC3B,OAAO,CAAC,QAAQ,CAAY;;IAOrB,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,IAAI;IAUzC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAQjC,MAAM,KAAK,GAAG,IAAI;QAAE,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,aAAa,KAAK,IAAI,KAAK,IAAI,CAAA;KAAE,CAWtH;IACK,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,GAAE,MAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CA6CxE"}
@@ -1,129 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.SSLController = void 0;
40
- const baseController_1 = require("../baseController");
41
- const tls_1 = __importDefault(require("tls"));
42
- const acme = __importStar(require("acme-client"));
43
- const index_js_1 = require("../../utils/index.js");
44
- class SSLController extends baseController_1.Controller {
45
- constructor() {
46
- super();
47
- this.pending = {};
48
- this.challenges = {};
49
- }
50
- index(req, res) {
51
- const token = req.params.token;
52
- if (token in this.challenges) {
53
- res.writeHead(200);
54
- res.end(this.challenges[token]);
55
- return;
56
- }
57
- res.writeHead(302, { Location: `https://${req.headers.host}${req.url}` });
58
- res.end();
59
- }
60
- async initialize() {
61
- if (!this.acme) {
62
- this.acme = new acme.Client({
63
- directoryUrl: acme.directory.letsencrypt[process.env.PROFILE === 'DEV' ? 'staging' : 'production'],
64
- accountKey: await acme.crypto.createPrivateKey(),
65
- });
66
- }
67
- }
68
- static get SNI() {
69
- return {
70
- SNICallback: async (hostname, cb) => {
71
- const domain = index_js_1.Utils.GetDomainInfo(hostname);
72
- if (domain.ssl) {
73
- cb(null, tls_1.default.createSecureContext({ key: domain.ssl.key, cert: domain.ssl.cert }));
74
- }
75
- else {
76
- cb(new Error(`${hostname} is unknown`));
77
- }
78
- }
79
- };
80
- }
81
- async getCert(servername, attempt = 0) {
82
- const domain = index_js_1.Utils.GetDomainInfo(servername);
83
- if (domain.ssl) {
84
- return;
85
- }
86
- if (servername in this.pending) {
87
- if (attempt >= 10) {
88
- throw new Error(`Gave up waiting on certificate for ${servername}`);
89
- }
90
- await new Promise((resolve) => {
91
- setTimeout(resolve, 1000);
92
- });
93
- await this.getCert(servername, (attempt + 1));
94
- return;
95
- }
96
- this.pending[servername] = true;
97
- const config = index_js_1.Utils.GetConfig();
98
- await this.initialize();
99
- //TODO: We need to restore the concept of profile in .epistery/config.ini
100
- if (!config.data.profile?.email)
101
- throw new Error(`cannot request certificate without "email" set in epistery/config.ini`);
102
- // create CSR
103
- const [key, csr] = await acme.crypto.createCsr({
104
- altNames: [servername],
105
- });
106
- // order certificate
107
- if (!this.acme) {
108
- throw new Error('ACME client not initialized');
109
- }
110
- const cert = await this.acme.auto({
111
- csr,
112
- email: config.data.profile?.email,
113
- termsOfServiceAgreed: true,
114
- challengePriority: ['http-01'],
115
- challengeCreateFn: async (authz, challenge, keyAuthorization) => {
116
- this.challenges[challenge.token] = keyAuthorization;
117
- },
118
- challengeRemoveFn: async (authz, challenge) => {
119
- delete this.challenges[challenge.token];
120
- },
121
- });
122
- // save certificate
123
- domain.ssl = { cert: cert, key: key, modified: new Date() };
124
- config.saveDomain(servername, domain);
125
- delete this.pending[servername];
126
- }
127
- }
128
- exports.SSLController = SSLController;
129
- //# sourceMappingURL=SSLController.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SSLController.js","sourceRoot":"","sources":["../../../src/controllers/ssl/SSLController.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- import { Request, Response } from 'express';
2
- import { Controller } from '../baseController.js';
3
- export declare class StatusController extends Controller {
4
- index(req: Request, res: Response): Promise<void>;
5
- }
6
- //# sourceMappingURL=StatusController.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"StatusController.d.ts","sourceRoot":"","sources":["../../../src/controllers/status/StatusController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAIlD,qBAAa,gBAAiB,SAAQ,UAAU;IACjC,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ;CAoB/C"}
@@ -1,29 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.StatusController = void 0;
4
- const baseController_js_1 = require("../baseController.js");
5
- const index_js_1 = require("../../utils/index.js");
6
- const epistery_1 = require("epistery");
7
- class StatusController extends baseController_js_1.Controller {
8
- async index(req, res) {
9
- const config = index_js_1.Utils.GetConfig();
10
- const domain = config.activeDomain.domain;
11
- const rawClientCookie = this.getCookie(req, 'epistery-client');
12
- const clientCookie = rawClientCookie ? JSON.parse(rawClientCookie) : null;
13
- const clientWallet = {
14
- address: clientCookie?.wallet?.address,
15
- mnemonic: clientCookie?.wallet?.mnemonic,
16
- publicKey: clientCookie?.wallet?.publicKey,
17
- privateKey: clientCookie?.wallet?.privateKey,
18
- };
19
- const serverDomain = index_js_1.Utils.GetDomainInfo(domain);
20
- if (!serverDomain.wallet) {
21
- this.sendError(res, "Unable to load server wallet.", 400);
22
- return;
23
- }
24
- const status = epistery_1.Epistery.getStatus(clientWallet, serverDomain);
25
- this.sendResponse(res, status);
26
- }
27
- }
28
- exports.StatusController = StatusController;
29
- //# sourceMappingURL=StatusController.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"StatusController.js","sourceRoot":"","sources":["../../../src/controllers/status/StatusController.ts"],"names":[],"mappings":";;;AACA,4DAAkD;AAClD,mDAAqF;AACrF,uCAAoC;AAEpC,MAAa,gBAAiB,SAAQ,8BAAU;IACvC,KAAK,CAAC,KAAK,CAAC,GAAY,EAAE,GAAa;QAC5C,MAAM,MAAM,GAAU,gBAAK,CAAC,SAAS,EAAE,CAAC;QACxC,MAAM,MAAM,GAAW,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC;QAClD,MAAM,eAAe,GAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;QACnE,MAAM,YAAY,GAAO,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9E,MAAM,YAAY,GAAoB;YACpC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO;YACtC,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ;YACxC,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS;YAC1C,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU;SAC7C,CAAA;QACD,MAAM,YAAY,GAAgB,gBAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC9D,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;YACzB,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,+BAA+B,EAAE,GAAG,CAAC,CAAC;YAC1D,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,mBAAQ,CAAC,SAAS,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;QAC9D,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACjC,CAAC;CACF;AArBD,4CAqBC"}
@@ -1,7 +0,0 @@
1
- import { Request, Response } from 'express';
2
- import { Controller } from '../baseController.js';
3
- export declare class WriteController extends Controller {
4
- constructor();
5
- index(req: Request, res: Response): Promise<void>;
6
- }
7
- //# sourceMappingURL=WriteController.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"WriteController.d.ts","sourceRoot":"","sources":["../../../src/controllers/write/WriteController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAOlD,qBAAa,eAAgB,SAAQ,UAAU;;IAKhC,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ;CA0C/C"}
@@ -1,50 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.WriteController = void 0;
4
- const baseController_js_1 = require("../baseController.js");
5
- const ethers_1 = require("ethers");
6
- const epistery_1 = require("epistery");
7
- class WriteController extends baseController_js_1.Controller {
8
- constructor() {
9
- super();
10
- }
11
- async index(req, res) {
12
- try {
13
- const data = req.body;
14
- if (!data || Object.keys(data).length === 0) {
15
- return this.sendError(res, 'Request body is empty. Please provide data to sign and store.', 400);
16
- }
17
- // Use either user-given wallet or a generated data-wallet
18
- let clientWallet;
19
- let clientWalletInfo;
20
- if (data.wallet && data.wallet.privateKey) {
21
- clientWalletInfo = data.wallet;
22
- clientWallet = new ethers_1.ethers.Wallet(clientWalletInfo.privateKey);
23
- console.log('Using provided wallet:', clientWallet.address);
24
- }
25
- else {
26
- clientWallet = ethers_1.ethers.Wallet.createRandom();
27
- clientWalletInfo = {
28
- address: clientWallet.address,
29
- mnemonic: clientWallet.mnemonic?.phrase || '',
30
- publicKey: clientWallet.publicKey,
31
- privateKey: clientWallet.privateKey,
32
- };
33
- console.log('Generated new wallet:', clientWallet.address);
34
- }
35
- const episteryResponse = await epistery_1.Epistery.write(clientWalletInfo, data);
36
- if (!episteryResponse)
37
- this.sendError(res, `Unable to create IPFS hash. Result: ${JSON.stringify(episteryResponse)}`, 500);
38
- this.sendResponse(res, episteryResponse);
39
- }
40
- catch (error) {
41
- console.error('Error in WriteController:', error);
42
- if (error.message?.includes('ECONNREFUSED')) {
43
- return this.sendError(res, 'IPFS node not running. Please start IPFS daemon.', 503);
44
- }
45
- this.sendError(res, `Failed to process and store data: ${error.message}`, 500);
46
- }
47
- }
48
- }
49
- exports.WriteController = WriteController;
50
- //# sourceMappingURL=WriteController.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"WriteController.js","sourceRoot":"","sources":["../../../src/controllers/write/WriteController.ts"],"names":[],"mappings":";;;AACA,4DAAkD;AAClD,mCAAgC;AAIhC,uCAAoC;AAEpC,MAAa,eAAgB,SAAQ,8BAAU;IAC7C;QACE,KAAK,EAAE,CAAC;IACV,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,GAAY,EAAE,GAAa;QAC5C,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YACtB,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC5C,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,+DAA+D,EAAE,GAAG,CAAC,CAAC;YACnG,CAAC;YAED,2DAA2D;YAC3D,IAAI,YAA2B,CAAC;YAChC,IAAI,gBAAiC,CAAC;YAEtC,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;gBAC1C,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC;gBAC/B,YAAY,GAAG,IAAI,eAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;gBAC9D,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;YAC9D,CAAC;iBACI,CAAC;gBACJ,YAAY,GAAG,eAAM,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;gBAC5C,gBAAgB,GAAG;oBACjB,OAAO,EAAE,YAAY,CAAC,OAAO;oBAC7B,QAAQ,EAAG,YAA8B,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE;oBAChE,SAAS,EAAE,YAAY,CAAC,SAAS;oBACjC,UAAU,EAAE,YAAY,CAAC,UAAU;iBACpC,CAAC;gBACF,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;YAC7D,CAAC;YAED,MAAM,gBAAgB,GAAwB,MAAM,mBAAQ,CAAC,KAAK,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;YAC3F,IAAI,CAAC,gBAAgB;gBACnB,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,uCAAuC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;YAEtG,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,KAAU,EAAE,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;YAClD,IAAI,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;gBAC5C,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,kDAAkD,EAAE,GAAG,CAAC,CAAC;YACtF,CAAC;YAED,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,qCAAqC,KAAK,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC;QACjF,CAAC;IACH,CAAC;CACF;AA/CD,0CA+CC"}