@memberjunction/integration-schema-builder 5.28.0 → 5.30.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.
- package/dist/TypeMapper.d.ts.map +1 -1
- package/dist/TypeMapper.js +49 -10
- package/dist/TypeMapper.js.map +1 -1
- package/package.json +5 -5
package/dist/TypeMapper.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TypeMapper.d.ts","sourceRoot":"","sources":["../src/TypeMapper.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAiB3F;;GAEG;AACH,qBAAa,UAAU;IACnB;;OAEG;IACH,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,KAAK,EAAE,eAAe,GAAG,MAAM;IAa7F;;OAEG;IACH,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAM1C;;OAEG;IACH,cAAc,IAAI,aAAa,CAAC,gBAAgB,CAAC;IAIjD,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,iBAAiB;
|
|
1
|
+
{"version":3,"file":"TypeMapper.d.ts","sourceRoot":"","sources":["../src/TypeMapper.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAiB3F;;GAEG;AACH,qBAAa,UAAU;IACnB;;OAEG;IACH,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,KAAK,EAAE,eAAe,GAAG,MAAM;IAa7F;;OAEG;IACH,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAM1C;;OAEG;IACH,cAAc,IAAI,aAAa,CAAC,gBAAgB,CAAC;IAIjD,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,iBAAiB;IA8BzB,OAAO,CAAC,qBAAqB;CA0BhC"}
|
package/dist/TypeMapper.js
CHANGED
|
@@ -53,19 +53,58 @@ export class TypeMapper {
|
|
|
53
53
|
return baseType;
|
|
54
54
|
}
|
|
55
55
|
ApplyStringLength(baseType, field, platform) {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
56
|
+
// Sources like Salesforce under-report string lengths in their describe
|
|
57
|
+
// output — we've seen real data exceed the declared MaxLength (e.g.
|
|
58
|
+
// EmailTemplate.Name declared 80, actual value 83). Since MJ is a
|
|
59
|
+
// read-mirror and data loss is worse than a slightly larger column,
|
|
60
|
+
// apply a conservative floor and headroom:
|
|
61
|
+
// - min NVARCHAR(255) for anything declared < 255
|
|
62
|
+
// - 1.25× headroom on declared lengths 255..1000
|
|
63
|
+
// - switch to NVARCHAR(MAX) for anything over ~4000 (SQL Server limit)
|
|
64
|
+
const MIN_LENGTH = 255;
|
|
65
|
+
const HEADROOM_THRESHOLD = 1000;
|
|
66
|
+
const SQL_SERVER_MAX_FIXED_LENGTH = 4000;
|
|
67
|
+
const declared = field.MaxLength != null && field.MaxLength > 0 ? field.MaxLength : MIN_LENGTH;
|
|
68
|
+
let effective;
|
|
69
|
+
if (declared <= MIN_LENGTH) {
|
|
70
|
+
effective = MIN_LENGTH;
|
|
62
71
|
}
|
|
63
|
-
|
|
64
|
-
|
|
72
|
+
else if (declared <= HEADROOM_THRESHOLD) {
|
|
73
|
+
effective = Math.ceil(declared * 1.25);
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
effective = declared;
|
|
77
|
+
}
|
|
78
|
+
if (platform === 'sqlserver' && effective > SQL_SERVER_MAX_FIXED_LENGTH) {
|
|
79
|
+
return 'NVARCHAR(MAX)';
|
|
80
|
+
}
|
|
81
|
+
return `${baseType}(${effective})`;
|
|
65
82
|
}
|
|
66
83
|
ApplyDecimalPrecision(baseType, field) {
|
|
67
|
-
|
|
68
|
-
|
|
84
|
+
// Defensive bounds: SF's describe output for formula fields and some
|
|
85
|
+
// system columns reports narrow precision (e.g. 5,0) that overflows
|
|
86
|
+
// when real values land. Observed in the wild on Opportunity.Amount:
|
|
87
|
+
// "Arithmetic overflow error converting int to data type numeric."
|
|
88
|
+
// Also seen on currency/formula fields that report DECIMAL(18,2) but
|
|
89
|
+
// carry values > 10^16 (e.g. aggregated lifetime value across large
|
|
90
|
+
// orgs). Philosophy: this is a read-mirror — we'd rather over-allocate
|
|
91
|
+
// a few bytes per column than drop a sync with an arithmetic overflow.
|
|
92
|
+
//
|
|
93
|
+
// So we floor precision at 28 (allows values up to 10^26, comfortable
|
|
94
|
+
// for any real-world currency or count) and cap at SQL Server's hard
|
|
95
|
+
// limit of 38. Scale is bounded to precision and normalized to >= 0.
|
|
96
|
+
const MIN_PRECISION = 28;
|
|
97
|
+
const MAX_PRECISION = 38;
|
|
98
|
+
let precision = field.Precision ?? MIN_PRECISION;
|
|
99
|
+
let scale = field.Scale ?? 2;
|
|
100
|
+
if (scale < 0)
|
|
101
|
+
scale = 0;
|
|
102
|
+
if (precision < MIN_PRECISION)
|
|
103
|
+
precision = MIN_PRECISION;
|
|
104
|
+
if (precision > MAX_PRECISION)
|
|
105
|
+
precision = MAX_PRECISION;
|
|
106
|
+
if (scale > precision)
|
|
107
|
+
scale = precision;
|
|
69
108
|
return `${baseType}(${precision},${scale})`;
|
|
70
109
|
}
|
|
71
110
|
}
|
package/dist/TypeMapper.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TypeMapper.js","sourceRoot":"","sources":["../src/TypeMapper.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"TypeMapper.js","sourceRoot":"","sources":["../src/TypeMapper.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@memberjunction/integration-schema-builder",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "5.
|
|
4
|
+
"version": "5.30.0",
|
|
5
5
|
"description": "MemberJunction Integration Schema Builder - file-emission-only DDL generation for integration tables",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
@@ -14,10 +14,10 @@
|
|
|
14
14
|
"test:watch": "vitest"
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@memberjunction/core": "5.
|
|
18
|
-
"@memberjunction/global": "5.
|
|
19
|
-
"@memberjunction/integration-engine": "5.
|
|
20
|
-
"@memberjunction/schema-engine": "5.
|
|
17
|
+
"@memberjunction/core": "5.30.0",
|
|
18
|
+
"@memberjunction/global": "5.30.0",
|
|
19
|
+
"@memberjunction/integration-engine": "5.30.0",
|
|
20
|
+
"@memberjunction/schema-engine": "5.30.0"
|
|
21
21
|
},
|
|
22
22
|
"devDependencies": {
|
|
23
23
|
"typescript": "^5.9.3",
|