@open-captable-protocol/canton 0.2.178 → 0.2.179

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":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAIH;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACvC,iGAAiG;IACjG,OAAO,EAAE,OAAO,CAAC;IACjB,qDAAqD;IACrD,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,KAAK,IAAI,CAAC;CAClE;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,mCAAmC;IACnC,eAAe,EAAE,MAAM,CAAC;IACxB,oCAAoC;IACpC,gBAAgB,EAAE,MAAM,CAAC;IACzB,6CAA6C;IAC7C,eAAe,EAAE,OAAO,CAAC;IACzB,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,eAAO,MAAM,wBAAwB,EAAE,wBAGtC,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI,CAexE;AAID;;GAEG;AACH,MAAM,WAAW,qBAAqB,CAAC,CAAC;IACtC,uDAAuD;IACvD,aAAa,EAAE,CAAC,GAAG,SAAS,CAAC;IAC7B,0DAA0D;IAC1D,UAAU,EAAE,CAAC,EAAE,GAAG,SAAS,CAAC;IAC5B,kDAAkD;IAClD,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,mDAAmD;IACnD,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,sCAAsC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,MAAM,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAwBjF;AAID;;;;;GAKG;AACH,MAAM,WAAW,gCAAgC;IAC/C,2DAA2D;IAC3D,eAAe,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAClC,yFAAyF;IACzF,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,0CAA0C;IAC1C,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,0CAA0C;IAC1C,mBAAmB,EAAE,OAAO,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,kCAAkC,CAChD,IAAI,EAAE,gCAAgC,EACtC,OAAO,CAAC,EAAE,MAAM,GACf,yBAAyB,CAyB3B;AAID;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,kDAAkD;IAClD,mBAAmB,EAAE,OAAO,CAAC;IAC7B,+CAA+C;IAC/C,oBAAoB,EAAE,MAAM,EAAE,CAAC;CAChC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kCAAkC,CAAC,IAAI,EAAE,gCAAgC,GAAG,0BAA0B,CAYrH;AAID;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,gCAAgC;IAChC,eAAe,EAAE,MAAM,CAAC;IACxB,iCAAiC;IACjC,gBAAgB,EAAE,MAAM,CAAC;IACzB,iEAAiE;IACjE,eAAe,EAAE,mBAAmB,GAAG,SAAS,GAAG,SAAS,CAAC;CAC9D;AAED;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,EAAE,CAQ1E,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,MAAM,GAAG,sBAAsB,EAAE,CAEvF;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,sBAAsB,GAAG,SAAS,CAG7G;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,0BAA0B,CAgBnH"}
@@ -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":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;;;AA2CH,wDAeC;AAkDD,4DAwBC;AAmDD,gFA4BC;AA4BD,gFAYC;AAoCD,gEAEC;AASD,kDAGC;AAkBD,sDAgBC;AAlTD;;;GAGG;AACU,QAAA,wBAAwB,GAA6B;IAChE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM;IACxC,OAAO,EAAE,SAAS;CACnB,CAAC;AAEF;;;;GAIG;AACH,SAAgB,sBAAsB,CAAC,OAA2B;IAChE,IAAI,CAAC,gCAAwB,CAAC,OAAO,EAAE,CAAC;QACtC,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GACX,4BAA4B,OAAO,CAAC,eAAe,mBAAmB;QACtE,QAAQ,OAAO,CAAC,gBAAgB,aAAa,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAEvG,IAAI,gCAAwB,CAAC,OAAO,EAAE,CAAC;QACrC,gCAAwB,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;SAAM,CAAC;QACN,mHAAmH;QACnH,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC;AACH,CAAC;AAoBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,SAAgB,wBAAwB,CAAI,MAAgC;IAC1E,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IAEjG,6DAA6D;IAC7D,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,8DAA8D;IAC9D,qEAAqE;IACrE,IAAI,aAAa,KAAK,SAAS,IAAI,aAAa,KAAK,IAAI,IAAI,aAAa,KAAK,EAAE,EAAE,CAAC;QAClF,IAAI,mBAAmB,IAAI,oBAAoB,EAAE,CAAC;YAChD,sBAAsB,CAAC;gBACrB,eAAe,EAAE,mBAAmB;gBACpC,gBAAgB,EAAE,oBAAoB;gBACtC,eAAe,EAAE,aAAa;gBAC9B,OAAO;aACR,CAAC,CAAC;QACL,CAAC;QACD,OAAO,CAAC,aAAa,CAAC,CAAC;IACzB,CAAC;IAED,wCAAwC;IACxC,OAAO,EAAE,CAAC;AACZ,CAAC;AA2BD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,SAAgB,kCAAkC,CAChD,IAAsC,EACtC,OAAgB;IAEhB,qEAAqE;IACrE,MAAM,kBAAkB,GACtB,IAAI,CAAC,cAAc,KAAK,SAAS,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,IAAI,IAAI,CAAC,cAAc,KAAK,EAAE,CAAC;IAClG,MAAM,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;IAE/F,mFAAmF;IACnF,MAAM,mBAAmB,GAAG,kBAAkB,IAAI,CAAC,eAAe,CAAC;IAEnE,4EAA4E;IAC5E,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,IAAI,SAAS,CAAC;IACvD,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,IAAI,SAAS,CAAC;IAErD,MAAM,eAAe,GAAG,wBAAwB,CAAC;QAC/C,aAAa;QACb,UAAU;QACV,mBAAmB,EAAE,gBAAgB;QACrC,oBAAoB,EAAE,iBAAiB;QACvC,OAAO,EAAE,OAAO,IAAI,WAAW;KAChC,CAAC,CAAC;IAEH,OAAO;QACL,eAAe;QACf,mBAAmB;KACpB,CAAC;AACJ,CAAC;AAcD;;;;;;;;;;;;;GAaG;AACH,SAAgB,kCAAkC,CAAC,IAAsC;IACvF,MAAM,oBAAoB,GAAa,EAAE,CAAC;IAE1C,4GAA4G;IAC5G,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,IAAI,IAAI,CAAC,cAAc,KAAK,EAAE,EAAE,CAAC;QACpG,oBAAoB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO;QACL,mBAAmB,EAAE,oBAAoB,CAAC,MAAM,GAAG,CAAC;QACpD,oBAAoB;KACrB,CAAC;AACJ,CAAC;AAgBD;;;GAGG;AACU,QAAA,qBAAqB,GAA6C;IAC7E,SAAS,EAAE;QACT;YACE,eAAe,EAAE,gBAAgB;YACjC,gBAAgB,EAAE,iBAAiB;YACnC,eAAe,EAAE,mBAAmB;SACrC;KACF;CACF,CAAC;AAEF;;;;;GAKG;AACH,SAAgB,0BAA0B,CAAC,UAAkB;IAC3D,OAAO,6BAAqB,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;AACjD,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,mBAAmB,CAAC,UAAkB,EAAE,SAAiB;IACvE,MAAM,QAAQ,GAAG,0BAA0B,CAAC,UAAU,CAAC,CAAC;IACxD,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC;AAC/D,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,SAAgB,qBAAqB,CAAC,UAAkB,EAAE,IAA6B;IACrF,MAAM,QAAQ,GAAG,0BAA0B,CAAC,UAAU,CAAC,CAAC;IACxD,MAAM,oBAAoB,GAAa,EAAE,CAAC;IAE1C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QAC5C,qEAAqE;QACrE,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;YAC1D,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAED,OAAO;QACL,mBAAmB,EAAE,oBAAoB,CAAC,MAAM,GAAG,CAAC;QACpD,oBAAoB;KACrB,CAAC;AACJ,CAAC"}
@@ -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"}
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.179",
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",