@open-captable-protocol/canton 0.2.178 → 0.2.180
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/functions/OpenCapTable/stockPlan/createStockPlan.d.ts.map +1 -1
- package/dist/functions/OpenCapTable/stockPlan/createStockPlan.js +5 -6
- package/dist/functions/OpenCapTable/stockPlan/createStockPlan.js.map +1 -1
- package/dist/utils/deprecatedFieldNormalization.d.ts +219 -0
- package/dist/utils/deprecatedFieldNormalization.d.ts.map +1 -0
- package/dist/utils/deprecatedFieldNormalization.js +244 -0
- package/dist/utils/deprecatedFieldNormalization.js.map +1 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/ocfComparison.d.ts +72 -1
- package/dist/utils/ocfComparison.d.ts.map +1 -1
- package/dist/utils/ocfComparison.js +174 -37
- package/dist/utils/ocfComparison.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createStockPlan.d.ts","sourceRoot":"","sources":["../../../../src/functions/OpenCapTable/stockPlan/createStockPlan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,0CAA0C,CAAC;AAEzE,OAAO,KAAK,EAAE,YAAY,EAAiC,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"createStockPlan.d.ts","sourceRoot":"","sources":["../../../../src/functions/OpenCapTable/stockPlan/createStockPlan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,0CAA0C,CAAC;AAEzE,OAAO,KAAK,EAAE,YAAY,EAAiC,MAAM,gBAAgB,CAAC;AAyBlF,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,gBAAgB,CA0BzG"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.stockPlanDataToDaml = stockPlanDataToDaml;
|
|
4
4
|
const errors_1 = require("../../../errors");
|
|
5
|
+
const deprecatedFieldNormalization_1 = require("../../../utils/deprecatedFieldNormalization");
|
|
5
6
|
const typeConversions_1 = require("../../../utils/typeConversions");
|
|
6
7
|
function cancellationBehaviorToDaml(b) {
|
|
7
8
|
if (!b)
|
|
@@ -26,11 +27,9 @@ function stockPlanDataToDaml(d) {
|
|
|
26
27
|
receivedValue: d.id,
|
|
27
28
|
});
|
|
28
29
|
}
|
|
29
|
-
//
|
|
30
|
-
// Cast to allow for deprecated field
|
|
31
|
-
const
|
|
32
|
-
const currentIds = data.stock_class_ids ?? [];
|
|
33
|
-
const stockClassIds = currentIds.length > 0 ? currentIds : data.stock_class_id ? [data.stock_class_id] : [];
|
|
30
|
+
// Normalize deprecated stock_class_id → stock_class_ids using centralized helper
|
|
31
|
+
// Cast to allow for deprecated field which may be present in older OCF data
|
|
32
|
+
const { stock_class_ids } = (0, deprecatedFieldNormalization_1.normalizeDeprecatedStockPlanFields)(d, 'stockPlan.create');
|
|
34
33
|
return {
|
|
35
34
|
id: d.id,
|
|
36
35
|
plan_name: d.plan_name,
|
|
@@ -38,7 +37,7 @@ function stockPlanDataToDaml(d) {
|
|
|
38
37
|
stockholder_approval_date: d.stockholder_approval_date ? (0, typeConversions_1.dateStringToDAMLTime)(d.stockholder_approval_date) : null,
|
|
39
38
|
initial_shares_reserved: typeof d.initial_shares_reserved === 'number' ? d.initial_shares_reserved.toString() : d.initial_shares_reserved,
|
|
40
39
|
default_cancellation_behavior: cancellationBehaviorToDaml(d.default_cancellation_behavior),
|
|
41
|
-
stock_class_ids
|
|
40
|
+
stock_class_ids,
|
|
42
41
|
comments: (0, typeConversions_1.cleanComments)(d.comments),
|
|
43
42
|
};
|
|
44
43
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createStockPlan.js","sourceRoot":"","sources":["../../../../src/functions/OpenCapTable/stockPlan/createStockPlan.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"createStockPlan.js","sourceRoot":"","sources":["../../../../src/functions/OpenCapTable/stockPlan/createStockPlan.ts"],"names":[],"mappings":";;AA2BA,kDA0BC;AApDD,4CAAqD;AAErD,8FAGqD;AACrD,oEAAqF;AAErF,SAAS,0BAA0B,CACjC,CAA4C;IAE5C,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpB,QAAQ,CAAC,EAAE,CAAC;QACV,KAAK,QAAQ;YACX,OAAO,qBAAqB,CAAC;QAC/B,KAAK,gBAAgB;YACnB,OAAO,2BAA2B,CAAC;QACrC,KAAK,uBAAuB;YAC1B,OAAO,iCAAiC,CAAC;QAC3C,KAAK,2BAA2B;YAC9B,OAAO,qCAAqC,CAAC;QAC/C;YACE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACrD,CAAC;AACH,CAAC;AAED,SAAgB,mBAAmB,CAAC,CAAe;IACjD,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACV,MAAM,IAAI,2BAAkB,CAAC,cAAc,EAAE,oCAAoC,EAAE;YACjF,YAAY,EAAE,QAAQ;YACtB,aAAa,EAAE,CAAC,CAAC,EAAE;SACpB,CAAC,CAAC;IACL,CAAC;IAED,iFAAiF;IACjF,4EAA4E;IAC5E,MAAM,EAAE,eAAe,EAAE,GAAG,IAAA,iEAAkC,EAC5D,CAAqC,EACrC,kBAAkB,CACnB,CAAC;IAEF,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,mBAAmB,EAAE,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAA,sCAAoB,EAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,IAAI;QAC/F,yBAAyB,EAAE,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,IAAA,sCAAoB,EAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,IAAI;QACjH,uBAAuB,EACrB,OAAO,CAAC,CAAC,uBAAuB,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,uBAAuB;QAClH,6BAA6B,EAAE,0BAA0B,CAAC,CAAC,CAAC,6BAA6B,CAAC;QAC1F,eAAe;QACf,QAAQ,EAAE,IAAA,+BAAa,EAAC,CAAC,CAAC,QAAQ,CAAC;KACpC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utilities for normalizing deprecated OCF fields to their current equivalents.
|
|
3
|
+
*
|
|
4
|
+
* OCF schema evolves over time, and some fields are deprecated in favor of new ones.
|
|
5
|
+
* These utilities provide type-safe normalization and verification helpers.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import { normalizeSingularToArray, normalizeDeprecatedStockPlanFields } from './deprecatedFieldNormalization';
|
|
10
|
+
*
|
|
11
|
+
* // Generic singular → array normalization
|
|
12
|
+
* const stockClassIds = normalizeSingularToArray({
|
|
13
|
+
* singularValue: data.stock_class_id,
|
|
14
|
+
* arrayValue: data.stock_class_ids,
|
|
15
|
+
* });
|
|
16
|
+
*
|
|
17
|
+
* // Stock plan specific helper
|
|
18
|
+
* const normalized = normalizeDeprecatedStockPlanFields(inputData);
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
/**
|
|
22
|
+
* Configuration for deprecation warnings.
|
|
23
|
+
* Can be customized for testing or production environments.
|
|
24
|
+
*/
|
|
25
|
+
export interface DeprecationWarningConfig {
|
|
26
|
+
/** Whether to emit console warnings for deprecated field usage (default: true in development) */
|
|
27
|
+
enabled: boolean;
|
|
28
|
+
/** Custom warning handler (default: console.warn) */
|
|
29
|
+
handler?: (message: string, details: DeprecationDetails) => void;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Details about a deprecated field usage.
|
|
33
|
+
*/
|
|
34
|
+
export interface DeprecationDetails {
|
|
35
|
+
/** Name of the deprecated field */
|
|
36
|
+
deprecatedField: string;
|
|
37
|
+
/** Name of the replacement field */
|
|
38
|
+
replacementField: string;
|
|
39
|
+
/** The deprecated value that was provided */
|
|
40
|
+
deprecatedValue: unknown;
|
|
41
|
+
/** Context about where the deprecation occurred */
|
|
42
|
+
context?: string;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Global deprecation warning configuration.
|
|
46
|
+
* Can be modified for testing or to customize warning behavior.
|
|
47
|
+
*/
|
|
48
|
+
export declare const deprecationWarningConfig: DeprecationWarningConfig;
|
|
49
|
+
/**
|
|
50
|
+
* Emit a deprecation warning.
|
|
51
|
+
*
|
|
52
|
+
* @param details - Details about the deprecated field usage
|
|
53
|
+
*/
|
|
54
|
+
export declare function emitDeprecationWarning(details: DeprecationDetails): void;
|
|
55
|
+
/**
|
|
56
|
+
* Parameters for normalizing a singular deprecated field to an array field.
|
|
57
|
+
*/
|
|
58
|
+
export interface SingularToArrayParams<T> {
|
|
59
|
+
/** The deprecated singular value (may be undefined) */
|
|
60
|
+
singularValue: T | undefined;
|
|
61
|
+
/** The current array value (may be undefined or empty) */
|
|
62
|
+
arrayValue: T[] | undefined;
|
|
63
|
+
/** Name of the deprecated field (for warnings) */
|
|
64
|
+
deprecatedFieldName?: string;
|
|
65
|
+
/** Name of the replacement field (for warnings) */
|
|
66
|
+
replacementFieldName?: string;
|
|
67
|
+
/** Context for the warning message */
|
|
68
|
+
context?: string;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Normalize a deprecated singular field to an array field.
|
|
72
|
+
*
|
|
73
|
+
* When both singular and array values are provided, the array takes precedence.
|
|
74
|
+
* If the array is empty/undefined but singular has a value, wraps it in an array.
|
|
75
|
+
*
|
|
76
|
+
* @param params - Parameters for the normalization
|
|
77
|
+
* @returns The normalized array value (empty array if both inputs are empty/undefined)
|
|
78
|
+
*
|
|
79
|
+
* @example
|
|
80
|
+
* ```typescript
|
|
81
|
+
* // Only deprecated field provided
|
|
82
|
+
* normalizeSingularToArray({
|
|
83
|
+
* singularValue: 'class-1',
|
|
84
|
+
* arrayValue: undefined,
|
|
85
|
+
* }); // Returns ['class-1']
|
|
86
|
+
*
|
|
87
|
+
* // Both provided - array takes precedence
|
|
88
|
+
* normalizeSingularToArray({
|
|
89
|
+
* singularValue: 'class-1',
|
|
90
|
+
* arrayValue: ['class-2', 'class-3'],
|
|
91
|
+
* }); // Returns ['class-2', 'class-3']
|
|
92
|
+
*
|
|
93
|
+
* // Neither provided
|
|
94
|
+
* normalizeSingularToArray({
|
|
95
|
+
* singularValue: undefined,
|
|
96
|
+
* arrayValue: undefined,
|
|
97
|
+
* }); // Returns []
|
|
98
|
+
* ```
|
|
99
|
+
*/
|
|
100
|
+
export declare function normalizeSingularToArray<T>(params: SingularToArrayParams<T>): T[];
|
|
101
|
+
/**
|
|
102
|
+
* Input type that may contain deprecated stock_class_id field.
|
|
103
|
+
* This matches OCF data that may come from older schemas.
|
|
104
|
+
*
|
|
105
|
+
* Note: Fields can be null (not just undefined) when parsing JSON data from external sources.
|
|
106
|
+
*/
|
|
107
|
+
export interface StockPlanDataWithDeprecatedField {
|
|
108
|
+
/** The current array field for stock class associations */
|
|
109
|
+
stock_class_ids?: string[] | null;
|
|
110
|
+
/** @deprecated Use stock_class_ids instead. Deprecated field from older OCF versions. */
|
|
111
|
+
stock_class_id?: string | null;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Result of normalizing deprecated stock plan fields.
|
|
115
|
+
*/
|
|
116
|
+
export interface NormalizedStockPlanFields {
|
|
117
|
+
/** Normalized array of stock class IDs */
|
|
118
|
+
stock_class_ids: string[];
|
|
119
|
+
/** Whether a deprecated field was used */
|
|
120
|
+
usedDeprecatedField: boolean;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Normalize deprecated stock plan fields.
|
|
124
|
+
*
|
|
125
|
+
* Handles the OCF deprecation of `stock_class_id` (singular) → `stock_class_ids` (array).
|
|
126
|
+
*
|
|
127
|
+
* @param data - Stock plan data that may contain deprecated fields
|
|
128
|
+
* @param context - Optional context for deprecation warnings (e.g., "stockPlan.create")
|
|
129
|
+
* @returns Object containing normalized stock_class_ids and deprecation usage flag
|
|
130
|
+
*
|
|
131
|
+
* @example
|
|
132
|
+
* ```typescript
|
|
133
|
+
* // Old format (deprecated)
|
|
134
|
+
* const result = normalizeDeprecatedStockPlanFields({
|
|
135
|
+
* stock_class_id: 'sc-1',
|
|
136
|
+
* });
|
|
137
|
+
* // Returns { stock_class_ids: ['sc-1'], usedDeprecatedField: true }
|
|
138
|
+
*
|
|
139
|
+
* // New format
|
|
140
|
+
* const result = normalizeDeprecatedStockPlanFields({
|
|
141
|
+
* stock_class_ids: ['sc-1', 'sc-2'],
|
|
142
|
+
* });
|
|
143
|
+
* // Returns { stock_class_ids: ['sc-1', 'sc-2'], usedDeprecatedField: false }
|
|
144
|
+
* ```
|
|
145
|
+
*/
|
|
146
|
+
export declare function normalizeDeprecatedStockPlanFields(data: StockPlanDataWithDeprecatedField, context?: string): NormalizedStockPlanFields;
|
|
147
|
+
/**
|
|
148
|
+
* Result of checking for deprecated field usage.
|
|
149
|
+
*/
|
|
150
|
+
export interface DeprecatedFieldUsageResult {
|
|
151
|
+
/** Whether any deprecated fields were detected */
|
|
152
|
+
hasDeprecatedFields: boolean;
|
|
153
|
+
/** List of deprecated fields that were used */
|
|
154
|
+
deprecatedFieldsUsed: string[];
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Check stock plan data for deprecated field usage without modifying the data.
|
|
158
|
+
*
|
|
159
|
+
* @param data - Stock plan data to check
|
|
160
|
+
* @returns Result indicating whether deprecated fields were used
|
|
161
|
+
*
|
|
162
|
+
* @example
|
|
163
|
+
* ```typescript
|
|
164
|
+
* const result = checkStockPlanDeprecatedFieldUsage({
|
|
165
|
+
* stock_class_id: 'sc-1', // deprecated
|
|
166
|
+
* });
|
|
167
|
+
* // Returns { hasDeprecatedFields: true, deprecatedFieldsUsed: ['stock_class_id'] }
|
|
168
|
+
* ```
|
|
169
|
+
*/
|
|
170
|
+
export declare function checkStockPlanDeprecatedFieldUsage(data: StockPlanDataWithDeprecatedField): DeprecatedFieldUsageResult;
|
|
171
|
+
/**
|
|
172
|
+
* Configuration for a deprecated field mapping.
|
|
173
|
+
*/
|
|
174
|
+
export interface DeprecatedFieldMapping {
|
|
175
|
+
/** The deprecated field name */
|
|
176
|
+
deprecatedField: string;
|
|
177
|
+
/** The replacement field name */
|
|
178
|
+
replacementField: string;
|
|
179
|
+
/** The type of deprecation (singular_to_array, renamed, etc.) */
|
|
180
|
+
deprecationType: 'singular_to_array' | 'renamed' | 'removed';
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Known OCF deprecated field mappings.
|
|
184
|
+
* Add new deprecations here as they are discovered.
|
|
185
|
+
*/
|
|
186
|
+
export declare const OCF_DEPRECATED_FIELDS: Record<string, DeprecatedFieldMapping[]>;
|
|
187
|
+
/**
|
|
188
|
+
* Get the list of deprecated field mappings for an OCF object type.
|
|
189
|
+
*
|
|
190
|
+
* @param objectType - The OCF object type name (e.g., 'StockPlan')
|
|
191
|
+
* @returns Array of deprecated field mappings for the object type
|
|
192
|
+
*/
|
|
193
|
+
export declare function getDeprecatedFieldMappings(objectType: string): DeprecatedFieldMapping[];
|
|
194
|
+
/**
|
|
195
|
+
* Check if a specific field is deprecated for an OCF object type.
|
|
196
|
+
*
|
|
197
|
+
* @param objectType - The OCF object type name
|
|
198
|
+
* @param fieldName - The field name to check
|
|
199
|
+
* @returns The deprecation mapping if the field is deprecated, undefined otherwise
|
|
200
|
+
*/
|
|
201
|
+
export declare function getFieldDeprecation(objectType: string, fieldName: string): DeprecatedFieldMapping | undefined;
|
|
202
|
+
/**
|
|
203
|
+
* Check an object for any deprecated field usage based on known deprecations.
|
|
204
|
+
*
|
|
205
|
+
* @param objectType - The OCF object type name
|
|
206
|
+
* @param data - The object data to check
|
|
207
|
+
* @returns Result indicating which deprecated fields were used
|
|
208
|
+
*
|
|
209
|
+
* @example
|
|
210
|
+
* ```typescript
|
|
211
|
+
* const result = checkDeprecatedFields('StockPlan', {
|
|
212
|
+
* stock_class_id: 'sc-1', // deprecated
|
|
213
|
+
* plan_name: 'Equity Plan',
|
|
214
|
+
* });
|
|
215
|
+
* // Returns { hasDeprecatedFields: true, deprecatedFieldsUsed: ['stock_class_id'] }
|
|
216
|
+
* ```
|
|
217
|
+
*/
|
|
218
|
+
export declare function checkDeprecatedFields(objectType: string, data: Record<string, unknown>): DeprecatedFieldUsageResult;
|
|
219
|
+
//# sourceMappingURL=deprecatedFieldNormalization.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deprecatedFieldNormalization.d.ts","sourceRoot":"","sources":["../../src/utils/deprecatedFieldNormalization.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Utilities for normalizing deprecated OCF fields to their current equivalents.
|
|
4
|
+
*
|
|
5
|
+
* OCF schema evolves over time, and some fields are deprecated in favor of new ones.
|
|
6
|
+
* These utilities provide type-safe normalization and verification helpers.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* import { normalizeSingularToArray, normalizeDeprecatedStockPlanFields } from './deprecatedFieldNormalization';
|
|
11
|
+
*
|
|
12
|
+
* // Generic singular → array normalization
|
|
13
|
+
* const stockClassIds = normalizeSingularToArray({
|
|
14
|
+
* singularValue: data.stock_class_id,
|
|
15
|
+
* arrayValue: data.stock_class_ids,
|
|
16
|
+
* });
|
|
17
|
+
*
|
|
18
|
+
* // Stock plan specific helper
|
|
19
|
+
* const normalized = normalizeDeprecatedStockPlanFields(inputData);
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
+
exports.OCF_DEPRECATED_FIELDS = exports.deprecationWarningConfig = void 0;
|
|
24
|
+
exports.emitDeprecationWarning = emitDeprecationWarning;
|
|
25
|
+
exports.normalizeSingularToArray = normalizeSingularToArray;
|
|
26
|
+
exports.normalizeDeprecatedStockPlanFields = normalizeDeprecatedStockPlanFields;
|
|
27
|
+
exports.checkStockPlanDeprecatedFieldUsage = checkStockPlanDeprecatedFieldUsage;
|
|
28
|
+
exports.getDeprecatedFieldMappings = getDeprecatedFieldMappings;
|
|
29
|
+
exports.getFieldDeprecation = getFieldDeprecation;
|
|
30
|
+
exports.checkDeprecatedFields = checkDeprecatedFields;
|
|
31
|
+
/**
|
|
32
|
+
* Global deprecation warning configuration.
|
|
33
|
+
* Can be modified for testing or to customize warning behavior.
|
|
34
|
+
*/
|
|
35
|
+
exports.deprecationWarningConfig = {
|
|
36
|
+
enabled: process.env.NODE_ENV !== 'test',
|
|
37
|
+
handler: undefined,
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Emit a deprecation warning.
|
|
41
|
+
*
|
|
42
|
+
* @param details - Details about the deprecated field usage
|
|
43
|
+
*/
|
|
44
|
+
function emitDeprecationWarning(details) {
|
|
45
|
+
if (!exports.deprecationWarningConfig.enabled) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
const message = `[OCF Deprecation] Field '${details.deprecatedField}' is deprecated. ` +
|
|
49
|
+
`Use '${details.replacementField}' instead.${details.context ? ` Context: ${details.context}` : ''}`;
|
|
50
|
+
if (exports.deprecationWarningConfig.handler) {
|
|
51
|
+
exports.deprecationWarningConfig.handler(message, details);
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
// eslint-disable-next-line no-console -- Intentional deprecation warning to help developers migrate to current API
|
|
55
|
+
console.warn(message);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Normalize a deprecated singular field to an array field.
|
|
60
|
+
*
|
|
61
|
+
* When both singular and array values are provided, the array takes precedence.
|
|
62
|
+
* If the array is empty/undefined but singular has a value, wraps it in an array.
|
|
63
|
+
*
|
|
64
|
+
* @param params - Parameters for the normalization
|
|
65
|
+
* @returns The normalized array value (empty array if both inputs are empty/undefined)
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* ```typescript
|
|
69
|
+
* // Only deprecated field provided
|
|
70
|
+
* normalizeSingularToArray({
|
|
71
|
+
* singularValue: 'class-1',
|
|
72
|
+
* arrayValue: undefined,
|
|
73
|
+
* }); // Returns ['class-1']
|
|
74
|
+
*
|
|
75
|
+
* // Both provided - array takes precedence
|
|
76
|
+
* normalizeSingularToArray({
|
|
77
|
+
* singularValue: 'class-1',
|
|
78
|
+
* arrayValue: ['class-2', 'class-3'],
|
|
79
|
+
* }); // Returns ['class-2', 'class-3']
|
|
80
|
+
*
|
|
81
|
+
* // Neither provided
|
|
82
|
+
* normalizeSingularToArray({
|
|
83
|
+
* singularValue: undefined,
|
|
84
|
+
* arrayValue: undefined,
|
|
85
|
+
* }); // Returns []
|
|
86
|
+
* ```
|
|
87
|
+
*/
|
|
88
|
+
function normalizeSingularToArray(params) {
|
|
89
|
+
const { singularValue, arrayValue, deprecatedFieldName, replacementFieldName, context } = params;
|
|
90
|
+
// If array has values, use it (ignoring deprecated singular)
|
|
91
|
+
if (Array.isArray(arrayValue) && arrayValue.length > 0) {
|
|
92
|
+
return arrayValue;
|
|
93
|
+
}
|
|
94
|
+
// If singular value exists, convert to array and emit warning
|
|
95
|
+
// Also exclude empty strings to match original truthy-check behavior
|
|
96
|
+
if (singularValue !== undefined && singularValue !== null && singularValue !== '') {
|
|
97
|
+
if (deprecatedFieldName && replacementFieldName) {
|
|
98
|
+
emitDeprecationWarning({
|
|
99
|
+
deprecatedField: deprecatedFieldName,
|
|
100
|
+
replacementField: replacementFieldName,
|
|
101
|
+
deprecatedValue: singularValue,
|
|
102
|
+
context,
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
return [singularValue];
|
|
106
|
+
}
|
|
107
|
+
// Neither provided - return empty array
|
|
108
|
+
return [];
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Normalize deprecated stock plan fields.
|
|
112
|
+
*
|
|
113
|
+
* Handles the OCF deprecation of `stock_class_id` (singular) → `stock_class_ids` (array).
|
|
114
|
+
*
|
|
115
|
+
* @param data - Stock plan data that may contain deprecated fields
|
|
116
|
+
* @param context - Optional context for deprecation warnings (e.g., "stockPlan.create")
|
|
117
|
+
* @returns Object containing normalized stock_class_ids and deprecation usage flag
|
|
118
|
+
*
|
|
119
|
+
* @example
|
|
120
|
+
* ```typescript
|
|
121
|
+
* // Old format (deprecated)
|
|
122
|
+
* const result = normalizeDeprecatedStockPlanFields({
|
|
123
|
+
* stock_class_id: 'sc-1',
|
|
124
|
+
* });
|
|
125
|
+
* // Returns { stock_class_ids: ['sc-1'], usedDeprecatedField: true }
|
|
126
|
+
*
|
|
127
|
+
* // New format
|
|
128
|
+
* const result = normalizeDeprecatedStockPlanFields({
|
|
129
|
+
* stock_class_ids: ['sc-1', 'sc-2'],
|
|
130
|
+
* });
|
|
131
|
+
* // Returns { stock_class_ids: ['sc-1', 'sc-2'], usedDeprecatedField: false }
|
|
132
|
+
* ```
|
|
133
|
+
*/
|
|
134
|
+
function normalizeDeprecatedStockPlanFields(data, context) {
|
|
135
|
+
// Also exclude empty strings to match original truthy-check behavior
|
|
136
|
+
const hasDeprecatedField = data.stock_class_id !== undefined && data.stock_class_id !== null && data.stock_class_id !== '';
|
|
137
|
+
const hasCurrentField = Array.isArray(data.stock_class_ids) && data.stock_class_ids.length > 0;
|
|
138
|
+
// Only count as using deprecated field if deprecated is present and current is not
|
|
139
|
+
const usedDeprecatedField = hasDeprecatedField && !hasCurrentField;
|
|
140
|
+
// Normalize null to undefined for the generic function, then filter results
|
|
141
|
+
const singularValue = data.stock_class_id ?? undefined;
|
|
142
|
+
const arrayValue = data.stock_class_ids ?? undefined;
|
|
143
|
+
const stock_class_ids = normalizeSingularToArray({
|
|
144
|
+
singularValue,
|
|
145
|
+
arrayValue,
|
|
146
|
+
deprecatedFieldName: 'stock_class_id',
|
|
147
|
+
replacementFieldName: 'stock_class_ids',
|
|
148
|
+
context: context ?? 'StockPlan',
|
|
149
|
+
});
|
|
150
|
+
return {
|
|
151
|
+
stock_class_ids,
|
|
152
|
+
usedDeprecatedField,
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Check stock plan data for deprecated field usage without modifying the data.
|
|
157
|
+
*
|
|
158
|
+
* @param data - Stock plan data to check
|
|
159
|
+
* @returns Result indicating whether deprecated fields were used
|
|
160
|
+
*
|
|
161
|
+
* @example
|
|
162
|
+
* ```typescript
|
|
163
|
+
* const result = checkStockPlanDeprecatedFieldUsage({
|
|
164
|
+
* stock_class_id: 'sc-1', // deprecated
|
|
165
|
+
* });
|
|
166
|
+
* // Returns { hasDeprecatedFields: true, deprecatedFieldsUsed: ['stock_class_id'] }
|
|
167
|
+
* ```
|
|
168
|
+
*/
|
|
169
|
+
function checkStockPlanDeprecatedFieldUsage(data) {
|
|
170
|
+
const deprecatedFieldsUsed = [];
|
|
171
|
+
// Check for deprecated stock_class_id field (exclude empty strings to match original truthy-check behavior)
|
|
172
|
+
if (data.stock_class_id !== undefined && data.stock_class_id !== null && data.stock_class_id !== '') {
|
|
173
|
+
deprecatedFieldsUsed.push('stock_class_id');
|
|
174
|
+
}
|
|
175
|
+
return {
|
|
176
|
+
hasDeprecatedFields: deprecatedFieldsUsed.length > 0,
|
|
177
|
+
deprecatedFieldsUsed,
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Known OCF deprecated field mappings.
|
|
182
|
+
* Add new deprecations here as they are discovered.
|
|
183
|
+
*/
|
|
184
|
+
exports.OCF_DEPRECATED_FIELDS = {
|
|
185
|
+
StockPlan: [
|
|
186
|
+
{
|
|
187
|
+
deprecatedField: 'stock_class_id',
|
|
188
|
+
replacementField: 'stock_class_ids',
|
|
189
|
+
deprecationType: 'singular_to_array',
|
|
190
|
+
},
|
|
191
|
+
],
|
|
192
|
+
};
|
|
193
|
+
/**
|
|
194
|
+
* Get the list of deprecated field mappings for an OCF object type.
|
|
195
|
+
*
|
|
196
|
+
* @param objectType - The OCF object type name (e.g., 'StockPlan')
|
|
197
|
+
* @returns Array of deprecated field mappings for the object type
|
|
198
|
+
*/
|
|
199
|
+
function getDeprecatedFieldMappings(objectType) {
|
|
200
|
+
return exports.OCF_DEPRECATED_FIELDS[objectType] ?? [];
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Check if a specific field is deprecated for an OCF object type.
|
|
204
|
+
*
|
|
205
|
+
* @param objectType - The OCF object type name
|
|
206
|
+
* @param fieldName - The field name to check
|
|
207
|
+
* @returns The deprecation mapping if the field is deprecated, undefined otherwise
|
|
208
|
+
*/
|
|
209
|
+
function getFieldDeprecation(objectType, fieldName) {
|
|
210
|
+
const mappings = getDeprecatedFieldMappings(objectType);
|
|
211
|
+
return mappings.find((m) => m.deprecatedField === fieldName);
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Check an object for any deprecated field usage based on known deprecations.
|
|
215
|
+
*
|
|
216
|
+
* @param objectType - The OCF object type name
|
|
217
|
+
* @param data - The object data to check
|
|
218
|
+
* @returns Result indicating which deprecated fields were used
|
|
219
|
+
*
|
|
220
|
+
* @example
|
|
221
|
+
* ```typescript
|
|
222
|
+
* const result = checkDeprecatedFields('StockPlan', {
|
|
223
|
+
* stock_class_id: 'sc-1', // deprecated
|
|
224
|
+
* plan_name: 'Equity Plan',
|
|
225
|
+
* });
|
|
226
|
+
* // Returns { hasDeprecatedFields: true, deprecatedFieldsUsed: ['stock_class_id'] }
|
|
227
|
+
* ```
|
|
228
|
+
*/
|
|
229
|
+
function checkDeprecatedFields(objectType, data) {
|
|
230
|
+
const mappings = getDeprecatedFieldMappings(objectType);
|
|
231
|
+
const deprecatedFieldsUsed = [];
|
|
232
|
+
for (const mapping of mappings) {
|
|
233
|
+
const value = data[mapping.deprecatedField];
|
|
234
|
+
// Also exclude empty strings to match original truthy-check behavior
|
|
235
|
+
if (value !== undefined && value !== null && value !== '') {
|
|
236
|
+
deprecatedFieldsUsed.push(mapping.deprecatedField);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
return {
|
|
240
|
+
hasDeprecatedFields: deprecatedFieldsUsed.length > 0,
|
|
241
|
+
deprecatedFieldsUsed,
|
|
242
|
+
};
|
|
243
|
+
}
|
|
244
|
+
//# sourceMappingURL=deprecatedFieldNormalization.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deprecatedFieldNormalization.js","sourceRoot":"","sources":["../../src/utils/deprecatedFieldNormalization.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC"}
|
package/dist/utils/index.js
CHANGED
|
@@ -14,6 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./deprecatedFieldNormalization"), exports);
|
|
17
18
|
__exportStar(require("./enumConversions"), exports);
|
|
18
19
|
__exportStar(require("./ocfComparison"), exports);
|
|
19
20
|
__exportStar(require("./ocfHelpers"), exports);
|
package/dist/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,kDAAgC;AAChC,+CAA6B;AAC7B,gDAA8B;AAC9B,uDAAqC;AACrC,oDAAkC;AAClC,+CAA6B;AAC7B,+CAA6B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iEAA+C;AAC/C,oDAAkC;AAClC,kDAAgC;AAChC,+CAA6B;AAC7B,gDAA8B;AAC9B,uDAAqC;AACrC,oDAAkC;AAClC,+CAA6B;AAC7B,+CAA6B"}
|
|
@@ -6,6 +6,46 @@
|
|
|
6
6
|
*
|
|
7
7
|
* @module ocfComparison
|
|
8
8
|
*/
|
|
9
|
+
/**
|
|
10
|
+
* Default internal fields added by the database/SDK that should be ignored during comparison.
|
|
11
|
+
* These are not part of the OCF specification.
|
|
12
|
+
*/
|
|
13
|
+
export declare const DEFAULT_INTERNAL_FIELDS: readonly ["__v", "_id", "_source", "issuer", "tx_hash", "createdAt", "updatedAt", "is_onchain_synced", "vestings"];
|
|
14
|
+
/**
|
|
15
|
+
* Deprecated OCF fields that may differ between source and round-tripped data.
|
|
16
|
+
* These fields may be upgraded or removed during processing.
|
|
17
|
+
*/
|
|
18
|
+
export declare const DEFAULT_DEPRECATED_FIELDS: readonly ["option_grant_type"];
|
|
19
|
+
/**
|
|
20
|
+
* Options for OCF comparison.
|
|
21
|
+
*/
|
|
22
|
+
export interface OcfComparisonOptions {
|
|
23
|
+
/**
|
|
24
|
+
* Fields to ignore during comparison. Defaults to empty array (compare all fields).
|
|
25
|
+
* Use DEFAULT_INTERNAL_FIELDS to ignore internal database/SDK fields.
|
|
26
|
+
*/
|
|
27
|
+
ignoredFields?: readonly string[];
|
|
28
|
+
/**
|
|
29
|
+
* Deprecated fields that may differ between source and destination.
|
|
30
|
+
* Defaults to empty array (compare all fields).
|
|
31
|
+
* Use DEFAULT_DEPRECATED_FIELDS to ignore deprecated OCF fields.
|
|
32
|
+
*/
|
|
33
|
+
deprecatedFields?: readonly string[];
|
|
34
|
+
/**
|
|
35
|
+
* Whether to report differences for debugging. When true, differences are logged to console.
|
|
36
|
+
* Default: false
|
|
37
|
+
*/
|
|
38
|
+
reportDifferences?: boolean;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Result of an OCF comparison with details about any differences found.
|
|
42
|
+
*/
|
|
43
|
+
export interface OcfComparisonResult {
|
|
44
|
+
/** Whether the objects are semantically equal. */
|
|
45
|
+
equal: boolean;
|
|
46
|
+
/** List of paths where differences were found. */
|
|
47
|
+
differences: string[];
|
|
48
|
+
}
|
|
9
49
|
/**
|
|
10
50
|
* Deep equality comparison for OCF objects with normalization.
|
|
11
51
|
*
|
|
@@ -15,10 +55,41 @@
|
|
|
15
55
|
* - Treats empty arrays/objects as equivalent to undefined
|
|
16
56
|
* - Trims string whitespace
|
|
17
57
|
* - Recursively compares nested objects
|
|
58
|
+
* - Optionally ignores internal/deprecated fields
|
|
18
59
|
*
|
|
19
60
|
* @param a - First OCF object
|
|
20
61
|
* @param b - Second OCF object
|
|
62
|
+
* @param options - Comparison options
|
|
21
63
|
* @returns True if objects are semantically equal
|
|
22
64
|
*/
|
|
23
|
-
export declare function ocfDeepEqual(a: unknown, b: unknown): boolean;
|
|
65
|
+
export declare function ocfDeepEqual(a: unknown, b: unknown, options?: OcfComparisonOptions): boolean;
|
|
66
|
+
/**
|
|
67
|
+
* Compare two OCF objects and return detailed results.
|
|
68
|
+
*
|
|
69
|
+
* @param a - First OCF object (typically the source/expected value)
|
|
70
|
+
* @param b - Second OCF object (typically the result/actual value)
|
|
71
|
+
* @param options - Comparison options
|
|
72
|
+
* @returns Comparison result with equality status and list of differences
|
|
73
|
+
*
|
|
74
|
+
* @example
|
|
75
|
+
* ```typescript
|
|
76
|
+
* const result = ocfCompare(sourceFixture, readBackData, {
|
|
77
|
+
* ignoredFields: DEFAULT_INTERNAL_FIELDS,
|
|
78
|
+
* reportDifferences: true
|
|
79
|
+
* });
|
|
80
|
+
*
|
|
81
|
+
* if (!result.equal) {
|
|
82
|
+
* console.log('Differences found:', result.differences);
|
|
83
|
+
* }
|
|
84
|
+
* ```
|
|
85
|
+
*/
|
|
86
|
+
export declare function ocfCompare(a: unknown, b: unknown, options?: OcfComparisonOptions): OcfComparisonResult;
|
|
87
|
+
/**
|
|
88
|
+
* Strip internal and deprecated fields from an OCF object for cleaner comparison.
|
|
89
|
+
*
|
|
90
|
+
* @param obj - The OCF object to clean
|
|
91
|
+
* @param fieldsToRemove - Fields to remove (defaults to DEFAULT_INTERNAL_FIELDS + DEFAULT_DEPRECATED_FIELDS)
|
|
92
|
+
* @returns A new object with the specified fields removed
|
|
93
|
+
*/
|
|
94
|
+
export declare function stripInternalFields<T extends Record<string, unknown>>(obj: T, fieldsToRemove?: readonly string[]): Partial<T>;
|
|
24
95
|
//# sourceMappingURL=ocfComparison.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ocfComparison.d.ts","sourceRoot":"","sources":["../../src/utils/ocfComparison.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"ocfComparison.d.ts","sourceRoot":"","sources":["../../src/utils/ocfComparison.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;GAGG;AACH,eAAO,MAAM,uBAAuB,oHAU1B,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,yBAAyB,gCAE5B,CAAC;AAEX;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAElC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAErC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,kDAAkD;IAClD,KAAK,EAAE,OAAO,CAAC;IACf,kDAAkD;IAClD,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AA8FD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAG5F;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,mBAAmB,CA4GtG;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnE,GAAG,EAAE,CAAC,EACN,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,GACjC,OAAO,CAAC,CAAC,CAAC,CA6BZ"}
|
|
@@ -8,7 +8,32 @@
|
|
|
8
8
|
* @module ocfComparison
|
|
9
9
|
*/
|
|
10
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.DEFAULT_DEPRECATED_FIELDS = exports.DEFAULT_INTERNAL_FIELDS = void 0;
|
|
11
12
|
exports.ocfDeepEqual = ocfDeepEqual;
|
|
13
|
+
exports.ocfCompare = ocfCompare;
|
|
14
|
+
exports.stripInternalFields = stripInternalFields;
|
|
15
|
+
/**
|
|
16
|
+
* Default internal fields added by the database/SDK that should be ignored during comparison.
|
|
17
|
+
* These are not part of the OCF specification.
|
|
18
|
+
*/
|
|
19
|
+
exports.DEFAULT_INTERNAL_FIELDS = [
|
|
20
|
+
'__v', // MongoDB version key
|
|
21
|
+
'_id', // MongoDB document ID
|
|
22
|
+
'_source', // Fixture source marker
|
|
23
|
+
'issuer', // Internal issuer reference
|
|
24
|
+
'tx_hash', // Blockchain transaction hash
|
|
25
|
+
'createdAt', // Database timestamp
|
|
26
|
+
'updatedAt', // Database timestamp
|
|
27
|
+
'is_onchain_synced', // Sync status flag
|
|
28
|
+
'vestings', // Computed vesting schedule (derived data)
|
|
29
|
+
];
|
|
30
|
+
/**
|
|
31
|
+
* Deprecated OCF fields that may differ between source and round-tripped data.
|
|
32
|
+
* These fields may be upgraded or removed during processing.
|
|
33
|
+
*/
|
|
34
|
+
exports.DEFAULT_DEPRECATED_FIELDS = [
|
|
35
|
+
'option_grant_type', // Deprecated in favor of compensation_type
|
|
36
|
+
];
|
|
12
37
|
/**
|
|
13
38
|
* Normalize a value for OCF comparison.
|
|
14
39
|
*
|
|
@@ -111,50 +136,162 @@ function isUndefinedLike(value) {
|
|
|
111
136
|
* - Treats empty arrays/objects as equivalent to undefined
|
|
112
137
|
* - Trims string whitespace
|
|
113
138
|
* - Recursively compares nested objects
|
|
139
|
+
* - Optionally ignores internal/deprecated fields
|
|
114
140
|
*
|
|
115
141
|
* @param a - First OCF object
|
|
116
142
|
* @param b - Second OCF object
|
|
143
|
+
* @param options - Comparison options
|
|
117
144
|
* @returns True if objects are semantically equal
|
|
118
145
|
*/
|
|
119
|
-
function ocfDeepEqual(a, b) {
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
146
|
+
function ocfDeepEqual(a, b, options) {
|
|
147
|
+
const result = ocfCompare(a, b, options);
|
|
148
|
+
return result.equal;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Compare two OCF objects and return detailed results.
|
|
152
|
+
*
|
|
153
|
+
* @param a - First OCF object (typically the source/expected value)
|
|
154
|
+
* @param b - Second OCF object (typically the result/actual value)
|
|
155
|
+
* @param options - Comparison options
|
|
156
|
+
* @returns Comparison result with equality status and list of differences
|
|
157
|
+
*
|
|
158
|
+
* @example
|
|
159
|
+
* ```typescript
|
|
160
|
+
* const result = ocfCompare(sourceFixture, readBackData, {
|
|
161
|
+
* ignoredFields: DEFAULT_INTERNAL_FIELDS,
|
|
162
|
+
* reportDifferences: true
|
|
163
|
+
* });
|
|
164
|
+
*
|
|
165
|
+
* if (!result.equal) {
|
|
166
|
+
* console.log('Differences found:', result.differences);
|
|
167
|
+
* }
|
|
168
|
+
* ```
|
|
169
|
+
*/
|
|
170
|
+
function ocfCompare(a, b, options) {
|
|
171
|
+
const ignoredFields = new Set(options?.ignoredFields ?? []);
|
|
172
|
+
const deprecatedFields = new Set(options?.deprecatedFields ?? []);
|
|
173
|
+
const allIgnored = new Set([...ignoredFields, ...deprecatedFields]);
|
|
174
|
+
const reportDifferences = options?.reportDifferences ?? false;
|
|
175
|
+
const differences = [];
|
|
176
|
+
function compare(valA, valB, path) {
|
|
177
|
+
// Consider empty arrays equivalent to undefined
|
|
178
|
+
if (isUndefinedLike(valA) && isUndefinedLike(valB))
|
|
179
|
+
return true;
|
|
180
|
+
// Handle null/undefined
|
|
181
|
+
if (valA === valB)
|
|
182
|
+
return true;
|
|
183
|
+
if (valA == null || valB == null) {
|
|
184
|
+
differences.push(`${path}: ${JSON.stringify(valA)} !== ${JSON.stringify(valB)}`);
|
|
185
|
+
return false;
|
|
186
|
+
}
|
|
187
|
+
// Handle different types
|
|
188
|
+
if (typeof valA !== typeof valB) {
|
|
189
|
+
differences.push(`${path}: type mismatch (${typeof valA} vs ${typeof valB})`);
|
|
190
|
+
return false;
|
|
191
|
+
}
|
|
192
|
+
// Handle objects and arrays
|
|
193
|
+
if (typeof valA === 'object' && typeof valB === 'object') {
|
|
194
|
+
const objA = valA;
|
|
195
|
+
const objB = valB;
|
|
196
|
+
// Handle arrays
|
|
197
|
+
if (Array.isArray(valA) && Array.isArray(valB)) {
|
|
198
|
+
if (valA.length !== valB.length) {
|
|
199
|
+
// Check if difference is just undefined-like elements
|
|
200
|
+
const filteredA = valA.filter((v) => !isUndefinedLike(v));
|
|
201
|
+
const filteredB = valB.filter((v) => !isUndefinedLike(v));
|
|
202
|
+
if (filteredA.length !== filteredB.length) {
|
|
203
|
+
differences.push(`${path}: array length mismatch (${valA.length} vs ${valB.length})`);
|
|
204
|
+
return false;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
let allMatch = true;
|
|
208
|
+
const maxLen = Math.max(valA.length, valB.length);
|
|
209
|
+
for (let i = 0; i < maxLen; i++) {
|
|
210
|
+
if (!compare(valA[i], valB[i], `${path}[${i}]`)) {
|
|
211
|
+
allMatch = false;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
return allMatch;
|
|
215
|
+
}
|
|
216
|
+
// Get all keys, excluding ignored fields
|
|
217
|
+
const keysA = Object.keys(objA).filter((k) => !allIgnored.has(k));
|
|
218
|
+
const keysB = Object.keys(objB).filter((k) => !allIgnored.has(k));
|
|
219
|
+
const allKeys = Array.from(new Set([...keysA, ...keysB]));
|
|
220
|
+
let allMatch = true;
|
|
221
|
+
// Check if all keys match
|
|
222
|
+
for (const key of allKeys) {
|
|
223
|
+
const childValA = objA[key];
|
|
224
|
+
const childValB = objB[key];
|
|
225
|
+
const childPath = path ? `${path}.${key}` : key;
|
|
226
|
+
// Treat empty arrays as undefined-like and skip if both are undefined-like
|
|
227
|
+
if (isUndefinedLike(childValA) && isUndefinedLike(childValB))
|
|
228
|
+
continue;
|
|
229
|
+
// If one is undefined-like and the other isn't, they don't match
|
|
230
|
+
if (isUndefinedLike(childValA) !== isUndefinedLike(childValB)) {
|
|
231
|
+
differences.push(`${childPath}: one side is empty/undefined`);
|
|
232
|
+
allMatch = false;
|
|
233
|
+
continue;
|
|
234
|
+
}
|
|
235
|
+
// Recursively compare values
|
|
236
|
+
if (!compare(childValA, childValB, childPath)) {
|
|
237
|
+
allMatch = false;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
return allMatch;
|
|
241
|
+
}
|
|
242
|
+
// Handle primitive values with normalization
|
|
243
|
+
const normalizedA = normalizeOcfValue(valA);
|
|
244
|
+
const normalizedB = normalizeOcfValue(valB);
|
|
245
|
+
if (normalizedA !== normalizedB) {
|
|
246
|
+
differences.push(`${path}: ${JSON.stringify(valA)} !== ${JSON.stringify(valB)}`);
|
|
247
|
+
return false;
|
|
152
248
|
}
|
|
153
249
|
return true;
|
|
154
250
|
}
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
251
|
+
const equal = compare(a, b, '');
|
|
252
|
+
if (reportDifferences && differences.length > 0) {
|
|
253
|
+
// eslint-disable-next-line no-console
|
|
254
|
+
console.log('OCF comparison differences:');
|
|
255
|
+
for (const diff of differences) {
|
|
256
|
+
// eslint-disable-next-line no-console
|
|
257
|
+
console.log(` - ${diff}`);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
return { equal, differences };
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Strip internal and deprecated fields from an OCF object for cleaner comparison.
|
|
264
|
+
*
|
|
265
|
+
* @param obj - The OCF object to clean
|
|
266
|
+
* @param fieldsToRemove - Fields to remove (defaults to DEFAULT_INTERNAL_FIELDS + DEFAULT_DEPRECATED_FIELDS)
|
|
267
|
+
* @returns A new object with the specified fields removed
|
|
268
|
+
*/
|
|
269
|
+
function stripInternalFields(obj, fieldsToRemove) {
|
|
270
|
+
const toRemove = new Set(fieldsToRemove ?? [...exports.DEFAULT_INTERNAL_FIELDS, ...exports.DEFAULT_DEPRECATED_FIELDS]);
|
|
271
|
+
// Helper to process array items (handles nested arrays recursively)
|
|
272
|
+
const processArrayItem = (item) => {
|
|
273
|
+
if (!item || typeof item !== 'object') {
|
|
274
|
+
return item;
|
|
275
|
+
}
|
|
276
|
+
if (Array.isArray(item)) {
|
|
277
|
+
return item.map(processArrayItem);
|
|
278
|
+
}
|
|
279
|
+
return stripInternalFields(item, fieldsToRemove);
|
|
280
|
+
};
|
|
281
|
+
const result = {};
|
|
282
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
283
|
+
if (toRemove.has(key))
|
|
284
|
+
continue;
|
|
285
|
+
if (value && typeof value === 'object' && !Array.isArray(value)) {
|
|
286
|
+
result[key] = stripInternalFields(value, fieldsToRemove);
|
|
287
|
+
}
|
|
288
|
+
else if (Array.isArray(value)) {
|
|
289
|
+
result[key] = value.map(processArrayItem);
|
|
290
|
+
}
|
|
291
|
+
else {
|
|
292
|
+
result[key] = value;
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
return result;
|
|
159
296
|
}
|
|
160
297
|
//# sourceMappingURL=ocfComparison.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ocfComparison.js","sourceRoot":"","sources":["../../src/utils/ocfComparison.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG
|
|
1
|
+
{"version":3,"file":"ocfComparison.js","sourceRoot":"","sources":["../../src/utils/ocfComparison.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@open-captable-protocol/canton",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.180",
|
|
4
4
|
"description": "A TypeScript SDK for interacting with the Open CapTable Protocol (OCP) Factory contract on Canton blockchain",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"main": "dist/index.js",
|