@econneq/gql-auth 1.2.10 → 2.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 (51) hide show
  1. package/README.md +304 -22
  2. package/dist/api-factory.d.ts +11 -29
  3. package/dist/api-factory.d.ts.map +1 -1
  4. package/dist/api-factory.js +98 -47
  5. package/dist/api-factory.js.map +1 -0
  6. package/dist/authServer.d.ts +32 -0
  7. package/dist/authServer.d.ts.map +1 -0
  8. package/dist/authServer.js +93 -0
  9. package/dist/authServer.js.map +1 -0
  10. package/dist/client.d.ts +28 -14
  11. package/dist/client.d.ts.map +1 -1
  12. package/dist/client.js +77 -36
  13. package/dist/client.js.map +1 -0
  14. package/dist/env.d.ts +35 -0
  15. package/dist/env.d.ts.map +1 -0
  16. package/dist/env.js +65 -0
  17. package/dist/env.js.map +1 -0
  18. package/dist/errors.d.ts +10 -0
  19. package/dist/errors.d.ts.map +1 -0
  20. package/dist/errors.js +24 -0
  21. package/dist/errors.js.map +1 -0
  22. package/dist/functions.d.ts +24 -0
  23. package/dist/functions.d.ts.map +1 -0
  24. package/dist/functions.js +86 -0
  25. package/dist/functions.js.map +1 -0
  26. package/dist/index.d.ts +11 -84
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +22 -8
  29. package/dist/index.js.map +1 -0
  30. package/dist/query-server.d.ts +31 -12
  31. package/dist/query-server.d.ts.map +1 -1
  32. package/dist/query-server.js +63 -20
  33. package/dist/query-server.js.map +1 -0
  34. package/dist/tenant.d.ts +21 -0
  35. package/dist/tenant.d.ts.map +1 -0
  36. package/dist/tenant.js +50 -0
  37. package/dist/tenant.js.map +1 -0
  38. package/dist/types.d.ts +124 -0
  39. package/dist/types.d.ts.map +1 -0
  40. package/dist/types.js +5 -0
  41. package/dist/types.js.map +1 -0
  42. package/dist/upload-gql.d.ts +2 -20
  43. package/dist/upload-gql.d.ts.map +1 -1
  44. package/dist/upload-gql.js +63 -33
  45. package/dist/upload-gql.js.map +1 -0
  46. package/dist/utils.d.ts +24 -0
  47. package/dist/utils.d.ts.map +1 -0
  48. package/dist/utils.js +257 -0
  49. package/dist/utilsGeneral.d.ts +1 -1
  50. package/dist/utilsGeneral.d.ts.map +1 -1
  51. package/package.json +49 -22
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authServer.js","sourceRoot":"","sources":["../src/authServer.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+CAA+C;AAC/C,+DAA+D;AAC/D,EAAE;AACF,8DAA8D;AAC9D,4DAA4D;AAC5D,kBAAkB;AAClB,gEAAgE;AAEhE,YAAY,CAAC;AAIb,gEAAgE;AAEhE;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,IAA4B,EAAE;IAC/D,IAAI,CAAC;QACH,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;QACjD,MAAM,WAAW,GAAG,MAAM,OAAO,EAAE,CAAC;QACpC,OAAO,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,0DAA0D;QAC1D,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAEF,iEAAiE;AAEjE;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,IAAgC,EAAE;IAClE,MAAM,KAAK,GAAG,MAAM,cAAc,EAAE,CAAC;IACrC,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,IAAI,CAAC;QACH,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;QACjD,OAAO,SAAS,CAAa,KAAK,CAAC,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAEF,gEAAgE;AAEhE;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,IAAc,EACd,MAAc,EACd,MAAe,EACN,EAAE;IACX,IAAI,CAAC,IAAI,EAAE,MAAM;QAAE,OAAO,KAAK,CAAC;IAEhC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;YACzB,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;gBACtB,iDAAiD;gBACjD,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,MAAM,SAAS,CAAC,CAAC;gBAC9C,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3B,CAAC;YAED,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;gBACrB,OAAO,KAAK,KAAK,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC;YACxC,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAC;AAEF,iEAAiE;AAEjE;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,IAAqB,EAAE;IAC/D,IAAI,CAAC;QACH,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;QACjD,MAAM,WAAW,GAAG,MAAM,OAAO,EAAE,CAAC;QACpC,OAAO,WAAW,CAAC,QAAQ,EAAE,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC,CAAC"}
package/dist/client.d.ts CHANGED
@@ -1,15 +1,29 @@
1
- import { ApolloClient } from '@apollo/client';
2
- export default function getApolloClient(options?: {
3
- csrfToken?: string;
4
- cookie?: string;
5
- }, domain?: string | null, config?: {
6
- protocol: string;
7
- RootApi: string;
8
- Subdomains: {
9
- subdomain: string;
10
- processId?: string;
11
- widgetID?: string;
12
- }[];
13
- apiKey: string;
14
- }): Promise<ApolloClient | null>;
1
+ import { ApolloClient } from "@apollo/client";
2
+ import type { ApolloOptions, ConfigType } from "./types";
3
+ /**
4
+ * Inject Next.js `cookies` at app startup to keep this module
5
+ * free of a hard `next/headers` import (which breaks non-Next projects).
6
+ *
7
+ * Call once in your app layout or instrumentation file:
8
+ *
9
+ * ```ts
10
+ * import { cookies } from "next/headers";
11
+ * import { registerCookiesFn } from "@econneq/gql-auth";
12
+ * registerCookiesFn(cookies);
13
+ * ```
14
+ */
15
+ export declare function registerCookiesFn(fn: () => Promise<{
16
+ get: (k: string) => {
17
+ value: string;
18
+ } | undefined;
19
+ toString: () => string;
20
+ }>): void;
21
+ type ClientOptions = {
22
+ options?: ApolloOptions;
23
+ /** Tenant subdomain. Omit for single-tenant. */
24
+ domain?: string | null;
25
+ config: ConfigType;
26
+ };
27
+ export declare function getApolloClient({ options, domain, config, }: ClientOptions): Promise<ApolloClient>;
28
+ export {};
15
29
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAA2B,MAAM,gBAAgB,CAAC;AAGvE,wBAA8B,eAAe,CAC3C,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,EACjD,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,EACtB,MAAM,CAAC,EAAE;IACP,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC3E,MAAM,EAAE,MAAM,CAAC;CAChB,GACA,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAgD9B"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,YAAY,EAA2B,MAAM,gBAAgB,CAAC;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAazD;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,MAAM,OAAO,CAAC;IAAE,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IAAC,QAAQ,EAAE,MAAM,MAAM,CAAA;CAAE,CAAC,GAC/F,IAAI,CAEN;AAID,KAAK,aAAa,GAAG;IACnB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,gDAAgD;IAChD,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,UAAU,CAAC;CACpB,CAAC;AAEF,wBAAsB,eAAe,CAAC,EACpC,OAAO,EACP,MAAM,EACN,MAAM,GACP,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CA4DvC"}
package/dist/client.js CHANGED
@@ -1,44 +1,85 @@
1
- // src/client.ts
2
- import { ApolloClient, InMemoryCache, HttpLink } from '@apollo/client';
3
- import Cookies from "js-cookie";
4
- export default async function getApolloClient(options, domain, config) {
5
- if (!config)
6
- throw new Error("Configuration is required for getApolloClient");
7
- const isServer = typeof window === "undefined";
8
- const { protocol, RootApi, Subdomains, apiKey } = config;
9
- // 1. Find Tenant Data
10
- const tenant = domain
11
- ? Subdomains.find((s) => s.subdomain.toLowerCase() === domain.toLowerCase())
12
- : null;
13
- const baseUrl = `${protocol + RootApi}`;
14
- const uri = `${baseUrl}/graphql/`;
15
- const csrfToken = options?.csrfToken || (!isServer ? Cookies.get("csrftoken") : "");
16
- const dynamicHost = domain
17
- ? `${domain}.${RootApi}`
18
- : RootApi;
1
+ // ============================================================
2
+ // @econneq/gql-auth Apollo Client factory
3
+ // ============================================================
4
+ //
5
+ // • Server-side → uses internal Docker URL + cookie forwarding
6
+ // Client-side → uses /api/graphql proxy + CSRF token
7
+ // Multi-tenant injects X-Tenant-ID / X-Process-ID headers
8
+ // Single-tenant falls back to Subdomains[0]
9
+ // ─────────────────────────────────────────────────────────────
10
+ import { ApolloClient, InMemoryCache, HttpLink } from "@apollo/client";
11
+ import { Env, assertServerEnv, externalBaseUrl, externalGraphQLUrl, internalGraphQLUrl, isServer, } from "./env";
12
+ import { buildTenantHeaders, resolveTenant } from "./tenant";
13
+ let _cookiesFn = null;
14
+ /**
15
+ * Inject Next.js `cookies` at app startup to keep this module
16
+ * free of a hard `next/headers` import (which breaks non-Next projects).
17
+ *
18
+ * Call once in your app layout or instrumentation file:
19
+ *
20
+ * ```ts
21
+ * import { cookies } from "next/headers";
22
+ * import { registerCookiesFn } from "@econneq/gql-auth";
23
+ * registerCookiesFn(cookies);
24
+ * ```
25
+ */
26
+ export function registerCookiesFn(fn) {
27
+ _cookiesFn = fn;
28
+ }
29
+ export async function getApolloClient({ options, domain, config, }) {
30
+ const server = isServer();
31
+ if (server)
32
+ assertServerEnv();
33
+ // ── Tenant resolution ────────────────────────────────────
34
+ const tenant = resolveTenant(config, domain ? { domain } : undefined);
35
+ const tenantHeaders = buildTenantHeaders(tenant, Env.apiKey);
36
+ // ── URI ─────────────────────────────────────────────────
37
+ const uri = server ? internalGraphQLUrl() : externalGraphQLUrl();
38
+ const destUrl = server
39
+ ? `http://${Env.backendInt}`
40
+ : externalBaseUrl();
41
+ // ── Source host (Referer / Host) ─────────────────────────
42
+ const sourceSubdomain = tenant?.subdomain ?? "public";
43
+ const sourceHost = `${Env.protocol}${sourceSubdomain}.${Env.domainUrl}`;
44
+ // ── CSRF ─────────────────────────────────────────────────
45
+ let csrfToken = options?.csrfToken ?? "";
46
+ if (!csrfToken && !server) {
47
+ try {
48
+ // Lazy import so SSR never executes this branch
49
+ const Cookies = (await import("js-cookie")).default;
50
+ csrfToken = Cookies.get("csrftoken") ?? "";
51
+ }
52
+ catch {
53
+ // js-cookie not available in some environments
54
+ }
55
+ }
56
+ // ── Cookie forwarding (server → backend) ─────────────────
57
+ let cookieHeader = options?.cookie ?? "";
58
+ if (!cookieHeader && server && _cookiesFn) {
59
+ try {
60
+ const store = await _cookiesFn();
61
+ cookieHeader = store.toString();
62
+ }
63
+ catch {
64
+ // cookies() may throw outside a request context
65
+ }
66
+ }
67
+ // ── Assemble headers ─────────────────────────────────────
19
68
  const headers = {
20
- 'Content-Type': 'application/json',
21
- 'X-API-KEY': apiKey,
22
- ...(options?.cookie && { 'Cookie': options.cookie }),
23
- ...(csrfToken && { 'X-CSRFToken': csrfToken }),
24
- ...(tenant && {
25
- 'X-Tenant-ID': tenant.subdomain,
26
- 'X-Process-ID': tenant?.processId || "",
27
- 'X-Widget-ID': tenant?.widgetID || "",
28
- }),
29
- 'Referer': baseUrl,
30
- 'Host': isServer ? dynamicHost : window.location.host,
69
+ "Content-Type": "application/json",
70
+ ...tenantHeaders,
71
+ ...(cookieHeader ? { Cookie: cookieHeader } : {}),
72
+ ...(csrfToken ? { "X-CSRFToken": csrfToken } : {}),
73
+ Referer: destUrl,
74
+ Host: server ? sourceHost : (typeof window !== "undefined" ? window.location.host : sourceHost),
31
75
  };
32
76
  return new ApolloClient({
33
- link: new HttpLink({
34
- uri,
35
- fetch, // Next.js polyfills fetch on server automatically
36
- headers,
37
- }),
77
+ link: new HttpLink({ uri, fetch, headers }),
38
78
  cache: new InMemoryCache(),
39
79
  defaultOptions: {
40
- mutate: { fetchPolicy: 'no-cache' },
41
- query: { fetchPolicy: 'no-cache' },
80
+ mutate: { fetchPolicy: "no-cache" },
81
+ query: { fetchPolicy: "no-cache" },
42
82
  },
43
83
  });
44
84
  }
85
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/env.d.ts ADDED
@@ -0,0 +1,35 @@
1
+ export declare const Env: {
2
+ /** e.g. "e-conneq.com" */
3
+ readonly domainUrl: string;
4
+ /** e.g. "https://" */
5
+ readonly protocol: string;
6
+ /**
7
+ * Internal backend used from within the Docker network (server-side).
8
+ * e.g. "api:8000"
9
+ */
10
+ readonly backendInt: string;
11
+ /**
12
+ * External backend reachable from the browser.
13
+ * e.g. "admin.e-conneq.com"
14
+ */
15
+ readonly backendExt: string;
16
+ /** Optional service-to-service API key. */
17
+ readonly apiKey: string;
18
+ };
19
+ export declare function assertServerEnv(): void;
20
+ export declare const isServer: () => boolean;
21
+ /**
22
+ * GraphQL endpoint used by server-side code (internal Docker network).
23
+ * e.g. http://api:8000/graphql/
24
+ */
25
+ export declare const internalGraphQLUrl: () => string;
26
+ /**
27
+ * GraphQL endpoint used by browser code (proxied Next.js API route).
28
+ */
29
+ export declare const externalGraphQLUrl: () => string;
30
+ /**
31
+ * Full external base URL.
32
+ * e.g. https://admin.e-conneq.com
33
+ */
34
+ export declare const externalBaseUrl: () => string;
35
+ //# sourceMappingURL=env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAiBA,eAAO,MAAM,GAAG;IACd,0BAA0B;;IAG1B,sBAAsB;;IAGtB;;;OAGG;;IAGH;;;OAGG;;IAGH,2CAA2C;;CAEnC,CAAC;AAIX,wBAAgB,eAAe,IAAI,IAAI,CAWtC;AAID,eAAO,MAAM,QAAQ,QAAO,OAAwC,CAAC;AAErE;;;GAGG;AACH,eAAO,MAAM,kBAAkB,QAAO,MACD,CAAC;AAEtC;;GAEG;AACH,eAAO,MAAM,kBAAkB,QAAO,MAAwB,CAAC;AAE/D;;;GAGG;AACH,eAAO,MAAM,eAAe,QAAO,MACC,CAAC"}
package/dist/env.js ADDED
@@ -0,0 +1,65 @@
1
+ // ============================================================
2
+ // @econneq/gql-auth — Environment resolver
3
+ // ============================================================
4
+ //
5
+ // All env variables are consumed here so the rest of the
6
+ // codebase never touches process.env directly.
7
+ // ─────────────────────────────────────────────────────────────
8
+ const get = (keys) => {
9
+ for (const key of keys) {
10
+ const val = typeof process !== "undefined" ? process.env[key] : undefined;
11
+ if (val)
12
+ return val;
13
+ }
14
+ return "";
15
+ };
16
+ export const Env = {
17
+ /** e.g. "e-conneq.com" */
18
+ domainUrl: get(["NEXT_PUBLIC_DOMAIN_URL", "DOMAIN_URL"]),
19
+ /** e.g. "https://" */
20
+ protocol: get(["NEXT_PUBLIC_PROTOCOL", "PROTOCOL"]),
21
+ /**
22
+ * Internal backend used from within the Docker network (server-side).
23
+ * e.g. "api:8000"
24
+ */
25
+ backendInt: get(["BACKEND_URL_INT", "NEXT_PUBLIC_BACKEND_URL_INT"]),
26
+ /**
27
+ * External backend reachable from the browser.
28
+ * e.g. "admin.e-conneq.com"
29
+ */
30
+ backendExt: get(["NEXT_PUBLIC_BACKEND_URL_EXT", "BACKEND_URL_EXT"]),
31
+ /** Optional service-to-service API key. */
32
+ apiKey: get(["API_KEY", "NEXT_PUBLIC_API_KEY"]),
33
+ };
34
+ // ─── Runtime validators ───────────────────────────────────────
35
+ export function assertServerEnv() {
36
+ const missing = [];
37
+ if (!Env.domainUrl)
38
+ missing.push("DOMAIN_URL");
39
+ if (!Env.protocol)
40
+ missing.push("PROTOCOL");
41
+ if (!Env.backendInt)
42
+ missing.push("BACKEND_URL_INT");
43
+ if (!Env.backendExt)
44
+ missing.push("BACKEND_URL_EXT");
45
+ if (missing.length) {
46
+ throw new Error(`[@econneq/gql-auth] Missing required env variables: ${missing.join(", ")}`);
47
+ }
48
+ }
49
+ // ─── URL builders ─────────────────────────────────────────────
50
+ export const isServer = () => typeof window === "undefined";
51
+ /**
52
+ * GraphQL endpoint used by server-side code (internal Docker network).
53
+ * e.g. http://api:8000/graphql/
54
+ */
55
+ export const internalGraphQLUrl = () => `http://${Env.backendInt}/graphql/`;
56
+ /**
57
+ * GraphQL endpoint used by browser code (proxied Next.js API route).
58
+ */
59
+ export const externalGraphQLUrl = () => `/api/graphql`;
60
+ /**
61
+ * Full external base URL.
62
+ * e.g. https://admin.e-conneq.com
63
+ */
64
+ export const externalBaseUrl = () => `${Env.protocol}${Env.backendExt}`;
65
+ //# sourceMappingURL=env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,2CAA2C;AAC3C,+DAA+D;AAC/D,EAAE;AACF,yDAAyD;AACzD,+CAA+C;AAC/C,gEAAgE;AAEhE,MAAM,GAAG,GAAG,CAAC,IAAc,EAAU,EAAE;IACrC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,GAAG,GACP,OAAO,OAAO,KAAK,WAAW,CAAC,CAAC,CAAE,OAAO,CAAC,GAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACzE,IAAI,GAAG;YAAE,OAAO,GAAG,CAAC;IACtB,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,GAAG,GAAG;IACjB,0BAA0B;IAC1B,SAAS,EAAE,GAAG,CAAC,CAAC,wBAAwB,EAAE,YAAY,CAAC,CAAC;IAExD,sBAAsB;IACtB,QAAQ,EAAE,GAAG,CAAC,CAAC,sBAAsB,EAAE,UAAU,CAAC,CAAC;IAEnD;;;OAGG;IACH,UAAU,EAAE,GAAG,CAAC,CAAC,iBAAiB,EAAE,6BAA6B,CAAC,CAAC;IAEnE;;;OAGG;IACH,UAAU,EAAE,GAAG,CAAC,CAAC,6BAA6B,EAAE,iBAAiB,CAAC,CAAC;IAEnE,2CAA2C;IAC3C,MAAM,EAAE,GAAG,CAAC,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;CACvC,CAAC;AAEX,iEAAiE;AAEjE,MAAM,UAAU,eAAe;IAC7B,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,CAAC,GAAG,CAAC,SAAS;QAAE,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC/C,IAAI,CAAC,GAAG,CAAC,QAAQ;QAAE,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC5C,IAAI,CAAC,GAAG,CAAC,UAAU;QAAE,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACrD,IAAI,CAAC,GAAG,CAAC,UAAU;QAAE,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACrD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CACb,uDAAuD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC5E,CAAC;IACJ,CAAC;AACH,CAAC;AAED,iEAAiE;AAEjE,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAY,EAAE,CAAC,OAAO,MAAM,KAAK,WAAW,CAAC;AAErE;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAW,EAAE,CAC7C,UAAU,GAAG,CAAC,UAAU,WAAW,CAAC;AAEtC;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAW,EAAE,CAAC,cAAc,CAAC;AAE/D;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,GAAW,EAAE,CAC1C,GAAG,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC"}
@@ -0,0 +1,10 @@
1
+ export type ParsedError = {
2
+ message: string;
3
+ code?: string;
4
+ };
5
+ /**
6
+ * Convert raw GraphQL errors into user-friendly strings.
7
+ * Extend the switch/map here to handle more backend error codes.
8
+ */
9
+ export declare function parseGraphQLErrors(errors: any[]): string[];
10
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,EAAE,CAY1D"}
package/dist/errors.js ADDED
@@ -0,0 +1,24 @@
1
+ // ============================================================
2
+ // @econneq/gql-auth — GraphQL error parser
3
+ // ============================================================
4
+ /**
5
+ * Convert raw GraphQL errors into user-friendly strings.
6
+ * Extend the switch/map here to handle more backend error codes.
7
+ */
8
+ export function parseGraphQLErrors(errors) {
9
+ return errors.map((err) => {
10
+ const msg = err?.message ?? "Unknown error";
11
+ if (/duplicate/i.test(msg))
12
+ return "Record already exists ❌";
13
+ if (/authentication/i.test(msg))
14
+ return "Login required ❌";
15
+ if (/permission/i.test(msg))
16
+ return "Permission denied ❌";
17
+ if (/not found/i.test(msg))
18
+ return "Record not found ❌";
19
+ if (/unique constraint/i.test(msg))
20
+ return "Duplicate value ❌";
21
+ return msg;
22
+ });
23
+ }
24
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,2CAA2C;AAC3C,+DAA+D;AAO/D;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAa;IAC9C,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAU,EAAE;QAChC,MAAM,GAAG,GAAW,GAAG,EAAE,OAAO,IAAI,eAAe,CAAC;QAEpD,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,yBAAyB,CAAC;QAC7D,IAAI,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,kBAAkB,CAAC;QAC3D,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,qBAAqB,CAAC;QAC1D,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,oBAAoB,CAAC;QACxD,IAAI,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,mBAAmB,CAAC;QAE/D,OAAO,GAAG,CAAC;IACb,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,24 @@
1
+ import type { JwtPayload } from "./types";
2
+ /**
3
+ * Read the JWT from cookies first, then localStorage.
4
+ * Returns null on the server (window is undefined).
5
+ */
6
+ export declare const getToken: () => string | null;
7
+ /**
8
+ * Decode the JWT and return the payload.
9
+ * Returns null when no token is present or decoding fails.
10
+ */
11
+ export declare const getUser: () => JwtPayload | null;
12
+ /**
13
+ * Clear all session state client-side.
14
+ * Does NOT call any server endpoint — combine with a Server Action
15
+ * or API route if you need to invalidate the session server-side.
16
+ */
17
+ export declare const logout: () => void;
18
+ /**
19
+ * Strip null / undefined / empty-string fields from an object
20
+ * before sending it as GraphQL variables.
21
+ * File objects are always preserved.
22
+ */
23
+ export declare const removeEmptyFields: <T extends Record<string, any>>(obj: T) => Partial<T>;
24
+ //# sourceMappingURL=functions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"functions.d.ts","sourceRoot":"","sources":["../src/functions.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAI1C;;;GAGG;AACH,eAAO,MAAM,QAAQ,QAAO,MAAM,GAAG,IAgBpC,CAAC;AAIF;;;GAGG;AACH,eAAO,MAAM,OAAO,QAAO,UAAU,GAAG,IAavC,CAAC;AAIF;;;;GAIG;AACH,eAAO,MAAM,MAAM,QAAO,IAezB,CAAC;AAIF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC7D,KAAK,CAAC,KACL,OAAO,CAAC,CAAC,CAuBX,CAAC"}
@@ -0,0 +1,86 @@
1
+ // ============================================================
2
+ // @econneq/gql-auth — Client utilities
3
+ // ============================================================
4
+ // ─── Token ───────────────────────────────────────────────────
5
+ /**
6
+ * Read the JWT from cookies first, then localStorage.
7
+ * Returns null on the server (window is undefined).
8
+ */
9
+ export const getToken = () => {
10
+ if (typeof window === "undefined")
11
+ return null;
12
+ try {
13
+ // Prefer cookie (set by server on login)
14
+ const fromCookie = document.cookie
15
+ .split("; ")
16
+ .find((row) => row.startsWith("token="))
17
+ ?.split("=")?.[1];
18
+ if (fromCookie)
19
+ return fromCookie;
20
+ }
21
+ catch {
22
+ // Cookies blocked (e.g. incognito with strict settings)
23
+ }
24
+ return localStorage.getItem("token");
25
+ };
26
+ // ─── User ────────────────────────────────────────────────────
27
+ /**
28
+ * Decode the JWT and return the payload.
29
+ * Returns null when no token is present or decoding fails.
30
+ */
31
+ export const getUser = () => {
32
+ const token = getToken();
33
+ if (!token)
34
+ return null;
35
+ try {
36
+ // jwtDecode is a peer dependency — lazy-required to keep SSR safe
37
+ const { jwtDecode } = require("jwt-decode");
38
+ return jwtDecode(token);
39
+ }
40
+ catch {
41
+ return null;
42
+ }
43
+ };
44
+ // ─── Logout ──────────────────────────────────────────────────
45
+ /**
46
+ * Clear all session state client-side.
47
+ * Does NOT call any server endpoint — combine with a Server Action
48
+ * or API route if you need to invalidate the session server-side.
49
+ */
50
+ export const logout = () => {
51
+ if (typeof window === "undefined")
52
+ return;
53
+ localStorage.removeItem("token");
54
+ // Expire the token cookie
55
+ document.cookie = "token=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/;";
56
+ // Expire every other cookie for this origin
57
+ document.cookie.split(";").forEach((c) => {
58
+ const name = c.trim().split("=")?.[0];
59
+ if (name) {
60
+ document.cookie = `${name}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/;`;
61
+ }
62
+ });
63
+ };
64
+ // ─── Data helpers ─────────────────────────────────────────────
65
+ /**
66
+ * Strip null / undefined / empty-string fields from an object
67
+ * before sending it as GraphQL variables.
68
+ * File objects are always preserved.
69
+ */
70
+ export const removeEmptyFields = (obj) => {
71
+ const result = {};
72
+ for (const key in obj) {
73
+ const value = obj[key];
74
+ const v = value;
75
+ const isFile = typeof File !== "undefined" &&
76
+ typeof v === "object" &&
77
+ v !== null &&
78
+ v instanceof File;
79
+ if (isFile ||
80
+ (value !== null && value !== undefined && value !== "")) {
81
+ result[key] = value;
82
+ }
83
+ }
84
+ return result;
85
+ };
86
+ //# sourceMappingURL=functions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"functions.js","sourceRoot":"","sources":["../src/functions.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,uCAAuC;AACvC,+DAA+D;AAI/D,gEAAgE;AAEhE;;;GAGG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAkB,EAAE;IAC1C,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IAE/C,IAAI,CAAC;QACH,yCAAyC;QACzC,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM;aAC/B,KAAK,CAAC,IAAI,CAAC;aACX,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACxC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAEpB,IAAI,UAAU;YAAE,OAAO,UAAU,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,wDAAwD;IAC1D,CAAC;IAED,OAAO,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACvC,CAAC,CAAC;AAEF,gEAAgE;AAEhE;;;GAGG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,GAAsB,EAAE;IAC7C,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,IAAI,CAAC;QACH,kEAAkE;QAClE,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,YAAY,CAEzC,CAAC;QACF,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAEF,gEAAgE;AAEhE;;;;GAIG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,GAAS,EAAE;IAC/B,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO;IAE1C,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAEjC,0BAA0B;IAC1B,QAAQ,CAAC,MAAM,GAAG,wDAAwD,CAAC;IAE3E,4CAA4C;IAC5C,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QACvC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACtC,IAAI,IAAI,EAAE,CAAC;YACT,QAAQ,CAAC,MAAM,GAAG,GAAG,IAAI,mDAAmD,CAAC;QAC/E,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,iEAAiE;AAEjE;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,GAAM,EACM,EAAE;IACd,MAAM,MAAM,GAAe,EAAE,CAAC;IAE9B,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;QACtB,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QAExB,MAAM,CAAC,GAAG,KAAgB,CAAC;QAE9B,MAAM,MAAM,GACV,OAAO,IAAI,KAAK,WAAW;YAC3B,OAAO,CAAC,KAAK,QAAQ;YACrB,CAAC,KAAK,IAAI;YACV,CAAC,YAAY,IAAI,CAAC;QAEhB,IACE,MAAM;YACN,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,CAAC,EACvD,CAAC;YACD,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACtB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,85 +1,12 @@
1
- import { ReactNode } from "react";
2
- import { queryServerGraphQL } from './query-server.js';
3
- import { ApiFactory } from './api-factory.js';
4
- import { uploadGraphQLMutation } from './upload-gql.js';
5
- export { queryServerGraphQL, ApiFactory, uploadGraphQLMutation };
6
- export type ConfigType = {
7
- protocol: string;
8
- RootApi: string;
9
- NoDomainRootApi: string;
10
- Subdomains: SubdomainItem[];
11
- apiKey: string;
12
- fonts: string[];
13
- };
14
- export type SubdomainItem = {
15
- id: number;
16
- subdomain: string;
17
- processId: string;
18
- widgetID?: string;
19
- };
20
- export type ApolloOptions = {
21
- csrfToken?: string;
22
- cookie?: string;
23
- };
24
- export type SelectOptions = string | {
25
- label: string;
26
- value: string | number;
27
- };
28
- export interface InterLoginData {
29
- username: string;
30
- password: string;
31
- parent?: boolean;
32
- }
33
- export interface JwtPayload {
34
- iss?: string;
35
- sub?: string;
36
- aud?: string[] | string;
37
- exp: number;
38
- nbf?: number;
39
- iat?: number;
40
- jti?: string;
41
- user_id?: number;
42
- username?: string;
43
- matricle?: string;
44
- photo?: string;
45
- is_superuser?: boolean;
46
- is_staff?: boolean;
47
- is_active?: boolean;
48
- is_hod?: boolean;
49
- role?: string;
50
- dept?: string[] | any;
51
- page?: string[] | any;
52
- school?: number[] | any;
53
- domain?: number[] | any;
54
- language?: string[];
55
- last_login?: any;
56
- }
57
- export interface InterField {
58
- name: string;
59
- label: string;
60
- inputType: 'text' | "textarea" | 'number' | 'float' | 'search-select' | 'select' | 'file' | 'date' | 'password';
61
- type: 'text' | 'textarea' | 'number' | 'float' | 'email' | 'date' | 'file' | 'password';
62
- required?: boolean;
63
- min?: number;
64
- max?: number;
65
- message?: string;
66
- options?: {
67
- value: string | number;
68
- label: string;
69
- }[];
70
- show?: boolean;
71
- sort?: boolean;
72
- placeholder?: string;
73
- acceptedFileType?: string;
74
- icon?: ReactNode;
75
- labelIcon?: ReactNode;
76
- }
77
- export interface InterFieldList {
78
- rowId: number | string;
79
- desktopCols: 1 | 2 | 3 | 4;
80
- mobileCols: 1 | 2;
81
- fields: InterField[];
82
- }
83
- export { capitalizeEachWord, errorLog, getToken, getUser, logout, getStoredFont, getTimeAgo, getLanguage, getTemplate, decodeUrlID, removeEmptyFields, Alert, validateFormFields, lastYears, formatText, } from './utilsGeneral.js';
84
- export { getProfile, getClass, getClassName, getLevel, getAcademicYear, getAcademicYearStudent } from './utilsSchool.js';
1
+ export type { ConfigType, SubdomainItem, ApolloOptions, JwtPayload, InterLoginData, TenantParams, AlertOptions, ApiFactoryOptions, UploadGraphQLArgs, ServerQueryArgs, ServerMutationArgs, } from "./types.js";
2
+ export { Env, isServer, internalGraphQLUrl, externalGraphQLUrl, externalBaseUrl } from "./env.js";
3
+ export { resolveTenant, buildTenantHeaders, assertTenant } from "./tenant.js";
4
+ export type { ResolvedTenant } from "./tenant.js";
5
+ export { getApolloClient, registerCookiesFn } from "./client.js";
6
+ export { getToken, getUser, logout, removeEmptyFields } from "./functions.js";
7
+ export { getServerToken, getServerUser, getServerCookieString, getPermissions, } from "./authServer.js";
8
+ export { queryServerGraphQL, mutateServerGraphQL } from "./query-server.js";
9
+ export { uploadGraphQLMutation } from "./upload-gql.js";
10
+ export { ApiFactory } from "./api-factory.js";
11
+ export { parseGraphQLErrors } from "./errors.js";
85
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,YAAY,EACV,UAAU,EACV,aAAa,EACb,aAAa,EACb,UAAU,EACV,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAIpB,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAIlG,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC9E,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAIlD,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAIjE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAI9E,OAAO,EACL,cAAc,EACd,aAAa,EACb,qBAAqB,EACrB,cAAc,GACf,MAAM,iBAAiB,CAAC;AAIzB,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAI5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAIxD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAI9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC"}
package/dist/index.js CHANGED
@@ -1,8 +1,22 @@
1
- // 1. Export the Core Functions
2
- import { queryServerGraphQL } from './query-server.js';
3
- import { ApiFactory } from './api-factory.js';
4
- import { uploadGraphQLMutation } from './upload-gql.js';
5
- export { queryServerGraphQL, ApiFactory, uploadGraphQLMutation };
6
- // 3. Export Helper Utilities (Optional)
7
- export { capitalizeEachWord, errorLog, getToken, getUser, logout, getStoredFont, getTimeAgo, getLanguage, getTemplate, decodeUrlID, removeEmptyFields, Alert, validateFormFields, lastYears, formatText, } from './utilsGeneral.js';
8
- export { getProfile, getClass, getClassName, getLevel, getAcademicYear, getAcademicYearStudent } from './utilsSchool.js';
1
+ // ============================================================
2
+ // @econneq/gql-auth Public API
3
+ // ============================================================
4
+ // ─── Environment ─────────────────────────────────────────────
5
+ export { Env, isServer, internalGraphQLUrl, externalGraphQLUrl, externalBaseUrl } from "./env.js";
6
+ // ─── Tenant ──────────────────────────────────────────────────
7
+ export { resolveTenant, buildTenantHeaders, assertTenant } from "./tenant.js";
8
+ // ─── Apollo client ────────────────────────────────────────────
9
+ export { getApolloClient, registerCookiesFn } from "./client.js";
10
+ // ─── Client-side utils ───────────────────────────────────────
11
+ export { getToken, getUser, logout, removeEmptyFields } from "./functions.js";
12
+ // ─── Server-side auth ────────────────────────────────────────
13
+ export { getServerToken, getServerUser, getServerCookieString, getPermissions, } from "./authServer.js";
14
+ // ─── GraphQL — server ─────────────────────────────────────────
15
+ export { queryServerGraphQL, mutateServerGraphQL } from "./query-server.js";
16
+ // ─── GraphQL — client (upload / multipart) ────────────────────
17
+ export { uploadGraphQLMutation } from "./upload-gql.js";
18
+ // ─── ApiFactory ───────────────────────────────────────────────
19
+ export { ApiFactory } from "./api-factory.js";
20
+ // ─── Error helpers ────────────────────────────────────────────
21
+ export { parseGraphQLErrors } from "./errors.js";
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,iCAAiC;AACjC,+DAA+D;AAkB/D,gEAAgE;AAEhE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAElG,gEAAgE;AAEhE,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG9E,iEAAiE;AAEjE,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEjE,gEAAgE;AAEhE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAE9E,gEAAgE;AAEhE,OAAO,EACL,cAAc,EACd,aAAa,EACb,qBAAqB,EACrB,cAAc,GACf,MAAM,iBAAiB,CAAC;AAEzB,iEAAiE;AAEjE,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE5E,iEAAiE;AAEjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAExD,iEAAiE;AAEjE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,iEAAiE;AAEjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC"}