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.
Files changed (97) hide show
  1. package/lib/factories/JsonMetadataFactory.js +4 -1
  2. package/lib/factories/JsonMetadataFactory.js.map +1 -1
  3. package/lib/factories/ProtobufFactory.js +4 -1
  4. package/lib/factories/ProtobufFactory.js.map +1 -1
  5. package/lib/programmers/AssertProgrammer.js +0 -24
  6. package/lib/programmers/AssertProgrammer.js.map +1 -1
  7. package/lib/programmers/CheckerProgrammer.js +9 -6
  8. package/lib/programmers/CheckerProgrammer.js.map +1 -1
  9. package/lib/programmers/RandomProgrammer.js +4 -1
  10. package/lib/programmers/RandomProgrammer.js.map +1 -1
  11. package/lib/programmers/functional/FunctionalAssertFunctionProgrammer.js +4 -1
  12. package/lib/programmers/functional/FunctionalAssertFunctionProgrammer.js.map +1 -1
  13. package/lib/programmers/functional/FunctionalAssertParametersProgrammer.js +0 -12
  14. package/lib/programmers/functional/FunctionalAssertParametersProgrammer.js.map +1 -1
  15. package/lib/programmers/functional/FunctionalIsReturnProgrammer.js +4 -1
  16. package/lib/programmers/functional/FunctionalIsReturnProgrammer.js.map +1 -1
  17. package/lib/programmers/functional/FunctionalValidateParametersProgrammer.js +4 -1
  18. package/lib/programmers/functional/FunctionalValidateParametersProgrammer.js.map +1 -1
  19. package/lib/programmers/functional/FunctionalValidateReturnProgrammer.js +4 -1
  20. package/lib/programmers/functional/FunctionalValidateReturnProgrammer.js.map +1 -1
  21. package/lib/programmers/http/HttpFormDataProgrammer.js +4 -1
  22. package/lib/programmers/http/HttpFormDataProgrammer.js.map +1 -1
  23. package/lib/programmers/http/HttpHeadersProgrammer.js +4 -1
  24. package/lib/programmers/http/HttpHeadersProgrammer.js.map +1 -1
  25. package/lib/programmers/http/HttpParameterProgrammer.js +4 -1
  26. package/lib/programmers/http/HttpParameterProgrammer.js.map +1 -1
  27. package/lib/programmers/http/HttpQueryProgrammer.js +4 -1
  28. package/lib/programmers/http/HttpQueryProgrammer.js.map +1 -1
  29. package/lib/programmers/misc/MiscCloneProgrammer.js +4 -1
  30. package/lib/programmers/misc/MiscCloneProgrammer.js.map +1 -1
  31. package/lib/programmers/misc/MiscLiteralsProgrammer.js +4 -1
  32. package/lib/programmers/misc/MiscLiteralsProgrammer.js.map +1 -1
  33. package/lib/programmers/misc/MiscPruneProgrammer.js +4 -1
  34. package/lib/programmers/misc/MiscPruneProgrammer.js.map +1 -1
  35. package/lib/programmers/notations/NotationGeneralProgrammer.js +24 -17
  36. package/lib/programmers/notations/NotationGeneralProgrammer.js.map +1 -1
  37. package/lib/transformers/CallExpressionTransformer.d.ts +4 -1
  38. package/lib/transformers/CallExpressionTransformer.js +30 -32
  39. package/lib/transformers/CallExpressionTransformer.js.map +1 -1
  40. package/lib/transformers/FileTransformer.js +36 -30
  41. package/lib/transformers/FileTransformer.js.map +1 -1
  42. package/lib/transformers/NodeTransformer.d.ts +4 -1
  43. package/lib/transformers/NodeTransformer.js +7 -6
  44. package/lib/transformers/NodeTransformer.js.map +1 -1
  45. package/lib/transformers/TransformerError.d.ts +4 -1
  46. package/lib/transformers/TransformerError.js +21 -23
  47. package/lib/transformers/TransformerError.js.map +1 -1
  48. package/lib/transformers/features/json/JsonApplicationTransformer.js +4 -1
  49. package/lib/transformers/features/json/JsonApplicationTransformer.js.map +1 -1
  50. package/lib/transformers/features/llm/LlmApplicationTransformer.js +4 -1
  51. package/lib/transformers/features/llm/LlmApplicationTransformer.js.map +1 -1
  52. package/lib/transformers/features/llm/LlmSchemaTransformer.js +4 -1
  53. package/lib/transformers/features/llm/LlmSchemaTransformer.js.map +1 -1
  54. package/lib/transformers/features/reflect/ReflectMetadataTransformer.js +4 -1
  55. package/lib/transformers/features/reflect/ReflectMetadataTransformer.js.map +1 -1
  56. package/lib/transformers/features/reflect/ReflectNameTransformer.js +4 -1
  57. package/lib/transformers/features/reflect/ReflectNameTransformer.js.map +1 -1
  58. package/lib/utils/StringUtil/StringUtil.d.ts +5 -1
  59. package/lib/utils/StringUtil/StringUtil.js +8 -4
  60. package/lib/utils/StringUtil/StringUtil.js.map +1 -1
  61. package/package.json +1 -1
  62. package/src/factories/JsonMetadataFactory.ts +4 -1
  63. package/src/factories/ProtobufFactory.ts +4 -3
  64. package/src/programmers/AssertProgrammer.ts +0 -24
  65. package/src/programmers/CheckerProgrammer.ts +9 -8
  66. package/src/programmers/RandomProgrammer.ts +4 -3
  67. package/src/programmers/functional/FunctionalAssertFunctionProgrammer.ts +4 -3
  68. package/src/programmers/functional/FunctionalAssertParametersProgrammer.ts +0 -12
  69. package/src/programmers/functional/FunctionalIsReturnProgrammer.ts +4 -3
  70. package/src/programmers/functional/FunctionalValidateParametersProgrammer.ts +4 -3
  71. package/src/programmers/functional/FunctionalValidateReturnProgrammer.ts +4 -3
  72. package/src/programmers/http/HttpFormDataProgrammer.ts +4 -3
  73. package/src/programmers/http/HttpHeadersProgrammer.ts +4 -3
  74. package/src/programmers/http/HttpParameterProgrammer.ts +4 -1
  75. package/src/programmers/http/HttpQueryProgrammer.ts +4 -3
  76. package/src/programmers/misc/MiscCloneProgrammer.ts +4 -3
  77. package/src/programmers/misc/MiscLiteralsProgrammer.ts +4 -1
  78. package/src/programmers/misc/MiscPruneProgrammer.ts +4 -3
  79. package/src/programmers/notations/NotationGeneralProgrammer.ts +28 -20
  80. package/src/transformers/CallExpressionTransformer.ts +36 -36
  81. package/src/transformers/FileTransformer.ts +42 -32
  82. package/src/transformers/NodeTransformer.ts +10 -6
  83. package/src/transformers/TransformerError.ts +26 -27
  84. package/src/transformers/features/json/JsonApplicationTransformer.ts +4 -1
  85. package/src/transformers/features/llm/LlmApplicationTransformer.ts +4 -1
  86. package/src/transformers/features/llm/LlmSchemaTransformer.ts +4 -1
  87. package/src/transformers/features/reflect/ReflectMetadataTransformer.ts +4 -1
  88. package/src/transformers/features/reflect/ReflectNameTransformer.ts +4 -1
  89. package/src/utils/StringUtil/StringUtil.ts +11 -4
  90. package/lib/functional/$varint.d.ts +0 -6
  91. package/lib/functional/$varint.js +0 -99
  92. package/lib/functional/$varint.js.map +0 -1
  93. package/lib/functional/$zigzag.d.ts +0 -4
  94. package/lib/functional/$zigzag.js +0 -35
  95. package/lib/functional/$zigzag.js.map +0 -1
  96. package/src/functional/$varint.ts +0 -130
  97. 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 project: ITypiaContext = {
16
+ const context: ITypiaContext = {
17
17
  ...environments,
18
18
  transformer,
19
19
  };
20
- checkJsDocParsingMode.get(project, file);
20
+ checkJsDocParsingMode.get(context, file);
21
21
 
22
22
  return ts.visitEachChild(
23
23
  file,
24
- (node) => iterate_node(project)(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
- (project: ITypiaContext) =>
31
- (node: ts.Node): ts.Node =>
32
- ts.visitEachChild(
33
- try_transform_node(project)(node) ?? node,
34
- (child) => iterate_node(project)(child),
35
- project.transformer,
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
- (project: ITypiaContext) =>
40
- (node: ts.Node): ts.Node | null => {
41
- try {
42
- return NodeTransformer.transform(project)(node);
43
- } catch (exp) {
44
- // ONLY ACCEPT TRANSFORMER-ERROR
45
- if (!isTransformerError(exp)) throw exp;
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
- // REPORT DIAGNOSTIC
48
- const diagnostic = ts.createDiagnosticForNode(node, {
49
- key: exp.code,
50
- category: ts.DiagnosticCategory.Error,
51
- message: exp.message,
52
- code: `(${exp.code})` as any,
53
- });
54
- project.extras.addDiagnostic(diagnostic);
55
- return null;
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
- (project: ITypiaContext, file: ts.SourceFile) => {
78
+ (context: ITypiaContext, file: ts.SourceFile) => {
69
79
  if (
70
80
  typeof file.jsDocParsingMode === "number" &&
71
81
  file.jsDocParsingMode !== 0
72
82
  ) {
73
- project.extras.addDiagnostic(
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
- (project: ITypiaContext) =>
9
- (expression: ts.Node): ts.Node | null =>
10
- ts.isCallExpression(expression) && expression.parent
11
- ? CallExpressionTransformer.transform(project)(expression)
12
- : expression;
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
- (method: string) =>
28
- (errors: MetadataFactory.IError[]): TransformerError => {
29
- const body: string = errors
30
- .map((e) => {
31
- const subject: string =
32
- e.explore.object === null
33
- ? ""
34
- : join(e.explore.object)(e.explore.property);
35
- const middle: string = e.explore.parameter
36
- ? `(parameter: ${JSON.stringify(e.explore.parameter)})`
37
- : e.explore.output
38
- ? "(return type)"
39
- : "";
40
- const type: string = `${subject.length ? `${subject}: ` : ""}${
41
- e.name
42
- }`;
43
- return `- ${type}${middle}\n${e.messages
44
- .map((msg) => ` - ${msg}`)
45
- .join("\n")}`;
46
- })
47
- .join("\n\n");
48
- return new TransformerError({
49
- code: method,
50
- message: `unsupported type detected\n\n${body}`,
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("typia.json.application")(errors);
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("typia.llm.application")(result.errors);
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("typia.llm.schema")(result.errors);
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("typia.reflect.metadata")(result.errors);
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("typia.reflect.name")(result.errors);
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
- (keep: string[]) =>
6
- (change: string): string =>
7
- keep.includes(change) ? escapeDuplicate(keep)(`_${change}`) : change;
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":"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"}
@@ -1,4 +0,0 @@
1
- export declare function $zigzag_encode(value: number): number;
2
- export declare function $zigzag_encode(value: bigint): bigint;
3
- export declare function $zigzag_decode(value: number): number;
4
- export declare function $zigzag_decode(value: bigint): bigint;
@@ -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
- }