@genesislcap/event-type-codegen 15.17.0 → 15.17.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/kotlin-parse-utils.d.ts +2 -1
- package/dist/kotlin-parse-utils.d.ts.map +1 -1
- package/dist/kotlin-parse-utils.js +10 -4
- package/dist/kotlin-parse-utils.js.map +1 -1
- package/dist/naming.d.ts +9 -0
- package/dist/naming.d.ts.map +1 -1
- package/dist/naming.js +49 -2
- package/dist/naming.js.map +1 -1
- package/dist/parse-kotlin.d.ts.map +1 -1
- package/dist/parse-kotlin.js +5 -4
- package/dist/parse-kotlin.js.map +1 -1
- package/package.json +3 -3
- package/src/kotlin-parse-utils.ts +17 -7
- package/src/naming.ts +58 -2
- package/src/parse-kotlin.ts +5 -4
- package/test/fixtures/client-out/genesis-event-types.ts +1 -1
- package/test/fixtures/golden/genesis-event-types.ts +1 -1
- package/test/kotlin-parse-utils.test.ts +42 -0
- package/test/naming.test.ts +49 -0
|
@@ -14,7 +14,8 @@ export type ParseKotlinPropertyOptions = {
|
|
|
14
14
|
};
|
|
15
15
|
/**
|
|
16
16
|
* Parse a Kotlin constructor / data-class property segment into a wire-facing property.
|
|
17
|
-
* Accepts optional public modifier
|
|
17
|
+
* Accepts optional public modifier, use-site-stripped annotations, and backtick-escaped
|
|
18
|
+
* reserved identifiers (e.g. `value` → value → wire VALUE).
|
|
18
19
|
*/
|
|
19
20
|
export declare const parseKotlinProperty: (segment: string, options?: ParseKotlinPropertyOptions) => KotlinProperty | null;
|
|
20
21
|
//# sourceMappingURL=kotlin-parse-utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kotlin-parse-utils.d.ts","sourceRoot":"","sources":["../src/kotlin-parse-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,kFAAkF;AAClF,eAAO,MAAM,mBAAmB,GAAI,SAAS,MAAM,KAAG,MACa,CAAC;AAEpE;;;GAGG;AACH,eAAO,MAAM,sBAAsB,GAAI,SAAS,MAAM,KAAG,MAI9C,CAAC;AAEZ,2FAA2F;AAC3F,eAAO,MAAM,iBAAiB,GAAI,MAAM,MAAM,KAAG,MAAM,EAgBtD,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,gFAAgF;IAChF,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;
|
|
1
|
+
{"version":3,"file":"kotlin-parse-utils.d.ts","sourceRoot":"","sources":["../src/kotlin-parse-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,kFAAkF;AAClF,eAAO,MAAM,mBAAmB,GAAI,SAAS,MAAM,KAAG,MACa,CAAC;AAEpE;;;GAGG;AACH,eAAO,MAAM,sBAAsB,GAAI,SAAS,MAAM,KAAG,MAI9C,CAAC;AAEZ,2FAA2F;AAC3F,eAAO,MAAM,iBAAiB,GAAI,MAAM,MAAM,KAAG,MAAM,EAgBtD,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,gFAAgF;IAChF,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAcF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAC9B,SAAS,MAAM,EACf,UAAS,0BAA+B,KACvC,cAAc,GAAG,IAcnB,CAAC"}
|
|
@@ -35,17 +35,23 @@ const splitTopLevelArgs = (body) => {
|
|
|
35
35
|
return parts;
|
|
36
36
|
};
|
|
37
37
|
exports.splitTopLevelArgs = splitTopLevelArgs;
|
|
38
|
+
/** Plain or backtick-escaped Kotlin identifier (`value` for reserved words). */
|
|
39
|
+
const KOTLIN_IDENT = '(?:\\w+|`[^`]+`)';
|
|
40
|
+
const PROPERTY_REGEX = new RegExp(`^(?:public\\s+)?(?:val|var)\\s+(${KOTLIN_IDENT})\\s*:\\s*([^=]+?)(?:\\s*=\\s*.+)?$`);
|
|
41
|
+
const BARE_PROPERTY_REGEX = new RegExp(`^(${KOTLIN_IDENT})\\s*:\\s*([^=]+?)(?:\\s*=\\s*.+)?$`);
|
|
42
|
+
const stripBackticks = (ident) => ident.startsWith('`') && ident.endsWith('`') ? ident.slice(1, -1) : ident;
|
|
38
43
|
/**
|
|
39
44
|
* Parse a Kotlin constructor / data-class property segment into a wire-facing property.
|
|
40
|
-
* Accepts optional public modifier
|
|
45
|
+
* Accepts optional public modifier, use-site-stripped annotations, and backtick-escaped
|
|
46
|
+
* reserved identifiers (e.g. `value` → value → wire VALUE).
|
|
41
47
|
*/
|
|
42
48
|
const parseKotlinProperty = (segment, options = {}) => {
|
|
43
49
|
const cleaned = (0, exports.stripKotlinAnnotations)(segment);
|
|
44
|
-
const propertyMatch = cleaned.match(
|
|
45
|
-
const match = propertyMatch !== null && propertyMatch !== void 0 ? propertyMatch : (options.allowBareParams ? cleaned.match(
|
|
50
|
+
const propertyMatch = cleaned.match(PROPERTY_REGEX);
|
|
51
|
+
const match = propertyMatch !== null && propertyMatch !== void 0 ? propertyMatch : (options.allowBareParams ? cleaned.match(BARE_PROPERTY_REGEX) : null);
|
|
46
52
|
if (!match)
|
|
47
53
|
return null;
|
|
48
|
-
const name = match[1];
|
|
54
|
+
const name = stripBackticks(match[1]);
|
|
49
55
|
let kotlinType = match[2].trim();
|
|
50
56
|
const optional = kotlinType.endsWith('?') || cleaned.includes('=');
|
|
51
57
|
kotlinType = kotlinType.replace(/\?$/, '').trim();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kotlin-parse-utils.js","sourceRoot":"","sources":["../src/kotlin-parse-utils.ts"],"names":[],"mappings":";;;AAEA,kFAAkF;AAC3E,MAAM,mBAAmB,GAAG,CAAC,OAAe,EAAU,EAAE,CAC7D,OAAO,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AADvD,QAAA,mBAAmB,uBACoC;AAEpE;;;GAGG;AACI,MAAM,sBAAsB,GAAG,CAAC,OAAe,EAAU,EAAE,CAChE,OAAO;KACJ,OAAO,CAAC,4DAA4D,EAAE,GAAG,CAAC;KAC1E,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;KACpB,IAAI,EAAE,CAAC;AAJC,QAAA,sBAAsB,0BAIvB;AAEZ,2FAA2F;AACpF,MAAM,iBAAiB,GAAG,CAAC,IAAY,EAAY,EAAE;IAC1D,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,KAAK,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC;QACtB,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG;YAAE,KAAK,IAAI,CAAC,CAAC;QACvD,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG;YAAE,KAAK,IAAI,CAAC,CAAC;QACvD,IAAI,EAAE,KAAK,GAAG,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAC9B,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YAC3B,OAAO,GAAG,EAAE,CAAC;YACb,SAAS;QACX,CAAC;QACD,OAAO,IAAI,EAAE,CAAC;IAChB,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,EAAE;QAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAC/C,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAhBW,QAAA,iBAAiB,qBAgB5B;AAOF
|
|
1
|
+
{"version":3,"file":"kotlin-parse-utils.js","sourceRoot":"","sources":["../src/kotlin-parse-utils.ts"],"names":[],"mappings":"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"}
|
package/dist/naming.d.ts
CHANGED
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert camelCase / PascalCase to UPPER_UNDERSCORE, inserting `_` before digits and
|
|
3
|
+
* splitting acronyms the same way as genesis-server `toUpperUnderscoreWithAcronyms`.
|
|
4
|
+
*
|
|
5
|
+
* Examples: `addressLine1` → `ADDRESS_LINE_1`, `orderID` → `ORDER_ID`.
|
|
6
|
+
*
|
|
7
|
+
* @public
|
|
8
|
+
*/
|
|
9
|
+
export declare const toUpperUnderscoreWithAcronyms: (name: string) => string;
|
|
1
10
|
/** Wire field name for a Kotlin property (DETAILS uses UPPER_SNAKE_CASE). */
|
|
2
11
|
export declare const kotlinPropertyToWireField: (propertyName: string) => string;
|
|
3
12
|
/** Generated interface name for a Kotlin DTO or handler input type. */
|
package/dist/naming.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"naming.d.ts","sourceRoot":"","sources":["../src/naming.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"naming.d.ts","sourceRoot":"","sources":["../src/naming.ts"],"names":[],"mappings":"AAQA;;;;;;;GAOG;AACH,eAAO,MAAM,6BAA6B,GAAI,MAAM,MAAM,KAAG,MAwC5D,CAAC;AAEF,6EAA6E;AAC7E,eAAO,MAAM,yBAAyB,GAAI,cAAc,MAAM,KAAG,MACpB,CAAC;AAE9C,uEAAuE;AACvE,eAAO,MAAM,yBAAyB,GAAI,SAAS,MAAM,KAAG,MACC,CAAC;AAE9D,6EAA6E;AAC7E,eAAO,MAAM,kCAAkC,GAAI,WAAW,MAAM,KAAG,MAMtE,CAAC;AAEF,+EAA+E;AAC/E,eAAO,MAAM,yBAAyB,GAAI,WAAW,MAAM,KAAG,MAG7D,CAAC"}
|
package/dist/naming.js
CHANGED
|
@@ -1,9 +1,56 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.eventNameToEventClassName = exports.handlerInputToDetailsInterfaceName = exports.dtoToDetailsInterfaceName = exports.kotlinPropertyToWireField = void 0;
|
|
3
|
+
exports.eventNameToEventClassName = exports.handlerInputToDetailsInterfaceName = exports.dtoToDetailsInterfaceName = exports.kotlinPropertyToWireField = exports.toUpperUnderscoreWithAcronyms = void 0;
|
|
4
4
|
const change_case_1 = require("change-case");
|
|
5
|
+
/**
|
|
6
|
+
* Convert camelCase / PascalCase to UPPER_UNDERSCORE, inserting `_` before digits and
|
|
7
|
+
* splitting acronyms the same way as genesis-server `toUpperUnderscoreWithAcronyms`.
|
|
8
|
+
*
|
|
9
|
+
* Examples: `addressLine1` → `ADDRESS_LINE_1`, `orderID` → `ORDER_ID`.
|
|
10
|
+
*
|
|
11
|
+
* @public
|
|
12
|
+
*/
|
|
13
|
+
const toUpperUnderscoreWithAcronyms = (name) => {
|
|
14
|
+
if (!name)
|
|
15
|
+
return name;
|
|
16
|
+
// Already wire-formatted — genesis-server passes these through unchanged.
|
|
17
|
+
if (/^[A-Z0-9]+(?:_[A-Z0-9]+)*$/.test(name))
|
|
18
|
+
return name;
|
|
19
|
+
const length = name.length;
|
|
20
|
+
const result = [];
|
|
21
|
+
// Genesis seeds non-upper (including digits) as NUMBER so the first digit after
|
|
22
|
+
// letters still gets a leading underscore on subsequent chars.
|
|
23
|
+
let lastCharacterType = name[0] >= 'A' && name[0] <= 'Z' ? 'UPPERCASE' : 'NUMBER';
|
|
24
|
+
result.push(name[0].toUpperCase());
|
|
25
|
+
const isUpperOrDigit = (c) => (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9');
|
|
26
|
+
for (let i = 1; i < length; i += 1) {
|
|
27
|
+
const ch = name[i];
|
|
28
|
+
if (ch >= 'A' && ch <= 'Z') {
|
|
29
|
+
// Continue an acronym run when the next char is also upper/digit; otherwise split.
|
|
30
|
+
const continueAcronym = lastCharacterType === 'UPPERCASE' && (i + 1 >= length || isUpperOrDigit(name[i + 1]));
|
|
31
|
+
if (!continueAcronym) {
|
|
32
|
+
result.push('_');
|
|
33
|
+
}
|
|
34
|
+
result.push(ch);
|
|
35
|
+
lastCharacterType = 'UPPERCASE';
|
|
36
|
+
}
|
|
37
|
+
else if (ch >= '0' && ch <= '9') {
|
|
38
|
+
if (lastCharacterType !== 'NUMBER') {
|
|
39
|
+
result.push('_');
|
|
40
|
+
}
|
|
41
|
+
result.push(ch);
|
|
42
|
+
lastCharacterType = 'NUMBER';
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
result.push(ch.toUpperCase());
|
|
46
|
+
lastCharacterType = 'LOWERCASE';
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return result.join('');
|
|
50
|
+
};
|
|
51
|
+
exports.toUpperUnderscoreWithAcronyms = toUpperUnderscoreWithAcronyms;
|
|
5
52
|
/** Wire field name for a Kotlin property (DETAILS uses UPPER_SNAKE_CASE). */
|
|
6
|
-
const kotlinPropertyToWireField = (propertyName) => (0,
|
|
53
|
+
const kotlinPropertyToWireField = (propertyName) => (0, exports.toUpperUnderscoreWithAcronyms)(propertyName);
|
|
7
54
|
exports.kotlinPropertyToWireField = kotlinPropertyToWireField;
|
|
8
55
|
/** Generated interface name for a Kotlin DTO or handler input type. */
|
|
9
56
|
const dtoToDetailsInterfaceName = (dtoName) => dtoName.endsWith('Details') ? dtoName : `${dtoName}Details`;
|
package/dist/naming.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"naming.js","sourceRoot":"","sources":["../src/naming.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"naming.js","sourceRoot":"","sources":["../src/naming.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-kotlin.d.ts","sourceRoot":"","sources":["../src/parse-kotlin.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"parse-kotlin.d.ts","sourceRoot":"","sources":["../src/parse-kotlin.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAmBzF,QAAA,MAAM,gBAAgB,QAAsE,CAAC;AAE7F,QAAA,MAAM,kBAAkB,GAAI,SAAS,MAAM,KAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,cAAc,EAAE,CAAA;CAAE,EAkC3F,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,OAAO,MAAM,EAAE,KAAG,GAAG,CAAC,MAAM,EAAE,SAAS,CAe3E,CAAC;AAeF,eAAO,MAAM,wBAAwB,GACnC,OAAO,MAAM,EAAE,EACf,MAAM,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,KAC3B;IAAE,MAAM,EAAE,aAAa,EAAE,CAAC;IAAC,QAAQ,EAAE,eAAe,EAAE,CAAA;CAwDxD,CAAC;AAEF,eAAO,MAAM,cAAc,GACzB,YAAY,MAAM,EAClB,MAAM,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,EAC5B,QAAO,aAAyB,KAC/B,MAoBF,CAAC;AAEF,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,CAAC"}
|
package/dist/parse-kotlin.js
CHANGED
|
@@ -15,10 +15,11 @@ const PRIMITIVE_TS = {
|
|
|
15
15
|
Float: 'number',
|
|
16
16
|
Boolean: 'boolean',
|
|
17
17
|
BigDecimal: 'string',
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
18
|
+
// Genesis wire JSON_TYPE for DATE/DATETIME is integer (epoch millis).
|
|
19
|
+
DateTime: 'number',
|
|
20
|
+
Instant: 'number',
|
|
21
|
+
LocalDate: 'number',
|
|
22
|
+
LocalDateTime: 'number',
|
|
22
23
|
};
|
|
23
24
|
const DATA_CLASS_START = /^\s*(?:data\s+)?class\s+(\w+)\s*(?:\([^)]*\))?\s*(?:\([^)]*\)|\{)/;
|
|
24
25
|
exports.DATA_CLASS_START = DATA_CLASS_START;
|
package/dist/parse-kotlin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-kotlin.js","sourceRoot":"","sources":["../src/parse-kotlin.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"parse-kotlin.js","sourceRoot":"","sources":["../src/parse-kotlin.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@genesislcap/event-type-codegen",
|
|
3
3
|
"description": "Build-time TypeScript codegen from Kotlin event handler DTOs",
|
|
4
|
-
"version": "15.17.
|
|
4
|
+
"version": "15.17.1",
|
|
5
5
|
"license": "SEE LICENSE IN license.txt",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"consola": "^3.0.2"
|
|
22
22
|
},
|
|
23
23
|
"devDependencies": {
|
|
24
|
-
"@genesislcap/foundation-testing": "15.17.
|
|
24
|
+
"@genesislcap/foundation-testing": "15.17.1",
|
|
25
25
|
"@types/node": "^22.10.2",
|
|
26
26
|
"tsx": "^4.7.0",
|
|
27
27
|
"uvu": "0.5.4"
|
|
@@ -34,5 +34,5 @@
|
|
|
34
34
|
"publishConfig": {
|
|
35
35
|
"access": "public"
|
|
36
36
|
},
|
|
37
|
-
"gitHead": "
|
|
37
|
+
"gitHead": "59a30fc5ff0900ae557f20018e796f82322394e2"
|
|
38
38
|
}
|
|
@@ -38,25 +38,35 @@ export type ParseKotlinPropertyOptions = {
|
|
|
38
38
|
allowBareParams?: boolean;
|
|
39
39
|
};
|
|
40
40
|
|
|
41
|
+
/** Plain or backtick-escaped Kotlin identifier (`value` for reserved words). */
|
|
42
|
+
const KOTLIN_IDENT = '(?:\\w+|`[^`]+`)';
|
|
43
|
+
|
|
44
|
+
const PROPERTY_REGEX = new RegExp(
|
|
45
|
+
`^(?:public\\s+)?(?:val|var)\\s+(${KOTLIN_IDENT})\\s*:\\s*([^=]+?)(?:\\s*=\\s*.+)?$`,
|
|
46
|
+
);
|
|
47
|
+
|
|
48
|
+
const BARE_PROPERTY_REGEX = new RegExp(`^(${KOTLIN_IDENT})\\s*:\\s*([^=]+?)(?:\\s*=\\s*.+)?$`);
|
|
49
|
+
|
|
50
|
+
const stripBackticks = (ident: string): string =>
|
|
51
|
+
ident.startsWith('`') && ident.endsWith('`') ? ident.slice(1, -1) : ident;
|
|
52
|
+
|
|
41
53
|
/**
|
|
42
54
|
* Parse a Kotlin constructor / data-class property segment into a wire-facing property.
|
|
43
|
-
* Accepts optional public modifier
|
|
55
|
+
* Accepts optional public modifier, use-site-stripped annotations, and backtick-escaped
|
|
56
|
+
* reserved identifiers (e.g. `value` → value → wire VALUE).
|
|
44
57
|
*/
|
|
45
58
|
export const parseKotlinProperty = (
|
|
46
59
|
segment: string,
|
|
47
60
|
options: ParseKotlinPropertyOptions = {},
|
|
48
61
|
): KotlinProperty | null => {
|
|
49
62
|
const cleaned = stripKotlinAnnotations(segment);
|
|
50
|
-
const propertyMatch = cleaned.match(
|
|
51
|
-
/^(?:public\s+)?(?:val|var)\s+(\w+)\s*:\s*([^=]+?)(?:\s*=\s*.+)?$/,
|
|
52
|
-
);
|
|
63
|
+
const propertyMatch = cleaned.match(PROPERTY_REGEX);
|
|
53
64
|
const match =
|
|
54
|
-
propertyMatch ??
|
|
55
|
-
(options.allowBareParams ? cleaned.match(/^(\w+)\s*:\s*([^=]+?)(?:\s*=\s*.+)?$/) : null);
|
|
65
|
+
propertyMatch ?? (options.allowBareParams ? cleaned.match(BARE_PROPERTY_REGEX) : null);
|
|
56
66
|
|
|
57
67
|
if (!match) return null;
|
|
58
68
|
|
|
59
|
-
const name = match[1];
|
|
69
|
+
const name = stripBackticks(match[1]);
|
|
60
70
|
let kotlinType = match[2].trim();
|
|
61
71
|
const optional = kotlinType.endsWith('?') || cleaned.includes('=');
|
|
62
72
|
kotlinType = kotlinType.replace(/\?$/, '').trim();
|
package/src/naming.ts
CHANGED
|
@@ -1,8 +1,64 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { pascalCase } from 'change-case';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Character classification used by {@link toUpperUnderscoreWithAcronyms}.
|
|
5
|
+
* Mirrors genesis-server `CharType` in GenesisMessage.kt.
|
|
6
|
+
*/
|
|
7
|
+
type CharType = 'UPPERCASE' | 'LOWERCASE' | 'NUMBER';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Convert camelCase / PascalCase to UPPER_UNDERSCORE, inserting `_` before digits and
|
|
11
|
+
* splitting acronyms the same way as genesis-server `toUpperUnderscoreWithAcronyms`.
|
|
12
|
+
*
|
|
13
|
+
* Examples: `addressLine1` → `ADDRESS_LINE_1`, `orderID` → `ORDER_ID`.
|
|
14
|
+
*
|
|
15
|
+
* @public
|
|
16
|
+
*/
|
|
17
|
+
export const toUpperUnderscoreWithAcronyms = (name: string): string => {
|
|
18
|
+
if (!name) return name;
|
|
19
|
+
|
|
20
|
+
// Already wire-formatted — genesis-server passes these through unchanged.
|
|
21
|
+
if (/^[A-Z0-9]+(?:_[A-Z0-9]+)*$/.test(name)) return name;
|
|
22
|
+
|
|
23
|
+
const length = name.length;
|
|
24
|
+
const result: string[] = [];
|
|
25
|
+
// Genesis seeds non-upper (including digits) as NUMBER so the first digit after
|
|
26
|
+
// letters still gets a leading underscore on subsequent chars.
|
|
27
|
+
let lastCharacterType: CharType = name[0] >= 'A' && name[0] <= 'Z' ? 'UPPERCASE' : 'NUMBER';
|
|
28
|
+
|
|
29
|
+
result.push(name[0].toUpperCase());
|
|
30
|
+
|
|
31
|
+
const isUpperOrDigit = (c: string): boolean => (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9');
|
|
32
|
+
|
|
33
|
+
for (let i = 1; i < length; i += 1) {
|
|
34
|
+
const ch = name[i];
|
|
35
|
+
if (ch >= 'A' && ch <= 'Z') {
|
|
36
|
+
// Continue an acronym run when the next char is also upper/digit; otherwise split.
|
|
37
|
+
const continueAcronym =
|
|
38
|
+
lastCharacterType === 'UPPERCASE' && (i + 1 >= length || isUpperOrDigit(name[i + 1]));
|
|
39
|
+
if (!continueAcronym) {
|
|
40
|
+
result.push('_');
|
|
41
|
+
}
|
|
42
|
+
result.push(ch);
|
|
43
|
+
lastCharacterType = 'UPPERCASE';
|
|
44
|
+
} else if (ch >= '0' && ch <= '9') {
|
|
45
|
+
if (lastCharacterType !== 'NUMBER') {
|
|
46
|
+
result.push('_');
|
|
47
|
+
}
|
|
48
|
+
result.push(ch);
|
|
49
|
+
lastCharacterType = 'NUMBER';
|
|
50
|
+
} else {
|
|
51
|
+
result.push(ch.toUpperCase());
|
|
52
|
+
lastCharacterType = 'LOWERCASE';
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
return result.join('');
|
|
57
|
+
};
|
|
2
58
|
|
|
3
59
|
/** Wire field name for a Kotlin property (DETAILS uses UPPER_SNAKE_CASE). */
|
|
4
60
|
export const kotlinPropertyToWireField = (propertyName: string): string =>
|
|
5
|
-
|
|
61
|
+
toUpperUnderscoreWithAcronyms(propertyName);
|
|
6
62
|
|
|
7
63
|
/** Generated interface name for a Kotlin DTO or handler input type. */
|
|
8
64
|
export const dtoToDetailsInterfaceName = (dtoName: string): string =>
|
package/src/parse-kotlin.ts
CHANGED
|
@@ -16,10 +16,11 @@ const PRIMITIVE_TS: Record<string, string> = {
|
|
|
16
16
|
Float: 'number',
|
|
17
17
|
Boolean: 'boolean',
|
|
18
18
|
BigDecimal: 'string',
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
19
|
+
// Genesis wire JSON_TYPE for DATE/DATETIME is integer (epoch millis).
|
|
20
|
+
DateTime: 'number',
|
|
21
|
+
Instant: 'number',
|
|
22
|
+
LocalDate: 'number',
|
|
23
|
+
LocalDateTime: 'number',
|
|
23
24
|
};
|
|
24
25
|
|
|
25
26
|
const DATA_CLASS_START = /^\s*(?:data\s+)?class\s+(\w+)\s*(?:\([^)]*\))?\s*(?:\([^)]*\)|\{)/;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { assert, createLogicSuite } from '@genesislcap/foundation-testing';
|
|
2
|
+
|
|
3
|
+
import { parseKotlinProperty } from '../src/kotlin-parse-utils';
|
|
4
|
+
import { kotlinPropertyToWireField } from '../src/naming';
|
|
5
|
+
|
|
6
|
+
const suite = createLogicSuite('parseKotlinProperty');
|
|
7
|
+
|
|
8
|
+
suite('parses ordinary camelCase properties', () => {
|
|
9
|
+
const prop = parseKotlinProperty('public var instrumentId: String');
|
|
10
|
+
assert.ok(prop);
|
|
11
|
+
assert.equal(prop!.name, 'instrumentId');
|
|
12
|
+
assert.equal(prop!.kotlinType, 'String');
|
|
13
|
+
assert.equal(prop!.optional, false);
|
|
14
|
+
assert.equal(kotlinPropertyToWireField(prop!.name), 'INSTRUMENT_ID');
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
suite('parses backtick-escaped reserved identifiers (Position.VALUE)', () => {
|
|
18
|
+
const prop = parseKotlinProperty(
|
|
19
|
+
'@Title("Value") @GenesisType(Field.Type.DOUBLE) public var `value`: Double? = null',
|
|
20
|
+
);
|
|
21
|
+
assert.ok(prop);
|
|
22
|
+
assert.equal(prop!.name, 'value');
|
|
23
|
+
assert.equal(prop!.kotlinType, 'Double');
|
|
24
|
+
assert.equal(prop!.optional, true);
|
|
25
|
+
assert.equal(kotlinPropertyToWireField(prop!.name), 'VALUE');
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
suite('parses bare backtick params when allowBareParams is set', () => {
|
|
29
|
+
const prop = parseKotlinProperty('`object`: String? = null', { allowBareParams: true });
|
|
30
|
+
assert.ok(prop);
|
|
31
|
+
assert.equal(prop!.name, 'object');
|
|
32
|
+
assert.equal(kotlinPropertyToWireField(prop!.name), 'OBJECT');
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
suite('passes through backticked UPPER_SNAKE properties unchanged on the wire', () => {
|
|
36
|
+
const prop = parseKotlinProperty('public var `ORDER_ID`: String');
|
|
37
|
+
assert.ok(prop);
|
|
38
|
+
assert.equal(prop!.name, 'ORDER_ID');
|
|
39
|
+
assert.equal(kotlinPropertyToWireField(prop!.name), 'ORDER_ID');
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
suite.run();
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { assert, createLogicSuite } from '@genesislcap/foundation-testing';
|
|
2
|
+
|
|
3
|
+
import { kotlinPropertyToWireField, toUpperUnderscoreWithAcronyms } from '../src/naming';
|
|
4
|
+
|
|
5
|
+
const suite = createLogicSuite('toUpperUnderscoreWithAcronyms');
|
|
6
|
+
|
|
7
|
+
/** Cases mirrored from genesis-server ToUpperUnderscoreWithAcronymsTest. */
|
|
8
|
+
suite('matches genesis-server simple cases', () => {
|
|
9
|
+
assert.equal(toUpperUnderscoreWithAcronyms('orderIds'), 'ORDER_IDS');
|
|
10
|
+
assert.equal(toUpperUnderscoreWithAcronyms('orderIdsTest'), 'ORDER_IDS_TEST');
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
suite('matches genesis-server acronym cases', () => {
|
|
14
|
+
assert.equal(toUpperUnderscoreWithAcronyms('orderI'), 'ORDER_I');
|
|
15
|
+
assert.equal(toUpperUnderscoreWithAcronyms('orderID'), 'ORDER_ID');
|
|
16
|
+
assert.equal(toUpperUnderscoreWithAcronyms('orderIDS'), 'ORDER_IDS');
|
|
17
|
+
assert.equal(toUpperUnderscoreWithAcronyms('orderIa'), 'ORDER_IA');
|
|
18
|
+
assert.equal(toUpperUnderscoreWithAcronyms('orderIDNotional'), 'ORDER_ID_NOTIONAL');
|
|
19
|
+
assert.equal(toUpperUnderscoreWithAcronyms('orderIDSInstrument'), 'ORDER_IDS_INSTRUMENT');
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
suite('matches genesis-server number cases', () => {
|
|
23
|
+
assert.equal(toUpperUnderscoreWithAcronyms('order1'), 'ORDER_1');
|
|
24
|
+
assert.equal(toUpperUnderscoreWithAcronyms('order12'), 'ORDER_12');
|
|
25
|
+
assert.equal(toUpperUnderscoreWithAcronyms('order123'), 'ORDER_123');
|
|
26
|
+
assert.equal(toUpperUnderscoreWithAcronyms('order1a'), 'ORDER_1A');
|
|
27
|
+
assert.equal(toUpperUnderscoreWithAcronyms('order12a'), 'ORDER_12A');
|
|
28
|
+
assert.equal(toUpperUnderscoreWithAcronyms('order123a'), 'ORDER_123A');
|
|
29
|
+
assert.equal(toUpperUnderscoreWithAcronyms('order1A'), 'ORDER_1_A');
|
|
30
|
+
assert.equal(toUpperUnderscoreWithAcronyms('order12A'), 'ORDER_12_A');
|
|
31
|
+
assert.equal(toUpperUnderscoreWithAcronyms('order123A'), 'ORDER_123_A');
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
suite('fixes FUI-2606 field-name examples', () => {
|
|
35
|
+
assert.equal(kotlinPropertyToWireField('addressLine1'), 'ADDRESS_LINE_1');
|
|
36
|
+
assert.equal(kotlinPropertyToWireField('addressLine2'), 'ADDRESS_LINE_2');
|
|
37
|
+
assert.equal(kotlinPropertyToWireField('brokerCtmBicM2i'), 'BROKER_CTM_BIC_M_2I');
|
|
38
|
+
assert.equal(kotlinPropertyToWireField('dfaNotes1'), 'DFA_NOTES_1');
|
|
39
|
+
assert.equal(kotlinPropertyToWireField('tradeType1'), 'TRADE_TYPE_1');
|
|
40
|
+
assert.equal(kotlinPropertyToWireField('createdAt'), 'CREATED_AT');
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
suite('passes through names that are already UPPER_SNAKE', () => {
|
|
44
|
+
assert.equal(toUpperUnderscoreWithAcronyms('ORDER_ID'), 'ORDER_ID');
|
|
45
|
+
assert.equal(toUpperUnderscoreWithAcronyms('ADDRESS_LINE_1'), 'ADDRESS_LINE_1');
|
|
46
|
+
assert.equal(toUpperUnderscoreWithAcronyms('ALREADY_UPPER'), 'ALREADY_UPPER');
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
suite.run();
|