| import { c as collectionReader, s as singletonReader, a as cache } from './generic-4cf09612.js'; |
| import { a_ as fixPath, h as getTreeNodeAtPath, bb as treeEntriesToTreeNodes } from './index-48f075ab.js'; |
| import 'react'; |
| import '@keystar/ui/picker'; |
| import './index-f4dc5ec4.js'; |
| import '@markdoc/markdoc/dist/index.mjs'; |
| import './react-compiler-runtime-0011f46e.js'; |
| import '@keystar/ui/field'; |
| import '@keystar/ui/layout'; |
| import '@keystar/ui/typography'; |
| import '@keystar/ui/style'; |
| import 'prosemirror-commands'; |
| import 'prosemirror-state'; |
| import 'prosemirror-transform'; |
| import '@keystar/ui/button'; |
| import '@keystar/ui/editor'; |
| import '@keystar/ui/icon'; |
| import '@keystar/ui/icon/icons/boldIcon'; |
| import '@keystar/ui/icon/icons/chevronDownIcon'; |
| import '@keystar/ui/icon/icons/codeIcon'; |
| import '@keystar/ui/icon/icons/italicIcon'; |
| import '@keystar/ui/icon/icons/listIcon'; |
| import '@keystar/ui/icon/icons/listOrderedIcon'; |
| import '@keystar/ui/icon/icons/minusIcon'; |
| import '@keystar/ui/icon/icons/plusIcon'; |
| import '@keystar/ui/icon/icons/quoteIcon'; |
| import '@keystar/ui/icon/icons/removeFormattingIcon'; |
| import '@keystar/ui/icon/icons/strikethroughIcon'; |
| import '@keystar/ui/icon/icons/tableIcon'; |
| import '@keystar/ui/menu'; |
| import '@keystar/ui/tooltip'; |
| import '@keystar/ui/icon/icons/fileCodeIcon'; |
| import '@keystar/ui/icon/icons/heading1Icon'; |
| import '@keystar/ui/icon/icons/heading2Icon'; |
| import '@keystar/ui/icon/icons/heading3Icon'; |
| import '@keystar/ui/icon/icons/heading4Icon'; |
| import '@keystar/ui/icon/icons/heading5Icon'; |
| import '@keystar/ui/icon/icons/heading6Icon'; |
| import '@keystar/ui/icon/icons/imageIcon'; |
| import '@keystar/ui/icon/icons/separatorHorizontalIcon'; |
| import 'prosemirror-model'; |
| import '@emotion/css'; |
| import '@keystar/ui/dialog'; |
| import 'emery'; |
| import 'react/jsx-runtime'; |
| import '@keystar/ui/drag-and-drop'; |
| import '@keystar/ui/icon/icons/trash2Icon'; |
| import '@keystar/ui/list-view'; |
| import '@keystar/ui/slots'; |
| import '@react-aria/i18n'; |
| import '@react-aria/label'; |
| import 'slate'; |
| import 'slate-react'; |
| import 'is-hotkey'; |
| import '@keystar/ui/split-view'; |
| import '@keystar/ui/icon/icons/panelLeftOpenIcon'; |
| import '@keystar/ui/icon/icons/panelLeftCloseIcon'; |
| import '@keystar/ui/icon/icons/panelRightOpenIcon'; |
| import '@keystar/ui/icon/icons/panelRightCloseIcon'; |
| import '@react-aria/overlays'; |
| import '@react-aria/utils'; |
| import '@react-stately/overlays'; |
| import '@keystar/ui/badge'; |
| import '@keystar/ui/nav-list'; |
| import '@keystar/ui/overlays'; |
| import '@keystar/ui/status-light'; |
| import '@keystar/ui/utils'; |
| import '@keystar/ui/core'; |
| import '@react-stately/collections'; |
| import '@ts-gql/tag/no-transform'; |
| import 'urql'; |
| import '@keystar/ui/avatar'; |
| import '@keystar/ui/icon/icons/logOutIcon'; |
| import '@keystar/ui/icon/icons/gitPullRequestIcon'; |
| import '@keystar/ui/icon/icons/gitBranchPlusIcon'; |
| import '@keystar/ui/icon/icons/githubIcon'; |
| import '@keystar/ui/icon/icons/gitForkIcon'; |
| import '@keystar/ui/icon/icons/monitorIcon'; |
| import '@keystar/ui/icon/icons/moonIcon'; |
| import '@keystar/ui/icon/icons/sunIcon'; |
| import '@keystar/ui/icon/icons/userIcon'; |
| import '@keystar/ui/combobox'; |
| import '@keystar/ui/icon/icons/gitBranchIcon'; |
| import '@keystar/ui/progress'; |
| import '@keystar/ui/radio'; |
| import '@keystar/ui/text-field'; |
| import '@keystar/ui/icon/icons/editIcon'; |
| import '@keystar/ui/icon/icons/externalLinkIcon'; |
| import '@keystar/ui/icon/icons/linkIcon'; |
| import '@keystar/ui/icon/icons/unlinkIcon'; |
| import '@braintree/sanitize-url'; |
| import '@keystar/ui/action-group'; |
| import '@keystar/ui/icon/icons/maximizeIcon'; |
| import '@keystar/ui/icon/icons/minimizeIcon'; |
| import '@keystar/ui/icon/icons/subscriptIcon'; |
| import '@keystar/ui/icon/icons/superscriptIcon'; |
| import '@keystar/ui/icon/icons/typeIcon'; |
| import '@keystar/ui/icon/icons/underlineIcon'; |
| import '@keystar/ui/icon/icons/alignLeftIcon'; |
| import '@keystar/ui/icon/icons/alignRightIcon'; |
| import '@keystar/ui/icon/icons/alignCenterIcon'; |
| import 'match-sorter'; |
| import 'emery/assertions'; |
| import '@keystar/ui/icon/icons/trashIcon'; |
| import '@emotion/weak-memoize'; |
| import '@keystar/ui/icon/icons/columnsIcon'; |
| import '@keystar/ui/icon/icons/fileUpIcon'; |
| import '@keystar/ui/checkbox'; |
| import '@keystar/ui/number-field'; |
| import '@keystar/ui/link'; |
| import '@keystar/ui/action-bar'; |
| import 'minimatch'; |
| import '@keystar/ui/icon/icons/refreshCwIcon'; |
| import '@sindresorhus/slugify'; |
| import 'y-prosemirror'; |
| import '@keystar/ui/icon/icons/sheetIcon'; |
| import 'scroll-into-view-if-needed'; |
| import '@react-stately/list'; |
| import '@keystar/ui/listbox'; |
| import 'slate-history'; |
| import 'mdast-util-from-markdown'; |
| import 'mdast-util-gfm-autolink-literal'; |
| import 'micromark-extension-gfm-autolink-literal'; |
| import 'mdast-util-gfm-strikethrough'; |
| import 'micromark-extension-gfm-strikethrough'; |
| import './base64-3538d789.js'; |
| import 'prosemirror-view'; |
| import '@react-aria/selection'; |
| import 'prosemirror-tables'; |
| import '@keystar/ui/icon/icons/pencilIcon'; |
| import 'react-dom'; |
| import 'prosemirror-history'; |
| import 'prosemirror-keymap'; |
| import 'escape-string-regexp'; |
| import 'mdast-util-to-markdown'; |
| import 'mdast-util-gfm-table'; |
| import 'mdast-util-mdx'; |
| import 'micromark-extension-gfm-table'; |
| import 'micromark-extension-mdxjs'; |
| import 'unist-util-visit'; |
| import './required-files-bd819871.js'; |
| import 'js-yaml'; |
| import 'superstruct'; |
| import '@keystar/ui/icon/icons/link2Icon'; |
| import '@keystar/ui/icon/icons/link2OffIcon'; |
| import '@keystar/ui/icon/icons/undo2Icon'; |
| import '@keystar/ui/toast'; |
| import 'y-protocols/awareness'; |
| import 'yjs'; |
| import '@toeverything/y-indexeddb'; |
| import 'lib0/broadcastchannel'; |
| import 'lib0/time'; |
| import 'lib0/encoding'; |
| import 'lib0/decoding'; |
| import 'y-protocols/sync'; |
| import 'y-protocols/auth'; |
| import 'lib0/mutex'; |
| import 'lib0/math'; |
| import 'cookie'; |
| import 'idb-keyval'; |
| import 'lru-cache'; |
| import 'partysocket/ws'; |
| import 'lib0/encoding.js'; |
|
|
| function createGitHubReader(config, opts) { |
| var _opts$ref; |
| const ref = (_opts$ref = opts.ref) !== null && _opts$ref !== void 0 ? _opts$ref : 'HEAD'; |
| const pathPrefix = opts.pathPrefix ? fixPath(opts.pathPrefix) + '/' : ''; |
| const getTree = cache(async function loadTree() { |
| const res = await fetch(`https://api.github.com/repos/${opts.repo}/git/trees/${ref}?recursive=1`, { |
| headers: opts.token ? { |
| Authorization: `Bearer ${opts.token}` |
| } : {}, |
| cache: 'no-store' |
| }); |
| if (!res.ok) { |
| throw new Error(`Failed to fetch tree: ${res.status} ${await res.text()}`); |
| } |
| const { |
| tree, |
| sha |
| } = await res.json(); |
| return { |
| tree: treeEntriesToTreeNodes(tree), |
| sha |
| }; |
| }); |
| const fs = { |
| async fileExists(path) { |
| const { |
| tree |
| } = await getTree(); |
| const node = getTreeNodeAtPath(tree, fixPath(`${pathPrefix}${path}`)); |
| return (node === null || node === void 0 ? void 0 : node.entry.type) === 'blob'; |
| }, |
| async readdir(path) { |
| const { |
| tree |
| } = await getTree(); |
| const node = getTreeNodeAtPath(tree, fixPath(`${pathPrefix}${path}`)); |
| if (!(node !== null && node !== void 0 && node.children)) return []; |
| const filtered = []; |
| for (const [name, val] of node.children) { |
| if (val.entry.type === 'tree') { |
| filtered.push({ |
| name, |
| kind: 'directory' |
| }); |
| } |
| if (val.entry.type === 'blob') { |
| filtered.push({ |
| name, |
| kind: 'file' |
| }); |
| } |
| } |
| return filtered; |
| }, |
| async readFile(path) { |
| const { |
| sha |
| } = await getTree(); |
| const res = await fetch(`https://raw.githubusercontent.com/${opts.repo}/${sha}/${pathPrefix}${path}`, { |
| headers: opts.token ? { |
| Authorization: `Bearer ${opts.token}` |
| } : {} |
| }); |
| if (res.status === 404) return null; |
| if (!res.ok) { |
| throw new Error(`Failed to fetch ${path}: ${await res.text()}`); |
| } |
| return new Uint8Array(await res.arrayBuffer()); |
| } |
| }; |
| return { |
| collections: Object.fromEntries(Object.keys(config.collections || {}).map(key => [key, collectionReader(key, config, fs)])), |
| singletons: Object.fromEntries(Object.keys(config.singletons || {}).map(key => [key, singletonReader(key, config, fs)])), |
| config |
| }; |
| } |
|
|
| export { createGitHubReader }; |