@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.
@@ -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;AA2BlF,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,gBAAgB,CAyBzG"}
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
- // Handle deprecated stock_class_id → stock_class_ids
30
- // Cast to allow for deprecated field and potentially missing stock_class_ids (when only deprecated field is provided)
31
- const data = d;
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: stockClassIds,
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":";;AA6BA,kDAyBC;AArDD,4CAAqD;AAErD,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;AAQD,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,qDAAqD;IACrD,sHAAsH;IACtH,MAAM,IAAI,GAAG,CAAgC,CAAC;IAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,IAAI,EAAE,CAAC;IAC9C,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAE5G,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,EAAE,aAAa;QAC9B,QAAQ,EAAE,IAAA,+BAAa,EAAC,CAAC,CAAC,QAAQ,CAAC;KACpC,CAAC;AACJ,CAAC"}
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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"}
@@ -1,3 +1,4 @@
1
+ export * from './deprecatedFieldNormalization';
1
2
  export * from './enumConversions';
2
3
  export * from './ocfComparison';
3
4
  export * from './ocfHelpers';
@@ -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"}
@@ -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);
@@ -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;AA8FH;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,CA4C5D"}
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
- // Consider empty arrays equivalent to undefined
121
- if (isUndefinedLike(a) && isUndefinedLike(b))
122
- return true;
123
- // Handle null/undefined
124
- if (a === b)
125
- return true;
126
- if (a == null || b == null)
127
- return false;
128
- // Handle different types
129
- if (typeof a !== typeof b)
130
- return false;
131
- // Handle objects and arrays
132
- if (typeof a === 'object' && typeof b === 'object') {
133
- const objA = a;
134
- const objB = b;
135
- // Get all keys
136
- const keysA = Object.keys(objA);
137
- const keysB = Object.keys(objB);
138
- const allKeys = Array.from(new Set([...keysA, ...keysB]));
139
- // Check if all keys match
140
- for (const key of allKeys) {
141
- const valA = objA[key];
142
- const valB = objB[key];
143
- // Treat empty arrays as undefined-like and skip if both are undefined-like
144
- if (isUndefinedLike(valA) && isUndefinedLike(valB))
145
- continue;
146
- // If one is undefined-like and the other isn't, they don't match
147
- if (isUndefinedLike(valA) !== isUndefinedLike(valB))
148
- return false;
149
- // Recursively compare values
150
- if (!ocfDeepEqual(valA, valB))
151
- return false;
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
- // Handle primitive values with normalization
156
- const normalizedA = normalizeOcfValue(a);
157
- const normalizedB = normalizeOcfValue(b);
158
- return normalizedA === normalizedB;
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":"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"}
1
+ {"version":3,"file":"ocfComparison.js","sourceRoot":"","sources":["../../src/utils/ocfComparison.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAwKH,oCAGC;AAsBD,gCA4GC;AASD,kDAgCC;AApVD;;;GAGG;AACU,QAAA,uBAAuB,GAAG;IACrC,KAAK,EAAE,sBAAsB;IAC7B,KAAK,EAAE,sBAAsB;IAC7B,SAAS,EAAE,wBAAwB;IACnC,QAAQ,EAAE,4BAA4B;IACtC,SAAS,EAAE,8BAA8B;IACzC,WAAW,EAAE,qBAAqB;IAClC,WAAW,EAAE,qBAAqB;IAClC,mBAAmB,EAAE,mBAAmB;IACxC,UAAU,EAAE,2CAA2C;CAC/C,CAAC;AAEX;;;GAGG;AACU,QAAA,yBAAyB,GAAG;IACvC,mBAAmB,EAAE,2CAA2C;CACxD,CAAC;AAoCX;;;;;;;;;;GAUG;AACH,SAAS,iBAAiB,CAAC,KAAc;IACvC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,qEAAqE;QACrE,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAE7B,0CAA0C;QAC1C,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACjC,uDAAuD;YACvD,OAAO,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACzB,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAS,eAAe,CAAC,KAAc;IACrC,oBAAoB;IACpB,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvD,2CAA2C;IAC3C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IAElE,6EAA6E;IAC7E,MAAM,gBAAgB,GAAG,CAAC,CAAU,EAAW,EAAE;QAC/C,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC9C,MAAM,GAAG,GAAG,CAA4B,CAAC;QACzC,MAAM,QAAQ,GAAG,GAAG,CAAC,uBAAuB,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,GAAG,CAAC,qBAAqB,CAAC,CAAC;QAC1C,uBAAuB;QACvB,IAAI,QAAQ,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QACjE,MAAM,aAAa,GAAG,CAAC,CAAU,EAAU,EAAE;YAC3C,IAAI,OAAO,CAAC,KAAK,QAAQ;gBAAE,OAAO,CAAC,CAAC;YACpC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAC1B,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC3B,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5B,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC,CAAC;QACF,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;QACtC,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QAClC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC;IAClE,CAAC,CAAC;IAEF,8EAA8E;IAC9E,gGAAgG;IAChG,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACpC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QACxD,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QACzD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,gFAAgF;IAChF,gFAAgF;IAChF,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,KAAgC,CAAC;QAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACnC,IAAI,gBAAgB,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACzC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,SAAgB,YAAY,CAAC,CAAU,EAAE,CAAU,EAAE,OAA8B;IACjF,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;IACzC,OAAO,MAAM,CAAC,KAAK,CAAC;AACtB,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,SAAgB,UAAU,CAAC,CAAU,EAAE,CAAU,EAAE,OAA8B;IAC/E,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,aAAa,IAAI,EAAE,CAAC,CAAC;IAC5D,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,gBAAgB,IAAI,EAAE,CAAC,CAAC;IAClE,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,aAAa,EAAE,GAAG,gBAAgB,CAAC,CAAC,CAAC;IACpE,MAAM,iBAAiB,GAAG,OAAO,EAAE,iBAAiB,IAAI,KAAK,CAAC;IAE9D,MAAM,WAAW,GAAa,EAAE,CAAC;IAEjC,SAAS,OAAO,CAAC,IAAa,EAAE,IAAa,EAAE,IAAY;QACzD,gDAAgD;QAChD,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QAEhE,wBAAwB;QACxB,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAC/B,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;YACjC,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjF,OAAO,KAAK,CAAC;QACf,CAAC;QAED,yBAAyB;QACzB,IAAI,OAAO,IAAI,KAAK,OAAO,IAAI,EAAE,CAAC;YAChC,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,oBAAoB,OAAO,IAAI,OAAO,OAAO,IAAI,GAAG,CAAC,CAAC;YAC9E,OAAO,KAAK,CAAC;QACf,CAAC;QAED,4BAA4B;QAC5B,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YACzD,MAAM,IAAI,GAAG,IAA+B,CAAC;YAC7C,MAAM,IAAI,GAAG,IAA+B,CAAC;YAE7C,gBAAgB;YAChB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/C,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;oBAChC,sDAAsD;oBACtD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC1D,IAAI,SAAS,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM,EAAE,CAAC;wBAC1C,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,4BAA4B,IAAI,CAAC,MAAM,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;wBACtF,OAAO,KAAK,CAAC;oBACf,CAAC;gBACH,CAAC;gBAED,IAAI,QAAQ,GAAG,IAAI,CAAC;gBACpB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;gBAClD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBAChC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;wBAChD,QAAQ,GAAG,KAAK,CAAC;oBACnB,CAAC;gBACH,CAAC;gBACD,OAAO,QAAQ,CAAC;YAClB,CAAC;YAED,yCAAyC;YACzC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAClE,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAClE,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAE1D,IAAI,QAAQ,GAAG,IAAI,CAAC;YAEpB,0BAA0B;YAC1B,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;gBAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;gBAEhD,2EAA2E;gBAC3E,IAAI,eAAe,CAAC,SAAS,CAAC,IAAI,eAAe,CAAC,SAAS,CAAC;oBAAE,SAAS;gBAEvE,iEAAiE;gBACjE,IAAI,eAAe,CAAC,SAAS,CAAC,KAAK,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC9D,WAAW,CAAC,IAAI,CAAC,GAAG,SAAS,+BAA+B,CAAC,CAAC;oBAC9D,QAAQ,GAAG,KAAK,CAAC;oBACjB,SAAS;gBACX,CAAC;gBAED,6BAA6B;gBAC7B,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC;oBAC9C,QAAQ,GAAG,KAAK,CAAC;gBACnB,CAAC;YACH,CAAC;YAED,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,6CAA6C;QAC7C,MAAM,WAAW,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,WAAW,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAE5C,IAAI,WAAW,KAAK,WAAW,EAAE,CAAC;YAChC,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjF,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAEhC,IAAI,iBAAiB,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChD,sCAAsC;QACtC,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAC3C,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,sCAAsC;YACtC,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;AAChC,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,mBAAmB,CACjC,GAAM,EACN,cAAkC;IAElC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,cAAc,IAAI,CAAC,GAAG,+BAAuB,EAAE,GAAG,iCAAyB,CAAC,CAAC,CAAC;IAEvG,oEAAoE;IACpE,MAAM,gBAAgB,GAAG,CAAC,IAAa,EAAW,EAAE;QAClD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,mBAAmB,CAAC,IAA+B,EAAE,cAAc,CAAC,CAAC;IAC9E,CAAC,CAAC;IAEF,MAAM,MAAM,GAA4B,EAAE,CAAC;IAE3C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/C,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QAEhC,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAChE,MAAM,CAAC,GAAG,CAAC,GAAG,mBAAmB,CAAC,KAAgC,EAAE,cAAc,CAAC,CAAC;QACtF,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC5C,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACtB,CAAC;IACH,CAAC;IAED,OAAO,MAAoB,CAAC;AAC9B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@open-captable-protocol/canton",
3
- "version": "0.2.178",
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",