@trade-it/core 0.2.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,12 @@
2
2
 
3
3
  All notable changes to `@trade-it/core` will be documented in this file.
4
4
 
5
+ ## Unreleased
6
+
7
+ ## 1.0.0 - 2026-10-15
8
+
9
+ - Typed OAuth authorization artifacts, credential event validation, and embedded authorization event names
10
+
5
11
  ## 0.2.0 - 2026-07-27
6
12
 
7
13
  ### Added
package/README.md CHANGED
@@ -29,3 +29,9 @@ Integration guides and reference docs:
29
29
 
30
30
  - This package is intended for framework wrappers or advanced integrations.
31
31
  - Request Trade It session URLs from your server immediately before launch; they expire after 30 minutes.
32
+
33
+ ## Authorization events
34
+
35
+ `EmbedEventType.Authorization` carries `TradeItAuthorization` (`code`, `state`, `issuer`). Use `isTradeItAuthorization` to narrow the payload and validate the exact message origin and sending iframe before accepting it. Forward the artifacts to your authenticated backend; keep client secrets, PKCE verifiers, and OAuth tokens off the frontend.
36
+
37
+ The React SDK handles these checks and invokes its async `onAuthorization` callback. See the [Onboarding Portal guide](https://docs.tradeit.app/sdk/onboarding).
package/dist/index.cjs CHANGED
@@ -54,12 +54,35 @@ let TradeType = /* @__PURE__ */ function(TradeType$1) {
54
54
  return TradeType$1;
55
55
  }({});
56
56
 
57
+ //#endregion
58
+ //#region ../../lib/types/src/enums/embedding.enums.ts
59
+ /** Version-one messages exchanged between a Trade It frame and its host. */
60
+ let EmbedEventType = /* @__PURE__ */ function(EmbedEventType$1) {
61
+ EmbedEventType$1["Ready"] = "tradeit.ready";
62
+ EmbedEventType$1["CloseRequested"] = "tradeit.close_requested";
63
+ EmbedEventType$1["BrokerageConnected"] = "tradeit.brokerage_connected";
64
+ EmbedEventType$1["TradeSubmitted"] = "tradeit.trade_submitted";
65
+ EmbedEventType$1["TradeExecuted"] = "tradeit.trade_executed";
66
+ EmbedEventType$1["Error"] = "tradeit.error";
67
+ EmbedEventType$1["LoginRequired"] = "tradeit.login_required";
68
+ EmbedEventType$1["Authorization"] = "tradeit.authorization";
69
+ EmbedEventType$1["AuthorizationResult"] = "tradeit.authorization_result";
70
+ return EmbedEventType$1;
71
+ }({});
72
+
57
73
  //#endregion
58
74
  //#region src/events.ts
75
+ /** Validates supported embedded messages before dispatch. */
59
76
  function isTradeItEvent(data) {
60
77
  if (!data || typeof data !== "object") return false;
61
78
  const message = data;
62
- return message.source === "tradeit" && message.version === 1 && typeof message.type === "string" && message.type.startsWith("tradeit.");
79
+ return message.source === "tradeit" && message.version === 1 && typeof message.type === "string" && Object.values(EmbedEventType).some((type) => type === message.type);
80
+ }
81
+ /** Narrows credential events before they can reach an integration callback. */
82
+ function isTradeItAuthorization(data) {
83
+ if (data == null || typeof data !== "object") return false;
84
+ const value = data;
85
+ return typeof value.code === "string" && value.code.length > 0 && typeof value.state === "string" && value.state.length > 0 && typeof value.issuer === "string" && /^https?:\/\//.test(value.issuer);
63
86
  }
64
87
  function getTradeItErrorMessage(event) {
65
88
  const message = event.payload?.message;
@@ -164,6 +187,7 @@ function getUrlOrigin(url) {
164
187
  }
165
188
 
166
189
  //#endregion
190
+ exports.EmbedEventType = EmbedEventType;
167
191
  exports.LegType = LegType;
168
192
  exports.OrderDirection = OrderDirection;
169
193
  exports.OrderType = OrderType;
@@ -176,5 +200,6 @@ exports.TradeUnit = TradeUnit;
176
200
  exports.TriggerUnit = TriggerUnit;
177
201
  exports.getTradeItErrorMessage = getTradeItErrorMessage;
178
202
  exports.getUrlOrigin = getUrlOrigin;
203
+ exports.isTradeItAuthorization = isTradeItAuthorization;
179
204
  exports.isTradeItEvent = isTradeItEvent;
180
205
  exports.resolveLaunchUrl = resolveLaunchUrl;
package/dist/index.d.cts CHANGED
@@ -45,9 +45,33 @@ declare enum TradeType {
45
45
  Simple = 0,
46
46
  MultiLeg = 1,
47
47
  }
48
+ /**
49
+ * A brokerage-reported option lifecycle event. Rows carrying an event describe
50
+ * what happened to a contract, so `action` is not meaningful on them.
51
+ */
52
+ //#endregion
53
+ //#region ../../lib/types/src/enums/embedding.enums.d.ts
54
+ /** Version-one messages exchanged between a Trade It frame and its host. */
55
+ declare enum EmbedEventType {
56
+ Ready = "tradeit.ready",
57
+ CloseRequested = "tradeit.close_requested",
58
+ BrokerageConnected = "tradeit.brokerage_connected",
59
+ TradeSubmitted = "tradeit.trade_submitted",
60
+ TradeExecuted = "tradeit.trade_executed",
61
+ Error = "tradeit.error",
62
+ LoginRequired = "tradeit.login_required",
63
+ Authorization = "tradeit.authorization",
64
+ AuthorizationResult = "tradeit.authorization_result",
65
+ }
48
66
  //#endregion
49
67
  //#region src/types.d.ts
50
- type TradeItEventType = 'tradeit.ready' | 'tradeit.close_requested' | 'tradeit.brokerage_connected' | 'tradeit.trade_submitted' | 'tradeit.trade_executed' | 'tradeit.error' | 'tradeit.login_required';
68
+ type TradeItEventType = `${EmbedEventType}`;
69
+ /** OAuth artifacts forwarded to the partner's authenticated backend. */
70
+ interface TradeItAuthorization {
71
+ code: string;
72
+ state: string;
73
+ issuer: string;
74
+ }
51
75
  interface TradeItEvent<TPayload = Record<string, unknown>> {
52
76
  source: 'tradeit';
53
77
  version: 1;
@@ -93,11 +117,7 @@ interface TradeItExitTrigger {
93
117
  value: number;
94
118
  unit: '$' | '%';
95
119
  }
96
- /**
97
- * Query params accepted by Trade It's /t/[ticker] page.
98
- * User-facing config uses descriptive keys; core converts them to the short-key
99
- * query format used by the page parser (tt, t, dir, ot, a, u, lp, sp, tif, tp, sl, ref, legs).
100
- */
120
+ /** Descriptive trade configuration serialized into the page's compact query parameters. */
101
121
  interface TradeItTradeConfigBase {
102
122
  ticker: string;
103
123
  orderType?: OrderType;
@@ -137,11 +157,14 @@ type TradeItConnectLaunch = TradeItLaunch<'connect'>;
137
157
  type TradeItTradeLaunch = TradeItLaunch<'trade'>;
138
158
  //#endregion
139
159
  //#region src/events.d.ts
160
+ /** Validates supported embedded messages before dispatch. */
140
161
  declare function isTradeItEvent(data: unknown): data is TradeItEvent;
162
+ /** Narrows credential events before they can reach an integration callback. */
163
+ declare function isTradeItAuthorization(data: unknown): data is TradeItAuthorization;
141
164
  declare function getTradeItErrorMessage(event: TradeItEvent): string;
142
165
  //#endregion
143
166
  //#region src/url.d.ts
144
167
  declare function resolveLaunchUrl(launch: TradeItLaunch): string;
145
168
  declare function getUrlOrigin(url: string): string | null;
146
169
  //#endregion
147
- export { LegType, OrderDirection, OrderType, PositionEffect, TimeInForce, TradeAction, type TradeItConnectLaunch, type TradeItEvent, type TradeItEventType, type TradeItExitTrigger, type TradeItLaunch, type TradeItLaunchConfigMap, type TradeItMode, type TradeItMultiLegTradeConfig, type TradeItMultiLegTradeLegConfig, type TradeItQueryPrimitive, type TradeItSimpleTradeConfig, type TradeItTradeConfig, type TradeItTradeLaunch, type TradeLinkLegConfig, TradeLinkParam, TradeType, TradeUnit, TriggerUnit, getTradeItErrorMessage, getUrlOrigin, isTradeItEvent, resolveLaunchUrl };
170
+ export { EmbedEventType, LegType, OrderDirection, OrderType, PositionEffect, TimeInForce, TradeAction, type TradeItAuthorization, type TradeItConnectLaunch, type TradeItEvent, type TradeItEventType, type TradeItExitTrigger, type TradeItLaunch, type TradeItLaunchConfigMap, type TradeItMode, type TradeItMultiLegTradeConfig, type TradeItMultiLegTradeLegConfig, type TradeItQueryPrimitive, type TradeItSimpleTradeConfig, type TradeItTradeConfig, type TradeItTradeLaunch, type TradeLinkLegConfig, TradeLinkParam, TradeType, TradeUnit, TriggerUnit, getTradeItErrorMessage, getUrlOrigin, isTradeItAuthorization, isTradeItEvent, resolveLaunchUrl };
package/dist/index.d.ts CHANGED
@@ -45,9 +45,33 @@ declare enum TradeType {
45
45
  Simple = 0,
46
46
  MultiLeg = 1,
47
47
  }
48
+ /**
49
+ * A brokerage-reported option lifecycle event. Rows carrying an event describe
50
+ * what happened to a contract, so `action` is not meaningful on them.
51
+ */
52
+ //#endregion
53
+ //#region ../../lib/types/src/enums/embedding.enums.d.ts
54
+ /** Version-one messages exchanged between a Trade It frame and its host. */
55
+ declare enum EmbedEventType {
56
+ Ready = "tradeit.ready",
57
+ CloseRequested = "tradeit.close_requested",
58
+ BrokerageConnected = "tradeit.brokerage_connected",
59
+ TradeSubmitted = "tradeit.trade_submitted",
60
+ TradeExecuted = "tradeit.trade_executed",
61
+ Error = "tradeit.error",
62
+ LoginRequired = "tradeit.login_required",
63
+ Authorization = "tradeit.authorization",
64
+ AuthorizationResult = "tradeit.authorization_result",
65
+ }
48
66
  //#endregion
49
67
  //#region src/types.d.ts
50
- type TradeItEventType = 'tradeit.ready' | 'tradeit.close_requested' | 'tradeit.brokerage_connected' | 'tradeit.trade_submitted' | 'tradeit.trade_executed' | 'tradeit.error' | 'tradeit.login_required';
68
+ type TradeItEventType = `${EmbedEventType}`;
69
+ /** OAuth artifacts forwarded to the partner's authenticated backend. */
70
+ interface TradeItAuthorization {
71
+ code: string;
72
+ state: string;
73
+ issuer: string;
74
+ }
51
75
  interface TradeItEvent<TPayload = Record<string, unknown>> {
52
76
  source: 'tradeit';
53
77
  version: 1;
@@ -93,11 +117,7 @@ interface TradeItExitTrigger {
93
117
  value: number;
94
118
  unit: '$' | '%';
95
119
  }
96
- /**
97
- * Query params accepted by Trade It's /t/[ticker] page.
98
- * User-facing config uses descriptive keys; core converts them to the short-key
99
- * query format used by the page parser (tt, t, dir, ot, a, u, lp, sp, tif, tp, sl, ref, legs).
100
- */
120
+ /** Descriptive trade configuration serialized into the page's compact query parameters. */
101
121
  interface TradeItTradeConfigBase {
102
122
  ticker: string;
103
123
  orderType?: OrderType;
@@ -137,11 +157,14 @@ type TradeItConnectLaunch = TradeItLaunch<'connect'>;
137
157
  type TradeItTradeLaunch = TradeItLaunch<'trade'>;
138
158
  //#endregion
139
159
  //#region src/events.d.ts
160
+ /** Validates supported embedded messages before dispatch. */
140
161
  declare function isTradeItEvent(data: unknown): data is TradeItEvent;
162
+ /** Narrows credential events before they can reach an integration callback. */
163
+ declare function isTradeItAuthorization(data: unknown): data is TradeItAuthorization;
141
164
  declare function getTradeItErrorMessage(event: TradeItEvent): string;
142
165
  //#endregion
143
166
  //#region src/url.d.ts
144
167
  declare function resolveLaunchUrl(launch: TradeItLaunch): string;
145
168
  declare function getUrlOrigin(url: string): string | null;
146
169
  //#endregion
147
- export { LegType, OrderDirection, OrderType, PositionEffect, TimeInForce, TradeAction, type TradeItConnectLaunch, type TradeItEvent, type TradeItEventType, type TradeItExitTrigger, type TradeItLaunch, type TradeItLaunchConfigMap, type TradeItMode, type TradeItMultiLegTradeConfig, type TradeItMultiLegTradeLegConfig, type TradeItQueryPrimitive, type TradeItSimpleTradeConfig, type TradeItTradeConfig, type TradeItTradeLaunch, type TradeLinkLegConfig, TradeLinkParam, TradeType, TradeUnit, TriggerUnit, getTradeItErrorMessage, getUrlOrigin, isTradeItEvent, resolveLaunchUrl };
170
+ export { EmbedEventType, LegType, OrderDirection, OrderType, PositionEffect, TimeInForce, TradeAction, type TradeItAuthorization, type TradeItConnectLaunch, type TradeItEvent, type TradeItEventType, type TradeItExitTrigger, type TradeItLaunch, type TradeItLaunchConfigMap, type TradeItMode, type TradeItMultiLegTradeConfig, type TradeItMultiLegTradeLegConfig, type TradeItQueryPrimitive, type TradeItSimpleTradeConfig, type TradeItTradeConfig, type TradeItTradeLaunch, type TradeLinkLegConfig, TradeLinkParam, TradeType, TradeUnit, TriggerUnit, getTradeItErrorMessage, getUrlOrigin, isTradeItAuthorization, isTradeItEvent, resolveLaunchUrl };
package/dist/index.js CHANGED
@@ -53,12 +53,35 @@ let TradeType = /* @__PURE__ */ function(TradeType$1) {
53
53
  return TradeType$1;
54
54
  }({});
55
55
 
56
+ //#endregion
57
+ //#region ../../lib/types/src/enums/embedding.enums.ts
58
+ /** Version-one messages exchanged between a Trade It frame and its host. */
59
+ let EmbedEventType = /* @__PURE__ */ function(EmbedEventType$1) {
60
+ EmbedEventType$1["Ready"] = "tradeit.ready";
61
+ EmbedEventType$1["CloseRequested"] = "tradeit.close_requested";
62
+ EmbedEventType$1["BrokerageConnected"] = "tradeit.brokerage_connected";
63
+ EmbedEventType$1["TradeSubmitted"] = "tradeit.trade_submitted";
64
+ EmbedEventType$1["TradeExecuted"] = "tradeit.trade_executed";
65
+ EmbedEventType$1["Error"] = "tradeit.error";
66
+ EmbedEventType$1["LoginRequired"] = "tradeit.login_required";
67
+ EmbedEventType$1["Authorization"] = "tradeit.authorization";
68
+ EmbedEventType$1["AuthorizationResult"] = "tradeit.authorization_result";
69
+ return EmbedEventType$1;
70
+ }({});
71
+
56
72
  //#endregion
57
73
  //#region src/events.ts
74
+ /** Validates supported embedded messages before dispatch. */
58
75
  function isTradeItEvent(data) {
59
76
  if (!data || typeof data !== "object") return false;
60
77
  const message = data;
61
- return message.source === "tradeit" && message.version === 1 && typeof message.type === "string" && message.type.startsWith("tradeit.");
78
+ return message.source === "tradeit" && message.version === 1 && typeof message.type === "string" && Object.values(EmbedEventType).some((type) => type === message.type);
79
+ }
80
+ /** Narrows credential events before they can reach an integration callback. */
81
+ function isTradeItAuthorization(data) {
82
+ if (data == null || typeof data !== "object") return false;
83
+ const value = data;
84
+ return typeof value.code === "string" && value.code.length > 0 && typeof value.state === "string" && value.state.length > 0 && typeof value.issuer === "string" && /^https?:\/\//.test(value.issuer);
62
85
  }
63
86
  function getTradeItErrorMessage(event) {
64
87
  const message = event.payload?.message;
@@ -163,4 +186,4 @@ function getUrlOrigin(url) {
163
186
  }
164
187
 
165
188
  //#endregion
166
- export { LegType, OrderDirection, OrderType, PositionEffect, TimeInForce, TradeAction, TradeLinkParam, TradeType, TradeUnit, TriggerUnit, getTradeItErrorMessage, getUrlOrigin, isTradeItEvent, resolveLaunchUrl };
189
+ export { EmbedEventType, LegType, OrderDirection, OrderType, PositionEffect, TimeInForce, TradeAction, TradeLinkParam, TradeType, TradeUnit, TriggerUnit, getTradeItErrorMessage, getUrlOrigin, isTradeItAuthorization, isTradeItEvent, resolveLaunchUrl };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trade-it/core",
3
- "version": "0.2.0",
3
+ "version": "1.0.0",
4
4
  "description": "Framework-agnostic core for Trade It embedded SDKs.",
5
5
  "author": "Trade It, Inc.",
6
6
  "license": "MIT",
@@ -37,6 +37,9 @@
37
37
  "scripts": {
38
38
  "build": "tsdown src/index.ts --format esm,cjs --dts --out-dir dist && node ../../scripts/fix-trade-it-sdk-dts.mjs dist/index.d.ts dist/index.d.cts",
39
39
  "dev": "tsdown src/index.ts --format esm,cjs --dts --out-dir dist --watch",
40
+ "release:major": "node ../../scripts/release-trade-it-sdk.mjs core major",
41
+ "release:minor": "node ../../scripts/release-trade-it-sdk.mjs core minor",
42
+ "release:patch": "node ../../scripts/release-trade-it-sdk.mjs core patch",
40
43
  "test": "npm run build && tsc -p tsconfig.test.json --noEmit && node --test test/*.test.mjs",
41
44
  "prepublishOnly": "npm test"
42
45
  },