codebuff 1.0.99
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 +70 -0
- package/dist/chat-storage.d.ts +29 -0
- package/dist/chat-storage.js +125 -0
- package/dist/chat-storage.js.map +1 -0
- package/dist/cli.d.ts +37 -0
- package/dist/cli.js +416 -0
- package/dist/cli.js.map +1 -0
- package/dist/client.d.ts +41 -0
- package/dist/client.js +443 -0
- package/dist/client.js.map +1 -0
- package/dist/code-map/languages.d.ts +12 -0
- package/dist/code-map/languages.js +129 -0
- package/dist/code-map/languages.js.map +1 -0
- package/dist/code-map/parse.d.ts +11 -0
- package/dist/code-map/parse.js +127 -0
- package/dist/code-map/parse.js.map +1 -0
- package/dist/code-map/test-langs/test.d.ts +11 -0
- package/dist/code-map/test-langs/test.js +23 -0
- package/dist/code-map/test-langs/test.js.map +1 -0
- package/dist/code-map/tree-sitter-queries/readme.md +23 -0
- package/dist/code-map/tree-sitter-queries/tree-sitter-c-tags.scm +11 -0
- package/dist/code-map/tree-sitter-queries/tree-sitter-c_sharp-tags.scm +13 -0
- package/dist/code-map/tree-sitter-queries/tree-sitter-cpp-tags.scm +17 -0
- package/dist/code-map/tree-sitter-queries/tree-sitter-go-tags.scm +26 -0
- package/dist/code-map/tree-sitter-queries/tree-sitter-java-tags.scm +19 -0
- package/dist/code-map/tree-sitter-queries/tree-sitter-javascript-tags.scm +15 -0
- package/dist/code-map/tree-sitter-queries/tree-sitter-php-tags.scm +26 -0
- package/dist/code-map/tree-sitter-queries/tree-sitter-python-tags.scm +9 -0
- package/dist/code-map/tree-sitter-queries/tree-sitter-ruby-tags.scm +58 -0
- package/dist/code-map/tree-sitter-queries/tree-sitter-rust-tags.scm +26 -0
- package/dist/code-map/tree-sitter-queries/tree-sitter-typescript-tags.scm +15 -0
- package/dist/code-map/tsconfig.tsbuildinfo +1 -0
- package/dist/common/actions.d.ts +1062 -0
- package/dist/common/actions.js +180 -0
- package/dist/common/actions.js.map +1 -0
- package/dist/common/billing/quota-manager.d.ts +59 -0
- package/dist/common/billing/quota-manager.js +200 -0
- package/dist/common/billing/quota-manager.js.map +1 -0
- package/dist/common/constants.d.ts +24 -0
- package/dist/common/constants.js +73 -0
- package/dist/common/constants.js.map +1 -0
- package/dist/common/db/drizzle.config.d.ts +2 -0
- package/dist/common/db/drizzle.config.js +17 -0
- package/dist/common/db/drizzle.config.js.map +1 -0
- package/dist/common/db/env.d.mts +1 -0
- package/dist/common/db/env.mjs +26 -0
- package/dist/common/db/env.mjs.map +1 -0
- package/dist/common/db/index.d.ts +6 -0
- package/dist/common/db/index.js +35 -0
- package/dist/common/db/index.js.map +1 -0
- package/dist/common/db/schema.d.ts +994 -0
- package/dist/common/db/schema.js +113 -0
- package/dist/common/db/schema.js.map +1 -0
- package/dist/common/env.d.mts +1 -0
- package/dist/common/env.mjs +34 -0
- package/dist/common/env.mjs.map +1 -0
- package/dist/common/project-file-tree.d.ts +9 -0
- package/dist/common/project-file-tree.js +157 -0
- package/dist/common/project-file-tree.js.map +1 -0
- package/dist/common/types/referral.d.ts +2 -0
- package/dist/common/types/referral.js +5 -0
- package/dist/common/types/referral.js.map +1 -0
- package/dist/common/types/usage.d.ts +21 -0
- package/dist/common/types/usage.js +12 -0
- package/dist/common/types/usage.js.map +1 -0
- package/dist/common/util/__tests__/string.test.d.ts +1 -0
- package/dist/common/util/__tests__/string.test.js +83 -0
- package/dist/common/util/__tests__/string.test.js.map +1 -0
- package/dist/common/util/array.d.ts +6 -0
- package/dist/common/util/array.js +32 -0
- package/dist/common/util/array.js.map +1 -0
- package/dist/common/util/changes.d.ts +6 -0
- package/dist/common/util/changes.js +72 -0
- package/dist/common/util/changes.js.map +1 -0
- package/dist/common/util/credentials.d.ts +25 -0
- package/dist/common/util/credentials.js +24 -0
- package/dist/common/util/credentials.js.map +1 -0
- package/dist/common/util/dates.d.ts +1 -0
- package/dist/common/util/dates.js +13 -0
- package/dist/common/util/dates.js.map +1 -0
- package/dist/common/util/file.d.ts +106 -0
- package/dist/common/util/file.js +138 -0
- package/dist/common/util/file.js.map +1 -0
- package/dist/common/util/git.d.ts +4 -0
- package/dist/common/util/git.js +40 -0
- package/dist/common/util/git.js.map +1 -0
- package/dist/common/util/helpers.d.ts +1 -0
- package/dist/common/util/helpers.js +6 -0
- package/dist/common/util/helpers.js.map +1 -0
- package/dist/common/util/object.d.ts +18 -0
- package/dist/common/util/object.js +91 -0
- package/dist/common/util/object.js.map +1 -0
- package/dist/common/util/patch.d.ts +1 -0
- package/dist/common/util/patch.js +215 -0
- package/dist/common/util/patch.js.map +1 -0
- package/dist/common/util/promise.d.ts +1 -0
- package/dist/common/util/promise.js +33 -0
- package/dist/common/util/promise.js.map +1 -0
- package/dist/common/util/referral.d.ts +1 -0
- package/dist/common/util/referral.js +6 -0
- package/dist/common/util/referral.js.map +1 -0
- package/dist/common/util/server/referral.d.ts +14 -0
- package/dist/common/util/server/referral.js +85 -0
- package/dist/common/util/server/referral.js.map +1 -0
- package/dist/common/util/string.d.ts +3 -0
- package/dist/common/util/string.js +60 -0
- package/dist/common/util/string.js.map +1 -0
- package/dist/common/util/stripe.d.ts +2 -0
- package/dist/common/util/stripe.js +19 -0
- package/dist/common/util/stripe.js.map +1 -0
- package/dist/common/util/tools.d.ts +2 -0
- package/dist/common/util/tools.js +13 -0
- package/dist/common/util/tools.js.map +1 -0
- package/dist/common/websockets/websocket-client.d.ts +40 -0
- package/dist/common/websockets/websocket-client.js +187 -0
- package/dist/common/websockets/websocket-client.js.map +1 -0
- package/dist/common/websockets/websocket-schema.d.ts +2530 -0
- package/dist/common/websockets/websocket-schema.js +55 -0
- package/dist/common/websockets/websocket-schema.js.map +1 -0
- package/dist/config.d.ts +2 -0
- package/dist/config.js +8 -0
- package/dist/config.js.map +1 -0
- package/dist/credentials.d.ts +3 -0
- package/dist/credentials.js +33 -0
- package/dist/credentials.js.map +1 -0
- package/dist/fingerprint.d.ts +1 -0
- package/dist/fingerprint.js +43 -0
- package/dist/fingerprint.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +50 -0
- package/dist/index.js.map +1 -0
- package/dist/manifold-api.d.ts +8 -0
- package/dist/manifold-api.js +32 -0
- package/dist/manifold-api.js.map +1 -0
- package/dist/menu.d.ts +1 -0
- package/dist/menu.js +92 -0
- package/dist/menu.js.map +1 -0
- package/dist/project-files.d.ts +48 -0
- package/dist/project-files.js +324 -0
- package/dist/project-files.js.map +1 -0
- package/dist/tool-handlers.d.ts +11 -0
- package/dist/tool-handlers.js +131 -0
- package/dist/tool-handlers.js.map +1 -0
- package/dist/update-manicode.d.ts +1 -0
- package/dist/update-manicode.js +151 -0
- package/dist/update-manicode.js.map +1 -0
- package/dist/web-scraper.d.ts +3 -0
- package/dist/web-scraper.js +79 -0
- package/dist/web-scraper.js.map +1 -0
- package/dist/worker-script-project-context.d.ts +1 -0
- package/dist/worker-script-project-context.js +13 -0
- package/dist/worker-script-project-context.js.map +1 -0
- package/package.json +62 -0
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.APIRealtimeClient = void 0;
|
|
4
|
+
exports.formatState = formatState;
|
|
5
|
+
const ws_1 = require("ws");
|
|
6
|
+
const picocolors_1 = require("picocolors");
|
|
7
|
+
// mqp: useful for debugging
|
|
8
|
+
const VERBOSE_LOGGING = false;
|
|
9
|
+
const TIMEOUT_MS = 30_000;
|
|
10
|
+
const RECONNECT_WAIT_MS = 5_000;
|
|
11
|
+
function formatState(state) {
|
|
12
|
+
switch (state) {
|
|
13
|
+
case ws_1.WebSocket.CONNECTING:
|
|
14
|
+
return 'connecting';
|
|
15
|
+
case ws_1.WebSocket.OPEN:
|
|
16
|
+
return 'open';
|
|
17
|
+
case ws_1.WebSocket.CLOSING:
|
|
18
|
+
return 'closing';
|
|
19
|
+
case ws_1.WebSocket.CLOSED:
|
|
20
|
+
return 'closed';
|
|
21
|
+
default:
|
|
22
|
+
throw new Error('Invalid websocket state.');
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
/** Client for the API websocket realtime server. Automatically manages reconnection
|
|
26
|
+
* and resubscription on disconnect, and allows subscribers to get a callback
|
|
27
|
+
* when something is broadcasted. */
|
|
28
|
+
class APIRealtimeClient {
|
|
29
|
+
ws;
|
|
30
|
+
url;
|
|
31
|
+
// Callbacks subscribed to individual actions.
|
|
32
|
+
subscribers;
|
|
33
|
+
txid;
|
|
34
|
+
// all txns that are in flight, with no ack/error/timeout
|
|
35
|
+
txns;
|
|
36
|
+
connectTimeout;
|
|
37
|
+
heartbeat;
|
|
38
|
+
hadError = false;
|
|
39
|
+
onError;
|
|
40
|
+
constructor(url, onError) {
|
|
41
|
+
this.url = url;
|
|
42
|
+
this.txid = 0;
|
|
43
|
+
this.txns = new Map();
|
|
44
|
+
this.subscribers = new Map();
|
|
45
|
+
this.onError = onError;
|
|
46
|
+
}
|
|
47
|
+
get state() {
|
|
48
|
+
return this.ws.readyState;
|
|
49
|
+
}
|
|
50
|
+
close() {
|
|
51
|
+
this.ws.close(1000, 'Closed manually.');
|
|
52
|
+
clearTimeout(this.connectTimeout);
|
|
53
|
+
}
|
|
54
|
+
connect() {
|
|
55
|
+
// you may wish to refer to https://websockets.spec.whatwg.org/
|
|
56
|
+
// in order to check the semantics of events etc.
|
|
57
|
+
this.ws = new ws_1.WebSocket(this.url);
|
|
58
|
+
this.ws.onmessage = (ev) => {
|
|
59
|
+
if (this.hadError) {
|
|
60
|
+
this.hadError = false;
|
|
61
|
+
console.log((0, picocolors_1.green)('Reconnected!'));
|
|
62
|
+
}
|
|
63
|
+
this.receiveMessage(JSON.parse(ev.data));
|
|
64
|
+
};
|
|
65
|
+
this.ws.onerror = (ev) => {
|
|
66
|
+
if (!this.hadError) {
|
|
67
|
+
this.onError();
|
|
68
|
+
this.hadError = true;
|
|
69
|
+
}
|
|
70
|
+
// this can fire without an onclose if this is the first time we ever try
|
|
71
|
+
// to connect, so we need to turn on our reconnect in that case
|
|
72
|
+
this.waitAndReconnect();
|
|
73
|
+
};
|
|
74
|
+
this.ws.onclose = (ev) => {
|
|
75
|
+
// note that if the connection closes due to an error, onerror fires and then this
|
|
76
|
+
if (VERBOSE_LOGGING) {
|
|
77
|
+
console.info(`API websocket closed with code=${ev.code}: ${ev.reason}`);
|
|
78
|
+
}
|
|
79
|
+
clearInterval(this.heartbeat);
|
|
80
|
+
// mqp: we might need to change how the txn stuff works if we ever want to
|
|
81
|
+
// implement "wait until i am subscribed, and then do something" in a component.
|
|
82
|
+
// right now it cannot be reliably used to detect that in the presence of reconnects
|
|
83
|
+
for (const txn of Array.from(this.txns.values())) {
|
|
84
|
+
clearTimeout(txn.timeout);
|
|
85
|
+
txn.reject(new Error('Websocket was closed.'));
|
|
86
|
+
}
|
|
87
|
+
this.txns.clear();
|
|
88
|
+
// 1000 is RFC code for normal on-purpose closure
|
|
89
|
+
if (ev.code !== 1000) {
|
|
90
|
+
this.waitAndReconnect();
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
return new Promise((resolve) => {
|
|
94
|
+
this.ws.onopen = (_ev) => {
|
|
95
|
+
if (VERBOSE_LOGGING) {
|
|
96
|
+
console.info('API websocket opened.');
|
|
97
|
+
}
|
|
98
|
+
this.heartbeat = setInterval(async () => this.sendMessage('ping', {}).catch(() => { }), 30000);
|
|
99
|
+
resolve();
|
|
100
|
+
};
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
waitAndReconnect() {
|
|
104
|
+
if (this.connectTimeout == null) {
|
|
105
|
+
this.connectTimeout = setTimeout(() => {
|
|
106
|
+
this.connectTimeout = undefined;
|
|
107
|
+
this.connect();
|
|
108
|
+
}, RECONNECT_WAIT_MS);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
receiveMessage(msg) {
|
|
112
|
+
if (VERBOSE_LOGGING) {
|
|
113
|
+
console.info('< Incoming API websocket message: ', msg);
|
|
114
|
+
}
|
|
115
|
+
switch (msg.type) {
|
|
116
|
+
case 'action': {
|
|
117
|
+
const action = msg.data;
|
|
118
|
+
const subscribers = this.subscribers.get(action.type) ?? [];
|
|
119
|
+
for (const callback of subscribers) {
|
|
120
|
+
callback(action);
|
|
121
|
+
}
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
case 'ack': {
|
|
125
|
+
if (msg.txid != null) {
|
|
126
|
+
const txn = this.txns.get(msg.txid);
|
|
127
|
+
if (txn == null) {
|
|
128
|
+
// mqp: only reason this should happen is getting an ack after timeout
|
|
129
|
+
console.warn(`Websocket message with old txid=${msg.txid}.`);
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
clearTimeout(txn.timeout);
|
|
133
|
+
if (msg.error != null) {
|
|
134
|
+
txn.reject(new Error(msg.error));
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
txn.resolve();
|
|
138
|
+
}
|
|
139
|
+
this.txns.delete(msg.txid);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
default:
|
|
145
|
+
console.warn(`Unknown API websocket message type received: ${msg}`);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
async sendMessage(type, data) {
|
|
149
|
+
if (VERBOSE_LOGGING) {
|
|
150
|
+
console.info(`> Outgoing API websocket ${type} message: `, data);
|
|
151
|
+
}
|
|
152
|
+
if (this.state === ws_1.WebSocket.OPEN) {
|
|
153
|
+
return new Promise((resolve, reject) => {
|
|
154
|
+
const txid = this.txid++;
|
|
155
|
+
const timeout = setTimeout(() => {
|
|
156
|
+
this.txns.delete(txid);
|
|
157
|
+
reject(new Error(`Websocket message with txid ${txid} timed out.`));
|
|
158
|
+
}, TIMEOUT_MS);
|
|
159
|
+
this.txns.set(txid, { resolve, reject, timeout });
|
|
160
|
+
this.ws.send(JSON.stringify({ type, txid, ...data }));
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
// expected if components in the code try to subscribe or unsubscribe
|
|
165
|
+
// while the socket is closed -- in this case we expect to get the state
|
|
166
|
+
// fixed up in the websocket onopen handler when we reconnect
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
sendAction(action) {
|
|
170
|
+
return this.sendMessage('action', {
|
|
171
|
+
data: action,
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
subscribe(action, callback) {
|
|
175
|
+
const currSubscribers = this.subscribers.get(action) ?? [];
|
|
176
|
+
this.subscribers.set(action, [
|
|
177
|
+
...currSubscribers,
|
|
178
|
+
callback,
|
|
179
|
+
]);
|
|
180
|
+
return () => {
|
|
181
|
+
const newSubscribers = currSubscribers.filter((cb) => cb !== callback);
|
|
182
|
+
this.subscribers.set(action, newSubscribers);
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
exports.APIRealtimeClient = APIRealtimeClient;
|
|
187
|
+
//# sourceMappingURL=websocket-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"websocket-client.js","sourceRoot":"","sources":["../../src/websockets/websocket-client.ts"],"names":[],"mappings":"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"}
|