@dokamerce/web-sdk 0.9.0
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/.ls-lint.yml +8 -0
- package/.nvmrc +1 -0
- package/.prettierignore +0 -0
- package/.prettierrc.js +3 -0
- package/README.md +47 -0
- package/codegen.yml +11 -0
- package/dist/graphql/__generated__/gateway.d.ts +2073 -0
- package/dist/graphql/__generated__/gateway.js +747 -0
- package/dist/graphql/__generated__/gateway.js.map +1 -0
- package/dist/graphql/src/gateway/index.d.ts +2 -0
- package/dist/graphql/src/gateway/index.js +20 -0
- package/dist/graphql/src/gateway/index.js.map +1 -0
- package/dist/graphql/src/utils/extract-graphql-error-message.util.d.ts +1 -0
- package/dist/graphql/src/utils/extract-graphql-error-message.util.js +16 -0
- package/dist/graphql/src/utils/extract-graphql-error-message.util.js.map +1 -0
- package/dist/graphql/src/utils/index.d.ts +4 -0
- package/dist/graphql/src/utils/index.js +21 -0
- package/dist/graphql/src/utils/index.js.map +1 -0
- package/dist/graphql/src/utils/use-graphql-mutation.util.d.ts +15 -0
- package/dist/graphql/src/utils/use-graphql-mutation.util.js +37 -0
- package/dist/graphql/src/utils/use-graphql-mutation.util.js.map +1 -0
- package/dist/graphql/src/utils/use-infinite-query.util.d.ts +23 -0
- package/dist/graphql/src/utils/use-infinite-query.util.js +57 -0
- package/dist/graphql/src/utils/use-infinite-query.util.js.map +1 -0
- package/dist/graphql/src/utils/use.query.util.d.ts +13 -0
- package/dist/graphql/src/utils/use.query.util.js +19 -0
- package/dist/graphql/src/utils/use.query.util.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/web-sdk/src/constants/graphql-base.constant.d.ts +1 -0
- package/dist/web-sdk/src/constants/graphql-base.constant.js +5 -0
- package/dist/web-sdk/src/constants/graphql-base.constant.js.map +1 -0
- package/dist/web-sdk/src/contexts/index.d.ts +12 -0
- package/dist/web-sdk/src/contexts/index.js +29 -0
- package/dist/web-sdk/src/contexts/index.js.map +1 -0
- package/dist/web-sdk/src/functions/init-sdk-client.function.d.ts +7 -0
- package/dist/web-sdk/src/functions/init-sdk-client.function.js +16 -0
- package/dist/web-sdk/src/functions/init-sdk-client.function.js.map +1 -0
- package/dist/web-sdk/src/functions/init-sdk.function.d.ts +6 -0
- package/dist/web-sdk/src/functions/init-sdk.function.js +23 -0
- package/dist/web-sdk/src/functions/init-sdk.function.js.map +1 -0
- package/dist/web-sdk/src/functions/safe-call.function.d.ts +9 -0
- package/dist/web-sdk/src/functions/safe-call.function.js +21 -0
- package/dist/web-sdk/src/functions/safe-call.function.js.map +1 -0
- package/dist/web-sdk/src/index.d.ts +8 -0
- package/dist/web-sdk/src/index.js +35 -0
- package/dist/web-sdk/src/index.js.map +1 -0
- package/dist/web-sdk/src/services/attributes.d.ts +8 -0
- package/dist/web-sdk/src/services/attributes.js +25 -0
- package/dist/web-sdk/src/services/attributes.js.map +1 -0
- package/dist/web-sdk/src/services/brands.d.ts +8 -0
- package/dist/web-sdk/src/services/brands.js +25 -0
- package/dist/web-sdk/src/services/brands.js.map +1 -0
- package/dist/web-sdk/src/services/categories.d.ts +8 -0
- package/dist/web-sdk/src/services/categories.js +25 -0
- package/dist/web-sdk/src/services/categories.js.map +1 -0
- package/dist/web-sdk/src/services/colors.d.ts +8 -0
- package/dist/web-sdk/src/services/colors.js +25 -0
- package/dist/web-sdk/src/services/colors.js.map +1 -0
- package/dist/web-sdk/src/services/customers.d.ts +10 -0
- package/dist/web-sdk/src/services/customers.js +33 -0
- package/dist/web-sdk/src/services/customers.js.map +1 -0
- package/dist/web-sdk/src/services/files.d.ts +8 -0
- package/dist/web-sdk/src/services/files.js +24 -0
- package/dist/web-sdk/src/services/files.js.map +1 -0
- package/dist/web-sdk/src/services/index.d.ts +9 -0
- package/dist/web-sdk/src/services/index.js +26 -0
- package/dist/web-sdk/src/services/index.js.map +1 -0
- package/dist/web-sdk/src/services/metrics.d.ts +7 -0
- package/dist/web-sdk/src/services/metrics.js +20 -0
- package/dist/web-sdk/src/services/metrics.js.map +1 -0
- package/dist/web-sdk/src/services/orders.d.ts +10 -0
- package/dist/web-sdk/src/services/orders.js +33 -0
- package/dist/web-sdk/src/services/orders.js.map +1 -0
- package/dist/web-sdk/src/services/products.d.ts +11 -0
- package/dist/web-sdk/src/services/products.js +36 -0
- package/dist/web-sdk/src/services/products.js.map +1 -0
- package/dist/web-sdk/src/services/sellers.d.ts +10 -0
- package/dist/web-sdk/src/services/sellers.js +33 -0
- package/dist/web-sdk/src/services/sellers.js.map +1 -0
- package/dist/web-sdk/src/typings/pagination.typing.d.ts +15 -0
- package/dist/web-sdk/src/typings/pagination.typing.js +3 -0
- package/dist/web-sdk/src/typings/pagination.typing.js.map +1 -0
- package/dist/web-sdk/src/typings/sdk.typing.d.ts +14 -0
- package/dist/web-sdk/src/typings/sdk.typing.js +3 -0
- package/dist/web-sdk/src/typings/sdk.typing.js.map +1 -0
- package/dist/web-sdk/src/utils/fetch-all-infinite.util.d.ts +5 -0
- package/dist/web-sdk/src/utils/fetch-all-infinite.util.js +24 -0
- package/dist/web-sdk/src/utils/fetch-all-infinite.util.js.map +1 -0
- package/package.json +20 -0
- package/src/constants/graphql-base.constant.ts +1 -0
- package/src/contexts/index.ts +33 -0
- package/src/functions/init-sdk-client.function.ts +19 -0
- package/src/functions/init-sdk.function.ts +26 -0
- package/src/functions/safe-call.function.ts +29 -0
- package/src/index.d.ts +0 -0
- package/src/index.ts +74 -0
- package/src/services/attributes.ts +42 -0
- package/src/services/brands.ts +41 -0
- package/src/services/categories.ts +41 -0
- package/src/services/colors.ts +41 -0
- package/src/services/customers.ts +60 -0
- package/src/services/files.ts +58 -0
- package/src/services/index.ts +9 -0
- package/src/services/metrics.ts +39 -0
- package/src/services/orders.ts +59 -0
- package/src/services/products.ts +65 -0
- package/src/services/sellers.ts +91 -0
- package/src/typings/pagination.typing.ts +18 -0
- package/src/typings/sdk.typing.ts +27 -0
- package/src/utils/fetch-all-infinite.util.ts +41 -0
- package/tsconfig.dev.json +32 -0
- package/tsconfig.json +37 -0
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { GraphQLClient } from "graphql-request";
|
|
2
|
+
import {
|
|
3
|
+
CreateSellerDocument,
|
|
4
|
+
CreateSellerMutation,
|
|
5
|
+
CreateSellerMutationVariables,
|
|
6
|
+
UpdateSellerDocument,
|
|
7
|
+
UpdateSellerMutation,
|
|
8
|
+
UpdateSellerMutationVariables,
|
|
9
|
+
PaginatedSellersDocument,
|
|
10
|
+
PaginatedSellersQuery,
|
|
11
|
+
PaginatedSellersQueryVariables,
|
|
12
|
+
InfiniteSellersDocument,
|
|
13
|
+
InfiniteSellersQuery,
|
|
14
|
+
InfiniteSellersQueryVariables,
|
|
15
|
+
} from "@dokamerce/graphql";
|
|
16
|
+
import {
|
|
17
|
+
fetchAllInfinite,
|
|
18
|
+
InfiniteListSdk,
|
|
19
|
+
} from "@/utils/fetch-all-infinite.util";
|
|
20
|
+
|
|
21
|
+
export interface SellersSdk {
|
|
22
|
+
// Mutations
|
|
23
|
+
create: (
|
|
24
|
+
variables: CreateSellerMutationVariables,
|
|
25
|
+
) => Promise<CreateSellerMutation>;
|
|
26
|
+
update: (
|
|
27
|
+
variables: UpdateSellerMutationVariables,
|
|
28
|
+
) => Promise<UpdateSellerMutation>;
|
|
29
|
+
// Paginated queries
|
|
30
|
+
paginated: (
|
|
31
|
+
variables?: PaginatedSellersQueryVariables,
|
|
32
|
+
) => Promise<PaginatedSellersQuery>;
|
|
33
|
+
// Infinite queries
|
|
34
|
+
infinite: (
|
|
35
|
+
variables: InfiniteSellersQueryVariables,
|
|
36
|
+
) => Promise<InfiniteSellersQuery>;
|
|
37
|
+
all: (
|
|
38
|
+
variables: InfiniteSellersQueryVariables,
|
|
39
|
+
) => Promise<InfiniteSellersQuery["infiniteSellers"]["edges"][number]["node"][]>;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export function createSellersSdk(client: GraphQLClient): SellersSdk {
|
|
43
|
+
const mutations = {
|
|
44
|
+
create(variables: CreateSellerMutationVariables) {
|
|
45
|
+
return client.request<CreateSellerMutation>(
|
|
46
|
+
CreateSellerDocument,
|
|
47
|
+
variables,
|
|
48
|
+
);
|
|
49
|
+
},
|
|
50
|
+
update(variables: UpdateSellerMutationVariables) {
|
|
51
|
+
return client.request<UpdateSellerMutation>(
|
|
52
|
+
UpdateSellerDocument,
|
|
53
|
+
variables,
|
|
54
|
+
);
|
|
55
|
+
},
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
const paginated = {
|
|
59
|
+
paginated(variables: PaginatedSellersQueryVariables = {}) {
|
|
60
|
+
return client.request<PaginatedSellersQuery>(
|
|
61
|
+
PaginatedSellersDocument,
|
|
62
|
+
variables,
|
|
63
|
+
);
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
const infinite = {
|
|
68
|
+
infinite(variables: InfiniteSellersQueryVariables) {
|
|
69
|
+
return client.request<InfiniteSellersQuery>(
|
|
70
|
+
InfiniteSellersDocument,
|
|
71
|
+
variables,
|
|
72
|
+
);
|
|
73
|
+
},
|
|
74
|
+
all(variables: InfiniteSellersQueryVariables) {
|
|
75
|
+
const sdk: InfiniteListSdk<
|
|
76
|
+
InfiniteSellersQuery,
|
|
77
|
+
InfiniteSellersQueryVariables
|
|
78
|
+
> = {
|
|
79
|
+
listInfinite: (v) =>
|
|
80
|
+
client.request<InfiniteSellersQuery>(InfiniteSellersDocument, v),
|
|
81
|
+
};
|
|
82
|
+
return fetchAllInfinite<
|
|
83
|
+
InfiniteSellersQuery["infiniteSellers"]["edges"][number]["node"],
|
|
84
|
+
InfiniteSellersQuery,
|
|
85
|
+
InfiniteSellersQueryVariables
|
|
86
|
+
>(sdk, variables, (res) => res.infiniteSellers);
|
|
87
|
+
},
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
return { ...mutations, ...paginated, ...infinite };
|
|
91
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export type PageInfo = {
|
|
2
|
+
hasNextPage: boolean;
|
|
3
|
+
endCursor?: string | null;
|
|
4
|
+
};
|
|
5
|
+
|
|
6
|
+
export type Edge<T> = {
|
|
7
|
+
node: T;
|
|
8
|
+
cursor?: string;
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
export type Connection<T> = {
|
|
12
|
+
edges?: Edge<T>[] | null;
|
|
13
|
+
pageInfo?: PageInfo | null;
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
export type CursorVariables = {
|
|
17
|
+
after?: string | null;
|
|
18
|
+
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// import { SDKError } from "./functions/safe-call.function";
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
AttributesSdk,
|
|
5
|
+
BrandsSdk,
|
|
6
|
+
CategoriesSdk,
|
|
7
|
+
ColorsSdk,
|
|
8
|
+
CustomersSdk,
|
|
9
|
+
FileUploadSdk,
|
|
10
|
+
OrdersSdk,
|
|
11
|
+
ProductsSdk,
|
|
12
|
+
SellersSdk,
|
|
13
|
+
} from "@/services";
|
|
14
|
+
import { MetricsSdk } from "@/services/metrics";
|
|
15
|
+
|
|
16
|
+
export interface DokamerceSDK {
|
|
17
|
+
products: ProductsSdk;
|
|
18
|
+
attributes: AttributesSdk;
|
|
19
|
+
brands: BrandsSdk;
|
|
20
|
+
categories: CategoriesSdk;
|
|
21
|
+
colors: ColorsSdk;
|
|
22
|
+
customers: CustomersSdk;
|
|
23
|
+
metrics: MetricsSdk;
|
|
24
|
+
files: FileUploadSdk;
|
|
25
|
+
orders: OrdersSdk;
|
|
26
|
+
sellers: SellersSdk;
|
|
27
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { Connection, CursorVariables } from "../typings/pagination.typing";
|
|
2
|
+
|
|
3
|
+
export interface InfiniteListSdk<TResponse, TVariables> {
|
|
4
|
+
listInfinite(variables: TVariables): Promise<TResponse>;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Generic helper to fetch all nodes from a cursor-based infinite connection
|
|
9
|
+
*/
|
|
10
|
+
export async function fetchAllInfinite<
|
|
11
|
+
TNode,
|
|
12
|
+
TResponse,
|
|
13
|
+
TVariables extends (CursorVariables)
|
|
14
|
+
>(
|
|
15
|
+
sdk: InfiniteListSdk<TResponse, TVariables>,
|
|
16
|
+
variables: TVariables,
|
|
17
|
+
selectConnection: (response: TResponse) => Connection<TNode> | null | undefined
|
|
18
|
+
): Promise<TNode[]> {
|
|
19
|
+
let after = variables.after;
|
|
20
|
+
const items: TNode[] = [];
|
|
21
|
+
|
|
22
|
+
while (true) {
|
|
23
|
+
const res = await sdk.listInfinite({
|
|
24
|
+
...variables,
|
|
25
|
+
after,
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
const connection = selectConnection(res);
|
|
29
|
+
if (!connection) break;
|
|
30
|
+
|
|
31
|
+
const edges = connection.edges ?? [];
|
|
32
|
+
items.push(...edges.map((e) => e.node));
|
|
33
|
+
|
|
34
|
+
const pageInfo = connection.pageInfo;
|
|
35
|
+
if (!pageInfo?.hasNextPage) break;
|
|
36
|
+
|
|
37
|
+
after = pageInfo.endCursor;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
return items;
|
|
41
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"extends": "./tsconfig.json",
|
|
3
|
+
"compilerOptions": {
|
|
4
|
+
"module": "commonjs",
|
|
5
|
+
"declaration": true,
|
|
6
|
+
"removeComments": true,
|
|
7
|
+
"emitDecoratorMetadata": true,
|
|
8
|
+
"experimentalDecorators": true,
|
|
9
|
+
"allowSyntheticDefaultImports": true,
|
|
10
|
+
"target": "ES2023",
|
|
11
|
+
"sourceMap": true,
|
|
12
|
+
"outDir": "./dist",
|
|
13
|
+
"incremental": true,
|
|
14
|
+
"skipLibCheck": true,
|
|
15
|
+
"strict": true,
|
|
16
|
+
"strictFunctionTypes": true,
|
|
17
|
+
"strictNullChecks": true,
|
|
18
|
+
"strictBindCallApply": true,
|
|
19
|
+
"strictPropertyInitialization": true,
|
|
20
|
+
"noImplicitThis": true,
|
|
21
|
+
"noImplicitAny": true,
|
|
22
|
+
"alwaysStrict": true,
|
|
23
|
+
"noUnusedLocals": true,
|
|
24
|
+
"noUnusedParameters": true,
|
|
25
|
+
"noImplicitReturns": true,
|
|
26
|
+
"noFallthroughCasesInSwitch": true,
|
|
27
|
+
"forceConsistentCasingInFileNames": false,
|
|
28
|
+
"resolveJsonModule": true,
|
|
29
|
+
"types": ["expect-more-jest", "jest", "node"],
|
|
30
|
+
"baseUrl": "./"
|
|
31
|
+
}
|
|
32
|
+
}
|
package/tsconfig.json
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"module": "commonjs",
|
|
4
|
+
"declaration": true,
|
|
5
|
+
"removeComments": true,
|
|
6
|
+
"emitDecoratorMetadata": true,
|
|
7
|
+
"experimentalDecorators": true,
|
|
8
|
+
"allowSyntheticDefaultImports": true,
|
|
9
|
+
"target": "ES2023",
|
|
10
|
+
"sourceMap": true,
|
|
11
|
+
"outDir": "./dist",
|
|
12
|
+
"incremental": true,
|
|
13
|
+
"skipLibCheck": true,
|
|
14
|
+
"strict": true,
|
|
15
|
+
"strictFunctionTypes": true,
|
|
16
|
+
"strictNullChecks": true,
|
|
17
|
+
"strictBindCallApply": true,
|
|
18
|
+
"strictPropertyInitialization": true,
|
|
19
|
+
"noImplicitThis": true,
|
|
20
|
+
"noImplicitAny": true,
|
|
21
|
+
"alwaysStrict": true,
|
|
22
|
+
"noUnusedLocals": true,
|
|
23
|
+
"noUnusedParameters": true,
|
|
24
|
+
"noImplicitReturns": true,
|
|
25
|
+
"noFallthroughCasesInSwitch": true,
|
|
26
|
+
"forceConsistentCasingInFileNames": false,
|
|
27
|
+
"resolveJsonModule": true,
|
|
28
|
+
"types": ["expect-more-jest", "jest", "node"],
|
|
29
|
+
"baseUrl": "./",
|
|
30
|
+
"paths": {
|
|
31
|
+
"@dokamerce/common": ["../common/src"],
|
|
32
|
+
"@/*": ["./src/*"],
|
|
33
|
+
"@dokamerce/graphql": ["../graphql/src/gateway"],
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"exclude": ["../../packages/graphql/__generated__/**/*.ts"]
|
|
37
|
+
}
|