@forgecharts/sdk 1.2.5 → 1.2.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +245 -50
- package/dist/index.js.map +1 -1
- package/dist/internal.js +245 -50
- package/dist/internal.js.map +1 -1
- package/dist/licensing/ChartRuntimeResolver.d.ts +55 -24
- package/dist/licensing/ChartRuntimeResolver.d.ts.map +1 -1
- package/dist/licensing/LicenseManager.d.ts +17 -2
- package/dist/licensing/LicenseManager.d.ts.map +1 -1
- package/dist/licensing/__tests__/ChartRuntimeResolver.test.d.ts +3 -0
- package/dist/licensing/__tests__/ChartRuntimeResolver.test.d.ts.map +1 -1
- package/dist/licensing/__tests__/LicenseManager.test.d.ts +3 -0
- package/dist/licensing/__tests__/LicenseManager.test.d.ts.map +1 -1
- package/dist/licensing/__tests__/capabilityMatrix.test.d.ts +11 -0
- package/dist/licensing/__tests__/capabilityMatrix.test.d.ts.map +1 -0
- package/dist/licensing/capabilityMatrix.d.ts +77 -0
- package/dist/licensing/capabilityMatrix.d.ts.map +1 -0
- package/dist/licensing/licenseTypes.d.ts +29 -2
- package/dist/licensing/licenseTypes.d.ts.map +1 -1
- package/dist/node.d.ts +3 -1
- package/dist/node.d.ts.map +1 -1
- package/dist/react/index.js +234 -55
- package/dist/react/index.js.map +1 -1
- package/dist/react/internal.js +237 -57
- package/dist/react/internal.js.map +1 -1
- package/dist/react/shell/ManagedAppShell.d.ts.map +1 -1
- package/dist/trading/__tests__/managedCapabilities.test.d.ts +11 -0
- package/dist/trading/__tests__/managedCapabilities.test.d.ts.map +1 -0
- package/dist/trading/managed/ManagedTradingController.d.ts.map +1 -1
- package/dist/trading/managed/managedCapabilities.d.ts +45 -13
- package/dist/trading/managed/managedCapabilities.d.ts.map +1 -1
- package/package.json +2 -1
package/dist/index.d.ts
CHANGED
|
@@ -29,7 +29,9 @@ export { ManagedTradingController } from './trading/managed/ManagedTradingContro
|
|
|
29
29
|
export type { IExecutionProvider, PlaceOrderInput, ModifyOrderInput, PlaceBracketOrderInput, OrderAck, BracketOrderAck, ManagedOrderType, TimeInForce, } from './trading/managed/managedTypes';
|
|
30
30
|
export { assertManagedMode, assertCanPlaceOrders, assertCanUseBrackets, assertCanUseDraggableOrders, assertCanUseManagedTrading, isManagedCapable, canPlaceOrders, canPlaceBrackets, canUseDraggable, canUseManagedTradingHook, } from './trading/managed/managedCapabilities';
|
|
31
31
|
export { LicenseManager } from './licensing/LicenseManager';
|
|
32
|
-
export type { LicenseMode, LicenseFeatures, LicensePayload } from './licensing/licenseTypes';
|
|
32
|
+
export type { LicenseMode, LicenseFeatures, LicensePayload, ProductTier, CapabilitySet } from './licensing/licenseTypes';
|
|
33
|
+
export { getDefaultCapabilities, isValidCombination, migrateLegacyPayload, validateLicensePolicy, CURRENT_SCHEMA_VERSION, PRODUCT_TIERS, } from './licensing/capabilityMatrix';
|
|
34
|
+
export type { PolicyValidationResult, LegacyPayloadShape } from './licensing/capabilityMatrix';
|
|
33
35
|
export { ChartRuntimeResolver } from './licensing/ChartRuntimeResolver';
|
|
34
36
|
export type { ChartCapabilities } from './licensing/ChartRuntimeResolver';
|
|
35
37
|
export { isManagedMode, isUnmanagedMode, canUseChartTypes, canUseDrawingTools, canUseExtendedDrawings, canUseIndicators, canUseMultiPane, canUseBarReplay, canUseCustomTimeframes, canRenderOverlays, canUseHistoricalData, canUseRealtimeData, canUseMultipleProviders, canUseDataExport, canUseOrderEntry, canUseManagedTrading, canUseDraggableOrders, canUseBracketOrders, canUseTrailingStops, canUsePositionsOverlay, canUseForgeScript, canUseCustomIndicators, canUseAiAgent, canUseSavedLayouts, canUseMultipleWorkspaces, canUseWatchlists, canUseAlerts, canUseMultiChartLayout, canUseExternalIngestion, hasFeature, getCapabilities, canRenderOrderEntry, canRenderBuySellButtons, canRenderOrderTicket, canRenderBracketControls, canRenderOrderModificationControls, canRenderManagedTradingControls, canRenderExternalOverlayOnlyMode, canRenderPositions, canRenderFills, canRenderCandles, canRenderIndicators, canRenderDrawings, } from './licensing/ChartRuntimeResolver';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -10661,8 +10661,127 @@ var TradingOverlayStore = class {
|
|
|
10661
10661
|
}
|
|
10662
10662
|
};
|
|
10663
10663
|
|
|
10664
|
+
// src/licensing/licenseTypes.ts
|
|
10665
|
+
var TRADING_FEATURE_KEYS = /* @__PURE__ */ new Set([
|
|
10666
|
+
"orderEntry",
|
|
10667
|
+
"managedTrading",
|
|
10668
|
+
"draggableOrders",
|
|
10669
|
+
"bracketOrders",
|
|
10670
|
+
"trailingStops",
|
|
10671
|
+
"positionsOverlay"
|
|
10672
|
+
]);
|
|
10673
|
+
|
|
10674
|
+
// src/licensing/capabilityMatrix.ts
|
|
10675
|
+
var PRODUCT_TIERS = ["core", "trading", "platform"];
|
|
10676
|
+
var CURRENT_SCHEMA_VERSION = 2;
|
|
10677
|
+
var BASE_MATRIX = {
|
|
10678
|
+
core: {
|
|
10679
|
+
orderEntry: false,
|
|
10680
|
+
managedTrading: false,
|
|
10681
|
+
draggableOrders: false,
|
|
10682
|
+
bracketOrders: false,
|
|
10683
|
+
externalIngestion: true,
|
|
10684
|
+
symbolResolverRequired: true,
|
|
10685
|
+
tradingBridgeRequired: false,
|
|
10686
|
+
fullAppShell: false
|
|
10687
|
+
},
|
|
10688
|
+
trading: {
|
|
10689
|
+
orderEntry: true,
|
|
10690
|
+
managedTrading: false,
|
|
10691
|
+
draggableOrders: true,
|
|
10692
|
+
bracketOrders: true,
|
|
10693
|
+
externalIngestion: true,
|
|
10694
|
+
symbolResolverRequired: true,
|
|
10695
|
+
tradingBridgeRequired: true,
|
|
10696
|
+
fullAppShell: false
|
|
10697
|
+
},
|
|
10698
|
+
platform: {
|
|
10699
|
+
orderEntry: true,
|
|
10700
|
+
managedTrading: true,
|
|
10701
|
+
draggableOrders: true,
|
|
10702
|
+
bracketOrders: true,
|
|
10703
|
+
externalIngestion: false,
|
|
10704
|
+
symbolResolverRequired: false,
|
|
10705
|
+
tradingBridgeRequired: false,
|
|
10706
|
+
fullAppShell: true
|
|
10707
|
+
}
|
|
10708
|
+
};
|
|
10709
|
+
function getDefaultCapabilities(productTier, deploymentMode) {
|
|
10710
|
+
const base = BASE_MATRIX[productTier];
|
|
10711
|
+
if (deploymentMode === "unmanaged") {
|
|
10712
|
+
return { ...base, managedTrading: false, fullAppShell: false };
|
|
10713
|
+
}
|
|
10714
|
+
return { ...base };
|
|
10715
|
+
}
|
|
10716
|
+
function isValidCombination(deploymentMode, capabilities) {
|
|
10717
|
+
if (deploymentMode === "managed" && capabilities.fullAppShell === false) return false;
|
|
10718
|
+
return true;
|
|
10719
|
+
}
|
|
10720
|
+
function hasAnyTradingFeature(features) {
|
|
10721
|
+
if (!features) return false;
|
|
10722
|
+
for (const key of TRADING_FEATURE_KEYS) {
|
|
10723
|
+
if (features[key] === true) return true;
|
|
10724
|
+
}
|
|
10725
|
+
return false;
|
|
10726
|
+
}
|
|
10727
|
+
function inferProductTier(raw, mode) {
|
|
10728
|
+
if (mode === "managed") return "platform";
|
|
10729
|
+
if (raw.tier === "trading" || raw.tier === "dom") return "trading";
|
|
10730
|
+
if (hasAnyTradingFeature(raw.features)) return "trading";
|
|
10731
|
+
return "core";
|
|
10732
|
+
}
|
|
10733
|
+
function migrateLegacyPayload(raw) {
|
|
10734
|
+
const warnings = [];
|
|
10735
|
+
const mode = raw.deploymentMode ?? raw.mode ?? "unmanaged";
|
|
10736
|
+
let productTier = raw.productTier;
|
|
10737
|
+
if (!productTier) {
|
|
10738
|
+
productTier = inferProductTier(raw, mode);
|
|
10739
|
+
warnings.push(
|
|
10740
|
+
`License payload has no productTier \u2014 inferred '${productTier}' from mode='${mode}'` + (raw.tier ? ` and legacy tier='${raw.tier}'` : "") + "."
|
|
10741
|
+
);
|
|
10742
|
+
}
|
|
10743
|
+
let capabilities = raw.capabilities;
|
|
10744
|
+
if (!capabilities) {
|
|
10745
|
+
capabilities = getDefaultCapabilities(productTier, mode);
|
|
10746
|
+
warnings.push(`License payload has no capabilities \u2014 derived defaults for productTier='${productTier}', deploymentMode='${mode}'.`);
|
|
10747
|
+
}
|
|
10748
|
+
if (!raw.schemaVersion || raw.schemaVersion < CURRENT_SCHEMA_VERSION) {
|
|
10749
|
+
warnings.push(`License payload schemaVersion=${raw.schemaVersion ?? 1} is legacy \u2014 migrated to v${CURRENT_SCHEMA_VERSION}.`);
|
|
10750
|
+
}
|
|
10751
|
+
const payload = {
|
|
10752
|
+
licenseKey: raw.licenseKey ?? "",
|
|
10753
|
+
mode,
|
|
10754
|
+
deploymentMode: mode,
|
|
10755
|
+
productTier,
|
|
10756
|
+
capabilities,
|
|
10757
|
+
schemaVersion: CURRENT_SCHEMA_VERSION,
|
|
10758
|
+
...raw.tier != null && { tier: raw.tier },
|
|
10759
|
+
...raw.plan != null && { plan: raw.plan },
|
|
10760
|
+
...raw.expires != null && { expires: raw.expires },
|
|
10761
|
+
...raw.features != null && { features: raw.features }
|
|
10762
|
+
};
|
|
10763
|
+
return { payload, warnings };
|
|
10764
|
+
}
|
|
10765
|
+
function validateLicensePolicy(payload) {
|
|
10766
|
+
const warnings = [];
|
|
10767
|
+
const capabilities = payload.capabilities ?? getDefaultCapabilities(payload.productTier ?? "core", payload.mode);
|
|
10768
|
+
if (isValidCombination(payload.mode, capabilities)) {
|
|
10769
|
+
return { valid: true, normalized: { ...payload, capabilities }, warnings };
|
|
10770
|
+
}
|
|
10771
|
+
warnings.push(
|
|
10772
|
+
`Invalid license combination: deploymentMode='${payload.mode}' requires fullAppShell capability. Normalizing productTier to 'platform'.`
|
|
10773
|
+
);
|
|
10774
|
+
const normalizedCapabilities = getDefaultCapabilities("platform", payload.mode);
|
|
10775
|
+
return {
|
|
10776
|
+
valid: false,
|
|
10777
|
+
normalized: { ...payload, productTier: "platform", capabilities: normalizedCapabilities },
|
|
10778
|
+
warnings
|
|
10779
|
+
};
|
|
10780
|
+
}
|
|
10781
|
+
|
|
10664
10782
|
// src/licensing/LicenseManager.ts
|
|
10665
10783
|
var DEFAULT_MODE = "unmanaged";
|
|
10784
|
+
var DEFAULT_PRODUCT_TIER = "core";
|
|
10666
10785
|
var DEFAULT_FEATURES = {};
|
|
10667
10786
|
var LicenseManager = class _LicenseManager {
|
|
10668
10787
|
static instance = null;
|
|
@@ -10725,22 +10844,42 @@ var LicenseManager = class _LicenseManager {
|
|
|
10725
10844
|
if (!data.valid) {
|
|
10726
10845
|
throw new Error(data.reason ?? "License invalid");
|
|
10727
10846
|
}
|
|
10728
|
-
const
|
|
10847
|
+
const raw = {
|
|
10729
10848
|
licenseKey: data.licenseKey ?? key.trim().toUpperCase(),
|
|
10730
10849
|
mode: data.mode ?? "unmanaged",
|
|
10850
|
+
...data.tier != null && { tier: data.tier },
|
|
10851
|
+
...data.productTier != null && { productTier: data.productTier },
|
|
10852
|
+
...data.capabilities != null && { capabilities: data.capabilities },
|
|
10853
|
+
...data.schemaVersion != null && { schemaVersion: data.schemaVersion },
|
|
10731
10854
|
...data.plan != null && { plan: data.plan },
|
|
10732
10855
|
...data.expiresAt != null && { expires: data.expiresAt },
|
|
10733
10856
|
...data.features != null && { features: data.features }
|
|
10734
10857
|
};
|
|
10858
|
+
const payload = this.#applyPolicyPipeline(raw);
|
|
10735
10859
|
this.payload = payload;
|
|
10736
10860
|
this.notify();
|
|
10737
10861
|
return payload;
|
|
10738
10862
|
}
|
|
10739
|
-
/** Load a pre-validated payload (e.g. from cache / localStorage). */
|
|
10863
|
+
/** Load a pre-validated payload (e.g. from cache / localStorage). Runs through the same migration + guardrail pipeline as `validateLicense`. */
|
|
10740
10864
|
loadLicense(payload) {
|
|
10741
|
-
this.payload = payload;
|
|
10865
|
+
this.payload = this.#applyPolicyPipeline(payload);
|
|
10742
10866
|
this.notify();
|
|
10743
10867
|
}
|
|
10868
|
+
/**
|
|
10869
|
+
* Runs a raw/legacy/partial payload through `migrateLegacyPayload` (fills
|
|
10870
|
+
* missing productTier/capabilities/schemaVersion, deterministically, with
|
|
10871
|
+
* warnings) then `validateLicensePolicy` (guardrail normalization).
|
|
10872
|
+
* Any warnings are surfaced via `console.warn` — callers never see a
|
|
10873
|
+
* payload without `capabilities`.
|
|
10874
|
+
*/
|
|
10875
|
+
#applyPolicyPipeline(raw) {
|
|
10876
|
+
const { payload: migrated, warnings: migrationWarnings } = migrateLegacyPayload(raw);
|
|
10877
|
+
const { normalized, warnings: policyWarnings } = validateLicensePolicy(migrated);
|
|
10878
|
+
for (const warning of [...migrationWarnings, ...policyWarnings]) {
|
|
10879
|
+
console.warn(`[LicenseManager] ${warning}`);
|
|
10880
|
+
}
|
|
10881
|
+
return normalized;
|
|
10882
|
+
}
|
|
10744
10883
|
/** Return the currently loaded payload, or null if none. */
|
|
10745
10884
|
getLicense() {
|
|
10746
10885
|
return this.payload;
|
|
@@ -10761,6 +10900,25 @@ var LicenseManager = class _LicenseManager {
|
|
|
10761
10900
|
hasFeature(name) {
|
|
10762
10901
|
return this.getFeatures()[name] === true;
|
|
10763
10902
|
}
|
|
10903
|
+
/**
|
|
10904
|
+
* The entitlement tier driven by the active license.
|
|
10905
|
+
* Defaults to 'core' — the most restrictive tier — so no trading/managed
|
|
10906
|
+
* capability appears without a valid license.
|
|
10907
|
+
*/
|
|
10908
|
+
getProductTier() {
|
|
10909
|
+
return this.payload?.productTier ?? DEFAULT_PRODUCT_TIER;
|
|
10910
|
+
}
|
|
10911
|
+
/**
|
|
10912
|
+
* The resolved capability set for the active license (or the safest
|
|
10913
|
+
* defaults — unmanaged/core — when no license is loaded yet).
|
|
10914
|
+
*/
|
|
10915
|
+
getCapabilities() {
|
|
10916
|
+
return this.payload?.capabilities ?? getDefaultCapabilities(DEFAULT_PRODUCT_TIER, DEFAULT_MODE);
|
|
10917
|
+
}
|
|
10918
|
+
/** Check whether a specific capability is enabled on the active license. */
|
|
10919
|
+
hasCapability(name) {
|
|
10920
|
+
return this.getCapabilities()[name] === true;
|
|
10921
|
+
}
|
|
10764
10922
|
/** Clear the current license state (returns to safe unmanaged defaults). */
|
|
10765
10923
|
clear() {
|
|
10766
10924
|
this.payload = null;
|
|
@@ -10768,16 +10926,6 @@ var LicenseManager = class _LicenseManager {
|
|
|
10768
10926
|
}
|
|
10769
10927
|
};
|
|
10770
10928
|
|
|
10771
|
-
// src/licensing/licenseTypes.ts
|
|
10772
|
-
var TRADING_FEATURE_KEYS = /* @__PURE__ */ new Set([
|
|
10773
|
-
"orderEntry",
|
|
10774
|
-
"managedTrading",
|
|
10775
|
-
"draggableOrders",
|
|
10776
|
-
"bracketOrders",
|
|
10777
|
-
"trailingStops",
|
|
10778
|
-
"positionsOverlay"
|
|
10779
|
-
]);
|
|
10780
|
-
|
|
10781
10929
|
// src/licensing/ChartRuntimeResolver.ts
|
|
10782
10930
|
var ChartRuntimeResolver = class _ChartRuntimeResolver {
|
|
10783
10931
|
static instance = null;
|
|
@@ -10806,15 +10954,23 @@ var ChartRuntimeResolver = class _ChartRuntimeResolver {
|
|
|
10806
10954
|
/**
|
|
10807
10955
|
* Check whether a specific platform feature is enabled.
|
|
10808
10956
|
*
|
|
10809
|
-
* Resolution:
|
|
10810
|
-
* 1. If the feature is a trading feature and
|
|
10957
|
+
* Resolution (capability-driven — never gated on deploymentMode alone):
|
|
10958
|
+
* 1. If the feature is a trading feature and productTier is 'core' → false.
|
|
10811
10959
|
* 2. If the feature has an explicit flag in the license → use it.
|
|
10812
|
-
* 3. Default: true for
|
|
10960
|
+
* 3. Default: true for platform/trading tier, true for non-trading features.
|
|
10813
10961
|
*/
|
|
10814
10962
|
hasFeature(name) {
|
|
10815
|
-
if (TRADING_FEATURE_KEYS.has(name) && this
|
|
10963
|
+
if (TRADING_FEATURE_KEYS.has(name) && this.#isCoreTier()) return false;
|
|
10816
10964
|
return this.#featureOrDefault(name, true);
|
|
10817
10965
|
}
|
|
10966
|
+
/** The entitlement tier driven by the active license. */
|
|
10967
|
+
getProductTier() {
|
|
10968
|
+
return this.lm.getProductTier();
|
|
10969
|
+
}
|
|
10970
|
+
/** True when the active license's productTier is 'core' (no trading capabilities). */
|
|
10971
|
+
#isCoreTier() {
|
|
10972
|
+
return this.lm.getProductTier() === "core";
|
|
10973
|
+
}
|
|
10818
10974
|
// ── Charting capability queries ─────────────────────────────────────────────
|
|
10819
10975
|
/** Chart type selection (candlestick, bar, line, area, etc.). */
|
|
10820
10976
|
canUseChartTypes() {
|
|
@@ -10868,50 +11024,77 @@ var ChartRuntimeResolver = class _ChartRuntimeResolver {
|
|
|
10868
11024
|
// ── Trading capability queries (managed-only by default) ────────────────────
|
|
10869
11025
|
/**
|
|
10870
11026
|
* Built-in order entry UI hooks.
|
|
10871
|
-
*
|
|
11027
|
+
* Ceiling driven by `productTier` (core = false, trading/platform = true) —
|
|
11028
|
+
* available in both Unmanaged Trading and Managed Platform. An explicit
|
|
11029
|
+
* `features.orderEntry` flag on the payload may only narrow below the
|
|
11030
|
+
* ceiling, never elevate above it.
|
|
10872
11031
|
*/
|
|
10873
11032
|
canUseOrderEntry() {
|
|
10874
|
-
|
|
10875
|
-
return this.#featureOrDefault("orderEntry", true);
|
|
11033
|
+
return this.#capabilityWithOverride("orderEntry");
|
|
10876
11034
|
}
|
|
10877
11035
|
/**
|
|
10878
11036
|
* Managed trading service hooks (broker execution, position management).
|
|
10879
|
-
*
|
|
11037
|
+
* Only true for Managed Platform — `managedTrading` is forced off under
|
|
11038
|
+
* unmanaged deployment regardless of tier (see capabilityMatrix).
|
|
10880
11039
|
*/
|
|
10881
11040
|
canUseManagedTrading() {
|
|
10882
|
-
|
|
10883
|
-
return this.#featureOrDefault("managedTrading", true);
|
|
11041
|
+
return this.#capabilityWithOverride("managedTrading");
|
|
10884
11042
|
}
|
|
10885
11043
|
/**
|
|
10886
11044
|
* Drag-to-price order placement.
|
|
10887
|
-
*
|
|
11045
|
+
* Ceiling driven by `productTier` — available in Unmanaged Trading and
|
|
11046
|
+
* Managed Platform.
|
|
10888
11047
|
*/
|
|
10889
11048
|
canUseDraggableOrders() {
|
|
10890
|
-
|
|
10891
|
-
return this.#featureOrDefault("draggableOrders", true);
|
|
11049
|
+
return this.#capabilityWithOverride("draggableOrders");
|
|
10892
11050
|
}
|
|
10893
11051
|
/**
|
|
10894
11052
|
* Bracket / OCO order support.
|
|
10895
|
-
*
|
|
11053
|
+
* Ceiling driven by `productTier` — available in Unmanaged Trading and
|
|
11054
|
+
* Managed Platform.
|
|
10896
11055
|
*/
|
|
10897
11056
|
canUseBracketOrders() {
|
|
10898
|
-
|
|
10899
|
-
|
|
11057
|
+
return this.#capabilityWithOverride("bracketOrders");
|
|
11058
|
+
}
|
|
11059
|
+
/**
|
|
11060
|
+
* Resolve one of the 4 override-able capability keys: the tier×mode matrix
|
|
11061
|
+
* sets the ceiling, an explicit `features[name]` flag may only narrow it.
|
|
11062
|
+
*/
|
|
11063
|
+
#capabilityWithOverride(name) {
|
|
11064
|
+
const ceiling = this.lm.getCapabilities()[name];
|
|
11065
|
+
if (!ceiling) return false;
|
|
11066
|
+
const explicit = this.lm.getFeatures()[name];
|
|
11067
|
+
return explicit === void 0 ? true : explicit === true;
|
|
11068
|
+
}
|
|
11069
|
+
/**
|
|
11070
|
+
* Whether trading UI must route execution through host-supplied intent
|
|
11071
|
+
* handlers rather than a managed backend (Unmanaged Trading only).
|
|
11072
|
+
*/
|
|
11073
|
+
requiresTradingBridge() {
|
|
11074
|
+
return this.lm.getCapabilities().tradingBridgeRequired;
|
|
11075
|
+
}
|
|
11076
|
+
/** Whether the host must supply an `ISymbolResolver` (unmanaged tiers). */
|
|
11077
|
+
requiresSymbolResolver() {
|
|
11078
|
+
return this.lm.getCapabilities().symbolResolverRequired;
|
|
11079
|
+
}
|
|
11080
|
+
/** Whether the full managed app shell should render (Managed Platform only). */
|
|
11081
|
+
hasFullAppShell() {
|
|
11082
|
+
return this.lm.getCapabilities().fullAppShell;
|
|
10900
11083
|
}
|
|
10901
11084
|
/**
|
|
10902
|
-
* Trailing stop orders.
|
|
10903
|
-
*
|
|
11085
|
+
* Trailing stop orders. Not part of the core capability set — gated on
|
|
11086
|
+
* productTier (not deploymentMode) to keep the two axes independent.
|
|
10904
11087
|
*/
|
|
10905
11088
|
canUseTrailingStops() {
|
|
10906
|
-
if (this
|
|
11089
|
+
if (this.#isCoreTier()) return false;
|
|
10907
11090
|
return this.#featureOrDefault("trailingStops", true);
|
|
10908
11091
|
}
|
|
10909
11092
|
/**
|
|
10910
|
-
* Positions overlay on chart.
|
|
10911
|
-
*
|
|
11093
|
+
* Positions overlay on chart. Not part of the core capability set — gated
|
|
11094
|
+
* on productTier (not deploymentMode) to keep the two axes independent.
|
|
10912
11095
|
*/
|
|
10913
11096
|
canUsePositionsOverlay() {
|
|
10914
|
-
if (this
|
|
11097
|
+
if (this.#isCoreTier()) return false;
|
|
10915
11098
|
return this.#featureOrDefault("positionsOverlay", true);
|
|
10916
11099
|
}
|
|
10917
11100
|
// ── Scripting capability queries ────────────────────────────────────────────
|
|
@@ -10951,11 +11134,11 @@ var ChartRuntimeResolver = class _ChartRuntimeResolver {
|
|
|
10951
11134
|
// ── Legacy / backward-compat ────────────────────────────────────────────────
|
|
10952
11135
|
/**
|
|
10953
11136
|
* External data ingestion APIs (e.g. pushing tick data from an external broker).
|
|
10954
|
-
*
|
|
11137
|
+
* Driven by `productTier`/`deploymentMode` via `capabilities.externalIngestion`
|
|
11138
|
+
* — true for core/trading, false for Managed Platform (the managed feed owns data).
|
|
10955
11139
|
*/
|
|
10956
11140
|
canUseExternalIngestion() {
|
|
10957
|
-
|
|
10958
|
-
return this.#featureOrDefault("unmanagedIngestion", false);
|
|
11141
|
+
return this.lm.getCapabilities().externalIngestion;
|
|
10959
11142
|
}
|
|
10960
11143
|
// ── UI render capability checks ──────────────────────────────────────────────
|
|
10961
11144
|
// Component-level gates derived from the feature-level checks above.
|
|
@@ -11016,8 +11199,13 @@ var ChartRuntimeResolver = class _ChartRuntimeResolver {
|
|
|
11016
11199
|
*/
|
|
11017
11200
|
getCapabilities() {
|
|
11018
11201
|
return {
|
|
11019
|
-
// ── Mode
|
|
11202
|
+
// ── Mode / tier ─────────────────────────────────────────────────────
|
|
11020
11203
|
mode: this.lm.getMode(),
|
|
11204
|
+
productTier: this.lm.getProductTier(),
|
|
11205
|
+
// ── Capabilities (the 3-model matrix) ──────────────────────────────
|
|
11206
|
+
symbolResolverRequired: this.requiresSymbolResolver(),
|
|
11207
|
+
tradingBridgeRequired: this.requiresTradingBridge(),
|
|
11208
|
+
fullAppShell: this.hasFullAppShell(),
|
|
11021
11209
|
// ── Charting features ───────────────────────────────────────────────
|
|
11022
11210
|
chartTypes: this.canUseChartTypes(),
|
|
11023
11211
|
drawingTools: this.canUseDrawingTools(),
|
|
@@ -11211,10 +11399,9 @@ function assertManagedMode() {
|
|
|
11211
11399
|
}
|
|
11212
11400
|
}
|
|
11213
11401
|
function assertCanPlaceOrders() {
|
|
11214
|
-
assertManagedMode();
|
|
11215
11402
|
if (!resolver2().canUseOrderEntry()) {
|
|
11216
11403
|
throw new Error(
|
|
11217
|
-
"[ForgeCharts] Order entry is not enabled on the active license. Contact your license provider to enable the orderEntry
|
|
11404
|
+
"[ForgeCharts] Order entry is not enabled on the active license. Contact your license provider to enable the orderEntry capability (requires productTier=trading or productTier=platform)."
|
|
11218
11405
|
);
|
|
11219
11406
|
}
|
|
11220
11407
|
}
|
|
@@ -11222,7 +11409,15 @@ function assertCanUseBrackets() {
|
|
|
11222
11409
|
assertCanPlaceOrders();
|
|
11223
11410
|
if (!resolver2().canUseBracketOrders()) {
|
|
11224
11411
|
throw new Error(
|
|
11225
|
-
"[ForgeCharts] Bracket orders are not enabled on the active license. Contact your license provider to enable the bracketOrders
|
|
11412
|
+
"[ForgeCharts] Bracket orders are not enabled on the active license. Contact your license provider to enable the bracketOrders capability."
|
|
11413
|
+
);
|
|
11414
|
+
}
|
|
11415
|
+
}
|
|
11416
|
+
function assertCanUseManagedBrackets() {
|
|
11417
|
+
assertCanUseManagedTrading();
|
|
11418
|
+
if (!resolver2().canUseBracketOrders()) {
|
|
11419
|
+
throw new Error(
|
|
11420
|
+
"[ForgeCharts] Bracket orders are not enabled on the active license. Contact your license provider to enable the bracketOrders capability."
|
|
11226
11421
|
);
|
|
11227
11422
|
}
|
|
11228
11423
|
}
|
|
@@ -11230,7 +11425,7 @@ function assertCanUseDraggableOrders() {
|
|
|
11230
11425
|
assertCanPlaceOrders();
|
|
11231
11426
|
if (!resolver2().canUseDraggableOrders()) {
|
|
11232
11427
|
throw new Error(
|
|
11233
|
-
"[ForgeCharts] Draggable orders are not enabled on the active license. Contact your license provider to enable the draggableOrders
|
|
11428
|
+
"[ForgeCharts] Draggable orders are not enabled on the active license. Contact your license provider to enable the draggableOrders capability."
|
|
11234
11429
|
);
|
|
11235
11430
|
}
|
|
11236
11431
|
}
|
|
@@ -11238,12 +11433,12 @@ function assertCanUseManagedTrading() {
|
|
|
11238
11433
|
assertManagedMode();
|
|
11239
11434
|
if (!resolver2().canUseManagedTrading()) {
|
|
11240
11435
|
throw new Error(
|
|
11241
|
-
"[ForgeCharts] Managed trading is not enabled on the active license. Contact your license provider to enable the managedTrading
|
|
11436
|
+
"[ForgeCharts] Managed trading is not enabled on the active license. Contact your license provider to enable the managedTrading capability (requires productTier=platform)."
|
|
11242
11437
|
);
|
|
11243
11438
|
}
|
|
11244
11439
|
}
|
|
11245
11440
|
var isManagedCapable = () => resolver2().isManagedMode();
|
|
11246
|
-
var canPlaceOrders = () => resolver2().
|
|
11441
|
+
var canPlaceOrders = () => resolver2().canUseOrderEntry();
|
|
11247
11442
|
var canPlaceBrackets = () => canPlaceOrders() && resolver2().canUseBracketOrders();
|
|
11248
11443
|
var canUseDraggable = () => canPlaceOrders() && resolver2().canUseDraggableOrders();
|
|
11249
11444
|
var canUseManagedTradingHook = () => resolver2().isManagedMode() && resolver2().canUseManagedTrading();
|
|
@@ -11302,7 +11497,7 @@ var ManagedTradingController = class {
|
|
|
11302
11497
|
* (provider event stream) and call _store.upsertOrder() as status changes.
|
|
11303
11498
|
*/
|
|
11304
11499
|
async placeOrder(input) {
|
|
11305
|
-
|
|
11500
|
+
assertCanUseManagedTrading();
|
|
11306
11501
|
if (!this._provider) notImplemented("placeOrder");
|
|
11307
11502
|
const clientId = makeId();
|
|
11308
11503
|
const overlayOrder = {
|
|
@@ -11340,7 +11535,7 @@ var ManagedTradingController = class {
|
|
|
11340
11535
|
* visually fades out rather than disappearing instantly).
|
|
11341
11536
|
*/
|
|
11342
11537
|
async cancelOrder(orderId) {
|
|
11343
|
-
|
|
11538
|
+
assertCanUseManagedTrading();
|
|
11344
11539
|
if (!this._provider) notImplemented("cancelOrder");
|
|
11345
11540
|
await this._provider.cancelOrder(orderId);
|
|
11346
11541
|
const existing = this._store.getOrders().find((o) => o.id === orderId);
|
|
@@ -11360,7 +11555,7 @@ var ManagedTradingController = class {
|
|
|
11360
11555
|
* before forwarding to the provider.
|
|
11361
11556
|
*/
|
|
11362
11557
|
async modifyOrder(orderId, updates) {
|
|
11363
|
-
|
|
11558
|
+
assertCanUseManagedTrading();
|
|
11364
11559
|
if (!this._provider) notImplemented("modifyOrder");
|
|
11365
11560
|
const ack = await this._provider.modifyOrder(orderId, updates);
|
|
11366
11561
|
const existing = this._store.getOrders().find((o) => o.id === orderId);
|
|
@@ -11387,7 +11582,7 @@ var ManagedTradingController = class {
|
|
|
11387
11582
|
* users can adjust prices before confirming.
|
|
11388
11583
|
*/
|
|
11389
11584
|
async placeBracketOrder(input) {
|
|
11390
|
-
|
|
11585
|
+
assertCanUseManagedBrackets();
|
|
11391
11586
|
if (!this._provider) notImplemented("placeBracketOrder");
|
|
11392
11587
|
const groupId = input.entry.groupId ?? makeId();
|
|
11393
11588
|
const ack = await this._provider.placeBracketOrder({
|
|
@@ -24667,6 +24862,6 @@ var demonstrationTool = {
|
|
|
24667
24862
|
cursorStyle: DEMONSTRATION_STYLE
|
|
24668
24863
|
};
|
|
24669
24864
|
|
|
24670
|
-
export { CROSSHAIR_LABEL, CROSSHAIR_STYLE, CURSOR_LABEL, CURSOR_STYLE, CandleEngine, ChartRuntimeResolver, CoordTransform, DEFAULT_SYNC_OPTIONS, DEMONSTRATION_COLOR, DEMONSTRATION_FILL, DEMONSTRATION_LABEL, DEMONSTRATION_RADIUS, DEMONSTRATION_STROKE, DEMONSTRATION_STYLE, DOT_COLOR, DOT_LABEL, DOT_RADIUS, DOT_STYLE, DatafeedConnector, ForgeScriptIndicator, ForgeScriptRuntime, Series2 as ForgeScriptSeries, GridChartContainer, GridSyncProvider, IndicatorDAG, LayoutTemplateSelector, LicenseManager, ManagedTradingController, PaneManager, ReferenceAPI, TChart, TradingOverlayStore, UnmanagedIngestion, assertCanPlaceOrders, assertCanUseBrackets, assertCanUseDraggableOrders, assertCanUseManagedTrading, assertManagedMode, canPlaceBrackets, canPlaceOrders, canRenderBracketControls, canRenderBuySellButtons, canRenderCandles, canRenderDrawings, canRenderExternalOverlayOnlyMode, canRenderFills, canRenderIndicators, canRenderManagedTradingControls, canRenderOrderEntry, canRenderOrderModificationControls, canRenderOrderTicket, canRenderOverlays, canRenderPositions, canUseAiAgent, canUseAlerts, canUseBarReplay, canUseBracketOrders, canUseChartTypes, canUseCustomIndicators, canUseCustomTimeframes, canUseDataExport, canUseDraggable, canUseDraggableOrders, canUseDrawingTools, canUseExtendedDrawings, canUseExternalIngestion, canUseForgeScript, canUseHistoricalData, canUseIndicators, canUseManagedTrading, canUseManagedTradingHook, canUseMultiChartLayout, canUseMultiPane, canUseMultipleProviders, canUseMultipleWorkspaces, canUseOrderEntry, canUsePositionsOverlay, canUseRealtimeData, canUseSavedLayouts, canUseTrailingStops, canUseWatchlists, clearTelemetryListeners, computeEMA, computeEMAFromSeries, computeMACD, computeRSI, computeSMA, computeSMAFromSeries, computeVolume, computeWMAFromSeries, createChart, crosshairTool, cursorTool, demonstrationTool, detectLanguage, detectLanguageWithFallback, dotTool, evaluateSaveGate, exchangeNow, extractField, getBucketStart2 as getBucketStart, getCapabilities, getDefaultStyle, getGridTemplate, getGroupedTemplates, getMissingBarCount, getStyleSlots, hasFeature, initServerClock, isManagedCapable, isManagedMode, isUnmanagedMode, lineStyleToDash, mergeBars, onConversionEvent, resolveStyle, runSandbox, serverClockOffset, serverNow, timeframeToMs2 as timeframeToMs, useGridSync, validateForgeScript };
|
|
24865
|
+
export { CROSSHAIR_LABEL, CROSSHAIR_STYLE, CURRENT_SCHEMA_VERSION, CURSOR_LABEL, CURSOR_STYLE, CandleEngine, ChartRuntimeResolver, CoordTransform, DEFAULT_SYNC_OPTIONS, DEMONSTRATION_COLOR, DEMONSTRATION_FILL, DEMONSTRATION_LABEL, DEMONSTRATION_RADIUS, DEMONSTRATION_STROKE, DEMONSTRATION_STYLE, DOT_COLOR, DOT_LABEL, DOT_RADIUS, DOT_STYLE, DatafeedConnector, ForgeScriptIndicator, ForgeScriptRuntime, Series2 as ForgeScriptSeries, GridChartContainer, GridSyncProvider, IndicatorDAG, LayoutTemplateSelector, LicenseManager, ManagedTradingController, PRODUCT_TIERS, PaneManager, ReferenceAPI, TChart, TradingOverlayStore, UnmanagedIngestion, assertCanPlaceOrders, assertCanUseBrackets, assertCanUseDraggableOrders, assertCanUseManagedTrading, assertManagedMode, canPlaceBrackets, canPlaceOrders, canRenderBracketControls, canRenderBuySellButtons, canRenderCandles, canRenderDrawings, canRenderExternalOverlayOnlyMode, canRenderFills, canRenderIndicators, canRenderManagedTradingControls, canRenderOrderEntry, canRenderOrderModificationControls, canRenderOrderTicket, canRenderOverlays, canRenderPositions, canUseAiAgent, canUseAlerts, canUseBarReplay, canUseBracketOrders, canUseChartTypes, canUseCustomIndicators, canUseCustomTimeframes, canUseDataExport, canUseDraggable, canUseDraggableOrders, canUseDrawingTools, canUseExtendedDrawings, canUseExternalIngestion, canUseForgeScript, canUseHistoricalData, canUseIndicators, canUseManagedTrading, canUseManagedTradingHook, canUseMultiChartLayout, canUseMultiPane, canUseMultipleProviders, canUseMultipleWorkspaces, canUseOrderEntry, canUsePositionsOverlay, canUseRealtimeData, canUseSavedLayouts, canUseTrailingStops, canUseWatchlists, clearTelemetryListeners, computeEMA, computeEMAFromSeries, computeMACD, computeRSI, computeSMA, computeSMAFromSeries, computeVolume, computeWMAFromSeries, createChart, crosshairTool, cursorTool, demonstrationTool, detectLanguage, detectLanguageWithFallback, dotTool, evaluateSaveGate, exchangeNow, extractField, getBucketStart2 as getBucketStart, getCapabilities, getDefaultCapabilities, getDefaultStyle, getGridTemplate, getGroupedTemplates, getMissingBarCount, getStyleSlots, hasFeature, initServerClock, isManagedCapable, isManagedMode, isUnmanagedMode, isValidCombination, lineStyleToDash, mergeBars, migrateLegacyPayload, onConversionEvent, resolveStyle, runSandbox, serverClockOffset, serverNow, timeframeToMs2 as timeframeToMs, useGridSync, validateForgeScript, validateLicensePolicy };
|
|
24671
24866
|
//# sourceMappingURL=index.js.map
|
|
24672
24867
|
//# sourceMappingURL=index.js.map
|