@forgecharts/sdk 1.5.36 → 1.5.38
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 +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +139 -1
- package/dist/index.js.map +1 -1
- package/dist/internal.js +139 -1
- package/dist/internal.js.map +1 -1
- package/dist/licensing/ChartRuntimeResolver.d.ts +20 -0
- package/dist/licensing/ChartRuntimeResolver.d.ts.map +1 -1
- package/dist/licensing/__tests__/packageGating.test.d.ts +2 -0
- package/dist/licensing/__tests__/packageGating.test.d.ts.map +1 -0
- package/dist/licensing/packageFeatures.d.ts +81 -0
- package/dist/licensing/packageFeatures.d.ts.map +1 -0
- package/dist/react/canvas/ChartCanvas.d.ts.map +1 -1
- package/dist/react/hooks/useUserPackage.d.ts +24 -0
- package/dist/react/hooks/useUserPackage.d.ts.map +1 -0
- package/dist/react/index.d.ts +1 -0
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +137 -2
- package/dist/react/index.js.map +1 -1
- package/dist/react/internal.js +137 -2
- package/dist/react/internal.js.map +1 -1
- package/dist/react/workspace/ChartWorkspace.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/internal.js
CHANGED
|
@@ -11106,6 +11106,62 @@ var LicenseManager = class _LicenseManager {
|
|
|
11106
11106
|
}
|
|
11107
11107
|
};
|
|
11108
11108
|
|
|
11109
|
+
// src/licensing/packageFeatures.ts
|
|
11110
|
+
var KIT_FEATURE_TO_CAPABILITY = {
|
|
11111
|
+
// charting
|
|
11112
|
+
drawing_tools: "drawingTools",
|
|
11113
|
+
extended_drawing_tools: "extendedDrawings",
|
|
11114
|
+
indicators: "indicators",
|
|
11115
|
+
multi_pane: "multiPane",
|
|
11116
|
+
chart_types: "chartTypes",
|
|
11117
|
+
bar_replay: "barReplay",
|
|
11118
|
+
custom_timeframes: "customTimeframes",
|
|
11119
|
+
overlays: "overlays",
|
|
11120
|
+
// data
|
|
11121
|
+
historical_data: "historicalData",
|
|
11122
|
+
realtime_data: "realtimeData",
|
|
11123
|
+
multiple_providers: "multipleProviders",
|
|
11124
|
+
data_export: "dataExport",
|
|
11125
|
+
continuous_contracts: "continuousContracts",
|
|
11126
|
+
session_hours: "sessionHours",
|
|
11127
|
+
// trading
|
|
11128
|
+
order_entry: "orderEntry",
|
|
11129
|
+
positions_overlay: "positionsOverlay",
|
|
11130
|
+
bracket_orders: "bracketOrders",
|
|
11131
|
+
trailing_stops: "trailingStops",
|
|
11132
|
+
draggable_orders: "draggableOrders",
|
|
11133
|
+
// scripting
|
|
11134
|
+
forgescript: "forgeScript",
|
|
11135
|
+
custom_indicators: "customIndicators",
|
|
11136
|
+
ai_agent: "aiAgent",
|
|
11137
|
+
// workspace
|
|
11138
|
+
saved_layouts: "savedLayouts",
|
|
11139
|
+
multiple_workspaces: "multipleWorkspaces",
|
|
11140
|
+
watchlists: "watchlists",
|
|
11141
|
+
alerts: "alerts",
|
|
11142
|
+
multi_chart_layout: "multiChartLayout"
|
|
11143
|
+
};
|
|
11144
|
+
var UNMAPPED_KIT_FEATURES = [
|
|
11145
|
+
"delayed_data",
|
|
11146
|
+
"ai_script_conversion"
|
|
11147
|
+
];
|
|
11148
|
+
var PACKAGE_GATED_CAPABILITIES = new Set(
|
|
11149
|
+
Object.values(KIT_FEATURE_TO_CAPABILITY)
|
|
11150
|
+
);
|
|
11151
|
+
function toCapabilityFlags(kitFlags) {
|
|
11152
|
+
const out = {};
|
|
11153
|
+
for (const [kitKey, enabled] of Object.entries(kitFlags)) {
|
|
11154
|
+
const capability = KIT_FEATURE_TO_CAPABILITY[kitKey];
|
|
11155
|
+
if (capability) out[capability] = enabled === true;
|
|
11156
|
+
}
|
|
11157
|
+
return out;
|
|
11158
|
+
}
|
|
11159
|
+
function packageAllows(flags, capability) {
|
|
11160
|
+
if (flags === null) return true;
|
|
11161
|
+
if (!PACKAGE_GATED_CAPABILITIES.has(capability)) return true;
|
|
11162
|
+
return flags[capability] === true;
|
|
11163
|
+
}
|
|
11164
|
+
|
|
11109
11165
|
// src/licensing/ChartRuntimeResolver.ts
|
|
11110
11166
|
var ChartRuntimeResolver = class _ChartRuntimeResolver {
|
|
11111
11167
|
static instance = null;
|
|
@@ -11251,6 +11307,7 @@ var ChartRuntimeResolver = class _ChartRuntimeResolver {
|
|
|
11251
11307
|
#capabilityWithOverride(name) {
|
|
11252
11308
|
const ceiling = this.lm.getCapabilities()[name];
|
|
11253
11309
|
if (!ceiling) return false;
|
|
11310
|
+
if (!packageAllows(this.#userPackageFeatures, name)) return false;
|
|
11254
11311
|
const explicit = this.lm.getFeatures()[name];
|
|
11255
11312
|
return explicit === void 0 ? true : explicit === true;
|
|
11256
11313
|
}
|
|
@@ -11476,10 +11533,44 @@ var ChartRuntimeResolver = class _ChartRuntimeResolver {
|
|
|
11476
11533
|
*/
|
|
11477
11534
|
#featureOrDefault(name, defaultValue) {
|
|
11478
11535
|
if (this.lm.isLockedDown()) return false;
|
|
11536
|
+
if (!packageAllows(this.#userPackageFeatures, name)) return false;
|
|
11479
11537
|
const features = this.lm.getFeatures();
|
|
11480
11538
|
const flag = features[name];
|
|
11481
11539
|
return flag === void 0 ? defaultValue : flag === true;
|
|
11482
11540
|
}
|
|
11541
|
+
// ── Per-user package gating ─────────────────────────────────────────────────
|
|
11542
|
+
/**
|
|
11543
|
+
* Capability flags from the signed-in user's Kit package, or null when none
|
|
11544
|
+
* has been loaded. Null is the default and means "licence only", so every
|
|
11545
|
+
* deployment predating package gating behaves exactly as it did.
|
|
11546
|
+
*/
|
|
11547
|
+
#userPackageFeatures = null;
|
|
11548
|
+
/**
|
|
11549
|
+
* Apply the user's Kit package to capability resolution.
|
|
11550
|
+
*
|
|
11551
|
+
* Pass the `features` map from `GET /api/packages/me` verbatim — snake_case
|
|
11552
|
+
* Kit keys are translated here. Pass null to clear (e.g. on sign-out), which
|
|
11553
|
+
* restores licence-only behaviour.
|
|
11554
|
+
*
|
|
11555
|
+
* This can only ever narrow: a package cannot grant a capability the
|
|
11556
|
+
* deployment licence withholds. Both resolvers below consult the licence
|
|
11557
|
+
* regardless of what the package says.
|
|
11558
|
+
*/
|
|
11559
|
+
setUserPackageFeatures(kitFlags) {
|
|
11560
|
+
this.#userPackageFeatures = kitFlags === null ? null : toCapabilityFlags(kitFlags);
|
|
11561
|
+
}
|
|
11562
|
+
/** The resolved capability flags from the user's package, for diagnostics. */
|
|
11563
|
+
getUserPackageFeatures() {
|
|
11564
|
+
return this.#userPackageFeatures;
|
|
11565
|
+
}
|
|
11566
|
+
/**
|
|
11567
|
+
* True when a package has been applied. Useful for telling "this user has no
|
|
11568
|
+
* package" apart from "package gating is not in use", which otherwise look
|
|
11569
|
+
* identical from the outside.
|
|
11570
|
+
*/
|
|
11571
|
+
hasUserPackage() {
|
|
11572
|
+
return this.#userPackageFeatures !== null;
|
|
11573
|
+
}
|
|
11483
11574
|
};
|
|
11484
11575
|
var resolver = () => ChartRuntimeResolver.getInstance();
|
|
11485
11576
|
var isManagedMode = () => resolver().isManagedMode();
|
|
@@ -18462,6 +18553,52 @@ function useHostLicense(apiUrl, getAuthToken) {
|
|
|
18462
18553
|
};
|
|
18463
18554
|
}, [apiUrl, getAuthToken]);
|
|
18464
18555
|
}
|
|
18556
|
+
function useUserPackage(apiUrl, getAuthToken) {
|
|
18557
|
+
useEffect(() => {
|
|
18558
|
+
const resolver3 = ChartRuntimeResolver.getInstance();
|
|
18559
|
+
if (!apiUrl || !getAuthToken) {
|
|
18560
|
+
resolver3.setUserPackageFeatures(null);
|
|
18561
|
+
return;
|
|
18562
|
+
}
|
|
18563
|
+
let cancelled = false;
|
|
18564
|
+
void (async () => {
|
|
18565
|
+
try {
|
|
18566
|
+
let token = "";
|
|
18567
|
+
try {
|
|
18568
|
+
token = await getAuthToken();
|
|
18569
|
+
} catch {
|
|
18570
|
+
if (!cancelled) resolver3.setUserPackageFeatures(null);
|
|
18571
|
+
return;
|
|
18572
|
+
}
|
|
18573
|
+
if (cancelled) return;
|
|
18574
|
+
if (!token) {
|
|
18575
|
+
resolver3.setUserPackageFeatures(null);
|
|
18576
|
+
return;
|
|
18577
|
+
}
|
|
18578
|
+
const res = await fetch(`${apiUrl.replace(/\/+$/, "")}/api/packages/me`, {
|
|
18579
|
+
headers: { Authorization: `Bearer ${token}` }
|
|
18580
|
+
});
|
|
18581
|
+
if (cancelled) return;
|
|
18582
|
+
if (!res.ok) {
|
|
18583
|
+
resolver3.setUserPackageFeatures(null);
|
|
18584
|
+
return;
|
|
18585
|
+
}
|
|
18586
|
+
const data = await res.json();
|
|
18587
|
+
if (cancelled) return;
|
|
18588
|
+
if (!data.package) {
|
|
18589
|
+
resolver3.setUserPackageFeatures(null);
|
|
18590
|
+
return;
|
|
18591
|
+
}
|
|
18592
|
+
resolver3.setUserPackageFeatures(data.features ?? {});
|
|
18593
|
+
} catch {
|
|
18594
|
+
if (!cancelled) resolver3.setUserPackageFeatures(null);
|
|
18595
|
+
}
|
|
18596
|
+
})();
|
|
18597
|
+
return () => {
|
|
18598
|
+
cancelled = true;
|
|
18599
|
+
};
|
|
18600
|
+
}, [apiUrl, getAuthToken]);
|
|
18601
|
+
}
|
|
18465
18602
|
function LicenseRequiredOverlay({
|
|
18466
18603
|
reason,
|
|
18467
18604
|
onOpenLicenseSettings
|
|
@@ -23042,6 +23179,7 @@ var ChartCanvas = forwardRef(
|
|
|
23042
23179
|
const capabilities = useChartCapabilities();
|
|
23043
23180
|
const dataBlocked = useLicenseDataBlocked();
|
|
23044
23181
|
useHostLicense(apiUrl, getAuthToken);
|
|
23182
|
+
useUserPackage(apiUrl, getAuthToken);
|
|
23045
23183
|
const [indicators, setIndicators] = useState([]);
|
|
23046
23184
|
const [totalHeight, setTotalHeight] = useState(600);
|
|
23047
23185
|
const [activeTool, setActiveTool] = useState(initialActiveTool ?? "cursor");
|
|
@@ -25384,6 +25522,6 @@ var demonstrationTool = {
|
|
|
25384
25522
|
cursorStyle: DEMONSTRATION_STYLE
|
|
25385
25523
|
};
|
|
25386
25524
|
|
|
25387
|
-
export { CROSSHAIR_LABEL, CROSSHAIR_STYLE, CURRENT_SCHEMA_VERSION, CURSOR_LABEL, CURSOR_STYLE, CandleEngine, Chart, ChartRuntimeResolver, CoordTransform, Crosshair, DEFAULT_SYNC_OPTIONS, DEMONSTRATION_COLOR, DEMONSTRATION_FILL, DEMONSTRATION_LABEL, DEMONSTRATION_RADIUS, DEMONSTRATION_STROKE, DEMONSTRATION_STYLE, DOT_COLOR, DOT_LABEL, DOT_RADIUS, DOT_STYLE, DatafeedConnector, DirtyFlags, ForgeScriptIndicator, ForgeScriptRuntime, Series2 as ForgeScriptSeries, GridChartContainer, GridSyncProvider, IndicatorDAG, InteractionManager, LayerName, LayoutTemplateSelector, LicenseManager, ManagedTradingController, PRODUCT_TIERS, PaneManager, PixiBenchmark, PixiChart, PixiLayerManager, PriceScale, ReferenceAPI, Series, TChart, TimeScale, 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 };
|
|
25525
|
+
export { CROSSHAIR_LABEL, CROSSHAIR_STYLE, CURRENT_SCHEMA_VERSION, CURSOR_LABEL, CURSOR_STYLE, CandleEngine, Chart, ChartRuntimeResolver, CoordTransform, Crosshair, DEFAULT_SYNC_OPTIONS, DEMONSTRATION_COLOR, DEMONSTRATION_FILL, DEMONSTRATION_LABEL, DEMONSTRATION_RADIUS, DEMONSTRATION_STROKE, DEMONSTRATION_STYLE, DOT_COLOR, DOT_LABEL, DOT_RADIUS, DOT_STYLE, DatafeedConnector, DirtyFlags, ForgeScriptIndicator, ForgeScriptRuntime, Series2 as ForgeScriptSeries, GridChartContainer, GridSyncProvider, IndicatorDAG, InteractionManager, KIT_FEATURE_TO_CAPABILITY, LayerName, LayoutTemplateSelector, LicenseManager, ManagedTradingController, PACKAGE_GATED_CAPABILITIES, PRODUCT_TIERS, PaneManager, PixiBenchmark, PixiChart, PixiLayerManager, PriceScale, ReferenceAPI, Series, TChart, TimeScale, TradingOverlayStore, UNMAPPED_KIT_FEATURES, 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, packageAllows, resolveStyle, runSandbox, serverClockOffset, serverNow, timeframeToMs2 as timeframeToMs, toCapabilityFlags, useGridSync, validateForgeScript, validateLicensePolicy };
|
|
25388
25526
|
//# sourceMappingURL=internal.js.map
|
|
25389
25527
|
//# sourceMappingURL=internal.js.map
|