@a2ui-vue3-elementplus/message-parser 0.1.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/dist/index.cjs ADDED
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/index.ts
21
+ var index_exports = {};
22
+ __export(index_exports, {
23
+ createChunkParser: () => createChunkParser,
24
+ parseJson: () => parseJson,
25
+ parseMessage: () => parseMessage
26
+ });
27
+ module.exports = __toCommonJS(index_exports);
28
+ function toSyntaxError(error) {
29
+ if (error instanceof SyntaxError) {
30
+ return error;
31
+ }
32
+ return new SyntaxError(error instanceof Error ? error.message : String(error));
33
+ }
34
+ function parseJson(input) {
35
+ if (typeof input !== "string") {
36
+ return { ok: true, value: input };
37
+ }
38
+ try {
39
+ return { ok: true, value: JSON.parse(input) };
40
+ } catch (error) {
41
+ return { ok: false, error: toSyntaxError(error), raw: input };
42
+ }
43
+ }
44
+ function parseMessage(text) {
45
+ const trimmed = text.trim();
46
+ if (trimmed.length === 0) {
47
+ return [];
48
+ }
49
+ const single = parseJson(trimmed);
50
+ if (single.ok) {
51
+ return [single];
52
+ }
53
+ const lines = text.split(/\r?\n/);
54
+ const results = [];
55
+ for (let index = 0; index < lines.length; index += 1) {
56
+ const raw = lines[index];
57
+ if (raw.trim().length === 0) {
58
+ continue;
59
+ }
60
+ const parsed = parseJson(raw);
61
+ results.push({ ...parsed, line: index + 1 });
62
+ }
63
+ return results;
64
+ }
65
+ function createChunkParser() {
66
+ let buffer = "";
67
+ let lineNumber = 1;
68
+ const parseLine = (raw) => {
69
+ const currentLine = lineNumber;
70
+ lineNumber += 1;
71
+ if (raw.trim().length === 0) {
72
+ return void 0;
73
+ }
74
+ const parsed = parseJson(raw);
75
+ return { ...parsed, line: currentLine };
76
+ };
77
+ return {
78
+ push(chunk) {
79
+ buffer += chunk;
80
+ const lines = buffer.split(/\r?\n/);
81
+ buffer = lines.pop() ?? "";
82
+ const results = [];
83
+ for (const line of lines) {
84
+ const parsed = parseLine(line);
85
+ if (parsed) {
86
+ results.push(parsed);
87
+ }
88
+ }
89
+ return results;
90
+ },
91
+ flush() {
92
+ if (buffer.length === 0) {
93
+ return [];
94
+ }
95
+ const parsed = parseLine(buffer);
96
+ buffer = "";
97
+ return parsed ? [parsed] : [];
98
+ },
99
+ reset() {
100
+ buffer = "";
101
+ lineNumber = 1;
102
+ }
103
+ };
104
+ }
105
+ // Annotate the CommonJS export names for ESM import in node:
106
+ 0 && (module.exports = {
107
+ createChunkParser,
108
+ parseJson,
109
+ parseMessage
110
+ });
111
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export interface ParseSuccess<T = unknown> {\n ok: true;\n value: T;\n line?: number;\n}\n\nexport interface ParseFailure {\n ok: false;\n error: SyntaxError;\n raw: string;\n line?: number;\n}\n\nexport type ParseResult<T = unknown> = ParseSuccess<T> | ParseFailure;\n\nexport interface ChunkParser<T = unknown> {\n push(chunk: string): ParseResult<T>[];\n flush(): ParseResult<T>[];\n reset(): void;\n}\n\nfunction toSyntaxError(error: unknown): SyntaxError {\n if (error instanceof SyntaxError) {\n return error;\n }\n\n return new SyntaxError(error instanceof Error ? error.message : String(error));\n}\n\nexport function parseJson<T = unknown>(input: unknown): ParseResult<T> {\n if (typeof input !== 'string') {\n return { ok: true, value: input as T };\n }\n\n try {\n return { ok: true, value: JSON.parse(input) as T };\n } catch (error) {\n return { ok: false, error: toSyntaxError(error), raw: input };\n }\n}\n\nexport function parseMessage<T = unknown>(text: string): ParseResult<T>[] {\n const trimmed = text.trim();\n\n if (trimmed.length === 0) {\n return [];\n }\n\n const single = parseJson<T>(trimmed);\n if (single.ok) {\n return [single];\n }\n\n const lines = text.split(/\\r?\\n/);\n const results: ParseResult<T>[] = [];\n\n for (let index = 0; index < lines.length; index += 1) {\n const raw = lines[index];\n if (raw.trim().length === 0) {\n continue;\n }\n\n const parsed = parseJson<T>(raw);\n results.push({ ...parsed, line: index + 1 });\n }\n\n return results;\n}\n\nexport function createChunkParser<T = unknown>(): ChunkParser<T> {\n let buffer = '';\n let lineNumber = 1;\n\n const parseLine = (raw: string): ParseResult<T> | undefined => {\n const currentLine = lineNumber;\n lineNumber += 1;\n\n if (raw.trim().length === 0) {\n return undefined;\n }\n\n const parsed = parseJson<T>(raw);\n return { ...parsed, line: currentLine };\n };\n\n return {\n push(chunk: string): ParseResult<T>[] {\n buffer += chunk;\n const lines = buffer.split(/\\r?\\n/);\n buffer = lines.pop() ?? '';\n\n const results: ParseResult<T>[] = [];\n for (const line of lines) {\n const parsed = parseLine(line);\n if (parsed) {\n results.push(parsed);\n }\n }\n\n return results;\n },\n\n flush(): ParseResult<T>[] {\n if (buffer.length === 0) {\n return [];\n }\n\n const parsed = parseLine(buffer);\n buffer = '';\n return parsed ? [parsed] : [];\n },\n\n reset(): void {\n buffer = '';\n lineNumber = 1;\n }\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAqBA,SAAS,cAAc,OAA6B;AAClD,MAAI,iBAAiB,aAAa;AAChC,WAAO;AAAA,EACT;AAEA,SAAO,IAAI,YAAY,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CAAC;AAC/E;AAEO,SAAS,UAAuB,OAAgC;AACrE,MAAI,OAAO,UAAU,UAAU;AAC7B,WAAO,EAAE,IAAI,MAAM,OAAO,MAAW;AAAA,EACvC;AAEA,MAAI;AACF,WAAO,EAAE,IAAI,MAAM,OAAO,KAAK,MAAM,KAAK,EAAO;AAAA,EACnD,SAAS,OAAO;AACd,WAAO,EAAE,IAAI,OAAO,OAAO,cAAc,KAAK,GAAG,KAAK,MAAM;AAAA,EAC9D;AACF;AAEO,SAAS,aAA0B,MAAgC;AACxE,QAAM,UAAU,KAAK,KAAK;AAE1B,MAAI,QAAQ,WAAW,GAAG;AACxB,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,SAAS,UAAa,OAAO;AACnC,MAAI,OAAO,IAAI;AACb,WAAO,CAAC,MAAM;AAAA,EAChB;AAEA,QAAM,QAAQ,KAAK,MAAM,OAAO;AAChC,QAAM,UAA4B,CAAC;AAEnC,WAAS,QAAQ,GAAG,QAAQ,MAAM,QAAQ,SAAS,GAAG;AACpD,UAAM,MAAM,MAAM,KAAK;AACvB,QAAI,IAAI,KAAK,EAAE,WAAW,GAAG;AAC3B;AAAA,IACF;AAEA,UAAM,SAAS,UAAa,GAAG;AAC/B,YAAQ,KAAK,EAAE,GAAG,QAAQ,MAAM,QAAQ,EAAE,CAAC;AAAA,EAC7C;AAEA,SAAO;AACT;AAEO,SAAS,oBAAiD;AAC/D,MAAI,SAAS;AACb,MAAI,aAAa;AAEjB,QAAM,YAAY,CAAC,QAA4C;AAC7D,UAAM,cAAc;AACpB,kBAAc;AAEd,QAAI,IAAI,KAAK,EAAE,WAAW,GAAG;AAC3B,aAAO;AAAA,IACT;AAEA,UAAM,SAAS,UAAa,GAAG;AAC/B,WAAO,EAAE,GAAG,QAAQ,MAAM,YAAY;AAAA,EACxC;AAEA,SAAO;AAAA,IACL,KAAK,OAAiC;AACpC,gBAAU;AACV,YAAM,QAAQ,OAAO,MAAM,OAAO;AAClC,eAAS,MAAM,IAAI,KAAK;AAExB,YAAM,UAA4B,CAAC;AACnC,iBAAW,QAAQ,OAAO;AACxB,cAAM,SAAS,UAAU,IAAI;AAC7B,YAAI,QAAQ;AACV,kBAAQ,KAAK,MAAM;AAAA,QACrB;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAAA,IAEA,QAA0B;AACxB,UAAI,OAAO,WAAW,GAAG;AACvB,eAAO,CAAC;AAAA,MACV;AAEA,YAAM,SAAS,UAAU,MAAM;AAC/B,eAAS;AACT,aAAO,SAAS,CAAC,MAAM,IAAI,CAAC;AAAA,IAC9B;AAAA,IAEA,QAAc;AACZ,eAAS;AACT,mBAAa;AAAA,IACf;AAAA,EACF;AACF;","names":[]}
@@ -0,0 +1,22 @@
1
+ interface ParseSuccess<T = unknown> {
2
+ ok: true;
3
+ value: T;
4
+ line?: number;
5
+ }
6
+ interface ParseFailure {
7
+ ok: false;
8
+ error: SyntaxError;
9
+ raw: string;
10
+ line?: number;
11
+ }
12
+ type ParseResult<T = unknown> = ParseSuccess<T> | ParseFailure;
13
+ interface ChunkParser<T = unknown> {
14
+ push(chunk: string): ParseResult<T>[];
15
+ flush(): ParseResult<T>[];
16
+ reset(): void;
17
+ }
18
+ declare function parseJson<T = unknown>(input: unknown): ParseResult<T>;
19
+ declare function parseMessage<T = unknown>(text: string): ParseResult<T>[];
20
+ declare function createChunkParser<T = unknown>(): ChunkParser<T>;
21
+
22
+ export { type ChunkParser, type ParseFailure, type ParseResult, type ParseSuccess, createChunkParser, parseJson, parseMessage };
@@ -0,0 +1,22 @@
1
+ interface ParseSuccess<T = unknown> {
2
+ ok: true;
3
+ value: T;
4
+ line?: number;
5
+ }
6
+ interface ParseFailure {
7
+ ok: false;
8
+ error: SyntaxError;
9
+ raw: string;
10
+ line?: number;
11
+ }
12
+ type ParseResult<T = unknown> = ParseSuccess<T> | ParseFailure;
13
+ interface ChunkParser<T = unknown> {
14
+ push(chunk: string): ParseResult<T>[];
15
+ flush(): ParseResult<T>[];
16
+ reset(): void;
17
+ }
18
+ declare function parseJson<T = unknown>(input: unknown): ParseResult<T>;
19
+ declare function parseMessage<T = unknown>(text: string): ParseResult<T>[];
20
+ declare function createChunkParser<T = unknown>(): ChunkParser<T>;
21
+
22
+ export { type ChunkParser, type ParseFailure, type ParseResult, type ParseSuccess, createChunkParser, parseJson, parseMessage };
package/dist/index.js ADDED
@@ -0,0 +1,84 @@
1
+ // src/index.ts
2
+ function toSyntaxError(error) {
3
+ if (error instanceof SyntaxError) {
4
+ return error;
5
+ }
6
+ return new SyntaxError(error instanceof Error ? error.message : String(error));
7
+ }
8
+ function parseJson(input) {
9
+ if (typeof input !== "string") {
10
+ return { ok: true, value: input };
11
+ }
12
+ try {
13
+ return { ok: true, value: JSON.parse(input) };
14
+ } catch (error) {
15
+ return { ok: false, error: toSyntaxError(error), raw: input };
16
+ }
17
+ }
18
+ function parseMessage(text) {
19
+ const trimmed = text.trim();
20
+ if (trimmed.length === 0) {
21
+ return [];
22
+ }
23
+ const single = parseJson(trimmed);
24
+ if (single.ok) {
25
+ return [single];
26
+ }
27
+ const lines = text.split(/\r?\n/);
28
+ const results = [];
29
+ for (let index = 0; index < lines.length; index += 1) {
30
+ const raw = lines[index];
31
+ if (raw.trim().length === 0) {
32
+ continue;
33
+ }
34
+ const parsed = parseJson(raw);
35
+ results.push({ ...parsed, line: index + 1 });
36
+ }
37
+ return results;
38
+ }
39
+ function createChunkParser() {
40
+ let buffer = "";
41
+ let lineNumber = 1;
42
+ const parseLine = (raw) => {
43
+ const currentLine = lineNumber;
44
+ lineNumber += 1;
45
+ if (raw.trim().length === 0) {
46
+ return void 0;
47
+ }
48
+ const parsed = parseJson(raw);
49
+ return { ...parsed, line: currentLine };
50
+ };
51
+ return {
52
+ push(chunk) {
53
+ buffer += chunk;
54
+ const lines = buffer.split(/\r?\n/);
55
+ buffer = lines.pop() ?? "";
56
+ const results = [];
57
+ for (const line of lines) {
58
+ const parsed = parseLine(line);
59
+ if (parsed) {
60
+ results.push(parsed);
61
+ }
62
+ }
63
+ return results;
64
+ },
65
+ flush() {
66
+ if (buffer.length === 0) {
67
+ return [];
68
+ }
69
+ const parsed = parseLine(buffer);
70
+ buffer = "";
71
+ return parsed ? [parsed] : [];
72
+ },
73
+ reset() {
74
+ buffer = "";
75
+ lineNumber = 1;
76
+ }
77
+ };
78
+ }
79
+ export {
80
+ createChunkParser,
81
+ parseJson,
82
+ parseMessage
83
+ };
84
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export interface ParseSuccess<T = unknown> {\n ok: true;\n value: T;\n line?: number;\n}\n\nexport interface ParseFailure {\n ok: false;\n error: SyntaxError;\n raw: string;\n line?: number;\n}\n\nexport type ParseResult<T = unknown> = ParseSuccess<T> | ParseFailure;\n\nexport interface ChunkParser<T = unknown> {\n push(chunk: string): ParseResult<T>[];\n flush(): ParseResult<T>[];\n reset(): void;\n}\n\nfunction toSyntaxError(error: unknown): SyntaxError {\n if (error instanceof SyntaxError) {\n return error;\n }\n\n return new SyntaxError(error instanceof Error ? error.message : String(error));\n}\n\nexport function parseJson<T = unknown>(input: unknown): ParseResult<T> {\n if (typeof input !== 'string') {\n return { ok: true, value: input as T };\n }\n\n try {\n return { ok: true, value: JSON.parse(input) as T };\n } catch (error) {\n return { ok: false, error: toSyntaxError(error), raw: input };\n }\n}\n\nexport function parseMessage<T = unknown>(text: string): ParseResult<T>[] {\n const trimmed = text.trim();\n\n if (trimmed.length === 0) {\n return [];\n }\n\n const single = parseJson<T>(trimmed);\n if (single.ok) {\n return [single];\n }\n\n const lines = text.split(/\\r?\\n/);\n const results: ParseResult<T>[] = [];\n\n for (let index = 0; index < lines.length; index += 1) {\n const raw = lines[index];\n if (raw.trim().length === 0) {\n continue;\n }\n\n const parsed = parseJson<T>(raw);\n results.push({ ...parsed, line: index + 1 });\n }\n\n return results;\n}\n\nexport function createChunkParser<T = unknown>(): ChunkParser<T> {\n let buffer = '';\n let lineNumber = 1;\n\n const parseLine = (raw: string): ParseResult<T> | undefined => {\n const currentLine = lineNumber;\n lineNumber += 1;\n\n if (raw.trim().length === 0) {\n return undefined;\n }\n\n const parsed = parseJson<T>(raw);\n return { ...parsed, line: currentLine };\n };\n\n return {\n push(chunk: string): ParseResult<T>[] {\n buffer += chunk;\n const lines = buffer.split(/\\r?\\n/);\n buffer = lines.pop() ?? '';\n\n const results: ParseResult<T>[] = [];\n for (const line of lines) {\n const parsed = parseLine(line);\n if (parsed) {\n results.push(parsed);\n }\n }\n\n return results;\n },\n\n flush(): ParseResult<T>[] {\n if (buffer.length === 0) {\n return [];\n }\n\n const parsed = parseLine(buffer);\n buffer = '';\n return parsed ? [parsed] : [];\n },\n\n reset(): void {\n buffer = '';\n lineNumber = 1;\n }\n };\n}\n"],"mappings":";AAqBA,SAAS,cAAc,OAA6B;AAClD,MAAI,iBAAiB,aAAa;AAChC,WAAO;AAAA,EACT;AAEA,SAAO,IAAI,YAAY,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CAAC;AAC/E;AAEO,SAAS,UAAuB,OAAgC;AACrE,MAAI,OAAO,UAAU,UAAU;AAC7B,WAAO,EAAE,IAAI,MAAM,OAAO,MAAW;AAAA,EACvC;AAEA,MAAI;AACF,WAAO,EAAE,IAAI,MAAM,OAAO,KAAK,MAAM,KAAK,EAAO;AAAA,EACnD,SAAS,OAAO;AACd,WAAO,EAAE,IAAI,OAAO,OAAO,cAAc,KAAK,GAAG,KAAK,MAAM;AAAA,EAC9D;AACF;AAEO,SAAS,aAA0B,MAAgC;AACxE,QAAM,UAAU,KAAK,KAAK;AAE1B,MAAI,QAAQ,WAAW,GAAG;AACxB,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,SAAS,UAAa,OAAO;AACnC,MAAI,OAAO,IAAI;AACb,WAAO,CAAC,MAAM;AAAA,EAChB;AAEA,QAAM,QAAQ,KAAK,MAAM,OAAO;AAChC,QAAM,UAA4B,CAAC;AAEnC,WAAS,QAAQ,GAAG,QAAQ,MAAM,QAAQ,SAAS,GAAG;AACpD,UAAM,MAAM,MAAM,KAAK;AACvB,QAAI,IAAI,KAAK,EAAE,WAAW,GAAG;AAC3B;AAAA,IACF;AAEA,UAAM,SAAS,UAAa,GAAG;AAC/B,YAAQ,KAAK,EAAE,GAAG,QAAQ,MAAM,QAAQ,EAAE,CAAC;AAAA,EAC7C;AAEA,SAAO;AACT;AAEO,SAAS,oBAAiD;AAC/D,MAAI,SAAS;AACb,MAAI,aAAa;AAEjB,QAAM,YAAY,CAAC,QAA4C;AAC7D,UAAM,cAAc;AACpB,kBAAc;AAEd,QAAI,IAAI,KAAK,EAAE,WAAW,GAAG;AAC3B,aAAO;AAAA,IACT;AAEA,UAAM,SAAS,UAAa,GAAG;AAC/B,WAAO,EAAE,GAAG,QAAQ,MAAM,YAAY;AAAA,EACxC;AAEA,SAAO;AAAA,IACL,KAAK,OAAiC;AACpC,gBAAU;AACV,YAAM,QAAQ,OAAO,MAAM,OAAO;AAClC,eAAS,MAAM,IAAI,KAAK;AAExB,YAAM,UAA4B,CAAC;AACnC,iBAAW,QAAQ,OAAO;AACxB,cAAM,SAAS,UAAU,IAAI;AAC7B,YAAI,QAAQ;AACV,kBAAQ,KAAK,MAAM;AAAA,QACrB;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAAA,IAEA,QAA0B;AACxB,UAAI,OAAO,WAAW,GAAG;AACvB,eAAO,CAAC;AAAA,MACV;AAEA,YAAM,SAAS,UAAU,MAAM;AAC/B,eAAS;AACT,aAAO,SAAS,CAAC,MAAM,IAAI,CAAC;AAAA,IAC9B;AAAA,IAEA,QAAc;AACZ,eAAS;AACT,mBAAa;AAAA,IACf;AAAA,EACF;AACF;","names":[]}
package/package.json ADDED
@@ -0,0 +1,35 @@
1
+ {
2
+ "name": "@a2ui-vue3-elementplus/message-parser",
3
+ "version": "0.1.0",
4
+ "description": "JSON and JSONL message parsing utilities for A2UI.",
5
+ "type": "module",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "git+https://github.com/EricLee823/a2ui-vue3-elementplus.git",
9
+ "directory": "packages/message-parser"
10
+ },
11
+ "main": "./dist/index.cjs",
12
+ "module": "./dist/index.js",
13
+ "types": "./dist/index.d.ts",
14
+ "exports": {
15
+ ".": {
16
+ "types": "./dist/index.d.ts",
17
+ "import": "./dist/index.js",
18
+ "require": "./dist/index.cjs"
19
+ }
20
+ },
21
+ "files": [
22
+ "dist"
23
+ ],
24
+ "publishConfig": {
25
+ "access": "public",
26
+ "registry": "https://registry.npmjs.org/"
27
+ },
28
+ "sideEffects": false,
29
+ "scripts": {
30
+ "build": "tsup",
31
+ "test": "vitest run",
32
+ "typecheck": "tsc --noEmit",
33
+ "lint": "tsc --noEmit"
34
+ }
35
+ }