typia 7.0.0-dev.20241002-2 → 7.0.0-dev.20241003
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/lib/factories/JsonMetadataFactory.js +4 -1
- package/lib/factories/JsonMetadataFactory.js.map +1 -1
- package/lib/factories/ProtobufFactory.js +4 -1
- package/lib/factories/ProtobufFactory.js.map +1 -1
- package/lib/programmers/AssertProgrammer.js +0 -24
- package/lib/programmers/AssertProgrammer.js.map +1 -1
- package/lib/programmers/CheckerProgrammer.js +9 -6
- package/lib/programmers/CheckerProgrammer.js.map +1 -1
- package/lib/programmers/RandomProgrammer.js +4 -1
- package/lib/programmers/RandomProgrammer.js.map +1 -1
- package/lib/programmers/functional/FunctionalAssertFunctionProgrammer.js +4 -1
- package/lib/programmers/functional/FunctionalAssertFunctionProgrammer.js.map +1 -1
- package/lib/programmers/functional/FunctionalAssertParametersProgrammer.js +0 -12
- package/lib/programmers/functional/FunctionalAssertParametersProgrammer.js.map +1 -1
- package/lib/programmers/functional/FunctionalIsReturnProgrammer.js +4 -1
- package/lib/programmers/functional/FunctionalIsReturnProgrammer.js.map +1 -1
- package/lib/programmers/functional/FunctionalValidateParametersProgrammer.js +4 -1
- package/lib/programmers/functional/FunctionalValidateParametersProgrammer.js.map +1 -1
- package/lib/programmers/functional/FunctionalValidateReturnProgrammer.js +4 -1
- package/lib/programmers/functional/FunctionalValidateReturnProgrammer.js.map +1 -1
- package/lib/programmers/http/HttpFormDataProgrammer.js +4 -1
- package/lib/programmers/http/HttpFormDataProgrammer.js.map +1 -1
- package/lib/programmers/http/HttpHeadersProgrammer.js +4 -1
- package/lib/programmers/http/HttpHeadersProgrammer.js.map +1 -1
- package/lib/programmers/http/HttpParameterProgrammer.js +4 -1
- package/lib/programmers/http/HttpParameterProgrammer.js.map +1 -1
- package/lib/programmers/http/HttpQueryProgrammer.js +4 -1
- package/lib/programmers/http/HttpQueryProgrammer.js.map +1 -1
- package/lib/programmers/misc/MiscCloneProgrammer.js +4 -1
- package/lib/programmers/misc/MiscCloneProgrammer.js.map +1 -1
- package/lib/programmers/misc/MiscLiteralsProgrammer.js +4 -1
- package/lib/programmers/misc/MiscLiteralsProgrammer.js.map +1 -1
- package/lib/programmers/misc/MiscPruneProgrammer.js +4 -1
- package/lib/programmers/misc/MiscPruneProgrammer.js.map +1 -1
- package/lib/programmers/notations/NotationGeneralProgrammer.js +24 -17
- package/lib/programmers/notations/NotationGeneralProgrammer.js.map +1 -1
- package/lib/transformers/CallExpressionTransformer.d.ts +4 -1
- package/lib/transformers/CallExpressionTransformer.js +30 -32
- package/lib/transformers/CallExpressionTransformer.js.map +1 -1
- package/lib/transformers/FileTransformer.js +36 -30
- package/lib/transformers/FileTransformer.js.map +1 -1
- package/lib/transformers/NodeTransformer.d.ts +4 -1
- package/lib/transformers/NodeTransformer.js +7 -6
- package/lib/transformers/NodeTransformer.js.map +1 -1
- package/lib/transformers/TransformerError.d.ts +4 -1
- package/lib/transformers/TransformerError.js +21 -23
- package/lib/transformers/TransformerError.js.map +1 -1
- package/lib/transformers/features/json/JsonApplicationTransformer.js +4 -1
- package/lib/transformers/features/json/JsonApplicationTransformer.js.map +1 -1
- package/lib/transformers/features/llm/LlmApplicationTransformer.js +4 -1
- package/lib/transformers/features/llm/LlmApplicationTransformer.js.map +1 -1
- package/lib/transformers/features/llm/LlmSchemaTransformer.js +4 -1
- package/lib/transformers/features/llm/LlmSchemaTransformer.js.map +1 -1
- package/lib/transformers/features/reflect/ReflectMetadataTransformer.js +4 -1
- package/lib/transformers/features/reflect/ReflectMetadataTransformer.js.map +1 -1
- package/lib/transformers/features/reflect/ReflectNameTransformer.js +4 -1
- package/lib/transformers/features/reflect/ReflectNameTransformer.js.map +1 -1
- package/lib/utils/StringUtil/StringUtil.d.ts +5 -1
- package/lib/utils/StringUtil/StringUtil.js +8 -4
- package/lib/utils/StringUtil/StringUtil.js.map +1 -1
- package/package.json +1 -1
- package/src/factories/JsonMetadataFactory.ts +4 -1
- package/src/factories/ProtobufFactory.ts +4 -3
- package/src/programmers/AssertProgrammer.ts +0 -24
- package/src/programmers/CheckerProgrammer.ts +9 -8
- package/src/programmers/RandomProgrammer.ts +4 -3
- package/src/programmers/functional/FunctionalAssertFunctionProgrammer.ts +4 -3
- package/src/programmers/functional/FunctionalAssertParametersProgrammer.ts +0 -12
- package/src/programmers/functional/FunctionalIsReturnProgrammer.ts +4 -3
- package/src/programmers/functional/FunctionalValidateParametersProgrammer.ts +4 -3
- package/src/programmers/functional/FunctionalValidateReturnProgrammer.ts +4 -3
- package/src/programmers/http/HttpFormDataProgrammer.ts +4 -3
- package/src/programmers/http/HttpHeadersProgrammer.ts +4 -3
- package/src/programmers/http/HttpParameterProgrammer.ts +4 -1
- package/src/programmers/http/HttpQueryProgrammer.ts +4 -3
- package/src/programmers/misc/MiscCloneProgrammer.ts +4 -3
- package/src/programmers/misc/MiscLiteralsProgrammer.ts +4 -1
- package/src/programmers/misc/MiscPruneProgrammer.ts +4 -3
- package/src/programmers/notations/NotationGeneralProgrammer.ts +28 -20
- package/src/transformers/CallExpressionTransformer.ts +36 -36
- package/src/transformers/FileTransformer.ts +42 -32
- package/src/transformers/NodeTransformer.ts +10 -6
- package/src/transformers/TransformerError.ts +26 -27
- package/src/transformers/features/json/JsonApplicationTransformer.ts +4 -1
- package/src/transformers/features/llm/LlmApplicationTransformer.ts +4 -1
- package/src/transformers/features/llm/LlmSchemaTransformer.ts +4 -1
- package/src/transformers/features/reflect/ReflectMetadataTransformer.ts +4 -1
- package/src/transformers/features/reflect/ReflectNameTransformer.ts +4 -1
- package/src/utils/StringUtil/StringUtil.ts +11 -4
- package/lib/functional/$varint.d.ts +0 -6
- package/lib/functional/$varint.js +0 -99
- package/lib/functional/$varint.js.map +0 -1
- package/lib/functional/$zigzag.d.ts +0 -4
- package/lib/functional/$zigzag.js +0 -35
- package/lib/functional/$zigzag.js.map +0 -1
- package/src/functional/$varint.ts +0 -130
- package/src/functional/$zigzag.ts +0 -39
|
@@ -13,48 +13,58 @@ export namespace FileTransformer {
|
|
|
13
13
|
(file: ts.SourceFile): ts.SourceFile => {
|
|
14
14
|
if (file.isDeclarationFile) return file;
|
|
15
15
|
|
|
16
|
-
const
|
|
16
|
+
const context: ITypiaContext = {
|
|
17
17
|
...environments,
|
|
18
18
|
transformer,
|
|
19
19
|
};
|
|
20
|
-
checkJsDocParsingMode.get(
|
|
20
|
+
checkJsDocParsingMode.get(context, file);
|
|
21
21
|
|
|
22
22
|
return ts.visitEachChild(
|
|
23
23
|
file,
|
|
24
|
-
(node) =>
|
|
24
|
+
(node) =>
|
|
25
|
+
iterate_node({
|
|
26
|
+
context,
|
|
27
|
+
node,
|
|
28
|
+
}),
|
|
25
29
|
transformer,
|
|
26
30
|
);
|
|
27
31
|
};
|
|
28
32
|
|
|
29
|
-
const iterate_node =
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
33
|
+
const iterate_node = (props: {
|
|
34
|
+
context: ITypiaContext;
|
|
35
|
+
node: ts.Node;
|
|
36
|
+
}): ts.Node =>
|
|
37
|
+
ts.visitEachChild(
|
|
38
|
+
try_transform_node(props) ?? props.node,
|
|
39
|
+
(node) =>
|
|
40
|
+
iterate_node({
|
|
41
|
+
context: props.context,
|
|
42
|
+
node,
|
|
43
|
+
}),
|
|
44
|
+
props.context.transformer,
|
|
45
|
+
);
|
|
37
46
|
|
|
38
|
-
const try_transform_node =
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
47
|
+
const try_transform_node = (props: {
|
|
48
|
+
context: ITypiaContext;
|
|
49
|
+
node: ts.Node;
|
|
50
|
+
}): ts.Node | null => {
|
|
51
|
+
try {
|
|
52
|
+
return NodeTransformer.transform(props);
|
|
53
|
+
} catch (exp) {
|
|
54
|
+
// ONLY ACCEPT TRANSFORMER-ERROR
|
|
55
|
+
if (!isTransformerError(exp)) throw exp;
|
|
46
56
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
57
|
+
// REPORT DIAGNOSTIC
|
|
58
|
+
const diagnostic = ts.createDiagnosticForNode(props.node, {
|
|
59
|
+
key: exp.code,
|
|
60
|
+
category: ts.DiagnosticCategory.Error,
|
|
61
|
+
message: exp.message,
|
|
62
|
+
code: `(${exp.code})` as any,
|
|
63
|
+
});
|
|
64
|
+
props.context.extras.addDiagnostic(diagnostic);
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
};
|
|
58
68
|
}
|
|
59
69
|
|
|
60
70
|
const isTransformerError = (error: any): error is TransformerError =>
|
|
@@ -65,12 +75,12 @@ const isTransformerError = (error: any): error is TransformerError =>
|
|
|
65
75
|
typeof error.message === "string";
|
|
66
76
|
|
|
67
77
|
const checkJsDocParsingMode = new Singleton(
|
|
68
|
-
(
|
|
78
|
+
(context: ITypiaContext, file: ts.SourceFile) => {
|
|
69
79
|
if (
|
|
70
80
|
typeof file.jsDocParsingMode === "number" &&
|
|
71
81
|
file.jsDocParsingMode !== 0
|
|
72
82
|
) {
|
|
73
|
-
|
|
83
|
+
context.extras.addDiagnostic(
|
|
74
84
|
ts.createDiagnosticForNode(file, {
|
|
75
85
|
code: `(typia setup)` as any,
|
|
76
86
|
key: "jsDocParsingMode",
|
|
@@ -4,10 +4,14 @@ import { CallExpressionTransformer } from "./CallExpressionTransformer";
|
|
|
4
4
|
import { ITypiaContext } from "./ITypiaContext";
|
|
5
5
|
|
|
6
6
|
export namespace NodeTransformer {
|
|
7
|
-
export const transform =
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
7
|
+
export const transform = (props: {
|
|
8
|
+
context: ITypiaContext;
|
|
9
|
+
node: ts.Node;
|
|
10
|
+
}): ts.Node | null =>
|
|
11
|
+
ts.isCallExpression(props.node) && props.node.parent
|
|
12
|
+
? CallExpressionTransformer.transform({
|
|
13
|
+
context: props.context,
|
|
14
|
+
expression: props.node,
|
|
15
|
+
})
|
|
16
|
+
: props.node;
|
|
13
17
|
}
|
|
@@ -23,33 +23,32 @@ export namespace TransformerError {
|
|
|
23
23
|
message: string;
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
export const from =
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
};
|
|
26
|
+
export const from = (props: {
|
|
27
|
+
code: string;
|
|
28
|
+
errors: MetadataFactory.IError[];
|
|
29
|
+
}): TransformerError => {
|
|
30
|
+
const body: string = props.errors
|
|
31
|
+
.map((e) => {
|
|
32
|
+
const subject: string =
|
|
33
|
+
e.explore.object === null
|
|
34
|
+
? ""
|
|
35
|
+
: join(e.explore.object)(e.explore.property);
|
|
36
|
+
const middle: string = e.explore.parameter
|
|
37
|
+
? `(parameter: ${JSON.stringify(e.explore.parameter)})`
|
|
38
|
+
: e.explore.output
|
|
39
|
+
? "(return type)"
|
|
40
|
+
: "";
|
|
41
|
+
const type: string = `${subject.length ? `${subject}: ` : ""}${e.name}`;
|
|
42
|
+
return `- ${type}${middle}\n${e.messages
|
|
43
|
+
.map((msg) => ` - ${msg}`)
|
|
44
|
+
.join("\n")}`;
|
|
45
|
+
})
|
|
46
|
+
.join("\n\n");
|
|
47
|
+
return new TransformerError({
|
|
48
|
+
code: props.code,
|
|
49
|
+
message: `unsupported type detected\n\n${body}`,
|
|
50
|
+
});
|
|
51
|
+
};
|
|
53
52
|
|
|
54
53
|
const join = (object: MetadataObject) => (key: string | object | null) => {
|
|
55
54
|
if (key === null) return object.name;
|
|
@@ -83,7 +83,10 @@ export namespace JsonApplicationTransformer {
|
|
|
83
83
|
else metadatas.push(r.data);
|
|
84
84
|
}
|
|
85
85
|
if (errors.length)
|
|
86
|
-
throw TransformerError.from(
|
|
86
|
+
throw TransformerError.from({
|
|
87
|
+
code: "typia.json.application",
|
|
88
|
+
errors,
|
|
89
|
+
});
|
|
87
90
|
|
|
88
91
|
// APPLICATION
|
|
89
92
|
const app: IJsonApplication<any> =
|
|
@@ -50,7 +50,10 @@ export namespace LlmApplicationTransformer {
|
|
|
50
50
|
type,
|
|
51
51
|
});
|
|
52
52
|
if (result.success === false)
|
|
53
|
-
throw TransformerError.from(
|
|
53
|
+
throw TransformerError.from({
|
|
54
|
+
code: "typia.llm.application",
|
|
55
|
+
errors: result.errors,
|
|
56
|
+
});
|
|
54
57
|
|
|
55
58
|
// GENERATE LLM APPLICATION
|
|
56
59
|
const schema: ILlmApplication = LlmApplicationProgrammer.write(result.data);
|
|
@@ -47,7 +47,10 @@ export namespace LlmSchemaTransformer {
|
|
|
47
47
|
type,
|
|
48
48
|
});
|
|
49
49
|
if (result.success === false)
|
|
50
|
-
throw TransformerError.from(
|
|
50
|
+
throw TransformerError.from({
|
|
51
|
+
code: "typia.llm.schema",
|
|
52
|
+
errors: result.errors,
|
|
53
|
+
});
|
|
51
54
|
|
|
52
55
|
// GENERATE LLM SCHEMA
|
|
53
56
|
const schema: ILlmSchema = LlmSchemaProgrammer.write(result.data);
|
|
@@ -52,7 +52,10 @@ export namespace ReflectMetadataTransformer {
|
|
|
52
52
|
type,
|
|
53
53
|
});
|
|
54
54
|
if (result.success === false)
|
|
55
|
-
throw TransformerError.from(
|
|
55
|
+
throw TransformerError.from({
|
|
56
|
+
code: "typia.reflect.metadata",
|
|
57
|
+
errors: result.errors,
|
|
58
|
+
});
|
|
56
59
|
return result.data;
|
|
57
60
|
});
|
|
58
61
|
|
|
@@ -74,6 +74,9 @@ const getMetadata = (props: {
|
|
|
74
74
|
type,
|
|
75
75
|
});
|
|
76
76
|
if (result.success === false)
|
|
77
|
-
throw TransformerError.from(
|
|
77
|
+
throw TransformerError.from({
|
|
78
|
+
code: "typia.reflect.name",
|
|
79
|
+
errors: result.errors,
|
|
80
|
+
});
|
|
78
81
|
return result.data;
|
|
79
82
|
};
|
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
export const capitalize = (str: string) =>
|
|
2
2
|
str.length ? str[0]!.toUpperCase() + str.slice(1).toLowerCase() : str;
|
|
3
3
|
|
|
4
|
-
export const escapeDuplicate =
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
export const escapeDuplicate = (props: {
|
|
5
|
+
keep: string[];
|
|
6
|
+
input: string;
|
|
7
|
+
escape?: (str: string) => string;
|
|
8
|
+
}): string =>
|
|
9
|
+
props.keep.includes(props.input)
|
|
10
|
+
? escapeDuplicate({
|
|
11
|
+
keep: props.keep,
|
|
12
|
+
input: (props.escape ?? ((str) => `_${str}`))(props.input),
|
|
13
|
+
})
|
|
14
|
+
: props.input;
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export declare function $varint_decode_i32(buf: Uint8Array, offset: number): [value: number, offset: number];
|
|
2
|
-
export declare function $varint_decode_u32(buf: Uint8Array, offset: number): [value: number, offset: number];
|
|
3
|
-
export declare function $varint_decode_i64(buf: Uint8Array, offset: number): [value: bigint, offset: number];
|
|
4
|
-
export declare function $varint_decode_u64(buf: Uint8Array, offset: number): [value: bigint, offset: number];
|
|
5
|
-
export declare function $varint_encode(dst: Uint8Array, offset: number, value: number): number;
|
|
6
|
-
export declare function $varint_encode(dst: Uint8Array, offset: number, value: bigint): number;
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
3
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
4
|
-
if (!m) return o;
|
|
5
|
-
var i = m.call(o), r, ar = [], e;
|
|
6
|
-
try {
|
|
7
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
8
|
-
}
|
|
9
|
-
catch (error) { e = { error: error }; }
|
|
10
|
-
finally {
|
|
11
|
-
try {
|
|
12
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
13
|
-
}
|
|
14
|
-
finally { if (e) throw e.error; }
|
|
15
|
-
}
|
|
16
|
-
return ar;
|
|
17
|
-
};
|
|
18
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
-
exports.$varint_decode_i32 = $varint_decode_i32;
|
|
20
|
-
exports.$varint_decode_u32 = $varint_decode_u32;
|
|
21
|
-
exports.$varint_decode_i64 = $varint_decode_i64;
|
|
22
|
-
exports.$varint_decode_u64 = $varint_decode_u64;
|
|
23
|
-
exports.$varint_encode = $varint_encode;
|
|
24
|
-
function EncodeVarNumber(dst, offset, value) {
|
|
25
|
-
value = (value | 0) >>> 0; // 32-bit integer
|
|
26
|
-
while (value > 127) {
|
|
27
|
-
dst[offset++] = (value & 127) | 128;
|
|
28
|
-
value >>>= 7;
|
|
29
|
-
}
|
|
30
|
-
dst[offset++] = value;
|
|
31
|
-
return offset;
|
|
32
|
-
}
|
|
33
|
-
function DecodeVarNumber(buf, offset) {
|
|
34
|
-
var value = 0;
|
|
35
|
-
var shift = 0;
|
|
36
|
-
while (true) {
|
|
37
|
-
var byte = buf[offset++];
|
|
38
|
-
value |= (byte & 127) << shift;
|
|
39
|
-
if (byte < 128) {
|
|
40
|
-
break;
|
|
41
|
-
}
|
|
42
|
-
shift += 7;
|
|
43
|
-
}
|
|
44
|
-
return [value | 0, offset];
|
|
45
|
-
}
|
|
46
|
-
function DecodeVarBigInt(buf, offset) {
|
|
47
|
-
var value = BigInt(0);
|
|
48
|
-
var shift = BigInt(0);
|
|
49
|
-
while (true) {
|
|
50
|
-
var byte = buf[offset++];
|
|
51
|
-
value |= BigInt(byte & 127) << shift;
|
|
52
|
-
if (byte < 128) {
|
|
53
|
-
break;
|
|
54
|
-
}
|
|
55
|
-
shift += BigInt(7);
|
|
56
|
-
}
|
|
57
|
-
return [BigInt.asIntN(64, value), offset];
|
|
58
|
-
}
|
|
59
|
-
function $varint_decode_i32(buf, offset) {
|
|
60
|
-
var _a = __read(DecodeVarNumber(buf, offset), 2), v = _a[0], o = _a[1];
|
|
61
|
-
return [v, o];
|
|
62
|
-
}
|
|
63
|
-
function $varint_decode_u32(buf, offset) {
|
|
64
|
-
var _a = __read(DecodeVarNumber(buf, offset), 2), v = _a[0], o = _a[1];
|
|
65
|
-
return [v >>> 0, o];
|
|
66
|
-
}
|
|
67
|
-
function $varint_decode_i64(buf, offset) {
|
|
68
|
-
var _a = __read(DecodeVarBigInt(buf, offset), 2), v = _a[0], o = _a[1];
|
|
69
|
-
return [v, o];
|
|
70
|
-
}
|
|
71
|
-
function $varint_decode_u64(buf, offset) {
|
|
72
|
-
var _a = __read(DecodeVarBigInt(buf, offset), 2), v = _a[0], o = _a[1];
|
|
73
|
-
return [BigInt.asUintN(64, v), o];
|
|
74
|
-
}
|
|
75
|
-
function EncodeVarBigInt(dst, offset, value) {
|
|
76
|
-
value = BigInt.asUintN(64, value);
|
|
77
|
-
while (value > BigInt(127)) {
|
|
78
|
-
dst[offset++] = Number(value & BigInt(127)) | 128;
|
|
79
|
-
value >>= BigInt(7);
|
|
80
|
-
}
|
|
81
|
-
dst[offset++] = Number(value);
|
|
82
|
-
return offset;
|
|
83
|
-
}
|
|
84
|
-
function $varint_encode(dst, offset, value) {
|
|
85
|
-
if (typeof value === "bigint") {
|
|
86
|
-
offset = EncodeVarBigInt(dst, offset, value);
|
|
87
|
-
}
|
|
88
|
-
else {
|
|
89
|
-
if (value < 0) {
|
|
90
|
-
// NOTE: Protocol Buffers signed varint encoding uses two's complement of 64-bit unsigned integers.
|
|
91
|
-
offset = EncodeVarBigInt(dst, offset, BigInt(value));
|
|
92
|
-
}
|
|
93
|
-
else {
|
|
94
|
-
offset = EncodeVarNumber(dst, offset, value);
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
return offset;
|
|
98
|
-
}
|
|
99
|
-
//# sourceMappingURL=$varint.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"$varint.js","sourceRoot":"","sources":["../../src/functional/$varint.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAsDA,gDAMC;AAED,gDAMC;AAED,gDAMC;AAED,gDAMC;AA6BD,wCAgBC;AAjID,SAAS,eAAe,CACtB,GAAe,EACf,MAAc,EACd,KAAa;IAEb,KAAK,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,iBAAiB;IAE5C,OAAO,KAAK,GAAG,GAAG,EAAE,CAAC;QACnB,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,KAAK,GAAG,GAAU,CAAC,GAAG,GAAU,CAAC;QAClD,KAAK,MAAM,CAAC,CAAC;IACf,CAAC;IACD,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC;IAEtB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,eAAe,CACtB,GAAe,EACf,MAAc;IAEd,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,OAAO,IAAI,EAAE,CAAC;QACZ,IAAM,IAAI,GAAG,GAAG,CAAC,MAAM,EAAE,CAAE,CAAC;QAC5B,KAAK,IAAI,CAAC,IAAI,GAAG,GAAU,CAAC,IAAI,KAAK,CAAC;QACtC,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC;YACf,MAAM;QACR,CAAC;QACD,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IAED,OAAO,CAAC,KAAK,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,eAAe,CACtB,GAAe,EACf,MAAc;IAEd,IAAI,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACtB,IAAI,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAEtB,OAAO,IAAI,EAAE,CAAC;QACZ,IAAM,IAAI,GAAG,GAAG,CAAC,MAAM,EAAE,CAAE,CAAC;QAC5B,KAAK,IAAI,MAAM,CAAC,IAAI,GAAG,GAAU,CAAC,IAAI,KAAK,CAAC;QAC5C,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC;YACf,MAAM;QACR,CAAC;QACD,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;AAC5C,CAAC;AAED,SAAgB,kBAAkB,CAChC,GAAe,EACf,MAAc;IAER,IAAA,KAAA,OAAS,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,IAAA,EAApC,CAAC,QAAA,EAAE,CAAC,QAAgC,CAAC;IAC5C,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAChB,CAAC;AAED,SAAgB,kBAAkB,CAChC,GAAe,EACf,MAAc;IAER,IAAA,KAAA,OAAS,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,IAAA,EAApC,CAAC,QAAA,EAAE,CAAC,QAAgC,CAAC;IAC5C,OAAO,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AACtB,CAAC;AAED,SAAgB,kBAAkB,CAChC,GAAe,EACf,MAAc;IAER,IAAA,KAAA,OAAS,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,IAAA,EAApC,CAAC,QAAA,EAAE,CAAC,QAAgC,CAAC;IAC5C,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAChB,CAAC;AAED,SAAgB,kBAAkB,CAChC,GAAe,EACf,MAAc;IAER,IAAA,KAAA,OAAS,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,IAAA,EAApC,CAAC,QAAA,EAAE,CAAC,QAAgC,CAAC;IAC5C,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,eAAe,CACtB,GAAe,EACf,MAAc,EACd,KAAa;IAEb,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAElC,OAAO,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,GAAU,CAAC,CAAC,GAAG,GAAU,CAAC;QAChE,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC;IACtB,CAAC;IACD,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAE9B,OAAO,MAAM,CAAC;AAChB,CAAC;AAaD,SAAgB,cAAc,CAC5B,GAAe,EACf,MAAc,EACd,KAAsB;IAEtB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,GAAG,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAC/C,CAAC;SAAM,CAAC;QACN,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,mGAAmG;YACnG,MAAM,GAAG,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACvD,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.$zigzag_encode = $zigzag_encode;
|
|
4
|
-
exports.$zigzag_decode = $zigzag_decode;
|
|
5
|
-
function $zigzag_encode(value) {
|
|
6
|
-
// TODO: optimize (branchless solution exists)
|
|
7
|
-
if (typeof value === "bigint") {
|
|
8
|
-
if (value < BigInt(0)) {
|
|
9
|
-
value = -value;
|
|
10
|
-
return value * BigInt(2) - BigInt(1);
|
|
11
|
-
}
|
|
12
|
-
return value * BigInt(2);
|
|
13
|
-
}
|
|
14
|
-
if (value < 0) {
|
|
15
|
-
value = -value;
|
|
16
|
-
return value * 2 - 1;
|
|
17
|
-
}
|
|
18
|
-
return value * 2;
|
|
19
|
-
}
|
|
20
|
-
function $zigzag_decode(value) {
|
|
21
|
-
// TODO: optimize (branchless solution exists)
|
|
22
|
-
if (typeof value === "bigint") {
|
|
23
|
-
value = BigInt.asUintN(64, value);
|
|
24
|
-
if (value & BigInt(1)) {
|
|
25
|
-
return -(value + BigInt(1)) / BigInt(2);
|
|
26
|
-
}
|
|
27
|
-
return value / BigInt(2);
|
|
28
|
-
}
|
|
29
|
-
value = value >>> 0;
|
|
30
|
-
if (value & 1) {
|
|
31
|
-
return -(value + 1) / 2;
|
|
32
|
-
}
|
|
33
|
-
return value / 2;
|
|
34
|
-
}
|
|
35
|
-
//# sourceMappingURL=$zigzag.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"$zigzag.js","sourceRoot":"","sources":["../../src/functional/$zigzag.ts"],"names":[],"mappings":";;AAEA,wCAgBC;AAID,wCAgBC;AApCD,SAAgB,cAAc,CAAC,KAAsB;IACnD,8CAA8C;IAE9C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YACtB,KAAK,GAAG,CAAC,KAAK,CAAC;YACf,OAAO,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACd,KAAK,GAAG,CAAC,KAAK,CAAC;QACf,OAAO,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,KAAK,GAAG,CAAC,CAAC;AACnB,CAAC;AAID,SAAgB,cAAc,CAAC,KAAsB;IACnD,8CAA8C;IAE9C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAClC,IAAI,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED,KAAK,GAAG,KAAK,KAAK,CAAC,CAAC;IACpB,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACd,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,KAAK,GAAG,CAAC,CAAC;AACnB,CAAC"}
|
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
function EncodeVarNumber(
|
|
2
|
-
dst: Uint8Array,
|
|
3
|
-
offset: number,
|
|
4
|
-
value: number,
|
|
5
|
-
): number {
|
|
6
|
-
value = (value | 0) >>> 0; // 32-bit integer
|
|
7
|
-
|
|
8
|
-
while (value > 127) {
|
|
9
|
-
dst[offset++] = (value & 0b01111111) | 0b10000000;
|
|
10
|
-
value >>>= 7;
|
|
11
|
-
}
|
|
12
|
-
dst[offset++] = value;
|
|
13
|
-
|
|
14
|
-
return offset;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
function DecodeVarNumber(
|
|
18
|
-
buf: Uint8Array,
|
|
19
|
-
offset: number,
|
|
20
|
-
): [value: number, offset: number] {
|
|
21
|
-
let value = 0;
|
|
22
|
-
let shift = 0;
|
|
23
|
-
|
|
24
|
-
while (true) {
|
|
25
|
-
const byte = buf[offset++]!;
|
|
26
|
-
value |= (byte & 0b01111111) << shift;
|
|
27
|
-
if (byte < 128) {
|
|
28
|
-
break;
|
|
29
|
-
}
|
|
30
|
-
shift += 7;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
return [value | 0, offset];
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
function DecodeVarBigInt(
|
|
37
|
-
buf: Uint8Array,
|
|
38
|
-
offset: number,
|
|
39
|
-
): [value: bigint, offset: number] {
|
|
40
|
-
let value = BigInt(0);
|
|
41
|
-
let shift = BigInt(0);
|
|
42
|
-
|
|
43
|
-
while (true) {
|
|
44
|
-
const byte = buf[offset++]!;
|
|
45
|
-
value |= BigInt(byte & 0b01111111) << shift;
|
|
46
|
-
if (byte < 128) {
|
|
47
|
-
break;
|
|
48
|
-
}
|
|
49
|
-
shift += BigInt(7);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
return [BigInt.asIntN(64, value), offset];
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
export function $varint_decode_i32(
|
|
56
|
-
buf: Uint8Array,
|
|
57
|
-
offset: number,
|
|
58
|
-
): [value: number, offset: number] {
|
|
59
|
-
const [v, o] = DecodeVarNumber(buf, offset);
|
|
60
|
-
return [v, o];
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
export function $varint_decode_u32(
|
|
64
|
-
buf: Uint8Array,
|
|
65
|
-
offset: number,
|
|
66
|
-
): [value: number, offset: number] {
|
|
67
|
-
const [v, o] = DecodeVarNumber(buf, offset);
|
|
68
|
-
return [v >>> 0, o];
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
export function $varint_decode_i64(
|
|
72
|
-
buf: Uint8Array,
|
|
73
|
-
offset: number,
|
|
74
|
-
): [value: bigint, offset: number] {
|
|
75
|
-
const [v, o] = DecodeVarBigInt(buf, offset);
|
|
76
|
-
return [v, o];
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
export function $varint_decode_u64(
|
|
80
|
-
buf: Uint8Array,
|
|
81
|
-
offset: number,
|
|
82
|
-
): [value: bigint, offset: number] {
|
|
83
|
-
const [v, o] = DecodeVarBigInt(buf, offset);
|
|
84
|
-
return [BigInt.asUintN(64, v), o];
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
function EncodeVarBigInt(
|
|
88
|
-
dst: Uint8Array,
|
|
89
|
-
offset: number,
|
|
90
|
-
value: bigint,
|
|
91
|
-
): number {
|
|
92
|
-
value = BigInt.asUintN(64, value);
|
|
93
|
-
|
|
94
|
-
while (value > BigInt(127)) {
|
|
95
|
-
dst[offset++] = Number(value & BigInt(0b01111111)) | 0b10000000;
|
|
96
|
-
value >>= BigInt(7);
|
|
97
|
-
}
|
|
98
|
-
dst[offset++] = Number(value);
|
|
99
|
-
|
|
100
|
-
return offset;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
export function $varint_encode(
|
|
104
|
-
dst: Uint8Array,
|
|
105
|
-
offset: number,
|
|
106
|
-
value: number,
|
|
107
|
-
): number;
|
|
108
|
-
export function $varint_encode(
|
|
109
|
-
dst: Uint8Array,
|
|
110
|
-
offset: number,
|
|
111
|
-
value: bigint,
|
|
112
|
-
): number;
|
|
113
|
-
|
|
114
|
-
export function $varint_encode(
|
|
115
|
-
dst: Uint8Array,
|
|
116
|
-
offset: number,
|
|
117
|
-
value: number | bigint,
|
|
118
|
-
): number {
|
|
119
|
-
if (typeof value === "bigint") {
|
|
120
|
-
offset = EncodeVarBigInt(dst, offset, value);
|
|
121
|
-
} else {
|
|
122
|
-
if (value < 0) {
|
|
123
|
-
// NOTE: Protocol Buffers signed varint encoding uses two's complement of 64-bit unsigned integers.
|
|
124
|
-
offset = EncodeVarBigInt(dst, offset, BigInt(value));
|
|
125
|
-
} else {
|
|
126
|
-
offset = EncodeVarNumber(dst, offset, value);
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
return offset;
|
|
130
|
-
}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
export function $zigzag_encode(value: number): number;
|
|
2
|
-
export function $zigzag_encode(value: bigint): bigint;
|
|
3
|
-
export function $zigzag_encode(value: number | bigint): any {
|
|
4
|
-
// TODO: optimize (branchless solution exists)
|
|
5
|
-
|
|
6
|
-
if (typeof value === "bigint") {
|
|
7
|
-
if (value < BigInt(0)) {
|
|
8
|
-
value = -value;
|
|
9
|
-
return value * BigInt(2) - BigInt(1);
|
|
10
|
-
}
|
|
11
|
-
return value * BigInt(2);
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
if (value < 0) {
|
|
15
|
-
value = -value;
|
|
16
|
-
return value * 2 - 1;
|
|
17
|
-
}
|
|
18
|
-
return value * 2;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export function $zigzag_decode(value: number): number;
|
|
22
|
-
export function $zigzag_decode(value: bigint): bigint;
|
|
23
|
-
export function $zigzag_decode(value: number | bigint): any {
|
|
24
|
-
// TODO: optimize (branchless solution exists)
|
|
25
|
-
|
|
26
|
-
if (typeof value === "bigint") {
|
|
27
|
-
value = BigInt.asUintN(64, value);
|
|
28
|
-
if (value & BigInt(1)) {
|
|
29
|
-
return -(value + BigInt(1)) / BigInt(2);
|
|
30
|
-
}
|
|
31
|
-
return value / BigInt(2);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
value = value >>> 0;
|
|
35
|
-
if (value & 1) {
|
|
36
|
-
return -(value + 1) / 2;
|
|
37
|
-
}
|
|
38
|
-
return value / 2;
|
|
39
|
-
}
|