@typeberry/lib 0.1.1-4a6ffa9 → 0.1.1-e48de40
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/index.cjs +87 -80
- package/index.d.ts +37 -29
- package/index.js +87 -80
- package/package.json +1 -1
package/index.cjs
CHANGED
|
@@ -8040,6 +8040,23 @@ function parseLevel(lvl) {
|
|
|
8040
8040
|
}
|
|
8041
8041
|
|
|
8042
8042
|
// biome-ignore-all lint/suspicious/noConsole: logger
|
|
8043
|
+
function print(level, levelAndName, strings, data) {
|
|
8044
|
+
if (level < levelAndName[0]) {
|
|
8045
|
+
return;
|
|
8046
|
+
}
|
|
8047
|
+
const lvlText = Level[level].padEnd(5);
|
|
8048
|
+
const val = strings.map((v, idx) => `${v}${data[idx]}`);
|
|
8049
|
+
const msg = `${lvlText} [${levelAndName[1]}] ${val}`;
|
|
8050
|
+
if (level === Level.WARN) {
|
|
8051
|
+
console.warn(msg);
|
|
8052
|
+
}
|
|
8053
|
+
else if (level === Level.ERROR) {
|
|
8054
|
+
console.error(msg);
|
|
8055
|
+
}
|
|
8056
|
+
else {
|
|
8057
|
+
console.info(msg);
|
|
8058
|
+
}
|
|
8059
|
+
}
|
|
8043
8060
|
/** An optimized logger that ignores `TRACE`, `DEBUG` and `LOG` messages.
|
|
8044
8061
|
*
|
|
8045
8062
|
* Use the `create` method to instantiate the right instance of a more specialized logger.
|
|
@@ -8070,109 +8087,91 @@ class ConsoleTransport {
|
|
|
8070
8087
|
constructor(options) {
|
|
8071
8088
|
this.options = options;
|
|
8072
8089
|
}
|
|
8073
|
-
insane(
|
|
8090
|
+
insane(_levelAndName, _strings, _data) {
|
|
8074
8091
|
/* no-op */
|
|
8075
8092
|
}
|
|
8076
|
-
trace(
|
|
8093
|
+
trace(_levelAndName, _strings, _data) {
|
|
8077
8094
|
/* no-op */
|
|
8078
8095
|
}
|
|
8079
|
-
log(
|
|
8096
|
+
log(_levelAndName, _strings, _data) {
|
|
8080
8097
|
/* no-op */
|
|
8081
8098
|
}
|
|
8082
|
-
info(
|
|
8099
|
+
info(_levelAndName, _strings, _data) {
|
|
8083
8100
|
/* no-op */
|
|
8084
8101
|
}
|
|
8085
|
-
warn(
|
|
8086
|
-
|
|
8087
|
-
}
|
|
8088
|
-
error(moduleName, val) {
|
|
8089
|
-
this.push(Level.ERROR, moduleName, val);
|
|
8102
|
+
warn(levelAndName, strings, data) {
|
|
8103
|
+
print(Level.WARN, levelAndName, strings, data);
|
|
8090
8104
|
}
|
|
8091
|
-
|
|
8092
|
-
|
|
8093
|
-
const configuredLevel = findLevel(this.options, moduleName);
|
|
8094
|
-
const lvlText = Level[level].padEnd(5);
|
|
8095
|
-
if (level < configuredLevel) {
|
|
8096
|
-
return;
|
|
8097
|
-
}
|
|
8098
|
-
const msg = `${lvlText} [${shortModule}] ${val}`;
|
|
8099
|
-
if (level === Level.WARN) {
|
|
8100
|
-
console.warn(msg);
|
|
8101
|
-
}
|
|
8102
|
-
else if (level === Level.ERROR) {
|
|
8103
|
-
console.error(msg);
|
|
8104
|
-
}
|
|
8105
|
-
else {
|
|
8106
|
-
console.info(msg);
|
|
8107
|
-
}
|
|
8105
|
+
error(levelAndName, strings, data) {
|
|
8106
|
+
print(Level.ERROR, levelAndName, strings, data);
|
|
8108
8107
|
}
|
|
8109
8108
|
}
|
|
8110
8109
|
/**
|
|
8111
8110
|
* Insane version of console logger - supports insane level.
|
|
8112
8111
|
*/
|
|
8113
8112
|
class InsaneConsoleLogger extends ConsoleTransport {
|
|
8114
|
-
insane(
|
|
8115
|
-
|
|
8113
|
+
insane(levelAndName, strings, data) {
|
|
8114
|
+
print(Level.INSANE, levelAndName, strings, data);
|
|
8116
8115
|
}
|
|
8117
|
-
trace(
|
|
8118
|
-
|
|
8116
|
+
trace(levelAndName, strings, data) {
|
|
8117
|
+
print(Level.TRACE, levelAndName, strings, data);
|
|
8119
8118
|
}
|
|
8120
|
-
log(
|
|
8121
|
-
|
|
8119
|
+
log(levelAndName, strings, data) {
|
|
8120
|
+
print(Level.LOG, levelAndName, strings, data);
|
|
8122
8121
|
}
|
|
8123
|
-
info(
|
|
8124
|
-
|
|
8122
|
+
info(levelAndName, strings, data) {
|
|
8123
|
+
print(Level.INFO, levelAndName, strings, data);
|
|
8125
8124
|
}
|
|
8126
8125
|
}
|
|
8127
8126
|
/**
|
|
8128
8127
|
* A basic version of console logger - printing everything.
|
|
8129
8128
|
*/
|
|
8130
8129
|
class TraceConsoleTransport extends ConsoleTransport {
|
|
8131
|
-
insane(
|
|
8130
|
+
insane(_levelAndName, _strings, _data) {
|
|
8132
8131
|
/* no-op */
|
|
8133
8132
|
}
|
|
8134
|
-
trace(
|
|
8135
|
-
|
|
8133
|
+
trace(levelAndName, strings, data) {
|
|
8134
|
+
print(Level.TRACE, levelAndName, strings, data);
|
|
8136
8135
|
}
|
|
8137
|
-
log(
|
|
8138
|
-
|
|
8136
|
+
log(levelAndName, strings, data) {
|
|
8137
|
+
print(Level.LOG, levelAndName, strings, data);
|
|
8139
8138
|
}
|
|
8140
|
-
info(
|
|
8141
|
-
|
|
8139
|
+
info(levelAndName, strings, data) {
|
|
8140
|
+
print(Level.INFO, levelAndName, strings, data);
|
|
8142
8141
|
}
|
|
8143
8142
|
}
|
|
8144
8143
|
/**
|
|
8145
8144
|
* An optimized version of the logger - completely ignores `TRACE` level calls.
|
|
8146
8145
|
*/
|
|
8147
8146
|
class LogConsoleTransport extends ConsoleTransport {
|
|
8148
|
-
insane(
|
|
8147
|
+
insane(_levelAndName, _strings, _data) {
|
|
8149
8148
|
/* no-op */
|
|
8150
8149
|
}
|
|
8151
|
-
trace(
|
|
8150
|
+
trace(_levelAndName, _strings, _data) {
|
|
8152
8151
|
/* no-op */
|
|
8153
8152
|
}
|
|
8154
|
-
log(
|
|
8155
|
-
|
|
8153
|
+
log(levelAndName, strings, data) {
|
|
8154
|
+
print(Level.LOG, levelAndName, strings, data);
|
|
8156
8155
|
}
|
|
8157
|
-
info(
|
|
8158
|
-
|
|
8156
|
+
info(levelAndName, strings, data) {
|
|
8157
|
+
print(Level.INFO, levelAndName, strings, data);
|
|
8159
8158
|
}
|
|
8160
8159
|
}
|
|
8161
8160
|
/**
|
|
8162
8161
|
* An optimized version of the logger - completely ignores `TRACE` & `DEBUG` level calls.
|
|
8163
8162
|
*/
|
|
8164
8163
|
class InfoConsoleTransport extends ConsoleTransport {
|
|
8165
|
-
insane(
|
|
8164
|
+
insane(_levelAndName, _strings, _data) {
|
|
8166
8165
|
/* no-op */
|
|
8167
8166
|
}
|
|
8168
|
-
trace(
|
|
8167
|
+
trace(_levelAndName, _strings, _data) {
|
|
8169
8168
|
/* no-op */
|
|
8170
8169
|
}
|
|
8171
|
-
log(
|
|
8170
|
+
log(_levelAndName, _strings, _data) {
|
|
8172
8171
|
/* no-op */
|
|
8173
8172
|
}
|
|
8174
|
-
info(
|
|
8175
|
-
|
|
8173
|
+
info(levelAndName, strings, data) {
|
|
8174
|
+
print(Level.INFO, levelAndName, strings, data);
|
|
8176
8175
|
}
|
|
8177
8176
|
}
|
|
8178
8177
|
|
|
@@ -8205,11 +8204,6 @@ class Logger {
|
|
|
8205
8204
|
const module = moduleName ?? fName;
|
|
8206
8205
|
return new Logger(module.padStart(8, " "), GLOBAL_CONFIG);
|
|
8207
8206
|
}
|
|
8208
|
-
/**
|
|
8209
|
-
* Return currently configured level for given module. */
|
|
8210
|
-
static getLevel(moduleName) {
|
|
8211
|
-
return findLevel(GLOBAL_CONFIG.options, moduleName);
|
|
8212
|
-
}
|
|
8213
8207
|
/**
|
|
8214
8208
|
* Global configuration of all loggers.
|
|
8215
8209
|
*
|
|
@@ -8240,33 +8234,46 @@ class Logger {
|
|
|
8240
8234
|
const options = parseLoggerOptions(input, defaultLevel, workingDir);
|
|
8241
8235
|
Logger.configureAllFromOptions(options);
|
|
8242
8236
|
}
|
|
8237
|
+
cachedLevelAndName;
|
|
8243
8238
|
constructor(moduleName, config) {
|
|
8244
8239
|
this.moduleName = moduleName;
|
|
8245
8240
|
this.config = config;
|
|
8246
8241
|
}
|
|
8242
|
+
/** Return currently configured level for given module. */
|
|
8243
|
+
getLevel() {
|
|
8244
|
+
return this.getLevelAndName()[0];
|
|
8245
|
+
}
|
|
8246
|
+
getLevelAndName() {
|
|
8247
|
+
if (this.cachedLevelAndName === undefined) {
|
|
8248
|
+
const level = findLevel(this.config.options, this.moduleName);
|
|
8249
|
+
const shortName = this.moduleName.replace(this.config.options.workingDir, "");
|
|
8250
|
+
this.cachedLevelAndName = [level, shortName];
|
|
8251
|
+
}
|
|
8252
|
+
return this.cachedLevelAndName;
|
|
8253
|
+
}
|
|
8247
8254
|
/** Log a message with `INSANE` level. */
|
|
8248
|
-
insane(
|
|
8249
|
-
this.config.transport.insane(this.
|
|
8255
|
+
insane(strings, ...data) {
|
|
8256
|
+
this.config.transport.insane(this.getLevelAndName(), strings, data);
|
|
8250
8257
|
}
|
|
8251
8258
|
/** Log a message with `TRACE` level. */
|
|
8252
|
-
trace(
|
|
8253
|
-
this.config.transport.trace(this.
|
|
8259
|
+
trace(strings, ...data) {
|
|
8260
|
+
this.config.transport.trace(this.getLevelAndName(), strings, data);
|
|
8254
8261
|
}
|
|
8255
8262
|
/** Log a message with `DEBUG`/`LOG` level. */
|
|
8256
|
-
log(
|
|
8257
|
-
this.config.transport.log(this.
|
|
8263
|
+
log(strings, ...data) {
|
|
8264
|
+
this.config.transport.log(this.getLevelAndName(), strings, data);
|
|
8258
8265
|
}
|
|
8259
8266
|
/** Log a message with `INFO` level. */
|
|
8260
|
-
info(
|
|
8261
|
-
this.config.transport.info(this.
|
|
8267
|
+
info(strings, ...data) {
|
|
8268
|
+
this.config.transport.info(this.getLevelAndName(), strings, data);
|
|
8262
8269
|
}
|
|
8263
8270
|
/** Log a message with `WARN` level. */
|
|
8264
|
-
warn(
|
|
8265
|
-
this.config.transport.warn(this.
|
|
8271
|
+
warn(strings, ...data) {
|
|
8272
|
+
this.config.transport.warn(this.getLevelAndName(), strings, data);
|
|
8266
8273
|
}
|
|
8267
8274
|
/** Log a message with `ERROR` level. */
|
|
8268
|
-
error(
|
|
8269
|
-
this.config.transport.error(this.
|
|
8275
|
+
error(strings, ...data) {
|
|
8276
|
+
this.config.transport.error(this.getLevelAndName(), strings, data);
|
|
8270
8277
|
}
|
|
8271
8278
|
}
|
|
8272
8279
|
|
|
@@ -8293,7 +8300,7 @@ class AuthorshipOptions {
|
|
|
8293
8300
|
}
|
|
8294
8301
|
}
|
|
8295
8302
|
|
|
8296
|
-
const logger$
|
|
8303
|
+
const logger$4 = Logger.new(undefined, "config");
|
|
8297
8304
|
/** Development config. Will accept unsealed blocks for now. */
|
|
8298
8305
|
const DEV_CONFIG = "dev";
|
|
8299
8306
|
/** Default config file. */
|
|
@@ -8352,15 +8359,15 @@ class NodeConfiguration {
|
|
|
8352
8359
|
}
|
|
8353
8360
|
function loadConfig(configPath) {
|
|
8354
8361
|
if (configPath === DEFAULT_CONFIG) {
|
|
8355
|
-
logger$
|
|
8362
|
+
logger$4.log `🔧 Loading DEFAULT config`;
|
|
8356
8363
|
return parseFromJson(configs.default, NodeConfiguration.fromJson);
|
|
8357
8364
|
}
|
|
8358
8365
|
if (configPath === DEV_CONFIG) {
|
|
8359
|
-
logger$
|
|
8366
|
+
logger$4.log `🔧 Loading DEV config`;
|
|
8360
8367
|
return parseFromJson(configs.dev, NodeConfiguration.fromJson);
|
|
8361
8368
|
}
|
|
8362
8369
|
try {
|
|
8363
|
-
logger$
|
|
8370
|
+
logger$4.log `🔧 Loading config from ${configPath}`;
|
|
8364
8371
|
const configFile = fs.readFileSync(configPath, "utf8");
|
|
8365
8372
|
const parsed = JSON.parse(configFile);
|
|
8366
8373
|
return parseFromJson(parsed, NodeConfiguration.fromJson);
|
|
@@ -14222,7 +14229,7 @@ var AccessType;
|
|
|
14222
14229
|
AccessType[AccessType["READ"] = 0] = "READ";
|
|
14223
14230
|
AccessType[AccessType["WRITE"] = 1] = "WRITE";
|
|
14224
14231
|
})(AccessType || (AccessType = {}));
|
|
14225
|
-
|
|
14232
|
+
const logger$3 = Logger.new(undefined, "pvm:mem");
|
|
14226
14233
|
class Memory {
|
|
14227
14234
|
sbrkIndex;
|
|
14228
14235
|
virtualSbrkIndex;
|
|
@@ -14253,7 +14260,7 @@ class Memory {
|
|
|
14253
14260
|
if (bytes.length === 0) {
|
|
14254
14261
|
return Result$1.ok(OK);
|
|
14255
14262
|
}
|
|
14256
|
-
|
|
14263
|
+
logger$3.insane `MEM[${address}] <- ${BytesBlob.blobFrom(bytes)}`;
|
|
14257
14264
|
const pagesResult = this.getPages(address, bytes.length, AccessType.WRITE);
|
|
14258
14265
|
if (pagesResult.isError) {
|
|
14259
14266
|
return Result$1.error(pagesResult.error);
|
|
@@ -14320,7 +14327,7 @@ class Memory {
|
|
|
14320
14327
|
currentPosition += bytesToRead;
|
|
14321
14328
|
bytesLeft -= bytesToRead;
|
|
14322
14329
|
}
|
|
14323
|
-
|
|
14330
|
+
logger$3.insane `MEM[${startAddress}] => ${BytesBlob.blobFrom(result)}`;
|
|
14324
14331
|
return Result$1.ok(OK);
|
|
14325
14332
|
}
|
|
14326
14333
|
sbrk(length) {
|
|
@@ -16114,7 +16121,7 @@ class ProgramDecoder {
|
|
|
16114
16121
|
return Result$1.ok(new ProgramDecoder(program));
|
|
16115
16122
|
}
|
|
16116
16123
|
catch (e) {
|
|
16117
|
-
logger$2.error
|
|
16124
|
+
logger$2.error `Invalid program: ${e}`;
|
|
16118
16125
|
return Result$1.error(ProgramDecoderError.InvalidProgramError);
|
|
16119
16126
|
}
|
|
16120
16127
|
}
|
|
@@ -16239,7 +16246,7 @@ class Interpreter {
|
|
|
16239
16246
|
const argsType = instructionArgumentTypeMap[currentInstruction] ?? ArgumentType.NO_ARGUMENTS;
|
|
16240
16247
|
const argsResult = this.argsDecodingResults[argsType];
|
|
16241
16248
|
this.argsDecoder.fillArgs(this.pc, argsResult);
|
|
16242
|
-
logger$1.insane
|
|
16249
|
+
logger$1.insane `[PC: ${this.pc}] ${Instruction[currentInstruction]}`;
|
|
16243
16250
|
if (!isValidInstruction) {
|
|
16244
16251
|
this.instructionResult.status = Result.PANIC;
|
|
16245
16252
|
}
|
|
@@ -16311,7 +16318,7 @@ class Interpreter {
|
|
|
16311
16318
|
this.status = Status.HOST;
|
|
16312
16319
|
break;
|
|
16313
16320
|
}
|
|
16314
|
-
logger$1.insane
|
|
16321
|
+
logger$1.insane `[PC: ${this.pc}] Status: ${Result[this.instructionResult.status]}`;
|
|
16315
16322
|
return this.status;
|
|
16316
16323
|
}
|
|
16317
16324
|
this.pc = this.instructionResult.nextPc;
|
|
@@ -16545,7 +16552,7 @@ class HostCallsManager {
|
|
|
16545
16552
|
return `r${idx}=${value} (0x${value.toString(16)})`;
|
|
16546
16553
|
})
|
|
16547
16554
|
.join(", ");
|
|
16548
|
-
logger.insane
|
|
16555
|
+
logger.insane `[${currentServiceId}] ${context} ${name}${requested}. Gas: ${gas}. Regs: ${registerValues}.`;
|
|
16549
16556
|
}
|
|
16550
16557
|
}
|
|
16551
16558
|
|
package/index.d.ts
CHANGED
|
@@ -7953,12 +7953,6 @@ declare class Logger {
|
|
|
7953
7953
|
return new Logger(module.padStart(8, " "), GLOBAL_CONFIG);
|
|
7954
7954
|
}
|
|
7955
7955
|
|
|
7956
|
-
/**
|
|
7957
|
-
* Return currently configured level for given module. */
|
|
7958
|
-
static getLevel(moduleName: string): Level {
|
|
7959
|
-
return findLevel(GLOBAL_CONFIG.options, moduleName);
|
|
7960
|
-
}
|
|
7961
|
-
|
|
7962
7956
|
/**
|
|
7963
7957
|
* Global configuration of all loggers.
|
|
7964
7958
|
*
|
|
@@ -7993,39 +7987,55 @@ declare class Logger {
|
|
|
7993
7987
|
Logger.configureAllFromOptions(options);
|
|
7994
7988
|
}
|
|
7995
7989
|
|
|
7990
|
+
private cachedLevelAndName?: readonly [Level, string];
|
|
7991
|
+
|
|
7996
7992
|
private constructor(
|
|
7997
7993
|
private readonly moduleName: string,
|
|
7998
7994
|
private readonly config: typeof GLOBAL_CONFIG,
|
|
7999
7995
|
) {}
|
|
8000
7996
|
|
|
7997
|
+
/** Return currently configured level for given module. */
|
|
7998
|
+
getLevel(): Level {
|
|
7999
|
+
return this.getLevelAndName()[0];
|
|
8000
|
+
}
|
|
8001
|
+
|
|
8002
|
+
private getLevelAndName(): readonly [Level, string] {
|
|
8003
|
+
if (this.cachedLevelAndName === undefined) {
|
|
8004
|
+
const level = findLevel(this.config.options, this.moduleName);
|
|
8005
|
+
const shortName = this.moduleName.replace(this.config.options.workingDir, "");
|
|
8006
|
+
this.cachedLevelAndName = [level, shortName];
|
|
8007
|
+
}
|
|
8008
|
+
return this.cachedLevelAndName;
|
|
8009
|
+
}
|
|
8010
|
+
|
|
8001
8011
|
/** Log a message with `INSANE` level. */
|
|
8002
|
-
insane(
|
|
8003
|
-
this.config.transport.insane(this.
|
|
8012
|
+
insane(strings: TemplateStringsArray, ...data: unknown[]) {
|
|
8013
|
+
this.config.transport.insane(this.getLevelAndName(), strings, data);
|
|
8004
8014
|
}
|
|
8005
8015
|
|
|
8006
8016
|
/** Log a message with `TRACE` level. */
|
|
8007
|
-
trace(
|
|
8008
|
-
this.config.transport.trace(this.
|
|
8017
|
+
trace(strings: TemplateStringsArray, ...data: unknown[]) {
|
|
8018
|
+
this.config.transport.trace(this.getLevelAndName(), strings, data);
|
|
8009
8019
|
}
|
|
8010
8020
|
|
|
8011
8021
|
/** Log a message with `DEBUG`/`LOG` level. */
|
|
8012
|
-
log(
|
|
8013
|
-
this.config.transport.log(this.
|
|
8022
|
+
log(strings: TemplateStringsArray, ...data: unknown[]) {
|
|
8023
|
+
this.config.transport.log(this.getLevelAndName(), strings, data);
|
|
8014
8024
|
}
|
|
8015
8025
|
|
|
8016
8026
|
/** Log a message with `INFO` level. */
|
|
8017
|
-
info(
|
|
8018
|
-
this.config.transport.info(this.
|
|
8027
|
+
info(strings: TemplateStringsArray, ...data: unknown[]) {
|
|
8028
|
+
this.config.transport.info(this.getLevelAndName(), strings, data);
|
|
8019
8029
|
}
|
|
8020
8030
|
|
|
8021
8031
|
/** Log a message with `WARN` level. */
|
|
8022
|
-
warn(
|
|
8023
|
-
this.config.transport.warn(this.
|
|
8032
|
+
warn(strings: TemplateStringsArray, ...data: unknown[]) {
|
|
8033
|
+
this.config.transport.warn(this.getLevelAndName(), strings, data);
|
|
8024
8034
|
}
|
|
8025
8035
|
|
|
8026
8036
|
/** Log a message with `ERROR` level. */
|
|
8027
|
-
error(
|
|
8028
|
-
this.config.transport.error(this.
|
|
8037
|
+
error(strings: TemplateStringsArray, ...data: unknown[]) {
|
|
8038
|
+
this.config.transport.error(this.getLevelAndName(), strings, data);
|
|
8029
8039
|
}
|
|
8030
8040
|
}
|
|
8031
8041
|
|
|
@@ -8124,17 +8134,17 @@ declare class NodeConfiguration {
|
|
|
8124
8134
|
|
|
8125
8135
|
declare function loadConfig(configPath: string): NodeConfiguration {
|
|
8126
8136
|
if (configPath === DEFAULT_CONFIG) {
|
|
8127
|
-
logger.log
|
|
8137
|
+
logger.log`🔧 Loading DEFAULT config`;
|
|
8128
8138
|
return parseFromJson(configs.default, NodeConfiguration.fromJson);
|
|
8129
8139
|
}
|
|
8130
8140
|
|
|
8131
8141
|
if (configPath === DEV_CONFIG) {
|
|
8132
|
-
logger.log
|
|
8142
|
+
logger.log`🔧 Loading DEV config`;
|
|
8133
8143
|
return parseFromJson(configs.dev, NodeConfiguration.fromJson);
|
|
8134
8144
|
}
|
|
8135
8145
|
|
|
8136
8146
|
try {
|
|
8137
|
-
logger.log
|
|
8147
|
+
logger.log`🔧 Loading config from ${configPath}`;
|
|
8138
8148
|
const configFile = fs.readFileSync(configPath, "utf8");
|
|
8139
8149
|
const parsed = JSON.parse(configFile);
|
|
8140
8150
|
return parseFromJson(parsed, NodeConfiguration.fromJson);
|
|
@@ -14471,8 +14481,6 @@ declare enum AccessType {
|
|
|
14471
14481
|
WRITE = 1,
|
|
14472
14482
|
}
|
|
14473
14483
|
|
|
14474
|
-
// const logger = Logger.new(import.meta.filename, "pvm:mem");
|
|
14475
|
-
|
|
14476
14484
|
declare class Memory {
|
|
14477
14485
|
static fromInitialMemory(initialMemoryState: InitialMemoryState) {
|
|
14478
14486
|
return new Memory(
|
|
@@ -14509,7 +14517,7 @@ declare class Memory {
|
|
|
14509
14517
|
return Result.ok(OK);
|
|
14510
14518
|
}
|
|
14511
14519
|
|
|
14512
|
-
|
|
14520
|
+
logger.insane`MEM[${address}] <- ${BytesBlob.blobFrom(bytes)}`;
|
|
14513
14521
|
const pagesResult = this.getPages(address, bytes.length, AccessType.WRITE);
|
|
14514
14522
|
|
|
14515
14523
|
if (pagesResult.isError) {
|
|
@@ -14598,7 +14606,7 @@ declare class Memory {
|
|
|
14598
14606
|
bytesLeft -= bytesToRead;
|
|
14599
14607
|
}
|
|
14600
14608
|
|
|
14601
|
-
|
|
14609
|
+
logger.insane`MEM[${startAddress}] => ${BytesBlob.blobFrom(result)}`;
|
|
14602
14610
|
return Result.ok(OK);
|
|
14603
14611
|
}
|
|
14604
14612
|
|
|
@@ -16561,7 +16569,7 @@ declare class ProgramDecoder {
|
|
|
16561
16569
|
try {
|
|
16562
16570
|
return Result.ok(new ProgramDecoder(program));
|
|
16563
16571
|
} catch (e) {
|
|
16564
|
-
logger.error
|
|
16572
|
+
logger.error`Invalid program: ${e}`;
|
|
16565
16573
|
return Result.error(ProgramDecoderError.InvalidProgramError);
|
|
16566
16574
|
}
|
|
16567
16575
|
}
|
|
@@ -16723,7 +16731,7 @@ declare class Interpreter {
|
|
|
16723
16731
|
const argsResult = this.argsDecodingResults[argsType];
|
|
16724
16732
|
this.argsDecoder.fillArgs(this.pc, argsResult);
|
|
16725
16733
|
|
|
16726
|
-
logger.insane
|
|
16734
|
+
logger.insane`[PC: ${this.pc}] ${Instruction[currentInstruction]}`;
|
|
16727
16735
|
|
|
16728
16736
|
if (!isValidInstruction) {
|
|
16729
16737
|
this.instructionResult.status = Result.PANIC;
|
|
@@ -16800,7 +16808,7 @@ declare class Interpreter {
|
|
|
16800
16808
|
this.status = Status.HOST;
|
|
16801
16809
|
break;
|
|
16802
16810
|
}
|
|
16803
|
-
logger.insane
|
|
16811
|
+
logger.insane`[PC: ${this.pc}] Status: ${Result[this.instructionResult.status]}`;
|
|
16804
16812
|
return this.status;
|
|
16805
16813
|
}
|
|
16806
16814
|
|
|
@@ -17539,7 +17547,7 @@ declare class HostCallsManager {
|
|
|
17539
17547
|
return `r${idx}=${value} (0x${value.toString(16)})`;
|
|
17540
17548
|
})
|
|
17541
17549
|
.join(", ");
|
|
17542
|
-
logger.insane
|
|
17550
|
+
logger.insane`[${currentServiceId}] ${context} ${name}${requested}. Gas: ${gas}. Regs: ${registerValues}.`;
|
|
17543
17551
|
}
|
|
17544
17552
|
}
|
|
17545
17553
|
|
package/index.js
CHANGED
|
@@ -8037,6 +8037,23 @@ function parseLevel(lvl) {
|
|
|
8037
8037
|
}
|
|
8038
8038
|
|
|
8039
8039
|
// biome-ignore-all lint/suspicious/noConsole: logger
|
|
8040
|
+
function print(level, levelAndName, strings, data) {
|
|
8041
|
+
if (level < levelAndName[0]) {
|
|
8042
|
+
return;
|
|
8043
|
+
}
|
|
8044
|
+
const lvlText = Level[level].padEnd(5);
|
|
8045
|
+
const val = strings.map((v, idx) => `${v}${data[idx]}`);
|
|
8046
|
+
const msg = `${lvlText} [${levelAndName[1]}] ${val}`;
|
|
8047
|
+
if (level === Level.WARN) {
|
|
8048
|
+
console.warn(msg);
|
|
8049
|
+
}
|
|
8050
|
+
else if (level === Level.ERROR) {
|
|
8051
|
+
console.error(msg);
|
|
8052
|
+
}
|
|
8053
|
+
else {
|
|
8054
|
+
console.info(msg);
|
|
8055
|
+
}
|
|
8056
|
+
}
|
|
8040
8057
|
/** An optimized logger that ignores `TRACE`, `DEBUG` and `LOG` messages.
|
|
8041
8058
|
*
|
|
8042
8059
|
* Use the `create` method to instantiate the right instance of a more specialized logger.
|
|
@@ -8067,109 +8084,91 @@ class ConsoleTransport {
|
|
|
8067
8084
|
constructor(options) {
|
|
8068
8085
|
this.options = options;
|
|
8069
8086
|
}
|
|
8070
|
-
insane(
|
|
8087
|
+
insane(_levelAndName, _strings, _data) {
|
|
8071
8088
|
/* no-op */
|
|
8072
8089
|
}
|
|
8073
|
-
trace(
|
|
8090
|
+
trace(_levelAndName, _strings, _data) {
|
|
8074
8091
|
/* no-op */
|
|
8075
8092
|
}
|
|
8076
|
-
log(
|
|
8093
|
+
log(_levelAndName, _strings, _data) {
|
|
8077
8094
|
/* no-op */
|
|
8078
8095
|
}
|
|
8079
|
-
info(
|
|
8096
|
+
info(_levelAndName, _strings, _data) {
|
|
8080
8097
|
/* no-op */
|
|
8081
8098
|
}
|
|
8082
|
-
warn(
|
|
8083
|
-
|
|
8084
|
-
}
|
|
8085
|
-
error(moduleName, val) {
|
|
8086
|
-
this.push(Level.ERROR, moduleName, val);
|
|
8099
|
+
warn(levelAndName, strings, data) {
|
|
8100
|
+
print(Level.WARN, levelAndName, strings, data);
|
|
8087
8101
|
}
|
|
8088
|
-
|
|
8089
|
-
|
|
8090
|
-
const configuredLevel = findLevel(this.options, moduleName);
|
|
8091
|
-
const lvlText = Level[level].padEnd(5);
|
|
8092
|
-
if (level < configuredLevel) {
|
|
8093
|
-
return;
|
|
8094
|
-
}
|
|
8095
|
-
const msg = `${lvlText} [${shortModule}] ${val}`;
|
|
8096
|
-
if (level === Level.WARN) {
|
|
8097
|
-
console.warn(msg);
|
|
8098
|
-
}
|
|
8099
|
-
else if (level === Level.ERROR) {
|
|
8100
|
-
console.error(msg);
|
|
8101
|
-
}
|
|
8102
|
-
else {
|
|
8103
|
-
console.info(msg);
|
|
8104
|
-
}
|
|
8102
|
+
error(levelAndName, strings, data) {
|
|
8103
|
+
print(Level.ERROR, levelAndName, strings, data);
|
|
8105
8104
|
}
|
|
8106
8105
|
}
|
|
8107
8106
|
/**
|
|
8108
8107
|
* Insane version of console logger - supports insane level.
|
|
8109
8108
|
*/
|
|
8110
8109
|
class InsaneConsoleLogger extends ConsoleTransport {
|
|
8111
|
-
insane(
|
|
8112
|
-
|
|
8110
|
+
insane(levelAndName, strings, data) {
|
|
8111
|
+
print(Level.INSANE, levelAndName, strings, data);
|
|
8113
8112
|
}
|
|
8114
|
-
trace(
|
|
8115
|
-
|
|
8113
|
+
trace(levelAndName, strings, data) {
|
|
8114
|
+
print(Level.TRACE, levelAndName, strings, data);
|
|
8116
8115
|
}
|
|
8117
|
-
log(
|
|
8118
|
-
|
|
8116
|
+
log(levelAndName, strings, data) {
|
|
8117
|
+
print(Level.LOG, levelAndName, strings, data);
|
|
8119
8118
|
}
|
|
8120
|
-
info(
|
|
8121
|
-
|
|
8119
|
+
info(levelAndName, strings, data) {
|
|
8120
|
+
print(Level.INFO, levelAndName, strings, data);
|
|
8122
8121
|
}
|
|
8123
8122
|
}
|
|
8124
8123
|
/**
|
|
8125
8124
|
* A basic version of console logger - printing everything.
|
|
8126
8125
|
*/
|
|
8127
8126
|
class TraceConsoleTransport extends ConsoleTransport {
|
|
8128
|
-
insane(
|
|
8127
|
+
insane(_levelAndName, _strings, _data) {
|
|
8129
8128
|
/* no-op */
|
|
8130
8129
|
}
|
|
8131
|
-
trace(
|
|
8132
|
-
|
|
8130
|
+
trace(levelAndName, strings, data) {
|
|
8131
|
+
print(Level.TRACE, levelAndName, strings, data);
|
|
8133
8132
|
}
|
|
8134
|
-
log(
|
|
8135
|
-
|
|
8133
|
+
log(levelAndName, strings, data) {
|
|
8134
|
+
print(Level.LOG, levelAndName, strings, data);
|
|
8136
8135
|
}
|
|
8137
|
-
info(
|
|
8138
|
-
|
|
8136
|
+
info(levelAndName, strings, data) {
|
|
8137
|
+
print(Level.INFO, levelAndName, strings, data);
|
|
8139
8138
|
}
|
|
8140
8139
|
}
|
|
8141
8140
|
/**
|
|
8142
8141
|
* An optimized version of the logger - completely ignores `TRACE` level calls.
|
|
8143
8142
|
*/
|
|
8144
8143
|
class LogConsoleTransport extends ConsoleTransport {
|
|
8145
|
-
insane(
|
|
8144
|
+
insane(_levelAndName, _strings, _data) {
|
|
8146
8145
|
/* no-op */
|
|
8147
8146
|
}
|
|
8148
|
-
trace(
|
|
8147
|
+
trace(_levelAndName, _strings, _data) {
|
|
8149
8148
|
/* no-op */
|
|
8150
8149
|
}
|
|
8151
|
-
log(
|
|
8152
|
-
|
|
8150
|
+
log(levelAndName, strings, data) {
|
|
8151
|
+
print(Level.LOG, levelAndName, strings, data);
|
|
8153
8152
|
}
|
|
8154
|
-
info(
|
|
8155
|
-
|
|
8153
|
+
info(levelAndName, strings, data) {
|
|
8154
|
+
print(Level.INFO, levelAndName, strings, data);
|
|
8156
8155
|
}
|
|
8157
8156
|
}
|
|
8158
8157
|
/**
|
|
8159
8158
|
* An optimized version of the logger - completely ignores `TRACE` & `DEBUG` level calls.
|
|
8160
8159
|
*/
|
|
8161
8160
|
class InfoConsoleTransport extends ConsoleTransport {
|
|
8162
|
-
insane(
|
|
8161
|
+
insane(_levelAndName, _strings, _data) {
|
|
8163
8162
|
/* no-op */
|
|
8164
8163
|
}
|
|
8165
|
-
trace(
|
|
8164
|
+
trace(_levelAndName, _strings, _data) {
|
|
8166
8165
|
/* no-op */
|
|
8167
8166
|
}
|
|
8168
|
-
log(
|
|
8167
|
+
log(_levelAndName, _strings, _data) {
|
|
8169
8168
|
/* no-op */
|
|
8170
8169
|
}
|
|
8171
|
-
info(
|
|
8172
|
-
|
|
8170
|
+
info(levelAndName, strings, data) {
|
|
8171
|
+
print(Level.INFO, levelAndName, strings, data);
|
|
8173
8172
|
}
|
|
8174
8173
|
}
|
|
8175
8174
|
|
|
@@ -8202,11 +8201,6 @@ class Logger {
|
|
|
8202
8201
|
const module = moduleName ?? fName;
|
|
8203
8202
|
return new Logger(module.padStart(8, " "), GLOBAL_CONFIG);
|
|
8204
8203
|
}
|
|
8205
|
-
/**
|
|
8206
|
-
* Return currently configured level for given module. */
|
|
8207
|
-
static getLevel(moduleName) {
|
|
8208
|
-
return findLevel(GLOBAL_CONFIG.options, moduleName);
|
|
8209
|
-
}
|
|
8210
8204
|
/**
|
|
8211
8205
|
* Global configuration of all loggers.
|
|
8212
8206
|
*
|
|
@@ -8237,33 +8231,46 @@ class Logger {
|
|
|
8237
8231
|
const options = parseLoggerOptions(input, defaultLevel, workingDir);
|
|
8238
8232
|
Logger.configureAllFromOptions(options);
|
|
8239
8233
|
}
|
|
8234
|
+
cachedLevelAndName;
|
|
8240
8235
|
constructor(moduleName, config) {
|
|
8241
8236
|
this.moduleName = moduleName;
|
|
8242
8237
|
this.config = config;
|
|
8243
8238
|
}
|
|
8239
|
+
/** Return currently configured level for given module. */
|
|
8240
|
+
getLevel() {
|
|
8241
|
+
return this.getLevelAndName()[0];
|
|
8242
|
+
}
|
|
8243
|
+
getLevelAndName() {
|
|
8244
|
+
if (this.cachedLevelAndName === undefined) {
|
|
8245
|
+
const level = findLevel(this.config.options, this.moduleName);
|
|
8246
|
+
const shortName = this.moduleName.replace(this.config.options.workingDir, "");
|
|
8247
|
+
this.cachedLevelAndName = [level, shortName];
|
|
8248
|
+
}
|
|
8249
|
+
return this.cachedLevelAndName;
|
|
8250
|
+
}
|
|
8244
8251
|
/** Log a message with `INSANE` level. */
|
|
8245
|
-
insane(
|
|
8246
|
-
this.config.transport.insane(this.
|
|
8252
|
+
insane(strings, ...data) {
|
|
8253
|
+
this.config.transport.insane(this.getLevelAndName(), strings, data);
|
|
8247
8254
|
}
|
|
8248
8255
|
/** Log a message with `TRACE` level. */
|
|
8249
|
-
trace(
|
|
8250
|
-
this.config.transport.trace(this.
|
|
8256
|
+
trace(strings, ...data) {
|
|
8257
|
+
this.config.transport.trace(this.getLevelAndName(), strings, data);
|
|
8251
8258
|
}
|
|
8252
8259
|
/** Log a message with `DEBUG`/`LOG` level. */
|
|
8253
|
-
log(
|
|
8254
|
-
this.config.transport.log(this.
|
|
8260
|
+
log(strings, ...data) {
|
|
8261
|
+
this.config.transport.log(this.getLevelAndName(), strings, data);
|
|
8255
8262
|
}
|
|
8256
8263
|
/** Log a message with `INFO` level. */
|
|
8257
|
-
info(
|
|
8258
|
-
this.config.transport.info(this.
|
|
8264
|
+
info(strings, ...data) {
|
|
8265
|
+
this.config.transport.info(this.getLevelAndName(), strings, data);
|
|
8259
8266
|
}
|
|
8260
8267
|
/** Log a message with `WARN` level. */
|
|
8261
|
-
warn(
|
|
8262
|
-
this.config.transport.warn(this.
|
|
8268
|
+
warn(strings, ...data) {
|
|
8269
|
+
this.config.transport.warn(this.getLevelAndName(), strings, data);
|
|
8263
8270
|
}
|
|
8264
8271
|
/** Log a message with `ERROR` level. */
|
|
8265
|
-
error(
|
|
8266
|
-
this.config.transport.error(this.
|
|
8272
|
+
error(strings, ...data) {
|
|
8273
|
+
this.config.transport.error(this.getLevelAndName(), strings, data);
|
|
8267
8274
|
}
|
|
8268
8275
|
}
|
|
8269
8276
|
|
|
@@ -8290,7 +8297,7 @@ class AuthorshipOptions {
|
|
|
8290
8297
|
}
|
|
8291
8298
|
}
|
|
8292
8299
|
|
|
8293
|
-
const logger$
|
|
8300
|
+
const logger$4 = Logger.new(import.meta.filename, "config");
|
|
8294
8301
|
/** Development config. Will accept unsealed blocks for now. */
|
|
8295
8302
|
const DEV_CONFIG = "dev";
|
|
8296
8303
|
/** Default config file. */
|
|
@@ -8349,15 +8356,15 @@ class NodeConfiguration {
|
|
|
8349
8356
|
}
|
|
8350
8357
|
function loadConfig(configPath) {
|
|
8351
8358
|
if (configPath === DEFAULT_CONFIG) {
|
|
8352
|
-
logger$
|
|
8359
|
+
logger$4.log `🔧 Loading DEFAULT config`;
|
|
8353
8360
|
return parseFromJson(configs.default, NodeConfiguration.fromJson);
|
|
8354
8361
|
}
|
|
8355
8362
|
if (configPath === DEV_CONFIG) {
|
|
8356
|
-
logger$
|
|
8363
|
+
logger$4.log `🔧 Loading DEV config`;
|
|
8357
8364
|
return parseFromJson(configs.dev, NodeConfiguration.fromJson);
|
|
8358
8365
|
}
|
|
8359
8366
|
try {
|
|
8360
|
-
logger$
|
|
8367
|
+
logger$4.log `🔧 Loading config from ${configPath}`;
|
|
8361
8368
|
const configFile = fs.readFileSync(configPath, "utf8");
|
|
8362
8369
|
const parsed = JSON.parse(configFile);
|
|
8363
8370
|
return parseFromJson(parsed, NodeConfiguration.fromJson);
|
|
@@ -14219,7 +14226,7 @@ var AccessType;
|
|
|
14219
14226
|
AccessType[AccessType["READ"] = 0] = "READ";
|
|
14220
14227
|
AccessType[AccessType["WRITE"] = 1] = "WRITE";
|
|
14221
14228
|
})(AccessType || (AccessType = {}));
|
|
14222
|
-
|
|
14229
|
+
const logger$3 = Logger.new(import.meta.filename, "pvm:mem");
|
|
14223
14230
|
class Memory {
|
|
14224
14231
|
sbrkIndex;
|
|
14225
14232
|
virtualSbrkIndex;
|
|
@@ -14250,7 +14257,7 @@ class Memory {
|
|
|
14250
14257
|
if (bytes.length === 0) {
|
|
14251
14258
|
return Result$1.ok(OK);
|
|
14252
14259
|
}
|
|
14253
|
-
|
|
14260
|
+
logger$3.insane `MEM[${address}] <- ${BytesBlob.blobFrom(bytes)}`;
|
|
14254
14261
|
const pagesResult = this.getPages(address, bytes.length, AccessType.WRITE);
|
|
14255
14262
|
if (pagesResult.isError) {
|
|
14256
14263
|
return Result$1.error(pagesResult.error);
|
|
@@ -14317,7 +14324,7 @@ class Memory {
|
|
|
14317
14324
|
currentPosition += bytesToRead;
|
|
14318
14325
|
bytesLeft -= bytesToRead;
|
|
14319
14326
|
}
|
|
14320
|
-
|
|
14327
|
+
logger$3.insane `MEM[${startAddress}] => ${BytesBlob.blobFrom(result)}`;
|
|
14321
14328
|
return Result$1.ok(OK);
|
|
14322
14329
|
}
|
|
14323
14330
|
sbrk(length) {
|
|
@@ -16111,7 +16118,7 @@ class ProgramDecoder {
|
|
|
16111
16118
|
return Result$1.ok(new ProgramDecoder(program));
|
|
16112
16119
|
}
|
|
16113
16120
|
catch (e) {
|
|
16114
|
-
logger$2.error
|
|
16121
|
+
logger$2.error `Invalid program: ${e}`;
|
|
16115
16122
|
return Result$1.error(ProgramDecoderError.InvalidProgramError);
|
|
16116
16123
|
}
|
|
16117
16124
|
}
|
|
@@ -16236,7 +16243,7 @@ class Interpreter {
|
|
|
16236
16243
|
const argsType = instructionArgumentTypeMap[currentInstruction] ?? ArgumentType.NO_ARGUMENTS;
|
|
16237
16244
|
const argsResult = this.argsDecodingResults[argsType];
|
|
16238
16245
|
this.argsDecoder.fillArgs(this.pc, argsResult);
|
|
16239
|
-
logger$1.insane
|
|
16246
|
+
logger$1.insane `[PC: ${this.pc}] ${Instruction[currentInstruction]}`;
|
|
16240
16247
|
if (!isValidInstruction) {
|
|
16241
16248
|
this.instructionResult.status = Result.PANIC;
|
|
16242
16249
|
}
|
|
@@ -16308,7 +16315,7 @@ class Interpreter {
|
|
|
16308
16315
|
this.status = Status.HOST;
|
|
16309
16316
|
break;
|
|
16310
16317
|
}
|
|
16311
|
-
logger$1.insane
|
|
16318
|
+
logger$1.insane `[PC: ${this.pc}] Status: ${Result[this.instructionResult.status]}`;
|
|
16312
16319
|
return this.status;
|
|
16313
16320
|
}
|
|
16314
16321
|
this.pc = this.instructionResult.nextPc;
|
|
@@ -16542,7 +16549,7 @@ class HostCallsManager {
|
|
|
16542
16549
|
return `r${idx}=${value} (0x${value.toString(16)})`;
|
|
16543
16550
|
})
|
|
16544
16551
|
.join(", ");
|
|
16545
|
-
logger.insane
|
|
16552
|
+
logger.insane `[${currentServiceId}] ${context} ${name}${requested}. Gas: ${gas}. Regs: ${registerValues}.`;
|
|
16546
16553
|
}
|
|
16547
16554
|
}
|
|
16548
16555
|
|