@forthic/interp 0.19.1 → 0.20.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.
- package/README.md +10 -0
- package/dist/cjs/forthic/interpreter.d.ts +4 -4
- package/dist/cjs/forthic/interpreter.js +13 -13
- package/dist/cjs/forthic/interpreter.js.map +1 -1
- package/dist/esm/forthic/interpreter.d.ts +4 -4
- package/dist/esm/forthic/interpreter.js +13 -13
- package/dist/esm/forthic/interpreter.js.map +1 -1
- package/package.json +5 -5
- package/dist/cjs/forthic/module-flag-manager.d.ts +0 -53
- package/dist/cjs/forthic/module-flag-manager.js +0 -87
- package/dist/cjs/forthic/module-flag-manager.js.map +0 -1
- package/dist/cjs/forthic/profiling-manager.d.ts +0 -39
- package/dist/cjs/forthic/profiling-manager.js +0 -77
- package/dist/cjs/forthic/profiling-manager.js.map +0 -1
- package/dist/cjs/forthic/streaming-manager.d.ts +0 -46
- package/dist/cjs/forthic/streaming-manager.js +0 -123
- package/dist/cjs/forthic/streaming-manager.js.map +0 -1
- package/dist/cjs/forthic/types.d.ts +0 -21
- package/dist/cjs/forthic/types.js +0 -6
- package/dist/cjs/forthic/types.js.map +0 -1
- package/dist/esm/forthic/module-flag-manager.d.ts +0 -53
- package/dist/esm/forthic/module-flag-manager.js +0 -83
- package/dist/esm/forthic/module-flag-manager.js.map +0 -1
- package/dist/esm/forthic/profiling-manager.d.ts +0 -39
- package/dist/esm/forthic/profiling-manager.js +0 -73
- package/dist/esm/forthic/profiling-manager.js.map +0 -1
- package/dist/esm/forthic/streaming-manager.d.ts +0 -46
- package/dist/esm/forthic/streaming-manager.js +0 -119
- package/dist/esm/forthic/streaming-manager.js.map +0 -1
- package/dist/esm/forthic/types.d.ts +0 -21
- package/dist/esm/forthic/types.js +0 -5
- package/dist/esm/forthic/types.js.map +0 -1
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
import { TokenType, Tokenizer } from "./tokenizer";
|
|
2
|
-
/**
|
|
3
|
-
* Manages streaming execution functionality for the Forthic interpreter
|
|
4
|
-
*/
|
|
5
|
-
export class StreamingManager {
|
|
6
|
-
streaming_token_index = 0;
|
|
7
|
-
stream = false;
|
|
8
|
-
previous_delta_length = 0;
|
|
9
|
-
/**
|
|
10
|
-
* Start streaming mode
|
|
11
|
-
*/
|
|
12
|
-
startStream() {
|
|
13
|
-
this.stream = true;
|
|
14
|
-
this.previous_delta_length = 0;
|
|
15
|
-
this.streaming_token_index = 0;
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* End streaming mode
|
|
19
|
-
*/
|
|
20
|
-
endStream() {
|
|
21
|
-
this.stream = false;
|
|
22
|
-
this.previous_delta_length = 0;
|
|
23
|
-
this.streaming_token_index = 0;
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Check if streaming is currently active
|
|
27
|
-
*/
|
|
28
|
-
isStreaming() {
|
|
29
|
-
return this.stream;
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Get current streaming token index
|
|
33
|
-
*/
|
|
34
|
-
getStreamingTokenIndex() {
|
|
35
|
-
return this.streaming_token_index;
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Set streaming token index
|
|
39
|
-
*/
|
|
40
|
-
setStreamingTokenIndex(index) {
|
|
41
|
-
this.streaming_token_index = index;
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Get previous delta length
|
|
45
|
-
*/
|
|
46
|
-
getPreviousDeltaLength() {
|
|
47
|
-
return this.previous_delta_length;
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Set previous delta length
|
|
51
|
-
*/
|
|
52
|
-
setPreviousDeltaLength(length) {
|
|
53
|
-
this.previous_delta_length = length;
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Process streaming execution and yield tokens/deltas
|
|
57
|
-
*/
|
|
58
|
-
async *processStreamingExecution(codeStream, done, reference_location, tokenHandler) {
|
|
59
|
-
// Create a new Tokenizer for the full string.
|
|
60
|
-
const tokenizer = new Tokenizer(codeStream, reference_location, done ? false : true);
|
|
61
|
-
const tokens = [];
|
|
62
|
-
let eosFound = false;
|
|
63
|
-
// Gather tokens from the beginning.
|
|
64
|
-
while (true) {
|
|
65
|
-
const token = tokenizer.next_token();
|
|
66
|
-
if (!token) {
|
|
67
|
-
break;
|
|
68
|
-
}
|
|
69
|
-
// If we hit an EOS token then push it and break.
|
|
70
|
-
if (token.type === TokenType.EOS) {
|
|
71
|
-
tokens.push(token);
|
|
72
|
-
eosFound = true;
|
|
73
|
-
break;
|
|
74
|
-
}
|
|
75
|
-
tokens.push(token);
|
|
76
|
-
}
|
|
77
|
-
const delta = eosFound ? "" : tokenizer.get_string_delta();
|
|
78
|
-
let newStop = this.findLastWordOrEOS(tokens);
|
|
79
|
-
if (eosFound && !done) {
|
|
80
|
-
newStop--;
|
|
81
|
-
}
|
|
82
|
-
if (!eosFound && !done) {
|
|
83
|
-
newStop++;
|
|
84
|
-
}
|
|
85
|
-
// Execute only tokens we have not executed previously.
|
|
86
|
-
for (let i = this.streaming_token_index; i < newStop; i++) {
|
|
87
|
-
const token = tokens[i];
|
|
88
|
-
if (!token) {
|
|
89
|
-
continue;
|
|
90
|
-
}
|
|
91
|
-
await tokenHandler(token);
|
|
92
|
-
if (this.stream &&
|
|
93
|
-
(token.type !== TokenType.WORD || token.string !== "START_LOG")) {
|
|
94
|
-
yield token.string;
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
if (this.stream && !eosFound) {
|
|
98
|
-
// Yield string delta if we're streaming and tokenizer has a delta
|
|
99
|
-
const newPortion = delta?.substring(this.previous_delta_length) || "";
|
|
100
|
-
if (newPortion) {
|
|
101
|
-
yield { stringDelta: newPortion };
|
|
102
|
-
}
|
|
103
|
-
this.previous_delta_length = delta?.length || 0;
|
|
104
|
-
}
|
|
105
|
-
if (done) {
|
|
106
|
-
this.endStream();
|
|
107
|
-
return;
|
|
108
|
-
}
|
|
109
|
-
// Update our pointer and reset if done
|
|
110
|
-
this.streaming_token_index = newStop;
|
|
111
|
-
}
|
|
112
|
-
/**
|
|
113
|
-
* Find the last word or EOS token in the tokens array
|
|
114
|
-
*/
|
|
115
|
-
findLastWordOrEOS(tokens) {
|
|
116
|
-
return tokens.findLastIndex((token) => token.type === TokenType.WORD || token.type === TokenType.EOS);
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
//# sourceMappingURL=streaming-manager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"streaming-manager.js","sourceRoot":"","sources":["../../../src/forthic/streaming-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,SAAS,EAAE,SAAS,EAAgB,MAAM,aAAa,CAAC;AAGxE;;GAEG;AACH,MAAM,OAAO,gBAAgB;IACnB,qBAAqB,GAAW,CAAC,CAAC;IAClC,MAAM,GAAY,KAAK,CAAC;IACxB,qBAAqB,GAAW,CAAC,CAAC;IAE1C;;OAEG;IACH,WAAW;QACT,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,SAAS;QACP,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,sBAAsB;QACpB,OAAO,IAAI,CAAC,qBAAqB,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,sBAAsB,CAAC,KAAa;QAClC,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,sBAAsB;QACpB,OAAO,IAAI,CAAC,qBAAqB,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,sBAAsB,CAAC,MAAc;QACnC,IAAI,CAAC,qBAAqB,GAAG,MAAM,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,CAAC,yBAAyB,CAC9B,UAAkB,EAClB,IAAa,EACb,kBAAuC,EACvC,YAA6C;QAE7C,8CAA8C;QAC9C,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,UAAU,EAAE,kBAAkB,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACrF,MAAM,MAAM,GAAY,EAAE,CAAC;QAC3B,IAAI,QAAQ,GAAG,KAAK,CAAC;QAErB,oCAAoC;QACpC,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,KAAK,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC;YACrC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM;YACR,CAAC;YAED,iDAAiD;YACjD,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,GAAG,EAAE,CAAC;gBACjC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACnB,QAAQ,GAAG,IAAI,CAAC;gBAChB,MAAM;YACR,CAAC;YAED,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;QAED,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC;QAE3D,IAAI,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAE7C,IAAI,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YACtB,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YACvB,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,uDAAuD;QACvD,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1D,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACxB,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,SAAS;YACX,CAAC;YAED,MAAM,YAAY,CAAC,KAAK,CAAC,CAAC;YAE1B,IACE,IAAI,CAAC,MAAM;gBACX,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC,EAC/D,CAAC;gBACD,MAAM,KAAK,CAAC,MAAM,CAAC;YACrB,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC7B,kEAAkE;YAClE,MAAM,UAAU,GAAG,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC;YAEtE,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,EAAE,WAAW,EAAE,UAAU,EAAiB,CAAC;YACnD,CAAC;YACD,IAAI,CAAC,qBAAqB,GAAG,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC;QAClD,CAAC;QAED,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QAED,uCAAuC;QACvC,IAAI,CAAC,qBAAqB,GAAG,OAAO,CAAC;IACvC,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,MAAe;QACvC,OAAO,MAAM,CAAC,aAAa,CACzB,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,GAAG,CACzE,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Type definitions for the Forthic interpreter
|
|
3
|
-
*/
|
|
4
|
-
export interface ModuleFlags {
|
|
5
|
-
[key: string]: unknown;
|
|
6
|
-
}
|
|
7
|
-
export interface ScreenData {
|
|
8
|
-
[key: string]: string;
|
|
9
|
-
}
|
|
10
|
-
export interface WordCount {
|
|
11
|
-
word: string;
|
|
12
|
-
count: number;
|
|
13
|
-
}
|
|
14
|
-
export interface ProfileTimestamp {
|
|
15
|
-
label: string;
|
|
16
|
-
time_ms: number;
|
|
17
|
-
}
|
|
18
|
-
export type ModuleImportSpec = string | [string, string];
|
|
19
|
-
export interface StringDelta {
|
|
20
|
-
stringDelta: string;
|
|
21
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/forthic/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|