@abaplint/runtime 2.10.82 → 2.11.0
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/build/src/character_factory.js +1 -1
- package/build/src/classic_error.js +1 -0
- package/build/src/console/memory_console.js +1 -3
- package/build/src/console/standard_out_console.js +1 -3
- package/build/src/context.js +6 -7
- package/build/src/index.js +30 -25
- package/build/src/integer_factory.js +1 -1
- package/build/src/offset_length.js +4 -0
- package/build/src/statements/call_function.js +1 -0
- package/build/src/statements/index.d.ts +2 -4
- package/build/src/statements/index.js +42 -98
- package/build/src/statements/message.js +1 -0
- package/build/src/statements/write.js +1 -0
- package/build/src/trace.d.ts +12 -0
- package/build/src/trace.js +76 -0
- package/build/src/types/abap_object.js +3 -0
- package/build/src/types/character.js +4 -1
- package/build/src/types/data_reference.js +2 -0
- package/build/src/types/date.js +2 -0
- package/build/src/types/decfloat34.js +1 -0
- package/build/src/types/field_symbol.js +3 -0
- package/build/src/types/float.js +2 -0
- package/build/src/types/hex.js +3 -0
- package/build/src/types/hex_uint8.js +3 -0
- package/build/src/types/integer.js +3 -1
- package/build/src/types/integer8.js +2 -0
- package/build/src/types/numc.js +3 -0
- package/build/src/types/packed.js +5 -0
- package/build/src/types/string.js +2 -0
- package/build/src/types/structure.js +5 -0
- package/build/src/types/table.js +19 -0
- package/build/src/types/time.js +2 -0
- package/build/src/types/utc_long.js +2 -0
- package/build/src/types/xstring.js +2 -0
- package/package.json +1 -1
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.CharacterFactory = void 0;
|
|
4
4
|
const types_1 = require("./types");
|
|
5
5
|
class CharacterFactory {
|
|
6
|
+
static map = {};
|
|
6
7
|
static get(length, value) {
|
|
7
8
|
if (CharacterFactory.map[value] === undefined) {
|
|
8
9
|
CharacterFactory.map[value] = new types_1.Character(length).set(value).setConstant();
|
|
@@ -11,5 +12,4 @@ class CharacterFactory {
|
|
|
11
12
|
}
|
|
12
13
|
}
|
|
13
14
|
exports.CharacterFactory = CharacterFactory;
|
|
14
|
-
CharacterFactory.map = {};
|
|
15
15
|
//# sourceMappingURL=character_factory.js.map
|
|
@@ -2,9 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.StandardOutConsole = void 0;
|
|
4
4
|
class StandardOutConsole {
|
|
5
|
-
|
|
6
|
-
this.empty = true;
|
|
7
|
-
}
|
|
5
|
+
empty = true;
|
|
8
6
|
clear() {
|
|
9
7
|
throw new Error("transpiler runtime: not supported for stdio console");
|
|
10
8
|
}
|
package/build/src/context.js
CHANGED
|
@@ -2,13 +2,12 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Context = void 0;
|
|
4
4
|
class Context {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
}
|
|
5
|
+
console;
|
|
6
|
+
cursorCounter = 0;
|
|
7
|
+
cursors = {};
|
|
8
|
+
// DEFAULT and secondary database connections
|
|
9
|
+
databaseConnections = {};
|
|
10
|
+
RFCDestinations = {};
|
|
12
11
|
defaultDB() {
|
|
13
12
|
if (this.databaseConnections["DEFAULT"] === undefined) {
|
|
14
13
|
throw new Error("Runtime, database not initialized");
|
package/build/src/index.js
CHANGED
|
@@ -25,32 +25,37 @@ const integer_factory_1 = require("./integer_factory");
|
|
|
25
25
|
const dynamic_call_lookup_1 = require("./dynamic_call_lookup");
|
|
26
26
|
const character_factory_1 = require("./character_factory");
|
|
27
27
|
class ABAP {
|
|
28
|
+
// global objects
|
|
29
|
+
Classes = {};
|
|
30
|
+
Forms = {};
|
|
31
|
+
DDIC = {};
|
|
32
|
+
FunctionModules = {};
|
|
33
|
+
Interfaces = {};
|
|
34
|
+
MSAG = {};
|
|
35
|
+
OA2P = {};
|
|
36
|
+
SMIM = {};
|
|
37
|
+
TypePools = {};
|
|
38
|
+
W3MI = {};
|
|
39
|
+
internalIdCounter = 1;
|
|
40
|
+
// stuff for runtime
|
|
41
|
+
statements;
|
|
42
|
+
types = types;
|
|
43
|
+
builtin = builtin;
|
|
44
|
+
operators = operators;
|
|
45
|
+
compare = compare;
|
|
46
|
+
console;
|
|
47
|
+
OffsetLength = offset_length_1.OffsetLength;
|
|
48
|
+
templateFormatting = template_formatting_1.templateFormatting;
|
|
49
|
+
expandIN = expand_in_1.expandIN;
|
|
50
|
+
expandDynamic = expand_dynamic_1.expandDynamic;
|
|
51
|
+
buildDbTableName = prefix_1.buildDbTableName;
|
|
52
|
+
ClassicError = classic_error_1.ClassicError;
|
|
53
|
+
dynamicCallLookup = dynamic_call_lookup_1.dynamicCallLookup;
|
|
54
|
+
IntegerFactory = integer_factory_1.IntegerFactory;
|
|
55
|
+
CharacterFactory = character_factory_1.CharacterFactory;
|
|
56
|
+
context;
|
|
57
|
+
dbo;
|
|
28
58
|
constructor(input) {
|
|
29
|
-
// global objects
|
|
30
|
-
this.Classes = {};
|
|
31
|
-
this.Forms = {};
|
|
32
|
-
this.DDIC = {};
|
|
33
|
-
this.FunctionModules = {};
|
|
34
|
-
this.Interfaces = {};
|
|
35
|
-
this.MSAG = {};
|
|
36
|
-
this.OA2P = {};
|
|
37
|
-
this.SMIM = {};
|
|
38
|
-
this.TypePools = {};
|
|
39
|
-
this.W3MI = {};
|
|
40
|
-
this.internalIdCounter = 1;
|
|
41
|
-
this.types = types;
|
|
42
|
-
this.builtin = builtin;
|
|
43
|
-
this.operators = operators;
|
|
44
|
-
this.compare = compare;
|
|
45
|
-
this.OffsetLength = offset_length_1.OffsetLength;
|
|
46
|
-
this.templateFormatting = template_formatting_1.templateFormatting;
|
|
47
|
-
this.expandIN = expand_in_1.expandIN;
|
|
48
|
-
this.expandDynamic = expand_dynamic_1.expandDynamic;
|
|
49
|
-
this.buildDbTableName = prefix_1.buildDbTableName;
|
|
50
|
-
this.ClassicError = classic_error_1.ClassicError;
|
|
51
|
-
this.dynamicCallLookup = dynamic_call_lookup_1.dynamicCallLookup;
|
|
52
|
-
this.IntegerFactory = integer_factory_1.IntegerFactory;
|
|
53
|
-
this.CharacterFactory = character_factory_1.CharacterFactory;
|
|
54
59
|
this.context = new context_1.Context();
|
|
55
60
|
this.console = input?.console ? input?.console : new standard_out_console_1.StandardOutConsole();
|
|
56
61
|
this.context.console = this.console;
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.IntegerFactory = void 0;
|
|
4
4
|
const types_1 = require("./types");
|
|
5
5
|
class IntegerFactory {
|
|
6
|
+
static map = {};
|
|
6
7
|
static get(value) {
|
|
7
8
|
if (IntegerFactory.map[value] === undefined) {
|
|
8
9
|
IntegerFactory.map[value] = new types_1.Integer().set(value).setConstant();
|
|
@@ -11,5 +12,4 @@ class IntegerFactory {
|
|
|
11
12
|
}
|
|
12
13
|
}
|
|
13
14
|
exports.IntegerFactory = IntegerFactory;
|
|
14
|
-
IntegerFactory.map = {};
|
|
15
15
|
//# sourceMappingURL=integer_factory.js.map
|
|
@@ -3,6 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.OffsetLength = void 0;
|
|
4
4
|
const types_1 = require("./types");
|
|
5
5
|
class OffsetLength {
|
|
6
|
+
obj;
|
|
7
|
+
offset;
|
|
8
|
+
length;
|
|
9
|
+
isHex;
|
|
6
10
|
constructor(obj, options) {
|
|
7
11
|
this.obj = obj;
|
|
8
12
|
if (this.obj instanceof types_1.FieldSymbol) {
|
|
@@ -50,6 +50,7 @@ import { FieldSymbol, Structure, Table } from "../types";
|
|
|
50
50
|
import { INumeric } from "../types/_numeric";
|
|
51
51
|
import { ICallFunctionOptions } from "./call_function";
|
|
52
52
|
import { SelectDatabaseOptions, SelectRuntimeOptions } from "../db/db";
|
|
53
|
+
import { Trace } from "../trace";
|
|
53
54
|
export declare class Statements {
|
|
54
55
|
append: typeof append;
|
|
55
56
|
assert: typeof assert;
|
|
@@ -91,11 +92,8 @@ export declare class Statements {
|
|
|
91
92
|
receive: typeof receive;
|
|
92
93
|
callTransaction: typeof callTransaction;
|
|
93
94
|
private readonly context;
|
|
94
|
-
private readonly traceTotals;
|
|
95
95
|
constructor(context: Context);
|
|
96
|
-
|
|
97
|
-
private _traceAsync;
|
|
98
|
-
_setTrace(min?: number, totals?: boolean): void;
|
|
96
|
+
_setTrace(min?: number, totals?: boolean): Trace;
|
|
99
97
|
openCursor(target: INumeric, select: string, options: IOpenCursorDatabaseOptions): Promise<void>;
|
|
100
98
|
fetchNextCursor(cursor: INumeric, target: any, packageSize?: INumeric): Promise<void>;
|
|
101
99
|
closeCursor(cursor: INumeric): Promise<void>;
|
|
@@ -51,111 +51,55 @@ const call_transaction_1 = require("./call_transaction");
|
|
|
51
51
|
const update_database_1 = require("./update_database");
|
|
52
52
|
const write_1 = require("./write");
|
|
53
53
|
const call_function_1 = require("./call_function");
|
|
54
|
-
const
|
|
54
|
+
const trace_1 = require("../trace");
|
|
55
55
|
// this is a class, as statements like SELECT needs access to the database object instance
|
|
56
56
|
// and WRITE will access the Console
|
|
57
57
|
class Statements {
|
|
58
|
+
append = append_1.append;
|
|
59
|
+
assert = assert_1.assert;
|
|
60
|
+
assign = assign_1.assign;
|
|
61
|
+
cast = cast_1.cast;
|
|
62
|
+
collect = collect_1.collect;
|
|
63
|
+
commit = commit_1.commit;
|
|
64
|
+
concatenate = concatenate_1.concatenate;
|
|
65
|
+
condense = condense_1.condense;
|
|
66
|
+
convert = convert_1.convert;
|
|
67
|
+
createData = create_data_1.createData;
|
|
68
|
+
deleteInternal = delete_internal_1.deleteInternal;
|
|
69
|
+
describe = describe_1.describe;
|
|
70
|
+
find = find_1.find;
|
|
71
|
+
unpack = unpack_1.unpack;
|
|
72
|
+
getBit = get_bit_1.getBit;
|
|
73
|
+
readReport = read_report_1.readReport;
|
|
74
|
+
getLocale = get_locale_1.getLocale;
|
|
75
|
+
getParameter = get_parameter_1.getParameter;
|
|
76
|
+
getRunTime = get_run_time_1.getRunTime;
|
|
77
|
+
getTime = get_time_1.getTime;
|
|
78
|
+
insertInternal = insert_internal_1.insertInternal;
|
|
79
|
+
loop = loop_1.loop;
|
|
80
|
+
modifyInternal = modify_internal_1.modifyInternal;
|
|
81
|
+
moveCorresponding = move_corresponding_1.moveCorresponding;
|
|
82
|
+
overlay = overlay_1.overlay;
|
|
83
|
+
raiseEvent = raise_event_1.raiseEvent;
|
|
84
|
+
readTable = read_table_1.readTable;
|
|
85
|
+
replace = replace_1.replace;
|
|
86
|
+
rollback = rollback_1.rollback;
|
|
87
|
+
setBit = set_bit_1.setBit;
|
|
88
|
+
setHandler = set_handler_1.setHandler;
|
|
89
|
+
setLocale = set_locale_1.setLocale;
|
|
90
|
+
shift = shift_1.shift;
|
|
91
|
+
sort = sort_1.sort;
|
|
92
|
+
split = split_1.split;
|
|
93
|
+
translate = translate_1.translate;
|
|
94
|
+
wait = wait_1.wait;
|
|
95
|
+
receive = receive_1.receive;
|
|
96
|
+
callTransaction = call_transaction_1.callTransaction;
|
|
97
|
+
context;
|
|
58
98
|
constructor(context) {
|
|
59
|
-
this.append = append_1.append;
|
|
60
|
-
this.assert = assert_1.assert;
|
|
61
|
-
this.assign = assign_1.assign;
|
|
62
|
-
this.cast = cast_1.cast;
|
|
63
|
-
this.collect = collect_1.collect;
|
|
64
|
-
this.commit = commit_1.commit;
|
|
65
|
-
this.concatenate = concatenate_1.concatenate;
|
|
66
|
-
this.condense = condense_1.condense;
|
|
67
|
-
this.convert = convert_1.convert;
|
|
68
|
-
this.createData = create_data_1.createData;
|
|
69
|
-
this.deleteInternal = delete_internal_1.deleteInternal;
|
|
70
|
-
this.describe = describe_1.describe;
|
|
71
|
-
this.find = find_1.find;
|
|
72
|
-
this.unpack = unpack_1.unpack;
|
|
73
|
-
this.getBit = get_bit_1.getBit;
|
|
74
|
-
this.readReport = read_report_1.readReport;
|
|
75
|
-
this.getLocale = get_locale_1.getLocale;
|
|
76
|
-
this.getParameter = get_parameter_1.getParameter;
|
|
77
|
-
this.getRunTime = get_run_time_1.getRunTime;
|
|
78
|
-
this.getTime = get_time_1.getTime;
|
|
79
|
-
this.insertInternal = insert_internal_1.insertInternal;
|
|
80
|
-
this.loop = loop_1.loop;
|
|
81
|
-
this.modifyInternal = modify_internal_1.modifyInternal;
|
|
82
|
-
this.moveCorresponding = move_corresponding_1.moveCorresponding;
|
|
83
|
-
this.overlay = overlay_1.overlay;
|
|
84
|
-
this.raiseEvent = raise_event_1.raiseEvent;
|
|
85
|
-
this.readTable = read_table_1.readTable;
|
|
86
|
-
this.replace = replace_1.replace;
|
|
87
|
-
this.rollback = rollback_1.rollback;
|
|
88
|
-
this.setBit = set_bit_1.setBit;
|
|
89
|
-
this.setHandler = set_handler_1.setHandler;
|
|
90
|
-
this.setLocale = set_locale_1.setLocale;
|
|
91
|
-
this.shift = shift_1.shift;
|
|
92
|
-
this.sort = sort_1.sort;
|
|
93
|
-
this.split = split_1.split;
|
|
94
|
-
this.translate = translate_1.translate;
|
|
95
|
-
this.wait = wait_1.wait;
|
|
96
|
-
this.receive = receive_1.receive;
|
|
97
|
-
this.callTransaction = call_transaction_1.callTransaction;
|
|
98
99
|
this.context = context;
|
|
99
|
-
this.traceTotals = {};
|
|
100
|
-
}
|
|
101
|
-
_trace(func, name, min, totals) {
|
|
102
|
-
const tt = this.traceTotals;
|
|
103
|
-
const exec = (...options) => {
|
|
104
|
-
const start = Date.now();
|
|
105
|
-
const result = func.bind(this)(...options);
|
|
106
|
-
const runtime = Date.now() - start;
|
|
107
|
-
if (totals === true) {
|
|
108
|
-
if (tt[name] === undefined) {
|
|
109
|
-
tt[name] = 0;
|
|
110
|
-
}
|
|
111
|
-
tt[name] += runtime;
|
|
112
|
-
}
|
|
113
|
-
if (runtime >= min) {
|
|
114
|
-
console.log(`STATEMENT: ${name}, ${runtime} ms`);
|
|
115
|
-
if (totals === true) {
|
|
116
|
-
console.log(JSON.stringify(tt));
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
return result;
|
|
120
|
-
};
|
|
121
|
-
return exec;
|
|
122
|
-
}
|
|
123
|
-
_traceAsync(func, name, min, totals) {
|
|
124
|
-
const tt = this.traceTotals;
|
|
125
|
-
const exec = async (...options) => {
|
|
126
|
-
const start = Date.now();
|
|
127
|
-
const result = await func.bind(this)(...options);
|
|
128
|
-
const runtime = Date.now() - start;
|
|
129
|
-
if (totals === true) {
|
|
130
|
-
if (tt[name] === undefined) {
|
|
131
|
-
tt[name] = 0;
|
|
132
|
-
}
|
|
133
|
-
tt[name] += runtime;
|
|
134
|
-
}
|
|
135
|
-
if (runtime >= min) {
|
|
136
|
-
console.log(`STATEMENT: ${name}, ${runtime} ms`);
|
|
137
|
-
if (totals === true) {
|
|
138
|
-
console.log(JSON.stringify(tt));
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
return result;
|
|
142
|
-
};
|
|
143
|
-
return exec;
|
|
144
100
|
}
|
|
145
101
|
_setTrace(min = 10, totals = false) {
|
|
146
|
-
|
|
147
|
-
for (const c of candidates) {
|
|
148
|
-
if (c === "context" || c === "constructor" || c.startsWith("_") || c === "loop") {
|
|
149
|
-
continue;
|
|
150
|
-
}
|
|
151
|
-
const func = this[c];
|
|
152
|
-
if ((0, types_1.isAsyncFunction)(func)) {
|
|
153
|
-
this[c] = this._traceAsync(func, c, min, totals);
|
|
154
|
-
}
|
|
155
|
-
else {
|
|
156
|
-
this[c] = this._trace(func, c, min, totals);
|
|
157
|
-
}
|
|
158
|
-
}
|
|
102
|
+
return new trace_1.Trace().setTrace(min, totals, this);
|
|
159
103
|
}
|
|
160
104
|
async openCursor(target, select, options) {
|
|
161
105
|
const num = await (0, open_cursor_1.openCursor)(this.context, select, options);
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare class Trace {
|
|
2
|
+
private readonly traceTotals;
|
|
3
|
+
setTrace(min: number, totals: boolean, statements: any): this;
|
|
4
|
+
getTotals(): {
|
|
5
|
+
[name: string]: {
|
|
6
|
+
calls: number;
|
|
7
|
+
totalRuntime: number;
|
|
8
|
+
};
|
|
9
|
+
};
|
|
10
|
+
private _trace;
|
|
11
|
+
private _traceAsync;
|
|
12
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Trace = void 0;
|
|
4
|
+
const types_1 = require("util/types");
|
|
5
|
+
const statements_1 = require("./statements");
|
|
6
|
+
class Trace {
|
|
7
|
+
traceTotals = {};
|
|
8
|
+
setTrace(min, totals, statements) {
|
|
9
|
+
const candidates = [...Object.keys(statements), ...Object.getOwnPropertyNames(statements_1.Statements.prototype)];
|
|
10
|
+
for (const c of candidates) {
|
|
11
|
+
if (c === "context" || c === "constructor" || c.startsWith("_") || c === "loop") {
|
|
12
|
+
continue;
|
|
13
|
+
}
|
|
14
|
+
const func = statements[c];
|
|
15
|
+
if ((0, types_1.isAsyncFunction)(func)) {
|
|
16
|
+
statements[c] = this._traceAsync(func, c, min, totals);
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
statements[c] = this._trace(func, c, min, totals);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return this;
|
|
23
|
+
}
|
|
24
|
+
getTotals() {
|
|
25
|
+
return this.traceTotals;
|
|
26
|
+
}
|
|
27
|
+
//////////////////////////////////////////
|
|
28
|
+
_trace(func, name, min, totals) {
|
|
29
|
+
const tt = this.traceTotals;
|
|
30
|
+
const exec1 = (...options) => {
|
|
31
|
+
const start = Date.now();
|
|
32
|
+
const result = func.bind(this)(...options);
|
|
33
|
+
const runtime = Date.now() - start;
|
|
34
|
+
if (totals === true) {
|
|
35
|
+
if (tt[name] === undefined) {
|
|
36
|
+
tt[name] = { calls: 0, totalRuntime: 0 };
|
|
37
|
+
}
|
|
38
|
+
tt[name].totalRuntime += runtime;
|
|
39
|
+
tt[name].calls++;
|
|
40
|
+
}
|
|
41
|
+
if (min > 0 && runtime >= min) {
|
|
42
|
+
console.log(`STATEMENT: ${name}, ${runtime} ms`);
|
|
43
|
+
if (totals === true) {
|
|
44
|
+
console.log(JSON.stringify(tt));
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return result;
|
|
48
|
+
};
|
|
49
|
+
return exec1;
|
|
50
|
+
}
|
|
51
|
+
_traceAsync(func, name, min, totals) {
|
|
52
|
+
const tt = this.traceTotals;
|
|
53
|
+
const exec2 = async (...options) => {
|
|
54
|
+
const start = Date.now();
|
|
55
|
+
const result = await func.bind(this)(...options);
|
|
56
|
+
const runtime = Date.now() - start;
|
|
57
|
+
if (totals === true) {
|
|
58
|
+
if (tt[name] === undefined) {
|
|
59
|
+
tt[name] = { calls: 0, totalRuntime: 0 };
|
|
60
|
+
}
|
|
61
|
+
tt[name].totalRuntime += runtime;
|
|
62
|
+
tt[name].calls++;
|
|
63
|
+
}
|
|
64
|
+
if (min > 0 && runtime >= min) {
|
|
65
|
+
console.log(`STATEMENT: ${name}, ${runtime} ms`);
|
|
66
|
+
if (totals === true) {
|
|
67
|
+
console.log(JSON.stringify(tt));
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return result;
|
|
71
|
+
};
|
|
72
|
+
return exec2;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
exports.Trace = Trace;
|
|
76
|
+
//# sourceMappingURL=trace.js.map
|
|
@@ -3,6 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.ABAPObject = void 0;
|
|
4
4
|
const field_symbol_1 = require("./field_symbol");
|
|
5
5
|
class ABAPObject {
|
|
6
|
+
value;
|
|
7
|
+
qualifiedName;
|
|
8
|
+
RTTIName;
|
|
6
9
|
constructor(input) {
|
|
7
10
|
this.qualifiedName = input?.qualifiedName;
|
|
8
11
|
this.RTTIName = input?.RTTIName;
|
|
@@ -9,8 +9,11 @@ const integer_1 = require("./integer");
|
|
|
9
9
|
const TRIMREGEX = / *$/;
|
|
10
10
|
const initialValues = {};
|
|
11
11
|
class Character {
|
|
12
|
+
value;
|
|
13
|
+
constant = false;
|
|
14
|
+
length;
|
|
15
|
+
extra;
|
|
12
16
|
constructor(length, extra) {
|
|
13
|
-
this.constant = false;
|
|
14
17
|
this.length = length || 1;
|
|
15
18
|
if (typeof this.length === "object") {
|
|
16
19
|
throw "Character, invalid length, object: " + JSON.stringify(this.length);
|
package/build/src/types/date.js
CHANGED
|
@@ -6,6 +6,8 @@ const _date_helper_1 = require("./_date_helper");
|
|
|
6
6
|
const float_1 = require("./float");
|
|
7
7
|
const _parse_1 = require("../operators/_parse");
|
|
8
8
|
class Date {
|
|
9
|
+
value;
|
|
10
|
+
qualifiedName;
|
|
9
11
|
constructor(input) {
|
|
10
12
|
this.clear();
|
|
11
13
|
this.qualifiedName = input?.qualifiedName;
|
|
@@ -8,6 +8,9 @@ const float_1 = require("./float");
|
|
|
8
8
|
const data_reference_1 = require("./data_reference");
|
|
9
9
|
const hex_uint8_1 = require("./hex_uint8");
|
|
10
10
|
class FieldSymbol {
|
|
11
|
+
pointer;
|
|
12
|
+
casting;
|
|
13
|
+
type;
|
|
11
14
|
constructor(type) {
|
|
12
15
|
this.pointer = undefined;
|
|
13
16
|
this.casting = false;
|
package/build/src/types/float.js
CHANGED
package/build/src/types/hex.js
CHANGED
|
@@ -8,6 +8,9 @@ const throw_error_1 = require("../throw_error");
|
|
|
8
8
|
const integer8_1 = require("./integer8");
|
|
9
9
|
const REGEXP = /^(?![A-F0-9])/;
|
|
10
10
|
class Hex {
|
|
11
|
+
value;
|
|
12
|
+
length;
|
|
13
|
+
qualifiedName;
|
|
11
14
|
constructor(input) {
|
|
12
15
|
this.length = input?.length ? input?.length : 1;
|
|
13
16
|
this.qualifiedName = input?.qualifiedName;
|
|
@@ -14,6 +14,9 @@ for (let n = 0; n < 0x100; n++) {
|
|
|
14
14
|
LUT_HEX_8b[n] = `${LUT_HEX_4b[(n >>> 4) & 0xF]}${LUT_HEX_4b[n & 0xF]}`;
|
|
15
15
|
}
|
|
16
16
|
class HexUInt8 {
|
|
17
|
+
value;
|
|
18
|
+
length;
|
|
19
|
+
qualifiedName;
|
|
17
20
|
constructor(input) {
|
|
18
21
|
this.length = input?.length ? input?.length : 1;
|
|
19
22
|
this.qualifiedName = input?.qualifiedName;
|
|
@@ -31,8 +31,10 @@ function toInteger(value, exception = true) {
|
|
|
31
31
|
return Math.round(parseFloat(value));
|
|
32
32
|
}
|
|
33
33
|
class Integer {
|
|
34
|
+
value;
|
|
35
|
+
constant = false;
|
|
36
|
+
qualifiedName;
|
|
34
37
|
constructor(input) {
|
|
35
|
-
this.constant = false;
|
|
36
38
|
this.value = 0;
|
|
37
39
|
this.qualifiedName = input?.qualifiedName;
|
|
38
40
|
}
|
|
@@ -11,6 +11,8 @@ const character_1 = require("./character");
|
|
|
11
11
|
const hex_uint8_1 = require("./hex_uint8");
|
|
12
12
|
const digits = new RegExp(/^\s*-?\+?\d+\.?\d* *$/i);
|
|
13
13
|
class Integer8 {
|
|
14
|
+
value;
|
|
15
|
+
qualifiedName;
|
|
14
16
|
constructor(input) {
|
|
15
17
|
this.value = 0n;
|
|
16
18
|
this.qualifiedName = input?.qualifiedName;
|
package/build/src/types/numc.js
CHANGED
|
@@ -7,6 +7,9 @@ const float_1 = require("./float");
|
|
|
7
7
|
const initialValues = {};
|
|
8
8
|
const regexCharacters = /[a-zA-Z]/g;
|
|
9
9
|
class Numc {
|
|
10
|
+
value;
|
|
11
|
+
length;
|
|
12
|
+
qualifiedName;
|
|
10
13
|
constructor(input) {
|
|
11
14
|
this.length = input?.length ? input?.length : 1;
|
|
12
15
|
this.qualifiedName = input?.qualifiedName;
|
|
@@ -6,6 +6,11 @@ const throw_error_1 = require("../throw_error");
|
|
|
6
6
|
const integer8_1 = require("./integer8");
|
|
7
7
|
const digits = new RegExp(/^\s*-?\+?\d*\.?\d* *$/i);
|
|
8
8
|
class Packed {
|
|
9
|
+
// todo: change this to bigint to get the proper precision? for larger than maxsafeint
|
|
10
|
+
value;
|
|
11
|
+
length;
|
|
12
|
+
decimals;
|
|
13
|
+
qualifiedName;
|
|
9
14
|
constructor(input) {
|
|
10
15
|
this.value = 0;
|
|
11
16
|
this.length = 666;
|
|
@@ -7,6 +7,11 @@ const _parse_1 = require("../operators/_parse");
|
|
|
7
7
|
const character_1 = require("./character");
|
|
8
8
|
const throw_error_1 = require("../throw_error");
|
|
9
9
|
class Structure {
|
|
10
|
+
value;
|
|
11
|
+
qualifiedName;
|
|
12
|
+
ddicName;
|
|
13
|
+
suffix;
|
|
14
|
+
asInclude;
|
|
10
15
|
constructor(fields, qualifiedName, ddicName, suffix, asInclude) {
|
|
11
16
|
this.value = fields;
|
|
12
17
|
this.qualifiedName = qualifiedName?.toUpperCase();
|
package/build/src/types/table.js
CHANGED
|
@@ -28,6 +28,9 @@ var TableKeyType;
|
|
|
28
28
|
TableKeyType["empty"] = "EMPTY";
|
|
29
29
|
})(TableKeyType || (exports.TableKeyType = TableKeyType = {}));
|
|
30
30
|
class LoopController {
|
|
31
|
+
index;
|
|
32
|
+
loopTo;
|
|
33
|
+
array;
|
|
31
34
|
constructor(from, loopTo, array) {
|
|
32
35
|
this.index = from;
|
|
33
36
|
this.loopTo = loopTo;
|
|
@@ -64,6 +67,14 @@ export class SortedTable {
|
|
|
64
67
|
}
|
|
65
68
|
*/
|
|
66
69
|
class HashedTable {
|
|
70
|
+
value;
|
|
71
|
+
header;
|
|
72
|
+
rowType;
|
|
73
|
+
loops;
|
|
74
|
+
options;
|
|
75
|
+
qualifiedName;
|
|
76
|
+
isStructured;
|
|
77
|
+
secondaryIndexes;
|
|
67
78
|
constructor(rowType, options, qualifiedName) {
|
|
68
79
|
this.value = {};
|
|
69
80
|
this.secondaryIndexes = {};
|
|
@@ -297,6 +308,14 @@ class HashedTable {
|
|
|
297
308
|
}
|
|
298
309
|
exports.HashedTable = HashedTable;
|
|
299
310
|
class Table {
|
|
311
|
+
value;
|
|
312
|
+
header;
|
|
313
|
+
rowType;
|
|
314
|
+
loops;
|
|
315
|
+
options;
|
|
316
|
+
qualifiedName;
|
|
317
|
+
isStructured;
|
|
318
|
+
secondaryIndexes;
|
|
300
319
|
constructor(rowType, options, qualifiedName) {
|
|
301
320
|
this.value = [];
|
|
302
321
|
this.secondaryIndexes = {};
|
package/build/src/types/time.js
CHANGED
|
@@ -7,6 +7,8 @@ const character_1 = require("./character");
|
|
|
7
7
|
const throw_error_1 = require("../throw_error");
|
|
8
8
|
const integer8_1 = require("./integer8");
|
|
9
9
|
class XString {
|
|
10
|
+
value;
|
|
11
|
+
qualifiedName;
|
|
10
12
|
constructor(input) {
|
|
11
13
|
this.value = "";
|
|
12
14
|
this.qualifiedName = input?.qualifiedName;
|