@noya-app/noya-api-client-react 0.1.19 → 0.1.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,17 +1,17 @@
1
- $ tsup src/index.ts --format cjs,esm --dts --sourcemap
1
+
2
+ $ tsup src/index.ts --format cjs,esm --dts --sourcemap
2
3
  CLI Building entry: src/index.ts
3
4
  CLI Using tsconfig: tsconfig.json
4
- CLI tsup v8.0.1
5
+ CLI tsup v6.6.2
5
6
  CLI Target: esnext
6
7
  CJS Build start
7
8
  ESM Build start
8
- CJS dist/index.js 11.59 KB
9
- CJS dist/index.js.map 14.55 KB
10
- CJS ⚡️ Build success in 31ms
11
9
  ESM dist/index.mjs 8.05 KB
12
- ESM dist/index.mjs.map 14.33 KB
13
- ESM ⚡️ Build success in 32ms
10
+ ESM dist/index.mjs.map 14.32 KB
11
+ ESM ⚡️ Build success in 19ms
12
+ CJS dist/index.js 11.59 KB
13
+ CJS dist/index.js.map 14.54 KB
14
+ CJS ⚡️ Build success in 19ms
14
15
  DTS Build start
15
- DTS ⚡️ Build success in 2733ms
16
- DTS dist/index.d.ts 8.31 KB
17
- DTS dist/index.d.mts 8.31 KB
16
+ DTS ⚡️ Build success in 3716ms
17
+ DTS dist/index.d.ts 8.31 KB
package/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # @noya-app/noya-api-client-react
2
2
 
3
+ ## 0.1.20
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [69b5fdd]
8
+ - @noya-app/noya-api@0.1.20
9
+
3
10
  ## 0.1.19
4
11
 
5
12
  ### Patch Changes
package/dist/index.d.ts CHANGED
@@ -298,4 +298,4 @@ type EnhancedGeneratedPageName = NoyaAPI.GeneratedName & {
298
298
  declare function useGeneratedPageNames(): EnhancedGeneratedPageName[];
299
299
  declare function useGeneratedPageComponentNames(): EnhancedGeneratedPageName[];
300
300
 
301
- export { type EnhancedGeneratedPageName, NoyaAPIProvider, useGeneratedComponentDescription, useGeneratedComponentDescriptions, useGeneratedComponentNames, useGeneratedPageComponentNames, useGeneratedPageNames, useIsBeta, useMetadata, useNetworkRequests, useNoyaAssets, useNoyaBilling, useNoyaClient, useNoyaClientOrFallback, useNoyaCreators, useNoyaEmailLists, useNoyaFiles, useNoyaIsOwnFile, useNoyaSession, useNoyaTags, useNoyaTools, useNoyaUserData, useOptionalNoyaClient, useOptionalNoyaCreators, useOptionalNoyaSession, useOptionalNoyaTags, useOptionalNoyaTools, useOptionalNoyaUserData, useRandomIcons, useRandomImages };
301
+ export { EnhancedGeneratedPageName, NoyaAPIProvider, useGeneratedComponentDescription, useGeneratedComponentDescriptions, useGeneratedComponentNames, useGeneratedPageComponentNames, useGeneratedPageNames, useIsBeta, useMetadata, useNetworkRequests, useNoyaAssets, useNoyaBilling, useNoyaClient, useNoyaClientOrFallback, useNoyaCreators, useNoyaEmailLists, useNoyaFiles, useNoyaIsOwnFile, useNoyaSession, useNoyaTags, useNoyaTools, useNoyaUserData, useOptionalNoyaClient, useOptionalNoyaCreators, useOptionalNoyaSession, useOptionalNoyaTags, useOptionalNoyaTools, useOptionalNoyaUserData, useRandomIcons, useRandomImages };
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/react/context.ts","../src/react/hooks.ts"],"sourcesContent":["export * from \"@noya-app/noya-api\";\nexport * from \"./react/context\";\nexport * from \"./react/hooks\";\n","import { NoyaAPI } from \"@noya-app/noya-api\";\nimport { createContext, useContext, useMemo } from \"react\";\n\ntype NoyaAPIContextValue = NoyaAPI.Client;\n\nconst NoyaAPIContext = createContext<NoyaAPIContextValue | undefined>(\n undefined\n);\n\nexport const NoyaAPIProvider: React.Provider<NoyaAPIContextValue | undefined> =\n NoyaAPIContext.Provider;\n\nexport function useNoyaClient(): NoyaAPIContextValue {\n const value = useContext(NoyaAPIContext);\n\n if (!value) {\n throw new Error(\"Missing NoyaAPIContextValue\");\n }\n\n return value;\n}\n\nexport function useOptionalNoyaClient(): NoyaAPIContextValue | undefined {\n return useContext(NoyaAPIContext);\n}\n\n/**\n * If there's no client, fallback to a memory client.\n * We do this to safely render content when logged out (e.g. when sharing).\n */\nexport function useNoyaClientOrFallback(): NoyaAPIContextValue {\n const value = useContext(NoyaAPIContext);\n\n const memoryClient = useMemo(() => {\n return new NoyaAPI.Client({\n networkClient: new NoyaAPI.MemoryClient(),\n });\n }, []);\n\n return value ?? memoryClient;\n}\n","import { useSelector } from \"@legendapp/state/react\";\nimport { GENERATED_PAGE_NAME_COUNT, NoyaAPI } from \"@noya-app/noya-api\";\nimport { range } from \"@noya-app/noya-utils\";\nimport { useEffect, useMemo, useRef } from \"react\";\nimport {\n useNoyaClient,\n useNoyaClientOrFallback,\n useOptionalNoyaClient,\n} from \"./context\";\n\nexport function useNoyaFiles(): {\n files: NoyaAPI.File[];\n loading: NoyaAPI.DataLoadingState;\n} {\n const client = useNoyaClientOrFallback();\n const files = useSelector(client.files$);\n const session = useSelector(useNoyaClient().session$);\n\n useEffect(() => {\n if (!session) return;\n\n if (\n files.loading === \"notStarted\" ||\n files.loading === \"populatedOnServer\"\n ) {\n client.files.refetch();\n }\n }, [client, files.loading, session]);\n\n return files;\n}\n\nexport function useNoyaIsOwnFile(fileId?: string) {\n const client = useNoyaClientOrFallback();\n const files = useSelector(client.files$);\n const session = useSelector(client.session$);\n const file = files.files.find((file) => file.id === fileId);\n return file?.userId === session?.user.id;\n}\n\nexport function useNoyaTools(initial?: NoyaAPI.Tool[]) {\n const didInitialize = useRef(false);\n const client = useNoyaClientOrFallback();\n const tools = useSelector(client.tools$);\n useEffect(() => {\n if (didInitialize.current) return;\n didInitialize.current = true;\n\n if (initial) {\n client.tools.setInitial(initial);\n } else {\n client.tools.list();\n }\n }, [client, initial]);\n return tools;\n}\n\nexport function useOptionalNoyaTools(initial?: NoyaAPI.Tool[]) {\n const client = useNoyaClientOrFallback();\n const tools = useSelector(client.tools$);\n return useMemo(\n () =>\n tools.loading && initial ? { loading: true, tools: initial } : tools,\n [initial, tools]\n );\n}\n\nexport function useNoyaTags() {\n const client = useNoyaClient();\n const tags = useSelector(client.tags$);\n useEffect(() => {\n client.tags.read();\n }, [client]);\n return tags;\n}\n\nexport function useOptionalNoyaTags() {\n const client = useNoyaClientOrFallback();\n const tags = useSelector(client.tags$);\n useEffect(() => {\n client.tags.read();\n }, [client]);\n return tags;\n}\n\nexport function useNoyaCreators() {\n const client = useNoyaClientOrFallback();\n const creators = useSelector(client.creators$);\n useEffect(() => {\n client.creators.read();\n }, [client]);\n return creators;\n}\n\nexport function useOptionalNoyaCreators() {\n const client = useNoyaClientOrFallback();\n const creators = useSelector(client.creators$);\n useEffect(() => {\n client.creators.read();\n }, [client]);\n return creators;\n}\n\nexport function useNoyaAssets(fileId?: string) {\n const client = useNoyaClientOrFallback();\n const empty = useMemo(() => ({ assets: [], loading: true }), []);\n const assets = useSelector(\n fileId ? client.assetsByFileId$[fileId] : client.assets$\n );\n return assets ?? empty;\n}\n\nexport function useNoyaSession() {\n const session = useSelector(useNoyaClient().session$);\n return session;\n}\n\nexport function useOptionalNoyaSession() {\n const session = useSelector(useOptionalNoyaClient()?.session$);\n return session;\n}\n\nexport function useNoyaBilling() {\n const billing = useSelector(useNoyaClient().billing$);\n return billing;\n}\n\nexport function useNoyaEmailLists() {\n const emailLists = useSelector(useNoyaClient().emailLists$);\n return emailLists;\n}\n\nexport function useNoyaUserData() {\n const userData = useSelector(useNoyaClientOrFallback().userData$);\n return userData;\n}\n\nexport function useOptionalNoyaUserData() {\n const userData = useSelector(useNoyaClientOrFallback().userData$);\n return userData;\n}\n\nexport function useIsBeta() {\n const userData = useOptionalNoyaUserData();\n return userData?.userData?.beta ?? false;\n}\n\nexport function useMetadata<T extends NoyaAPI.Json>(key: string) {\n const { userData } = useNoyaUserData();\n const metadata = userData?.metadata || [];\n const metadataItem = metadata.find((item) => item.key === key);\n return metadataItem?.value as T | undefined;\n}\n\nexport function useGeneratedComponentNames(name: string) {\n const key = name.trim().toLowerCase();\n const { generatedNames$, loadingNames$ } = useNoyaClientOrFallback();\n const result = useSelector(\n () => generatedNames$[key].get() as NoyaAPI.GeneratedName[] | undefined\n );\n const loading = useSelector(() => loadingNames$[key].get());\n return useMemo(() => ({ names: result ?? [], loading }), [loading, result]);\n}\n\nexport function useGeneratedComponentDescriptions() {\n const { generatedDescriptions$, loadingDescriptions$ } =\n useNoyaClientOrFallback();\n const descriptions = useSelector(generatedDescriptions$);\n const loading = useSelector(loadingDescriptions$);\n return useMemo(() => ({ descriptions, loading }), [loading, descriptions]);\n}\n\nexport function useGeneratedComponentDescription(name: string) {\n const key = name.trim().toLowerCase();\n const { generatedDescriptions$, loadingDescriptions$ } =\n useNoyaClientOrFallback();\n const description = useSelector(\n () => generatedDescriptions$[key].get() as string | undefined\n );\n const loading = useSelector(() => loadingDescriptions$[key].get());\n return useMemo(() => ({ description, loading }), [loading, description]);\n}\n\nexport function useRandomImages() {\n const { randomImages$, loadingRandomImages$ } = useNoyaClientOrFallback();\n const images = useSelector(randomImages$);\n const loading = useSelector(loadingRandomImages$);\n return useMemo(() => ({ images, loading }), [loading, images]);\n}\n\nexport function useRandomIcons() {\n const { randomIcons$, loadingRandomIcons$ } = useNoyaClientOrFallback();\n const icons = useSelector(randomIcons$);\n const loading = useSelector(loadingRandomIcons$);\n return useMemo(() => ({ icons, loading }), [loading, icons]);\n}\n\nexport function useNetworkRequests() {\n const { requests$ } = useNoyaClientOrFallback();\n const requests = useSelector(requests$) as NoyaAPI.RequestSnapshot[];\n return requests;\n}\n\nexport type EnhancedGeneratedPageName = NoyaAPI.GeneratedName & {\n index: number;\n type: \"suggestion\";\n};\n\nexport function useGeneratedPageNames(): EnhancedGeneratedPageName[] {\n const { generatedPageNames$ } = useNoyaClientOrFallback();\n const names = useSelector(generatedPageNames$) as NoyaAPI.GeneratedName[];\n\n const namesWithDefaultsAndTypes = useMemo(() => {\n const rangeArray = range(0, GENERATED_PAGE_NAME_COUNT);\n\n // Fill any empty slots with default names in the 'loading' state\n const withDefaults = rangeArray.map((index): NoyaAPI.GeneratedName => {\n const name = names[index];\n return name ?? { name: `Page ${index + 1}`, loading: true, key: \"\" };\n });\n\n return withDefaults.map(\n (name, index): EnhancedGeneratedPageName => ({\n ...name,\n index,\n type: \"suggestion\",\n })\n );\n }, [names]);\n\n // Take the first 3\n return namesWithDefaultsAndTypes.slice(0, 3);\n}\n\nexport function useGeneratedPageComponentNames(): EnhancedGeneratedPageName[] {\n const { generatedPageComponentNames$: generatedComponentNames$ } =\n useNoyaClientOrFallback();\n const names = useSelector(\n generatedComponentNames$\n ) as NoyaAPI.GeneratedName[];\n\n const namesWithDefaultsAndTypes = useMemo(() => {\n const rangeArray = range(0, GENERATED_PAGE_NAME_COUNT);\n\n // Fill any empty slots with default names in the 'loading' state\n const withDefaults = rangeArray.map((index): NoyaAPI.GeneratedName => {\n const name = names[index];\n return name ?? { name: `Component ${index + 1}`, loading: true, key: \"\" };\n });\n\n return withDefaults.map(\n (name, index): EnhancedGeneratedPageName => ({\n ...name,\n index,\n type: \"suggestion\",\n })\n );\n }, [names]);\n\n // Take the first 3\n return namesWithDefaultsAndTypes.slice(0, 3);\n}\n"],"mappings":"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","names":["import_react","import_noya_api","file"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/react/context.ts","../src/react/hooks.ts"],"sourcesContent":["export * from \"@noya-app/noya-api\";\nexport * from \"./react/context\";\nexport * from \"./react/hooks\";\n","import { NoyaAPI } from \"@noya-app/noya-api\";\nimport { createContext, useContext, useMemo } from \"react\";\n\ntype NoyaAPIContextValue = NoyaAPI.Client;\n\nconst NoyaAPIContext = createContext<NoyaAPIContextValue | undefined>(\n undefined\n);\n\nexport const NoyaAPIProvider: React.Provider<NoyaAPIContextValue | undefined> =\n NoyaAPIContext.Provider;\n\nexport function useNoyaClient(): NoyaAPIContextValue {\n const value = useContext(NoyaAPIContext);\n\n if (!value) {\n throw new Error(\"Missing NoyaAPIContextValue\");\n }\n\n return value;\n}\n\nexport function useOptionalNoyaClient(): NoyaAPIContextValue | undefined {\n return useContext(NoyaAPIContext);\n}\n\n/**\n * If there's no client, fallback to a memory client.\n * We do this to safely render content when logged out (e.g. when sharing).\n */\nexport function useNoyaClientOrFallback(): NoyaAPIContextValue {\n const value = useContext(NoyaAPIContext);\n\n const memoryClient = useMemo(() => {\n return new NoyaAPI.Client({\n networkClient: new NoyaAPI.MemoryClient(),\n });\n }, []);\n\n return value ?? memoryClient;\n}\n","import { useSelector } from \"@legendapp/state/react\";\nimport { GENERATED_PAGE_NAME_COUNT, NoyaAPI } from \"@noya-app/noya-api\";\nimport { range } from \"@noya-app/noya-utils\";\nimport { useEffect, useMemo, useRef } from \"react\";\nimport {\n useNoyaClient,\n useNoyaClientOrFallback,\n useOptionalNoyaClient,\n} from \"./context\";\n\nexport function useNoyaFiles(): {\n files: NoyaAPI.File[];\n loading: NoyaAPI.DataLoadingState;\n} {\n const client = useNoyaClientOrFallback();\n const files = useSelector(client.files$);\n const session = useSelector(useNoyaClient().session$);\n\n useEffect(() => {\n if (!session) return;\n\n if (\n files.loading === \"notStarted\" ||\n files.loading === \"populatedOnServer\"\n ) {\n client.files.refetch();\n }\n }, [client, files.loading, session]);\n\n return files;\n}\n\nexport function useNoyaIsOwnFile(fileId?: string) {\n const client = useNoyaClientOrFallback();\n const files = useSelector(client.files$);\n const session = useSelector(client.session$);\n const file = files.files.find((file) => file.id === fileId);\n return file?.userId === session?.user.id;\n}\n\nexport function useNoyaTools(initial?: NoyaAPI.Tool[]) {\n const didInitialize = useRef(false);\n const client = useNoyaClientOrFallback();\n const tools = useSelector(client.tools$);\n useEffect(() => {\n if (didInitialize.current) return;\n didInitialize.current = true;\n\n if (initial) {\n client.tools.setInitial(initial);\n } else {\n client.tools.list();\n }\n }, [client, initial]);\n return tools;\n}\n\nexport function useOptionalNoyaTools(initial?: NoyaAPI.Tool[]) {\n const client = useNoyaClientOrFallback();\n const tools = useSelector(client.tools$);\n return useMemo(\n () =>\n tools.loading && initial ? { loading: true, tools: initial } : tools,\n [initial, tools]\n );\n}\n\nexport function useNoyaTags() {\n const client = useNoyaClient();\n const tags = useSelector(client.tags$);\n useEffect(() => {\n client.tags.read();\n }, [client]);\n return tags;\n}\n\nexport function useOptionalNoyaTags() {\n const client = useNoyaClientOrFallback();\n const tags = useSelector(client.tags$);\n useEffect(() => {\n client.tags.read();\n }, [client]);\n return tags;\n}\n\nexport function useNoyaCreators() {\n const client = useNoyaClientOrFallback();\n const creators = useSelector(client.creators$);\n useEffect(() => {\n client.creators.read();\n }, [client]);\n return creators;\n}\n\nexport function useOptionalNoyaCreators() {\n const client = useNoyaClientOrFallback();\n const creators = useSelector(client.creators$);\n useEffect(() => {\n client.creators.read();\n }, [client]);\n return creators;\n}\n\nexport function useNoyaAssets(fileId?: string) {\n const client = useNoyaClientOrFallback();\n const empty = useMemo(() => ({ assets: [], loading: true }), []);\n const assets = useSelector(\n fileId ? client.assetsByFileId$[fileId] : client.assets$\n );\n return assets ?? empty;\n}\n\nexport function useNoyaSession() {\n const session = useSelector(useNoyaClient().session$);\n return session;\n}\n\nexport function useOptionalNoyaSession() {\n const session = useSelector(useOptionalNoyaClient()?.session$);\n return session;\n}\n\nexport function useNoyaBilling() {\n const billing = useSelector(useNoyaClient().billing$);\n return billing;\n}\n\nexport function useNoyaEmailLists() {\n const emailLists = useSelector(useNoyaClient().emailLists$);\n return emailLists;\n}\n\nexport function useNoyaUserData() {\n const userData = useSelector(useNoyaClientOrFallback().userData$);\n return userData;\n}\n\nexport function useOptionalNoyaUserData() {\n const userData = useSelector(useNoyaClientOrFallback().userData$);\n return userData;\n}\n\nexport function useIsBeta() {\n const userData = useOptionalNoyaUserData();\n return userData?.userData?.beta ?? false;\n}\n\nexport function useMetadata<T extends NoyaAPI.Json>(key: string) {\n const { userData } = useNoyaUserData();\n const metadata = userData?.metadata || [];\n const metadataItem = metadata.find((item) => item.key === key);\n return metadataItem?.value as T | undefined;\n}\n\nexport function useGeneratedComponentNames(name: string) {\n const key = name.trim().toLowerCase();\n const { generatedNames$, loadingNames$ } = useNoyaClientOrFallback();\n const result = useSelector(\n () => generatedNames$[key].get() as NoyaAPI.GeneratedName[] | undefined\n );\n const loading = useSelector(() => loadingNames$[key].get());\n return useMemo(() => ({ names: result ?? [], loading }), [loading, result]);\n}\n\nexport function useGeneratedComponentDescriptions() {\n const { generatedDescriptions$, loadingDescriptions$ } =\n useNoyaClientOrFallback();\n const descriptions = useSelector(generatedDescriptions$);\n const loading = useSelector(loadingDescriptions$);\n return useMemo(() => ({ descriptions, loading }), [loading, descriptions]);\n}\n\nexport function useGeneratedComponentDescription(name: string) {\n const key = name.trim().toLowerCase();\n const { generatedDescriptions$, loadingDescriptions$ } =\n useNoyaClientOrFallback();\n const description = useSelector(\n () => generatedDescriptions$[key].get() as string | undefined\n );\n const loading = useSelector(() => loadingDescriptions$[key].get());\n return useMemo(() => ({ description, loading }), [loading, description]);\n}\n\nexport function useRandomImages() {\n const { randomImages$, loadingRandomImages$ } = useNoyaClientOrFallback();\n const images = useSelector(randomImages$);\n const loading = useSelector(loadingRandomImages$);\n return useMemo(() => ({ images, loading }), [loading, images]);\n}\n\nexport function useRandomIcons() {\n const { randomIcons$, loadingRandomIcons$ } = useNoyaClientOrFallback();\n const icons = useSelector(randomIcons$);\n const loading = useSelector(loadingRandomIcons$);\n return useMemo(() => ({ icons, loading }), [loading, icons]);\n}\n\nexport function useNetworkRequests() {\n const { requests$ } = useNoyaClientOrFallback();\n const requests = useSelector(requests$) as NoyaAPI.RequestSnapshot[];\n return requests;\n}\n\nexport type EnhancedGeneratedPageName = NoyaAPI.GeneratedName & {\n index: number;\n type: \"suggestion\";\n};\n\nexport function useGeneratedPageNames(): EnhancedGeneratedPageName[] {\n const { generatedPageNames$ } = useNoyaClientOrFallback();\n const names = useSelector(generatedPageNames$) as NoyaAPI.GeneratedName[];\n\n const namesWithDefaultsAndTypes = useMemo(() => {\n const rangeArray = range(0, GENERATED_PAGE_NAME_COUNT);\n\n // Fill any empty slots with default names in the 'loading' state\n const withDefaults = rangeArray.map((index): NoyaAPI.GeneratedName => {\n const name = names[index];\n return name ?? { name: `Page ${index + 1}`, loading: true, key: \"\" };\n });\n\n return withDefaults.map(\n (name, index): EnhancedGeneratedPageName => ({\n ...name,\n index,\n type: \"suggestion\",\n })\n );\n }, [names]);\n\n // Take the first 3\n return namesWithDefaultsAndTypes.slice(0, 3);\n}\n\nexport function useGeneratedPageComponentNames(): EnhancedGeneratedPageName[] {\n const { generatedPageComponentNames$: generatedComponentNames$ } =\n useNoyaClientOrFallback();\n const names = useSelector(\n generatedComponentNames$\n ) as NoyaAPI.GeneratedName[];\n\n const namesWithDefaultsAndTypes = useMemo(() => {\n const rangeArray = range(0, GENERATED_PAGE_NAME_COUNT);\n\n // Fill any empty slots with default names in the 'loading' state\n const withDefaults = rangeArray.map((index): NoyaAPI.GeneratedName => {\n const name = names[index];\n return name ?? { name: `Component ${index + 1}`, loading: true, key: \"\" };\n });\n\n return withDefaults.map(\n (name, index): EnhancedGeneratedPageName => ({\n ...name,\n index,\n type: \"suggestion\",\n })\n );\n }, [names]);\n\n // Take the first 3\n return namesWithDefaultsAndTypes.slice(0, 3);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAc,+BAAd;;;ACAA,sBAAwB;AACxB,mBAAmD;AAInD,IAAM,qBAAiB;AAAA,EACrB;AACF;AAEO,IAAM,kBACX,eAAe;AAEV,SAAS,gBAAqC;AACnD,QAAM,YAAQ,yBAAW,cAAc;AAEvC,MAAI,CAAC,OAAO;AACV,UAAM,IAAI,MAAM,6BAA6B;AAAA,EAC/C;AAEA,SAAO;AACT;AAEO,SAAS,wBAAyD;AACvE,aAAO,yBAAW,cAAc;AAClC;AAMO,SAAS,0BAA+C;AAC7D,QAAM,YAAQ,yBAAW,cAAc;AAEvC,QAAM,mBAAe,sBAAQ,MAAM;AACjC,WAAO,IAAI,wBAAQ,OAAO;AAAA,MACxB,eAAe,IAAI,wBAAQ,aAAa;AAAA,IAC1C,CAAC;AAAA,EACH,GAAG,CAAC,CAAC;AAEL,SAAO,SAAS;AAClB;;;ACxCA,IAAAA,gBAA4B;AAC5B,IAAAC,mBAAmD;AACnD,wBAAsB;AACtB,IAAAD,gBAA2C;AAOpC,SAAS,eAGd;AACA,QAAM,SAAS,wBAAwB;AACvC,QAAM,YAAQ,2BAAY,OAAO,MAAM;AACvC,QAAM,cAAU,2BAAY,cAAc,EAAE,QAAQ;AAEpD,+BAAU,MAAM;AACd,QAAI,CAAC;AAAS;AAEd,QACE,MAAM,YAAY,gBAClB,MAAM,YAAY,qBAClB;AACA,aAAO,MAAM,QAAQ;AAAA,IACvB;AAAA,EACF,GAAG,CAAC,QAAQ,MAAM,SAAS,OAAO,CAAC;AAEnC,SAAO;AACT;AAEO,SAAS,iBAAiB,QAAiB;AAChD,QAAM,SAAS,wBAAwB;AACvC,QAAM,YAAQ,2BAAY,OAAO,MAAM;AACvC,QAAM,cAAU,2BAAY,OAAO,QAAQ;AAC3C,QAAM,OAAO,MAAM,MAAM,KAAK,CAACE,UAASA,MAAK,OAAO,MAAM;AAC1D,SAAO,MAAM,WAAW,SAAS,KAAK;AACxC;AAEO,SAAS,aAAa,SAA0B;AACrD,QAAM,oBAAgB,sBAAO,KAAK;AAClC,QAAM,SAAS,wBAAwB;AACvC,QAAM,YAAQ,2BAAY,OAAO,MAAM;AACvC,+BAAU,MAAM;AACd,QAAI,cAAc;AAAS;AAC3B,kBAAc,UAAU;AAExB,QAAI,SAAS;AACX,aAAO,MAAM,WAAW,OAAO;AAAA,IACjC,OAAO;AACL,aAAO,MAAM,KAAK;AAAA,IACpB;AAAA,EACF,GAAG,CAAC,QAAQ,OAAO,CAAC;AACpB,SAAO;AACT;AAEO,SAAS,qBAAqB,SAA0B;AAC7D,QAAM,SAAS,wBAAwB;AACvC,QAAM,YAAQ,2BAAY,OAAO,MAAM;AACvC,aAAO;AAAA,IACL,MACE,MAAM,WAAW,UAAU,EAAE,SAAS,MAAM,OAAO,QAAQ,IAAI;AAAA,IACjE,CAAC,SAAS,KAAK;AAAA,EACjB;AACF;AAEO,SAAS,cAAc;AAC5B,QAAM,SAAS,cAAc;AAC7B,QAAM,WAAO,2BAAY,OAAO,KAAK;AACrC,+BAAU,MAAM;AACd,WAAO,KAAK,KAAK;AAAA,EACnB,GAAG,CAAC,MAAM,CAAC;AACX,SAAO;AACT;AAEO,SAAS,sBAAsB;AACpC,QAAM,SAAS,wBAAwB;AACvC,QAAM,WAAO,2BAAY,OAAO,KAAK;AACrC,+BAAU,MAAM;AACd,WAAO,KAAK,KAAK;AAAA,EACnB,GAAG,CAAC,MAAM,CAAC;AACX,SAAO;AACT;AAEO,SAAS,kBAAkB;AAChC,QAAM,SAAS,wBAAwB;AACvC,QAAM,eAAW,2BAAY,OAAO,SAAS;AAC7C,+BAAU,MAAM;AACd,WAAO,SAAS,KAAK;AAAA,EACvB,GAAG,CAAC,MAAM,CAAC;AACX,SAAO;AACT;AAEO,SAAS,0BAA0B;AACxC,QAAM,SAAS,wBAAwB;AACvC,QAAM,eAAW,2BAAY,OAAO,SAAS;AAC7C,+BAAU,MAAM;AACd,WAAO,SAAS,KAAK;AAAA,EACvB,GAAG,CAAC,MAAM,CAAC;AACX,SAAO;AACT;AAEO,SAAS,cAAc,QAAiB;AAC7C,QAAM,SAAS,wBAAwB;AACvC,QAAM,YAAQ,uBAAQ,OAAO,EAAE,QAAQ,CAAC,GAAG,SAAS,KAAK,IAAI,CAAC,CAAC;AAC/D,QAAM,aAAS;AAAA,IACb,SAAS,OAAO,gBAAgB,MAAM,IAAI,OAAO;AAAA,EACnD;AACA,SAAO,UAAU;AACnB;AAEO,SAAS,iBAAiB;AAC/B,QAAM,cAAU,2BAAY,cAAc,EAAE,QAAQ;AACpD,SAAO;AACT;AAEO,SAAS,yBAAyB;AACvC,QAAM,cAAU,2BAAY,sBAAsB,GAAG,QAAQ;AAC7D,SAAO;AACT;AAEO,SAAS,iBAAiB;AAC/B,QAAM,cAAU,2BAAY,cAAc,EAAE,QAAQ;AACpD,SAAO;AACT;AAEO,SAAS,oBAAoB;AAClC,QAAM,iBAAa,2BAAY,cAAc,EAAE,WAAW;AAC1D,SAAO;AACT;AAEO,SAAS,kBAAkB;AAChC,QAAM,eAAW,2BAAY,wBAAwB,EAAE,SAAS;AAChE,SAAO;AACT;AAEO,SAAS,0BAA0B;AACxC,QAAM,eAAW,2BAAY,wBAAwB,EAAE,SAAS;AAChE,SAAO;AACT;AAEO,SAAS,YAAY;AAC1B,QAAM,WAAW,wBAAwB;AACzC,SAAO,UAAU,UAAU,QAAQ;AACrC;AAEO,SAAS,YAAoC,KAAa;AAC/D,QAAM,EAAE,SAAS,IAAI,gBAAgB;AACrC,QAAM,WAAW,UAAU,YAAY,CAAC;AACxC,QAAM,eAAe,SAAS,KAAK,CAAC,SAAS,KAAK,QAAQ,GAAG;AAC7D,SAAO,cAAc;AACvB;AAEO,SAAS,2BAA2B,MAAc;AACvD,QAAM,MAAM,KAAK,KAAK,EAAE,YAAY;AACpC,QAAM,EAAE,iBAAiB,cAAc,IAAI,wBAAwB;AACnE,QAAM,aAAS;AAAA,IACb,MAAM,gBAAgB,GAAG,EAAE,IAAI;AAAA,EACjC;AACA,QAAM,cAAU,2BAAY,MAAM,cAAc,GAAG,EAAE,IAAI,CAAC;AAC1D,aAAO,uBAAQ,OAAO,EAAE,OAAO,UAAU,CAAC,GAAG,QAAQ,IAAI,CAAC,SAAS,MAAM,CAAC;AAC5E;AAEO,SAAS,oCAAoC;AAClD,QAAM,EAAE,wBAAwB,qBAAqB,IACnD,wBAAwB;AAC1B,QAAM,mBAAe,2BAAY,sBAAsB;AACvD,QAAM,cAAU,2BAAY,oBAAoB;AAChD,aAAO,uBAAQ,OAAO,EAAE,cAAc,QAAQ,IAAI,CAAC,SAAS,YAAY,CAAC;AAC3E;AAEO,SAAS,iCAAiC,MAAc;AAC7D,QAAM,MAAM,KAAK,KAAK,EAAE,YAAY;AACpC,QAAM,EAAE,wBAAwB,qBAAqB,IACnD,wBAAwB;AAC1B,QAAM,kBAAc;AAAA,IAClB,MAAM,uBAAuB,GAAG,EAAE,IAAI;AAAA,EACxC;AACA,QAAM,cAAU,2BAAY,MAAM,qBAAqB,GAAG,EAAE,IAAI,CAAC;AACjE,aAAO,uBAAQ,OAAO,EAAE,aAAa,QAAQ,IAAI,CAAC,SAAS,WAAW,CAAC;AACzE;AAEO,SAAS,kBAAkB;AAChC,QAAM,EAAE,eAAe,qBAAqB,IAAI,wBAAwB;AACxE,QAAM,aAAS,2BAAY,aAAa;AACxC,QAAM,cAAU,2BAAY,oBAAoB;AAChD,aAAO,uBAAQ,OAAO,EAAE,QAAQ,QAAQ,IAAI,CAAC,SAAS,MAAM,CAAC;AAC/D;AAEO,SAAS,iBAAiB;AAC/B,QAAM,EAAE,cAAc,oBAAoB,IAAI,wBAAwB;AACtE,QAAM,YAAQ,2BAAY,YAAY;AACtC,QAAM,cAAU,2BAAY,mBAAmB;AAC/C,aAAO,uBAAQ,OAAO,EAAE,OAAO,QAAQ,IAAI,CAAC,SAAS,KAAK,CAAC;AAC7D;AAEO,SAAS,qBAAqB;AACnC,QAAM,EAAE,UAAU,IAAI,wBAAwB;AAC9C,QAAM,eAAW,2BAAY,SAAS;AACtC,SAAO;AACT;AAOO,SAAS,wBAAqD;AACnE,QAAM,EAAE,oBAAoB,IAAI,wBAAwB;AACxD,QAAM,YAAQ,2BAAY,mBAAmB;AAE7C,QAAM,gCAA4B,uBAAQ,MAAM;AAC9C,UAAM,iBAAa,yBAAM,GAAG,0CAAyB;AAGrD,UAAM,eAAe,WAAW,IAAI,CAAC,UAAiC;AACpE,YAAM,OAAO,MAAM,KAAK;AACxB,aAAO,QAAQ,EAAE,MAAM,QAAQ,QAAQ,KAAK,SAAS,MAAM,KAAK,GAAG;AAAA,IACrE,CAAC;AAED,WAAO,aAAa;AAAA,MAClB,CAAC,MAAM,WAAsC;AAAA,QAC3C,GAAG;AAAA,QACH;AAAA,QACA,MAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF,GAAG,CAAC,KAAK,CAAC;AAGV,SAAO,0BAA0B,MAAM,GAAG,CAAC;AAC7C;AAEO,SAAS,iCAA8D;AAC5E,QAAM,EAAE,8BAA8B,yBAAyB,IAC7D,wBAAwB;AAC1B,QAAM,YAAQ;AAAA,IACZ;AAAA,EACF;AAEA,QAAM,gCAA4B,uBAAQ,MAAM;AAC9C,UAAM,iBAAa,yBAAM,GAAG,0CAAyB;AAGrD,UAAM,eAAe,WAAW,IAAI,CAAC,UAAiC;AACpE,YAAM,OAAO,MAAM,KAAK;AACxB,aAAO,QAAQ,EAAE,MAAM,aAAa,QAAQ,KAAK,SAAS,MAAM,KAAK,GAAG;AAAA,IAC1E,CAAC;AAED,WAAO,aAAa;AAAA,MAClB,CAAC,MAAM,WAAsC;AAAA,QAC3C,GAAG;AAAA,QACH;AAAA,QACA,MAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF,GAAG,CAAC,KAAK,CAAC;AAGV,SAAO,0BAA0B,MAAM,GAAG,CAAC;AAC7C;","names":["import_react","import_noya_api","file"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/react/context.ts","../src/react/hooks.ts"],"sourcesContent":["export * from \"@noya-app/noya-api\";\nexport * from \"./react/context\";\nexport * from \"./react/hooks\";\n","import { NoyaAPI } from \"@noya-app/noya-api\";\nimport { createContext, useContext, useMemo } from \"react\";\n\ntype NoyaAPIContextValue = NoyaAPI.Client;\n\nconst NoyaAPIContext = createContext<NoyaAPIContextValue | undefined>(\n undefined\n);\n\nexport const NoyaAPIProvider: React.Provider<NoyaAPIContextValue | undefined> =\n NoyaAPIContext.Provider;\n\nexport function useNoyaClient(): NoyaAPIContextValue {\n const value = useContext(NoyaAPIContext);\n\n if (!value) {\n throw new Error(\"Missing NoyaAPIContextValue\");\n }\n\n return value;\n}\n\nexport function useOptionalNoyaClient(): NoyaAPIContextValue | undefined {\n return useContext(NoyaAPIContext);\n}\n\n/**\n * If there's no client, fallback to a memory client.\n * We do this to safely render content when logged out (e.g. when sharing).\n */\nexport function useNoyaClientOrFallback(): NoyaAPIContextValue {\n const value = useContext(NoyaAPIContext);\n\n const memoryClient = useMemo(() => {\n return new NoyaAPI.Client({\n networkClient: new NoyaAPI.MemoryClient(),\n });\n }, []);\n\n return value ?? memoryClient;\n}\n","import { useSelector } from \"@legendapp/state/react\";\nimport { GENERATED_PAGE_NAME_COUNT, NoyaAPI } from \"@noya-app/noya-api\";\nimport { range } from \"@noya-app/noya-utils\";\nimport { useEffect, useMemo, useRef } from \"react\";\nimport {\n useNoyaClient,\n useNoyaClientOrFallback,\n useOptionalNoyaClient,\n} from \"./context\";\n\nexport function useNoyaFiles(): {\n files: NoyaAPI.File[];\n loading: NoyaAPI.DataLoadingState;\n} {\n const client = useNoyaClientOrFallback();\n const files = useSelector(client.files$);\n const session = useSelector(useNoyaClient().session$);\n\n useEffect(() => {\n if (!session) return;\n\n if (\n files.loading === \"notStarted\" ||\n files.loading === \"populatedOnServer\"\n ) {\n client.files.refetch();\n }\n }, [client, files.loading, session]);\n\n return files;\n}\n\nexport function useNoyaIsOwnFile(fileId?: string) {\n const client = useNoyaClientOrFallback();\n const files = useSelector(client.files$);\n const session = useSelector(client.session$);\n const file = files.files.find((file) => file.id === fileId);\n return file?.userId === session?.user.id;\n}\n\nexport function useNoyaTools(initial?: NoyaAPI.Tool[]) {\n const didInitialize = useRef(false);\n const client = useNoyaClientOrFallback();\n const tools = useSelector(client.tools$);\n useEffect(() => {\n if (didInitialize.current) return;\n didInitialize.current = true;\n\n if (initial) {\n client.tools.setInitial(initial);\n } else {\n client.tools.list();\n }\n }, [client, initial]);\n return tools;\n}\n\nexport function useOptionalNoyaTools(initial?: NoyaAPI.Tool[]) {\n const client = useNoyaClientOrFallback();\n const tools = useSelector(client.tools$);\n return useMemo(\n () =>\n tools.loading && initial ? { loading: true, tools: initial } : tools,\n [initial, tools]\n );\n}\n\nexport function useNoyaTags() {\n const client = useNoyaClient();\n const tags = useSelector(client.tags$);\n useEffect(() => {\n client.tags.read();\n }, [client]);\n return tags;\n}\n\nexport function useOptionalNoyaTags() {\n const client = useNoyaClientOrFallback();\n const tags = useSelector(client.tags$);\n useEffect(() => {\n client.tags.read();\n }, [client]);\n return tags;\n}\n\nexport function useNoyaCreators() {\n const client = useNoyaClientOrFallback();\n const creators = useSelector(client.creators$);\n useEffect(() => {\n client.creators.read();\n }, [client]);\n return creators;\n}\n\nexport function useOptionalNoyaCreators() {\n const client = useNoyaClientOrFallback();\n const creators = useSelector(client.creators$);\n useEffect(() => {\n client.creators.read();\n }, [client]);\n return creators;\n}\n\nexport function useNoyaAssets(fileId?: string) {\n const client = useNoyaClientOrFallback();\n const empty = useMemo(() => ({ assets: [], loading: true }), []);\n const assets = useSelector(\n fileId ? client.assetsByFileId$[fileId] : client.assets$\n );\n return assets ?? empty;\n}\n\nexport function useNoyaSession() {\n const session = useSelector(useNoyaClient().session$);\n return session;\n}\n\nexport function useOptionalNoyaSession() {\n const session = useSelector(useOptionalNoyaClient()?.session$);\n return session;\n}\n\nexport function useNoyaBilling() {\n const billing = useSelector(useNoyaClient().billing$);\n return billing;\n}\n\nexport function useNoyaEmailLists() {\n const emailLists = useSelector(useNoyaClient().emailLists$);\n return emailLists;\n}\n\nexport function useNoyaUserData() {\n const userData = useSelector(useNoyaClientOrFallback().userData$);\n return userData;\n}\n\nexport function useOptionalNoyaUserData() {\n const userData = useSelector(useNoyaClientOrFallback().userData$);\n return userData;\n}\n\nexport function useIsBeta() {\n const userData = useOptionalNoyaUserData();\n return userData?.userData?.beta ?? false;\n}\n\nexport function useMetadata<T extends NoyaAPI.Json>(key: string) {\n const { userData } = useNoyaUserData();\n const metadata = userData?.metadata || [];\n const metadataItem = metadata.find((item) => item.key === key);\n return metadataItem?.value as T | undefined;\n}\n\nexport function useGeneratedComponentNames(name: string) {\n const key = name.trim().toLowerCase();\n const { generatedNames$, loadingNames$ } = useNoyaClientOrFallback();\n const result = useSelector(\n () => generatedNames$[key].get() as NoyaAPI.GeneratedName[] | undefined\n );\n const loading = useSelector(() => loadingNames$[key].get());\n return useMemo(() => ({ names: result ?? [], loading }), [loading, result]);\n}\n\nexport function useGeneratedComponentDescriptions() {\n const { generatedDescriptions$, loadingDescriptions$ } =\n useNoyaClientOrFallback();\n const descriptions = useSelector(generatedDescriptions$);\n const loading = useSelector(loadingDescriptions$);\n return useMemo(() => ({ descriptions, loading }), [loading, descriptions]);\n}\n\nexport function useGeneratedComponentDescription(name: string) {\n const key = name.trim().toLowerCase();\n const { generatedDescriptions$, loadingDescriptions$ } =\n useNoyaClientOrFallback();\n const description = useSelector(\n () => generatedDescriptions$[key].get() as string | undefined\n );\n const loading = useSelector(() => loadingDescriptions$[key].get());\n return useMemo(() => ({ description, loading }), [loading, description]);\n}\n\nexport function useRandomImages() {\n const { randomImages$, loadingRandomImages$ } = useNoyaClientOrFallback();\n const images = useSelector(randomImages$);\n const loading = useSelector(loadingRandomImages$);\n return useMemo(() => ({ images, loading }), [loading, images]);\n}\n\nexport function useRandomIcons() {\n const { randomIcons$, loadingRandomIcons$ } = useNoyaClientOrFallback();\n const icons = useSelector(randomIcons$);\n const loading = useSelector(loadingRandomIcons$);\n return useMemo(() => ({ icons, loading }), [loading, icons]);\n}\n\nexport function useNetworkRequests() {\n const { requests$ } = useNoyaClientOrFallback();\n const requests = useSelector(requests$) as NoyaAPI.RequestSnapshot[];\n return requests;\n}\n\nexport type EnhancedGeneratedPageName = NoyaAPI.GeneratedName & {\n index: number;\n type: \"suggestion\";\n};\n\nexport function useGeneratedPageNames(): EnhancedGeneratedPageName[] {\n const { generatedPageNames$ } = useNoyaClientOrFallback();\n const names = useSelector(generatedPageNames$) as NoyaAPI.GeneratedName[];\n\n const namesWithDefaultsAndTypes = useMemo(() => {\n const rangeArray = range(0, GENERATED_PAGE_NAME_COUNT);\n\n // Fill any empty slots with default names in the 'loading' state\n const withDefaults = rangeArray.map((index): NoyaAPI.GeneratedName => {\n const name = names[index];\n return name ?? { name: `Page ${index + 1}`, loading: true, key: \"\" };\n });\n\n return withDefaults.map(\n (name, index): EnhancedGeneratedPageName => ({\n ...name,\n index,\n type: \"suggestion\",\n })\n );\n }, [names]);\n\n // Take the first 3\n return namesWithDefaultsAndTypes.slice(0, 3);\n}\n\nexport function useGeneratedPageComponentNames(): EnhancedGeneratedPageName[] {\n const { generatedPageComponentNames$: generatedComponentNames$ } =\n useNoyaClientOrFallback();\n const names = useSelector(\n generatedComponentNames$\n ) as NoyaAPI.GeneratedName[];\n\n const namesWithDefaultsAndTypes = useMemo(() => {\n const rangeArray = range(0, GENERATED_PAGE_NAME_COUNT);\n\n // Fill any empty slots with default names in the 'loading' state\n const withDefaults = rangeArray.map((index): NoyaAPI.GeneratedName => {\n const name = names[index];\n return name ?? { name: `Component ${index + 1}`, loading: true, key: \"\" };\n });\n\n return withDefaults.map(\n (name, index): EnhancedGeneratedPageName => ({\n ...name,\n index,\n type: \"suggestion\",\n })\n );\n }, [names]);\n\n // Take the first 3\n return namesWithDefaultsAndTypes.slice(0, 3);\n}\n"],"mappings":"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","names":["useMemo","file","useMemo"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/react/context.ts","../src/react/hooks.ts"],"sourcesContent":["export * from \"@noya-app/noya-api\";\nexport * from \"./react/context\";\nexport * from \"./react/hooks\";\n","import { NoyaAPI } from \"@noya-app/noya-api\";\nimport { createContext, useContext, useMemo } from \"react\";\n\ntype NoyaAPIContextValue = NoyaAPI.Client;\n\nconst NoyaAPIContext = createContext<NoyaAPIContextValue | undefined>(\n undefined\n);\n\nexport const NoyaAPIProvider: React.Provider<NoyaAPIContextValue | undefined> =\n NoyaAPIContext.Provider;\n\nexport function useNoyaClient(): NoyaAPIContextValue {\n const value = useContext(NoyaAPIContext);\n\n if (!value) {\n throw new Error(\"Missing NoyaAPIContextValue\");\n }\n\n return value;\n}\n\nexport function useOptionalNoyaClient(): NoyaAPIContextValue | undefined {\n return useContext(NoyaAPIContext);\n}\n\n/**\n * If there's no client, fallback to a memory client.\n * We do this to safely render content when logged out (e.g. when sharing).\n */\nexport function useNoyaClientOrFallback(): NoyaAPIContextValue {\n const value = useContext(NoyaAPIContext);\n\n const memoryClient = useMemo(() => {\n return new NoyaAPI.Client({\n networkClient: new NoyaAPI.MemoryClient(),\n });\n }, []);\n\n return value ?? memoryClient;\n}\n","import { useSelector } from \"@legendapp/state/react\";\nimport { GENERATED_PAGE_NAME_COUNT, NoyaAPI } from \"@noya-app/noya-api\";\nimport { range } from \"@noya-app/noya-utils\";\nimport { useEffect, useMemo, useRef } from \"react\";\nimport {\n useNoyaClient,\n useNoyaClientOrFallback,\n useOptionalNoyaClient,\n} from \"./context\";\n\nexport function useNoyaFiles(): {\n files: NoyaAPI.File[];\n loading: NoyaAPI.DataLoadingState;\n} {\n const client = useNoyaClientOrFallback();\n const files = useSelector(client.files$);\n const session = useSelector(useNoyaClient().session$);\n\n useEffect(() => {\n if (!session) return;\n\n if (\n files.loading === \"notStarted\" ||\n files.loading === \"populatedOnServer\"\n ) {\n client.files.refetch();\n }\n }, [client, files.loading, session]);\n\n return files;\n}\n\nexport function useNoyaIsOwnFile(fileId?: string) {\n const client = useNoyaClientOrFallback();\n const files = useSelector(client.files$);\n const session = useSelector(client.session$);\n const file = files.files.find((file) => file.id === fileId);\n return file?.userId === session?.user.id;\n}\n\nexport function useNoyaTools(initial?: NoyaAPI.Tool[]) {\n const didInitialize = useRef(false);\n const client = useNoyaClientOrFallback();\n const tools = useSelector(client.tools$);\n useEffect(() => {\n if (didInitialize.current) return;\n didInitialize.current = true;\n\n if (initial) {\n client.tools.setInitial(initial);\n } else {\n client.tools.list();\n }\n }, [client, initial]);\n return tools;\n}\n\nexport function useOptionalNoyaTools(initial?: NoyaAPI.Tool[]) {\n const client = useNoyaClientOrFallback();\n const tools = useSelector(client.tools$);\n return useMemo(\n () =>\n tools.loading && initial ? { loading: true, tools: initial } : tools,\n [initial, tools]\n );\n}\n\nexport function useNoyaTags() {\n const client = useNoyaClient();\n const tags = useSelector(client.tags$);\n useEffect(() => {\n client.tags.read();\n }, [client]);\n return tags;\n}\n\nexport function useOptionalNoyaTags() {\n const client = useNoyaClientOrFallback();\n const tags = useSelector(client.tags$);\n useEffect(() => {\n client.tags.read();\n }, [client]);\n return tags;\n}\n\nexport function useNoyaCreators() {\n const client = useNoyaClientOrFallback();\n const creators = useSelector(client.creators$);\n useEffect(() => {\n client.creators.read();\n }, [client]);\n return creators;\n}\n\nexport function useOptionalNoyaCreators() {\n const client = useNoyaClientOrFallback();\n const creators = useSelector(client.creators$);\n useEffect(() => {\n client.creators.read();\n }, [client]);\n return creators;\n}\n\nexport function useNoyaAssets(fileId?: string) {\n const client = useNoyaClientOrFallback();\n const empty = useMemo(() => ({ assets: [], loading: true }), []);\n const assets = useSelector(\n fileId ? client.assetsByFileId$[fileId] : client.assets$\n );\n return assets ?? empty;\n}\n\nexport function useNoyaSession() {\n const session = useSelector(useNoyaClient().session$);\n return session;\n}\n\nexport function useOptionalNoyaSession() {\n const session = useSelector(useOptionalNoyaClient()?.session$);\n return session;\n}\n\nexport function useNoyaBilling() {\n const billing = useSelector(useNoyaClient().billing$);\n return billing;\n}\n\nexport function useNoyaEmailLists() {\n const emailLists = useSelector(useNoyaClient().emailLists$);\n return emailLists;\n}\n\nexport function useNoyaUserData() {\n const userData = useSelector(useNoyaClientOrFallback().userData$);\n return userData;\n}\n\nexport function useOptionalNoyaUserData() {\n const userData = useSelector(useNoyaClientOrFallback().userData$);\n return userData;\n}\n\nexport function useIsBeta() {\n const userData = useOptionalNoyaUserData();\n return userData?.userData?.beta ?? false;\n}\n\nexport function useMetadata<T extends NoyaAPI.Json>(key: string) {\n const { userData } = useNoyaUserData();\n const metadata = userData?.metadata || [];\n const metadataItem = metadata.find((item) => item.key === key);\n return metadataItem?.value as T | undefined;\n}\n\nexport function useGeneratedComponentNames(name: string) {\n const key = name.trim().toLowerCase();\n const { generatedNames$, loadingNames$ } = useNoyaClientOrFallback();\n const result = useSelector(\n () => generatedNames$[key].get() as NoyaAPI.GeneratedName[] | undefined\n );\n const loading = useSelector(() => loadingNames$[key].get());\n return useMemo(() => ({ names: result ?? [], loading }), [loading, result]);\n}\n\nexport function useGeneratedComponentDescriptions() {\n const { generatedDescriptions$, loadingDescriptions$ } =\n useNoyaClientOrFallback();\n const descriptions = useSelector(generatedDescriptions$);\n const loading = useSelector(loadingDescriptions$);\n return useMemo(() => ({ descriptions, loading }), [loading, descriptions]);\n}\n\nexport function useGeneratedComponentDescription(name: string) {\n const key = name.trim().toLowerCase();\n const { generatedDescriptions$, loadingDescriptions$ } =\n useNoyaClientOrFallback();\n const description = useSelector(\n () => generatedDescriptions$[key].get() as string | undefined\n );\n const loading = useSelector(() => loadingDescriptions$[key].get());\n return useMemo(() => ({ description, loading }), [loading, description]);\n}\n\nexport function useRandomImages() {\n const { randomImages$, loadingRandomImages$ } = useNoyaClientOrFallback();\n const images = useSelector(randomImages$);\n const loading = useSelector(loadingRandomImages$);\n return useMemo(() => ({ images, loading }), [loading, images]);\n}\n\nexport function useRandomIcons() {\n const { randomIcons$, loadingRandomIcons$ } = useNoyaClientOrFallback();\n const icons = useSelector(randomIcons$);\n const loading = useSelector(loadingRandomIcons$);\n return useMemo(() => ({ icons, loading }), [loading, icons]);\n}\n\nexport function useNetworkRequests() {\n const { requests$ } = useNoyaClientOrFallback();\n const requests = useSelector(requests$) as NoyaAPI.RequestSnapshot[];\n return requests;\n}\n\nexport type EnhancedGeneratedPageName = NoyaAPI.GeneratedName & {\n index: number;\n type: \"suggestion\";\n};\n\nexport function useGeneratedPageNames(): EnhancedGeneratedPageName[] {\n const { generatedPageNames$ } = useNoyaClientOrFallback();\n const names = useSelector(generatedPageNames$) as NoyaAPI.GeneratedName[];\n\n const namesWithDefaultsAndTypes = useMemo(() => {\n const rangeArray = range(0, GENERATED_PAGE_NAME_COUNT);\n\n // Fill any empty slots with default names in the 'loading' state\n const withDefaults = rangeArray.map((index): NoyaAPI.GeneratedName => {\n const name = names[index];\n return name ?? { name: `Page ${index + 1}`, loading: true, key: \"\" };\n });\n\n return withDefaults.map(\n (name, index): EnhancedGeneratedPageName => ({\n ...name,\n index,\n type: \"suggestion\",\n })\n );\n }, [names]);\n\n // Take the first 3\n return namesWithDefaultsAndTypes.slice(0, 3);\n}\n\nexport function useGeneratedPageComponentNames(): EnhancedGeneratedPageName[] {\n const { generatedPageComponentNames$: generatedComponentNames$ } =\n useNoyaClientOrFallback();\n const names = useSelector(\n generatedComponentNames$\n ) as NoyaAPI.GeneratedName[];\n\n const namesWithDefaultsAndTypes = useMemo(() => {\n const rangeArray = range(0, GENERATED_PAGE_NAME_COUNT);\n\n // Fill any empty slots with default names in the 'loading' state\n const withDefaults = rangeArray.map((index): NoyaAPI.GeneratedName => {\n const name = names[index];\n return name ?? { name: `Component ${index + 1}`, loading: true, key: \"\" };\n });\n\n return withDefaults.map(\n (name, index): EnhancedGeneratedPageName => ({\n ...name,\n index,\n type: \"suggestion\",\n })\n );\n }, [names]);\n\n // Take the first 3\n return namesWithDefaultsAndTypes.slice(0, 3);\n}\n"],"mappings":";AAAA,cAAc;;;ACAd,SAAS,eAAe;AACxB,SAAS,eAAe,YAAY,eAAe;AAInD,IAAM,iBAAiB;AAAA,EACrB;AACF;AAEO,IAAM,kBACX,eAAe;AAEV,SAAS,gBAAqC;AACnD,QAAM,QAAQ,WAAW,cAAc;AAEvC,MAAI,CAAC,OAAO;AACV,UAAM,IAAI,MAAM,6BAA6B;AAAA,EAC/C;AAEA,SAAO;AACT;AAEO,SAAS,wBAAyD;AACvE,SAAO,WAAW,cAAc;AAClC;AAMO,SAAS,0BAA+C;AAC7D,QAAM,QAAQ,WAAW,cAAc;AAEvC,QAAM,eAAe,QAAQ,MAAM;AACjC,WAAO,IAAI,QAAQ,OAAO;AAAA,MACxB,eAAe,IAAI,QAAQ,aAAa;AAAA,IAC1C,CAAC;AAAA,EACH,GAAG,CAAC,CAAC;AAEL,SAAO,SAAS;AAClB;;;ACxCA,SAAS,mBAAmB;AAC5B,SAAS,iCAA0C;AACnD,SAAS,aAAa;AACtB,SAAS,WAAW,WAAAA,UAAS,cAAc;AAOpC,SAAS,eAGd;AACA,QAAM,SAAS,wBAAwB;AACvC,QAAM,QAAQ,YAAY,OAAO,MAAM;AACvC,QAAM,UAAU,YAAY,cAAc,EAAE,QAAQ;AAEpD,YAAU,MAAM;AACd,QAAI,CAAC;AAAS;AAEd,QACE,MAAM,YAAY,gBAClB,MAAM,YAAY,qBAClB;AACA,aAAO,MAAM,QAAQ;AAAA,IACvB;AAAA,EACF,GAAG,CAAC,QAAQ,MAAM,SAAS,OAAO,CAAC;AAEnC,SAAO;AACT;AAEO,SAAS,iBAAiB,QAAiB;AAChD,QAAM,SAAS,wBAAwB;AACvC,QAAM,QAAQ,YAAY,OAAO,MAAM;AACvC,QAAM,UAAU,YAAY,OAAO,QAAQ;AAC3C,QAAM,OAAO,MAAM,MAAM,KAAK,CAACC,UAASA,MAAK,OAAO,MAAM;AAC1D,SAAO,MAAM,WAAW,SAAS,KAAK;AACxC;AAEO,SAAS,aAAa,SAA0B;AACrD,QAAM,gBAAgB,OAAO,KAAK;AAClC,QAAM,SAAS,wBAAwB;AACvC,QAAM,QAAQ,YAAY,OAAO,MAAM;AACvC,YAAU,MAAM;AACd,QAAI,cAAc;AAAS;AAC3B,kBAAc,UAAU;AAExB,QAAI,SAAS;AACX,aAAO,MAAM,WAAW,OAAO;AAAA,IACjC,OAAO;AACL,aAAO,MAAM,KAAK;AAAA,IACpB;AAAA,EACF,GAAG,CAAC,QAAQ,OAAO,CAAC;AACpB,SAAO;AACT;AAEO,SAAS,qBAAqB,SAA0B;AAC7D,QAAM,SAAS,wBAAwB;AACvC,QAAM,QAAQ,YAAY,OAAO,MAAM;AACvC,SAAOC;AAAA,IACL,MACE,MAAM,WAAW,UAAU,EAAE,SAAS,MAAM,OAAO,QAAQ,IAAI;AAAA,IACjE,CAAC,SAAS,KAAK;AAAA,EACjB;AACF;AAEO,SAAS,cAAc;AAC5B,QAAM,SAAS,cAAc;AAC7B,QAAM,OAAO,YAAY,OAAO,KAAK;AACrC,YAAU,MAAM;AACd,WAAO,KAAK,KAAK;AAAA,EACnB,GAAG,CAAC,MAAM,CAAC;AACX,SAAO;AACT;AAEO,SAAS,sBAAsB;AACpC,QAAM,SAAS,wBAAwB;AACvC,QAAM,OAAO,YAAY,OAAO,KAAK;AACrC,YAAU,MAAM;AACd,WAAO,KAAK,KAAK;AAAA,EACnB,GAAG,CAAC,MAAM,CAAC;AACX,SAAO;AACT;AAEO,SAAS,kBAAkB;AAChC,QAAM,SAAS,wBAAwB;AACvC,QAAM,WAAW,YAAY,OAAO,SAAS;AAC7C,YAAU,MAAM;AACd,WAAO,SAAS,KAAK;AAAA,EACvB,GAAG,CAAC,MAAM,CAAC;AACX,SAAO;AACT;AAEO,SAAS,0BAA0B;AACxC,QAAM,SAAS,wBAAwB;AACvC,QAAM,WAAW,YAAY,OAAO,SAAS;AAC7C,YAAU,MAAM;AACd,WAAO,SAAS,KAAK;AAAA,EACvB,GAAG,CAAC,MAAM,CAAC;AACX,SAAO;AACT;AAEO,SAAS,cAAc,QAAiB;AAC7C,QAAM,SAAS,wBAAwB;AACvC,QAAM,QAAQA,SAAQ,OAAO,EAAE,QAAQ,CAAC,GAAG,SAAS,KAAK,IAAI,CAAC,CAAC;AAC/D,QAAM,SAAS;AAAA,IACb,SAAS,OAAO,gBAAgB,MAAM,IAAI,OAAO;AAAA,EACnD;AACA,SAAO,UAAU;AACnB;AAEO,SAAS,iBAAiB;AAC/B,QAAM,UAAU,YAAY,cAAc,EAAE,QAAQ;AACpD,SAAO;AACT;AAEO,SAAS,yBAAyB;AACvC,QAAM,UAAU,YAAY,sBAAsB,GAAG,QAAQ;AAC7D,SAAO;AACT;AAEO,SAAS,iBAAiB;AAC/B,QAAM,UAAU,YAAY,cAAc,EAAE,QAAQ;AACpD,SAAO;AACT;AAEO,SAAS,oBAAoB;AAClC,QAAM,aAAa,YAAY,cAAc,EAAE,WAAW;AAC1D,SAAO;AACT;AAEO,SAAS,kBAAkB;AAChC,QAAM,WAAW,YAAY,wBAAwB,EAAE,SAAS;AAChE,SAAO;AACT;AAEO,SAAS,0BAA0B;AACxC,QAAM,WAAW,YAAY,wBAAwB,EAAE,SAAS;AAChE,SAAO;AACT;AAEO,SAAS,YAAY;AAC1B,QAAM,WAAW,wBAAwB;AACzC,SAAO,UAAU,UAAU,QAAQ;AACrC;AAEO,SAAS,YAAoC,KAAa;AAC/D,QAAM,EAAE,SAAS,IAAI,gBAAgB;AACrC,QAAM,WAAW,UAAU,YAAY,CAAC;AACxC,QAAM,eAAe,SAAS,KAAK,CAAC,SAAS,KAAK,QAAQ,GAAG;AAC7D,SAAO,cAAc;AACvB;AAEO,SAAS,2BAA2B,MAAc;AACvD,QAAM,MAAM,KAAK,KAAK,EAAE,YAAY;AACpC,QAAM,EAAE,iBAAiB,cAAc,IAAI,wBAAwB;AACnE,QAAM,SAAS;AAAA,IACb,MAAM,gBAAgB,GAAG,EAAE,IAAI;AAAA,EACjC;AACA,QAAM,UAAU,YAAY,MAAM,cAAc,GAAG,EAAE,IAAI,CAAC;AAC1D,SAAOA,SAAQ,OAAO,EAAE,OAAO,UAAU,CAAC,GAAG,QAAQ,IAAI,CAAC,SAAS,MAAM,CAAC;AAC5E;AAEO,SAAS,oCAAoC;AAClD,QAAM,EAAE,wBAAwB,qBAAqB,IACnD,wBAAwB;AAC1B,QAAM,eAAe,YAAY,sBAAsB;AACvD,QAAM,UAAU,YAAY,oBAAoB;AAChD,SAAOA,SAAQ,OAAO,EAAE,cAAc,QAAQ,IAAI,CAAC,SAAS,YAAY,CAAC;AAC3E;AAEO,SAAS,iCAAiC,MAAc;AAC7D,QAAM,MAAM,KAAK,KAAK,EAAE,YAAY;AACpC,QAAM,EAAE,wBAAwB,qBAAqB,IACnD,wBAAwB;AAC1B,QAAM,cAAc;AAAA,IAClB,MAAM,uBAAuB,GAAG,EAAE,IAAI;AAAA,EACxC;AACA,QAAM,UAAU,YAAY,MAAM,qBAAqB,GAAG,EAAE,IAAI,CAAC;AACjE,SAAOA,SAAQ,OAAO,EAAE,aAAa,QAAQ,IAAI,CAAC,SAAS,WAAW,CAAC;AACzE;AAEO,SAAS,kBAAkB;AAChC,QAAM,EAAE,eAAe,qBAAqB,IAAI,wBAAwB;AACxE,QAAM,SAAS,YAAY,aAAa;AACxC,QAAM,UAAU,YAAY,oBAAoB;AAChD,SAAOA,SAAQ,OAAO,EAAE,QAAQ,QAAQ,IAAI,CAAC,SAAS,MAAM,CAAC;AAC/D;AAEO,SAAS,iBAAiB;AAC/B,QAAM,EAAE,cAAc,oBAAoB,IAAI,wBAAwB;AACtE,QAAM,QAAQ,YAAY,YAAY;AACtC,QAAM,UAAU,YAAY,mBAAmB;AAC/C,SAAOA,SAAQ,OAAO,EAAE,OAAO,QAAQ,IAAI,CAAC,SAAS,KAAK,CAAC;AAC7D;AAEO,SAAS,qBAAqB;AACnC,QAAM,EAAE,UAAU,IAAI,wBAAwB;AAC9C,QAAM,WAAW,YAAY,SAAS;AACtC,SAAO;AACT;AAOO,SAAS,wBAAqD;AACnE,QAAM,EAAE,oBAAoB,IAAI,wBAAwB;AACxD,QAAM,QAAQ,YAAY,mBAAmB;AAE7C,QAAM,4BAA4BA,SAAQ,MAAM;AAC9C,UAAM,aAAa,MAAM,GAAG,yBAAyB;AAGrD,UAAM,eAAe,WAAW,IAAI,CAAC,UAAiC;AACpE,YAAM,OAAO,MAAM,KAAK;AACxB,aAAO,QAAQ,EAAE,MAAM,QAAQ,QAAQ,KAAK,SAAS,MAAM,KAAK,GAAG;AAAA,IACrE,CAAC;AAED,WAAO,aAAa;AAAA,MAClB,CAAC,MAAM,WAAsC;AAAA,QAC3C,GAAG;AAAA,QACH;AAAA,QACA,MAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF,GAAG,CAAC,KAAK,CAAC;AAGV,SAAO,0BAA0B,MAAM,GAAG,CAAC;AAC7C;AAEO,SAAS,iCAA8D;AAC5E,QAAM,EAAE,8BAA8B,yBAAyB,IAC7D,wBAAwB;AAC1B,QAAM,QAAQ;AAAA,IACZ;AAAA,EACF;AAEA,QAAM,4BAA4BA,SAAQ,MAAM;AAC9C,UAAM,aAAa,MAAM,GAAG,yBAAyB;AAGrD,UAAM,eAAe,WAAW,IAAI,CAAC,UAAiC;AACpE,YAAM,OAAO,MAAM,KAAK;AACxB,aAAO,QAAQ,EAAE,MAAM,aAAa,QAAQ,KAAK,SAAS,MAAM,KAAK,GAAG;AAAA,IAC1E,CAAC;AAED,WAAO,aAAa;AAAA,MAClB,CAAC,MAAM,WAAsC;AAAA,QAC3C,GAAG;AAAA,QACH;AAAA,QACA,MAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF,GAAG,CAAC,KAAK,CAAC;AAGV,SAAO,0BAA0B,MAAM,GAAG,CAAC;AAC7C;","names":["useMemo","file","useMemo"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@noya-app/noya-api-client-react",
3
- "version": "0.1.19",
3
+ "version": "0.1.20",
4
4
  "main": "./dist/index.js",
5
5
  "module": "./dist/index.mjs",
6
6
  "types": "./dist/index.d.ts",
@@ -10,7 +10,7 @@
10
10
  },
11
11
  "dependencies": {
12
12
  "@legendapp/state": "^2.1.1",
13
- "@noya-app/noya-api": "0.1.19",
13
+ "@noya-app/noya-api": "0.1.20",
14
14
  "@noya-app/noya-utils": "0.1.2"
15
15
  },
16
16
  "peerDependencies": {
package/dist/index.d.mts DELETED
@@ -1,301 +0,0 @@
1
- import { NoyaAPI } from '@noya-app/noya-api';
2
- export * from '@noya-app/noya-api';
3
-
4
- type NoyaAPIContextValue = NoyaAPI.Client;
5
- declare const NoyaAPIProvider: React.Provider<NoyaAPIContextValue | undefined>;
6
- declare function useNoyaClient(): NoyaAPIContextValue;
7
- declare function useOptionalNoyaClient(): NoyaAPIContextValue | undefined;
8
- /**
9
- * If there's no client, fallback to a memory client.
10
- * We do this to safely render content when logged out (e.g. when sharing).
11
- */
12
- declare function useNoyaClientOrFallback(): NoyaAPIContextValue;
13
-
14
- declare function useNoyaFiles(): {
15
- files: NoyaAPI.File[];
16
- loading: NoyaAPI.DataLoadingState;
17
- };
18
- declare function useNoyaIsOwnFile(fileId?: string): boolean;
19
- declare function useNoyaTools(initial?: NoyaAPI.Tool[]): {
20
- tools: {
21
- addedById?: string | undefined;
22
- name: string;
23
- url: string;
24
- id: string;
25
- description: string | null;
26
- tags: {
27
- toolCount?: number | undefined;
28
- name: string;
29
- id: string;
30
- rank: number;
31
- }[];
32
- createdAt: string;
33
- updatedAt: string;
34
- slug: string | null;
35
- tagline: string | null;
36
- assets: string[];
37
- homepageUrl: string | null;
38
- platform: "noya" | "external";
39
- verificationStatus: "pending" | "approved" | "rejected";
40
- creator: {
41
- name: string;
42
- id: string;
43
- image: string | null;
44
- slug: string | null;
45
- } | null;
46
- }[];
47
- loading: boolean;
48
- };
49
- declare function useOptionalNoyaTools(initial?: NoyaAPI.Tool[]): {
50
- tools: {
51
- addedById?: string | undefined;
52
- name: string;
53
- url: string;
54
- id: string;
55
- description: string | null;
56
- tags: {
57
- toolCount?: number | undefined;
58
- name: string;
59
- id: string;
60
- rank: number;
61
- }[];
62
- createdAt: string;
63
- updatedAt: string;
64
- slug: string | null;
65
- tagline: string | null;
66
- assets: string[];
67
- homepageUrl: string | null;
68
- platform: "noya" | "external";
69
- verificationStatus: "pending" | "approved" | "rejected";
70
- creator: {
71
- name: string;
72
- id: string;
73
- image: string | null;
74
- slug: string | null;
75
- } | null;
76
- }[];
77
- loading: boolean;
78
- };
79
- declare function useNoyaTags(): {
80
- tags: {
81
- toolCount?: number | undefined;
82
- name: string;
83
- id: string;
84
- rank: number;
85
- }[];
86
- loading: boolean;
87
- };
88
- declare function useOptionalNoyaTags(): {
89
- tags: {
90
- toolCount?: number | undefined;
91
- name: string;
92
- id: string;
93
- rank: number;
94
- }[];
95
- loading: boolean;
96
- };
97
- declare function useNoyaCreators(): {
98
- creators: {
99
- name: string;
100
- id: string;
101
- image: string | null;
102
- slug: string | null;
103
- }[];
104
- loading: boolean;
105
- };
106
- declare function useOptionalNoyaCreators(): {
107
- creators: {
108
- name: string;
109
- id: string;
110
- image: string | null;
111
- slug: string | null;
112
- }[];
113
- loading: boolean;
114
- };
115
- declare function useNoyaAssets(fileId?: string): {
116
- assets: {
117
- id: string;
118
- }[];
119
- loading: boolean;
120
- };
121
- declare function useNoyaSession(): {
122
- user: {
123
- name: string | null;
124
- id: string;
125
- image: string | null;
126
- email: string | null;
127
- };
128
- expires: string;
129
- } | null;
130
- declare function useOptionalNoyaSession(): {
131
- user: {
132
- name: string | null;
133
- id: string;
134
- image: string | null;
135
- email: string | null;
136
- };
137
- expires: string;
138
- } | null | undefined;
139
- declare function useNoyaBilling(): {
140
- subscriptions: {
141
- items: {
142
- id: string;
143
- created: string;
144
- price: {
145
- type: string;
146
- active: boolean;
147
- id: string;
148
- currency: string;
149
- nickname: string | null;
150
- recurringInterval: string;
151
- recurringIntervalCount: number;
152
- unitAmount: number;
153
- created: string;
154
- url?: string | undefined;
155
- };
156
- quantity: number;
157
- }[];
158
- id: string;
159
- status: string;
160
- currency: string;
161
- created: string;
162
- cancelAtPeriodEnd: boolean;
163
- currentPeriodEnd: string;
164
- currentPeriodStart: string;
165
- cancelAt: string | null;
166
- canceledAt: string | null;
167
- endedAt: string | null;
168
- trialEnd: string | null;
169
- trialStart: string | null;
170
- }[];
171
- portalUrl: string | null;
172
- availableProducts: {
173
- active: boolean;
174
- name: string;
175
- id: string;
176
- description: string | null;
177
- created: string;
178
- prices: {
179
- type: string;
180
- active: boolean;
181
- id: string;
182
- currency: string;
183
- nickname: string | null;
184
- recurringInterval: string;
185
- recurringIntervalCount: number;
186
- unitAmount: number;
187
- created: string;
188
- url?: string | undefined;
189
- }[];
190
- }[];
191
- } & {
192
- loading: boolean;
193
- };
194
- declare function useNoyaEmailLists(): {
195
- emailLists: {
196
- name: string;
197
- url: string;
198
- id: string;
199
- description: string | null;
200
- optIn: boolean;
201
- }[];
202
- loading: boolean;
203
- };
204
- declare function useNoyaUserData(): {
205
- userData: {
206
- metadata: {
207
- key: string;
208
- url: string;
209
- value?: unknown;
210
- }[];
211
- emailLists: {
212
- name: string;
213
- url: string;
214
- id: string;
215
- description: string | null;
216
- optIn: boolean;
217
- }[];
218
- experiments: {};
219
- beta?: boolean | undefined;
220
- } | undefined;
221
- loading: boolean;
222
- };
223
- declare function useOptionalNoyaUserData(): {
224
- userData: {
225
- metadata: {
226
- key: string;
227
- url: string;
228
- value?: unknown;
229
- }[];
230
- emailLists: {
231
- name: string;
232
- url: string;
233
- id: string;
234
- description: string | null;
235
- optIn: boolean;
236
- }[];
237
- experiments: {};
238
- beta?: boolean | undefined;
239
- } | undefined;
240
- loading: boolean;
241
- };
242
- declare function useIsBeta(): boolean;
243
- declare function useMetadata<T extends NoyaAPI.Json>(key: string): T | undefined;
244
- declare function useGeneratedComponentNames(name: string): {
245
- names: {
246
- name: string;
247
- }[];
248
- loading: boolean;
249
- };
250
- declare function useGeneratedComponentDescriptions(): {
251
- descriptions: Record<string, string>;
252
- loading: Record<string, boolean>;
253
- };
254
- declare function useGeneratedComponentDescription(name: string): {
255
- description: string | undefined;
256
- loading: boolean;
257
- };
258
- declare function useRandomImages(): {
259
- images: Record<string, {
260
- url: string;
261
- source: {
262
- name: string;
263
- url: string;
264
- };
265
- metadata: {
266
- color: string;
267
- };
268
- user: {
269
- name: string;
270
- url: string;
271
- };
272
- }>;
273
- loading: Record<string, boolean>;
274
- };
275
- declare function useRandomIcons(): {
276
- icons: Record<string, {
277
- url: string;
278
- data: string;
279
- }>;
280
- loading: Record<string, boolean>;
281
- };
282
- declare function useNetworkRequests(): {
283
- id: number;
284
- method: string;
285
- completed: boolean;
286
- abort: () => void;
287
- aborted: boolean;
288
- isStreaming: boolean;
289
- url: string;
290
- status: number | undefined;
291
- attempt: number;
292
- abortStream: () => void;
293
- }[];
294
- type EnhancedGeneratedPageName = NoyaAPI.GeneratedName & {
295
- index: number;
296
- type: "suggestion";
297
- };
298
- declare function useGeneratedPageNames(): EnhancedGeneratedPageName[];
299
- declare function useGeneratedPageComponentNames(): EnhancedGeneratedPageName[];
300
-
301
- export { type EnhancedGeneratedPageName, NoyaAPIProvider, useGeneratedComponentDescription, useGeneratedComponentDescriptions, useGeneratedComponentNames, useGeneratedPageComponentNames, useGeneratedPageNames, useIsBeta, useMetadata, useNetworkRequests, useNoyaAssets, useNoyaBilling, useNoyaClient, useNoyaClientOrFallback, useNoyaCreators, useNoyaEmailLists, useNoyaFiles, useNoyaIsOwnFile, useNoyaSession, useNoyaTags, useNoyaTools, useNoyaUserData, useOptionalNoyaClient, useOptionalNoyaCreators, useOptionalNoyaSession, useOptionalNoyaTags, useOptionalNoyaTools, useOptionalNoyaUserData, useRandomIcons, useRandomImages };