MCPcopy Create free account
hub / github.com/Effect-TS/effect / getIndexSignatureKeys

Function getIndexSignatureKeys

packages/effect/src/SchemaAST.ts:1927–1953  ·  view source on GitHub ↗
(
  input: { readonly [x: PropertyKey]: unknown },
  parameter: IndexSignatureParameter,
  options: ParseOptions = defaultParseOptions
)

Source from the content-addressed store, hash-verified

1925 * @internal
1926 */
1927export function getIndexSignatureKeys(
1928 input: { readonly [x: PropertyKey]: unknown },
1929 parameter: IndexSignatureParameter,
1930 options: ParseOptions = defaultParseOptions
1931): ReadonlyArray<PropertyKey> {
1932 let stringKeys: ReadonlyArray<string> | undefined
1933 let symbolKeys: ReadonlyArray<symbol> | undefined
1934
1935 function go(parameter: AST): ReadonlyArray<PropertyKey> {
1936 switch (parameter._tag) {
1937 case "String":
1938 case "TemplateLiteral":
1939 return (stringKeys ??= Object.keys(input)).filter((k) => parameter.matchPart(k, options) !== undefined)
1940 case "Number":
1941 return (stringKeys ??= Object.keys(input)).filter((k) => parameter.matchKey(k, options) !== undefined)
1942 case "Symbol":
1943 return (symbolKeys ??= Object.getOwnPropertySymbols(input)).filter((k) =>
1944 parameter.matchKey(k, options) !== undefined
1945 )
1946 case "Union":
1947 return [...new Set(parameter.types.flatMap(go))]
1948 default:
1949 return []
1950 }
1951 }
1952 return go(parameterFromPropertyKey(toEncoded(parameter)))
1953}
1954
1955/**
1956 * Represents a named property within an {@link Objects} node.

Callers 1

getParserMethod · 0.85

Calls 2

toEncodedInterface · 0.85
goFunction · 0.70

Tested by

no test coverage detected