deukpack 1.0.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.
Files changed (122) hide show
  1. package/LICENSE +201 -0
  2. package/NOTICE +6 -0
  3. package/README.ko.md +138 -0
  4. package/README.md +182 -0
  5. package/RELEASING.md +71 -0
  6. package/bin/deukpack.js +9 -0
  7. package/dist/ast/DeukPackASTBuilder.d.ts +153 -0
  8. package/dist/ast/DeukPackASTBuilder.d.ts.map +1 -0
  9. package/dist/ast/DeukPackASTBuilder.js +931 -0
  10. package/dist/ast/DeukPackASTBuilder.js.map +1 -0
  11. package/dist/codegen/CSharpGenerator.d.ts +136 -0
  12. package/dist/codegen/CSharpGenerator.d.ts.map +1 -0
  13. package/dist/codegen/CSharpGenerator.js +2303 -0
  14. package/dist/codegen/CSharpGenerator.js.map +1 -0
  15. package/dist/codegen/CodeGenerator.d.ts +11 -0
  16. package/dist/codegen/CodeGenerator.d.ts.map +1 -0
  17. package/dist/codegen/CodeGenerator.js +11 -0
  18. package/dist/codegen/CodeGenerator.js.map +1 -0
  19. package/dist/codegen/CppGenerator.d.ts +23 -0
  20. package/dist/codegen/CppGenerator.d.ts.map +1 -0
  21. package/dist/codegen/CppGenerator.js +215 -0
  22. package/dist/codegen/CppGenerator.js.map +1 -0
  23. package/dist/codegen/HighPerformanceCSharpGenerator.d.ts +29 -0
  24. package/dist/codegen/HighPerformanceCSharpGenerator.d.ts.map +1 -0
  25. package/dist/codegen/HighPerformanceCSharpGenerator.js +486 -0
  26. package/dist/codegen/HighPerformanceCSharpGenerator.js.map +1 -0
  27. package/dist/core/DeukPackEngine.d.ts +69 -0
  28. package/dist/core/DeukPackEngine.d.ts.map +1 -0
  29. package/dist/core/DeukPackEngine.js +379 -0
  30. package/dist/core/DeukPackEngine.js.map +1 -0
  31. package/dist/core/DeukPackGenerator.d.ts +9 -0
  32. package/dist/core/DeukPackGenerator.d.ts.map +1 -0
  33. package/dist/core/DeukPackGenerator.js +15 -0
  34. package/dist/core/DeukPackGenerator.js.map +1 -0
  35. package/dist/core/DeukParser.d.ts +12 -0
  36. package/dist/core/DeukParser.d.ts.map +1 -0
  37. package/dist/core/DeukParser.js +27 -0
  38. package/dist/core/DeukParser.js.map +1 -0
  39. package/dist/core/IdlParser.d.ts +27 -0
  40. package/dist/core/IdlParser.d.ts.map +1 -0
  41. package/dist/core/IdlParser.js +157 -0
  42. package/dist/core/IdlParser.js.map +1 -0
  43. package/dist/core/ProtoParser.d.ts +12 -0
  44. package/dist/core/ProtoParser.d.ts.map +1 -0
  45. package/dist/core/ProtoParser.js +27 -0
  46. package/dist/core/ProtoParser.js.map +1 -0
  47. package/dist/csharp/DpExcelProtocol.cs +3005 -0
  48. package/dist/csharp/DpProtocolLibrary.cs +13 -0
  49. package/dist/index.d.ts +22 -0
  50. package/dist/index.d.ts.map +1 -0
  51. package/dist/index.js +43 -0
  52. package/dist/index.js.map +1 -0
  53. package/dist/lexer/DeukLexer.d.ts +31 -0
  54. package/dist/lexer/DeukLexer.d.ts.map +1 -0
  55. package/dist/lexer/DeukLexer.js +292 -0
  56. package/dist/lexer/DeukLexer.js.map +1 -0
  57. package/dist/lexer/IdlLexer.d.ts +33 -0
  58. package/dist/lexer/IdlLexer.d.ts.map +1 -0
  59. package/dist/lexer/IdlLexer.js +286 -0
  60. package/dist/lexer/IdlLexer.js.map +1 -0
  61. package/dist/native/NativeDeukPackEngine.d.ts +30 -0
  62. package/dist/native/NativeDeukPackEngine.d.ts.map +1 -0
  63. package/dist/native/NativeDeukPackEngine.js +99 -0
  64. package/dist/native/NativeDeukPackEngine.js.map +1 -0
  65. package/dist/proto/ProtoASTBuilder.d.ts +29 -0
  66. package/dist/proto/ProtoASTBuilder.d.ts.map +1 -0
  67. package/dist/proto/ProtoASTBuilder.js +239 -0
  68. package/dist/proto/ProtoASTBuilder.js.map +1 -0
  69. package/dist/proto/ProtoLexer.d.ts +29 -0
  70. package/dist/proto/ProtoLexer.d.ts.map +1 -0
  71. package/dist/proto/ProtoLexer.js +264 -0
  72. package/dist/proto/ProtoLexer.js.map +1 -0
  73. package/dist/proto/ProtoTypes.d.ts +40 -0
  74. package/dist/proto/ProtoTypes.d.ts.map +1 -0
  75. package/dist/proto/ProtoTypes.js +37 -0
  76. package/dist/proto/ProtoTypes.js.map +1 -0
  77. package/dist/protocols/BinaryProtocol.d.ts +7 -0
  78. package/dist/protocols/BinaryProtocol.d.ts.map +1 -0
  79. package/dist/protocols/BinaryProtocol.js +11 -0
  80. package/dist/protocols/BinaryProtocol.js.map +1 -0
  81. package/dist/protocols/BinaryWriter.d.ts +22 -0
  82. package/dist/protocols/BinaryWriter.d.ts.map +1 -0
  83. package/dist/protocols/BinaryWriter.js +104 -0
  84. package/dist/protocols/BinaryWriter.js.map +1 -0
  85. package/dist/protocols/CompactProtocol.d.ts +7 -0
  86. package/dist/protocols/CompactProtocol.d.ts.map +1 -0
  87. package/dist/protocols/CompactProtocol.js +11 -0
  88. package/dist/protocols/CompactProtocol.js.map +1 -0
  89. package/dist/protocols/ExcelProtocol.d.ts +98 -0
  90. package/dist/protocols/ExcelProtocol.d.ts.map +1 -0
  91. package/dist/protocols/ExcelProtocol.js +639 -0
  92. package/dist/protocols/ExcelProtocol.js.map +1 -0
  93. package/dist/protocols/JsonProtocol.d.ts +68 -0
  94. package/dist/protocols/JsonProtocol.d.ts.map +1 -0
  95. package/dist/protocols/JsonProtocol.js +422 -0
  96. package/dist/protocols/JsonProtocol.js.map +1 -0
  97. package/dist/protocols/WireProtocol.d.ts +348 -0
  98. package/dist/protocols/WireProtocol.d.ts.map +1 -0
  99. package/dist/protocols/WireProtocol.js +912 -0
  100. package/dist/protocols/WireProtocol.js.map +1 -0
  101. package/dist/serialization/WireDeserializer.d.ts +8 -0
  102. package/dist/serialization/WireDeserializer.d.ts.map +1 -0
  103. package/dist/serialization/WireDeserializer.js +13 -0
  104. package/dist/serialization/WireDeserializer.js.map +1 -0
  105. package/dist/serialization/WireSerializer.d.ts +20 -0
  106. package/dist/serialization/WireSerializer.d.ts.map +1 -0
  107. package/dist/serialization/WireSerializer.js +100 -0
  108. package/dist/serialization/WireSerializer.js.map +1 -0
  109. package/dist/types/DeukPackTypes.d.ts +291 -0
  110. package/dist/types/DeukPackTypes.d.ts.map +1 -0
  111. package/dist/types/DeukPackTypes.js +76 -0
  112. package/dist/types/DeukPackTypes.js.map +1 -0
  113. package/dist/utils/EndianUtils.d.ts +11 -0
  114. package/dist/utils/EndianUtils.d.ts.map +1 -0
  115. package/dist/utils/EndianUtils.js +32 -0
  116. package/dist/utils/EndianUtils.js.map +1 -0
  117. package/dist/utils/PerformanceMonitor.d.ts +26 -0
  118. package/dist/utils/PerformanceMonitor.d.ts.map +1 -0
  119. package/dist/utils/PerformanceMonitor.js +57 -0
  120. package/dist/utils/PerformanceMonitor.js.map +1 -0
  121. package/package.json +77 -0
  122. package/scripts/build_deukpack.js +669 -0
@@ -0,0 +1,153 @@
1
+ /**
2
+ * DeukPack AST Builder
3
+ * Builds Abstract Syntax Tree from tokens
4
+ */
5
+ import { DeukPackAST, DeukPackToken } from '../types/DeukPackTypes';
6
+ export interface DeukPackASTBuilderOptions {
7
+ /** When true, parse .deuk field syntax: id> [Attr]… type name [= default] and single-identifier namespace */
8
+ deuk?: boolean;
9
+ }
10
+ export declare class DeukPackASTBuilder {
11
+ private tokens;
12
+ private position;
13
+ private currentFile;
14
+ /** Collected doc comments for the next declaration (struct/enum/field etc.) */
15
+ private leadingCommentBuffer;
16
+ private deukMode;
17
+ /**
18
+ * Collect consecutive LINE_COMMENT/BLOCK_COMMENT tokens and return combined text (trimmed). Consumes tokens.
19
+ */
20
+ private collectLeadingComments;
21
+ /**
22
+ * Split leading comment into docComment and C# attribute lines.
23
+ * Lines that look like [AttrName] or [AttrName("arg")] are treated as csharpAttributes (DeukPack extension).
24
+ */
25
+ private parseDocCommentAndCSharpAttributes;
26
+ /**
27
+ * Parse IDL annotations: ( key = "value", key2 = "value2" ) or ( key ). Consumes tokens.
28
+ */
29
+ private tryParseAnnotations;
30
+ /**
31
+ * Build AST from tokens
32
+ */
33
+ build(tokens: DeukPackToken[], fileName: string, options?: DeukPackASTBuilderOptions): DeukPackAST;
34
+ /**
35
+ * Parse namespace declaration
36
+ */
37
+ private parseNamespace;
38
+ /**
39
+ * Parse struct declaration
40
+ */
41
+ private parseStruct;
42
+ /** 예약 필드 ID: message<> 자동 주입 msgInfo (IDL에는 적지 않음, 코드젠에서만 사용). DEUKPACK_MESSAGE_INFO_KEYWORD §5. */
43
+ private static readonly MSGINFO_FIELD_ID;
44
+ /**
45
+ * Parse message<id> name { fields } — 득팩 프로토콜 메시지.
46
+ * IDL에는 사용자 필드만 적고, 파서가 예약 ID(31000)로 msgInfo 필드를 자동 주입.
47
+ */
48
+ private parseMessage;
49
+ /**
50
+ * Parse table<rowType> = { version: "...", key?: "..." } — 득팩 테이블 정의.
51
+ * Produces a synthetic struct named "table" with header + infos for existing codegen (IDeukMetaContainer).
52
+ */
53
+ private parseTableDefinition;
54
+ /**
55
+ * Parse field declaration. Deuk: id> [Attr]… type name [= default]. Legacy .thrift: id: [required|optional] type name [= default]
56
+ */
57
+ private parseField;
58
+ /** Parse one [Attr] or [Attr("v")] or [Attr(K=V)] in .deuk; return string for csharpAttributes */
59
+ private parseOneDeukInlineAttribute;
60
+ /**
61
+ * Parse type declaration
62
+ */
63
+ private parseType;
64
+ /** 레거시 식별자 타입(i32 등) → 득팩 이름 정규화 (Protobuf와 동일하게 AST에는 득팩 타입만 저장) */
65
+ private static readonly THRIFT_TYPE_TO_DEUKPACK;
66
+ /** 득팩 테이블 프리미티브(DEUKPACK_IDL_DESIGN §5.1): name/note는 string 별칭. id/tid는 int64와 동일해 타입 구분 불필요. */
67
+ private static readonly META_PRIMITIVES;
68
+ /**
69
+ * Parse identifier type (handles namespaced types like mo_define.projectile_type_e)
70
+ */
71
+ private parseIdentifierType;
72
+ /**
73
+ * Parse list type
74
+ */
75
+ private parseListType;
76
+ /**
77
+ * Parse set type
78
+ */
79
+ private parseSetType;
80
+ /**
81
+ * Parse tablelink<TableCategory, KeyField> — 득팩 테이블 행 참조.
82
+ */
83
+ private parseTableLinkType;
84
+ /**
85
+ * Parse map type
86
+ */
87
+ private parseMapType;
88
+ /**
89
+ * Parse default value
90
+ */
91
+ private parseDefaultValue;
92
+ /**
93
+ * Parse identifier default value (handles namespaced values; . or :: in .deuk, stored as . in AST)
94
+ */
95
+ private parseIdentifierDefaultValue;
96
+ /**
97
+ * Parse array default value (handles values like [{"weight":30}, {"weight":30}] or [])
98
+ */
99
+ private parseArrayDefaultValue;
100
+ /**
101
+ * Parse object default value (handles values like { "version": 20250802 } or {})
102
+ */
103
+ private parseObjectDefaultValue;
104
+ /**
105
+ * Parse enum declaration
106
+ */
107
+ private parseEnum;
108
+ /**
109
+ * Parse service declaration
110
+ */
111
+ private parseService;
112
+ /**
113
+ * Parse a single service method: returnType methodName( [ params ] )
114
+ */
115
+ private parseServiceMethod;
116
+ /**
117
+ * Parse include statement
118
+ */
119
+ private parseInclude;
120
+ /**
121
+ * Parse typedef declaration
122
+ */
123
+ private parseTypedef;
124
+ /**
125
+ * Parse const declaration
126
+ */
127
+ private parseConst;
128
+ /**
129
+ * Check if current token matches expected type
130
+ */
131
+ private check;
132
+ /**
133
+ * Expect token of specific type and advance
134
+ */
135
+ private expect;
136
+ /**
137
+ * Advance and return current token
138
+ */
139
+ private advance;
140
+ /**
141
+ * Get current token without advancing
142
+ */
143
+ private peek;
144
+ /**
145
+ * Get previous token
146
+ */
147
+ private previous;
148
+ /**
149
+ * Check if at end of tokens
150
+ */
151
+ private isAtEnd;
152
+ }
153
+ //# sourceMappingURL=DeukPackASTBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeukPackASTBuilder.d.ts","sourceRoot":"","sources":["../../src/ast/DeukPackASTBuilder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAmG,aAAa,EAA4C,MAAM,wBAAwB,CAAC;AAE/M,MAAM,WAAW,yBAAyB;IACxC,6GAA6G;IAC7G,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,WAAW,CAAc;IACjC,+EAA+E;IAC/E,OAAO,CAAC,oBAAoB,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAkB;IAElC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAU9B;;;OAGG;IACH,OAAO,CAAC,kCAAkC;IAoB1C;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAwB3B;;OAEG;IACH,KAAK,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,yBAAyB,GAAG,WAAW;IAyGlG;;OAEG;IACH,OAAO,CAAC,cAAc;IAmBtB;;OAEG;IACH,OAAO,CAAC,WAAW;IA2CnB,oGAAoG;IACpG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAEjD;;;OAGG;IACH,OAAO,CAAC,YAAY;IA+CpB;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAsD5B;;OAEG;IACH,OAAO,CAAC,UAAU;IAmElB,kGAAkG;IAClG,OAAO,CAAC,2BAA2B;IAoBnC;;OAEG;IACH,OAAO,CAAC,SAAS;IA+CjB,qEAAqE;IACrE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,uBAAuB,CAK7C;IAEF,kGAAkG;IAClG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAGrC;IAEF;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAoB3B;;OAEG;IACH,OAAO,CAAC,aAAa;IAYrB;;OAEG;IACH,OAAO,CAAC,YAAY;IAYpB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAU1B;;OAEG;IACH,OAAO,CAAC,YAAY;IAepB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAwBzB;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAanC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA+C9B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IA4D/B;;OAEG;IACH,OAAO,CAAC,SAAS;IA6CjB;;OAEG;IACH,OAAO,CAAC,YAAY;IA4BpB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAkB1B;;OAEG;IACH,OAAO,CAAC,YAAY;IAOpB;;OAEG;IACH,OAAO,CAAC,YAAY;IAapB;;OAEG;IACH,OAAO,CAAC,UAAU;IAgBlB;;OAEG;IACH,OAAO,CAAC,KAAK;IAKb;;OAEG;IACH,OAAO,CAAC,MAAM;IAQd;;OAEG;IACH,OAAO,CAAC,OAAO;IAOf;;OAEG;IACH,OAAO,CAAC,IAAI;IAIZ;;OAEG;IACH,OAAO,CAAC,QAAQ;IAIhB;;OAEG;IACH,OAAO,CAAC,OAAO;CAGhB"}