From 04bc315eba373c861c348b09545fc0ded46bfb33 Mon Sep 17 00:00:00 2001 From: Will Holen Date: Mon, 20 Apr 2020 14:03:25 -0700 Subject: [PATCH] Add support for generating custom messages Summary: Until now we've generated scaffolding entirely based on the official devtools protocol spec. This diff adds support for defining custom domains in `custom.json` which will be merged with the upstream protocol JSON definition. ChangeLog: [Internal] Add support for Hermes-specific CDP messages Reviewed By: bestander Differential Revision: D20754605 fbshipit-source-id: a8075f81816a40114d1a3332192c7aa076b17848 --- .../hermes/inspector/tools/msggen/src/custom.json | 3 +++ .../hermes/inspector/tools/msggen/src/index.js | 11 ++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 ReactCommon/hermes/inspector/tools/msggen/src/custom.json diff --git a/ReactCommon/hermes/inspector/tools/msggen/src/custom.json b/ReactCommon/hermes/inspector/tools/msggen/src/custom.json new file mode 100644 index 00000000000..cf7aab3e622 --- /dev/null +++ b/ReactCommon/hermes/inspector/tools/msggen/src/custom.json @@ -0,0 +1,3 @@ +{ + "domains": [] +} diff --git a/ReactCommon/hermes/inspector/tools/msggen/src/index.js b/ReactCommon/hermes/inspector/tools/msggen/src/index.js index 5124485a86d..973e5c89483 100644 --- a/ReactCommon/hermes/inspector/tools/msggen/src/index.js +++ b/ReactCommon/hermes/inspector/tools/msggen/src/index.js @@ -24,7 +24,10 @@ import {HeaderWriter} from './HeaderWriter'; import {ImplementationWriter} from './ImplementationWriter'; // $FlowFixMe: this isn't a module, just a JSON file. -const proto = require('devtools-protocol/json/js_protocol.json'); +const standard = require('devtools-protocol/json/js_protocol.json'); + +// $FlowFixMe: this isn't a module, also just a JSON file. +const custom = require('../src/custom.json'); type Descriptor = {| types: Array, @@ -32,6 +35,12 @@ type Descriptor = {| events: Array, |}; +function mergeDomains(original, extra) { + return {...original, domains: original.domains.concat(extra.domains)}; +} + +const proto = mergeDomains(standard, custom); + function parseDomains( domainObjs: Array, ignoreExperimental: boolean,