{"version":3,"file":"index.d.cts","sources":["../../src/types.ts","../../src/mutations/auth.ts","../../src/queries/auth.ts","../../src/queries/items.ts","../../src/client.tsx","../../src/index.ts"],"sourcesContent":["export interface FieldProps {\n  placeholder?: string\n  options?: any\n  shapevalue?: boolean\n  [other: string]: any\n}\nexport interface Field {\n  key: string\n  type: string\n  kind:\n    | \"input\"\n    | \"select\"\n    | \"checkbox\"\n    | \"textarea\"\n    | \"hidden\"\n    | \"tags\"\n    | \"switch\"\n    | \"markdown\"\n    | \"uploader\"\n    | \"date\"\n  label: string\n  input?: string\n  props?: FieldProps\n  private?: boolean\n  required?: boolean\n  description?: string\n  validation?: any\n  autogenerated?: { style: \"slug\"; basedOn: string }\n}\nexport interface Enum {\n  [id: string]: string[]\n}\nexport interface Auth {\n  create?: boolean | string\n  update?: boolean | string\n  delete?: boolean | string\n  get?: boolean | string\n  frictionlessUser?: boolean\n  addOwner?: boolean\n}\nexport interface HeaderLinkField {\n  label: string\n  field: string\n  href: (path: string) => void\n  icon?: string\n}\nexport interface Kind {\n  key: string\n  type: string\n  label: string\n  collection: string\n  fields: Field[]\n  fieldIdentifier?: string\n  enums?: Enum\n  auth?: Auth\n  headerLinksFields?: HeaderLinkField[]\n  deleteIf?: string | [string, string]\n}\nexport interface Respn {\n  types: any\n  utils: any\n}\n\nexport type UserType = {\n  __typename: \"User\"\n  id: string\n  email: string\n  roles: string[]\n  name: string\n  extra: {}\n}\n","import { gql, TypedDocumentNode } from \"@apollo/client\"\nimport { USER_RESPONSE } from \"../fragments\"\nimport { UserType } from \"../types\"\n\ntype LoginMutation = {\n  login: {\n    token: string\n    refreshToken: string\n    user: UserType\n    errorsMessage: string\n  }\n}\ntype LoginMutationVariables = {\n  email: string\n  password: string\n}\n\nexport const LOGIN: TypedDocumentNode<LoginMutation, LoginMutationVariables> =\n  gql`\n    mutation Login($email: String!, $password: String!) {\n      login(email: $email, password: $password) {\n        token\n        refreshToken\n        user {\n          id\n          email\n          name\n          roles\n        }\n      }\n    }\n  `\n\nexport type SignupMutation = {\n  signup: {\n    token: string\n    refreshToken: string\n    user: UserType\n    errorsMessage: string\n  }\n}\ntype SignupMutationVariables = {\n  input: {\n    email: string\n    name: string\n    password?: string\n    passwordConfirmation?: string\n    extra?: {}\n  }\n}\n\nexport const SIGNUP: TypedDocumentNode<\n  SignupMutation,\n  SignupMutationVariables\n> = gql`\n  ${USER_RESPONSE}\n  mutation Signup($input: CreateUserInput!) {\n    signup(input: $input) {\n      token\n      refreshToken\n      user {\n        ...UserResponse\n      }\n    }\n  }\n`\n\nexport type CheckMagicLinkMutation = {\n  checkMagicLink: {\n    token: string\n    refreshToken: string\n    user: UserType\n    errorsMessage: string\n  }\n}\ntype CheckMagicLinkMutationVariables = {\n  token: string\n}\n\nexport const CHECK_MAGIC_LINK: TypedDocumentNode<\n  CheckMagicLinkMutation,\n  CheckMagicLinkMutationVariables\n> = gql`\n  ${USER_RESPONSE}\n  mutation CheckMagicLink($token: String!) {\n    checkMagicLink(token: $token) {\n      token\n      refreshToken\n      user {\n        ...UserResponse\n      }\n    }\n  }\n`\n\ntype ForgotPasswordMutation = {\n  forgotPassword: {\n    ok: string\n    message: string\n  }\n}\ntype ForgotPasswordMutationVariables = {\n  email: string\n  magicLink?: boolean\n}\n\nexport const FORGOT_PASSWORD: TypedDocumentNode<\n  ForgotPasswordMutation,\n  ForgotPasswordMutationVariables\n> = gql`\n  mutation ForgotPassword($email: String!, $magicLink: Boolean) {\n    forgotPassword(email: $email, magicLink: $magicLink) {\n      ok\n      message\n    }\n  }\n`\n\ntype ResetPassword = {\n  resetPassword: {\n    ok: string\n    message: string\n  }\n}\ntype ResetPasswordVariables = {\n  token: string\n  password: string\n  passwordConfirmation?: string\n}\n\nexport const RESET_PASSWORD: TypedDocumentNode<\n  ResetPassword,\n  ResetPasswordVariables\n> = gql`\n  mutation ResetPassword(\n    $token: String!\n    $password: String!\n    $passwordConfirmation: String\n  ) {\n    resetPassword(\n      token: $token\n      password: $password\n      passwordConfirmation: $passwordConfirmation\n    ) {\n      ok\n      message\n    }\n  }\n`\n","import { gql, TypedDocumentNode } from \"@apollo/client\"\nimport { USER_RESPONSE } from \"../fragments\"\n\nexport type CurrentUserQuery = {\n  currentUser: {\n    __typename: \"User\"\n    id: string\n    email: string\n    roles: string[]\n    name: string\n    extra: {\n      [x: string]: any\n    }\n  }\n}\n\nexport const CURRENT_USER: TypedDocumentNode<CurrentUserQuery> = gql`\n  ${USER_RESPONSE}\n  query CurrentUser {\n    currentUser {\n      ...UserResponse\n    }\n  }\n`\n","import { DocumentNode, gql } from \"@apollo/client\"\nimport { Kind } from \"../types\"\n\nexport type GeneratedQueries = {\n  [K in `${\"GET_ALL_\" | \"GET_SINGLE_\"}${string}`]: DocumentNode\n}\n\nexport function generateFlowQueries<const Kinds extends Kind[]>(\n  kinds: Kinds,\n): GeneratedQueries\nexport function generateFlowQueries(kinds: Kind[]): any {\n  return {\n    ...kinds.reduce((acc, { type, fields }) => {\n      const itemFields = fields.map(({ key }) => key).join(\"\\r\\n\")\n\n      return {\n        ...acc,\n        // GET_ALL_ITEM\n        [`GET_ALL_${type.toUpperCase()}`]: gql`\n  query GetAll${type}($input: FlowAllInput) {\n    getAll${type}(input: $input) {\n      items {\n        id\n        createdAt\n        ${itemFields}\n      }\n      count\n    }\n  }\n`,\n        // GET_SINGLE_ITEM\n        [`GET_SINGLE_${type.toUpperCase()}`]: gql`\n  query GetSingle${type}($id: ID!) {\n    getSingle${type}(id: $id) {\n      item {\n        id\n        createdAt\n        ${itemFields}\n      }\n    }\n  }\n`,\n      }\n    }, {}),\n  }\n}\n","\"use client\"\n\nimport {\n  ApolloLink,\n  HttpLink,\n  InMemoryCacheConfig,\n  Observable,\n} from \"@apollo/client\"\nimport {\n  ApolloClient,\n  ApolloNextAppProvider,\n  InMemoryCache,\n} from \"@apollo/client-integration-nextjs\"\nimport {\n  CombinedGraphQLErrors,\n  CombinedProtocolErrors,\n} from \"@apollo/client/errors\"\nimport { SetContextLink } from \"@apollo/client/link/context\"\nimport { ErrorLink } from \"@apollo/client/link/error\"\nimport { getLocalTokens, removeAllItems, setLocalTokens } from \"@floweden/utils\"\n\nconst withToken = new SetContextLink((prevContext) => {\n  const [accessToken] = getLocalTokens()\n  return {\n    credentials: \"include\",\n    headers: {\n      ...prevContext.headers,\n      authorization: accessToken ? `Bearer ${accessToken}` : \"\",\n    },\n  }\n})\nconst resetToken = new ErrorLink(({ error, operation, forward }) => {\n  if (CombinedGraphQLErrors.is(error)) {\n    const hasUnauthenticatedError = error.errors.some(\n      ({ extensions }) => extensions?.code === \"UNAUTHENTICATED\",\n    )\n\n    if (hasUnauthenticatedError) {\n      const [accessToken, refreshToken] = getLocalTokens()\n\n      if (accessToken && refreshToken) {\n        return new Observable((observer) => {\n          fetch(`${process.env.NEXT_PUBLIC_HOST}/api/graphql`, {\n            method: \"POST\",\n            headers: {\n              \"Content-Type\": \"application/json\",\n              Authorization: `Bearer ${accessToken}`,\n            },\n            body: JSON.stringify({\n              query: `\n                mutation RefreshTokens {\n                  refreshTokens(refreshToken: \"${refreshToken}\") { \n                    token\n                    refreshToken\n                    user {\n                      id\n                      email\n                      name\n                      roles\n                    }\n                  }\n                }`,\n            }),\n          })\n            .then((res) => res.json())\n            .then(({ data: { refreshTokens } }) => {\n              // Token refreshed\n              setLocalTokens(refreshTokens.token, refreshTokens.refreshToken)\n\n              operation.setContext(({ headers }: { headers: any }) => {\n                return {\n                  headers: {\n                    ...headers,\n                    authorization: `Bearer ${refreshTokens.token}`,\n                  },\n                }\n              })\n            })\n            .then(() => {\n              const subscriber = {\n                next: observer.next.bind(observer),\n                error: observer.error.bind(observer),\n                complete: observer.complete.bind(observer),\n              }\n              forward(operation).subscribe(subscriber)\n            })\n            .catch((error) => {\n              console.log(\"Token refresh failed:\", { error })\n              removeAllItems()\n              observer.error(error)\n            })\n        })\n      } else {\n        // No tokens available, clear auth state\n        removeAllItems()\n      }\n    }\n\n    // Log other GraphQL errors\n    error.errors.forEach(({ message, locations, path, extensions }) => {\n      if (extensions?.code !== \"UNAUTHENTICATED\") {\n        console.log(\n          `[GraphQL error]: Message: ${message}, Location: ${locations}, Path: ${path}`,\n        )\n      }\n    })\n  } else if (CombinedProtocolErrors.is(error)) {\n    error.errors.forEach(({ message, extensions }) =>\n      console.log(\n        `[Protocol error]: Message: ${message}, Extensions: ${JSON.stringify(\n          extensions,\n        )}`,\n      ),\n    )\n  } else {\n    console.error(`[Network error]: ${error}`)\n  }\n\n  return undefined\n})\n\nconst authFlowLink = withToken.concat(resetToken)\n\nconst link = ApolloLink.from([\n  authFlowLink,\n  new HttpLink({\n    uri: `${process.env.NEXT_PUBLIC_HOST}/api/graphql`,\n    fetchOptions: {\n      // see https://nextjs.org/docs/app/api-reference/functions/fetch#fetchurl-options\n    },\n  }),\n])\n\nexport function makeClient(cacheOpts?: InMemoryCacheConfig) {\n  return new ApolloClient({ cache: new InMemoryCache(cacheOpts), link })\n}\n\nexport function ApolloWrapper({ children }: React.PropsWithChildren) {\n  return (\n    <ApolloNextAppProvider makeClient={makeClient}>\n      {children}\n    </ApolloNextAppProvider>\n  )\n}\n","import * as AUTH_MUTATIONS from \"./mutations/auth.js\"\nimport { GeneratedMutations, generateFlowMutations } from \"./mutations/items.js\"\nimport * as AUTH_QUERIES from \"./queries/auth.js\"\nimport { GeneratedQueries, generateFlowQueries } from \"./queries/items.js\"\nimport { Kind } from \"./types.js\"\nexport { makeClient } from \"./client.js\"\nexport * from \"./types.js\"\n\nexport type GeneratedQueriesType = GeneratedQueries & typeof AUTH_QUERIES\n\nexport function generateQueries<const Kinds extends Kind[]>(\n  kinds: Kinds,\n): GeneratedQueriesType\nexport function generateQueries(kinds: Kind[]): any {\n  return {\n    ...AUTH_QUERIES,\n    ...generateFlowQueries(kinds),\n  }\n}\n\nexport type GeneratedMutationsType = GeneratedMutations & typeof AUTH_MUTATIONS\nexport function generateMutations<const Kinds extends Kind[]>(\n  kinds: Kinds,\n): GeneratedMutationsType\nexport function generateMutations(kinds: Kind[]): any {\n  return {\n    ...AUTH_MUTATIONS,\n    ...generateFlowMutations(kinds),\n  }\n}\n"],"names":[],"mappings":";;;AAAO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACA;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACA;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;;;;;;;;;;;;AChEP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACO;;;;;;;;ACXA;;AAEP;;ACFO;;;ACQA;;;;;;;;;;;;;;"}