@player-tools/devtools-basic-web-plugin 0.5.3--canary.90.2515 → 0.6.0-next.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/dist/cjs/index.cjs +14 -2
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/index.legacy-esm.js +14 -2
- package/dist/index.mjs +14 -2
- package/dist/index.mjs.map +1 -1
- package/package.json +5 -5
- package/src/WrapperComponent.tsx +1 -1
- package/src/constants/index.ts +3 -0
- package/src/helpers/__tests__/genDataChangeTransaction.test.ts +40 -0
- package/src/helpers/__tests__/getEvaluateExpression.test.ts +106 -0
- package/src/helpers/genDataChangeTransaction.ts +11 -1
- package/src/helpers/getEvaluateExpression.ts +9 -0
- package/src/index.tsx +16 -2
- package/types/WrapperComponent.d.ts +1 -1
- package/types/constants/index.d.ts +1 -0
- package/types/helpers/genDataChangeTransaction.d.ts +8 -0
- package/types/helpers/getEvaluateExpression.d.ts +9 -0
- package/types/index.d.ts +2 -1
package/dist/cjs/index.cjs
CHANGED
|
@@ -58,6 +58,7 @@ var BASE_PLUGIN_DATA = {
|
|
|
58
58
|
description: PLUGIN_DESCRIPTION,
|
|
59
59
|
version: PLUGIN_VERSION
|
|
60
60
|
};
|
|
61
|
+
var PLUGIN_INACTIVE_WARNING = "The plugin has been registered, but the Player development tools are not active. If you are working in a production environment, it is recommended to remove the plugin. Either way, you can activate the Player development tools by clicking on the extension popup and refreshing the page.";
|
|
61
62
|
|
|
62
63
|
// ../../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/devtools/plugins/desktop/basic/src/helpers/getEvaluateExpression.ts
|
|
63
64
|
var import_uuid = require("uuid");
|
|
@@ -102,13 +103,14 @@ var getEvaluateExpression = (expressionEvaluator) => (expression) => {
|
|
|
102
103
|
};
|
|
103
104
|
|
|
104
105
|
// ../../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/devtools/plugins/desktop/basic/src/helpers/genDataChangeTransaction.ts
|
|
106
|
+
var NOOP_ID = -1;
|
|
105
107
|
var genDataChangeTransaction = ({
|
|
106
108
|
playerID,
|
|
107
109
|
data,
|
|
108
110
|
pluginID
|
|
109
111
|
}) => {
|
|
110
112
|
return {
|
|
111
|
-
id:
|
|
113
|
+
id: NOOP_ID,
|
|
112
114
|
type: "PLAYER_DEVTOOLS_PLUGIN_DATA_CHANGE",
|
|
113
115
|
payload: {
|
|
114
116
|
pluginID,
|
|
@@ -858,7 +860,7 @@ var WrapperComponent = ({
|
|
|
858
860
|
|
|
859
861
|
// ../../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/devtools/plugins/desktop/basic/src/index.tsx
|
|
860
862
|
var BasicWevDevtoolsPlugin = class {
|
|
861
|
-
name =
|
|
863
|
+
name = PLUGIN_ID;
|
|
862
864
|
data = {};
|
|
863
865
|
playerConfig = {};
|
|
864
866
|
logs = [];
|
|
@@ -866,7 +868,14 @@ var BasicWevDevtoolsPlugin = class {
|
|
|
866
868
|
expressionEvaluator;
|
|
867
869
|
view;
|
|
868
870
|
dataController;
|
|
871
|
+
checkIfDevtoolsIsActive() {
|
|
872
|
+
return localStorage.getItem("player-ui-devtools-active") === "true";
|
|
873
|
+
}
|
|
869
874
|
apply(player) {
|
|
875
|
+
if (!this.checkIfDevtoolsIsActive()) {
|
|
876
|
+
console.log(PLUGIN_INACTIVE_WARNING);
|
|
877
|
+
return;
|
|
878
|
+
}
|
|
870
879
|
this.playerConfig = {
|
|
871
880
|
version: player.getVersion(),
|
|
872
881
|
plugins: player.getPlugins().map((plugin) => plugin.name)
|
|
@@ -895,6 +904,9 @@ var BasicWevDevtoolsPlugin = class {
|
|
|
895
904
|
});
|
|
896
905
|
}
|
|
897
906
|
applyReact(reactPlayer) {
|
|
907
|
+
if (!this.checkIfDevtoolsIsActive()) {
|
|
908
|
+
return;
|
|
909
|
+
}
|
|
898
910
|
reactPlayer.hooks.webComponent.tap(this.name, (Comp) => () => {
|
|
899
911
|
const Component = Comp;
|
|
900
912
|
return /* @__PURE__ */ import_react2.default.createElement(
|
package/dist/cjs/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/devtools/plugins/desktop/basic/src/index.tsx","../../../../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/devtools/plugins/desktop/basic/src/WrapperComponent.tsx","../../../../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/devtools/plugins/desktop/basic/src/constants/index.ts","../../../../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/devtools/plugins/desktop/basic/src/helpers/getEvaluateExpression.ts","../../../../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/devtools/plugins/desktop/basic/src/helpers/genDataChangeTransaction.ts","../../../../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/devtools/plugins/desktop/basic/_generated/index.json"],"sourcesContent":["import type {\n DataController,\n ExpressionEvaluator,\n Flow,\n Player,\n ReactPlayer,\n ReactPlayerPlugin,\n ViewInstance,\n} from \"@player-ui/react\";\nimport { dset } from \"dset/merge\";\nimport { produce } from \"immer\";\nimport React from \"react\";\nimport { WrapperComponent } from \"./WrapperComponent\";\n\n/** Basic Web Devtools Plugin */\nexport class BasicWevDevtoolsPlugin implements ReactPlayerPlugin {\n name = \"player_ui_basic_devtools_plugin\";\n\n data: Record<string, unknown> = {};\n\n playerConfig: Record<string, unknown> = {};\n\n logs: {\n severity: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n message: any;\n }[] = [];\n\n flow?: Flow;\n\n expressionEvaluator?: WeakRef<ExpressionEvaluator>;\n\n view?: WeakRef<ViewInstance>;\n\n dataController?: WeakRef<DataController>;\n\n apply(player: Player) {\n // Config\n this.playerConfig = {\n version: player.getVersion(),\n plugins: player.getPlugins().map((plugin) => plugin.name),\n };\n\n // Data\n player.hooks.dataController.tap(this.name, (dataController) => {\n dataController.hooks.onUpdate.tap(this.name, (updates) => {\n const newPlayerState = produce(this.data, (draft) => {\n updates.forEach(({ binding, newValue }) => {\n dset(draft, [\"data\", ...binding.asArray()], newValue);\n });\n });\n this.data = newPlayerState;\n });\n });\n\n // Logs\n player.logger.hooks.log.tap(this.name, (severity, message) => {\n this.logs = [...this.logs, { severity, message }];\n });\n\n // Flow\n player.hooks.onStart.tap(this.name, (f) => {\n this.flow = f;\n });\n\n // View\n player.hooks.view.tap(this.name, (view) => {\n this.view = new WeakRef(view);\n });\n\n // Expression evaluator\n player.hooks.expressionEvaluator.tap(this.name, (evaluator) => {\n this.expressionEvaluator = new WeakRef(evaluator);\n });\n }\n\n applyReact(reactPlayer: ReactPlayer) {\n // eslint-disable-next-line react/display-name\n reactPlayer.hooks.webComponent.tap(this.name, (Comp) => () => {\n const Component = Comp as React.FC;\n\n return (\n <WrapperComponent\n playerConfig={this.playerConfig}\n data={this.data}\n logs={this.logs}\n flow={this.flow}\n view={this.view}\n expressionEvaluator={this.expressionEvaluator}\n >\n <Component />\n </WrapperComponent>\n );\n });\n }\n}\n","import { usePluginState } from \"@player-tools/devtools-desktop-plugins-common\";\nimport type {\n DevtoolsPluginInteractionEvent,\n PlayerInitEvent,\n PluginData,\n Transaction,\n} from \"@player-tools/devtools-types\";\nimport type { Flow } from \"@player-ui/react\";\nimport { dequal } from \"dequal\";\nimport { dset } from \"dset/merge\";\nimport { produce } from \"immer\";\nimport React, { useCallback, useEffect } from \"react\";\nimport { BASE_PLUGIN_DATA, INTERACTIONS } from \"./constants\";\nimport type { Evaluation, WrapperComponentProps } from \"./types\";\nimport { genDataChangeTransaction, getEvaluateExpression } from \"./helpers\";\nimport flow from \"../_generated/index.json\";\n\nconst pluginData: PluginData = {\n ...BASE_PLUGIN_DATA,\n flow: flow as Flow,\n};\n\n/** Tap into the ReactPlayer hooks and create the content to be rendered into the extension Player UI */\nexport const WrapperComponent = ({\n children,\n data,\n playerConfig,\n logs,\n flow,\n expressionEvaluator,\n}: WrapperComponentProps): JSX.Element => {\n const [state, playerID, dispatch] = usePluginState();\n const lastProcessedInteraction = React.useRef(0);\n const expEvaluator = useCallback(getEvaluateExpression(expressionEvaluator), [\n expressionEvaluator,\n ]);\n\n const id = pluginData.id;\n\n const processInteraction = useCallback(\n (interaction: DevtoolsPluginInteractionEvent) => {\n const {\n payload: { type, payload },\n } = interaction;\n if (\n type === INTERACTIONS.EVALUATE_EXPRESSION &&\n expressionEvaluator &&\n payload\n ) {\n const result = expEvaluator(payload);\n\n const newState = produce(state, (draft) => {\n const current: Array<Evaluation> =\n (state?.plugins?.[id]?.flow?.data?.history as Array<Evaluation>) ||\n [];\n dset(\n draft,\n [\"plugins\", id, \"flow\", \"data\", \"history\"],\n [...current, result]\n );\n });\n\n dispatch({\n id: -1,\n type: \"PLAYER_DEVTOOLS_PLUGIN_DATA_CHANGE\",\n payload: {\n pluginID: id,\n data: newState.plugins[id].flow.data,\n },\n sender: playerID,\n context: \"player\",\n target: \"player\",\n timestamp: Date.now(),\n _messenger_: true,\n });\n\n lastProcessedInteraction.current += 1;\n }\n },\n [dispatch, expressionEvaluator, id, state]\n );\n\n // inject playerConfig into the plugin data\n const pluginDataWithPlayerConfig = produce(pluginData, (draft) => {\n dset(draft, [\"flow\", \"data\", \"playerConfig\"], playerConfig);\n });\n\n // Initial plugin content\n useEffect(() => {\n const transaction: Transaction<PlayerInitEvent> = {\n id: -1,\n type: \"PLAYER_DEVTOOLS_PLAYER_INIT\",\n payload: {\n plugins: {\n [id]: pluginDataWithPlayerConfig,\n },\n },\n sender: playerID,\n context: \"player\",\n target: \"player\",\n timestamp: Date.now(),\n _messenger_: true,\n };\n\n dispatch(transaction);\n }, []);\n\n // Process interactions\n useEffect(() => {\n if (lastProcessedInteraction.current < (state.interactions.length ?? 0)) {\n state.interactions\n .slice(lastProcessedInteraction.current)\n .forEach(processInteraction);\n }\n }, [state.interactions.length]);\n\n // Data changes\n useEffect(() => {\n if (dequal(state.plugins[id]?.flow?.data?.data, data)) return;\n\n const newState = produce(state, (draft) => {\n dset(draft, [\"plugins\", id, \"flow\", \"data\", \"data\"], data);\n });\n\n const transaction = genDataChangeTransaction({\n playerID,\n data: newState.plugins[id].flow.data,\n pluginID: id,\n });\n\n dispatch(transaction);\n }, [data]);\n\n // Logs changes\n useEffect(() => {\n if (dequal(state.plugins[id]?.flow?.data?.logs, logs)) return;\n\n const newState = produce(state, (draft) => {\n dset(draft, [\"plugins\", id, \"flow\", \"data\", \"logs\"], logs);\n });\n\n const transaction = genDataChangeTransaction({\n playerID,\n data: newState.plugins[id].flow.data,\n pluginID: id,\n });\n\n dispatch(transaction);\n }, [logs]);\n\n // Flow changes\n useEffect(() => {\n if (dequal(state.plugins[id]?.flow?.data?.flow, flow)) return;\n\n const newState = produce(state, (draft) => {\n dset(draft, [\"plugins\", id, \"flow\", \"data\", \"flow\"], flow);\n });\n\n const transaction = genDataChangeTransaction({\n playerID,\n data: newState.plugins[id].flow.data,\n pluginID: id,\n });\n\n dispatch(transaction);\n }, [flow]);\n\n return children as JSX.Element;\n};\n","import type { PluginData } from \"@player-tools/devtools-types\";\n\nexport const PLUGIN_ID = \"player-ui-basic-devtools-plugin\";\n\nexport const PLUGIN_NAME = \"Standard Devtools\";\n\nexport const PLUGIN_DESCRIPTION = \"Standard Player UI Devtools\";\n\nexport const PLUGIN_VERSION = \"0.0.1\";\n\nexport const VIEWS_IDS = {\n CONFIG: \"Config\",\n FLOW: \"Flow\",\n LOGS: \"Logs\",\n CONSOLE: \"Console\",\n};\n\nexport const INTERACTIONS = {\n EVALUATE_EXPRESSION: \"evaluate-expression\",\n};\n\nexport const BASE_PLUGIN_DATA: Omit<PluginData, \"flow\"> = {\n id: PLUGIN_ID,\n name: PLUGIN_NAME,\n description: PLUGIN_DESCRIPTION,\n version: PLUGIN_VERSION,\n};\n","import { ExpressionEvaluator } from \"@player-ui/react\";\nimport { v4 as uuid } from \"uuid\";\nimport { Evaluation } from \"../types\";\n\nexport const getEvaluateExpression =\n (expressionEvaluator?: WeakRef<ExpressionEvaluator>) =>\n (expression: string): Evaluation => {\n if (!expressionEvaluator) {\n return {\n id: uuid(),\n severity: \"error\",\n result: \"Expression evaluator not available\",\n expression,\n };\n }\n\n let result: Evaluation = {\n id: uuid(),\n severity: \"error\",\n result: \"Something went wrong\",\n expression,\n };\n\n try {\n expressionEvaluator.deref()?.hooks.onError.intercept({\n call: (error: Error) => {\n throw error;\n },\n });\n\n const evaluatorResult = expressionEvaluator.deref()?.evaluate(expression);\n\n result = {\n id: uuid(),\n result: evaluatorResult,\n expression,\n };\n } catch (error) {\n if (error instanceof Error) {\n result = {\n id: uuid(),\n severity: \"error\",\n result: error.message,\n expression,\n };\n }\n }\n\n return result;\n };\n","import type {\n DevtoolsDataChangeEvent,\n Transaction,\n} from \"@player-tools/devtools-types\";\nimport type { Flow } from \"@player-ui/react\";\n\nexport const genDataChangeTransaction = ({\n playerID,\n data,\n pluginID,\n}: {\n playerID: string;\n data: Flow[\"data\"];\n pluginID: string;\n}): Transaction<DevtoolsDataChangeEvent> => {\n return {\n id: -1,\n type: \"PLAYER_DEVTOOLS_PLUGIN_DATA_CHANGE\",\n payload: {\n pluginID,\n data,\n },\n sender: playerID,\n context: \"player\",\n target: \"player\",\n timestamp: Date.now(),\n _messenger_: true,\n };\n};\n","{\n \"id\": \"player-ui-basic-devtools-plugin\",\n \"views\": [\n {\n \"id\": \"Config\",\n \"type\": \"stacked-view\",\n \"header\": {\n \"asset\": {\n \"id\": \"Config-header\",\n \"type\": \"navigation\",\n \"values\": [\n {\n \"asset\": {\n \"id\": \"Config-header-values-0\",\n \"type\": \"action\",\n \"value\": \"Config\",\n \"label\": {\n \"asset\": {\n \"id\": \"Config-header-values-0-label\",\n \"type\": \"text\",\n \"value\": \"Config\"\n }\n }\n }\n },\n {\n \"asset\": {\n \"id\": \"Config-header-values-1\",\n \"type\": \"action\",\n \"value\": \"Flow\",\n \"label\": {\n \"asset\": {\n \"id\": \"Config-header-values-1-label\",\n \"type\": \"text\",\n \"value\": \"Flow\"\n }\n }\n }\n },\n {\n \"asset\": {\n \"id\": \"Config-header-values-2\",\n \"type\": \"action\",\n \"value\": \"Logs\",\n \"label\": {\n \"asset\": {\n \"id\": \"Config-header-values-2-label\",\n \"type\": \"text\",\n \"value\": \"Logs\"\n }\n }\n }\n },\n {\n \"asset\": {\n \"id\": \"Config-header-values-3\",\n \"type\": \"action\",\n \"value\": \"Console\",\n \"label\": {\n \"asset\": {\n \"id\": \"Config-header-values-3-label\",\n \"type\": \"text\",\n \"value\": \"Console\"\n }\n }\n }\n }\n ]\n }\n },\n \"main\": {\n \"asset\": {\n \"id\": \"Config-main\",\n \"type\": \"object-inspector\",\n \"binding\": \"playerConfig\",\n \"label\": {\n \"asset\": {\n \"id\": \"Config-main-label\",\n \"type\": \"text\",\n \"value\": \"Config\"\n }\n }\n }\n }\n },\n {\n \"id\": \"Flow\",\n \"type\": \"stacked-view\",\n \"header\": {\n \"asset\": {\n \"id\": \"Flow-header\",\n \"type\": \"navigation\",\n \"values\": [\n {\n \"asset\": {\n \"id\": \"Flow-header-values-0\",\n \"type\": \"action\",\n \"value\": \"Config\",\n \"label\": {\n \"asset\": {\n \"id\": \"Flow-header-values-0-label\",\n \"type\": \"text\",\n \"value\": \"Config\"\n }\n }\n }\n },\n {\n \"asset\": {\n \"id\": \"Flow-header-values-1\",\n \"type\": \"action\",\n \"value\": \"Flow\",\n \"label\": {\n \"asset\": {\n \"id\": \"Flow-header-values-1-label\",\n \"type\": \"text\",\n \"value\": \"Flow\"\n }\n }\n }\n },\n {\n \"asset\": {\n \"id\": \"Flow-header-values-2\",\n \"type\": \"action\",\n \"value\": \"Logs\",\n \"label\": {\n \"asset\": {\n \"id\": \"Flow-header-values-2-label\",\n \"type\": \"text\",\n \"value\": \"Logs\"\n }\n }\n }\n },\n {\n \"asset\": {\n \"id\": \"Flow-header-values-3\",\n \"type\": \"action\",\n \"value\": \"Console\",\n \"label\": {\n \"asset\": {\n \"id\": \"Flow-header-values-3-label\",\n \"type\": \"text\",\n \"value\": \"Console\"\n }\n }\n }\n }\n ]\n }\n },\n \"main\": {\n \"asset\": {\n \"id\": \"Flow-main\",\n \"type\": \"object-inspector\",\n \"binding\": \"flow\",\n \"label\": {\n \"asset\": {\n \"id\": \"Flow-main-label\",\n \"type\": \"text\",\n \"value\": \"Flow\"\n }\n }\n }\n },\n \"footer\": {\n \"asset\": {\n \"id\": \"Flow-footer\",\n \"type\": \"copy-to-clipboard\",\n \"binding\": \"flow\",\n \"label\": {\n \"asset\": {\n \"id\": \"Flow-footer-label\",\n \"type\": \"text\",\n \"value\": \"Copy flow to the clipboard\"\n }\n }\n }\n }\n },\n {\n \"id\": \"Logs\",\n \"type\": \"stacked-view\",\n \"header\": {\n \"asset\": {\n \"id\": \"Logs-header\",\n \"type\": \"navigation\",\n \"values\": [\n {\n \"asset\": {\n \"id\": \"Logs-header-values-0\",\n \"type\": \"action\",\n \"value\": \"Config\",\n \"label\": {\n \"asset\": {\n \"id\": \"Logs-header-values-0-label\",\n \"type\": \"text\",\n \"value\": \"Config\"\n }\n }\n }\n },\n {\n \"asset\": {\n \"id\": \"Logs-header-values-1\",\n \"type\": \"action\",\n \"value\": \"Flow\",\n \"label\": {\n \"asset\": {\n \"id\": \"Logs-header-values-1-label\",\n \"type\": \"text\",\n \"value\": \"Flow\"\n }\n }\n }\n },\n {\n \"asset\": {\n \"id\": \"Logs-header-values-2\",\n \"type\": \"action\",\n \"value\": \"Logs\",\n \"label\": {\n \"asset\": {\n \"id\": \"Logs-header-values-2-label\",\n \"type\": \"text\",\n \"value\": \"Logs\"\n }\n }\n }\n },\n {\n \"asset\": {\n \"id\": \"Logs-header-values-3\",\n \"type\": \"action\",\n \"value\": \"Console\",\n \"label\": {\n \"asset\": {\n \"id\": \"Logs-header-values-3-label\",\n \"type\": \"text\",\n \"value\": \"Console\"\n }\n }\n }\n }\n ]\n }\n },\n \"main\": {\n \"asset\": {\n \"id\": \"Logs-main\",\n \"type\": \"table\",\n \"binding\": \"logs\"\n }\n }\n },\n {\n \"id\": \"Console\",\n \"type\": \"stacked-view\",\n \"header\": {\n \"asset\": {\n \"id\": \"Console-header\",\n \"type\": \"navigation\",\n \"values\": [\n {\n \"asset\": {\n \"id\": \"Console-header-values-0\",\n \"type\": \"action\",\n \"value\": \"Config\",\n \"label\": {\n \"asset\": {\n \"id\": \"Console-header-values-0-label\",\n \"type\": \"text\",\n \"value\": \"Config\"\n }\n }\n }\n },\n {\n \"asset\": {\n \"id\": \"Console-header-values-1\",\n \"type\": \"action\",\n \"value\": \"Flow\",\n \"label\": {\n \"asset\": {\n \"id\": \"Console-header-values-1-label\",\n \"type\": \"text\",\n \"value\": \"Flow\"\n }\n }\n }\n },\n {\n \"asset\": {\n \"id\": \"Console-header-values-2\",\n \"type\": \"action\",\n \"value\": \"Logs\",\n \"label\": {\n \"asset\": {\n \"id\": \"Console-header-values-2-label\",\n \"type\": \"text\",\n \"value\": \"Logs\"\n }\n }\n }\n },\n {\n \"asset\": {\n \"id\": \"Console-header-values-3\",\n \"type\": \"action\",\n \"value\": \"Console\",\n \"label\": {\n \"asset\": {\n \"id\": \"Console-header-values-3-label\",\n \"type\": \"text\",\n \"value\": \"Console\"\n }\n }\n }\n }\n ]\n }\n },\n \"main\": {\n \"asset\": {\n \"id\": \"Console-main\",\n \"type\": \"console\",\n \"exp\": \" publish('evaluate-expression', {{expression}}) \",\n \"binding\": \"history\"\n }\n }\n }\n ],\n \"navigation\": {\n \"BEGIN\": \"Plugin\",\n \"Plugin\": {\n \"startState\": \"CONFIG\",\n \"CONFIG\": {\n \"state_type\": \"VIEW\",\n \"ref\": \"Config\",\n \"transitions\": {\n \"Config\": \"CONFIG\",\n \"Flow\": \"FLOW\",\n \"Logs\": \"LOGS\",\n \"Console\": \"CONSOLE\"\n }\n },\n \"FLOW\": {\n \"state_type\": \"VIEW\",\n \"ref\": \"Flow\",\n \"transitions\": {\n \"Config\": \"CONFIG\",\n \"Flow\": \"FLOW\",\n \"Logs\": \"LOGS\",\n \"Console\": \"CONSOLE\"\n }\n },\n \"LOGS\": {\n \"state_type\": \"VIEW\",\n \"ref\": \"Logs\",\n \"transitions\": {\n \"Config\": \"CONFIG\",\n \"Flow\": \"FLOW\",\n \"Logs\": \"LOGS\",\n \"Console\": \"CONSOLE\"\n }\n },\n \"CONSOLE\": {\n \"state_type\": \"VIEW\",\n \"ref\": \"Console\",\n \"transitions\": {\n \"Config\": \"CONFIG\",\n \"Flow\": \"FLOW\",\n \"Logs\": \"LOGS\",\n \"Console\": \"CONSOLE\"\n }\n }\n }\n },\n \"schema\": {\n \"ROOT\": {\n \"playerConfig\": {\n \"type\": \"RecordType\"\n },\n \"flow\": {\n \"type\": \"RecordType\"\n },\n \"expression\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n },\n \"history\": {\n \"type\": \"historyType\",\n \"isArray\": true\n },\n \"logs\": {\n \"type\": \"logsType\",\n \"isArray\": true\n }\n },\n \"logsType\": {\n \"id\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n },\n \"time\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n },\n \"type\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n },\n \"message\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n },\n \"severity\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n },\n \"binding\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n },\n \"from\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n },\n \"to\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n },\n \"state\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n },\n \"error\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n },\n \"outcome\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n },\n \"metricType\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n }\n },\n \"historyType\": {\n \"id\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n },\n \"expression\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n },\n \"result\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n },\n \"severity\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n }\n }\n },\n \"data\": {\n \"expression\": \"\",\n \"flow\": {},\n \"history\": [],\n \"logs\": [],\n \"playerConfig\": {}\n }\n}"],"mappings":"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","names":["import_merge","import_immer","import_react","uuid","React","React"]}
|
|
1
|
+
{"version":3,"sources":["../../../../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/devtools/plugins/desktop/basic/src/index.tsx","../../../../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/devtools/plugins/desktop/basic/src/WrapperComponent.tsx","../../../../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/devtools/plugins/desktop/basic/src/constants/index.ts","../../../../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/devtools/plugins/desktop/basic/src/helpers/getEvaluateExpression.ts","../../../../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/devtools/plugins/desktop/basic/src/helpers/genDataChangeTransaction.ts","../../../../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/devtools/plugins/desktop/basic/_generated/index.json"],"sourcesContent":["import type {\n DataController,\n ExpressionEvaluator,\n Flow,\n Player,\n ReactPlayer,\n ReactPlayerPlugin,\n ViewInstance,\n} from \"@player-ui/react\";\nimport { dset } from \"dset/merge\";\nimport { produce } from \"immer\";\nimport React from \"react\";\nimport { WrapperComponent } from \"./WrapperComponent\";\nimport { PLUGIN_ID, PLUGIN_INACTIVE_WARNING } from \"./constants\";\n\n/** Taps into the Player and ReactPlayer hooks and leverage the WrapperComponent to define and process the content. */\nexport class BasicWevDevtoolsPlugin implements ReactPlayerPlugin {\n name = PLUGIN_ID;\n\n data: Record<string, unknown> = {};\n\n playerConfig: Record<string, unknown> = {};\n\n logs: {\n severity: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n message: any;\n }[] = [];\n\n flow?: Flow;\n\n expressionEvaluator?: WeakRef<ExpressionEvaluator>;\n\n view?: WeakRef<ViewInstance>;\n\n dataController?: WeakRef<DataController>;\n\n checkIfDevtoolsIsActive() {\n return localStorage.getItem(\"player-ui-devtools-active\") === \"true\";\n }\n\n apply(player: Player) {\n if (!this.checkIfDevtoolsIsActive()) {\n console.log(PLUGIN_INACTIVE_WARNING);\n return;\n }\n\n // Config\n this.playerConfig = {\n version: player.getVersion(),\n plugins: player.getPlugins().map((plugin) => plugin.name),\n };\n\n // Data\n player.hooks.dataController.tap(this.name, (dataController) => {\n dataController.hooks.onUpdate.tap(this.name, (updates) => {\n const newPlayerState = produce(this.data, (draft) => {\n updates.forEach(({ binding, newValue }) => {\n dset(draft, [\"data\", ...binding.asArray()], newValue);\n });\n });\n this.data = newPlayerState;\n });\n });\n\n // Logs\n player.logger.hooks.log.tap(this.name, (severity, message) => {\n this.logs = [...this.logs, { severity, message }];\n });\n\n // Flow\n player.hooks.onStart.tap(this.name, (f) => {\n this.flow = f;\n });\n\n // View\n player.hooks.view.tap(this.name, (view) => {\n this.view = new WeakRef(view);\n });\n\n // Expression evaluator\n player.hooks.expressionEvaluator.tap(this.name, (evaluator) => {\n this.expressionEvaluator = new WeakRef(evaluator);\n });\n }\n\n applyReact(reactPlayer: ReactPlayer) {\n if (!this.checkIfDevtoolsIsActive()) {\n return;\n }\n\n // eslint-disable-next-line react/display-name\n reactPlayer.hooks.webComponent.tap(this.name, (Comp) => () => {\n const Component = Comp as React.FC;\n\n return (\n <WrapperComponent\n playerConfig={this.playerConfig}\n data={this.data}\n logs={this.logs}\n flow={this.flow}\n view={this.view}\n expressionEvaluator={this.expressionEvaluator}\n >\n <Component />\n </WrapperComponent>\n );\n });\n }\n}\n","import { usePluginState } from \"@player-tools/devtools-desktop-plugins-common\";\nimport type {\n DevtoolsPluginInteractionEvent,\n PlayerInitEvent,\n PluginData,\n Transaction,\n} from \"@player-tools/devtools-types\";\nimport type { Flow } from \"@player-ui/react\";\nimport { dequal } from \"dequal\";\nimport { dset } from \"dset/merge\";\nimport { produce } from \"immer\";\nimport React, { useCallback, useEffect } from \"react\";\nimport { BASE_PLUGIN_DATA, INTERACTIONS } from \"./constants\";\nimport type { Evaluation, WrapperComponentProps } from \"./types\";\nimport { genDataChangeTransaction, getEvaluateExpression } from \"./helpers\";\nimport flow from \"../_generated/index.json\";\n\nconst pluginData: PluginData = {\n ...BASE_PLUGIN_DATA,\n flow: flow as Flow,\n};\n\n/** Defines the content to be rendered into the extension Player UI and process changes */\nexport const WrapperComponent = ({\n children,\n data,\n playerConfig,\n logs,\n flow,\n expressionEvaluator,\n}: WrapperComponentProps): JSX.Element => {\n const [state, playerID, dispatch] = usePluginState();\n const lastProcessedInteraction = React.useRef(0);\n const expEvaluator = useCallback(getEvaluateExpression(expressionEvaluator), [\n expressionEvaluator,\n ]);\n\n const id = pluginData.id;\n\n const processInteraction = useCallback(\n (interaction: DevtoolsPluginInteractionEvent) => {\n const {\n payload: { type, payload },\n } = interaction;\n if (\n type === INTERACTIONS.EVALUATE_EXPRESSION &&\n expressionEvaluator &&\n payload\n ) {\n const result = expEvaluator(payload);\n\n const newState = produce(state, (draft) => {\n const current: Array<Evaluation> =\n (state?.plugins?.[id]?.flow?.data?.history as Array<Evaluation>) ||\n [];\n dset(\n draft,\n [\"plugins\", id, \"flow\", \"data\", \"history\"],\n [...current, result]\n );\n });\n\n dispatch({\n id: -1,\n type: \"PLAYER_DEVTOOLS_PLUGIN_DATA_CHANGE\",\n payload: {\n pluginID: id,\n data: newState.plugins[id].flow.data,\n },\n sender: playerID,\n context: \"player\",\n target: \"player\",\n timestamp: Date.now(),\n _messenger_: true,\n });\n\n lastProcessedInteraction.current += 1;\n }\n },\n [dispatch, expressionEvaluator, id, state]\n );\n\n // inject playerConfig into the plugin data\n const pluginDataWithPlayerConfig = produce(pluginData, (draft) => {\n dset(draft, [\"flow\", \"data\", \"playerConfig\"], playerConfig);\n });\n\n // Initial plugin content\n useEffect(() => {\n const transaction: Transaction<PlayerInitEvent> = {\n id: -1,\n type: \"PLAYER_DEVTOOLS_PLAYER_INIT\",\n payload: {\n plugins: {\n [id]: pluginDataWithPlayerConfig,\n },\n },\n sender: playerID,\n context: \"player\",\n target: \"player\",\n timestamp: Date.now(),\n _messenger_: true,\n };\n\n dispatch(transaction);\n }, []);\n\n // Process interactions\n useEffect(() => {\n if (lastProcessedInteraction.current < (state.interactions.length ?? 0)) {\n state.interactions\n .slice(lastProcessedInteraction.current)\n .forEach(processInteraction);\n }\n }, [state.interactions.length]);\n\n // Data changes\n useEffect(() => {\n if (dequal(state.plugins[id]?.flow?.data?.data, data)) return;\n\n const newState = produce(state, (draft) => {\n dset(draft, [\"plugins\", id, \"flow\", \"data\", \"data\"], data);\n });\n\n const transaction = genDataChangeTransaction({\n playerID,\n data: newState.plugins[id].flow.data,\n pluginID: id,\n });\n\n dispatch(transaction);\n }, [data]);\n\n // Logs changes\n useEffect(() => {\n if (dequal(state.plugins[id]?.flow?.data?.logs, logs)) return;\n\n const newState = produce(state, (draft) => {\n dset(draft, [\"plugins\", id, \"flow\", \"data\", \"logs\"], logs);\n });\n\n const transaction = genDataChangeTransaction({\n playerID,\n data: newState.plugins[id].flow.data,\n pluginID: id,\n });\n\n dispatch(transaction);\n }, [logs]);\n\n // Flow changes\n useEffect(() => {\n if (dequal(state.plugins[id]?.flow?.data?.flow, flow)) return;\n\n const newState = produce(state, (draft) => {\n dset(draft, [\"plugins\", id, \"flow\", \"data\", \"flow\"], flow);\n });\n\n const transaction = genDataChangeTransaction({\n playerID,\n data: newState.plugins[id].flow.data,\n pluginID: id,\n });\n\n dispatch(transaction);\n }, [flow]);\n\n return children as JSX.Element;\n};\n","import type { PluginData } from \"@player-tools/devtools-types\";\n\nexport const PLUGIN_ID = \"player-ui-basic-devtools-plugin\";\n\nexport const PLUGIN_NAME = \"Standard Devtools\";\n\nexport const PLUGIN_DESCRIPTION = \"Standard Player UI Devtools\";\n\nexport const PLUGIN_VERSION = \"0.0.1\";\n\nexport const VIEWS_IDS = {\n CONFIG: \"Config\",\n FLOW: \"Flow\",\n LOGS: \"Logs\",\n CONSOLE: \"Console\",\n};\n\nexport const INTERACTIONS = {\n EVALUATE_EXPRESSION: \"evaluate-expression\",\n};\n\nexport const BASE_PLUGIN_DATA: Omit<PluginData, \"flow\"> = {\n id: PLUGIN_ID,\n name: PLUGIN_NAME,\n description: PLUGIN_DESCRIPTION,\n version: PLUGIN_VERSION,\n};\n\nexport const PLUGIN_INACTIVE_WARNING =\n \"The plugin has been registered, but the Player development tools are not active. If you are working in a production environment, it is recommended to remove the plugin. Either way, you can activate the Player development tools by clicking on the extension popup and refreshing the page.\";\n","import { ExpressionEvaluator } from \"@player-ui/react\";\nimport { v4 as uuid } from \"uuid\";\nimport { Evaluation } from \"../types\";\n\n/**\n * Creates a function to evaluate expressions using an nullable Player-UI's ExpressionEvaluator.\n *\n * This function factory takes an nullable WeakRef to an ExpressionEvaluator and returns\n * a new function that can be used to evaluate expressions. If the ExpressionEvaluator is\n * not available, it returns an error Evaluation. Otherwise, it attempts to evaluate the\n * expression. If the evaluation is successful, it returns the result. If there's an error\n * during evaluation, it captures the error and returns it as part of the Evaluation object.\n */\nexport const getEvaluateExpression =\n (expressionEvaluator?: WeakRef<ExpressionEvaluator>) =>\n (expression: string): Evaluation => {\n if (!expressionEvaluator) {\n return {\n id: uuid(),\n severity: \"error\",\n result: \"Expression evaluator not available\",\n expression,\n };\n }\n\n let result: Evaluation = {\n id: uuid(),\n severity: \"error\",\n result: \"Something went wrong\",\n expression,\n };\n\n try {\n expressionEvaluator.deref()?.hooks.onError.intercept({\n call: (error: Error) => {\n throw error;\n },\n });\n\n const evaluatorResult = expressionEvaluator.deref()?.evaluate(expression);\n\n result = {\n id: uuid(),\n result: evaluatorResult,\n expression,\n };\n } catch (error) {\n if (error instanceof Error) {\n result = {\n id: uuid(),\n severity: \"error\",\n result: error.message,\n expression,\n };\n }\n }\n\n return result;\n };\n","import type {\n DevtoolsDataChangeEvent,\n Transaction,\n} from \"@player-tools/devtools-types\";\nimport type { Flow } from \"@player-ui/react\";\n\nconst NOOP_ID = -1;\n\n/**\n * Generates a data change transaction for the player devtools plugin.\n *\n * This function creates a transaction object that represents a change in data\n * within a player devtools plugin. The transaction includes details such as the\n * plugin ID, the changed data, and the player ID. It is used to communicate\n * changes between the plugin and devtools.\n */\nexport const genDataChangeTransaction = ({\n playerID,\n data,\n pluginID,\n}: {\n playerID: string;\n data: Flow[\"data\"];\n pluginID: string;\n}): Transaction<DevtoolsDataChangeEvent> => {\n return {\n id: NOOP_ID,\n type: \"PLAYER_DEVTOOLS_PLUGIN_DATA_CHANGE\",\n payload: {\n pluginID,\n data,\n },\n sender: playerID,\n context: \"player\",\n target: \"player\",\n timestamp: Date.now(),\n _messenger_: true,\n };\n};\n","{\n \"id\": \"player-ui-basic-devtools-plugin\",\n \"views\": [\n {\n \"id\": \"Config\",\n \"type\": \"stacked-view\",\n \"header\": {\n \"asset\": {\n \"id\": \"Config-header\",\n \"type\": \"navigation\",\n \"values\": [\n {\n \"asset\": {\n \"id\": \"Config-header-values-0\",\n \"type\": \"action\",\n \"value\": \"Config\",\n \"label\": {\n \"asset\": {\n \"id\": \"Config-header-values-0-label\",\n \"type\": \"text\",\n \"value\": \"Config\"\n }\n }\n }\n },\n {\n \"asset\": {\n \"id\": \"Config-header-values-1\",\n \"type\": \"action\",\n \"value\": \"Flow\",\n \"label\": {\n \"asset\": {\n \"id\": \"Config-header-values-1-label\",\n \"type\": \"text\",\n \"value\": \"Flow\"\n }\n }\n }\n },\n {\n \"asset\": {\n \"id\": \"Config-header-values-2\",\n \"type\": \"action\",\n \"value\": \"Logs\",\n \"label\": {\n \"asset\": {\n \"id\": \"Config-header-values-2-label\",\n \"type\": \"text\",\n \"value\": \"Logs\"\n }\n }\n }\n },\n {\n \"asset\": {\n \"id\": \"Config-header-values-3\",\n \"type\": \"action\",\n \"value\": \"Console\",\n \"label\": {\n \"asset\": {\n \"id\": \"Config-header-values-3-label\",\n \"type\": \"text\",\n \"value\": \"Console\"\n }\n }\n }\n }\n ]\n }\n },\n \"main\": {\n \"asset\": {\n \"id\": \"Config-main\",\n \"type\": \"object-inspector\",\n \"binding\": \"playerConfig\",\n \"label\": {\n \"asset\": {\n \"id\": \"Config-main-label\",\n \"type\": \"text\",\n \"value\": \"Config\"\n }\n }\n }\n }\n },\n {\n \"id\": \"Flow\",\n \"type\": \"stacked-view\",\n \"header\": {\n \"asset\": {\n \"id\": \"Flow-header\",\n \"type\": \"navigation\",\n \"values\": [\n {\n \"asset\": {\n \"id\": \"Flow-header-values-0\",\n \"type\": \"action\",\n \"value\": \"Config\",\n \"label\": {\n \"asset\": {\n \"id\": \"Flow-header-values-0-label\",\n \"type\": \"text\",\n \"value\": \"Config\"\n }\n }\n }\n },\n {\n \"asset\": {\n \"id\": \"Flow-header-values-1\",\n \"type\": \"action\",\n \"value\": \"Flow\",\n \"label\": {\n \"asset\": {\n \"id\": \"Flow-header-values-1-label\",\n \"type\": \"text\",\n \"value\": \"Flow\"\n }\n }\n }\n },\n {\n \"asset\": {\n \"id\": \"Flow-header-values-2\",\n \"type\": \"action\",\n \"value\": \"Logs\",\n \"label\": {\n \"asset\": {\n \"id\": \"Flow-header-values-2-label\",\n \"type\": \"text\",\n \"value\": \"Logs\"\n }\n }\n }\n },\n {\n \"asset\": {\n \"id\": \"Flow-header-values-3\",\n \"type\": \"action\",\n \"value\": \"Console\",\n \"label\": {\n \"asset\": {\n \"id\": \"Flow-header-values-3-label\",\n \"type\": \"text\",\n \"value\": \"Console\"\n }\n }\n }\n }\n ]\n }\n },\n \"main\": {\n \"asset\": {\n \"id\": \"Flow-main\",\n \"type\": \"object-inspector\",\n \"binding\": \"flow\",\n \"label\": {\n \"asset\": {\n \"id\": \"Flow-main-label\",\n \"type\": \"text\",\n \"value\": \"Flow\"\n }\n }\n }\n },\n \"footer\": {\n \"asset\": {\n \"id\": \"Flow-footer\",\n \"type\": \"copy-to-clipboard\",\n \"binding\": \"flow\",\n \"label\": {\n \"asset\": {\n \"id\": \"Flow-footer-label\",\n \"type\": \"text\",\n \"value\": \"Copy flow to the clipboard\"\n }\n }\n }\n }\n },\n {\n \"id\": \"Logs\",\n \"type\": \"stacked-view\",\n \"header\": {\n \"asset\": {\n \"id\": \"Logs-header\",\n \"type\": \"navigation\",\n \"values\": [\n {\n \"asset\": {\n \"id\": \"Logs-header-values-0\",\n \"type\": \"action\",\n \"value\": \"Config\",\n \"label\": {\n \"asset\": {\n \"id\": \"Logs-header-values-0-label\",\n \"type\": \"text\",\n \"value\": \"Config\"\n }\n }\n }\n },\n {\n \"asset\": {\n \"id\": \"Logs-header-values-1\",\n \"type\": \"action\",\n \"value\": \"Flow\",\n \"label\": {\n \"asset\": {\n \"id\": \"Logs-header-values-1-label\",\n \"type\": \"text\",\n \"value\": \"Flow\"\n }\n }\n }\n },\n {\n \"asset\": {\n \"id\": \"Logs-header-values-2\",\n \"type\": \"action\",\n \"value\": \"Logs\",\n \"label\": {\n \"asset\": {\n \"id\": \"Logs-header-values-2-label\",\n \"type\": \"text\",\n \"value\": \"Logs\"\n }\n }\n }\n },\n {\n \"asset\": {\n \"id\": \"Logs-header-values-3\",\n \"type\": \"action\",\n \"value\": \"Console\",\n \"label\": {\n \"asset\": {\n \"id\": \"Logs-header-values-3-label\",\n \"type\": \"text\",\n \"value\": \"Console\"\n }\n }\n }\n }\n ]\n }\n },\n \"main\": {\n \"asset\": {\n \"id\": \"Logs-main\",\n \"type\": \"table\",\n \"binding\": \"logs\"\n }\n }\n },\n {\n \"id\": \"Console\",\n \"type\": \"stacked-view\",\n \"header\": {\n \"asset\": {\n \"id\": \"Console-header\",\n \"type\": \"navigation\",\n \"values\": [\n {\n \"asset\": {\n \"id\": \"Console-header-values-0\",\n \"type\": \"action\",\n \"value\": \"Config\",\n \"label\": {\n \"asset\": {\n \"id\": \"Console-header-values-0-label\",\n \"type\": \"text\",\n \"value\": \"Config\"\n }\n }\n }\n },\n {\n \"asset\": {\n \"id\": \"Console-header-values-1\",\n \"type\": \"action\",\n \"value\": \"Flow\",\n \"label\": {\n \"asset\": {\n \"id\": \"Console-header-values-1-label\",\n \"type\": \"text\",\n \"value\": \"Flow\"\n }\n }\n }\n },\n {\n \"asset\": {\n \"id\": \"Console-header-values-2\",\n \"type\": \"action\",\n \"value\": \"Logs\",\n \"label\": {\n \"asset\": {\n \"id\": \"Console-header-values-2-label\",\n \"type\": \"text\",\n \"value\": \"Logs\"\n }\n }\n }\n },\n {\n \"asset\": {\n \"id\": \"Console-header-values-3\",\n \"type\": \"action\",\n \"value\": \"Console\",\n \"label\": {\n \"asset\": {\n \"id\": \"Console-header-values-3-label\",\n \"type\": \"text\",\n \"value\": \"Console\"\n }\n }\n }\n }\n ]\n }\n },\n \"main\": {\n \"asset\": {\n \"id\": \"Console-main\",\n \"type\": \"console\",\n \"exp\": \" publish('evaluate-expression', {{expression}}) \",\n \"binding\": \"history\"\n }\n }\n }\n ],\n \"navigation\": {\n \"BEGIN\": \"Plugin\",\n \"Plugin\": {\n \"startState\": \"CONFIG\",\n \"CONFIG\": {\n \"state_type\": \"VIEW\",\n \"ref\": \"Config\",\n \"transitions\": {\n \"Config\": \"CONFIG\",\n \"Flow\": \"FLOW\",\n \"Logs\": \"LOGS\",\n \"Console\": \"CONSOLE\"\n }\n },\n \"FLOW\": {\n \"state_type\": \"VIEW\",\n \"ref\": \"Flow\",\n \"transitions\": {\n \"Config\": \"CONFIG\",\n \"Flow\": \"FLOW\",\n \"Logs\": \"LOGS\",\n \"Console\": \"CONSOLE\"\n }\n },\n \"LOGS\": {\n \"state_type\": \"VIEW\",\n \"ref\": \"Logs\",\n \"transitions\": {\n \"Config\": \"CONFIG\",\n \"Flow\": \"FLOW\",\n \"Logs\": \"LOGS\",\n \"Console\": \"CONSOLE\"\n }\n },\n \"CONSOLE\": {\n \"state_type\": \"VIEW\",\n \"ref\": \"Console\",\n \"transitions\": {\n \"Config\": \"CONFIG\",\n \"Flow\": \"FLOW\",\n \"Logs\": \"LOGS\",\n \"Console\": \"CONSOLE\"\n }\n }\n }\n },\n \"schema\": {\n \"ROOT\": {\n \"playerConfig\": {\n \"type\": \"RecordType\"\n },\n \"flow\": {\n \"type\": \"RecordType\"\n },\n \"expression\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n },\n \"history\": {\n \"type\": \"historyType\",\n \"isArray\": true\n },\n \"logs\": {\n \"type\": \"logsType\",\n \"isArray\": true\n }\n },\n \"logsType\": {\n \"id\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n },\n \"time\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n },\n \"type\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n },\n \"message\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n },\n \"severity\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n },\n \"binding\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n },\n \"from\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n },\n \"to\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n },\n \"state\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n },\n \"error\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n },\n \"outcome\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n },\n \"metricType\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n }\n },\n \"historyType\": {\n \"id\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n },\n \"expression\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n },\n \"result\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n },\n \"severity\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n }\n }\n },\n \"data\": {\n \"expression\": \"\",\n \"flow\": {},\n \"history\": [],\n \"logs\": [],\n \"playerConfig\": {}\n }\n}"],"mappings":"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","names":["import_merge","import_immer","import_react","uuid","React","React"]}
|
package/dist/index.legacy-esm.js
CHANGED
|
@@ -24,6 +24,7 @@ var BASE_PLUGIN_DATA = {
|
|
|
24
24
|
description: PLUGIN_DESCRIPTION,
|
|
25
25
|
version: PLUGIN_VERSION
|
|
26
26
|
};
|
|
27
|
+
var PLUGIN_INACTIVE_WARNING = "The plugin has been registered, but the Player development tools are not active. If you are working in a production environment, it is recommended to remove the plugin. Either way, you can activate the Player development tools by clicking on the extension popup and refreshing the page.";
|
|
27
28
|
|
|
28
29
|
// ../../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/devtools/plugins/desktop/basic/src/helpers/getEvaluateExpression.ts
|
|
29
30
|
import { v4 as uuid } from "uuid";
|
|
@@ -68,13 +69,14 @@ var getEvaluateExpression = (expressionEvaluator) => (expression) => {
|
|
|
68
69
|
};
|
|
69
70
|
|
|
70
71
|
// ../../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/devtools/plugins/desktop/basic/src/helpers/genDataChangeTransaction.ts
|
|
72
|
+
var NOOP_ID = -1;
|
|
71
73
|
var genDataChangeTransaction = ({
|
|
72
74
|
playerID,
|
|
73
75
|
data,
|
|
74
76
|
pluginID
|
|
75
77
|
}) => {
|
|
76
78
|
return {
|
|
77
|
-
id:
|
|
79
|
+
id: NOOP_ID,
|
|
78
80
|
type: "PLAYER_DEVTOOLS_PLUGIN_DATA_CHANGE",
|
|
79
81
|
payload: {
|
|
80
82
|
pluginID,
|
|
@@ -824,7 +826,7 @@ var WrapperComponent = ({
|
|
|
824
826
|
|
|
825
827
|
// ../../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/devtools/plugins/desktop/basic/src/index.tsx
|
|
826
828
|
var BasicWevDevtoolsPlugin = class {
|
|
827
|
-
name =
|
|
829
|
+
name = PLUGIN_ID;
|
|
828
830
|
data = {};
|
|
829
831
|
playerConfig = {};
|
|
830
832
|
logs = [];
|
|
@@ -832,7 +834,14 @@ var BasicWevDevtoolsPlugin = class {
|
|
|
832
834
|
expressionEvaluator;
|
|
833
835
|
view;
|
|
834
836
|
dataController;
|
|
837
|
+
checkIfDevtoolsIsActive() {
|
|
838
|
+
return localStorage.getItem("player-ui-devtools-active") === "true";
|
|
839
|
+
}
|
|
835
840
|
apply(player) {
|
|
841
|
+
if (!this.checkIfDevtoolsIsActive()) {
|
|
842
|
+
console.log(PLUGIN_INACTIVE_WARNING);
|
|
843
|
+
return;
|
|
844
|
+
}
|
|
836
845
|
this.playerConfig = {
|
|
837
846
|
version: player.getVersion(),
|
|
838
847
|
plugins: player.getPlugins().map((plugin) => plugin.name)
|
|
@@ -861,6 +870,9 @@ var BasicWevDevtoolsPlugin = class {
|
|
|
861
870
|
});
|
|
862
871
|
}
|
|
863
872
|
applyReact(reactPlayer) {
|
|
873
|
+
if (!this.checkIfDevtoolsIsActive()) {
|
|
874
|
+
return;
|
|
875
|
+
}
|
|
864
876
|
reactPlayer.hooks.webComponent.tap(this.name, (Comp) => () => {
|
|
865
877
|
const Component = Comp;
|
|
866
878
|
return /* @__PURE__ */ React2.createElement(
|
package/dist/index.mjs
CHANGED
|
@@ -24,6 +24,7 @@ var BASE_PLUGIN_DATA = {
|
|
|
24
24
|
description: PLUGIN_DESCRIPTION,
|
|
25
25
|
version: PLUGIN_VERSION
|
|
26
26
|
};
|
|
27
|
+
var PLUGIN_INACTIVE_WARNING = "The plugin has been registered, but the Player development tools are not active. If you are working in a production environment, it is recommended to remove the plugin. Either way, you can activate the Player development tools by clicking on the extension popup and refreshing the page.";
|
|
27
28
|
|
|
28
29
|
// ../../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/devtools/plugins/desktop/basic/src/helpers/getEvaluateExpression.ts
|
|
29
30
|
import { v4 as uuid } from "uuid";
|
|
@@ -68,13 +69,14 @@ var getEvaluateExpression = (expressionEvaluator) => (expression) => {
|
|
|
68
69
|
};
|
|
69
70
|
|
|
70
71
|
// ../../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/devtools/plugins/desktop/basic/src/helpers/genDataChangeTransaction.ts
|
|
72
|
+
var NOOP_ID = -1;
|
|
71
73
|
var genDataChangeTransaction = ({
|
|
72
74
|
playerID,
|
|
73
75
|
data,
|
|
74
76
|
pluginID
|
|
75
77
|
}) => {
|
|
76
78
|
return {
|
|
77
|
-
id:
|
|
79
|
+
id: NOOP_ID,
|
|
78
80
|
type: "PLAYER_DEVTOOLS_PLUGIN_DATA_CHANGE",
|
|
79
81
|
payload: {
|
|
80
82
|
pluginID,
|
|
@@ -824,7 +826,7 @@ var WrapperComponent = ({
|
|
|
824
826
|
|
|
825
827
|
// ../../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/devtools/plugins/desktop/basic/src/index.tsx
|
|
826
828
|
var BasicWevDevtoolsPlugin = class {
|
|
827
|
-
name =
|
|
829
|
+
name = PLUGIN_ID;
|
|
828
830
|
data = {};
|
|
829
831
|
playerConfig = {};
|
|
830
832
|
logs = [];
|
|
@@ -832,7 +834,14 @@ var BasicWevDevtoolsPlugin = class {
|
|
|
832
834
|
expressionEvaluator;
|
|
833
835
|
view;
|
|
834
836
|
dataController;
|
|
837
|
+
checkIfDevtoolsIsActive() {
|
|
838
|
+
return localStorage.getItem("player-ui-devtools-active") === "true";
|
|
839
|
+
}
|
|
835
840
|
apply(player) {
|
|
841
|
+
if (!this.checkIfDevtoolsIsActive()) {
|
|
842
|
+
console.log(PLUGIN_INACTIVE_WARNING);
|
|
843
|
+
return;
|
|
844
|
+
}
|
|
836
845
|
this.playerConfig = {
|
|
837
846
|
version: player.getVersion(),
|
|
838
847
|
plugins: player.getPlugins().map((plugin) => plugin.name)
|
|
@@ -861,6 +870,9 @@ var BasicWevDevtoolsPlugin = class {
|
|
|
861
870
|
});
|
|
862
871
|
}
|
|
863
872
|
applyReact(reactPlayer) {
|
|
873
|
+
if (!this.checkIfDevtoolsIsActive()) {
|
|
874
|
+
return;
|
|
875
|
+
}
|
|
864
876
|
reactPlayer.hooks.webComponent.tap(this.name, (Comp) => () => {
|
|
865
877
|
const Component = Comp;
|
|
866
878
|
return /* @__PURE__ */ React2.createElement(
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/devtools/plugins/desktop/basic/src/index.tsx","../../../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/devtools/plugins/desktop/basic/src/WrapperComponent.tsx","../../../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/devtools/plugins/desktop/basic/src/constants/index.ts","../../../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/devtools/plugins/desktop/basic/src/helpers/getEvaluateExpression.ts","../../../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/devtools/plugins/desktop/basic/src/helpers/genDataChangeTransaction.ts","../../../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/devtools/plugins/desktop/basic/_generated/index.json"],"sourcesContent":["import type {\n DataController,\n ExpressionEvaluator,\n Flow,\n Player,\n ReactPlayer,\n ReactPlayerPlugin,\n ViewInstance,\n} from \"@player-ui/react\";\nimport { dset } from \"dset/merge\";\nimport { produce } from \"immer\";\nimport React from \"react\";\nimport { WrapperComponent } from \"./WrapperComponent\";\n\n/** Basic Web Devtools Plugin */\nexport class BasicWevDevtoolsPlugin implements ReactPlayerPlugin {\n name = \"player_ui_basic_devtools_plugin\";\n\n data: Record<string, unknown> = {};\n\n playerConfig: Record<string, unknown> = {};\n\n logs: {\n severity: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n message: any;\n }[] = [];\n\n flow?: Flow;\n\n expressionEvaluator?: WeakRef<ExpressionEvaluator>;\n\n view?: WeakRef<ViewInstance>;\n\n dataController?: WeakRef<DataController>;\n\n apply(player: Player) {\n // Config\n this.playerConfig = {\n version: player.getVersion(),\n plugins: player.getPlugins().map((plugin) => plugin.name),\n };\n\n // Data\n player.hooks.dataController.tap(this.name, (dataController) => {\n dataController.hooks.onUpdate.tap(this.name, (updates) => {\n const newPlayerState = produce(this.data, (draft) => {\n updates.forEach(({ binding, newValue }) => {\n dset(draft, [\"data\", ...binding.asArray()], newValue);\n });\n });\n this.data = newPlayerState;\n });\n });\n\n // Logs\n player.logger.hooks.log.tap(this.name, (severity, message) => {\n this.logs = [...this.logs, { severity, message }];\n });\n\n // Flow\n player.hooks.onStart.tap(this.name, (f) => {\n this.flow = f;\n });\n\n // View\n player.hooks.view.tap(this.name, (view) => {\n this.view = new WeakRef(view);\n });\n\n // Expression evaluator\n player.hooks.expressionEvaluator.tap(this.name, (evaluator) => {\n this.expressionEvaluator = new WeakRef(evaluator);\n });\n }\n\n applyReact(reactPlayer: ReactPlayer) {\n // eslint-disable-next-line react/display-name\n reactPlayer.hooks.webComponent.tap(this.name, (Comp) => () => {\n const Component = Comp as React.FC;\n\n return (\n <WrapperComponent\n playerConfig={this.playerConfig}\n data={this.data}\n logs={this.logs}\n flow={this.flow}\n view={this.view}\n expressionEvaluator={this.expressionEvaluator}\n >\n <Component />\n </WrapperComponent>\n );\n });\n }\n}\n","import { usePluginState } from \"@player-tools/devtools-desktop-plugins-common\";\nimport type {\n DevtoolsPluginInteractionEvent,\n PlayerInitEvent,\n PluginData,\n Transaction,\n} from \"@player-tools/devtools-types\";\nimport type { Flow } from \"@player-ui/react\";\nimport { dequal } from \"dequal\";\nimport { dset } from \"dset/merge\";\nimport { produce } from \"immer\";\nimport React, { useCallback, useEffect } from \"react\";\nimport { BASE_PLUGIN_DATA, INTERACTIONS } from \"./constants\";\nimport type { Evaluation, WrapperComponentProps } from \"./types\";\nimport { genDataChangeTransaction, getEvaluateExpression } from \"./helpers\";\nimport flow from \"../_generated/index.json\";\n\nconst pluginData: PluginData = {\n ...BASE_PLUGIN_DATA,\n flow: flow as Flow,\n};\n\n/** Tap into the ReactPlayer hooks and create the content to be rendered into the extension Player UI */\nexport const WrapperComponent = ({\n children,\n data,\n playerConfig,\n logs,\n flow,\n expressionEvaluator,\n}: WrapperComponentProps): JSX.Element => {\n const [state, playerID, dispatch] = usePluginState();\n const lastProcessedInteraction = React.useRef(0);\n const expEvaluator = useCallback(getEvaluateExpression(expressionEvaluator), [\n expressionEvaluator,\n ]);\n\n const id = pluginData.id;\n\n const processInteraction = useCallback(\n (interaction: DevtoolsPluginInteractionEvent) => {\n const {\n payload: { type, payload },\n } = interaction;\n if (\n type === INTERACTIONS.EVALUATE_EXPRESSION &&\n expressionEvaluator &&\n payload\n ) {\n const result = expEvaluator(payload);\n\n const newState = produce(state, (draft) => {\n const current: Array<Evaluation> =\n (state?.plugins?.[id]?.flow?.data?.history as Array<Evaluation>) ||\n [];\n dset(\n draft,\n [\"plugins\", id, \"flow\", \"data\", \"history\"],\n [...current, result]\n );\n });\n\n dispatch({\n id: -1,\n type: \"PLAYER_DEVTOOLS_PLUGIN_DATA_CHANGE\",\n payload: {\n pluginID: id,\n data: newState.plugins[id].flow.data,\n },\n sender: playerID,\n context: \"player\",\n target: \"player\",\n timestamp: Date.now(),\n _messenger_: true,\n });\n\n lastProcessedInteraction.current += 1;\n }\n },\n [dispatch, expressionEvaluator, id, state]\n );\n\n // inject playerConfig into the plugin data\n const pluginDataWithPlayerConfig = produce(pluginData, (draft) => {\n dset(draft, [\"flow\", \"data\", \"playerConfig\"], playerConfig);\n });\n\n // Initial plugin content\n useEffect(() => {\n const transaction: Transaction<PlayerInitEvent> = {\n id: -1,\n type: \"PLAYER_DEVTOOLS_PLAYER_INIT\",\n payload: {\n plugins: {\n [id]: pluginDataWithPlayerConfig,\n },\n },\n sender: playerID,\n context: \"player\",\n target: \"player\",\n timestamp: Date.now(),\n _messenger_: true,\n };\n\n dispatch(transaction);\n }, []);\n\n // Process interactions\n useEffect(() => {\n if (lastProcessedInteraction.current < (state.interactions.length ?? 0)) {\n state.interactions\n .slice(lastProcessedInteraction.current)\n .forEach(processInteraction);\n }\n }, [state.interactions.length]);\n\n // Data changes\n useEffect(() => {\n if (dequal(state.plugins[id]?.flow?.data?.data, data)) return;\n\n const newState = produce(state, (draft) => {\n dset(draft, [\"plugins\", id, \"flow\", \"data\", \"data\"], data);\n });\n\n const transaction = genDataChangeTransaction({\n playerID,\n data: newState.plugins[id].flow.data,\n pluginID: id,\n });\n\n dispatch(transaction);\n }, [data]);\n\n // Logs changes\n useEffect(() => {\n if (dequal(state.plugins[id]?.flow?.data?.logs, logs)) return;\n\n const newState = produce(state, (draft) => {\n dset(draft, [\"plugins\", id, \"flow\", \"data\", \"logs\"], logs);\n });\n\n const transaction = genDataChangeTransaction({\n playerID,\n data: newState.plugins[id].flow.data,\n pluginID: id,\n });\n\n dispatch(transaction);\n }, [logs]);\n\n // Flow changes\n useEffect(() => {\n if (dequal(state.plugins[id]?.flow?.data?.flow, flow)) return;\n\n const newState = produce(state, (draft) => {\n dset(draft, [\"plugins\", id, \"flow\", \"data\", \"flow\"], flow);\n });\n\n const transaction = genDataChangeTransaction({\n playerID,\n data: newState.plugins[id].flow.data,\n pluginID: id,\n });\n\n dispatch(transaction);\n }, [flow]);\n\n return children as JSX.Element;\n};\n","import type { PluginData } from \"@player-tools/devtools-types\";\n\nexport const PLUGIN_ID = \"player-ui-basic-devtools-plugin\";\n\nexport const PLUGIN_NAME = \"Standard Devtools\";\n\nexport const PLUGIN_DESCRIPTION = \"Standard Player UI Devtools\";\n\nexport const PLUGIN_VERSION = \"0.0.1\";\n\nexport const VIEWS_IDS = {\n CONFIG: \"Config\",\n FLOW: \"Flow\",\n LOGS: \"Logs\",\n CONSOLE: \"Console\",\n};\n\nexport const INTERACTIONS = {\n EVALUATE_EXPRESSION: \"evaluate-expression\",\n};\n\nexport const BASE_PLUGIN_DATA: Omit<PluginData, \"flow\"> = {\n id: PLUGIN_ID,\n name: PLUGIN_NAME,\n description: PLUGIN_DESCRIPTION,\n version: PLUGIN_VERSION,\n};\n","import { ExpressionEvaluator } from \"@player-ui/react\";\nimport { v4 as uuid } from \"uuid\";\nimport { Evaluation } from \"../types\";\n\nexport const getEvaluateExpression =\n (expressionEvaluator?: WeakRef<ExpressionEvaluator>) =>\n (expression: string): Evaluation => {\n if (!expressionEvaluator) {\n return {\n id: uuid(),\n severity: \"error\",\n result: \"Expression evaluator not available\",\n expression,\n };\n }\n\n let result: Evaluation = {\n id: uuid(),\n severity: \"error\",\n result: \"Something went wrong\",\n expression,\n };\n\n try {\n expressionEvaluator.deref()?.hooks.onError.intercept({\n call: (error: Error) => {\n throw error;\n },\n });\n\n const evaluatorResult = expressionEvaluator.deref()?.evaluate(expression);\n\n result = {\n id: uuid(),\n result: evaluatorResult,\n expression,\n };\n } catch (error) {\n if (error instanceof Error) {\n result = {\n id: uuid(),\n severity: \"error\",\n result: error.message,\n expression,\n };\n }\n }\n\n return result;\n };\n","import type {\n DevtoolsDataChangeEvent,\n Transaction,\n} from \"@player-tools/devtools-types\";\nimport type { Flow } from \"@player-ui/react\";\n\nexport const genDataChangeTransaction = ({\n playerID,\n data,\n pluginID,\n}: {\n playerID: string;\n data: Flow[\"data\"];\n pluginID: string;\n}): Transaction<DevtoolsDataChangeEvent> => {\n return {\n id: -1,\n type: \"PLAYER_DEVTOOLS_PLUGIN_DATA_CHANGE\",\n payload: {\n pluginID,\n data,\n },\n sender: playerID,\n context: \"player\",\n target: \"player\",\n timestamp: Date.now(),\n _messenger_: true,\n };\n};\n","{\n \"id\": \"player-ui-basic-devtools-plugin\",\n \"views\": [\n {\n \"id\": \"Config\",\n \"type\": \"stacked-view\",\n \"header\": {\n \"asset\": {\n \"id\": \"Config-header\",\n \"type\": \"navigation\",\n \"values\": [\n {\n \"asset\": {\n \"id\": \"Config-header-values-0\",\n \"type\": \"action\",\n \"value\": \"Config\",\n \"label\": {\n \"asset\": {\n \"id\": \"Config-header-values-0-label\",\n \"type\": \"text\",\n \"value\": \"Config\"\n }\n }\n }\n },\n {\n \"asset\": {\n \"id\": \"Config-header-values-1\",\n \"type\": \"action\",\n \"value\": \"Flow\",\n \"label\": {\n \"asset\": {\n \"id\": \"Config-header-values-1-label\",\n \"type\": \"text\",\n \"value\": \"Flow\"\n }\n }\n }\n },\n {\n \"asset\": {\n \"id\": \"Config-header-values-2\",\n \"type\": \"action\",\n \"value\": \"Logs\",\n \"label\": {\n \"asset\": {\n \"id\": \"Config-header-values-2-label\",\n \"type\": \"text\",\n \"value\": \"Logs\"\n }\n }\n }\n },\n {\n \"asset\": {\n \"id\": \"Config-header-values-3\",\n \"type\": \"action\",\n \"value\": \"Console\",\n \"label\": {\n \"asset\": {\n \"id\": \"Config-header-values-3-label\",\n \"type\": \"text\",\n \"value\": \"Console\"\n }\n }\n }\n }\n ]\n }\n },\n \"main\": {\n \"asset\": {\n \"id\": \"Config-main\",\n \"type\": \"object-inspector\",\n \"binding\": \"playerConfig\",\n \"label\": {\n \"asset\": {\n \"id\": \"Config-main-label\",\n \"type\": \"text\",\n \"value\": \"Config\"\n }\n }\n }\n }\n },\n {\n \"id\": \"Flow\",\n \"type\": \"stacked-view\",\n \"header\": {\n \"asset\": {\n \"id\": \"Flow-header\",\n \"type\": \"navigation\",\n \"values\": [\n {\n \"asset\": {\n \"id\": \"Flow-header-values-0\",\n \"type\": \"action\",\n \"value\": \"Config\",\n \"label\": {\n \"asset\": {\n \"id\": \"Flow-header-values-0-label\",\n \"type\": \"text\",\n \"value\": \"Config\"\n }\n }\n }\n },\n {\n \"asset\": {\n \"id\": \"Flow-header-values-1\",\n \"type\": \"action\",\n \"value\": \"Flow\",\n \"label\": {\n \"asset\": {\n \"id\": \"Flow-header-values-1-label\",\n \"type\": \"text\",\n \"value\": \"Flow\"\n }\n }\n }\n },\n {\n \"asset\": {\n \"id\": \"Flow-header-values-2\",\n \"type\": \"action\",\n \"value\": \"Logs\",\n \"label\": {\n \"asset\": {\n \"id\": \"Flow-header-values-2-label\",\n \"type\": \"text\",\n \"value\": \"Logs\"\n }\n }\n }\n },\n {\n \"asset\": {\n \"id\": \"Flow-header-values-3\",\n \"type\": \"action\",\n \"value\": \"Console\",\n \"label\": {\n \"asset\": {\n \"id\": \"Flow-header-values-3-label\",\n \"type\": \"text\",\n \"value\": \"Console\"\n }\n }\n }\n }\n ]\n }\n },\n \"main\": {\n \"asset\": {\n \"id\": \"Flow-main\",\n \"type\": \"object-inspector\",\n \"binding\": \"flow\",\n \"label\": {\n \"asset\": {\n \"id\": \"Flow-main-label\",\n \"type\": \"text\",\n \"value\": \"Flow\"\n }\n }\n }\n },\n \"footer\": {\n \"asset\": {\n \"id\": \"Flow-footer\",\n \"type\": \"copy-to-clipboard\",\n \"binding\": \"flow\",\n \"label\": {\n \"asset\": {\n \"id\": \"Flow-footer-label\",\n \"type\": \"text\",\n \"value\": \"Copy flow to the clipboard\"\n }\n }\n }\n }\n },\n {\n \"id\": \"Logs\",\n \"type\": \"stacked-view\",\n \"header\": {\n \"asset\": {\n \"id\": \"Logs-header\",\n \"type\": \"navigation\",\n \"values\": [\n {\n \"asset\": {\n \"id\": \"Logs-header-values-0\",\n \"type\": \"action\",\n \"value\": \"Config\",\n \"label\": {\n \"asset\": {\n \"id\": \"Logs-header-values-0-label\",\n \"type\": \"text\",\n \"value\": \"Config\"\n }\n }\n }\n },\n {\n \"asset\": {\n \"id\": \"Logs-header-values-1\",\n \"type\": \"action\",\n \"value\": \"Flow\",\n \"label\": {\n \"asset\": {\n \"id\": \"Logs-header-values-1-label\",\n \"type\": \"text\",\n \"value\": \"Flow\"\n }\n }\n }\n },\n {\n \"asset\": {\n \"id\": \"Logs-header-values-2\",\n \"type\": \"action\",\n \"value\": \"Logs\",\n \"label\": {\n \"asset\": {\n \"id\": \"Logs-header-values-2-label\",\n \"type\": \"text\",\n \"value\": \"Logs\"\n }\n }\n }\n },\n {\n \"asset\": {\n \"id\": \"Logs-header-values-3\",\n \"type\": \"action\",\n \"value\": \"Console\",\n \"label\": {\n \"asset\": {\n \"id\": \"Logs-header-values-3-label\",\n \"type\": \"text\",\n \"value\": \"Console\"\n }\n }\n }\n }\n ]\n }\n },\n \"main\": {\n \"asset\": {\n \"id\": \"Logs-main\",\n \"type\": \"table\",\n \"binding\": \"logs\"\n }\n }\n },\n {\n \"id\": \"Console\",\n \"type\": \"stacked-view\",\n \"header\": {\n \"asset\": {\n \"id\": \"Console-header\",\n \"type\": \"navigation\",\n \"values\": [\n {\n \"asset\": {\n \"id\": \"Console-header-values-0\",\n \"type\": \"action\",\n \"value\": \"Config\",\n \"label\": {\n \"asset\": {\n \"id\": \"Console-header-values-0-label\",\n \"type\": \"text\",\n \"value\": \"Config\"\n }\n }\n }\n },\n {\n \"asset\": {\n \"id\": \"Console-header-values-1\",\n \"type\": \"action\",\n \"value\": \"Flow\",\n \"label\": {\n \"asset\": {\n \"id\": \"Console-header-values-1-label\",\n \"type\": \"text\",\n \"value\": \"Flow\"\n }\n }\n }\n },\n {\n \"asset\": {\n \"id\": \"Console-header-values-2\",\n \"type\": \"action\",\n \"value\": \"Logs\",\n \"label\": {\n \"asset\": {\n \"id\": \"Console-header-values-2-label\",\n \"type\": \"text\",\n \"value\": \"Logs\"\n }\n }\n }\n },\n {\n \"asset\": {\n \"id\": \"Console-header-values-3\",\n \"type\": \"action\",\n \"value\": \"Console\",\n \"label\": {\n \"asset\": {\n \"id\": \"Console-header-values-3-label\",\n \"type\": \"text\",\n \"value\": \"Console\"\n }\n }\n }\n }\n ]\n }\n },\n \"main\": {\n \"asset\": {\n \"id\": \"Console-main\",\n \"type\": \"console\",\n \"exp\": \" publish('evaluate-expression', {{expression}}) \",\n \"binding\": \"history\"\n }\n }\n }\n ],\n \"navigation\": {\n \"BEGIN\": \"Plugin\",\n \"Plugin\": {\n \"startState\": \"CONFIG\",\n \"CONFIG\": {\n \"state_type\": \"VIEW\",\n \"ref\": \"Config\",\n \"transitions\": {\n \"Config\": \"CONFIG\",\n \"Flow\": \"FLOW\",\n \"Logs\": \"LOGS\",\n \"Console\": \"CONSOLE\"\n }\n },\n \"FLOW\": {\n \"state_type\": \"VIEW\",\n \"ref\": \"Flow\",\n \"transitions\": {\n \"Config\": \"CONFIG\",\n \"Flow\": \"FLOW\",\n \"Logs\": \"LOGS\",\n \"Console\": \"CONSOLE\"\n }\n },\n \"LOGS\": {\n \"state_type\": \"VIEW\",\n \"ref\": \"Logs\",\n \"transitions\": {\n \"Config\": \"CONFIG\",\n \"Flow\": \"FLOW\",\n \"Logs\": \"LOGS\",\n \"Console\": \"CONSOLE\"\n }\n },\n \"CONSOLE\": {\n \"state_type\": \"VIEW\",\n \"ref\": \"Console\",\n \"transitions\": {\n \"Config\": \"CONFIG\",\n \"Flow\": \"FLOW\",\n \"Logs\": \"LOGS\",\n \"Console\": \"CONSOLE\"\n }\n }\n }\n },\n \"schema\": {\n \"ROOT\": {\n \"playerConfig\": {\n \"type\": \"RecordType\"\n },\n \"flow\": {\n \"type\": \"RecordType\"\n },\n \"expression\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n },\n \"history\": {\n \"type\": \"historyType\",\n \"isArray\": true\n },\n \"logs\": {\n \"type\": \"logsType\",\n \"isArray\": true\n }\n },\n \"logsType\": {\n \"id\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n },\n \"time\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n },\n \"type\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n },\n \"message\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n },\n \"severity\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n },\n \"binding\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n },\n \"from\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n },\n \"to\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n },\n \"state\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n },\n \"error\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n },\n \"outcome\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n },\n \"metricType\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n }\n },\n \"historyType\": {\n \"id\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n },\n \"expression\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n },\n \"result\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n },\n \"severity\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n }\n }\n },\n \"data\": {\n \"expression\": \"\",\n \"flow\": {},\n \"history\": [],\n \"logs\": [],\n \"playerConfig\": {}\n }\n}"],"mappings":"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","names":["dset","produce","React","produce","dset","React"]}
|
|
1
|
+
{"version":3,"sources":["../../../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/devtools/plugins/desktop/basic/src/index.tsx","../../../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/devtools/plugins/desktop/basic/src/WrapperComponent.tsx","../../../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/devtools/plugins/desktop/basic/src/constants/index.ts","../../../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/devtools/plugins/desktop/basic/src/helpers/getEvaluateExpression.ts","../../../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/devtools/plugins/desktop/basic/src/helpers/genDataChangeTransaction.ts","../../../../../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/devtools/plugins/desktop/basic/_generated/index.json"],"sourcesContent":["import type {\n DataController,\n ExpressionEvaluator,\n Flow,\n Player,\n ReactPlayer,\n ReactPlayerPlugin,\n ViewInstance,\n} from \"@player-ui/react\";\nimport { dset } from \"dset/merge\";\nimport { produce } from \"immer\";\nimport React from \"react\";\nimport { WrapperComponent } from \"./WrapperComponent\";\nimport { PLUGIN_ID, PLUGIN_INACTIVE_WARNING } from \"./constants\";\n\n/** Taps into the Player and ReactPlayer hooks and leverage the WrapperComponent to define and process the content. */\nexport class BasicWevDevtoolsPlugin implements ReactPlayerPlugin {\n name = PLUGIN_ID;\n\n data: Record<string, unknown> = {};\n\n playerConfig: Record<string, unknown> = {};\n\n logs: {\n severity: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n message: any;\n }[] = [];\n\n flow?: Flow;\n\n expressionEvaluator?: WeakRef<ExpressionEvaluator>;\n\n view?: WeakRef<ViewInstance>;\n\n dataController?: WeakRef<DataController>;\n\n checkIfDevtoolsIsActive() {\n return localStorage.getItem(\"player-ui-devtools-active\") === \"true\";\n }\n\n apply(player: Player) {\n if (!this.checkIfDevtoolsIsActive()) {\n console.log(PLUGIN_INACTIVE_WARNING);\n return;\n }\n\n // Config\n this.playerConfig = {\n version: player.getVersion(),\n plugins: player.getPlugins().map((plugin) => plugin.name),\n };\n\n // Data\n player.hooks.dataController.tap(this.name, (dataController) => {\n dataController.hooks.onUpdate.tap(this.name, (updates) => {\n const newPlayerState = produce(this.data, (draft) => {\n updates.forEach(({ binding, newValue }) => {\n dset(draft, [\"data\", ...binding.asArray()], newValue);\n });\n });\n this.data = newPlayerState;\n });\n });\n\n // Logs\n player.logger.hooks.log.tap(this.name, (severity, message) => {\n this.logs = [...this.logs, { severity, message }];\n });\n\n // Flow\n player.hooks.onStart.tap(this.name, (f) => {\n this.flow = f;\n });\n\n // View\n player.hooks.view.tap(this.name, (view) => {\n this.view = new WeakRef(view);\n });\n\n // Expression evaluator\n player.hooks.expressionEvaluator.tap(this.name, (evaluator) => {\n this.expressionEvaluator = new WeakRef(evaluator);\n });\n }\n\n applyReact(reactPlayer: ReactPlayer) {\n if (!this.checkIfDevtoolsIsActive()) {\n return;\n }\n\n // eslint-disable-next-line react/display-name\n reactPlayer.hooks.webComponent.tap(this.name, (Comp) => () => {\n const Component = Comp as React.FC;\n\n return (\n <WrapperComponent\n playerConfig={this.playerConfig}\n data={this.data}\n logs={this.logs}\n flow={this.flow}\n view={this.view}\n expressionEvaluator={this.expressionEvaluator}\n >\n <Component />\n </WrapperComponent>\n );\n });\n }\n}\n","import { usePluginState } from \"@player-tools/devtools-desktop-plugins-common\";\nimport type {\n DevtoolsPluginInteractionEvent,\n PlayerInitEvent,\n PluginData,\n Transaction,\n} from \"@player-tools/devtools-types\";\nimport type { Flow } from \"@player-ui/react\";\nimport { dequal } from \"dequal\";\nimport { dset } from \"dset/merge\";\nimport { produce } from \"immer\";\nimport React, { useCallback, useEffect } from \"react\";\nimport { BASE_PLUGIN_DATA, INTERACTIONS } from \"./constants\";\nimport type { Evaluation, WrapperComponentProps } from \"./types\";\nimport { genDataChangeTransaction, getEvaluateExpression } from \"./helpers\";\nimport flow from \"../_generated/index.json\";\n\nconst pluginData: PluginData = {\n ...BASE_PLUGIN_DATA,\n flow: flow as Flow,\n};\n\n/** Defines the content to be rendered into the extension Player UI and process changes */\nexport const WrapperComponent = ({\n children,\n data,\n playerConfig,\n logs,\n flow,\n expressionEvaluator,\n}: WrapperComponentProps): JSX.Element => {\n const [state, playerID, dispatch] = usePluginState();\n const lastProcessedInteraction = React.useRef(0);\n const expEvaluator = useCallback(getEvaluateExpression(expressionEvaluator), [\n expressionEvaluator,\n ]);\n\n const id = pluginData.id;\n\n const processInteraction = useCallback(\n (interaction: DevtoolsPluginInteractionEvent) => {\n const {\n payload: { type, payload },\n } = interaction;\n if (\n type === INTERACTIONS.EVALUATE_EXPRESSION &&\n expressionEvaluator &&\n payload\n ) {\n const result = expEvaluator(payload);\n\n const newState = produce(state, (draft) => {\n const current: Array<Evaluation> =\n (state?.plugins?.[id]?.flow?.data?.history as Array<Evaluation>) ||\n [];\n dset(\n draft,\n [\"plugins\", id, \"flow\", \"data\", \"history\"],\n [...current, result]\n );\n });\n\n dispatch({\n id: -1,\n type: \"PLAYER_DEVTOOLS_PLUGIN_DATA_CHANGE\",\n payload: {\n pluginID: id,\n data: newState.plugins[id].flow.data,\n },\n sender: playerID,\n context: \"player\",\n target: \"player\",\n timestamp: Date.now(),\n _messenger_: true,\n });\n\n lastProcessedInteraction.current += 1;\n }\n },\n [dispatch, expressionEvaluator, id, state]\n );\n\n // inject playerConfig into the plugin data\n const pluginDataWithPlayerConfig = produce(pluginData, (draft) => {\n dset(draft, [\"flow\", \"data\", \"playerConfig\"], playerConfig);\n });\n\n // Initial plugin content\n useEffect(() => {\n const transaction: Transaction<PlayerInitEvent> = {\n id: -1,\n type: \"PLAYER_DEVTOOLS_PLAYER_INIT\",\n payload: {\n plugins: {\n [id]: pluginDataWithPlayerConfig,\n },\n },\n sender: playerID,\n context: \"player\",\n target: \"player\",\n timestamp: Date.now(),\n _messenger_: true,\n };\n\n dispatch(transaction);\n }, []);\n\n // Process interactions\n useEffect(() => {\n if (lastProcessedInteraction.current < (state.interactions.length ?? 0)) {\n state.interactions\n .slice(lastProcessedInteraction.current)\n .forEach(processInteraction);\n }\n }, [state.interactions.length]);\n\n // Data changes\n useEffect(() => {\n if (dequal(state.plugins[id]?.flow?.data?.data, data)) return;\n\n const newState = produce(state, (draft) => {\n dset(draft, [\"plugins\", id, \"flow\", \"data\", \"data\"], data);\n });\n\n const transaction = genDataChangeTransaction({\n playerID,\n data: newState.plugins[id].flow.data,\n pluginID: id,\n });\n\n dispatch(transaction);\n }, [data]);\n\n // Logs changes\n useEffect(() => {\n if (dequal(state.plugins[id]?.flow?.data?.logs, logs)) return;\n\n const newState = produce(state, (draft) => {\n dset(draft, [\"plugins\", id, \"flow\", \"data\", \"logs\"], logs);\n });\n\n const transaction = genDataChangeTransaction({\n playerID,\n data: newState.plugins[id].flow.data,\n pluginID: id,\n });\n\n dispatch(transaction);\n }, [logs]);\n\n // Flow changes\n useEffect(() => {\n if (dequal(state.plugins[id]?.flow?.data?.flow, flow)) return;\n\n const newState = produce(state, (draft) => {\n dset(draft, [\"plugins\", id, \"flow\", \"data\", \"flow\"], flow);\n });\n\n const transaction = genDataChangeTransaction({\n playerID,\n data: newState.plugins[id].flow.data,\n pluginID: id,\n });\n\n dispatch(transaction);\n }, [flow]);\n\n return children as JSX.Element;\n};\n","import type { PluginData } from \"@player-tools/devtools-types\";\n\nexport const PLUGIN_ID = \"player-ui-basic-devtools-plugin\";\n\nexport const PLUGIN_NAME = \"Standard Devtools\";\n\nexport const PLUGIN_DESCRIPTION = \"Standard Player UI Devtools\";\n\nexport const PLUGIN_VERSION = \"0.0.1\";\n\nexport const VIEWS_IDS = {\n CONFIG: \"Config\",\n FLOW: \"Flow\",\n LOGS: \"Logs\",\n CONSOLE: \"Console\",\n};\n\nexport const INTERACTIONS = {\n EVALUATE_EXPRESSION: \"evaluate-expression\",\n};\n\nexport const BASE_PLUGIN_DATA: Omit<PluginData, \"flow\"> = {\n id: PLUGIN_ID,\n name: PLUGIN_NAME,\n description: PLUGIN_DESCRIPTION,\n version: PLUGIN_VERSION,\n};\n\nexport const PLUGIN_INACTIVE_WARNING =\n \"The plugin has been registered, but the Player development tools are not active. If you are working in a production environment, it is recommended to remove the plugin. Either way, you can activate the Player development tools by clicking on the extension popup and refreshing the page.\";\n","import { ExpressionEvaluator } from \"@player-ui/react\";\nimport { v4 as uuid } from \"uuid\";\nimport { Evaluation } from \"../types\";\n\n/**\n * Creates a function to evaluate expressions using an nullable Player-UI's ExpressionEvaluator.\n *\n * This function factory takes an nullable WeakRef to an ExpressionEvaluator and returns\n * a new function that can be used to evaluate expressions. If the ExpressionEvaluator is\n * not available, it returns an error Evaluation. Otherwise, it attempts to evaluate the\n * expression. If the evaluation is successful, it returns the result. If there's an error\n * during evaluation, it captures the error and returns it as part of the Evaluation object.\n */\nexport const getEvaluateExpression =\n (expressionEvaluator?: WeakRef<ExpressionEvaluator>) =>\n (expression: string): Evaluation => {\n if (!expressionEvaluator) {\n return {\n id: uuid(),\n severity: \"error\",\n result: \"Expression evaluator not available\",\n expression,\n };\n }\n\n let result: Evaluation = {\n id: uuid(),\n severity: \"error\",\n result: \"Something went wrong\",\n expression,\n };\n\n try {\n expressionEvaluator.deref()?.hooks.onError.intercept({\n call: (error: Error) => {\n throw error;\n },\n });\n\n const evaluatorResult = expressionEvaluator.deref()?.evaluate(expression);\n\n result = {\n id: uuid(),\n result: evaluatorResult,\n expression,\n };\n } catch (error) {\n if (error instanceof Error) {\n result = {\n id: uuid(),\n severity: \"error\",\n result: error.message,\n expression,\n };\n }\n }\n\n return result;\n };\n","import type {\n DevtoolsDataChangeEvent,\n Transaction,\n} from \"@player-tools/devtools-types\";\nimport type { Flow } from \"@player-ui/react\";\n\nconst NOOP_ID = -1;\n\n/**\n * Generates a data change transaction for the player devtools plugin.\n *\n * This function creates a transaction object that represents a change in data\n * within a player devtools plugin. The transaction includes details such as the\n * plugin ID, the changed data, and the player ID. It is used to communicate\n * changes between the plugin and devtools.\n */\nexport const genDataChangeTransaction = ({\n playerID,\n data,\n pluginID,\n}: {\n playerID: string;\n data: Flow[\"data\"];\n pluginID: string;\n}): Transaction<DevtoolsDataChangeEvent> => {\n return {\n id: NOOP_ID,\n type: \"PLAYER_DEVTOOLS_PLUGIN_DATA_CHANGE\",\n payload: {\n pluginID,\n data,\n },\n sender: playerID,\n context: \"player\",\n target: \"player\",\n timestamp: Date.now(),\n _messenger_: true,\n };\n};\n","{\n \"id\": \"player-ui-basic-devtools-plugin\",\n \"views\": [\n {\n \"id\": \"Config\",\n \"type\": \"stacked-view\",\n \"header\": {\n \"asset\": {\n \"id\": \"Config-header\",\n \"type\": \"navigation\",\n \"values\": [\n {\n \"asset\": {\n \"id\": \"Config-header-values-0\",\n \"type\": \"action\",\n \"value\": \"Config\",\n \"label\": {\n \"asset\": {\n \"id\": \"Config-header-values-0-label\",\n \"type\": \"text\",\n \"value\": \"Config\"\n }\n }\n }\n },\n {\n \"asset\": {\n \"id\": \"Config-header-values-1\",\n \"type\": \"action\",\n \"value\": \"Flow\",\n \"label\": {\n \"asset\": {\n \"id\": \"Config-header-values-1-label\",\n \"type\": \"text\",\n \"value\": \"Flow\"\n }\n }\n }\n },\n {\n \"asset\": {\n \"id\": \"Config-header-values-2\",\n \"type\": \"action\",\n \"value\": \"Logs\",\n \"label\": {\n \"asset\": {\n \"id\": \"Config-header-values-2-label\",\n \"type\": \"text\",\n \"value\": \"Logs\"\n }\n }\n }\n },\n {\n \"asset\": {\n \"id\": \"Config-header-values-3\",\n \"type\": \"action\",\n \"value\": \"Console\",\n \"label\": {\n \"asset\": {\n \"id\": \"Config-header-values-3-label\",\n \"type\": \"text\",\n \"value\": \"Console\"\n }\n }\n }\n }\n ]\n }\n },\n \"main\": {\n \"asset\": {\n \"id\": \"Config-main\",\n \"type\": \"object-inspector\",\n \"binding\": \"playerConfig\",\n \"label\": {\n \"asset\": {\n \"id\": \"Config-main-label\",\n \"type\": \"text\",\n \"value\": \"Config\"\n }\n }\n }\n }\n },\n {\n \"id\": \"Flow\",\n \"type\": \"stacked-view\",\n \"header\": {\n \"asset\": {\n \"id\": \"Flow-header\",\n \"type\": \"navigation\",\n \"values\": [\n {\n \"asset\": {\n \"id\": \"Flow-header-values-0\",\n \"type\": \"action\",\n \"value\": \"Config\",\n \"label\": {\n \"asset\": {\n \"id\": \"Flow-header-values-0-label\",\n \"type\": \"text\",\n \"value\": \"Config\"\n }\n }\n }\n },\n {\n \"asset\": {\n \"id\": \"Flow-header-values-1\",\n \"type\": \"action\",\n \"value\": \"Flow\",\n \"label\": {\n \"asset\": {\n \"id\": \"Flow-header-values-1-label\",\n \"type\": \"text\",\n \"value\": \"Flow\"\n }\n }\n }\n },\n {\n \"asset\": {\n \"id\": \"Flow-header-values-2\",\n \"type\": \"action\",\n \"value\": \"Logs\",\n \"label\": {\n \"asset\": {\n \"id\": \"Flow-header-values-2-label\",\n \"type\": \"text\",\n \"value\": \"Logs\"\n }\n }\n }\n },\n {\n \"asset\": {\n \"id\": \"Flow-header-values-3\",\n \"type\": \"action\",\n \"value\": \"Console\",\n \"label\": {\n \"asset\": {\n \"id\": \"Flow-header-values-3-label\",\n \"type\": \"text\",\n \"value\": \"Console\"\n }\n }\n }\n }\n ]\n }\n },\n \"main\": {\n \"asset\": {\n \"id\": \"Flow-main\",\n \"type\": \"object-inspector\",\n \"binding\": \"flow\",\n \"label\": {\n \"asset\": {\n \"id\": \"Flow-main-label\",\n \"type\": \"text\",\n \"value\": \"Flow\"\n }\n }\n }\n },\n \"footer\": {\n \"asset\": {\n \"id\": \"Flow-footer\",\n \"type\": \"copy-to-clipboard\",\n \"binding\": \"flow\",\n \"label\": {\n \"asset\": {\n \"id\": \"Flow-footer-label\",\n \"type\": \"text\",\n \"value\": \"Copy flow to the clipboard\"\n }\n }\n }\n }\n },\n {\n \"id\": \"Logs\",\n \"type\": \"stacked-view\",\n \"header\": {\n \"asset\": {\n \"id\": \"Logs-header\",\n \"type\": \"navigation\",\n \"values\": [\n {\n \"asset\": {\n \"id\": \"Logs-header-values-0\",\n \"type\": \"action\",\n \"value\": \"Config\",\n \"label\": {\n \"asset\": {\n \"id\": \"Logs-header-values-0-label\",\n \"type\": \"text\",\n \"value\": \"Config\"\n }\n }\n }\n },\n {\n \"asset\": {\n \"id\": \"Logs-header-values-1\",\n \"type\": \"action\",\n \"value\": \"Flow\",\n \"label\": {\n \"asset\": {\n \"id\": \"Logs-header-values-1-label\",\n \"type\": \"text\",\n \"value\": \"Flow\"\n }\n }\n }\n },\n {\n \"asset\": {\n \"id\": \"Logs-header-values-2\",\n \"type\": \"action\",\n \"value\": \"Logs\",\n \"label\": {\n \"asset\": {\n \"id\": \"Logs-header-values-2-label\",\n \"type\": \"text\",\n \"value\": \"Logs\"\n }\n }\n }\n },\n {\n \"asset\": {\n \"id\": \"Logs-header-values-3\",\n \"type\": \"action\",\n \"value\": \"Console\",\n \"label\": {\n \"asset\": {\n \"id\": \"Logs-header-values-3-label\",\n \"type\": \"text\",\n \"value\": \"Console\"\n }\n }\n }\n }\n ]\n }\n },\n \"main\": {\n \"asset\": {\n \"id\": \"Logs-main\",\n \"type\": \"table\",\n \"binding\": \"logs\"\n }\n }\n },\n {\n \"id\": \"Console\",\n \"type\": \"stacked-view\",\n \"header\": {\n \"asset\": {\n \"id\": \"Console-header\",\n \"type\": \"navigation\",\n \"values\": [\n {\n \"asset\": {\n \"id\": \"Console-header-values-0\",\n \"type\": \"action\",\n \"value\": \"Config\",\n \"label\": {\n \"asset\": {\n \"id\": \"Console-header-values-0-label\",\n \"type\": \"text\",\n \"value\": \"Config\"\n }\n }\n }\n },\n {\n \"asset\": {\n \"id\": \"Console-header-values-1\",\n \"type\": \"action\",\n \"value\": \"Flow\",\n \"label\": {\n \"asset\": {\n \"id\": \"Console-header-values-1-label\",\n \"type\": \"text\",\n \"value\": \"Flow\"\n }\n }\n }\n },\n {\n \"asset\": {\n \"id\": \"Console-header-values-2\",\n \"type\": \"action\",\n \"value\": \"Logs\",\n \"label\": {\n \"asset\": {\n \"id\": \"Console-header-values-2-label\",\n \"type\": \"text\",\n \"value\": \"Logs\"\n }\n }\n }\n },\n {\n \"asset\": {\n \"id\": \"Console-header-values-3\",\n \"type\": \"action\",\n \"value\": \"Console\",\n \"label\": {\n \"asset\": {\n \"id\": \"Console-header-values-3-label\",\n \"type\": \"text\",\n \"value\": \"Console\"\n }\n }\n }\n }\n ]\n }\n },\n \"main\": {\n \"asset\": {\n \"id\": \"Console-main\",\n \"type\": \"console\",\n \"exp\": \" publish('evaluate-expression', {{expression}}) \",\n \"binding\": \"history\"\n }\n }\n }\n ],\n \"navigation\": {\n \"BEGIN\": \"Plugin\",\n \"Plugin\": {\n \"startState\": \"CONFIG\",\n \"CONFIG\": {\n \"state_type\": \"VIEW\",\n \"ref\": \"Config\",\n \"transitions\": {\n \"Config\": \"CONFIG\",\n \"Flow\": \"FLOW\",\n \"Logs\": \"LOGS\",\n \"Console\": \"CONSOLE\"\n }\n },\n \"FLOW\": {\n \"state_type\": \"VIEW\",\n \"ref\": \"Flow\",\n \"transitions\": {\n \"Config\": \"CONFIG\",\n \"Flow\": \"FLOW\",\n \"Logs\": \"LOGS\",\n \"Console\": \"CONSOLE\"\n }\n },\n \"LOGS\": {\n \"state_type\": \"VIEW\",\n \"ref\": \"Logs\",\n \"transitions\": {\n \"Config\": \"CONFIG\",\n \"Flow\": \"FLOW\",\n \"Logs\": \"LOGS\",\n \"Console\": \"CONSOLE\"\n }\n },\n \"CONSOLE\": {\n \"state_type\": \"VIEW\",\n \"ref\": \"Console\",\n \"transitions\": {\n \"Config\": \"CONFIG\",\n \"Flow\": \"FLOW\",\n \"Logs\": \"LOGS\",\n \"Console\": \"CONSOLE\"\n }\n }\n }\n },\n \"schema\": {\n \"ROOT\": {\n \"playerConfig\": {\n \"type\": \"RecordType\"\n },\n \"flow\": {\n \"type\": \"RecordType\"\n },\n \"expression\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n },\n \"history\": {\n \"type\": \"historyType\",\n \"isArray\": true\n },\n \"logs\": {\n \"type\": \"logsType\",\n \"isArray\": true\n }\n },\n \"logsType\": {\n \"id\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n },\n \"time\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n },\n \"type\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n },\n \"message\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n },\n \"severity\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n },\n \"binding\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n },\n \"from\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n },\n \"to\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n },\n \"state\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n },\n \"error\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n },\n \"outcome\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n },\n \"metricType\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n }\n },\n \"historyType\": {\n \"id\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n },\n \"expression\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n },\n \"result\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n },\n \"severity\": {\n \"type\": \"StringType\",\n \"default\": \"\",\n \"validation\": [\n {\n \"type\": \"string\"\n }\n ],\n \"format\": {\n \"type\": \"string\"\n }\n }\n }\n },\n \"data\": {\n \"expression\": \"\",\n \"flow\": {},\n \"history\": [],\n \"logs\": [],\n \"playerConfig\": {}\n }\n}"],"mappings":"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","names":["dset","produce","React","produce","dset","React"]}
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@player-tools/devtools-basic-web-plugin",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0-next.0",
|
|
4
4
|
"main": "dist/cjs/index.cjs",
|
|
5
5
|
"dependencies": {
|
|
6
|
-
"@player-tools/devtools-types": "0.
|
|
7
|
-
"@player-tools/devtools-desktop-plugins-common": "0.
|
|
8
|
-
"@player-tools/dsl": "0.
|
|
9
|
-
"@player-tools/cli": "0.
|
|
6
|
+
"@player-tools/devtools-types": "0.6.0-next.0",
|
|
7
|
+
"@player-tools/devtools-desktop-plugins-common": "0.6.0-next.0",
|
|
8
|
+
"@player-tools/dsl": "0.6.0-next.0",
|
|
9
|
+
"@player-tools/cli": "0.6.0-next.0",
|
|
10
10
|
"@player-ui/common-types-plugin": "0.7.2-next.4",
|
|
11
11
|
"@player-ui/react": "0.7.2-next.4",
|
|
12
12
|
"@devtools-ui/plugin": "0.0.2--canary.15.697",
|
package/src/WrapperComponent.tsx
CHANGED
|
@@ -20,7 +20,7 @@ const pluginData: PluginData = {
|
|
|
20
20
|
flow: flow as Flow,
|
|
21
21
|
};
|
|
22
22
|
|
|
23
|
-
/**
|
|
23
|
+
/** Defines the content to be rendered into the extension Player UI and process changes */
|
|
24
24
|
export const WrapperComponent = ({
|
|
25
25
|
children,
|
|
26
26
|
data,
|
package/src/constants/index.ts
CHANGED
|
@@ -25,3 +25,6 @@ export const BASE_PLUGIN_DATA: Omit<PluginData, "flow"> = {
|
|
|
25
25
|
description: PLUGIN_DESCRIPTION,
|
|
26
26
|
version: PLUGIN_VERSION,
|
|
27
27
|
};
|
|
28
|
+
|
|
29
|
+
export const PLUGIN_INACTIVE_WARNING =
|
|
30
|
+
"The plugin has been registered, but the Player development tools are not active. If you are working in a production environment, it is recommended to remove the plugin. Either way, you can activate the Player development tools by clicking on the extension popup and refreshing the page.";
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import type {
|
|
3
|
+
DevtoolsDataChangeEvent,
|
|
4
|
+
Transaction,
|
|
5
|
+
} from "@player-tools/devtools-types";
|
|
6
|
+
import { genDataChangeTransaction } from "../genDataChangeTransaction";
|
|
7
|
+
|
|
8
|
+
describe("genDataChangeTransaction", () => {
|
|
9
|
+
it("should correctly generate a data change transaction for valid input", () => {
|
|
10
|
+
const input = {
|
|
11
|
+
playerID: "player1",
|
|
12
|
+
data: {
|
|
13
|
+
key: "value",
|
|
14
|
+
anotherKey: 123,
|
|
15
|
+
},
|
|
16
|
+
pluginID: "pluginA",
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
const expectedOutput: Transaction<DevtoolsDataChangeEvent> = {
|
|
20
|
+
id: -1,
|
|
21
|
+
type: "PLAYER_DEVTOOLS_PLUGIN_DATA_CHANGE",
|
|
22
|
+
payload: {
|
|
23
|
+
pluginID: "pluginA",
|
|
24
|
+
data: {
|
|
25
|
+
key: "value",
|
|
26
|
+
anotherKey: 123,
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
sender: "player1",
|
|
30
|
+
context: "player",
|
|
31
|
+
target: "player",
|
|
32
|
+
timestamp: expect.any(Number),
|
|
33
|
+
_messenger_: true,
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
const result = genDataChangeTransaction(input);
|
|
37
|
+
|
|
38
|
+
expect(result).toEqual(expect.objectContaining(expectedOutput));
|
|
39
|
+
});
|
|
40
|
+
});
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { describe, it, expect, vi } from "vitest";
|
|
2
|
+
import { getEvaluateExpression } from "../getEvaluateExpression";
|
|
3
|
+
import type { Evaluation } from "../../types";
|
|
4
|
+
|
|
5
|
+
vi.mock("uuid", () => ({
|
|
6
|
+
v4: () => "test-uuid",
|
|
7
|
+
}));
|
|
8
|
+
|
|
9
|
+
const getMockExpressionEvaluator = (
|
|
10
|
+
evaluate: ReturnType<typeof vi.fn>,
|
|
11
|
+
throwError = false
|
|
12
|
+
): any => {
|
|
13
|
+
class MockExpressionEvaluator {
|
|
14
|
+
interceptor: Record<string, any> = {};
|
|
15
|
+
evaluate(...args: any[]) {
|
|
16
|
+
if (throwError) {
|
|
17
|
+
throw new Error("Evaluation error");
|
|
18
|
+
}
|
|
19
|
+
return evaluate(...args);
|
|
20
|
+
}
|
|
21
|
+
hooks = {
|
|
22
|
+
onError: {
|
|
23
|
+
intercept: (args: Record<string, any>) => {
|
|
24
|
+
this.interceptor = args;
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
return new MockExpressionEvaluator();
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
describe("getEvaluateExpression", () => {
|
|
33
|
+
it("returns an error Evaluation if expressionEvaluator is not available", () => {
|
|
34
|
+
const evaluateExpression = getEvaluateExpression();
|
|
35
|
+
const expression = "1 + 1";
|
|
36
|
+
const expected: Evaluation = {
|
|
37
|
+
id: "test-uuid",
|
|
38
|
+
severity: "error",
|
|
39
|
+
result: "Expression evaluator not available",
|
|
40
|
+
expression,
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
const result = evaluateExpression(expression);
|
|
44
|
+
|
|
45
|
+
expect(result).toEqual(expected);
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
it("evaluates expressions correctly when evaluator is available", () => {
|
|
49
|
+
const mockEvaluate = vi.fn().mockReturnValue(2);
|
|
50
|
+
const mockExpressionEvaluator = getMockExpressionEvaluator(mockEvaluate);
|
|
51
|
+
const evaluateExpression = getEvaluateExpression(
|
|
52
|
+
new WeakRef(mockExpressionEvaluator)
|
|
53
|
+
);
|
|
54
|
+
const expression = "1 + 1";
|
|
55
|
+
const expected: Evaluation = {
|
|
56
|
+
id: "test-uuid",
|
|
57
|
+
result: 2,
|
|
58
|
+
expression,
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
const result = evaluateExpression(expression);
|
|
62
|
+
|
|
63
|
+
expect(result).toEqual(expected);
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
it("captures and returns an error if evaluation throws an error", () => {
|
|
67
|
+
const mockEvaluate = vi.fn();
|
|
68
|
+
const mockExpressionEvaluator = getMockExpressionEvaluator(
|
|
69
|
+
mockEvaluate,
|
|
70
|
+
true
|
|
71
|
+
);
|
|
72
|
+
const evaluateExpression = getEvaluateExpression(
|
|
73
|
+
new WeakRef(mockExpressionEvaluator)
|
|
74
|
+
);
|
|
75
|
+
const expression = "invalid expression";
|
|
76
|
+
const expected: Evaluation = {
|
|
77
|
+
id: "test-uuid",
|
|
78
|
+
severity: "error",
|
|
79
|
+
result: "Evaluation error",
|
|
80
|
+
expression,
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
const result = evaluateExpression(expression);
|
|
84
|
+
|
|
85
|
+
expect(result).toEqual(expected);
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
it("handles errors triggered by onError hook", () => {
|
|
89
|
+
const mockEvaluate = vi.fn();
|
|
90
|
+
const mockExpressionEvaluator = getMockExpressionEvaluator(
|
|
91
|
+
mockEvaluate,
|
|
92
|
+
false
|
|
93
|
+
);
|
|
94
|
+
const evaluateExpression = getEvaluateExpression(
|
|
95
|
+
new WeakRef(mockExpressionEvaluator)
|
|
96
|
+
);
|
|
97
|
+
const expression = "trigger hook error";
|
|
98
|
+
|
|
99
|
+
evaluateExpression(expression);
|
|
100
|
+
|
|
101
|
+
expect(() => {
|
|
102
|
+
mockExpressionEvaluator.interceptor.call(new Error("Hook error"));
|
|
103
|
+
evaluateExpression(expression);
|
|
104
|
+
}).toThrow("Hook error");
|
|
105
|
+
});
|
|
106
|
+
});
|
|
@@ -4,6 +4,16 @@ import type {
|
|
|
4
4
|
} from "@player-tools/devtools-types";
|
|
5
5
|
import type { Flow } from "@player-ui/react";
|
|
6
6
|
|
|
7
|
+
const NOOP_ID = -1;
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Generates a data change transaction for the player devtools plugin.
|
|
11
|
+
*
|
|
12
|
+
* This function creates a transaction object that represents a change in data
|
|
13
|
+
* within a player devtools plugin. The transaction includes details such as the
|
|
14
|
+
* plugin ID, the changed data, and the player ID. It is used to communicate
|
|
15
|
+
* changes between the plugin and devtools.
|
|
16
|
+
*/
|
|
7
17
|
export const genDataChangeTransaction = ({
|
|
8
18
|
playerID,
|
|
9
19
|
data,
|
|
@@ -14,7 +24,7 @@ export const genDataChangeTransaction = ({
|
|
|
14
24
|
pluginID: string;
|
|
15
25
|
}): Transaction<DevtoolsDataChangeEvent> => {
|
|
16
26
|
return {
|
|
17
|
-
id:
|
|
27
|
+
id: NOOP_ID,
|
|
18
28
|
type: "PLAYER_DEVTOOLS_PLUGIN_DATA_CHANGE",
|
|
19
29
|
payload: {
|
|
20
30
|
pluginID,
|
|
@@ -2,6 +2,15 @@ import { ExpressionEvaluator } from "@player-ui/react";
|
|
|
2
2
|
import { v4 as uuid } from "uuid";
|
|
3
3
|
import { Evaluation } from "../types";
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* Creates a function to evaluate expressions using an nullable Player-UI's ExpressionEvaluator.
|
|
7
|
+
*
|
|
8
|
+
* This function factory takes an nullable WeakRef to an ExpressionEvaluator and returns
|
|
9
|
+
* a new function that can be used to evaluate expressions. If the ExpressionEvaluator is
|
|
10
|
+
* not available, it returns an error Evaluation. Otherwise, it attempts to evaluate the
|
|
11
|
+
* expression. If the evaluation is successful, it returns the result. If there's an error
|
|
12
|
+
* during evaluation, it captures the error and returns it as part of the Evaluation object.
|
|
13
|
+
*/
|
|
5
14
|
export const getEvaluateExpression =
|
|
6
15
|
(expressionEvaluator?: WeakRef<ExpressionEvaluator>) =>
|
|
7
16
|
(expression: string): Evaluation => {
|
package/src/index.tsx
CHANGED
|
@@ -11,10 +11,11 @@ import { dset } from "dset/merge";
|
|
|
11
11
|
import { produce } from "immer";
|
|
12
12
|
import React from "react";
|
|
13
13
|
import { WrapperComponent } from "./WrapperComponent";
|
|
14
|
+
import { PLUGIN_ID, PLUGIN_INACTIVE_WARNING } from "./constants";
|
|
14
15
|
|
|
15
|
-
/**
|
|
16
|
+
/** Taps into the Player and ReactPlayer hooks and leverage the WrapperComponent to define and process the content. */
|
|
16
17
|
export class BasicWevDevtoolsPlugin implements ReactPlayerPlugin {
|
|
17
|
-
name =
|
|
18
|
+
name = PLUGIN_ID;
|
|
18
19
|
|
|
19
20
|
data: Record<string, unknown> = {};
|
|
20
21
|
|
|
@@ -34,7 +35,16 @@ export class BasicWevDevtoolsPlugin implements ReactPlayerPlugin {
|
|
|
34
35
|
|
|
35
36
|
dataController?: WeakRef<DataController>;
|
|
36
37
|
|
|
38
|
+
checkIfDevtoolsIsActive() {
|
|
39
|
+
return localStorage.getItem("player-ui-devtools-active") === "true";
|
|
40
|
+
}
|
|
41
|
+
|
|
37
42
|
apply(player: Player) {
|
|
43
|
+
if (!this.checkIfDevtoolsIsActive()) {
|
|
44
|
+
console.log(PLUGIN_INACTIVE_WARNING);
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
|
|
38
48
|
// Config
|
|
39
49
|
this.playerConfig = {
|
|
40
50
|
version: player.getVersion(),
|
|
@@ -75,6 +85,10 @@ export class BasicWevDevtoolsPlugin implements ReactPlayerPlugin {
|
|
|
75
85
|
}
|
|
76
86
|
|
|
77
87
|
applyReact(reactPlayer: ReactPlayer) {
|
|
88
|
+
if (!this.checkIfDevtoolsIsActive()) {
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
|
|
78
92
|
// eslint-disable-next-line react/display-name
|
|
79
93
|
reactPlayer.hooks.webComponent.tap(this.name, (Comp) => () => {
|
|
80
94
|
const Component = Comp as React.FC;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { WrapperComponentProps } from "./types";
|
|
2
|
-
/**
|
|
2
|
+
/** Defines the content to be rendered into the extension Player UI and process changes */
|
|
3
3
|
export declare const WrapperComponent: ({ children, data, playerConfig, logs, flow, expressionEvaluator, }: WrapperComponentProps) => JSX.Element;
|
|
4
4
|
//# sourceMappingURL=WrapperComponent.d.ts.map
|
|
@@ -13,4 +13,5 @@ export declare const INTERACTIONS: {
|
|
|
13
13
|
EVALUATE_EXPRESSION: string;
|
|
14
14
|
};
|
|
15
15
|
export declare const BASE_PLUGIN_DATA: Omit<PluginData, "flow">;
|
|
16
|
+
export declare const PLUGIN_INACTIVE_WARNING = "The plugin has been registered, but the Player development tools are not active. If you are working in a production environment, it is recommended to remove the plugin. Either way, you can activate the Player development tools by clicking on the extension popup and refreshing the page.";
|
|
16
17
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
import type { DevtoolsDataChangeEvent, Transaction } from "@player-tools/devtools-types";
|
|
2
2
|
import type { Flow } from "@player-ui/react";
|
|
3
|
+
/**
|
|
4
|
+
* Generates a data change transaction for the player devtools plugin.
|
|
5
|
+
*
|
|
6
|
+
* This function creates a transaction object that represents a change in data
|
|
7
|
+
* within a player devtools plugin. The transaction includes details such as the
|
|
8
|
+
* plugin ID, the changed data, and the player ID. It is used to communicate
|
|
9
|
+
* changes between the plugin and devtools.
|
|
10
|
+
*/
|
|
3
11
|
export declare const genDataChangeTransaction: ({ playerID, data, pluginID, }: {
|
|
4
12
|
playerID: string;
|
|
5
13
|
data: Flow["data"];
|
|
@@ -1,4 +1,13 @@
|
|
|
1
1
|
import { ExpressionEvaluator } from "@player-ui/react";
|
|
2
2
|
import { Evaluation } from "../types";
|
|
3
|
+
/**
|
|
4
|
+
* Creates a function to evaluate expressions using an nullable Player-UI's ExpressionEvaluator.
|
|
5
|
+
*
|
|
6
|
+
* This function factory takes an nullable WeakRef to an ExpressionEvaluator and returns
|
|
7
|
+
* a new function that can be used to evaluate expressions. If the ExpressionEvaluator is
|
|
8
|
+
* not available, it returns an error Evaluation. Otherwise, it attempts to evaluate the
|
|
9
|
+
* expression. If the evaluation is successful, it returns the result. If there's an error
|
|
10
|
+
* during evaluation, it captures the error and returns it as part of the Evaluation object.
|
|
11
|
+
*/
|
|
3
12
|
export declare const getEvaluateExpression: (expressionEvaluator?: WeakRef<ExpressionEvaluator>) => (expression: string) => Evaluation;
|
|
4
13
|
//# sourceMappingURL=getEvaluateExpression.d.ts.map
|
package/types/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { DataController, ExpressionEvaluator, Flow, Player, ReactPlayer, ReactPlayerPlugin, ViewInstance } from "@player-ui/react";
|
|
2
|
-
/**
|
|
2
|
+
/** Taps into the Player and ReactPlayer hooks and leverage the WrapperComponent to define and process the content. */
|
|
3
3
|
export declare class BasicWevDevtoolsPlugin implements ReactPlayerPlugin {
|
|
4
4
|
name: string;
|
|
5
5
|
data: Record<string, unknown>;
|
|
@@ -12,6 +12,7 @@ export declare class BasicWevDevtoolsPlugin implements ReactPlayerPlugin {
|
|
|
12
12
|
expressionEvaluator?: WeakRef<ExpressionEvaluator>;
|
|
13
13
|
view?: WeakRef<ViewInstance>;
|
|
14
14
|
dataController?: WeakRef<DataController>;
|
|
15
|
+
checkIfDevtoolsIsActive(): boolean;
|
|
15
16
|
apply(player: Player): void;
|
|
16
17
|
applyReact(reactPlayer: ReactPlayer): void;
|
|
17
18
|
}
|