@odatano/core 0.3.1

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 (98) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +212 -0
  3. package/cds-plugin.js +5 -0
  4. package/config/preview/cardano-node/alonzo-genesis.json +196 -0
  5. package/config/preview/cardano-node/byron-genesis.json +117 -0
  6. package/config/preview/cardano-node/config.json +118 -0
  7. package/config/preview/cardano-node/conway-genesis.json +297 -0
  8. package/config/preview/cardano-node/shelley-genesis.json +68 -0
  9. package/config/preview/cardano-node/topology.json +19 -0
  10. package/db/schema.cds +1318 -0
  11. package/package.json +125 -0
  12. package/src/index.d.ts.map +1 -0
  13. package/src/index.js +96 -0
  14. package/src/index.js.map +1 -0
  15. package/src/plugin.d.ts.map +1 -0
  16. package/src/plugin.js +92 -0
  17. package/src/plugin.js.map +1 -0
  18. package/srv/blockchain/backends/blockfrost-backend.d.ts.map +1 -0
  19. package/srv/blockchain/backends/blockfrost-backend.js +398 -0
  20. package/srv/blockchain/backends/blockfrost-backend.js.map +1 -0
  21. package/srv/blockchain/backends/cardano-backend.d.ts.map +1 -0
  22. package/srv/blockchain/backends/cardano-backend.js +12 -0
  23. package/srv/blockchain/backends/cardano-backend.js.map +1 -0
  24. package/srv/blockchain/backends/koios-backend.d.ts.map +1 -0
  25. package/srv/blockchain/backends/koios-backend.js +537 -0
  26. package/srv/blockchain/backends/koios-backend.js.map +1 -0
  27. package/srv/blockchain/backends/ogmios-backend.d.ts.map +1 -0
  28. package/srv/blockchain/backends/ogmios-backend.js +516 -0
  29. package/srv/blockchain/backends/ogmios-backend.js.map +1 -0
  30. package/srv/blockchain/cardano-client.d.ts.map +1 -0
  31. package/srv/blockchain/cardano-client.js +377 -0
  32. package/srv/blockchain/cardano-client.js.map +1 -0
  33. package/srv/blockchain/cardano-indexer.d.ts.map +1 -0
  34. package/srv/blockchain/cardano-indexer.js +542 -0
  35. package/srv/blockchain/cardano-indexer.js.map +1 -0
  36. package/srv/blockchain/cardano-tx-builder.d.ts.map +1 -0
  37. package/srv/blockchain/cardano-tx-builder.js +232 -0
  38. package/srv/blockchain/cardano-tx-builder.js.map +1 -0
  39. package/srv/blockchain/circuit-breaker.d.ts.map +1 -0
  40. package/srv/blockchain/circuit-breaker.js +110 -0
  41. package/srv/blockchain/circuit-breaker.js.map +1 -0
  42. package/srv/blockchain/signing/external-signer.d.ts.map +1 -0
  43. package/srv/blockchain/signing/external-signer.js +302 -0
  44. package/srv/blockchain/signing/external-signer.js.map +1 -0
  45. package/srv/blockchain/signing/signature-verifier.d.ts.map +1 -0
  46. package/srv/blockchain/signing/signature-verifier.js +249 -0
  47. package/srv/blockchain/signing/signature-verifier.js.map +1 -0
  48. package/srv/blockchain/transaction-building/buildooor-tx.d.ts.map +1 -0
  49. package/srv/blockchain/transaction-building/buildooor-tx.js +636 -0
  50. package/srv/blockchain/transaction-building/buildooor-tx.js.map +1 -0
  51. package/srv/blockchain/transaction-building/cardano-tx.d.ts.map +1 -0
  52. package/srv/blockchain/transaction-building/cardano-tx.js +3 -0
  53. package/srv/blockchain/transaction-building/cardano-tx.js.map +1 -0
  54. package/srv/blockchain/transaction-building/csl-tx.d.ts.map +1 -0
  55. package/srv/blockchain/transaction-building/csl-tx.js +766 -0
  56. package/srv/blockchain/transaction-building/csl-tx.js.map +1 -0
  57. package/srv/blockchain/transaction-building/tx-builder-registry.d.ts.map +1 -0
  58. package/srv/blockchain/transaction-building/tx-builder-registry.js +67 -0
  59. package/srv/blockchain/transaction-building/tx-builder-registry.js.map +1 -0
  60. package/srv/cardano-service.cds +179 -0
  61. package/srv/cardano-service.d.ts.map +1 -0
  62. package/srv/cardano-service.js +227 -0
  63. package/srv/cardano-service.js.map +1 -0
  64. package/srv/cardano-tx-service.cds +298 -0
  65. package/srv/cardano-tx-service.d.ts.map +1 -0
  66. package/srv/cardano-tx-service.js +646 -0
  67. package/srv/cardano-tx-service.js.map +1 -0
  68. package/srv/cardano-ui.cds +2949 -0
  69. package/srv/server.d.ts.map +1 -0
  70. package/srv/server.js +212 -0
  71. package/srv/server.js.map +1 -0
  72. package/srv/utils/backend-request-handler.d.ts.map +1 -0
  73. package/srv/utils/backend-request-handler.js +47 -0
  74. package/srv/utils/backend-request-handler.js.map +1 -0
  75. package/srv/utils/const.d.ts.map +1 -0
  76. package/srv/utils/const.js +86 -0
  77. package/srv/utils/const.js.map +1 -0
  78. package/srv/utils/error-codes.d.ts.map +1 -0
  79. package/srv/utils/error-codes.js +49 -0
  80. package/srv/utils/error-codes.js.map +1 -0
  81. package/srv/utils/errors.d.ts.map +1 -0
  82. package/srv/utils/errors.js +389 -0
  83. package/srv/utils/errors.js.map +1 -0
  84. package/srv/utils/mappers.d.ts.map +1 -0
  85. package/srv/utils/mappers.js +723 -0
  86. package/srv/utils/mappers.js.map +1 -0
  87. package/srv/utils/signing-helper.d.ts.map +1 -0
  88. package/srv/utils/signing-helper.js +128 -0
  89. package/srv/utils/signing-helper.js.map +1 -0
  90. package/srv/utils/tx-build-helper.d.ts.map +1 -0
  91. package/srv/utils/tx-build-helper.js +135 -0
  92. package/srv/utils/tx-build-helper.js.map +1 -0
  93. package/srv/utils/types.d.ts.map +1 -0
  94. package/srv/utils/types.js +36 -0
  95. package/srv/utils/types.js.map +1 -0
  96. package/srv/utils/validators.d.ts.map +1 -0
  97. package/srv/utils/validators.js +382 -0
  98. package/srv/utils/validators.js.map +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["server.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAU,WAAW,EAAC,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAC7H,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAU9D;;;GAGG;AACH,UAAU,UAAU;IAClB,aAAa,EAAE,aAAa,CAAC;IAC7B,cAAc,EAAE,cAAc,CAAC;IAC/B,gBAAgB,EAAE,yBAAyB,CAAC;CAC7C;AAgCD;;;GAGG;AACH,wBAAgB,aAAa,IAAI,UAAU,CAK1C;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,cAAc,CAElD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,CAEhD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,yBAAyB,CAE/D;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,mBAAmB,EAAE,cAAc,CAAC,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAEhI;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI,GAAG,IAAI,CAGhE;AAED;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,WAAW,EAAE,EACvB,aAAa,GAAE,sBAA8B,EAC7C,cAAc,CAAC,EAAE,wBAAwB,GACxC,OAAO,CAAC,UAAU,CAAC,CAiBrB;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAOxD;AAGD;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,IAAI,mBAAmB,CA0DvD"}
package/srv/server.js ADDED
@@ -0,0 +1,212 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getAppContext = getAppContext;
7
+ exports.getCardanoIndexer = getCardanoIndexer;
8
+ exports.getCardanoClient = getCardanoClient;
9
+ exports.getCardanoTxBuilder = getCardanoTxBuilder;
10
+ exports.initializeFromConfig = initializeFromConfig;
11
+ exports.resetAppContext = resetAppContext;
12
+ exports.createTestContext = createTestContext;
13
+ exports.shutdownAppContext = shutdownAppContext;
14
+ exports.loadConfigFromEnv = loadConfigFromEnv;
15
+ const cds_1 = __importDefault(require("@sap/cds"));
16
+ const cardano_client_1 = require("./blockchain/cardano-client");
17
+ const cardano_indexer_1 = require("./blockchain/cardano-indexer");
18
+ const cardano_tx_builder_1 = require("./blockchain/cardano-tx-builder");
19
+ const process_1 = require("process");
20
+ const logger = cds_1.default.log('server');
21
+ const VALID_NETWORKS = ['mainnet', 'preview', 'preprod'];
22
+ const VALID_BACKENDS = ['blockfrost', 'koios', 'ogmios'];
23
+ const VALID_TX_BUILDERS = ['csl', 'buildooor'];
24
+ let appContext = null;
25
+ /**
26
+ * Initialize the application context with blockchain components
27
+ * Called once during CAP server startup via cds.on('served')
28
+ * @param config - CardanoClientConfig
29
+ * @param protocolParams - Optional protocol parameters (for tests to skip backend call)
30
+ */
31
+ async function initializeAppContext(config, protocolParams) {
32
+ logger.info('Initializing blockchain components...');
33
+ // Create CardanoClient from configuration
34
+ const cardanoClient = new cardano_client_1.CardanoClient(config);
35
+ // Create CardanoTransactionBuilder with the client
36
+ const cardanoTxBuilder = new cardano_tx_builder_1.CardanoTransactionBuilder(cardanoClient);
37
+ await cardanoTxBuilder.init(protocolParams);
38
+ // Create CardanoIndexer with client and transaction builder
39
+ const cardanoIndexer = new cardano_indexer_1.CardanoIndexer(cardanoClient, cardanoTxBuilder);
40
+ logger.info('Blockchain components initialized successfully');
41
+ return {
42
+ cardanoClient,
43
+ cardanoIndexer,
44
+ cardanoTxBuilder,
45
+ };
46
+ }
47
+ /**
48
+ * Get the application context (must be called after bootstrap)
49
+ * @throws {Error} if called before initialization
50
+ */
51
+ function getAppContext() {
52
+ if (!appContext) {
53
+ throw new Error('Application not initialized. This should be called after cds.served event.');
54
+ }
55
+ return appContext;
56
+ }
57
+ /**
58
+ * Get the CardanoIndexer instance
59
+ * Convenience function for services
60
+ */
61
+ function getCardanoIndexer() {
62
+ return getAppContext().cardanoIndexer;
63
+ }
64
+ /**
65
+ * Get the CardanoClient instance
66
+ * Convenience function for services
67
+ */
68
+ function getCardanoClient() {
69
+ return getAppContext().cardanoClient;
70
+ }
71
+ /**
72
+ * Get the CardanoTransactionBuilder instance
73
+ * Convenience function for services and plugin consumers
74
+ */
75
+ function getCardanoTxBuilder() {
76
+ return getAppContext().cardanoTxBuilder;
77
+ }
78
+ /**
79
+ * Initialize from a pre-built config (used by plugin's src/index.ts)
80
+ * @param config - validated CardanoClientConfig
81
+ * @param protocolParams - Optional protocol parameters (for tests)
82
+ */
83
+ async function initializeFromConfig(config, protocolParams) {
84
+ appContext = await initializeAppContext(config, protocolParams);
85
+ }
86
+ /**
87
+ * Reset the application context (for testing only)
88
+ * Allows tests to inject their own instances
89
+ */
90
+ function resetAppContext(context) {
91
+ appContext = context;
92
+ logger.debug('Application context reset');
93
+ }
94
+ /**
95
+ * Create a test context with specific backends and transaction builder
96
+ * Used by integration tests to create isolated test instances
97
+ * @param backends Array of backend names to use (e.g., ['koios'], ['blockfrost'])
98
+ * @param txBuilderName Optional transaction builder name ('csl' or 'buildooor'), defaults to 'csl'
99
+ * @param protocolParams Optional protocol parameters (to skip backend call during init)
100
+ * @returns Promise<AppContext> The created application context
101
+ */
102
+ async function createTestContext(backends, txBuilderName = 'csl', protocolParams) {
103
+ // Set TX_BUILDERS env so TxBuilderRegistry.createDefault() uses the correct builder
104
+ process_1.env.TX_BUILDERS = txBuilderName;
105
+ const config = {
106
+ network: process_1.env.NETWORK || 'preview',
107
+ backends,
108
+ blockfrostApiKey: process_1.env.BLOCKFROST_API_KEY || '',
109
+ koiosApiKey: process_1.env.KOIOS_API_KEY || '',
110
+ ogmiosUrl: process_1.env.OGMIOS_URL || '',
111
+ transactionBuilders: [txBuilderName],
112
+ primaryTimeoutMs: Number(process_1.env.PRIMARY_TIMEOUT_MS) || 30000,
113
+ fallbackTimeoutMs: Number(process_1.env.FALLBACK_TIMEOUT_MS) || 60000,
114
+ indexTtlMs: Number(process_1.env.INDEX_TTL_MS) || 3600000,
115
+ };
116
+ return initializeAppContext(config, protocolParams);
117
+ }
118
+ /**
119
+ * Shutdown the application context (for cleanup in tests)
120
+ * Closes all backend connections to allow process to exit cleanly
121
+ */
122
+ async function shutdownAppContext() {
123
+ if (appContext) {
124
+ logger.info('Shutting down application context...');
125
+ await appContext.cardanoClient.shutdown();
126
+ appContext = null;
127
+ logger.info('Application context shutdown complete');
128
+ }
129
+ }
130
+ /**
131
+ * Load and validate CardanoClientConfig from CDS config or environment variables.
132
+ *
133
+ * When used as a plugin, consumers configure via package.json:
134
+ * { "cds": { "requires": { "odatano-core": { "network": "preview", "backends": ["blockfrost"], ... }}}}
135
+ *
136
+ * Priority: cds.env.requires["odatano-core"].X > process.env.X > default
137
+ *
138
+ * @returns validated CardanoClientConfig
139
+ * @throws {Error} if any config value is invalid
140
+ */
141
+ function loadConfigFromEnv() {
142
+ // Check CDS plugin config first, fall back to env vars
143
+ const cdsConfig = cds_1.default.env?.requires?.['odatano-core'] ?? {};
144
+ const network = (cdsConfig.network || process_1.env.NETWORK || 'preview');
145
+ if (!VALID_NETWORKS.includes(network)) {
146
+ throw new Error(`Invalid NETWORK "${cdsConfig.network || process_1.env.NETWORK}". Must be one of: ${VALID_NETWORKS.join(', ')}`);
147
+ }
148
+ const backendStrings = cdsConfig.backends
149
+ || (process_1.env.BACKENDS ? process_1.env.BACKENDS.split(',').map(b => b.trim()) : ['koios']);
150
+ const invalidBackends = backendStrings.filter(b => !VALID_BACKENDS.includes(b));
151
+ if (invalidBackends.length > 0) {
152
+ throw new Error(`Invalid BACKENDS: "${invalidBackends.join(', ')}". Must be one of: ${VALID_BACKENDS.join(', ')}`);
153
+ }
154
+ const backends = backendStrings;
155
+ const txBuilderStrings = cdsConfig.txBuilders
156
+ || (process_1.env.TX_BUILDERS ? process_1.env.TX_BUILDERS.split(',').map(b => b.trim()) : ['csl']);
157
+ const invalidBuilders = txBuilderStrings.filter(b => !VALID_TX_BUILDERS.includes(b));
158
+ if (invalidBuilders.length > 0) {
159
+ throw new Error(`Invalid TX_BUILDERS: "${invalidBuilders.join(', ')}". Must be one of: ${VALID_TX_BUILDERS.join(', ')}`);
160
+ }
161
+ const txBuilders = txBuilderStrings;
162
+ const primaryTimeout = cdsConfig.primaryTimeoutMs || process_1.env.PRIMARY_TIMEOUT_MS;
163
+ const fallbackTimeout = cdsConfig.fallbackTimeoutMs || process_1.env.FALLBACK_TIMEOUT_MS;
164
+ if (primaryTimeout && isNaN(Number(primaryTimeout))) {
165
+ throw new Error(`Invalid PRIMARY_TIMEOUT_MS "${primaryTimeout}". Must be a number.`);
166
+ }
167
+ if (fallbackTimeout && isNaN(Number(fallbackTimeout))) {
168
+ throw new Error(`Invalid FALLBACK_TIMEOUT_MS "${fallbackTimeout}". Must be a number.`);
169
+ }
170
+ const blockfrostApiKey = cdsConfig.blockfrostApiKey || process_1.env.BLOCKFROST_API_KEY || '';
171
+ const koiosApiKey = cdsConfig.koiosApiKey || process_1.env.KOIOS_API_KEY || '';
172
+ const ogmiosUrl = cdsConfig.ogmiosUrl || process_1.env.OGMIOS_URL || '';
173
+ // Warn about missing API keys for selected backends
174
+ if (backends.includes('blockfrost') && !blockfrostApiKey) {
175
+ logger.warn('BLOCKFROST_API_KEY is not set but blockfrost is listed in BACKENDS');
176
+ }
177
+ if (backends.includes('ogmios') && !ogmiosUrl) {
178
+ logger.warn('OGMIOS_URL is not set but ogmios is listed in BACKENDS');
179
+ }
180
+ return {
181
+ network,
182
+ backends,
183
+ blockfrostApiKey,
184
+ koiosApiKey,
185
+ ogmiosUrl,
186
+ transactionBuilders: txBuilders,
187
+ primaryTimeoutMs: Number(primaryTimeout) || 30000,
188
+ fallbackTimeoutMs: Number(fallbackTimeout) || 60000,
189
+ indexTtlMs: Number(cdsConfig.indexTtlMs || process_1.env.INDEX_TTL_MS) || 3600000,
190
+ };
191
+ }
192
+ // Bootstrap hook - runs when CAP server has loaded all services
193
+ cds_1.default.on('served', async () => {
194
+ // Skip if already initialized by plugin (src/plugin.ts runs first)
195
+ if (appContext)
196
+ return;
197
+ // Skip auto-initialization when SKIP_AUTO_INIT is set (e.g., for tests with mocked backends)
198
+ if (process_1.env.SKIP_AUTO_INIT === 'true') {
199
+ logger.info('Skipping auto-initialization (SKIP_AUTO_INIT=true)');
200
+ return;
201
+ }
202
+ const config = loadConfigFromEnv();
203
+ try {
204
+ appContext = await initializeAppContext(config);
205
+ logger.info('CAP server bootstrap complete');
206
+ }
207
+ catch (err) {
208
+ logger.error('Failed to initialize blockchain components:', err);
209
+ throw err;
210
+ }
211
+ });
212
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backend-request-handler.d.ts","sourceRoot":"","sources":["backend-request-handler.ts"],"names":[],"mappings":"AACA,OAAY,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAKxC;;GAEG;AAEH;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CAAC,CAAC,EAC1C,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,CAAC,CAAC,CAMZ;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CACjC,GAAG,EAAE,OAAO,EACZ,OAAO,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,GAClC,OAAO,CAAC,GAAG,CAAC,CAUb"}
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.handleBackendRequest = handleBackendRequest;
7
+ exports.handleRequest = handleRequest;
8
+ const errors_1 = require("./errors");
9
+ const cds_1 = __importDefault(require("@sap/cds"));
10
+ const mappers_1 = require("./mappers");
11
+ const logger = cds_1.default.log('BackendRequestHandler');
12
+ /**
13
+ * BackendRequestHandler - Provides standardized handling for backend requests
14
+ */
15
+ /**
16
+ * BackendRequestHandler - Wraps a backend method call with standardized error handling
17
+ * @param fn - The async function to execute
18
+ * @param backendName - Name of the backend (for error context)
19
+ * @param resourceName - Name of the resource being accessed (e.g., "Transaction", "Address")
20
+ * @returns {Promise<T>} The result of the backend call or a normalized error
21
+ */
22
+ async function handleBackendRequest(fn, backendName) {
23
+ try {
24
+ return await fn();
25
+ }
26
+ catch (err) {
27
+ throw (0, errors_1.normalizeBackendError)(err, backendName);
28
+ }
29
+ }
30
+ /**
31
+ * General request handler for CardanoService
32
+ * @param req - The incoming request
33
+ * @param handler - The async function containing business logic
34
+ * @returns {Promise<any>} The result of the handler or a mapped error response
35
+ */
36
+ async function handleRequest(req, handler) {
37
+ const context = req.target?.name || req.event;
38
+ const db = cds_1.default.tx(req);
39
+ try {
40
+ return await handler(db);
41
+ }
42
+ catch (e) {
43
+ logger.error({ err: e }, `${context} error`);
44
+ return (0, mappers_1.mapError)(req, e, context);
45
+ }
46
+ }
47
+ //# sourceMappingURL=backend-request-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backend-request-handler.js","sourceRoot":"","sources":["backend-request-handler.ts"],"names":[],"mappings":";;;;;AAiBA,oDASC;AAQD,sCAaC;AA/CD,qCAAiD;AACjD,mDAAwC;AACxC,uCAAqC;AAErC,MAAM,MAAM,GAAG,aAAG,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;AAEhD;;GAEG;AAEH;;;;;;GAMG;AACI,KAAK,UAAU,oBAAoB,CACxC,EAAoB,EACpB,WAAmB;IAEnB,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,EAAE,CAAC;IACpB,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,MAAM,IAAA,8BAAqB,EAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IAChD,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACI,KAAK,UAAU,aAAa,CACjC,GAAY,EACZ,OAAkC;IAElC,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,EAAE,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC;IAC9C,MAAM,EAAE,GAAG,aAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACvB,IAAI,CAAC;QACH,OAAO,MAAM,OAAO,CAAC,EAAE,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,GAAG,OAAO,QAAQ,CAAC,CAAC;QAC7C,OAAO,IAAA,kBAAQ,EAAC,GAAG,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;IAEnC,CAAC;AACH,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"const.d.ts","sourceRoot":"","sources":["const.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,gBAAgB;IAC3B,sDAAsD;;IAEtD,yCAAyC;;IAEzC,4BAA4B;;CAE7B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,uBAAuB;IAClC,wCAAwC;;IAExC,qCAAqC;;CAEtC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oBAAoB;IAC/B,8CAA8C;;IAE9C,2CAA2C;;CAE5C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,MAAM,CAAC;AAEzC;;GAEG;AAED,uEAAuE;AACzE,eAAO,MAAO,oBAAoB,KAAM,CAAC;AAGzC,eAAO,MAAM,GAAG;;;;;;;;;;;;;CAIf,CAAC;AAEF;;GAEG;AAEH,gDAAgD;AAChD,eAAO,MAAM,aAAa,UAAY,CAAC;AACvC,oDAAoD;AACpD,eAAO,MAAM,SAAS,KAAK,CAAC;AAC5B,8CAA8C;AAC9C,eAAO,MAAM,QAAQ,MAAM,CAAC;AAC5B,iDAAiD;AACjD,eAAO,MAAM,gBAAgB,OAAO,CAAC;AACrC,8CAA8C;AAC9C,eAAO,MAAM,iBAAiB,QAAQ,CAAC;AACvC,iDAAiD;AACjD,eAAO,MAAM,iBAAiB,OAAO,CAAC;AACtC,sCAAsC;AACtC,eAAO,MAAM,SAAS,SAAU,CAAC;AACjC,sCAAsC;AACtC,eAAO,MAAM,aAAa,KAAK,CAAC;AAChC,8EAA8E;AAC9E,eAAO,MAAM,aAAa,KAAK,CAAC;AAEhC;;GAEG;AACH,eAAO,MAAM,aAAa,QAAmB,CAAC;AAE9C;;GAEG;AACH,eAAO,MAAM,gBAAgB,QAAuB,CAAC;AAErD;;GAEG;AACH,eAAO,MAAM,aAAa,QAAkD,CAAC;AAE7E;;GAEG;AACH,eAAO,MAAM,aAAa,QAAqD,CAAC"}
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DREP_ID_REGEX = exports.POOL_ID_REGEX = exports.ASSET_UNIT_REGEX = exports.TX_HASH_REGEX = exports.DREP_ID_BYTES = exports.POOL_ID_BYTES = exports.MAX_EPOCH = exports.BECH32_MAX_LENGTH = exports.MAX_STRING_LENGTH = exports.MAX_ARRAY_LENGTH = exports.MAX_KEYS = exports.MAX_DEPTH = exports.MAX_JSON_SIZE = exports.HRP = exports.WITNESS_BUFFER_BYTES = exports.EXECUTION_UNIT_BUFFER = exports.HIGH_EXECUTION_UNITS = exports.DEFAULT_EXECUTION_UNITS = exports.CARDANO_DEFAULTS = void 0;
4
+ /**
5
+ * Cardano protocol constants
6
+ */
7
+ exports.CARDANO_DEFAULTS = {
8
+ /** Maximum ADA supply in lovelace (45 billion ADA) */
9
+ MAX_LOVELACE_SUPPLY: '45000000000000000',
10
+ /** Slots per epoch (mainnet/testnets) */
11
+ SLOTS_PER_EPOCH: 432_000,
12
+ /** Milliseconds per slot */
13
+ MS_PER_SLOT: 1000,
14
+ };
15
+ /**
16
+ * Default execution units for Plutus scripts
17
+ * Used when dynamic evaluation is not available
18
+ */
19
+ exports.DEFAULT_EXECUTION_UNITS = {
20
+ /** Memory units for script execution */
21
+ mem: 14_000_000,
22
+ /** CPU steps for script execution */
23
+ cpu: 10_000_000_000,
24
+ };
25
+ /**
26
+ * High execution units for initial transaction build (before evaluation)
27
+ * Set higher than DEFAULT to ensure fee estimation is sufficient before actual evaluation
28
+ */
29
+ exports.HIGH_EXECUTION_UNITS = {
30
+ /** Memory units - high for evaluation pass */
31
+ mem: 28_000_000,
32
+ /** CPU steps - high for evaluation pass */
33
+ cpu: 20_000_000_000,
34
+ };
35
+ /**
36
+ * Execution unit buffer multiplier (10% safety margin)
37
+ */
38
+ exports.EXECUTION_UNIT_BUFFER = 1.1;
39
+ /**
40
+ * Transaction building constants
41
+ */
42
+ /** Buffer for witness set CBOR overhead when signing adds ~44 bytes */
43
+ exports.WITNESS_BUFFER_BYTES = 50;
44
+ exports.HRP = {
45
+ mainnet: { addr: /^addr1[0-9a-z]{50,100}$/, stake: /^stake1[0-9a-z]{53,}$/ },
46
+ preview: { addr: /^addr_test1[0-9a-z]{50,100}$/, stake: /^stake_test1[0-9a-z]{53,}$/ },
47
+ preprod: { addr: /^addr_test1[0-9a-z]{50,100}$/, stake: /^stake_test1[0-9a-z]{53,}$/ },
48
+ };
49
+ /**
50
+ * Input validation limits to prevent DoS attacks
51
+ */
52
+ /** Maximum JSON string length in bytes (1MB) */
53
+ exports.MAX_JSON_SIZE = 1_048_576;
54
+ /** Maximum nesting depth for JSON objects/arrays */
55
+ exports.MAX_DEPTH = 10;
56
+ /** Maximum number of keys in a JSON object */
57
+ exports.MAX_KEYS = 100;
58
+ /** Maximum number of elements in a JSON array */
59
+ exports.MAX_ARRAY_LENGTH = 1000;
60
+ /** Maximum length of a single string value */
61
+ exports.MAX_STRING_LENGTH = 65536;
62
+ /** Maximum ech32 string length to prevent DoS */
63
+ exports.BECH32_MAX_LENGTH = 2000;
64
+ /** Maximum reasonable epoch number */
65
+ exports.MAX_EPOCH = 100_000;
66
+ /** Standard pool ID payload length */
67
+ exports.POOL_ID_BYTES = 28;
68
+ /** Standard DRep ID payload length (1 byte type prefix + 28 byte key hash) */
69
+ exports.DREP_ID_BYTES = 29;
70
+ /**
71
+ * Transaction hash Regex - 64-character hexadecimal string
72
+ */
73
+ exports.TX_HASH_REGEX = /^[a-f0-9]{64}$/;
74
+ /**
75
+ * Asset unit Regex - policy ID (56 hex chars) + asset name (0-128 hex chars)
76
+ */
77
+ exports.ASSET_UNIT_REGEX = /^[a-f0-9]{56,192}$/; // policy ID (56) + asset name (0-64 bytes -> 0-128 hex chars)
78
+ /**
79
+ * Pool ID Regex - bech32 with HRP "pool" and 28 bytes payload
80
+ */
81
+ exports.POOL_ID_REGEX = /^pool1[qpzry9x8gf2tvdw0s3jn54khce6mua7l]{51}$/;
82
+ /**
83
+ * DRep ID Regex - bech32 with HRP "drep" and 50-60 chars payload
84
+ */
85
+ exports.DREP_ID_REGEX = /^drep1[qpzry9x8gf2tvdw0s3jn54khce6mua7l]{50,60}$/;
86
+ //# sourceMappingURL=const.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"const.js","sourceRoot":"","sources":["const.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACU,QAAA,gBAAgB,GAAG;IAC9B,sDAAsD;IACtD,mBAAmB,EAAE,mBAAmB;IACxC,yCAAyC;IACzC,eAAe,EAAE,OAAO;IACxB,4BAA4B;IAC5B,WAAW,EAAE,IAAI;CAClB,CAAC;AAEF;;;GAGG;AACU,QAAA,uBAAuB,GAAG;IACrC,wCAAwC;IACxC,GAAG,EAAE,UAAU;IACf,qCAAqC;IACrC,GAAG,EAAE,cAAc;CACpB,CAAC;AAEF;;;GAGG;AACU,QAAA,oBAAoB,GAAG;IAClC,8CAA8C;IAC9C,GAAG,EAAE,UAAU;IACf,2CAA2C;IAC3C,GAAG,EAAE,cAAc;CACpB,CAAC;AAEF;;GAEG;AACU,QAAA,qBAAqB,GAAG,GAAG,CAAC;AAEzC;;GAEG;AAED,uEAAuE;AAC3D,QAAA,oBAAoB,GAAI,EAAE,CAAC;AAG5B,QAAA,GAAG,GAAG;IACjB,OAAO,EAAE,EAAE,IAAI,EAAE,yBAAyB,EAAE,KAAK,EAAE,uBAAuB,EAAE;IAC5E,OAAO,EAAE,EAAE,IAAI,EAAE,8BAA8B,EAAE,KAAK,EAAE,4BAA4B,EAAE;IACtF,OAAO,EAAE,EAAE,IAAI,EAAE,8BAA8B,EAAE,KAAK,EAAE,4BAA4B,EAAE;CACvF,CAAC;AAEF;;GAEG;AAEH,gDAAgD;AACnC,QAAA,aAAa,GAAG,SAAS,CAAC;AACvC,oDAAoD;AACvC,QAAA,SAAS,GAAG,EAAE,CAAC;AAC5B,8CAA8C;AACjC,QAAA,QAAQ,GAAG,GAAG,CAAC;AAC5B,iDAAiD;AACpC,QAAA,gBAAgB,GAAG,IAAI,CAAC;AACrC,8CAA8C;AACjC,QAAA,iBAAiB,GAAG,KAAK,CAAC;AACvC,iDAAiD;AACpC,QAAA,iBAAiB,GAAG,IAAI,CAAC;AACtC,sCAAsC;AACzB,QAAA,SAAS,GAAG,OAAO,CAAC;AACjC,sCAAsC;AACzB,QAAA,aAAa,GAAG,EAAE,CAAC;AAChC,8EAA8E;AACjE,QAAA,aAAa,GAAG,EAAE,CAAC;AAEhC;;GAEG;AACU,QAAA,aAAa,GAAG,gBAAgB,CAAC;AAE9C;;GAEG;AACU,QAAA,gBAAgB,GAAG,oBAAoB,CAAC,CAAC,8DAA8D;AAEpH;;GAEG;AACU,QAAA,aAAa,GAAG,+CAA+C,CAAC;AAE7E;;GAEG;AACU,QAAA,aAAa,GAAG,kDAAkD,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-codes.d.ts","sourceRoot":"","sources":["error-codes.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,WAAW;IACtB;;;OAGG;;IAGH;;;OAGG;;IAGH;;;OAGG;;IAGH;;;OAGG;;IAGH;;;OAGG;;IAGH;;;QAGI;;IAGJ;;;OAGG;;IAGH;;;OAGG;;CAEK,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,SAAS,GACnB,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,OAAO,WAAW,CAAC,CAAC"}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ERROR_CODES = void 0;
4
+ /**
5
+ * Error codes used throughout the ODATANO backend
6
+ */
7
+ exports.ERROR_CODES = {
8
+ /**
9
+ * 400 – Invalid input
10
+ * Indicates that the input provided by the client is invalid (malformed address, invalid transaction hash, etc.)
11
+ */
12
+ INVALID_INPUT: 'ODATANO_INVALID_INPUT',
13
+ /**
14
+ * 404 – Data not found
15
+ * Indicates that the requested resource could not be found (Empty result set Address with no UTxOs, Transaction hash not found, etc.)
16
+ */
17
+ NOT_FOUND: 'ODATANO_NOT_FOUND',
18
+ /**
19
+ * 400 – Insufficient funds/assets
20
+ * Indicates that the address does not have enough funds or assets to complete the transaction
21
+ */
22
+ INSUFFICIENT_FUNDS: 'ODATANO_INSUFFICIENT_FUNDS',
23
+ /**
24
+ * 400 – Transaction validation failed
25
+ * Indicates that the transaction failed validation (wrong signature, tampered CBOR, etc.)
26
+ */
27
+ TX_VALIDATION_FAILED: 'ODATANO_TX_VALIDATION_FAILED',
28
+ /**
29
+ * 409 – Transaction already submitted
30
+ * Indicates that the transaction has already been submitted (duplicate/replay)
31
+ */
32
+ TX_ALREADY_SUBMITTED: 'ODATANO_TX_ALREADY_SUBMITTED',
33
+ /**
34
+ * 429 – Rate limiting
35
+ * indicates temporary unavailability
36
+ */
37
+ PROVIDER_RATE_LIMITED: 'ODATANO_PROVIDER_RATE_LIMITED',
38
+ /**
39
+ * 503 – Upstream / connectivity
40
+ * Indicates that the Cardano data provider is currently unavailable
41
+ */
42
+ PROVIDER_UNAVAILABLE: 'ODATANO_PROVIDER_UNAVAILABLE',
43
+ /**
44
+ * 500 – Internal fallback
45
+ * Indicates an unexpected internal error
46
+ */
47
+ INTERNAL_ERROR: 'ODATANO_INTERNAL_ERROR',
48
+ };
49
+ //# sourceMappingURL=error-codes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-codes.js","sourceRoot":"","sources":["error-codes.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACU,QAAA,WAAW,GAAG;IACzB;;;OAGG;IACH,aAAa,EAAE,uBAAuB;IAEtC;;;OAGG;IACH,SAAS,EAAE,mBAAmB;IAE9B;;;OAGG;IACH,kBAAkB,EAAE,4BAA4B;IAEhD;;;OAGG;IACH,oBAAoB,EAAE,8BAA8B;IAEpD;;;OAGG;IACH,oBAAoB,EAAE,8BAA8B;IAEpD;;;QAGI;IACJ,qBAAqB,EAAE,+BAA+B;IAEtD;;;OAGG;IACH,oBAAoB,EAAE,8BAA8B;IAEpD;;;OAGG;IACH,cAAc,EAAE,wBAAwB;CAChC,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["errors.ts"],"names":[],"mappings":"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"}