{"version":3,"file":"index.cjs","sources":["../src/block.ts","../src/window.ts","../src/url.ts","../src/data.ts","../src/headers.ts","../src/interfaces.ts","../src/logger.ts","../src/response.ts","../src/http.ts","../src/cli/httpComponent.ts","../src/cli/auth.ts","../src/cli/blocks.ts","../src/cli/cache.ts","../src/cli/extensions.ts","../src/cli/orgs.ts","../src/cli/photos.ts","../src/cli/plugins.ts","../src/cli/spaces.ts","../src/cli/user.ts","../src/cli/cli.ts","../src/options.ts","../src/urls.ts"],"sourcesContent":["export {};\n\n/* eslint-disable @typescript-eslint/no-unused-vars */\ndeclare global {\n  interface Window {\n    __metablock__: WebBlock;\n  }\n}\n\nexport interface WebBlock {\n  id: string;\n  name: string; // name of the metablock site\n  title: string; // default title\n  description: string; // default description\n  apiUrl: string; // metablock api url\n  deployUrl: string; // base url of the javascript bundle\n  assetsUrl: string; // base url of static assets\n  liveUrl: string; // base url of the production javascript bundle\n  deployed: string;\n  date_format: string;\n  plugins: Record<string, any>;\n}\n\nconst getBlock = (): WebBlock => {\n  if (window.__metablock__) return window.__metablock__;\n  const encoded = document.querySelector(\"meta[name='mb:state']\") as any;\n  let decoded = {};\n\n  if (encoded) decoded = JSON.parse(atob(encoded.getAttribute(\"content\")));\n\n  const block = {\n    name: \"metablock\",\n    title: \"metablock\",\n    description: \"metablock\",\n    apiUrl: \"\",\n    date_format: \"%B %d, %Y\",\n    ...decoded,\n  } as WebBlock;\n\n  window.__metablock__ = block;\n\n  return block;\n};\n\nexport default getBlock;\n","const getWindow = () => {\n  try {\n    return window;\n  } catch {\n    return undefined;\n  }\n};\n\nexport default getWindow;\n","import getWindow from \"./window\";\nexport type QueryType = Record<string, any>;\n\nconst urlQuery = (url: string, query: QueryType): string => {\n  if (query) {\n    const w = getWindow();\n    const u = w ? new URL(url, w.location.origin) : new URL(url);\n    Object.keys(query).forEach((key) => {\n      let values = query[key];\n      if (!Array.isArray(values)) values = [values];\n      values.forEach((value: string) => {\n        u.searchParams.append(key, value);\n      });\n    });\n    url = u.toString();\n  }\n  return url;\n};\n\nexport default urlQuery;\n","import { DataApi, HttpClientInterface, Paginated } from \"./interfaces\";\nimport urlQuery from \"./url\";\n\nexport class StaticData<T> implements DataApi<T> {\n  data: T[];\n  query: Record<string, any>;\n\n  constructor(data: T[], query?: Record<string, any>) {\n    this.data = data;\n    this.query = query || {};\n  }\n\n  hasMoreData() {\n    return false;\n  }\n\n  isDataLoading() {\n    return false;\n  }\n\n  get searchText(): string {\n    return this.query.search || \"\";\n  }\n\n  async loadData() {}\n\n  reset(query: Record<string, any>) {\n    this.query = query;\n  }\n\n  setSearch(searchText: string) {\n    this.reset({ ...this.query, search: searchText });\n  }\n\n  async filter(key: string, value: any): Promise<void> {\n    if (value) this.query[key] = value;\n    else delete this.query[key];\n  }\n\n  async search(searchText: string) {\n    this.setSearch(searchText);\n  }\n}\n\nexport class DataLoader<DataType> implements DataApi<DataType> {\n  cli: HttpClientInterface;\n  data: DataType[];\n  query: Record<string, any>;\n  url: string;\n  links: Record<string, string> | void;\n  options: Record<string, any>;\n  loading = false;\n\n  constructor(\n    cli: HttpClientInterface,\n    url: string,\n    query?: Record<string, any>,\n    options?: Record<string, any>\n  ) {\n    this.cli = cli;\n    this.url = url;\n    this.query = query || {};\n    this.options = options || {};\n    this.data = [];\n    this.links = undefined;\n  }\n\n  reset(query: Record<string, any>) {\n    this.links = undefined;\n    this.query = query;\n  }\n\n  setSearch(searchText: string) {\n    this.reset({ ...this.query, search: searchText });\n  }\n\n  hasMoreData(): boolean {\n    return !this.links || this.links.next ? true : false;\n  }\n\n  isDataLoading(): boolean {\n    return this.loading;\n  }\n\n  get searchText(): string {\n    return this.query.search || \"\";\n  }\n\n  async loadData(): Promise<void> {\n    const data = await this.load();\n    this.data = this.data.concat(data);\n  }\n\n  async filter(key: string, value: any): Promise<void> {\n    const query = { ...this.query };\n    if (value) query[key] = value;\n    else delete query[key];\n    this.reset(query);\n    this.data = await this.load();\n  }\n\n  async search(searchText: string): Promise<void> {\n    this.setSearch(searchText);\n    this.data = await this.load();\n  }\n\n  async load(): Promise<DataType[]> {\n    let paginated: Paginated<DataType>;\n    this.loading = true;\n    try {\n      const url = this.links ? this.links.next : urlQuery(this.url, this.query);\n      paginated = await this.cli.getList(url, this.options);\n    } finally {\n      this.loading = false;\n    }\n    this.links = paginated.links;\n    return paginated.data;\n  }\n}\n","export const parseLinkHeader = (linkHeader: string): Record<string, string> => {\n  if (!linkHeader) return {};\n  return linkHeader\n    .split(/,\\s*</)\n    .map(parseLink)\n    .filter((x: any) => x && x.rel)\n    .reduce((acc: Record<string, string>, x: any) => {\n      x.rel.split(/\\s+/).forEach((rel: string) => {\n        acc[rel] = x.url;\n      });\n      return acc;\n    }, {});\n};\n\nconst parseLink = (link: string): Record<string, string> | void => {\n  const m = link.match(/<?([^>]*)>(.*)/);\n  if (m) {\n    const parts = m[2].split(\";\");\n    const url = new URL(m[1]);\n    parts.shift();\n    return parts.reduce(\n      (acc: any, p: string) => {\n        const m = p.match(/\\s*(.+)\\s*=\\s*\"?([^\"]+)\"?/);\n        if (m) acc[m[1]] = m[2];\n        return acc;\n      },\n      { url: url.toString() }\n    );\n  }\n};\n","import { parseLinkHeader } from \"./headers\";\nimport HttpResponse from \"./response\";\n\nexport interface DataApi<T> {\n  // Are there more items to load?\n  // (This information comes from the most recent API request.)\n  hasMoreData: () => boolean;\n\n  // Are we currently loading a page of items?\n  // (This may be an in-flight flag in your Redux store for example.)\n  isDataLoading: () => boolean;\n\n  // Array of items loaded so far.\n  data: T[];\n\n  searchText?: string;\n\n  // Callback function responsible for loading the next page of items.\n  loadData: () => Promise<void>;\n\n  // Callback function responsible for full text search\n  search: (searchText: string) => Promise<void>;\n\n  // Callback function responsible for filtering a column\n  filter: (key: string, value: any) => Promise<void>;\n\n  // Callback function responsible for filtering a column\n  reset: (query: Record<string, any>) => void;\n\n  // Callback function responsible for full text search\n  setSearch: (searchText: string) => void;\n\n  // query\n  query: Record<string, string>;\n}\n\nexport class Paginated<T> {\n  data: T[];\n  count: number;\n  offset: number;\n  limit: number;\n  links: Record<string, string>;\n\n  constructor(data: T[], count = 0, links = {}, offset = 0, limit = 25) {\n    this.data = data;\n    this.count = count;\n    this.offset = offset;\n    this.limit = limit;\n    this.links = links;\n  }\n}\n\nexport interface HttpClientInterface {\n  delete: (url: string, options?: any) => Promise<HttpResponse>;\n  get: (url: string, options?: any) => Promise<HttpResponse>;\n  head: (url: string, options?: any) => Promise<HttpResponse>;\n  patch: (url: string, options?: any) => Promise<HttpResponse>;\n  post: (url: string, options?: any) => Promise<HttpResponse>;\n  put: (url: string, options?: any) => Promise<HttpResponse>;\n  getList: <T>(url: string, options?: any) => Promise<Paginated<T>>;\n  loader: <T>(url: string, query?: Record<string, any>) => DataApi<T>;\n}\n\nexport function paginatedResponse<T>(response: HttpResponse): Paginated<T> {\n  const data = response.data as T[];\n  const count = response.headers.get(\"x-total-count\");\n  const links = parseLinkHeader(response.headers.get(\"link\"));\n  return new Paginated<T>(data, count ? +count : data.length, links);\n}\n\nexport interface Org {\n  id: string;\n  short_name: string;\n  email: string;\n  full_name?: string;\n  country?: string;\n  website?: string;\n}\n\nexport interface OrgMember {\n  user_id: string;\n  roles: string[];\n  org_name: string;\n  org_id: string;\n  email: string;\n  first_name: string;\n  last_name: string;\n}\n\nexport interface Permission {\n  allow: boolean;\n}\n\nexport interface OrgRole {\n  id: string;\n  name: string;\n  org_id: string;\n  description: string;\n  permissions: Permission[];\n}\n\nexport interface Block {\n  id: string;\n  name: string; // name of the metablock site\n  full_name: string; // full name of the metablock site\n  title: string; // default title\n  description: string; // default description\n  url: string; // metablock site url\n  apiUrl: string; // metablock api url\n  assetsUrl: string; // base url of the javascript bundle\n  date_format: string;\n  login_url: string;\n  signin_url: string;\n  signup_url: string;\n  forgot_password_url: string;\n  space: Space;\n  plugins?: Paginated<BlockPlugin>;\n  user_id?: string;\n}\n\nexport interface Space {\n  id: string;\n  name: string;\n  domain: string;\n  hosted: boolean;\n  org_id: string;\n  org_name: string;\n  blocks?: Paginated<Block>;\n  extensions: Paginated<SpaceExtension>;\n  cdn?: string;\n}\n\nexport interface Extension {\n  id: string;\n  name: string;\n  description: string;\n  marketplace: boolean;\n  script?: string;\n  schema: Record<string, any>;\n  org_id: string;\n  org_name: string;\n  docs: string;\n}\n\nexport interface SpaceExtension {\n  id: string;\n  space_id: string;\n  name: string;\n  description: string;\n  script?: string;\n  config: Record<string, any>;\n}\n\nexport interface Plugin {\n  id: string;\n  name: string;\n  description: string;\n  schema: Record<string, any>;\n  org_id: string;\n  org_name: string;\n  extension_id: string;\n  extension_name: string;\n  marketplace: boolean;\n}\n\nexport interface BlockPlugin {\n  id: string;\n  name: string;\n  description?: string;\n  author?: string;\n  config: Record<string, any>;\n}\n\nexport interface ApiToken {\n  id: string;\n  created: string;\n}\n\nexport interface Deployment {\n  id: string;\n  name: string;\n  service_id: string;\n  env: string;\n  created: string;\n}\n\nexport interface Asset {\n  name: string;\n  last_modified: string;\n  size: number;\n}\n","export interface LoggerOptions {\n  name?: string;\n  level?: string;\n}\n\nexport const logLevels: Record<string, number> = {\n  debug: 10,\n  info: 20,\n  warn: 30,\n  error: 40,\n  fatal: 50,\n};\n\nconst defaultLogger = (options?: LoggerOptions) => {\n  options = options || {};\n  const loggerName = options.name || \"\";\n  const loggerLevel = options.level || \"info\";\n  const levelNumber = logLevels[loggerLevel] || logLevels.info;\n  return {\n    levelNumber,\n    debug(...msg: any) {\n      if (levelNumber <= logLevels.debug) console.debug(loggerName, ...msg);\n    },\n    info(...msg: any) {\n      if (levelNumber <= logLevels.info) console.info(loggerName, ...msg);\n    },\n    warn(...msg: any) {\n      if (levelNumber <= logLevels.warn) console.warn(loggerName, ...msg);\n    },\n    error(...msg: any) {\n      if (levelNumber <= logLevels.error) console.error(loggerName, ...msg);\n    },\n    fatal(...msg: any) {\n      if (levelNumber <= logLevels.fatal) console.error(loggerName, ...msg);\n    },\n    isLevelEnabled(level: string): boolean {\n      const num = logLevels[level];\n      return num ? num >= levelNumber : false;\n    },\n    child(config?: any) {\n      const { name = \"child\" } = config || {};\n      const newName = loggerName ? `${loggerName}.${name}` : name;\n      return logging.loggerFactory({ name: newName });\n    },\n  };\n};\n\nconst logging = {\n  loggerFactory: defaultLogger,\n};\n\nexport const setLoggerFactory = (loggerFactory: any) => {\n  logging.loggerFactory = loggerFactory;\n};\n\nexport const getLogger = (options?: any) => {\n  return logging.loggerFactory(options);\n};\n\nexport type Logger = ReturnType<typeof getLogger>;\n","class HttpResponse {\n  data: any;\n  response: any;\n  errors: any;\n  message: any;\n\n  constructor(data: any, response: any) {\n    this.response = response || new BadGateway();\n    this.data = data || {};\n    try {\n      this.errors = data.errors || [];\n      this.message = data.message || \"\";\n    } catch (e) {\n      this.errors = [];\n      this.message = [];\n    }\n  }\n\n  get status() {\n    return this.response.status;\n  }\n\n  get headers() {\n    return this.response.headers;\n  }\n\n  get links() {\n    const links = this.response.headers.get(\"Link\");\n    return links ? JSON.parse(links) : null;\n  }\n}\n\nclass BadGateway {\n  get status() {\n    return 502;\n  }\n  get headers() {\n    return new Map();\n  }\n}\n\nexport default HttpResponse;\n","import { DataLoader } from \"./data\";\nimport {\n  DataApi,\n  HttpClientInterface,\n  Paginated,\n  paginatedResponse,\n} from \"./interfaces\";\nimport { getLogger } from \"./logger\";\nimport HttpResponse from \"./response\";\n\nexport interface Options {\n  method: string;\n  headers: Record<string, string>;\n  body?: any;\n}\n\nclass HttpClient implements HttpClientInterface {\n  name: string;\n  logger: any;\n  defaultHeaders: Record<string, string>;\n\n  constructor(name?: string) {\n    this.name = name || \"http\";\n    this.logger = getLogger(name || \"http\");\n    this.defaultHeaders = {};\n  }\n\n  async delete(url: string, options?: any): Promise<HttpResponse> {\n    return await this.request(url, { ...options, method: \"DELETE\" });\n  }\n\n  async get(url: string, options?: any): Promise<HttpResponse> {\n    return await this.request(url, { ...options, method: \"GET\" });\n  }\n\n  async head(url: string, options?: any): Promise<HttpResponse> {\n    return await this.request(url, { ...options, method: \"HEAD\" });\n  }\n\n  async patch(url: string, options?: any): Promise<HttpResponse> {\n    return await this.request(url, { ...options, method: \"PATCH\" });\n  }\n\n  async post(url: string, options?: any): Promise<HttpResponse> {\n    return await this.request(url, { ...options, method: \"POST\" });\n  }\n\n  async put(url: string, options?: any): Promise<HttpResponse> {\n    return await this.request(url, { ...options, method: \"PUT\" });\n  }\n\n  async getList<DataType>(\n    url: string,\n    options?: any\n  ): Promise<Paginated<DataType>> {\n    const response = await this.get(url, options);\n    return paginatedResponse<DataType>(response);\n  }\n\n  async request(url: string, options: Options): Promise<HttpResponse> {\n    const opts = this.getOptions(options);\n    let response;\n    try {\n      response = await fetch(url, opts);\n    } catch (err: any) {\n      response = err;\n      this.logger.error(`Error fetching resource ${url}: ${err}`);\n      if (!response.status) response = null;\n    }\n    const data = await this.jsonBody(response);\n\n    const respData = new HttpResponse(data, response);\n\n    if (respData.status >= 400) throw respData;\n\n    return respData;\n  }\n\n  getDefaultHeaders(): Record<string, string> {\n    return this.defaultHeaders;\n  }\n\n  getOptions(options: any): Options {\n    const { body, method, headers, ...extra } = options;\n    const opts: Options = {\n      method: method || \"GET\",\n      headers: { ...this.getDefaultHeaders(), ...headers },\n      ...extra,\n    };\n    if (body) {\n      if (body.constructor === Object) {\n        opts.body = JSON.stringify(body);\n        opts.headers[\"content-type\"] = \"application/json\";\n      } else opts.body = body;\n    }\n    return opts;\n  }\n\n  loader<DataType>(\n    url: string,\n    query?: Record<string, any>,\n    options?: Record<string, any>\n  ): DataApi<DataType> {\n    return new DataLoader<DataType>(this, url, query, options);\n  }\n\n  async jsonBody(response: any) {\n    if (!response || response.status === 204) return {};\n    try {\n      return await response.json();\n    } catch (err) {\n      this.logger.error(\"The server did not send a JSON response\", err);\n      return {};\n    }\n  }\n}\n\nexport default HttpClient;\n","import urlQuery from \"../url\";\nimport Metablock from \"./cli\";\n\nclass HttpComponent {\n  cli: Metablock;\n\n  constructor(cli: Metablock) {\n    this.cli = cli;\n  }\n\n  urlQuery(url: string, query: any): string {\n    return urlQuery(url, query);\n  }\n}\n\nexport default HttpComponent;\n","import HttpComponent from \"./httpComponent\";\n\nclass MbAuth extends HttpComponent {\n  async login(body: any): Promise<string> {\n    const response = await this.cli.post(\"/.api/login\", { body });\n    return response.data.jwt;\n  }\n}\n\nexport default MbAuth;\n","import {\n  Asset,\n  Block,\n  BlockPlugin,\n  DataApi,\n  Deployment,\n  Paginated,\n  paginatedResponse,\n} from \"../interfaces\";\nimport HttpResponse from \"../response\";\nimport HttpComponent from \"./httpComponent\";\n\nclass Blocks extends HttpComponent {\n  async getList(query: any): Promise<HttpResponse> {\n    const url = this.urlQuery(`${this.cli.apiUrl}/services`, query);\n    return await this.cli.get(url);\n  }\n\n  async get(block_id: string): Promise<Block> {\n    const url = `${this.cli.apiUrl}/services/${block_id}`;\n    const response = await this.cli.get(url);\n    return response.data as Block;\n  }\n\n  async create(record: Record<string, any>): Promise<Block> {\n    const { space_id, ...body } = record;\n    const url = `${this.cli.apiUrl}/spaces/${space_id}/services`;\n    const response = await this.cli.post(url, {\n      body,\n    });\n    return response.data as Block;\n  }\n\n  async update(block_id: string, body: Record<string, any>): Promise<Block> {\n    const url = `${this.cli.apiUrl}/services/${block_id}`;\n    const response = await this.cli.patch(url, {\n      body,\n    });\n    return response.data as Block;\n  }\n\n  async delete(block_id: string): Promise<void> {\n    const url = `${this.cli.apiUrl}/services/${block_id}`;\n    await this.cli.delete(url);\n  }\n\n  async config(block_id: string): Promise<any> {\n    const url = `${this.cli.apiUrl}/services/${block_id}/config`;\n    const response = await this.cli.get(url);\n    return response.data as any;\n  }\n\n  async certificate(block_id: string): Promise<any> {\n    const url = `${this.cli.apiUrl}/services/${block_id}/certificate`;\n    const response = await this.cli.get(url);\n    return response.data as any;\n  }\n\n  pluginsLoader(block_id: string): DataApi<BlockPlugin> {\n    return this.cli.loader(`${this.cli.apiUrl}/services/${block_id}/plugins`);\n  }\n\n  async getPlugins(\n    block_id: string,\n    query?: any\n  ): Promise<Paginated<BlockPlugin>> {\n    const url = this.urlQuery(\n      `${this.cli.apiUrl}/services/${block_id}/plugins`,\n      query\n    );\n    const response = await this.cli.get(url);\n    return paginatedResponse<BlockPlugin>(response);\n  }\n\n  async updatePlugin(block_id: string, body: any): Promise<BlockPlugin> {\n    const url = `${this.cli.apiUrl}/services/${block_id}/plugins`;\n    const response = await this.cli.post(url, {\n      body,\n    });\n    return response.data as BlockPlugin;\n  }\n\n  async deletePlugin(block_id: string, plugin_name: string): Promise<void> {\n    const url = `${this.cli.apiUrl}/services/${block_id}/plugins/${plugin_name}`;\n    await this.cli.delete(url);\n  }\n\n  deploymentsLoader(block_id: string): DataApi<Deployment> {\n    return this.cli.loader(\n      `${this.cli.apiUrl}/services/${block_id}/deployments`\n    );\n  }\n\n  async assets(block_id: string): Promise<Asset[]> {\n    const response = await this.cli.get(\n      `${this.cli.apiUrl}/services/${block_id}/assets`\n    );\n    return response.data as Asset[];\n  }\n\n  async uploadAssets(block_id: string, assetFiles: any[]): Promise<void> {\n    for (let i = 0; i < assetFiles.length; ++i) {\n      const asset = assetFiles[i];\n      const response = await this.cli.get(\n        this.urlQuery(\n          `${this.cli.apiUrl}/services/${block_id}/assets-upload-url`,\n          { path: asset.path, type: asset.type }\n        )\n      );\n      const d = response.data;\n      const body = new FormData();\n      Object.keys(d.fields).forEach((key: string) => {\n        body.append(key, d.fields[key]);\n      });\n      body.append(\"file\", asset);\n      await fetch(d.url, { body, method: \"POST\" });\n    }\n  }\n\n  async ship(\n    block_id: string,\n    body: FormData\n  ): Promise<Record<string, string>> {\n    const url = `${this.cli.apiUrl}/services/${block_id}/deployments`;\n    const response = await this.cli.post(url, {\n      body,\n    });\n    return response.data;\n  }\n}\n\nexport default Blocks;\n","import HttpComponent from \"./httpComponent\";\n\nclass Cache extends HttpComponent {\n  async get(key: string): Promise<any> {\n    try {\n      const response = await this.cli.get(`/.api/cache/${key}`);\n      return response.data;\n    } catch (exc) {\n      return;\n    }\n  }\n\n  async set(key: string, value: any, timeout?: number): Promise<any> {\n    const body: Record<string, any> = { value };\n    if (timeout) body.timeout = timeout;\n    const response = await this.cli.put(`/.api/cache/${key}`, { body });\n    return response.data;\n  }\n\n  async getSet(key: string, loader: any, timeout?: number): Promise<any> {\n    try {\n      const response = await this.cli.get(`/.api/cache/${key}`);\n      return response.data;\n    } catch (exc) {\n      // set the new value\n    }\n    const value: any = await loader();\n    const body: Record<string, any> = { value };\n    if (timeout) body.timeout = timeout;\n    const response2 = await this.cli.put(`/.api/cache/${key}`, { body });\n    return response2.data;\n  }\n}\n\nexport default Cache;\n","import { DataApi, Extension, Plugin } from \"../interfaces\";\nimport HttpComponent from \"./httpComponent\";\n\nclass Extensions extends HttpComponent {\n  loader(): DataApi<Extension> {\n    return this.cli.loader(`${this.cli.apiUrl}/extensions`);\n  }\n\n  deliveryLoader(name_or_id: string): DataApi<any> {\n    return this.cli.loader(\n      `${this.cli.apiUrl}/extensions/${name_or_id}/deliveries`\n    );\n  }\n\n  async testDelivery(name_or_id: string, body: any): Promise<any> {\n    const url = `${this.cli.apiUrl}/extensions/${name_or_id}/deliveries/test`;\n    const response = await this.cli.post(url, { body });\n    return response.data;\n  }\n\n  async get(name_or_id: string): Promise<Extension> {\n    const url = `${this.cli.apiUrl}/extensions/${name_or_id}`;\n    const response = await this.cli.get(url);\n    return response.data as Extension;\n  }\n\n  async update(name_or_id: string, body: any): Promise<Extension> {\n    const url = `${this.cli.apiUrl}/extensions/${name_or_id}`;\n    const response = await this.cli.patch(url, { body });\n    return response.data as Extension;\n  }\n\n  async createPlugin(extension: Extension, body: any): Promise<Plugin> {\n    const url = `${this.cli.apiUrl}/orgs/${extension.org_id}/plugins`;\n    body.extension_id = extension.id;\n    const response = await this.cli.post(url, { body });\n    return response.data as Plugin;\n  }\n\n  async getDelivery(name_or_id: string, deliveryId: string): Promise<any> {\n    const url = this.urlQuery(\n      `${this.cli.apiUrl}/extensions/${name_or_id}/deliveries`,\n      { id: deliveryId }\n    );\n    const result = await this.cli.get(url);\n    return result.data.length ? result.data[0] : null;\n  }\n}\n\nexport default Extensions;\n","import {\n  DataApi,\n  Extension,\n  Org,\n  OrgMember,\n  OrgRole,\n  Paginated,\n  paginatedResponse,\n} from \"../interfaces\";\nimport HttpComponent from \"./httpComponent\";\n\nclass Orgs extends HttpComponent {\n  get url(): string {\n    return `${this.cli.apiUrl}/orgs`;\n  }\n\n  async get(org_id: string): Promise<Org> {\n    const response = await this.cli.get(`${this.url}/${org_id}`);\n    return response.data as Org;\n  }\n\n  async update(org_id: string, body: Record<string, any>): Promise<Org> {\n    const response = await this.cli.patch(`${this.url}/${org_id}`, {\n      body,\n    });\n    return response.data as Org;\n  }\n\n  async create(body: Record<string, any>): Promise<Org> {\n    const response = await this.cli.post(this.url, {\n      body,\n    });\n    return response.data as Org;\n  }\n\n  extensionLoader(org_id: string): DataApi<Extension> {\n    return this.cli.loader(`${this.url}/${org_id}/extensions`);\n  }\n\n  membersLoader(org_id: string): DataApi<OrgMember> {\n    return this.cli.loader(`${this.url}/${org_id}/members`);\n  }\n\n  rolesLoader(org_id: string): DataApi<OrgRole> {\n    return this.cli.loader(`${this.url}/${org_id}/roles`);\n  }\n\n  async getMembers(org_id: string, query?: any): Promise<Paginated<OrgMember>> {\n    const url = this.urlQuery(`${this.url}/${org_id}/members`, query);\n    const response = await this.cli.get(url);\n    return paginatedResponse<OrgMember>(response);\n  }\n\n  async getRoles(orgId: string, query?: any): Promise<Paginated<OrgRole>> {\n    const url = this.urlQuery(`${this.url}/${orgId}/roles`, query);\n    const response = await this.cli.get(url);\n    return paginatedResponse<OrgRole>(response);\n  }\n\n  async createRole(orgId: string, body: any): Promise<OrgRole> {\n    const response = await this.cli.post(`${this.url}/${orgId}/roles`, {\n      body,\n    });\n    return response.data as OrgRole;\n  }\n\n  async getRole(orgId: string, roleName: string): Promise<OrgRole> {\n    const response = await this.cli.get(`${this.url}/${orgId}/roles/${roleName}`);\n    return response.data as OrgRole;\n  }\n\n  async updateRole(\n    orgId: string,\n    roleName: any,\n    body: Record<string, any>\n  ): Promise<OrgRole> {\n    const response = await this.cli.patch(\n      `${this.url}/${orgId}/roles/${roleName}`,\n      {\n        body,\n      }\n    );\n    return response.data as OrgRole;\n  }\n\n  async deleteRole(orgId: string, roleName: any): Promise<void> {\n    await this.cli.delete(`${this.url}/${orgId}/roles/${roleName}`);\n  }\n\n  async createExtension(orgId: string, body: any): Promise<Extension> {\n    const response = await this.cli.post(`${this.url}/${orgId}/extensions`, {\n      body,\n    });\n    return response.data as Extension;\n  }\n}\n\nexport default Orgs;\n","import getWindow from \"../window\";\nimport HttpComponent from \"./httpComponent\";\n\nclass Photos extends HttpComponent {\n  async get(photoId: string): Promise<Record<string, any>> {\n    const response = await this.cli.get(`/.api/photo/${photoId}`, {});\n    return response.data;\n  }\n\n  fromStore(photoId: string): any | undefined {\n    const w = getWindow();\n    if (w) {\n      const jsonStr = w.localStorage.getItem(`photo-${photoId}`);\n      if (jsonStr) return JSON.parse(jsonStr);\n    }\n  }\n\n  async getPhoto(photoId: string): Promise<Record<string, any>> {\n    const data = this.fromStore(photoId);\n    if (data) {\n      return data;\n    } else {\n      const photo = await this.get(photoId);\n      const w = getWindow();\n      if (w) {\n        window.localStorage.setItem(`photo-${photoId}`, JSON.stringify(photo));\n      }\n      return photo;\n    }\n  }\n\n  async getPhotoUrl(photoId: string, url = \"raw\"): Promise<string> {\n    const photo = await this.getPhoto(photoId);\n    return photo.urls[url];\n  }\n}\n\nexport default Photos;\n","import { BlockPlugin, DataApi, Plugin } from \"../interfaces\";\nimport HttpComponent from \"./httpComponent\";\n\nclass Plugins extends HttpComponent {\n  loader(): DataApi<Plugin> {\n    return this.cli.loader(`${this.cli.apiUrl}/plugins`);\n  }\n\n  blocksLoader(name_or_id: string): DataApi<BlockPlugin> {\n    return this.cli.loader(`${this.cli.apiUrl}/plugins/${name_or_id}/services`);\n  }\n\n  async get(name_or_id: string): Promise<Plugin> {\n    const url = `${this.cli.apiUrl}/plugins/${name_or_id}`;\n    const response = await this.cli.get(url);\n    return response.data as Plugin;\n  }\n\n  async update(name_or_id: string, body: any): Promise<Plugin> {\n    const url = `${this.cli.apiUrl}/plugins/${name_or_id}`;\n    const response = await this.cli.patch(url, { body });\n    return response.data as Plugin;\n  }\n\n  async delete(name_or_id: string): Promise<void> {\n    const url = `${this.cli.apiUrl}/plugins/${name_or_id}`;\n    await this.cli.delete(url);\n  }\n}\n\nexport default Plugins;\n","import {\n  Block,\n  DataApi,\n  Paginated,\n  paginatedResponse,\n  Space,\n  SpaceExtension\n} from \"../interfaces\";\nimport HttpResponse from \"../response\";\nimport HttpComponent from \"./httpComponent\";\n\nclass Spaces extends HttpComponent {\n  async getList(query: any): Promise<HttpResponse> {\n    const url = this.urlQuery(`${this.cli.apiUrl}/spaces`, query);\n    return await this.cli.get(url);\n  }\n\n  async orgSpaces(org_id: string, query: any): Promise<HttpResponse> {\n    const url = this.urlQuery(\n      `${this.cli.apiUrl}/orgs/${org_id}/spaces`,\n      query\n    );\n    return await this.cli.get(url);\n  }\n\n  async get(space_id: string): Promise<Space> {\n    const url = `${this.cli.apiUrl}/spaces/${space_id}`;\n    const response = await this.cli.get(url);\n    return response.data as Space;\n  }\n\n  async create(org_id: string, body: Record<string, any>): Promise<Space> {\n    const url = `${this.cli.apiUrl}/orgs/${org_id}/spaces`;\n    const response = await this.cli.post(url, {\n      body,\n    });\n    return response.data as Space;\n  }\n\n  async update(space_id: string, body: Record<string, any>): Promise<Space> {\n    const url = `${this.cli.apiUrl}/spaces/${space_id}`;\n    const response = await this.cli.patch(url, {\n      body,\n    });\n    return response.data as Space;\n  }\n\n  async delete(space_id: string): Promise<void> {\n    const url = `${this.cli.apiUrl}/spaces/${space_id}`;\n    await this.cli.delete(url);\n  }\n\n  async getBlocks(space_id: string, query?: any): Promise<Paginated<Block>> {\n    const url = this.urlQuery(\n      `${this.cli.apiUrl}/spaces/${space_id}/services`,\n      query\n    );\n    const response = await this.cli.get(url);\n    return paginatedResponse<Block>(response);\n  }\n\n  loader(query?: any): DataApi<Space> {\n    return this.cli.loader(`${this.cli.apiUrl}/spaces`, query);\n  }\n\n  blocksLoader(space_id: string): DataApi<Block> {\n    return this.cli.loader(`${this.cli.apiUrl}/spaces/${space_id}/services`);\n  }\n\n  extensionsLoader(space_id: string): DataApi<SpaceExtension> {\n    return this.cli.loader(`${this.cli.apiUrl}/spaces/${space_id}/extensions`);\n  }\n\n  async getExtensions(\n    space_id: string,\n    query?: any\n  ): Promise<Paginated<SpaceExtension>> {\n    const url = this.urlQuery(\n      `${this.cli.apiUrl}/spaces/${space_id}/extensions`,\n      query\n    );\n    const response = await this.cli.get(url);\n    return paginatedResponse<SpaceExtension>(response);\n  }\n\n  async updateExtension(space_id: string, body: any): Promise<SpaceExtension> {\n    const url = `${this.cli.apiUrl}/spaces/${space_id}/extensions`;\n    const response = await this.cli.post(url, {\n      body,\n    });\n    return response.data as SpaceExtension;\n  }\n\n  async removeExtension(\n    space_id: string,\n    extension_name: string\n  ): Promise<void> {\n    const url = `${this.cli.apiUrl}/spaces/${space_id}/extensions/${extension_name}`;\n    await this.cli.delete(url);\n  }\n}\n\nexport default Spaces;\n","import { ApiToken, Block, DataApi } from \"../interfaces\";\nimport HttpComponent from \"./httpComponent\";\n\nexport interface User {\n  id: string;\n  first_name: string;\n  last_name: string;\n  username: string;\n  email: string;\n  created: string;\n  status: string;\n  additional_info: Record<string, any>;\n}\n\nexport interface UserOrg {\n  org_id: string;\n  org_name: string;\n  roles: Array<string>;\n}\n\nclass MbUser extends HttpComponent {\n  async getUser(): Promise<User> {\n    const response = await this.cli.get(`${this.cli.apiUrl}/user`);\n    return response.data as User;\n  }\n\n  async update(body: any): Promise<User> {\n    const response = await this.cli.patch(`${this.cli.apiUrl}/user`, {\n      body,\n    });\n    return response.data as User;\n  }\n\n  orgsLoader(): DataApi<UserOrg> {\n    return this.cli.loader(`${this.cli.apiUrl}/user/orgs`);\n  }\n\n  tokensLoader(): DataApi<ApiToken> {\n    return this.cli.loader(`${this.cli.apiUrl}/user/tokens`);\n  }\n\n  async createToken(): Promise<Record<string, string>> {\n    const response = await this.cli.post(`${this.cli.apiUrl}/user/tokens`);\n    return response.data as Record<string, string>;\n  }\n\n  async deleteToken(tokenId: string): Promise<void> {\n    await this.cli.delete(`${this.cli.apiUrl}/user/tokens/${tokenId}`);\n  }\n\n  async logout(): Promise<void> {\n    await this.cli.delete(`${this.cli.apiUrl}/user/jwt`);\n  }\n\n  async createBlock(body: Record<string, any>): Promise<Block> {\n    const url = `${this.cli.apiUrl}/user/services`;\n    const response = await this.cli.post(url, {\n      body,\n    });\n    return response.data as Block;\n  }\n\n  blockLoader(query?: Record<string, any>): DataApi<Block> {\n    return this.cli.loader(`${this.cli.apiUrl}/user/services`, query);\n  }\n}\n\nexport default MbUser;\n","import HttpClient from \"../http\";\nimport { Space } from \"../interfaces\";\nimport MbAuth from \"./auth\";\nimport Blocks from \"./blocks\";\nimport Cache from \"./cache\";\nimport Extensions from \"./extensions\";\nimport Orgs from \"./orgs\";\nimport Photos from \"./photos\";\nimport Plugins from \"./plugins\";\nimport Spaces from \"./spaces\";\nimport MbUser from \"./user\";\n\nexport interface MetablockOptions {\n  baseUrl?: string;\n  name?: string;\n  jwt?: string;\n  token?: string;\n}\n\nexport class Metablock extends HttpClient {\n  baseUrl: string;\n  jwt: string;\n  token: string;\n  auth: MbAuth;\n  user: MbUser;\n  orgs: Orgs;\n  blocks: Blocks;\n  spaces: Spaces;\n  extensions: Extensions;\n  plugins: Plugins;\n  photos: Photos;\n  cache: Cache;\n  private _spec?: any;\n\n  constructor(options?: MetablockOptions) {\n    super(options?.name || \"metablock\");\n    this.baseUrl = options?.baseUrl || \"https://api.metablock.io\";\n    this.jwt = options?.jwt || \"\";\n    this.token = options?.token || \"\";\n    this.auth = new MbAuth(this);\n    this.user = new MbUser(this);\n    this.orgs = new Orgs(this);\n    this.blocks = new Blocks(this);\n    this.spaces = new Spaces(this);\n    this.plugins = new Plugins(this);\n    this.extensions = new Extensions(this);\n    this.photos = new Photos(this);\n    this.cache = new Cache(this);\n  }\n\n  get apiUrl(): string {\n    return `${this.baseUrl}/v1`;\n  }\n\n  getDefaultHeaders(): Record<string, string> {\n    const headers: Record<string, string> = { ...this.defaultHeaders };\n    if (this.jwt) headers[\"authorization\"] = `Bearer ${this.jwt}`;\n    else if (this.token) headers[\"x-metablock-api-key\"] = this.token;\n    return headers;\n  }\n\n  async genesis(): Promise<Space> {\n    const response = await this.get(`${this.apiUrl}/space`);\n    return response.data as Space;\n  }\n\n  schemaLoader(name: string) {\n    return async () => {\n      if (!this._spec) {\n        const response = await this.get(`${this.apiUrl}/spec`);\n        this._spec = response.data;\n      }\n      return this._spec.components.schemas[name];\n    };\n  }\n}\n\nexport default Metablock;\n","const compileOptions = (text: string): Record<string, any> => {\n  return text\n    .split(\"\\n\")\n    .filter((text) => text.length > 0)\n    .reduce((headers: Record<string, any>, header: string) => {\n      const [key, value] = compileOption(header);\n      if (key in headers) {\n        if (headers[key].constructor !== Array) headers[key] = [headers[key]];\n        headers[key].push(value);\n      } else headers[key] = value;\n      return headers;\n    }, {});\n};\n\nconst compileOption = (text: string): string[] => {\n  const bits = text.split(\":\");\n  const name = bits[0].trim();\n  if (!name || bits.length < 2) throw new Error(`Bad header ${text}`);\n  let value = bits.slice(1).join(\":\").trim();\n  try {\n    value = JSON.parse(value);\n  } catch (err) {\n    // skip on error\n  }\n  return [name, value];\n};\n\nexport default compileOptions;\n","import getBlock from \"./block\";\n\nexport const assetUrl = (fileName?: string) => {\n  const block = getBlock();\n  const base = block.assetsUrl;\n  return fileName ? `${base}/${fileName}` : base;\n};\n\nexport const deployUrl = (fileName?: string) => {\n  const block = getBlock();\n  const base = block.deployUrl;\n  return fileName ? `${base}/${fileName}` : base;\n};\n\nexport const liveUrl = (fileName?: string) => {\n  const block = getBlock();\n  const base = block.liveUrl;\n  return fileName ? `${base}/${fileName}` : base;\n};\n\nexport const bundleUrl = deployUrl;\n"],"names":[],"mappings":"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"}