Some checks failed
CI / go (push) Waiting to run
CI / docker (push) Waiting to run
CI / lint-go (push) Waiting to run
CI / lint-docs (push) Waiting to run
CI / check-paperclip (push) Waiting to run
Deploy static site / Deploy to GitHub Pages (push) Has been cancelled
Deploy static site / Deploy via Docker to hatch.surf (push) Has been cancelled
Resolved conflicts by taking GitHub versions for: - .dockerignore, .gitignore, Dockerfile, README.md, docker-compose.yml Kept deploy.sh updated to: - Pull from GitHub (primary source) - Push to Gitea (push-mirror) - Build from site/ directory (GitHub structure) Co-Authored-By: Paperclip <noreply@paperclip.ing>
37 lines
979 B
Plaintext
37 lines
979 B
Plaintext
/**
|
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*
|
|
* @flow strict
|
|
* @noformat
|
|
*/
|
|
|
|
'use strict';
|
|
|
|
import type {ESNode} from 'hermes-estree';
|
|
import type {VisitorKeys as VisitorKeysType} from '../generated/ESTreeVisitorKeys';
|
|
|
|
import FlowVisitorKeys from '../generated/ESTreeVisitorKeys';
|
|
|
|
export function isNode(thing: mixed) /*: implies thing is {+[string]: mixed} */ {
|
|
return (
|
|
typeof thing === 'object' && thing != null && typeof thing.type === 'string'
|
|
);
|
|
}
|
|
|
|
export type {VisitorKeysType};
|
|
export function getVisitorKeys<T: ESNode>(
|
|
node: T,
|
|
visitorKeys?: ?VisitorKeysType,
|
|
): $ReadOnlyArray<$Keys<T>> {
|
|
const keys = (visitorKeys ?? FlowVisitorKeys)[node.type];
|
|
if (keys == null) {
|
|
throw new Error(`No visitor keys found for node type "${node.type}".`);
|
|
}
|
|
|
|
// $FlowExpectedError[prop-missing]
|
|
return keys;
|
|
}
|