@burdenoff/microfe-store 2026.720.1 → 2026.720.3
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.
- package/dist/components/MarkdownEditor.d.ts +12 -0
- package/dist/components/MarkdownEditor.js +117 -0
- package/dist/components/MarkdownEditor.js.map +1 -0
- package/dist/components/index.d.ts +2 -0
- package/dist/generated/global-operations.d.ts +3 -0
- package/dist/generated/global-operations.js +3 -0
- package/dist/generated/global-operations.js.map +1 -1
- package/dist/generated/global-types.d.ts +1 -0
- package/dist/generated/global-types.js.map +1 -1
- package/dist/hooks/useInstallations.d.ts +3 -0
- package/dist/hooks/useInstallations.js.map +1 -1
- package/dist/pages/AdminStoresPage.js +203 -207
- package/dist/pages/AdminStoresPage.js.map +1 -1
- package/dist/pages/AdminSubmissionsQueuePage.js +85 -84
- package/dist/pages/AdminSubmissionsQueuePage.js.map +1 -1
- package/dist/pages/InstalledAppsPage.js +11 -3
- package/dist/pages/InstalledAppsPage.js.map +1 -1
- package/dist/pages/ProductDetailPage.js +94 -93
- package/dist/pages/ProductDetailPage.js.map +1 -1
- package/package.json +2 -2
|
@@ -21,6 +21,9 @@ export interface InstalledApp {
|
|
|
21
21
|
}> | null;
|
|
22
22
|
uninstalledAt?: string | null;
|
|
23
23
|
uninstalledById?: string | null;
|
|
24
|
+
productName?: string | null;
|
|
25
|
+
productIcon?: string | null;
|
|
26
|
+
productStatus?: string | null;
|
|
24
27
|
}
|
|
25
28
|
interface InstallationsState {
|
|
26
29
|
installations: InstalledApp[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useInstallations.js","names":[],"sources":["../../src/hooks/useInstallations.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useApolloClient } from '@apollo/client/react';\nimport {\n GetMyStoreInstallationsDocument,\n GetStoreAppInstallationDocument,\n RecordAppUninstallationDocument,\n} from '../generated/global-operations';\nimport type { StoreInstallationStatus, InstallationFilterInput } from '../generated/global-types';\nimport { useStoreGraphQLWithContext } from './useStoreGraphQLWithContext';\n\nexport interface InstalledApp {\n id: string;\n productId: string;\n workspaceId: string;\n organizationId?: string | null;\n status: StoreInstallationStatus;\n installedAt: string;\n version?: string | null;\n updatedAt: string;\n workspaceName?: string | null;\n workspaceType?: string | null;\n installedById: string;\n manifest?: Record<string, unknown> | null;\n metadata?: Record<string, unknown> | null;\n context?: Record<string, unknown> | null;\n grantedPermissions?: Array<{ resource: string; level: 'read' | 'write' }> | null;\n uninstalledAt?: string | null;\n uninstalledById?: string | null;\n}\n\ninterface InstallationsState {\n installations: InstalledApp[];\n totalCount: number;\n hasMore: boolean;\n loading: boolean;\n error: Error | null;\n uninstallingIds: Set<string>;\n refetch: () => Promise<void>;\n loadMore: () => void;\n uninstall: (\n installation: Pick<InstalledApp, 'workspaceId' | 'productId'>,\n reason?: string\n ) => Promise<boolean>;\n}\n\ntype InstallationsQueryData = {\n myStoreAppInstallations: {\n total: number;\n hasMore: boolean;\n items: Array<{\n id: string;\n productId: string;\n workspaceId: string;\n organizationId?: string | null;\n status: StoreInstallationStatus;\n installedAt: string;\n version?: string | null;\n updatedAt: string;\n workspaceName?: string | null;\n workspaceType?: string | null;\n installedById: string;\n }>;\n };\n};\n\ntype UninstallMutationData = {\n recordAppUninstallation?: {\n id: string;\n } | null;\n};\n\ntype InstallationQueryData = {\n storeAppInstallation?: InstalledApp | null;\n};\n\nexport function useInstallations(options?: {\n filter?: InstallationFilterInput;\n limit?: number;\n offset?: number;\n}): InstallationsState {\n const {\n query: queryWithContext,\n mutate: mutateWithContext,\n hasOrganizationContext,\n } = useStoreGraphQLWithContext();\n const globalClient = useApolloClient();\n\n const [installations, setInstallations] = useState<InstalledApp[]>([]);\n const [allInstallations, setAllInstallations] = useState<InstalledApp[]>([]);\n const [totalCount, setTotalCount] = useState(0);\n const [hasMore, setHasMore] = useState(false);\n const [currentOffset, setCurrentOffset] = useState(options?.offset ?? 0);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n const [uninstallingIds, setUninstallingIds] = useState<Set<string>>(new Set());\n const pageSize = options?.limit ?? 50;\n\n const variables = useMemo(\n () => ({\n limit: pageSize,\n offset: options?.offset ?? 0,\n filter: options?.filter,\n }),\n [pageSize, options?.offset, options?.filter]\n );\n\n const fetchInstallations = useCallback(\n async (fetchOffset = 0, append = false) => {\n setLoading(true);\n setError(null);\n\n try {\n const fetchVars = { ...variables, offset: fetchOffset };\n let result;\n if (hasOrganizationContext) {\n result = (await queryWithContext({\n query: GetMyStoreInstallationsDocument,\n variables: fetchVars,\n fetchPolicy: 'network-only',\n })) as { data?: InstallationsQueryData };\n } else {\n result = await globalClient.query<InstallationsQueryData>({\n query: GetMyStoreInstallationsDocument,\n variables: fetchVars,\n fetchPolicy: 'network-only',\n });\n }\n\n const items = result.data?.myStoreAppInstallations?.items ?? [];\n const more = result.data?.myStoreAppInstallations?.hasMore ?? false;\n if (append) {\n setAllInstallations((prev) => [...prev, ...items]);\n } else {\n setAllInstallations(items);\n }\n setInstallations(items);\n setTotalCount(result.data?.myStoreAppInstallations?.total ?? 0);\n setHasMore(more);\n setCurrentOffset(fetchOffset);\n } catch (err) {\n setError(err as Error);\n } finally {\n setLoading(false);\n }\n },\n [globalClient, hasOrganizationContext, queryWithContext, variables]\n );\n\n useEffect(() => {\n fetchInstallations(0);\n }, [fetchInstallations]);\n\n const loadMore = useCallback(() => {\n if (!hasMore || loading) return;\n fetchInstallations(currentOffset + pageSize, true);\n }, [fetchInstallations, hasMore, loading, currentOffset, pageSize]);\n\n const uninstall = useCallback(\n async (\n installation: Pick<InstalledApp, 'workspaceId' | 'productId'>,\n reason?: string\n ): Promise<boolean> => {\n const installationKey = `${installation.workspaceId}:${installation.productId}`;\n setUninstallingIds((prev) => new Set(prev).add(installationKey));\n try {\n void reason;\n let result: { data?: UninstallMutationData };\n if (hasOrganizationContext) {\n result = (await mutateWithContext({\n mutation: RecordAppUninstallationDocument,\n variables: {\n workspaceId: installation.workspaceId,\n productId: installation.productId,\n },\n })) as { data?: UninstallMutationData };\n } else {\n result = await globalClient.mutate<UninstallMutationData>({\n mutation: RecordAppUninstallationDocument,\n variables: {\n workspaceId: installation.workspaceId,\n productId: installation.productId,\n },\n });\n }\n\n const success = Boolean(result.data?.recordAppUninstallation?.id);\n if (success) {\n await fetchInstallations();\n }\n return success;\n } catch {\n return false;\n } finally {\n setUninstallingIds((prev) => {\n const next = new Set(prev);\n next.delete(installationKey);\n return next;\n });\n }\n },\n [fetchInstallations, globalClient, hasOrganizationContext, mutateWithContext]\n );\n\n return {\n installations: allInstallations,\n totalCount,\n hasMore,\n loading,\n error,\n uninstallingIds,\n refetch: () => fetchInstallations(0),\n loadMore,\n uninstall,\n };\n}\n\nexport function useInstallation(installationId?: string) {\n const { query: queryWithContext, hasOrganizationContext } = useStoreGraphQLWithContext();\n const globalClient = useApolloClient();\n const [installation, setInstallation] = useState<InstalledApp | null>(null);\n const [loading, setLoading] = useState(Boolean(installationId));\n const [error, setError] = useState<Error | null>(null);\n\n const fetchInstallation = useCallback(async () => {\n if (!installationId) {\n setInstallation(null);\n setLoading(false);\n return;\n }\n\n setLoading(true);\n setError(null);\n\n try {\n let result;\n if (hasOrganizationContext) {\n result = (await queryWithContext({\n query: GetStoreAppInstallationDocument,\n variables: { id: installationId },\n fetchPolicy: 'network-only',\n })) as { data?: InstallationQueryData };\n } else {\n result = await globalClient.query<InstallationQueryData>({\n query: GetStoreAppInstallationDocument,\n variables: { id: installationId },\n fetchPolicy: 'network-only',\n });\n }\n\n setInstallation(result.data?.storeAppInstallation ?? null);\n } catch (err) {\n setError(err as Error);\n } finally {\n setLoading(false);\n }\n }, [globalClient, hasOrganizationContext, installationId, queryWithContext]);\n\n useEffect(() => {\n fetchInstallation();\n }, [fetchInstallation]);\n\n return {\n installation,\n loading,\n error,\n refetch: fetchInstallation,\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useInstallations.js","names":[],"sources":["../../src/hooks/useInstallations.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useApolloClient } from '@apollo/client/react';\nimport {\n GetMyStoreInstallationsDocument,\n GetStoreAppInstallationDocument,\n RecordAppUninstallationDocument,\n} from '../generated/global-operations';\nimport type { StoreInstallationStatus, InstallationFilterInput } from '../generated/global-types';\nimport { useStoreGraphQLWithContext } from './useStoreGraphQLWithContext';\n\nexport interface InstalledApp {\n id: string;\n productId: string;\n workspaceId: string;\n organizationId?: string | null;\n status: StoreInstallationStatus;\n installedAt: string;\n version?: string | null;\n updatedAt: string;\n workspaceName?: string | null;\n workspaceType?: string | null;\n installedById: string;\n manifest?: Record<string, unknown> | null;\n metadata?: Record<string, unknown> | null;\n context?: Record<string, unknown> | null;\n grantedPermissions?: Array<{ resource: string; level: 'read' | 'write' }> | null;\n uninstalledAt?: string | null;\n uninstalledById?: string | null;\n productName?: string | null;\n productIcon?: string | null;\n productStatus?: string | null;\n}\n\ninterface InstallationsState {\n installations: InstalledApp[];\n totalCount: number;\n hasMore: boolean;\n loading: boolean;\n error: Error | null;\n uninstallingIds: Set<string>;\n refetch: () => Promise<void>;\n loadMore: () => void;\n uninstall: (\n installation: Pick<InstalledApp, 'workspaceId' | 'productId'>,\n reason?: string\n ) => Promise<boolean>;\n}\n\ntype InstallationsQueryData = {\n myStoreAppInstallations: {\n total: number;\n hasMore: boolean;\n items: Array<{\n id: string;\n productId: string;\n workspaceId: string;\n organizationId?: string | null;\n status: StoreInstallationStatus;\n installedAt: string;\n version?: string | null;\n updatedAt: string;\n workspaceName?: string | null;\n workspaceType?: string | null;\n installedById: string;\n productName?: string | null;\n productIcon?: string | null;\n productStatus?: string | null;\n }>;\n };\n};\n\ntype UninstallMutationData = {\n recordAppUninstallation?: {\n id: string;\n } | null;\n};\n\ntype InstallationQueryData = {\n storeAppInstallation?: InstalledApp | null;\n};\n\nexport function useInstallations(options?: {\n filter?: InstallationFilterInput;\n limit?: number;\n offset?: number;\n}): InstallationsState {\n const {\n query: queryWithContext,\n mutate: mutateWithContext,\n hasOrganizationContext,\n } = useStoreGraphQLWithContext();\n const globalClient = useApolloClient();\n\n const [installations, setInstallations] = useState<InstalledApp[]>([]);\n const [allInstallations, setAllInstallations] = useState<InstalledApp[]>([]);\n const [totalCount, setTotalCount] = useState(0);\n const [hasMore, setHasMore] = useState(false);\n const [currentOffset, setCurrentOffset] = useState(options?.offset ?? 0);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n const [uninstallingIds, setUninstallingIds] = useState<Set<string>>(new Set());\n const pageSize = options?.limit ?? 50;\n\n const variables = useMemo(\n () => ({\n limit: pageSize,\n offset: options?.offset ?? 0,\n filter: options?.filter,\n }),\n [pageSize, options?.offset, options?.filter]\n );\n\n const fetchInstallations = useCallback(\n async (fetchOffset = 0, append = false) => {\n setLoading(true);\n setError(null);\n\n try {\n const fetchVars = { ...variables, offset: fetchOffset };\n let result;\n if (hasOrganizationContext) {\n result = (await queryWithContext({\n query: GetMyStoreInstallationsDocument,\n variables: fetchVars,\n fetchPolicy: 'network-only',\n })) as { data?: InstallationsQueryData };\n } else {\n result = await globalClient.query<InstallationsQueryData>({\n query: GetMyStoreInstallationsDocument,\n variables: fetchVars,\n fetchPolicy: 'network-only',\n });\n }\n\n const items = result.data?.myStoreAppInstallations?.items ?? [];\n const more = result.data?.myStoreAppInstallations?.hasMore ?? false;\n if (append) {\n setAllInstallations((prev) => [...prev, ...items]);\n } else {\n setAllInstallations(items);\n }\n setInstallations(items);\n setTotalCount(result.data?.myStoreAppInstallations?.total ?? 0);\n setHasMore(more);\n setCurrentOffset(fetchOffset);\n } catch (err) {\n setError(err as Error);\n } finally {\n setLoading(false);\n }\n },\n [globalClient, hasOrganizationContext, queryWithContext, variables]\n );\n\n useEffect(() => {\n fetchInstallations(0);\n }, [fetchInstallations]);\n\n const loadMore = useCallback(() => {\n if (!hasMore || loading) return;\n fetchInstallations(currentOffset + pageSize, true);\n }, [fetchInstallations, hasMore, loading, currentOffset, pageSize]);\n\n const uninstall = useCallback(\n async (\n installation: Pick<InstalledApp, 'workspaceId' | 'productId'>,\n reason?: string\n ): Promise<boolean> => {\n const installationKey = `${installation.workspaceId}:${installation.productId}`;\n setUninstallingIds((prev) => new Set(prev).add(installationKey));\n try {\n void reason;\n let result: { data?: UninstallMutationData };\n if (hasOrganizationContext) {\n result = (await mutateWithContext({\n mutation: RecordAppUninstallationDocument,\n variables: {\n workspaceId: installation.workspaceId,\n productId: installation.productId,\n },\n })) as { data?: UninstallMutationData };\n } else {\n result = await globalClient.mutate<UninstallMutationData>({\n mutation: RecordAppUninstallationDocument,\n variables: {\n workspaceId: installation.workspaceId,\n productId: installation.productId,\n },\n });\n }\n\n const success = Boolean(result.data?.recordAppUninstallation?.id);\n if (success) {\n await fetchInstallations();\n }\n return success;\n } catch {\n return false;\n } finally {\n setUninstallingIds((prev) => {\n const next = new Set(prev);\n next.delete(installationKey);\n return next;\n });\n }\n },\n [fetchInstallations, globalClient, hasOrganizationContext, mutateWithContext]\n );\n\n return {\n installations: allInstallations,\n totalCount,\n hasMore,\n loading,\n error,\n uninstallingIds,\n refetch: () => fetchInstallations(0),\n loadMore,\n uninstall,\n };\n}\n\nexport function useInstallation(installationId?: string) {\n const { query: queryWithContext, hasOrganizationContext } = useStoreGraphQLWithContext();\n const globalClient = useApolloClient();\n const [installation, setInstallation] = useState<InstalledApp | null>(null);\n const [loading, setLoading] = useState(Boolean(installationId));\n const [error, setError] = useState<Error | null>(null);\n\n const fetchInstallation = useCallback(async () => {\n if (!installationId) {\n setInstallation(null);\n setLoading(false);\n return;\n }\n\n setLoading(true);\n setError(null);\n\n try {\n let result;\n if (hasOrganizationContext) {\n result = (await queryWithContext({\n query: GetStoreAppInstallationDocument,\n variables: { id: installationId },\n fetchPolicy: 'network-only',\n })) as { data?: InstallationQueryData };\n } else {\n result = await globalClient.query<InstallationQueryData>({\n query: GetStoreAppInstallationDocument,\n variables: { id: installationId },\n fetchPolicy: 'network-only',\n });\n }\n\n setInstallation(result.data?.storeAppInstallation ?? null);\n } catch (err) {\n setError(err as Error);\n } finally {\n setLoading(false);\n }\n }, [globalClient, hasOrganizationContext, installationId, queryWithContext]);\n\n useEffect(() => {\n fetchInstallation();\n }, [fetchInstallation]);\n\n return {\n installation,\n loading,\n error,\n refetch: fetchInstallation,\n };\n}\n"],"mappings":";;;;;AAiFA,SAAgB,EAAiB,GAIV;CACrB,IAAM,EACJ,OAAO,GACP,QAAQ,GACR,8BACE,GAA4B,EAC1B,IAAe,GAAiB,EAEhC,CAAC,GAAe,KAAoB,EAAyB,EAAE,CAAC,EAChE,CAAC,GAAkB,KAAuB,EAAyB,EAAE,CAAC,EACtE,CAAC,GAAY,KAAiB,EAAS,EAAE,EACzC,CAAC,GAAS,KAAc,EAAS,GAAM,EACvC,CAAC,GAAe,KAAoB,EAAS,GAAS,UAAU,EAAE,EAClE,CAAC,GAAS,KAAc,EAAS,GAAK,EACtC,CAAC,GAAO,KAAY,EAAuB,KAAK,EAChD,CAAC,GAAiB,KAAsB,kBAAsB,IAAI,KAAK,CAAC,EACxE,IAAW,GAAS,SAAS,IAE7B,IAAY,SACT;EACL,OAAO;EACP,QAAQ,GAAS,UAAU;EAC3B,QAAQ,GAAS;EAClB,GACD;EAAC;EAAU,GAAS;EAAQ,GAAS;EAAO,CAC7C,EAEK,IAAqB,EACzB,OAAO,IAAc,GAAG,IAAS,OAAU;AAEzC,EADA,EAAW,GAAK,EAChB,EAAS,KAAK;AAEd,MAAI;GACF,IAAM,IAAY;IAAE,GAAG;IAAW,QAAQ;IAAa,EACnD;AACJ,GAOE,IAPE,IACQ,MAAM,EAAiB;IAC/B,OAAO;IACP,WAAW;IACX,aAAa;IACd,CAAC,GAEO,MAAM,EAAa,MAA8B;IACxD,OAAO;IACP,WAAW;IACX,aAAa;IACd,CAAC;GAGJ,IAAM,IAAQ,EAAO,MAAM,yBAAyB,SAAS,EAAE,EACzD,IAAO,EAAO,MAAM,yBAAyB,WAAW;AAS9D,GAPE,EADE,KACmB,MAAS,CAAC,GAAG,GAAM,GAAG,EAAM,GAE7B,EAAM,EAE5B,EAAiB,EAAM,EACvB,EAAc,EAAO,MAAM,yBAAyB,SAAS,EAAE,EAC/D,EAAW,EAAK,EAChB,EAAiB,EAAY;WACtB,GAAK;AACZ,KAAS,EAAa;YACd;AACR,KAAW,GAAM;;IAGrB;EAAC;EAAc;EAAwB;EAAkB;EAAU,CACpE;AAyDD,QAvDA,QAAgB;AACd,IAAmB,EAAE;IACpB,CAAC,EAAmB,CAAC,EAqDjB;EACL,eAAe;EACf;EACA;EACA;EACA;EACA;EACA,eAAe,EAAmB,EAAE;EACpC,UA3De,QAAkB;AAC7B,IAAC,KAAW,KAChB,EAAmB,IAAgB,GAAU,GAAK;KACjD;GAAC;GAAoB;GAAS;GAAS;GAAe;GAAS,CAAC;EAyDjE,WAvDgB,EAChB,OACE,GACA,MACqB;GACrB,IAAM,IAAkB,GAAG,EAAa,YAAY,GAAG,EAAa;AACpE,MAAoB,MAAS,IAAI,IAAI,EAAK,CAAC,IAAI,EAAgB,CAAC;AAChE,OAAI;IAEF,IAAI;AACJ,IASE,IATE,IACQ,MAAM,EAAkB;KAChC,UAAU;KACV,WAAW;MACT,aAAa,EAAa;MAC1B,WAAW,EAAa;MACzB;KACF,CAAC,GAEO,MAAM,EAAa,OAA8B;KACxD,UAAU;KACV,WAAW;MACT,aAAa,EAAa;MAC1B,WAAW,EAAa;MACzB;KACF,CAAC;IAGJ,IAAM,IAAU,EAAQ,EAAO,MAAM,yBAAyB;AAI9D,WAHI,KACF,MAAM,GAAoB,EAErB;WACD;AACN,WAAO;aACC;AACR,OAAoB,MAAS;KAC3B,IAAM,IAAO,IAAI,IAAI,EAAK;AAE1B,YADA,EAAK,OAAO,EAAgB,EACrB;MACP;;KAGN;GAAC;GAAoB;GAAc;GAAwB;GAAkB,CAC9E;EAYA;;AAGH,SAAgB,EAAgB,GAAyB;CACvD,IAAM,EAAE,OAAO,GAAkB,8BAA2B,GAA4B,EAClF,IAAe,GAAiB,EAChC,CAAC,GAAc,KAAmB,EAA8B,KAAK,EACrE,CAAC,GAAS,KAAc,EAAS,EAAQ,EAAgB,EACzD,CAAC,GAAO,KAAY,EAAuB,KAAK,EAEhD,IAAoB,EAAY,YAAY;AAChD,MAAI,CAAC,GAAgB;AAEnB,GADA,EAAgB,KAAK,EACrB,EAAW,GAAM;AACjB;;AAIF,EADA,EAAW,GAAK,EAChB,EAAS,KAAK;AAEd,MAAI;GACF,IAAI;AAeJ,GAdA,AAOE,IAPE,IACQ,MAAM,EAAiB;IAC/B,OAAO;IACP,WAAW,EAAE,IAAI,GAAgB;IACjC,aAAa;IACd,CAAC,GAEO,MAAM,EAAa,MAA6B;IACvD,OAAO;IACP,WAAW,EAAE,IAAI,GAAgB;IACjC,aAAa;IACd,CAAC,EAGJ,EAAgB,EAAO,MAAM,wBAAwB,KAAK;WACnD,GAAK;AACZ,KAAS,EAAa;YACd;AACR,KAAW,GAAM;;IAElB;EAAC;EAAc;EAAwB;EAAgB;EAAiB,CAAC;AAM5E,QAJA,QAAgB;AACd,KAAmB;IAClB,CAAC,EAAkB,CAAC,EAEhB;EACL;EACA;EACA;EACA,SAAS;EACV"}
|