export-table-plugin-csharp 1.1.189
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/.vscode/launch.json +21 -0
- package/bin/Json2LiteDB.exe +0 -0
- package/bin/Json2LiteDB.pdb +0 -0
- package/bin/LiteDB.dll +0 -0
- package/bin/LiteDB.xml +7288 -0
- package/dist/CSParseTool.d.ts +36 -0
- package/dist/CSParseTool.d.ts.map +1 -0
- package/dist/CSParseTool.js +533 -0
- package/dist/CSProtoParser.d.ts +22 -0
- package/dist/CSProtoParser.d.ts.map +1 -0
- package/dist/CSProtoParser.js +171 -0
- package/dist/ExportCSPlugin.d.ts +9 -0
- package/dist/ExportCSPlugin.d.ts.map +1 -0
- package/dist/ExportCSPlugin.js +290 -0
- package/dist/ExportLiteDBCSPlugin.d.ts +8 -0
- package/dist/ExportLiteDBCSPlugin.d.ts.map +1 -0
- package/dist/ExportLiteDBCSPlugin.js +221 -0
- package/dist/ExportLiteDBUnityCSJsonPlugin.d.ts +11 -0
- package/dist/ExportLiteDBUnityCSJsonPlugin.d.ts.map +1 -0
- package/dist/ExportLiteDBUnityCSJsonPlugin.js +190 -0
- package/dist/ExportUnityCSJsonPlugin.d.ts +10 -0
- package/dist/ExportUnityCSJsonPlugin.d.ts.map +1 -0
- package/dist/ExportUnityCSJsonPlugin.js +265 -0
- package/dist/ExportUnityMMPPlugin.d.ts +8 -0
- package/dist/ExportUnityMMPPlugin.d.ts.map +1 -0
- package/dist/ExportUnityMMPPlugin.js +116 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -0
- package/package.json +24 -0
- package/res/mmp-cs/BitUtils.cs +171 -0
- package/res/mmp-cs/BitUtils.cs.meta +11 -0
- package/res/mmp-cs/WritableValueTuple.cs +40 -0
- package/res/mmp-cs/WritableValueTuple.cs.meta +11 -0
- package/src/CSParseTool.ts +425 -0
- package/src/CSProtoParser.ts +137 -0
- package/src/ExportCSPlugin.ts +321 -0
- package/src/ExportLiteDBCSPlugin.ts +245 -0
- package/src/ExportLiteDBUnityCSJsonPlugin.ts +175 -0
- package/src/ExportUnityCSJsonPlugin.ts +297 -0
- package/src/ExportUnityMMPPlugin.ts +127 -0
- package/src/index.ts +14 -0
- package/test/testCS.bat +1 -0
- package/test/testCSWithProto.bat +1 -0
- package/test/testLiteDB.bat +2 -0
- package/test/testUJson.bat +2 -0
- package/tsconfig.json +101 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Field, FieldType, DataTable } from "export-table-lib";
|
|
2
|
+
export declare function TryConvValue(value: any, t: FieldType, f: Field): any;
|
|
3
|
+
export declare function ConvValue(value: any, t: FieldType, f: Field): any;
|
|
4
|
+
export type ValueTuple = {
|
|
5
|
+
Item1?: any;
|
|
6
|
+
Item2?: any;
|
|
7
|
+
};
|
|
8
|
+
export declare function genTupleArrayValue(f: Field, content: string): {
|
|
9
|
+
isArray: boolean;
|
|
10
|
+
objs: ValueTuple[];
|
|
11
|
+
} | undefined;
|
|
12
|
+
export declare function ToNewTupleStatement(obj: ValueTuple): string;
|
|
13
|
+
export declare function ConvValue2Literal(value: any, t: FieldType, f: Field): string;
|
|
14
|
+
export declare let isSkipExportDefaults0: boolean;
|
|
15
|
+
export declare let isOverwriteWithProto: boolean;
|
|
16
|
+
export declare let overwriteWithProtoPath: string;
|
|
17
|
+
export declare let firstLetterUpper: (str: string) => string;
|
|
18
|
+
export declare let firstLetterLower: (str: string) => string;
|
|
19
|
+
export declare let convMemberName: (str: string) => string;
|
|
20
|
+
export declare let convVarName: (str: string) => string;
|
|
21
|
+
export declare let getFieldElementType: (f: Field) => string;
|
|
22
|
+
export declare let getFieldType: (f: Field) => FieldType | "Dictionary<string,string>" | "List<Dictionary<string,string>>" | "double" | "double[]";
|
|
23
|
+
export declare let isTypeArray: (f: Field) => boolean;
|
|
24
|
+
export declare let getFieldAnnotation: (f: Field) => string;
|
|
25
|
+
export declare let getCustomFieldTypeAnnotation: (f: Field) => string;
|
|
26
|
+
export declare let getFkFieldType: (tables: DataTable[], field: Field) => FieldType;
|
|
27
|
+
export declare const genValue: (value: any, f: Field) => string;
|
|
28
|
+
export declare const getTitle: (v: Field) => string;
|
|
29
|
+
export declare const getDescripts: (v: Field) => string[];
|
|
30
|
+
export declare const convTupleArrayType: (f: Field) => Field | undefined;
|
|
31
|
+
export declare const convTupleArrayTypeDefine: (f: Field) => string;
|
|
32
|
+
export declare function GetUsingJsonToolNamespace(): string;
|
|
33
|
+
export declare let isEnableMMP: boolean;
|
|
34
|
+
export declare let useMMPNamespace: string;
|
|
35
|
+
export declare function outputFileSync(savePath: string, content1: any, options: BufferEncoding): void;
|
|
36
|
+
//# sourceMappingURL=CSParseTool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CSParseTool.d.ts","sourceRoot":"","sources":["../src/CSParseTool.ts"],"names":[],"mappings":"AACA,OAAO,EAA0B,KAAK,EAA4D,SAAS,EAAwB,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAGtK,wBAAgB,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,GAAG,GAAG,CAWpE;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,GAAG,GAAG,CA0CjE;AAED,MAAM,MAAM,UAAU,GAAG;IACxB,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,KAAK,CAAC,EAAE,GAAG,CAAC;CACZ,CAAA;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,UAAU,EAAE,CAAA;CAAE,GAAG,SAAS,CAoDlH;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,UAAU,UAElD;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,GAAG,MAAM,CAyE5E;AAED,eAAO,IAAI,qBAAqB,SAA0D,CAAA;AAE1F,eAAO,IAAI,oBAAoB,SAAsB,CAAA;AACrD,eAAO,IAAI,sBAAsB,QAA+D,CAAA;AAEhG,eAAO,IAAI,gBAAgB,GAAa,KAAK,MAAM,WAElD,CAAC;AACF,eAAO,IAAI,gBAAgB,GAAa,KAAK,MAAM,WAElD,CAAC;AACF,eAAO,IAAI,cAAc,GAAa,KAAK,MAAM,WAEhD,CAAA;AACD,eAAO,IAAI,WAAW,QANuB,MAAM,WAMV,CAAA;AAEzC,eAAO,IAAI,mBAAmB,GAAa,GAAG,KAAK,WAclD,CAAA;AAED,eAAO,IAAI,YAAY,GAAa,GAAG,KAAK,wGAiD3C,CAAA;AAED,eAAO,IAAI,WAAW,GAAa,GAAG,KAAK,YAI1C,CAAA;AAED,eAAO,IAAI,kBAAkB,GAAa,GAAG,KAAK,WA+CjD,CAAA;AAED,eAAO,IAAI,4BAA4B,GAAa,GAAG,KAAK,WAiB3D,CAAA;AAED,eAAO,IAAI,cAAc,GAAa,QAAQ,SAAS,EAAE,EAAE,OAAO,KAAK,cAEtE,CAAA;AAED,eAAO,MAAM,QAAQ,GAAI,OAAO,GAAG,EAAE,GAAG,KAAK,KAAG,MAE/C,CAAA;AAED,eAAO,MAAM,QAAQ,GAAI,GAAG,KAAK,WAEhC,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,GAAG,KAAK,aAEpC,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAI,GAAG,KAAK,sBAc1C,CAAA;AAED,eAAO,MAAM,wBAAwB,GAAI,GAAG,KAAK,WAYhD,CAAA;AAED,wBAAgB,yBAAyB,WAQxC;AAED,eAAO,IAAI,WAAW,SAAwD,CAAA;AAC9E,eAAO,IAAI,eAAe,QAAgC,CAAA;AAE1D,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI,CAS7F"}
|
|
@@ -0,0 +1,533 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.useMMPNamespace = exports.isEnableMMP = exports.convTupleArrayTypeDefine = exports.convTupleArrayType = exports.getDescripts = exports.getTitle = exports.genValue = exports.getFkFieldType = exports.getCustomFieldTypeAnnotation = exports.getFieldAnnotation = exports.isTypeArray = exports.getFieldType = exports.getFieldElementType = exports.convVarName = exports.convMemberName = exports.firstLetterLower = exports.firstLetterUpper = exports.overwriteWithProtoPath = exports.isOverwriteWithProto = exports.isSkipExportDefaults0 = void 0;
|
|
37
|
+
exports.TryConvValue = TryConvValue;
|
|
38
|
+
exports.ConvValue = ConvValue;
|
|
39
|
+
exports.genTupleArrayValue = genTupleArrayValue;
|
|
40
|
+
exports.ToNewTupleStatement = ToNewTupleStatement;
|
|
41
|
+
exports.ConvValue2Literal = ConvValue2Literal;
|
|
42
|
+
exports.GetUsingJsonToolNamespace = GetUsingJsonToolNamespace;
|
|
43
|
+
exports.outputFileSync = outputFileSync;
|
|
44
|
+
const export_table_lib_1 = require("export-table-lib");
|
|
45
|
+
const fs = __importStar(require("fs-extra"));
|
|
46
|
+
function TryConvValue(value, t, f) {
|
|
47
|
+
try {
|
|
48
|
+
return ConvValue(value, t, f);
|
|
49
|
+
}
|
|
50
|
+
catch (ex) {
|
|
51
|
+
if (ex instanceof TypeError) {
|
|
52
|
+
console.error(ex);
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
function ConvValue(value, t, f) {
|
|
61
|
+
if (t == "object") {
|
|
62
|
+
return JSON.parse(value);
|
|
63
|
+
}
|
|
64
|
+
else if (t == "object[]") {
|
|
65
|
+
return JSON.parse(value);
|
|
66
|
+
}
|
|
67
|
+
else if (t == "number" || t == "float") {
|
|
68
|
+
return JSON.parse(value);
|
|
69
|
+
}
|
|
70
|
+
else if (t == "int" || t == "long") {
|
|
71
|
+
return parseInt(value);
|
|
72
|
+
}
|
|
73
|
+
else if (t == "number[]" || t == "float[]") {
|
|
74
|
+
return JSON.parse(value);
|
|
75
|
+
}
|
|
76
|
+
else if (t == "int[]") {
|
|
77
|
+
return JSON.parse(value);
|
|
78
|
+
}
|
|
79
|
+
else if (t == "long[]") {
|
|
80
|
+
return JSON.parse(value);
|
|
81
|
+
}
|
|
82
|
+
else if (t == "uid") {
|
|
83
|
+
return JSON.parse(value);
|
|
84
|
+
}
|
|
85
|
+
else if (t == "bool") {
|
|
86
|
+
try {
|
|
87
|
+
return !!JSON.parse(value);
|
|
88
|
+
}
|
|
89
|
+
catch (ex) {
|
|
90
|
+
console.log(ex);
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
else if (t == "bool[]") {
|
|
95
|
+
return JSON.parse(value);
|
|
96
|
+
}
|
|
97
|
+
else if (t == "string") {
|
|
98
|
+
return value;
|
|
99
|
+
}
|
|
100
|
+
else if (t == "string[]") {
|
|
101
|
+
return JSON.parse(value);
|
|
102
|
+
}
|
|
103
|
+
else if (t == "fk") {
|
|
104
|
+
return value;
|
|
105
|
+
}
|
|
106
|
+
else if (t == "fk[]") {
|
|
107
|
+
return value;
|
|
108
|
+
}
|
|
109
|
+
else if (t == "any") {
|
|
110
|
+
console.log(f);
|
|
111
|
+
throw new TypeError(`invalid type ${f.name}:<${f.rawType} => any>`);
|
|
112
|
+
}
|
|
113
|
+
else if (t == "key") {
|
|
114
|
+
return JSON.parse(t);
|
|
115
|
+
}
|
|
116
|
+
throw new TypeError(`invalid unkown type ${f.name}:<${f.rawType} => ${f.type} << ${t}>`);
|
|
117
|
+
}
|
|
118
|
+
function genTupleArrayValue(f, content) {
|
|
119
|
+
var line = f.rawType.replaceAll(/(?<=[^\w])(boolean)(?=[^\w]|$)/g, "bool");
|
|
120
|
+
let m = line.match(/\@\((\w+),(\w+)\)(\[\])?/);
|
|
121
|
+
if (m != null) {
|
|
122
|
+
// [{"Item1":99,"Item2":"klwjefl"}]
|
|
123
|
+
let index = 0;
|
|
124
|
+
let objs = [];
|
|
125
|
+
let isArray = false;
|
|
126
|
+
// console.log(`input: ${content}`)
|
|
127
|
+
while (0 <= index && index < content.length) {
|
|
128
|
+
let segIndex = content.indexOf(";;", index);
|
|
129
|
+
if (segIndex == -1) {
|
|
130
|
+
segIndex = content.length;
|
|
131
|
+
}
|
|
132
|
+
let index2 = content.indexOf("|", index);
|
|
133
|
+
if (index2 == -1 || index2 >= segIndex) {
|
|
134
|
+
if (content.length > 0) {
|
|
135
|
+
console.error(`表格格式错误,缺少部分数据,将用默认值填充<${f.name}>: ${content}`);
|
|
136
|
+
}
|
|
137
|
+
index2 = segIndex;
|
|
138
|
+
}
|
|
139
|
+
let numStr = content.substring(index, index2);
|
|
140
|
+
let t1 = m[1];
|
|
141
|
+
let v1 = index == index2 ? undefined : TryConvValue(numStr, t1, f);
|
|
142
|
+
// console.log(`parseinfo1: ${content}, ${index}, ${index2}, ${numStr}, ${t1}, ${v1}`)
|
|
143
|
+
let index3 = Math.min(index2 + 1, segIndex);
|
|
144
|
+
let ssStr = content.substring(index3, segIndex);
|
|
145
|
+
let t2 = m[2];
|
|
146
|
+
let v2 = index3 == segIndex ? undefined : TryConvValue(ssStr, t2, f);
|
|
147
|
+
// console.log(`parseinfo2: ${content}, ${index3}, ${segIndex}, ${ssStr}, ${t2}, ${v2}`)
|
|
148
|
+
let obj = {};
|
|
149
|
+
if (v1 != undefined) {
|
|
150
|
+
obj.Item1 = v1;
|
|
151
|
+
}
|
|
152
|
+
if (v2 != undefined) {
|
|
153
|
+
obj.Item2 = v2;
|
|
154
|
+
}
|
|
155
|
+
objs.push(obj);
|
|
156
|
+
if (segIndex >= content.length) {
|
|
157
|
+
break;
|
|
158
|
+
}
|
|
159
|
+
index = segIndex + 2;
|
|
160
|
+
}
|
|
161
|
+
isArray = m[3] == "[]";
|
|
162
|
+
return { isArray, objs };
|
|
163
|
+
}
|
|
164
|
+
return undefined;
|
|
165
|
+
}
|
|
166
|
+
function ToNewTupleStatement(obj) {
|
|
167
|
+
return `new(){${(0, export_table_lib_1.iff)(obj.Item1 != null, () => `Item1=${obj.Item1},`)}${(0, export_table_lib_1.iff)(obj.Item2 != null, () => `Item2=${obj.Item2},`)}}`;
|
|
168
|
+
}
|
|
169
|
+
function ConvValue2Literal(value, t, f) {
|
|
170
|
+
// console.log(t)
|
|
171
|
+
if (t == "object") {
|
|
172
|
+
//throw new Error("invalid type <object>")
|
|
173
|
+
let convert = [];
|
|
174
|
+
for (let k in value) {
|
|
175
|
+
convert.push(`{"${k}","${value[k].toString()}"}`);
|
|
176
|
+
}
|
|
177
|
+
;
|
|
178
|
+
return `new Dictionary<string,string>(${convert.length}){${convert}}`;
|
|
179
|
+
}
|
|
180
|
+
else if (t == "object[]") {
|
|
181
|
+
let values = value;
|
|
182
|
+
//throw new Error("invalid type <object[]>")
|
|
183
|
+
return `new List<Dictionary<string,string>>(){${values.map((val) => {
|
|
184
|
+
let convert = [];
|
|
185
|
+
for (let k in val) {
|
|
186
|
+
convert.push(`{"${k}","${val[k].toString()}"}`);
|
|
187
|
+
}
|
|
188
|
+
;
|
|
189
|
+
return `new Dictionary<string,string>(${convert.length}){${convert}}`;
|
|
190
|
+
})}}`;
|
|
191
|
+
}
|
|
192
|
+
else if (t == "number" || t == "int" || t == "long") {
|
|
193
|
+
return `${value}`;
|
|
194
|
+
}
|
|
195
|
+
else if (t == "number[]") {
|
|
196
|
+
let values = value;
|
|
197
|
+
return `new double[]{${values.join(", ")}}`;
|
|
198
|
+
}
|
|
199
|
+
else if (t == "float[]") {
|
|
200
|
+
let values = value;
|
|
201
|
+
return `new float[]{${values.join(", ")}}`;
|
|
202
|
+
}
|
|
203
|
+
else if (t == "int[]") {
|
|
204
|
+
let values = value;
|
|
205
|
+
return `new int[]{${values.join(", ")}}`;
|
|
206
|
+
}
|
|
207
|
+
else if (t == "long[]") {
|
|
208
|
+
let values = value;
|
|
209
|
+
return `new long[]{${values.join(", ")}}`;
|
|
210
|
+
}
|
|
211
|
+
else if (t == "uid") {
|
|
212
|
+
return `${value}`;
|
|
213
|
+
}
|
|
214
|
+
else if (t == "bool") {
|
|
215
|
+
return `${value}`;
|
|
216
|
+
}
|
|
217
|
+
else if (t == "bool[]") {
|
|
218
|
+
let values = value;
|
|
219
|
+
return `new bool[]{${values.join(", ")}}`;
|
|
220
|
+
}
|
|
221
|
+
else if (t == "string") {
|
|
222
|
+
// return `"${value}"`
|
|
223
|
+
return JSON.stringify(value);
|
|
224
|
+
}
|
|
225
|
+
else if (t == "string[]") {
|
|
226
|
+
let values = value;
|
|
227
|
+
return `new string[]{${values.map(v => JSON.stringify(v)).join(", ")}}`;
|
|
228
|
+
}
|
|
229
|
+
else if (t.startsWith("WritableValueTuple<")) {
|
|
230
|
+
let result = genTupleArrayValue(f, value);
|
|
231
|
+
// console.log(`result: ${value}=> ${JSON.stringify(result)}`)
|
|
232
|
+
if (result == null) {
|
|
233
|
+
throw new Error(`invalid tuple/tuple[] format: ${value}`);
|
|
234
|
+
}
|
|
235
|
+
let { isArray, objs } = result;
|
|
236
|
+
if (isArray) {
|
|
237
|
+
return `new ${f.type}{${(0, export_table_lib_1.foreach)(objs, obj => ToNewTupleStatement(obj), ",")}}`;
|
|
238
|
+
}
|
|
239
|
+
else {
|
|
240
|
+
let obj = objs[0] ?? {};
|
|
241
|
+
return ToNewTupleStatement(obj);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
else if (t == "fk") {
|
|
245
|
+
return `${value}`;
|
|
246
|
+
}
|
|
247
|
+
else if (t == "fk[]") {
|
|
248
|
+
let values = value;
|
|
249
|
+
return `new int[]{${values.join(", ")}}`;
|
|
250
|
+
}
|
|
251
|
+
else if (t == "any") {
|
|
252
|
+
console.log(f);
|
|
253
|
+
throw new Error(`invalid type ${f.name}:<${f.rawType} | ${f.type} => any>`);
|
|
254
|
+
}
|
|
255
|
+
else if (t == "key") {
|
|
256
|
+
return `${value}`;
|
|
257
|
+
}
|
|
258
|
+
console.error(`invalid type ${f.name}`, f);
|
|
259
|
+
throw new Error(`invalid type ${f.name}:<${f.rawType} => unkown>`);
|
|
260
|
+
}
|
|
261
|
+
exports.isSkipExportDefaults0 = process.argv.findIndex(v => v == "--SkipDefaults") >= 0;
|
|
262
|
+
let withProtoIndex = process.argv.findIndex(v => v == "--WithProto");
|
|
263
|
+
exports.isOverwriteWithProto = withProtoIndex >= 0;
|
|
264
|
+
exports.overwriteWithProtoPath = exports.isOverwriteWithProto ? process.argv[withProtoIndex + 1] : "";
|
|
265
|
+
let firstLetterUpper = function (str) {
|
|
266
|
+
return str.charAt(0).toUpperCase() + str.slice(1);
|
|
267
|
+
};
|
|
268
|
+
exports.firstLetterUpper = firstLetterUpper;
|
|
269
|
+
let firstLetterLower = function (str) {
|
|
270
|
+
return str.charAt(0).toLowerCase() + str.slice(1);
|
|
271
|
+
};
|
|
272
|
+
exports.firstLetterLower = firstLetterLower;
|
|
273
|
+
let convMemberName = function (str) {
|
|
274
|
+
return str.split("_").map(s => (0, exports.firstLetterUpper)(s)).join("");
|
|
275
|
+
};
|
|
276
|
+
exports.convMemberName = convMemberName;
|
|
277
|
+
exports.convVarName = exports.firstLetterLower;
|
|
278
|
+
let getFieldElementType = function (f) {
|
|
279
|
+
let t = f.type;
|
|
280
|
+
if (t.endsWith("[]")) {
|
|
281
|
+
var type = (0, exports.getFieldType)(f);
|
|
282
|
+
return type.substring(0, type.length - 2);
|
|
283
|
+
}
|
|
284
|
+
else if (t == "any") {
|
|
285
|
+
console.log(f);
|
|
286
|
+
throw new Error(`invalid type ${f.name}:<${f.rawType} => any>`);
|
|
287
|
+
}
|
|
288
|
+
else if (t == "key") {
|
|
289
|
+
return "string";
|
|
290
|
+
}
|
|
291
|
+
else {
|
|
292
|
+
throw new Error(`invalid type ${f.name}:<${f.rawType} => unkown>`);
|
|
293
|
+
}
|
|
294
|
+
return t;
|
|
295
|
+
};
|
|
296
|
+
exports.getFieldElementType = getFieldElementType;
|
|
297
|
+
let getFieldType = function (f) {
|
|
298
|
+
let t = f.type;
|
|
299
|
+
if (t == "object") {
|
|
300
|
+
//throw new Error("invalid type <Dictionary<string,string>>")
|
|
301
|
+
return "Dictionary<string,string>";
|
|
302
|
+
}
|
|
303
|
+
else if (t == "object[]") {
|
|
304
|
+
//throw new Error("invalid type <Dictionary<string,string>[]>")
|
|
305
|
+
return "List<Dictionary<string,string>>";
|
|
306
|
+
}
|
|
307
|
+
else if (t == "number") {
|
|
308
|
+
return "double";
|
|
309
|
+
}
|
|
310
|
+
else if (t == "number[]") {
|
|
311
|
+
return "double[]";
|
|
312
|
+
}
|
|
313
|
+
else if (t == "float") {
|
|
314
|
+
return "float";
|
|
315
|
+
}
|
|
316
|
+
else if (t == "float[]") {
|
|
317
|
+
return "float[]";
|
|
318
|
+
}
|
|
319
|
+
else if (t == "int") {
|
|
320
|
+
return "int";
|
|
321
|
+
}
|
|
322
|
+
else if (t == "int[]") {
|
|
323
|
+
return "int[]";
|
|
324
|
+
}
|
|
325
|
+
else if (t == "long") {
|
|
326
|
+
return "long";
|
|
327
|
+
}
|
|
328
|
+
else if (t == "long[]") {
|
|
329
|
+
return "long[]";
|
|
330
|
+
}
|
|
331
|
+
else if (t == "uid") {
|
|
332
|
+
return "int";
|
|
333
|
+
}
|
|
334
|
+
else if (t == "bool") {
|
|
335
|
+
return "bool";
|
|
336
|
+
}
|
|
337
|
+
else if (t == "bool[]") {
|
|
338
|
+
return "bool[]";
|
|
339
|
+
}
|
|
340
|
+
else if (t == "string") {
|
|
341
|
+
return "string";
|
|
342
|
+
}
|
|
343
|
+
else if (t == "string[]") {
|
|
344
|
+
return "string[]";
|
|
345
|
+
}
|
|
346
|
+
else if (t == "fk") {
|
|
347
|
+
return "int";
|
|
348
|
+
}
|
|
349
|
+
else if (t == "fk[]") {
|
|
350
|
+
return "int[]";
|
|
351
|
+
}
|
|
352
|
+
else if (t.startsWith("WritableValueTuple<")) {
|
|
353
|
+
return t;
|
|
354
|
+
}
|
|
355
|
+
else if (t == "any") {
|
|
356
|
+
console.log(f);
|
|
357
|
+
throw new Error(`invalid type ${f.name}:<${f.rawType} => any>`);
|
|
358
|
+
}
|
|
359
|
+
else if (t == "key") {
|
|
360
|
+
return "string";
|
|
361
|
+
}
|
|
362
|
+
else {
|
|
363
|
+
throw new Error(`invalid type ${f.name}:<${f.rawType} => unkown>`);
|
|
364
|
+
}
|
|
365
|
+
return t;
|
|
366
|
+
};
|
|
367
|
+
exports.getFieldType = getFieldType;
|
|
368
|
+
let isTypeArray = function (f) {
|
|
369
|
+
let t = f.type;
|
|
370
|
+
let isArray = t.endsWith("[]");
|
|
371
|
+
return isArray;
|
|
372
|
+
};
|
|
373
|
+
exports.isTypeArray = isTypeArray;
|
|
374
|
+
let getFieldAnnotation = function (f) {
|
|
375
|
+
let anno = '[MarshalAs(UnmanagedType.ByValArray, SizeConst = 0)]';
|
|
376
|
+
let t = f.type;
|
|
377
|
+
if (t == "object") {
|
|
378
|
+
return "";
|
|
379
|
+
}
|
|
380
|
+
else if (t == "object[]") {
|
|
381
|
+
//throw new Error("invalid type <Dictionary<string,string>[]>")
|
|
382
|
+
return "";
|
|
383
|
+
}
|
|
384
|
+
else if (t == "number") {
|
|
385
|
+
return "";
|
|
386
|
+
}
|
|
387
|
+
else if (t == "number[]") {
|
|
388
|
+
return anno;
|
|
389
|
+
}
|
|
390
|
+
else if (t == "float") {
|
|
391
|
+
return "";
|
|
392
|
+
}
|
|
393
|
+
else if (t == "float[]") {
|
|
394
|
+
return anno;
|
|
395
|
+
}
|
|
396
|
+
else if (t == "int") {
|
|
397
|
+
return "";
|
|
398
|
+
}
|
|
399
|
+
else if (t == "int[]") {
|
|
400
|
+
return anno;
|
|
401
|
+
}
|
|
402
|
+
else if (t == "long") {
|
|
403
|
+
return "";
|
|
404
|
+
}
|
|
405
|
+
else if (t == "long[]") {
|
|
406
|
+
return anno;
|
|
407
|
+
}
|
|
408
|
+
else if (t == "uid") {
|
|
409
|
+
return "";
|
|
410
|
+
}
|
|
411
|
+
else if (t == "bool") {
|
|
412
|
+
return "";
|
|
413
|
+
}
|
|
414
|
+
else if (t == "bool[]") {
|
|
415
|
+
return anno;
|
|
416
|
+
}
|
|
417
|
+
else if (t == "string") {
|
|
418
|
+
return "";
|
|
419
|
+
}
|
|
420
|
+
else if (t == "string[]") {
|
|
421
|
+
return anno;
|
|
422
|
+
}
|
|
423
|
+
else if (t == "fk") {
|
|
424
|
+
return "";
|
|
425
|
+
}
|
|
426
|
+
else if (t == "fk[]") {
|
|
427
|
+
return anno;
|
|
428
|
+
}
|
|
429
|
+
else if (t == "any") {
|
|
430
|
+
console.log(f);
|
|
431
|
+
throw new Error(`invalid type ${f.name}:<${f.rawType} => any>`);
|
|
432
|
+
}
|
|
433
|
+
else if (t == "key") {
|
|
434
|
+
return "string";
|
|
435
|
+
}
|
|
436
|
+
else {
|
|
437
|
+
throw new Error(`invalid type ${f.name}:<${f.rawType} => unkown>`);
|
|
438
|
+
}
|
|
439
|
+
return t;
|
|
440
|
+
};
|
|
441
|
+
exports.getFieldAnnotation = getFieldAnnotation;
|
|
442
|
+
let getCustomFieldTypeAnnotation = function (f) {
|
|
443
|
+
let anno = '[MarshalAs(UnmanagedType.ByValArray, SizeConst = 0)]';
|
|
444
|
+
let t = f.type;
|
|
445
|
+
if (t == "string") {
|
|
446
|
+
if (f.rawType.endsWith("[]")) {
|
|
447
|
+
return anno;
|
|
448
|
+
}
|
|
449
|
+
return "";
|
|
450
|
+
}
|
|
451
|
+
else if (t == "any") {
|
|
452
|
+
console.log(f);
|
|
453
|
+
throw new Error(`invalid type ${f.name}:<${f.rawType} => any>`);
|
|
454
|
+
}
|
|
455
|
+
else if (t == "key") {
|
|
456
|
+
return "string";
|
|
457
|
+
}
|
|
458
|
+
else {
|
|
459
|
+
throw new Error(`invalid type ${f.name}:<${f.rawType} => unkown>`);
|
|
460
|
+
}
|
|
461
|
+
return t;
|
|
462
|
+
};
|
|
463
|
+
exports.getCustomFieldTypeAnnotation = getCustomFieldTypeAnnotation;
|
|
464
|
+
let getFkFieldType = function (tables, field) {
|
|
465
|
+
return tables.find(a => a.name == field.fkTableName).fields.find(a => a.name == field.fkFieldName).type;
|
|
466
|
+
};
|
|
467
|
+
exports.getFkFieldType = getFkFieldType;
|
|
468
|
+
const genValue = (value, f) => {
|
|
469
|
+
return ConvValue2Literal(value, f.type, f);
|
|
470
|
+
};
|
|
471
|
+
exports.genValue = genValue;
|
|
472
|
+
const getTitle = (v) => {
|
|
473
|
+
return v.describe.split("\n")[0];
|
|
474
|
+
};
|
|
475
|
+
exports.getTitle = getTitle;
|
|
476
|
+
const getDescripts = (v) => {
|
|
477
|
+
return v.describe.split("\n");
|
|
478
|
+
};
|
|
479
|
+
exports.getDescripts = getDescripts;
|
|
480
|
+
const convTupleArrayType = (f) => {
|
|
481
|
+
let line0 = f.rawType.replaceAll(/(?<=[^\w])(number)(?=[^\w]|$)/g, "double").replaceAll(/(?<=[^\w])(boolean)(?=[^\w]|$)/g, "bool");
|
|
482
|
+
let m = line0.match(/\@\((\w+),(\w+)\)(\[\])?/);
|
|
483
|
+
if (m != null) {
|
|
484
|
+
let type1 = m[1];
|
|
485
|
+
let type2 = m[2];
|
|
486
|
+
let isArray = m[3] != null;
|
|
487
|
+
let type = `WritableValueTuple<${type1}, ${type2}>${isArray ? "[]" : ""}`;
|
|
488
|
+
let name = `${(0, exports.convMemberName)(f.name)}Obj`;
|
|
489
|
+
let f2 = { ...f, type, name };
|
|
490
|
+
return f2;
|
|
491
|
+
}
|
|
492
|
+
else {
|
|
493
|
+
return undefined;
|
|
494
|
+
}
|
|
495
|
+
};
|
|
496
|
+
exports.convTupleArrayType = convTupleArrayType;
|
|
497
|
+
const convTupleArrayTypeDefine = (f) => {
|
|
498
|
+
let line0 = f.rawType.replaceAll(/(?<=[^\w])(number)(?=[^\w]|$)/g, "double").replaceAll(/(?<=[^\w])(boolean)(?=[^\w]|$)/g, "bool");
|
|
499
|
+
let m = line0.match(/\@\((\w+),(\w+)\)(\[\])?/);
|
|
500
|
+
if (m != null) {
|
|
501
|
+
let type1 = m[1];
|
|
502
|
+
let type2 = m[2];
|
|
503
|
+
let isArray = m[3] != null;
|
|
504
|
+
let line = `public WritableValueTuple<${type1}, ${type2}>${isArray ? "[]" : ""} ${(0, exports.convMemberName)(f.name)}Obj;`;
|
|
505
|
+
return line;
|
|
506
|
+
}
|
|
507
|
+
else {
|
|
508
|
+
return `public ${line0} ${(0, exports.convMemberName)(f.name)}Obj;`;
|
|
509
|
+
}
|
|
510
|
+
};
|
|
511
|
+
exports.convTupleArrayTypeDefine = convTupleArrayTypeDefine;
|
|
512
|
+
function GetUsingJsonToolNamespace() {
|
|
513
|
+
let jsonToolNamespaceIndex = process.argv.findIndex(v => v == "--AssetToolNamespace");
|
|
514
|
+
let jsonToolNamespace = null;
|
|
515
|
+
if (jsonToolNamespaceIndex >= 0 && process.argv.length > jsonToolNamespaceIndex + 1) {
|
|
516
|
+
jsonToolNamespace = process.argv[jsonToolNamespaceIndex + 1];
|
|
517
|
+
}
|
|
518
|
+
let useJsonToolNamesapce = jsonToolNamespace != null ? `using ${jsonToolNamespace};` : ``;
|
|
519
|
+
return useJsonToolNamesapce;
|
|
520
|
+
}
|
|
521
|
+
exports.isEnableMMP = process.argv.findIndex(v => v == "--EnableMMPB") >= 0;
|
|
522
|
+
exports.useMMPNamespace = "using LoadTableMMP.Runtime;";
|
|
523
|
+
function outputFileSync(savePath, content1, options) {
|
|
524
|
+
if (fs.existsSync(savePath)) {
|
|
525
|
+
let content = fs.readFileSync(savePath, options);
|
|
526
|
+
if (content != content1) {
|
|
527
|
+
fs.outputFileSync(savePath, content1, options);
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
else {
|
|
531
|
+
fs.outputFileSync(savePath, content1, options);
|
|
532
|
+
}
|
|
533
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export declare class FieldInfo {
|
|
2
|
+
name: string;
|
|
3
|
+
isArray: boolean;
|
|
4
|
+
type: string;
|
|
5
|
+
csName: string;
|
|
6
|
+
csType: string;
|
|
7
|
+
setName(n: string): void;
|
|
8
|
+
setType(t: string, isArray: boolean): void;
|
|
9
|
+
getFieldType(): string;
|
|
10
|
+
}
|
|
11
|
+
export declare class ClassInfo {
|
|
12
|
+
name: string;
|
|
13
|
+
type: "class" | "enum";
|
|
14
|
+
fields: FieldInfo[];
|
|
15
|
+
getFieldInfo(fieldName: string): FieldInfo | undefined;
|
|
16
|
+
}
|
|
17
|
+
export declare class CSProtoParser {
|
|
18
|
+
typeMap: Map<string, ClassInfo>;
|
|
19
|
+
parseProtoFile(filePath: string): void;
|
|
20
|
+
getClassInfo(className: string): ClassInfo | undefined;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=CSProtoParser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CSProtoParser.d.ts","sourceRoot":"","sources":["../src/CSProtoParser.ts"],"names":[],"mappings":"AAUA,qBAAa,SAAS;IAClB,IAAI,EAAE,MAAM,CAAK;IACjB,OAAO,EAAE,OAAO,CAAQ;IACxB,IAAI,EAAE,MAAM,CAAK;IACjB,MAAM,EAAE,MAAM,CAAK;IACnB,MAAM,EAAE,MAAM,CAAK;IAEnB,OAAO,CAAC,CAAC,EAAE,MAAM;IAOjB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;IAYnC,YAAY;CAGf;AAED,qBAAa,SAAS;IAClB,IAAI,EAAE,MAAM,CAAK;IACjB,IAAI,EAAE,OAAO,GAAG,MAAM,CAAU;IAChC,MAAM,EAAE,SAAS,EAAE,CAAK;IAExB,YAAY,CAAC,SAAS,EAAE,MAAM;CAIjC;AAED,qBAAa,aAAa;IACtB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAa;IAC5C,cAAc,CAAC,QAAQ,EAAE,MAAM;IA+E/B,YAAY,CAAC,SAAS,EAAE,MAAM;CAGjC"}
|