@fairu/sdk 1.0.1

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.
Files changed (150) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +447 -0
  3. package/dist/FairuClient-BUObk5LJ.cjs +91 -0
  4. package/dist/FairuClient-BUObk5LJ.cjs.map +1 -0
  5. package/dist/FairuClient-CT-IPh8i.js +92 -0
  6. package/dist/FairuClient-CT-IPh8i.js.map +1 -0
  7. package/dist/FairuError-D8sSmRAa.js +214 -0
  8. package/dist/FairuError-D8sSmRAa.js.map +1 -0
  9. package/dist/FairuError-DWH_Nwk0.cjs +213 -0
  10. package/dist/FairuError-DWH_Nwk0.cjs.map +1 -0
  11. package/dist/FairuProvider-BRpRddCI.cjs +51 -0
  12. package/dist/FairuProvider-BRpRddCI.cjs.map +1 -0
  13. package/dist/FairuProvider-Tc0vFo5L.js +52 -0
  14. package/dist/FairuProvider-Tc0vFo5L.js.map +1 -0
  15. package/dist/FileProxyBuilder-D-jZpAtd.cjs +269 -0
  16. package/dist/FileProxyBuilder-D-jZpAtd.cjs.map +1 -0
  17. package/dist/FileProxyBuilder-vHw1zBpJ.js +270 -0
  18. package/dist/FileProxyBuilder-vHw1zBpJ.js.map +1 -0
  19. package/dist/FragmentBuilder-BinoxeVS.js +194 -0
  20. package/dist/FragmentBuilder-BinoxeVS.js.map +1 -0
  21. package/dist/FragmentBuilder-BuvIC0aT.cjs +193 -0
  22. package/dist/FragmentBuilder-BuvIC0aT.cjs.map +1 -0
  23. package/dist/UploadError-CHBJuChw.cjs +81 -0
  24. package/dist/UploadError-CHBJuChw.cjs.map +1 -0
  25. package/dist/UploadError-_gEcJqSS.js +82 -0
  26. package/dist/UploadError-_gEcJqSS.js.map +1 -0
  27. package/dist/client/FairuClient.d.ts +8 -0
  28. package/dist/client/FairuClient.d.ts.map +1 -0
  29. package/dist/client/FairuProvider.d.ts +78 -0
  30. package/dist/client/FairuProvider.d.ts.map +1 -0
  31. package/dist/client/cache.d.ts +6 -0
  32. package/dist/client/cache.d.ts.map +1 -0
  33. package/dist/client/config.d.ts +77 -0
  34. package/dist/client/config.d.ts.map +1 -0
  35. package/dist/client/index.d.ts +5 -0
  36. package/dist/client/index.d.ts.map +1 -0
  37. package/dist/errors/FairuError.d.ts +107 -0
  38. package/dist/errors/FairuError.d.ts.map +1 -0
  39. package/dist/errors/UploadError.d.ts +54 -0
  40. package/dist/errors/UploadError.d.ts.map +1 -0
  41. package/dist/errors/index.d.ts +3 -0
  42. package/dist/errors/index.d.ts.map +1 -0
  43. package/dist/fileproxy/FileProxyBuilder.d.ts +141 -0
  44. package/dist/fileproxy/FileProxyBuilder.d.ts.map +1 -0
  45. package/dist/fileproxy/index.d.ts +4 -0
  46. package/dist/fileproxy/index.d.ts.map +1 -0
  47. package/dist/fileproxy/types.d.ts +79 -0
  48. package/dist/fileproxy/types.d.ts.map +1 -0
  49. package/dist/fileproxy/useFileProxyUrl.d.ts +91 -0
  50. package/dist/fileproxy/useFileProxyUrl.d.ts.map +1 -0
  51. package/dist/fileproxy.cjs +10 -0
  52. package/dist/fileproxy.cjs.map +1 -0
  53. package/dist/fileproxy.d.ts +2 -0
  54. package/dist/fileproxy.js +10 -0
  55. package/dist/fileproxy.js.map +1 -0
  56. package/dist/fragments/FragmentBuilder.d.ts +107 -0
  57. package/dist/fragments/FragmentBuilder.d.ts.map +1 -0
  58. package/dist/fragments/FragmentRegistry.d.ts +93 -0
  59. package/dist/fragments/FragmentRegistry.d.ts.map +1 -0
  60. package/dist/fragments/index.d.ts +5 -0
  61. package/dist/fragments/index.d.ts.map +1 -0
  62. package/dist/fragments/predefined/assetFragments.d.ts +39 -0
  63. package/dist/fragments/predefined/assetFragments.d.ts.map +1 -0
  64. package/dist/fragments/predefined/copyrightFragments.d.ts +12 -0
  65. package/dist/fragments/predefined/copyrightFragments.d.ts.map +1 -0
  66. package/dist/fragments/predefined/folderFragments.d.ts +28 -0
  67. package/dist/fragments/predefined/folderFragments.d.ts.map +1 -0
  68. package/dist/fragments/predefined/galleryFragments.d.ts +24 -0
  69. package/dist/fragments/predefined/galleryFragments.d.ts.map +1 -0
  70. package/dist/fragments/predefined/index.d.ts +6 -0
  71. package/dist/fragments/predefined/index.d.ts.map +1 -0
  72. package/dist/fragments/predefined/licenseFragments.d.ts +12 -0
  73. package/dist/fragments/predefined/licenseFragments.d.ts.map +1 -0
  74. package/dist/fragments/types.d.ts +46 -0
  75. package/dist/fragments/types.d.ts.map +1 -0
  76. package/dist/fragments.cjs +403 -0
  77. package/dist/fragments.cjs.map +1 -0
  78. package/dist/fragments.d.ts +2 -0
  79. package/dist/fragments.js +403 -0
  80. package/dist/fragments.js.map +1 -0
  81. package/dist/generated/graphql.d.ts +3464 -0
  82. package/dist/generated/graphql.d.ts.map +1 -0
  83. package/dist/hooks/index.d.ts +3 -0
  84. package/dist/hooks/index.d.ts.map +1 -0
  85. package/dist/hooks/mutations/index.d.ts +5 -0
  86. package/dist/hooks/mutations/index.d.ts.map +1 -0
  87. package/dist/hooks/mutations/useAssetMutations.d.ts +66 -0
  88. package/dist/hooks/mutations/useAssetMutations.d.ts.map +1 -0
  89. package/dist/hooks/mutations/useFolderMutations.d.ts +69 -0
  90. package/dist/hooks/mutations/useFolderMutations.d.ts.map +1 -0
  91. package/dist/hooks/mutations/useGalleryMutations.d.ts +39 -0
  92. package/dist/hooks/mutations/useGalleryMutations.d.ts.map +1 -0
  93. package/dist/hooks/mutations/useUpdateAsset.d.ts +50 -0
  94. package/dist/hooks/mutations/useUpdateAsset.d.ts.map +1 -0
  95. package/dist/hooks/queries/index.d.ts +8 -0
  96. package/dist/hooks/queries/index.d.ts.map +1 -0
  97. package/dist/hooks/queries/useAsset.d.ts +46 -0
  98. package/dist/hooks/queries/useAsset.d.ts.map +1 -0
  99. package/dist/hooks/queries/useAssets.d.ts +58 -0
  100. package/dist/hooks/queries/useAssets.d.ts.map +1 -0
  101. package/dist/hooks/queries/useCopyright.d.ts +51 -0
  102. package/dist/hooks/queries/useCopyright.d.ts.map +1 -0
  103. package/dist/hooks/queries/useFolder.d.ts +93 -0
  104. package/dist/hooks/queries/useFolder.d.ts.map +1 -0
  105. package/dist/hooks/queries/useGallery.d.ts +101 -0
  106. package/dist/hooks/queries/useGallery.d.ts.map +1 -0
  107. package/dist/hooks/queries/useLicense.d.ts +63 -0
  108. package/dist/hooks/queries/useLicense.d.ts.map +1 -0
  109. package/dist/hooks/queries/useTenant.d.ts +89 -0
  110. package/dist/hooks/queries/useTenant.d.ts.map +1 -0
  111. package/dist/index.cjs +244 -0
  112. package/dist/index.cjs.map +1 -0
  113. package/dist/index.d.ts +18 -0
  114. package/dist/index.d.ts.map +1 -0
  115. package/dist/index.js +244 -0
  116. package/dist/index.js.map +1 -0
  117. package/dist/react.cjs +596 -0
  118. package/dist/react.cjs.map +1 -0
  119. package/dist/react.d.ts +22 -0
  120. package/dist/react.d.ts.map +1 -0
  121. package/dist/react.js +596 -0
  122. package/dist/react.js.map +1 -0
  123. package/dist/upload/index.d.ts +4 -0
  124. package/dist/upload/index.d.ts.map +1 -0
  125. package/dist/upload/types.d.ts +96 -0
  126. package/dist/upload/types.d.ts.map +1 -0
  127. package/dist/upload/useMultipartUpload.d.ts +67 -0
  128. package/dist/upload/useMultipartUpload.d.ts.map +1 -0
  129. package/dist/upload/useUpload.d.ts +64 -0
  130. package/dist/upload/useUpload.d.ts.map +1 -0
  131. package/dist/upload.cjs +6 -0
  132. package/dist/upload.cjs.map +1 -0
  133. package/dist/upload.d.ts +2 -0
  134. package/dist/upload.js +6 -0
  135. package/dist/upload.js.map +1 -0
  136. package/dist/useFileProxyUrl-BCcux6re.cjs +87 -0
  137. package/dist/useFileProxyUrl-BCcux6re.cjs.map +1 -0
  138. package/dist/useFileProxyUrl-D_S1R_7O.js +88 -0
  139. package/dist/useFileProxyUrl-D_S1R_7O.js.map +1 -0
  140. package/dist/useMultipartUpload-BKnDbl8h.cjs +423 -0
  141. package/dist/useMultipartUpload-BKnDbl8h.cjs.map +1 -0
  142. package/dist/useMultipartUpload-CPK_PgUU.js +424 -0
  143. package/dist/useMultipartUpload-CPK_PgUU.js.map +1 -0
  144. package/dist/vanilla.cjs +219 -0
  145. package/dist/vanilla.cjs.map +1 -0
  146. package/dist/vanilla.d.ts +94 -0
  147. package/dist/vanilla.d.ts.map +1 -0
  148. package/dist/vanilla.js +220 -0
  149. package/dist/vanilla.js.map +1 -0
  150. package/package.json +177 -0
@@ -0,0 +1,78 @@
1
+ import { ReactNode } from 'react';
2
+ import { Client } from 'urql';
3
+ import { FairuClientConfig } from './config';
4
+ import { FragmentRegistry } from '../fragments/FragmentRegistry';
5
+ /**
6
+ * Context value for Fairu SDK.
7
+ */
8
+ interface FairuContextValue {
9
+ /**
10
+ * The urql client instance.
11
+ */
12
+ client: Client;
13
+ /**
14
+ * Fragment registry for custom and predefined fragments.
15
+ */
16
+ fragments: FragmentRegistry | null;
17
+ /**
18
+ * FileProxy base URL.
19
+ */
20
+ fileProxyUrl: string;
21
+ }
22
+ /**
23
+ * Props for the FairuProvider component.
24
+ */
25
+ export interface FairuProviderProps extends FairuClientConfig {
26
+ /**
27
+ * Child components.
28
+ */
29
+ children: ReactNode;
30
+ /**
31
+ * Custom fragment registry instance.
32
+ */
33
+ fragmentRegistry?: FragmentRegistry;
34
+ /**
35
+ * Existing urql client to use instead of creating a new one.
36
+ */
37
+ client?: Client;
38
+ }
39
+ /**
40
+ * React provider for Fairu SDK functionality.
41
+ *
42
+ * @example
43
+ * ```tsx
44
+ * import { FairuProvider } from '@fairu/sdk/react';
45
+ *
46
+ * function App() {
47
+ * return (
48
+ * <FairuProvider
49
+ * url="https://fairu.app/graphql"
50
+ * token={process.env.FAIRU_TOKEN}
51
+ * >
52
+ * <YourApp />
53
+ * </FairuProvider>
54
+ * );
55
+ * }
56
+ * ```
57
+ */
58
+ export declare function FairuProvider({ children, fragmentRegistry, client: existingClient, ...clientConfig }: FairuProviderProps): import("react/jsx-runtime").JSX.Element;
59
+ /**
60
+ * Hook to access the Fairu context.
61
+ *
62
+ * @throws Error if used outside of FairuProvider
63
+ */
64
+ export declare function useFairuContext(): FairuContextValue;
65
+ /**
66
+ * Hook to access the fragment registry.
67
+ */
68
+ export declare function useFragments(): FragmentRegistry | null;
69
+ /**
70
+ * Hook to get the FileProxy base URL.
71
+ */
72
+ export declare function useFileProxyUrl(): string;
73
+ /**
74
+ * Hook to access the urql client directly.
75
+ */
76
+ export declare function useFairuClient(): Client;
77
+ export {};
78
+ //# sourceMappingURL=FairuProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FairuProvider.d.ts","sourceRoot":"","sources":["../../src/client/FairuProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,EAAY,KAAK,MAAM,EAAE,MAAM,MAAM,CAAC;AAE7C,OAAO,EAAkB,KAAK,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEtE;;GAEG;AACH,UAAU,iBAAiB;IACzB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,SAAS,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAEnC;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;CACtB;AAID;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB;IAC3D;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;IAEpB;;OAEG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IAEpC;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,gBAAgB,EAChB,MAAM,EAAE,cAAc,EACtB,GAAG,YAAY,EAChB,EAAE,kBAAkB,2CA4BpB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,IAAI,iBAAiB,CAQnD;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,gBAAgB,GAAG,IAAI,CAEtD;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAEvC"}
@@ -0,0 +1,6 @@
1
+ import { CacheConfig } from './config';
2
+ /**
3
+ * Create a Graphcache exchange with Fairu-specific configuration.
4
+ */
5
+ export declare function createCacheExchange(config?: CacheConfig): import('urql').Exchange;
6
+ //# sourceMappingURL=cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/client/cache.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAuB5C;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,GAAE,WAAgB,2BAiO3D"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Configuration options for the Fairu client.
3
+ */
4
+ export interface FairuClientConfig {
5
+ /**
6
+ * The GraphQL API URL.
7
+ * @default 'https://fairu.app/graphql'
8
+ */
9
+ url?: string;
10
+ /**
11
+ * Static API token for authentication.
12
+ */
13
+ token?: string;
14
+ /**
15
+ * Function to dynamically get the API token.
16
+ * Useful for token refresh or async token retrieval.
17
+ */
18
+ getToken?: () => string | null | Promise<string | null>;
19
+ /**
20
+ * Cache configuration options.
21
+ */
22
+ cache?: CacheConfig;
23
+ /**
24
+ * Retry configuration for failed requests.
25
+ */
26
+ retry?: RetryConfig;
27
+ /**
28
+ * Callback for handling errors globally.
29
+ */
30
+ onError?: (error: Error) => void;
31
+ /**
32
+ * FileProxy base URL for image transformations.
33
+ * @default 'https://files.fairu.app'
34
+ */
35
+ fileProxyUrl?: string;
36
+ }
37
+ /**
38
+ * Cache configuration options.
39
+ */
40
+ export interface CacheConfig {
41
+ /**
42
+ * Whether caching is enabled.
43
+ * @default true
44
+ */
45
+ enabled?: boolean;
46
+ /**
47
+ * Custom entity keys for cache normalization.
48
+ */
49
+ keys?: Record<string, (data: unknown) => string | null>;
50
+ }
51
+ /**
52
+ * Retry configuration options.
53
+ */
54
+ export interface RetryConfig {
55
+ /**
56
+ * Maximum number of retry attempts.
57
+ * @default 3
58
+ */
59
+ maxAttempts?: number;
60
+ /**
61
+ * Delay between retries in milliseconds.
62
+ * @default 1000
63
+ */
64
+ delayMs?: number;
65
+ /**
66
+ * Function to determine if an error should trigger a retry.
67
+ */
68
+ retryIf?: (error: Error) => boolean;
69
+ }
70
+ /**
71
+ * Default configuration values.
72
+ */
73
+ export declare const DEFAULT_CONFIG: Required<Pick<FairuClientConfig, 'url' | 'fileProxyUrl'>> & {
74
+ retry: Required<RetryConfig>;
75
+ cache: Required<CacheConfig>;
76
+ };
77
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/client/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAExD;;OAEG;IACH,KAAK,CAAC,EAAE,WAAW,CAAC;IAEpB;;OAEG;IACH,KAAK,CAAC,EAAE,WAAW,CAAC;IAEpB;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAEjC;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,MAAM,GAAG,IAAI,CAAC,CAAC;CACzD;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC;CACrC;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,QAAQ,CACnC,IAAI,CAAC,iBAAiB,EAAE,KAAK,GAAG,cAAc,CAAC,CAChD,GAAG;IACF,KAAK,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC7B,KAAK,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;CAgB9B,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { createFairuClient, type Client } from './FairuClient';
2
+ export { FairuProvider, useFairuContext, useFragments, useFileProxyUrl, useFairuClient, type FairuProviderProps, } from './FairuProvider';
3
+ export { createCacheExchange } from './cache';
4
+ export { DEFAULT_CONFIG, type FairuClientConfig, type CacheConfig, type RetryConfig, } from './config';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,KAAK,MAAM,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EACL,aAAa,EACb,eAAe,EACf,YAAY,EACZ,eAAe,EACf,cAAc,EACd,KAAK,kBAAkB,GACxB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EACL,cAAc,EACd,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,WAAW,GACjB,MAAM,UAAU,CAAC"}
@@ -0,0 +1,107 @@
1
+ import { CombinedError } from '@urql/core';
2
+ import { GraphQLError as BaseGraphQLError } from 'graphql';
3
+ /**
4
+ * Base error class for all Fairu SDK errors.
5
+ */
6
+ export declare class FairuError extends Error {
7
+ readonly code?: string;
8
+ readonly originalError?: Error;
9
+ constructor(message: string, code?: string, originalError?: Error);
10
+ /**
11
+ * Create a FairuError from a urql CombinedError.
12
+ */
13
+ static fromCombinedError(error: CombinedError): FairuError;
14
+ /**
15
+ * Check if this error is a network error.
16
+ */
17
+ isNetworkError(): boolean;
18
+ /**
19
+ * Convert error to a plain object for serialization.
20
+ */
21
+ toJSON(): Record<string, unknown>;
22
+ }
23
+ /**
24
+ * Error class for validation failures.
25
+ */
26
+ export declare class ValidationError extends FairuError {
27
+ readonly validationErrors: Record<string, string[]>;
28
+ constructor(message: string, validationErrors?: Record<string, string[]>);
29
+ /**
30
+ * Get errors for a specific field.
31
+ */
32
+ getFieldErrors(field: string): string[];
33
+ /**
34
+ * Check if a specific field has errors.
35
+ */
36
+ hasFieldError(field: string): boolean;
37
+ /**
38
+ * Get all field names with errors.
39
+ */
40
+ getFields(): string[];
41
+ /**
42
+ * Get the first error message for a field.
43
+ */
44
+ getFirstFieldError(field: string): string | undefined;
45
+ /**
46
+ * Get all error messages as a flat array.
47
+ */
48
+ getAllMessages(): string[];
49
+ /**
50
+ * Check if there are any validation errors.
51
+ */
52
+ hasErrors(): boolean;
53
+ /**
54
+ * Convert to JSON for serialization.
55
+ */
56
+ toJSON(): Record<string, unknown>;
57
+ }
58
+ /**
59
+ * Error class for authentication failures.
60
+ */
61
+ export declare class AuthenticationError extends FairuError {
62
+ constructor(message?: string);
63
+ /**
64
+ * Check if this is an expired token error.
65
+ */
66
+ isTokenExpired(): boolean;
67
+ /**
68
+ * Check if this is a missing token error.
69
+ */
70
+ isMissingToken(): boolean;
71
+ }
72
+ /**
73
+ * Error class for GraphQL-specific errors.
74
+ */
75
+ export declare class GraphQLError extends FairuError {
76
+ readonly graphqlErrors: readonly BaseGraphQLError[];
77
+ constructor(errors: readonly BaseGraphQLError[]);
78
+ /**
79
+ * Get the first GraphQL error.
80
+ */
81
+ getFirstError(): BaseGraphQLError | undefined;
82
+ /**
83
+ * Get all GraphQL errors.
84
+ */
85
+ getErrors(): readonly BaseGraphQLError[];
86
+ /**
87
+ * Check if any errors are validation errors.
88
+ */
89
+ hasValidationErrors(): boolean;
90
+ /**
91
+ * Get validation errors as a record of field names to error messages.
92
+ */
93
+ getValidationErrors(): Record<string, string[]>;
94
+ /**
95
+ * Check if any errors are authentication errors.
96
+ */
97
+ hasAuthenticationErrors(): boolean;
98
+ /**
99
+ * Get error paths.
100
+ */
101
+ getPaths(): (readonly (string | number)[] | undefined)[];
102
+ /**
103
+ * Convert to JSON for serialization.
104
+ */
105
+ toJSON(): Record<string, unknown>;
106
+ }
107
+ //# sourceMappingURL=FairuError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FairuError.d.ts","sourceRoot":"","sources":["../../src/errors/FairuError.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,YAAY,IAAI,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhE;;GAEG;AACH,qBAAa,UAAW,SAAQ,KAAK;IACnC,SAAgB,IAAI,CAAC,EAAE,MAAM,CAAC;IAC9B,SAAgB,aAAa,CAAC,EAAE,KAAK,CAAC;gBAE1B,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,KAAK;IAYjE;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,aAAa,GAAG,UAAU;IAoC1D;;OAEG;IACH,cAAc,IAAI,OAAO;IAIzB;;OAEG;IACH,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAOlC;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,UAAU;IAC7C,SAAgB,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;gBAGzD,OAAO,EAAE,MAAM,EACf,gBAAgB,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAM;IAOjD;;OAEG;IACH,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;IAIvC;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAIrC;;OAEG;IACH,SAAS,IAAI,MAAM,EAAE;IAIrB;;OAEG;IACH,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIrD;;OAEG;IACH,cAAc,IAAI,MAAM,EAAE;IAI1B;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACM,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAM3C;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,UAAU;gBACrC,OAAO,GAAE,MAAuC;IAK5D;;OAEG;IACH,cAAc,IAAI,OAAO;IAIzB;;OAEG;IACH,cAAc,IAAI,OAAO;CAG1B;AAED;;GAEG;AACH,qBAAa,YAAa,SAAQ,UAAU;IAC1C,SAAgB,aAAa,EAAE,SAAS,gBAAgB,EAAE,CAAC;gBAE/C,MAAM,EAAE,SAAS,gBAAgB,EAAE;IAO/C;;OAEG;IACH,aAAa,IAAI,gBAAgB,GAAG,SAAS;IAI7C;;OAEG;IACH,SAAS,IAAI,SAAS,gBAAgB,EAAE;IAIxC;;OAEG;IACH,mBAAmB,IAAI,OAAO;IAM9B;;OAEG;IACH,mBAAmB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAY/C;;OAEG;IACH,uBAAuB,IAAI,OAAO;IAMlC;;OAEG;IACH,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE;IAIxD;;OAEG;IACM,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAU3C"}
@@ -0,0 +1,54 @@
1
+ import { FairuError } from './FairuError';
2
+ /**
3
+ * Upload error codes.
4
+ */
5
+ export type UploadErrorCode = 'ABORTED' | 'NETWORK_ERROR' | 'INIT_FAILED' | 'PART_FAILED' | 'COMPLETE_FAILED' | 'SIZE_LIMIT_EXCEEDED' | 'INVALID_FILE_TYPE' | 'TIMEOUT';
6
+ /**
7
+ * Error class for upload failures.
8
+ */
9
+ export declare class UploadError extends FairuError {
10
+ readonly uploadCode?: UploadErrorCode;
11
+ readonly partNumber?: number;
12
+ constructor(message: string, code?: UploadErrorCode, partNumber?: number);
13
+ /**
14
+ * Check if the upload was aborted by the user.
15
+ */
16
+ isAborted(): boolean;
17
+ /**
18
+ * Check if this is a network error.
19
+ */
20
+ isNetworkError(): boolean;
21
+ /**
22
+ * Check if initialization failed.
23
+ */
24
+ isInitFailed(): boolean;
25
+ /**
26
+ * Check if a part upload failed.
27
+ */
28
+ isPartFailed(): boolean;
29
+ /**
30
+ * Check if completing the upload failed.
31
+ */
32
+ isCompleteFailed(): boolean;
33
+ /**
34
+ * Check if the file exceeded size limits.
35
+ */
36
+ isSizeLimitExceeded(): boolean;
37
+ /**
38
+ * Check if the file type is invalid.
39
+ */
40
+ isInvalidFileType(): boolean;
41
+ /**
42
+ * Check if the upload timed out.
43
+ */
44
+ isTimeout(): boolean;
45
+ /**
46
+ * Check if this error is retryable.
47
+ */
48
+ isRetryable(): boolean;
49
+ /**
50
+ * Convert to JSON for serialization.
51
+ */
52
+ toJSON(): Record<string, unknown>;
53
+ }
54
+ //# sourceMappingURL=UploadError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UploadError.d.ts","sourceRoot":"","sources":["../../src/errors/UploadError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C;;GAEG;AACH,MAAM,MAAM,eAAe,GACvB,SAAS,GACT,eAAe,GACf,aAAa,GACb,aAAa,GACb,iBAAiB,GACjB,qBAAqB,GACrB,mBAAmB,GACnB,SAAS,CAAC;AAEd;;GAEG;AACH,qBAAa,WAAY,SAAQ,UAAU;IACzC,SAAgB,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7C,SAAgB,UAAU,CAAC,EAAE,MAAM,CAAC;gBAGlC,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,eAAe,EACtB,UAAU,CAAC,EAAE,MAAM;IAQrB;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACM,cAAc,IAAI,OAAO;IAIlC;;OAEG;IACH,YAAY,IAAI,OAAO;IAIvB;;OAEG;IACH,YAAY,IAAI,OAAO;IAIvB;;OAEG;IACH,gBAAgB,IAAI,OAAO;IAI3B;;OAEG;IACH,mBAAmB,IAAI,OAAO;IAI9B;;OAEG;IACH,iBAAiB,IAAI,OAAO;IAI5B;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,WAAW,IAAI,OAAO;IAQtB;;OAEG;IACM,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAO3C"}
@@ -0,0 +1,3 @@
1
+ export { FairuError, ValidationError, AuthenticationError, GraphQLError, } from './FairuError';
2
+ export { UploadError, type UploadErrorCode } from './UploadError';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,eAAe,EACf,mBAAmB,EACnB,YAAY,GACb,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,141 @@
1
+ import { FileProxyParams, ImageFormat, FitMode, VideoVersion, SignOptions } from './types';
2
+ /**
3
+ * Fluent builder for constructing FileProxy URLs.
4
+ *
5
+ * @example
6
+ * ```typescript
7
+ * const url = new FileProxyBuilder('asset-uuid', 'image.jpg')
8
+ * .width(800)
9
+ * .height(600)
10
+ * .quality(85)
11
+ * .format('webp')
12
+ * .build();
13
+ *
14
+ * // Result: https://files.fairu.app/asset-uuid/image.jpg?width=800&height=600&quality=85&format=webp
15
+ * ```
16
+ */
17
+ export declare class FileProxyBuilder {
18
+ private readonly id;
19
+ private readonly name;
20
+ private params;
21
+ private baseUrl;
22
+ constructor(id: string, name: string, baseUrl?: string);
23
+ /**
24
+ * Set the width in pixels (1-6000).
25
+ */
26
+ width(value: number): this;
27
+ /**
28
+ * Set the height in pixels (1-6000).
29
+ */
30
+ height(value: number): this;
31
+ /**
32
+ * Set dimensions (width and height).
33
+ */
34
+ dimensions(width: number, height: number): this;
35
+ /**
36
+ * Set the quality (1-100, default: 95).
37
+ */
38
+ quality(value: number): this;
39
+ /**
40
+ * Set the output format.
41
+ */
42
+ format(value: ImageFormat): this;
43
+ /**
44
+ * Set the fit mode for cropping.
45
+ */
46
+ fit(value: FitMode): this;
47
+ /**
48
+ * Set the focal point for smart cropping.
49
+ *
50
+ * @param x - X position (0-100%)
51
+ * @param y - Y position (0-100%)
52
+ * @param zoom - Zoom multiplier (1.0-100.0)
53
+ */
54
+ focal(x: number, y: number, zoom?: number): this;
55
+ /**
56
+ * Set focal point from a string (e.g., "50-30-1.5" or "50,50").
57
+ */
58
+ focalFromString(value: string | null | undefined): this;
59
+ /**
60
+ * Return raw/original file without processing.
61
+ */
62
+ raw(value?: boolean): this;
63
+ /**
64
+ * Process SVG to raster WebP.
65
+ */
66
+ processSvg(value?: boolean): this;
67
+ /**
68
+ * Set video quality version.
69
+ */
70
+ version(value: VideoVersion): this;
71
+ /**
72
+ * Set video timestamp for frame extraction.
73
+ *
74
+ * @param value - Timestamp in format HH:MM:SS.mmm
75
+ */
76
+ timestamp(value: string): this;
77
+ /**
78
+ * Set timestamp from seconds.
79
+ */
80
+ timestampFromSeconds(seconds: number): this;
81
+ /**
82
+ * Sign the URL for protected files.
83
+ */
84
+ sign(options: SignOptions | string): this;
85
+ /**
86
+ * Create HMAC-SHA256 signature (environment-specific implementation needed).
87
+ */
88
+ private createHmacSignature;
89
+ /**
90
+ * Set a pre-computed signature.
91
+ */
92
+ withSignature(signature: string, signatureDate: string | number): this;
93
+ /**
94
+ * Build the URL string.
95
+ */
96
+ build(): string;
97
+ /**
98
+ * Build the query string from params.
99
+ */
100
+ private buildQueryString;
101
+ /**
102
+ * Get the current parameters.
103
+ */
104
+ getParams(): FileProxyParams;
105
+ /**
106
+ * Convert to string (alias for build).
107
+ */
108
+ toString(): string;
109
+ }
110
+ /**
111
+ * Create a new FileProxyBuilder.
112
+ *
113
+ * @example
114
+ * ```typescript
115
+ * import { fileProxy } from '@fairu/sdk/fileproxy';
116
+ *
117
+ * const url = fileProxy('asset-uuid', 'image.jpg')
118
+ * .width(800)
119
+ * .format('webp')
120
+ * .build();
121
+ * ```
122
+ */
123
+ export declare function fileProxy(id: string, name: string, baseUrl?: string): FileProxyBuilder;
124
+ /**
125
+ * Utility functions for FileProxy.
126
+ */
127
+ export declare const fileProxyUtils: {
128
+ /**
129
+ * Build a meta URL for getting image dimensions.
130
+ */
131
+ meta(id: string, baseUrl?: string): string;
132
+ /**
133
+ * Build an HLS video streaming URL.
134
+ */
135
+ hls(tenantId: string, assetId: string, path: string, baseUrl?: string): string;
136
+ /**
137
+ * Build an HLS decryption key URL.
138
+ */
139
+ hlsKey(id: string, quality: VideoVersion, filename: string, baseUrl?: string): string;
140
+ };
141
+ //# sourceMappingURL=FileProxyBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileProxyBuilder.d.ts","sourceRoot":"","sources":["../../src/fileproxy/FileProxyBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EACX,OAAO,EACP,YAAY,EACZ,WAAW,EACZ,MAAM,SAAS,CAAC;AAOjB;;;;;;;;;;;;;;GAcG;AACH,qBAAa,gBAAgB;IAKzB,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,IAAI;IALvB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,OAAO,CAAS;gBAGL,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EAC7B,OAAO,CAAC,EAAE,MAAM;IAKlB;;OAEG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAQ1B;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAQ3B;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/C;;OAEG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAQ5B;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAKhC;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAKzB;;;;;;OAMG;IACH,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,GAAE,MAAU,GAAG,IAAI;IAcnD;;OAEG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI;IAsBvD;;OAEG;IACH,GAAG,CAAC,KAAK,GAAE,OAAc,GAAG,IAAI;IAKhC;;OAEG;IACH,UAAU,CAAC,KAAK,GAAE,OAAc,GAAG,IAAI;IAKvC;;OAEG;IACH,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAKlC;;;;OAIG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK9B;;OAEG;IACH,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAc3C;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI;IAmBzC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAU3B;;OAEG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAStE;;OAEG;IACH,KAAK,IAAI,MAAM;IAWf;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA2CxB;;OAEG;IACH,SAAS,IAAI,eAAe;IAI5B;;OAEG;IACH,QAAQ,IAAI,MAAM;CAGnB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,SAAS,CACvB,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,GACf,gBAAgB,CAElB;AAED;;GAEG;AACH,eAAO,MAAM,cAAc;IACzB;;OAEG;aACM,MAAM,YAAW,MAAM,GAAsB,MAAM;IAI5D;;OAEG;kBAES,MAAM,WACP,MAAM,QACT,MAAM,YACH,MAAM,GACd,MAAM;IAIT;;OAEG;eAEG,MAAM,WACD,YAAY,YACX,MAAM,YACP,MAAM,GACd,MAAM;CAGV,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { FileProxyBuilder, fileProxy, fileProxyUtils, } from './FileProxyBuilder';
2
+ export { useFileProxyUrl, useResponsiveImageUrl, type UseFileProxyUrlOptions, } from './useFileProxyUrl';
3
+ export type { FileProxyParams, ImageFormat, FitMode, VideoVersion, SignOptions, } from './types';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fileproxy/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,SAAS,EACT,cAAc,GACf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,KAAK,sBAAsB,GAC5B,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,eAAe,EACf,WAAW,EACX,OAAO,EACP,YAAY,EACZ,WAAW,GACZ,MAAM,SAAS,CAAC"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Image format options.
3
+ */
4
+ export type ImageFormat = 'jpg' | 'jpeg' | 'png' | 'webp';
5
+ /**
6
+ * Fit mode for image cropping.
7
+ */
8
+ export type FitMode = 'cover' | 'contain';
9
+ /**
10
+ * Video quality versions.
11
+ */
12
+ export type VideoVersion = 'low' | 'medium' | 'high';
13
+ /**
14
+ * FileProxy URL parameters.
15
+ */
16
+ export interface FileProxyParams {
17
+ /**
18
+ * Width in pixels (1-6000).
19
+ */
20
+ width?: number;
21
+ /**
22
+ * Height in pixels (1-6000).
23
+ */
24
+ height?: number;
25
+ /**
26
+ * Quality (1-100, default: 95).
27
+ */
28
+ quality?: number;
29
+ /**
30
+ * Output format.
31
+ */
32
+ format?: ImageFormat;
33
+ /**
34
+ * Fit mode for cropping.
35
+ */
36
+ fit?: FitMode;
37
+ /**
38
+ * Focal point for smart cropping (x-y-zoom).
39
+ */
40
+ focal?: string;
41
+ /**
42
+ * Return raw/original file without processing.
43
+ */
44
+ raw?: boolean;
45
+ /**
46
+ * Process SVG to raster WebP.
47
+ */
48
+ process_svg?: boolean;
49
+ /**
50
+ * Video quality version.
51
+ */
52
+ version?: VideoVersion;
53
+ /**
54
+ * Video timestamp for frame extraction (HH:MM:SS.mmm).
55
+ */
56
+ timestamp?: string;
57
+ /**
58
+ * HMAC-SHA256 signature for protected files.
59
+ */
60
+ signature?: string;
61
+ /**
62
+ * Unix timestamp for signature validation.
63
+ */
64
+ signature_date?: string;
65
+ }
66
+ /**
67
+ * Options for building signed URLs.
68
+ */
69
+ export interface SignOptions {
70
+ /**
71
+ * Secret key for HMAC signature.
72
+ */
73
+ secretKey: string;
74
+ /**
75
+ * Expiration time in seconds (optional).
76
+ */
77
+ expiresIn?: number;
78
+ }
79
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/fileproxy/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;AAE1D;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG,OAAO,GAAG,SAAS,CAAC;AAE1C;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IAErB;;OAEG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC;IAEd;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC;IAEd;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;OAEG;IACH,OAAO,CAAC,EAAE,YAAY,CAAC;IAEvB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}