{"version":3,"file":"store.mjs","sources":["../../src/store/constants.ts","../../src/store/queries.ts","../../src/store/TSDocStore.ts","../../src/store/TSDocMemoryStore.ts"],"sourcesContent":["/** @internal */\nexport const API_MEMBER_TYPES = [\n  'api.class',\n  'api.enum',\n  'api.function',\n  'api.interface',\n  'api.namespace',\n  'api.typeAlias',\n  'api.variable',\n]\n","import groq from 'groq'\n\n/** @internal */\nexport const API_EXPORTS_QUERY = groq`\n*[\n  _type == 'api.export'\n  && package->scope == $packageScope\n  && package->name == $packageName\n  && release->version == $releaseVersion\n]{\n  name,\n  path,\n  package->{name,scope},\n  release->{version},\n  'isLatest': release->_id == package->latestRelease._ref,\n  'members': *[_type in $memberTypes && references(^._id) && !(\"@hidden\" in coalesce(comment.customBlocks[].tag, [])) && !coalesce(isOverloading, false)] | order(name asc) {\n    '_key': _id,\n    _type,\n    comment{deprecated},\n    export->{name,path},\n    members[]{\n      _key,\n      _type,\n      export->{name,path},\n      name,\n      package->{name,scope},\n      release->{version},\n      releaseTag,\n      isReactComponentType,\n      slug,\n    },\n    name,\n    slug,\n    package->{name,scope},\n    release->{version},\n    releaseTag,\n    isReactComponentType,\n    isReactHook,\n    isOverloading,\n  }\n} | order(name)\n`\n\n/** @internal */\nconst API_TOKEN_MEMBER_PROJECTION = groq`\n...,\nexport->{name, path},\npackage->{name, scope},\nrelease->{version}\n`\n\n/** @internal */\nconst API_CLASS_PROJECTION = groq`\n_id,\n_type,\n_updatedAt,\ncomment,\nexport->{name,path},\nmembers[]{\n  _type == 'api.constructor' => {\n    _key,\n    _type,\n    comment,\n    parameters[]{\n      _key,\n      _type,\n      name,\n      releaseTag,\n      type[]{\n        ...,\n        member->{${API_TOKEN_MEMBER_PROJECTION}}\n      }\n    },\n    releaseTag\n  },\n  _type == 'api.method' => {\n    _key,\n    _type,\n    comment,\n    name,\n    isOptional,\n    isStatic,\n    parameters[]{\n      _key,\n      _type,\n      name,\n      releaseTag,\n      type[]{\n        ...,\n        member->{${API_TOKEN_MEMBER_PROJECTION}}\n      }\n    },\n    releaseTag,\n    returnType[]{\n      ...,\n      member->{${API_TOKEN_MEMBER_PROJECTION}}\n    },\n    typeParameters\n  },\n  _type == 'api.property' => {\n    _key,\n    _type,\n    comment,\n    name,\n    isEventProperty,\n    isOptional,\n    isStatic,\n    releaseTag,\n    type[]{\n      ...,\n      member->{${API_TOKEN_MEMBER_PROJECTION}}\n    }\n  }\n},\nname,\npackage->{scope,name},\nrelease->{version},\nreleaseTag,\ntypeParameters\n`\n\n// TODO\nconst API_ENUM_PROJECTION = groq`\n...,\nexport->{name,path},\npackage->{scope,name},\nrelease->{version}\n`\n\n/** @internal */\nconst API_INTERFACE_PROJECTION = groq`\n_id,\n_type,\n_updatedAt,\ncomment,\nexport->{name,path},\nextends,\nmembers[]{\n  _type == 'api.callSignature' => {\n    _key,\n    _type,\n    comment,\n    parameters[]{\n      _key,\n      _type,\n      name,\n      releaseTag,\n      type[]{\n        ...,\n        member->{${API_TOKEN_MEMBER_PROJECTION}}\n      }\n    },\n    releaseTag,\n    returnType[]{\n      ...,\n      member->{${API_TOKEN_MEMBER_PROJECTION}}\n    },\n    typeParameters\n  },\n\n  _type == 'api.methodSignature' => {\n    _key,\n    _type,\n    comment,\n    isOptional,\n    name,\n    parameters[]{\n      _key,\n      _type,\n      name,\n      releaseTag,\n      type[]{\n        ...,\n        member->{${API_TOKEN_MEMBER_PROJECTION}}\n      }\n    },\n    releaseTag,\n    returnType[]{\n      ...,\n      member->{${API_TOKEN_MEMBER_PROJECTION}}\n    },\n    typeParameters\n  },\n\n  _type == 'api.indexSignature' => {\n    _key,\n    _type,\n    comment,\n    releaseTag,\n    parameters[]{\n      _key,\n      _type,\n      name,\n      releaseTag,\n      type[]{\n        ...,\n        member->{${API_TOKEN_MEMBER_PROJECTION}}\n      }\n    },\n    returnType[]{\n      ...,\n      member->{${API_TOKEN_MEMBER_PROJECTION}}\n    }\n  },\n\n  _type == 'api.propertySignature' => {\n    _key,\n    _type,\n    comment,\n    isOptional,\n    name,\n    releaseTag,\n    comment,\n    type[]{\n      ...,\n      member->{${API_TOKEN_MEMBER_PROJECTION}}\n    }\n  }\n},\nname,\npackage->{scope,name},\n'referrers': *[references(^._id)] {\n  _type,\n  name,\n  export->{path},\n  package->{scope,name},\n  release->{version}\n},\nrelease->{version},\nreleaseTag,\nslug,\ntypeParameters\n`\n\n/** @internal */\nconst API_FUNCTION_PROJECTION = groq`\n_id,\n_type,\n_updatedAt,\ncomment,\nexport->{name,path},\nisReactComponentType,\nname,\npackage->{scope,name},\nparameters[]{\n  _key,\n  _type,\n  name,\n  releaseTag,\n  comment,\n  type[]{\n    ...,\n    member->{${API_TOKEN_MEMBER_PROJECTION}}\n  }\n},\npropsType->{\n  _type == 'api.interface' => {\n    ${API_INTERFACE_PROJECTION}\n  }\n},\n'referrers': *[references(^._id)] {\n  _type,\n  name,\n  export->{path},\n  package->{scope,name},\n  release->{version}\n},\nrelease->{version},\nreleaseTag,\nreturnType[]{\n  ...,\n  member->{${API_TOKEN_MEMBER_PROJECTION}}\n},\ntypeParameters\n`\n\n/** @internal */\nconst API_NAMESPACE_PROJECTION = groq`\n_id,\n_type,\n_updatedAt,\ncomment,\nexport->{name,path},\nmembers[]{\n  ...\n},\nname,\npackage->{scope,name},\nrelease->{version},\nreleaseTag\n`\n\n/** @internal */\nconst API_TYPE_ALIAS_PROJECTION = groq`\n_id,\n_type,\n_updatedAt,\ncomment,\nexport->{name,path},\nname,\npackage->{scope,name},\nrelease->{version},\nreleaseTag,\ntype[]{\n  ...,\n  member->{${API_TOKEN_MEMBER_PROJECTION}}\n},\ntypeParameters\n`\n\n/** @internal */\nconst API_VARIABLE_PROJECTION = groq`\n_id,\n_type,\ncomment,\nexport->{name,path},\nisReactComponentType,\nname,\nparameters[]{\n  _key,\n  _type,\n  name,\n  releaseTag,\n  comment,\n  type[]{\n    ...,\n    member->{${API_TOKEN_MEMBER_PROJECTION}}\n  }\n},\npackage->{scope,name},\npropsType->,\nrelease->{version},\nreleaseTag,\n'referrers': *[references(^._id)] {\n  _type,\n  name,\n  export->{path},\n  package->{scope,name},\n  release->{version}\n},\ntype[]{\n  ...,\n  member->{${API_TOKEN_MEMBER_PROJECTION}}\n}\n`\n\n/** @internal */\nexport const API_MEMBER_PROJECTION = groq`\n_type == 'api.class' => {\n  ${API_CLASS_PROJECTION}\n},\n\n_type == 'api.enum' => {\n  ${API_ENUM_PROJECTION}\n},\n\n_type == 'api.function' => {\n  ${API_FUNCTION_PROJECTION}\n},\n\n_type == 'api.interface' => {\n  ${API_INTERFACE_PROJECTION}\n},\n\n_type == 'api.namespace' => {\n  ${API_NAMESPACE_PROJECTION}\n},\n\n_type == 'api.typeAlias' => {\n  ${API_TYPE_ALIAS_PROJECTION}\n},\n\n_type == 'api.variable' => {\n  ${API_VARIABLE_PROJECTION}\n}\n`\n\n/** @internal */\nexport const API_MEMBER_QUERY = groq`\n*[\n  _type in $memberTypes\n  && export->path == $exportPath\n  && package->scope == $packageScope\n  && package->name == $packageName\n  && release->version == $releaseVersion\n  && slug.current == $memberSlug\n  && !(\"@hidden\" in coalesce(comment.customBlocks[].tag, []))\n]{\n  ${API_MEMBER_PROJECTION},\n  \"members\": members[!(\"@hidden\" in coalesce(comment.customBlocks[].tag, []))],\n  'versions': *[\n    _type == 'api.release'\n    && package->scope == $packageScope\n    && package->name == $packageName\n  ]{version}.version\n}\n`\n\n/** @internal */\n\nconst NON_HIDDEN_MEMBER_TYPES_ARRAY = groq`*[\n  _type in $memberTypes\n  && name == ^.name\n  && package->scope == $packageScope\n  && package->name == $packageName\n  && !(\"@hidden\" in coalesce(comment.customBlocks[].tag, []))\n]`\n\n/** @internal */\nexport const API_SYMBOL_SEARCH_QUERY = groq`\n*[\n  _type == 'api.symbol'\n  && name match $query\n  && package->scope == $packageScope\n  && package->name == $packageName\n  && count(${NON_HIDDEN_MEMBER_TYPES_ARRAY}) > 0\n]{\n  _id,\n  _type,\n  name,\n  package->{name,scope}\n}[0...10]{\n  ...,\n  'members': ${NON_HIDDEN_MEMBER_TYPES_ARRAY}{\n    slug,\n    'exportPath': export->path,\n    'releaseVersion': release->version\n  }\n} | order(lower(name) asc)\n`\n\n/** @internal */\nexport const API_PACKAGES_QUERY = groq`\n*[_type == 'api.package']{\n  _id,\n  name,\n  scope,\n  latestRelease->{version},\n  releases[]->{version}\n}\n`\n\n/** @internal */\nexport const API_PACKAGE_QUERY = groq`\n*[\n  _type == 'api.package'\n  && scope == $packageScope\n  && name == $packageName\n][0]\n`\n\n/** @internal */\nexport const API_SYMBOL_QUERY = groq`\n*[\n  _type == 'api.symbol'\n  && package->scope == $packageScope\n  && package->name == $packageName\n]{\n  _type,\n  name,\n  package->{name,scope},\n  'members': *[\n    _type in $memberTypes\n  ]{${API_MEMBER_PROJECTION}}\n}[0]\n`\n","/* eslint-disable no-console */\nimport {APIPackage} from '@sanity/tsdoc'\n\nimport {API_MEMBER_TYPES} from './constants'\nimport {\n  API_EXPORTS_QUERY,\n  API_MEMBER_QUERY,\n  API_PACKAGE_QUERY,\n  API_PACKAGES_QUERY,\n  API_SYMBOL_QUERY,\n  API_SYMBOL_SEARCH_QUERY,\n} from './queries'\nimport {\n  TSDocAPIMember,\n  TSDocAPISymbol,\n  TSDocAppParams,\n  TSDocExportData,\n  TSDocStore,\n  TSDocStoreCache,\n  TSDocSymbolSearchResult,\n} from './types'\n\n/** @beta */\nexport interface TSDocStoreOptions {\n  debug?: boolean\n  query: (q: string, params: Record<string, unknown>) => Promise<any>\n  initialState?: TSDocStoreCache\n}\n\n/**\n * A function for creating a TSDocStore instance.\n *\n * @beta\n *\n * @example\n * ```tsx\n * const tsdocStore = createTSDocStore({\n *  debug: true,\n *  query: async (q, params) => tsDocClient.fetch(q, params),\n *  initialState: {\n *    exports: {},\n *    member: {},\n *    package: {},\n *    packages: [],\n *    symbol: {},\n *  },\n * });\n * ```\n *\n * @example\n * ```tsx\n *  const tsdocStore = createTSDocStore({\n *    debug: true,\n *    query: async (q, params) => tsDocClient.fetch(q, params),\n * });\n * ```\n */\nexport function createTSDocStore(options: TSDocStoreOptions): TSDocStore {\n  const {debug, query, initialState} = options\n\n  const cache: TSDocStoreCache = initialState || {\n    exports: {},\n    member: {},\n    package: {},\n    packages: [],\n    symbol: {},\n  }\n\n  return {\n    exports: {\n      get: async (params: {\n        packageScope: string | null\n        packageName: string\n        releaseVersion: string\n      }): Promise<TSDocExportData[] | undefined> => {\n        if (debug) console.log('exports.get', params)\n\n        const key = JSON.stringify(params)\n\n        if (cache.exports[key]) {\n          if (debug) console.log('exports.get read from cache')\n\n          return cache.exports[key]\n        }\n\n        const result = await query(API_EXPORTS_QUERY, {\n          ...params,\n          memberTypes: API_MEMBER_TYPES,\n        })\n\n        cache.exports[key] = result\n\n        return result\n      },\n    },\n\n    member: {\n      get: async (params: TSDocAppParams): Promise<TSDocAPIMember[] | null | undefined> => {\n        if (debug) console.log('member.get', params)\n\n        const key = JSON.stringify(params)\n\n        if (cache.member[key]) {\n          if (debug) console.log('member.get read from cache')\n\n          return cache.member[key]\n        }\n\n        const result = await query(API_MEMBER_QUERY, {\n          ...params,\n          memberTypes: API_MEMBER_TYPES,\n        })\n\n        cache.member[key] = result\n\n        return result\n      },\n    },\n\n    package: {\n      get: async (params: TSDocAppParams): Promise<APIPackage | null | undefined> => {\n        if (debug) console.log('package.get', params)\n\n        const key = JSON.stringify(params)\n\n        if (cache.package[key]) {\n          if (debug) console.log('package.get read from cache')\n\n          return cache.package[key]\n        }\n\n        const result = await query(API_PACKAGE_QUERY, {\n          ...params,\n          memberTypes: API_MEMBER_TYPES,\n        })\n\n        cache.package[key] = result\n\n        return result\n      },\n    },\n\n    packages: {\n      get: async (): Promise<APIPackage[] | null | undefined> => {\n        if (debug) console.log('packages.get')\n\n        if (cache.packages.length) {\n          if (debug) console.log('packages.get read from cache')\n\n          return cache.packages\n        }\n\n        const result = await query(API_PACKAGES_QUERY, {})\n\n        cache.packages = result\n\n        return result\n      },\n    },\n\n    symbol: {\n      get: async (params: {\n        name: string\n        packageName: string\n        packageScope: string | null\n      }): Promise<TSDocAPISymbol | null | undefined> => {\n        if (debug) console.log('symbol.get', params)\n\n        const key = JSON.stringify(params)\n\n        if (cache.symbol[key]) {\n          if (debug) console.log('symbol.get read from cache')\n\n          return cache.symbol[key]\n        }\n\n        const result = await query(API_SYMBOL_QUERY, {\n          ...params,\n          memberTypes: API_MEMBER_TYPES,\n        })\n\n        cache.symbol[key] = result\n\n        return result\n      },\n      search: (params: {\n        query: string\n        packageName: string\n        packageScope: string | null\n      }): Promise<TSDocSymbolSearchResult[]> => {\n        if (debug) console.log('symbol.search', params)\n\n        return query(API_SYMBOL_SEARCH_QUERY, {\n          ...params,\n          memberTypes: API_MEMBER_TYPES,\n          query: `*${params.query}*`,\n        })\n      },\n    },\n  }\n}\n","/* eslint-disable no-console */\n\nimport {APIDocument} from '@sanity/tsdoc'\nimport {evaluate, parse} from 'groq-js'\n\nimport {createTSDocStore} from './TSDocStore'\nimport {TSDocStore} from './types'\n\nconst delay = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms))\n\nconst DEBUG = false\n\n/** @beta */\nexport function createTSDocMemoryStore({docs}: {docs: APIDocument[]}): TSDocStore {\n  const query = async (q: string, params: Record<string, unknown>) => {\n    await delay(0)\n\n    const tree = parse(q)\n\n    const queryId = String(Math.random())\n\n    if (DEBUG) console.time(`query:${queryId}`)\n\n    const value = await evaluate(tree, {\n      dataset: docs,\n      params,\n    })\n\n    if (DEBUG) console.timeEnd(`query:${queryId}`)\n\n    return await value.get()\n  }\n\n  return createTSDocStore({debug: DEBUG, query})\n}\n"],"names":[],"mappings":"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"}