@thorprovider/adapters 5.0.9 → 5.0.11
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/.turbo/turbo-build.log +18 -0
- package/.turbo/turbo-test.log +897 -0
- package/.turbo/turbo-type-check.log +0 -0
- package/AGENTS.md +1 -1
- package/dist/.tsbuildinfo +1 -0
- package/dist/index.d.mts +348 -11
- package/dist/index.d.ts +348 -11
- package/dist/index.js +1393 -496
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1386 -498
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
- package/publish.log +93 -0
- package/src/core/errors.ts +31 -0
- package/src/factory/index.ts +16 -6
- package/src/factory/provider-types.test.ts +32 -0
- package/src/factory/provider-types.ts +176 -0
- package/src/index.ts +6 -4
- package/src/providers/index.ts +1 -1
- package/src/providers/medusa/available-filters.test.ts +280 -0
- package/src/providers/medusa/catalog-facet-support.test.ts +715 -0
- package/src/providers/medusa/catalog-query.test.ts +422 -0
- package/src/providers/medusa/catalog-sort.test.ts +175 -0
- package/src/providers/medusa/index.test.ts +480 -0
- package/src/providers/medusa/index.ts +1490 -518
- package/src/providers/medusa/live-smoke.test.ts +68 -0
- package/src/providers/medusa/transforms.test.ts +177 -0
- package/src/providers/medusa/transforms.ts +145 -66
- package/src/providers/mock/catalog-query.test.ts +355 -0
- package/src/providers/mock/index.test.ts +47 -0
- package/src/providers/mock/index.ts +43 -1
- package/src/providers/mock/mock.ts +324 -2
- package/src/types/completion.ts +57 -0
- package/src/types/index.ts +7 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@thorprovider/adapters",
|
|
3
|
-
"version": "5.0.
|
|
3
|
+
"version": "5.0.11",
|
|
4
4
|
"description": "Framework-agnostic commerce adapters for Thor Commerce ecosystem - Multi-platform support with unified API",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"registry": "https://registry.npmjs.org",
|
|
@@ -45,4 +45,4 @@
|
|
|
45
45
|
"directory": "packages/adapters"
|
|
46
46
|
},
|
|
47
47
|
"license": "MIT"
|
|
48
|
-
}
|
|
48
|
+
}
|
package/publish.log
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
npm warn Unknown project config "network-concurrency". This will stop working in the next major version of npm.
|
|
2
|
+
npm warn publish npm auto-corrected some errors in your package.json when publishing. Please run "npm pkg fix" to address these errors.
|
|
3
|
+
npm warn publish errors corrected:
|
|
4
|
+
npm warn publish "repository.url" was normalized to "git+https://github.com/thorprovider/thor-commerce.git"
|
|
5
|
+
npm notice
|
|
6
|
+
npm notice 📦 @thor/adapters@3.0.1
|
|
7
|
+
npm notice Tarball Contents
|
|
8
|
+
npm notice 629B AGENTS.md
|
|
9
|
+
npm notice 9.1kB CHANGELOG.md
|
|
10
|
+
npm notice 19.2kB README.md
|
|
11
|
+
npm notice 73.6kB dist/index.d.mts
|
|
12
|
+
npm notice 73.6kB dist/index.d.ts
|
|
13
|
+
npm notice 191.6kB dist/index.js
|
|
14
|
+
npm notice 377.7kB dist/index.js.map
|
|
15
|
+
npm notice 187.4kB dist/index.mjs
|
|
16
|
+
npm notice 377.4kB dist/index.mjs.map
|
|
17
|
+
npm notice 4.7kB docs/authentication.md
|
|
18
|
+
npm notice 4.3kB docs/capabilities-system.md
|
|
19
|
+
npm notice 9.9kB docs/category-customization.md
|
|
20
|
+
npm notice 11.0kB docs/fetch-reliability-solution.md
|
|
21
|
+
npm notice 4.4kB docs/getting-started.md
|
|
22
|
+
npm notice 7.8kB docs/multi-tenant-channel-scoping.md
|
|
23
|
+
npm notice 4.5kB docs/profile-management.md
|
|
24
|
+
npm notice 3.7kB docs/providers-overview.md
|
|
25
|
+
npm notice 2.1kB docs/RETRY_SOLUTION_SUMMARY.md
|
|
26
|
+
npm notice 5.2kB docs/services-overview.md
|
|
27
|
+
npm notice 4.0kB docs/update-documentation.md
|
|
28
|
+
npm notice 1.2kB package.json
|
|
29
|
+
npm notice 6.3kB quick-reference.md
|
|
30
|
+
npm notice 2.5kB src/admin/AdminAuthService.ts
|
|
31
|
+
npm notice 2.4kB src/admin/AdminSessionService.ts
|
|
32
|
+
npm notice 414B src/admin/index.ts
|
|
33
|
+
npm notice 4.2kB src/admin/MetricsService.ts
|
|
34
|
+
npm notice 2.5kB src/backend/BackendMetadataAdapter.ts
|
|
35
|
+
npm notice 3.5kB src/backend/factory.ts
|
|
36
|
+
npm notice 312B src/backend/index.ts
|
|
37
|
+
npm notice 3.9kB src/backend/medusa/MedusaMetadataAdapter.ts
|
|
38
|
+
npm notice 6.3kB src/core/errors.js
|
|
39
|
+
npm notice 3.5kB src/core/errors.ts
|
|
40
|
+
npm notice 11.3kB src/core/fetch-utils.js
|
|
41
|
+
npm notice 6.0kB src/core/fetch-utils.ts
|
|
42
|
+
npm notice 141B src/core/index.ts
|
|
43
|
+
npm notice 2.3kB src/core/logger.js
|
|
44
|
+
npm notice 1.1kB src/core/logger.ts
|
|
45
|
+
npm notice 2.0kB src/factory/index.ts
|
|
46
|
+
npm notice 4.5kB src/index.ts
|
|
47
|
+
npm notice 2.7kB src/lib/money-transform.ts
|
|
48
|
+
npm notice 6.2kB src/metadata/channel-scope-validation.js
|
|
49
|
+
npm notice 5.1kB src/metadata/channel-scope-validation.ts
|
|
50
|
+
npm notice 7.6kB src/metadata/channel-scope.js
|
|
51
|
+
npm notice 8.2kB src/metadata/channel-scope.ts
|
|
52
|
+
npm notice 3.3kB src/metadata/index.js
|
|
53
|
+
npm notice 810B src/metadata/index.ts
|
|
54
|
+
npm notice 148B src/providers/index.ts
|
|
55
|
+
npm notice 30.0kB src/providers/medusa/auth.js
|
|
56
|
+
npm notice 15.1kB src/providers/medusa/auth.ts
|
|
57
|
+
npm notice 6.2kB src/providers/medusa/fulfillment-planner.ts
|
|
58
|
+
npm notice 151.8kB src/providers/medusa/index.js
|
|
59
|
+
npm notice 147.6kB src/providers/medusa/index.ts
|
|
60
|
+
npm notice 184B src/providers/medusa/medusa.ts
|
|
61
|
+
npm notice 11.0kB src/providers/medusa/payment.js
|
|
62
|
+
npm notice 7.2kB src/providers/medusa/payment.ts
|
|
63
|
+
npm notice 25.8kB src/providers/medusa/transforms.js
|
|
64
|
+
npm notice 19.8kB src/providers/medusa/transforms.ts
|
|
65
|
+
npm notice 5.5kB src/resilience/circuit-breaker.ts
|
|
66
|
+
npm notice 238B src/resilience/index.ts
|
|
67
|
+
npm notice 7.6kB src/resilience/README.md
|
|
68
|
+
npm notice 4.8kB src/types/capabilities.types.js
|
|
69
|
+
npm notice 4.7kB src/types/capabilities.types.ts
|
|
70
|
+
npm notice 513B src/types/index.ts
|
|
71
|
+
npm notice 350B src/types/provider.js
|
|
72
|
+
npm notice 365B src/types/provider.ts
|
|
73
|
+
npm notice 6.5kB src/types/ui-responses.ts
|
|
74
|
+
npm notice 1.1kB src/utils/city-coordinates.ts
|
|
75
|
+
npm notice 1.3kB src/utils/geolocation.ts
|
|
76
|
+
npm notice 5.6kB src/utils/payment-utils.js
|
|
77
|
+
npm notice 6.5kB src/utils/payment-utils.ts
|
|
78
|
+
npm notice 357B tsconfig.json
|
|
79
|
+
npm notice 370B tsup.config.ts
|
|
80
|
+
npm notice Tarball Details
|
|
81
|
+
npm notice name: @thor/adapters
|
|
82
|
+
npm notice version: 3.0.1
|
|
83
|
+
npm notice filename: thor-adapters-3.0.1.tgz
|
|
84
|
+
npm notice package size: 413.9 kB
|
|
85
|
+
npm notice unpacked size: 1.9 MB
|
|
86
|
+
npm notice shasum: 696c58c4b5629ad1ec09336238ea157aad015e3d
|
|
87
|
+
npm notice integrity: sha512-tIweHlz73prg8[...]3KYkFTyNlUX4w==
|
|
88
|
+
npm notice total files: 72
|
|
89
|
+
npm notice
|
|
90
|
+
npm notice Publishing to https://npm.pkg.github.com with tag latest and restricted access
|
|
91
|
+
npm error code E401
|
|
92
|
+
npm error 401 Unauthorized - PUT https://npm.pkg.github.com/@thor%2fadapters - unauthenticated: User cannot be authenticated with the token provided.
|
|
93
|
+
npm error A complete log of this run can be found in: /home/nelson/.npm/_logs/2026-04-16T15_45_37_415Z-debug-0.log
|
package/src/core/errors.ts
CHANGED
|
@@ -37,6 +37,37 @@ export class ConfigurationError extends CommerceError {
|
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
+
/**
|
|
41
|
+
* Storefront validation error.
|
|
42
|
+
* Thrown when storefront configuration is invalid or missing.
|
|
43
|
+
*
|
|
44
|
+
* Moved here from `@thorprovider/types` so that package stays type-only.
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* ```typescript
|
|
48
|
+
* throw new StorefrontConfigError(
|
|
49
|
+
* 'Medusa requires NEXT_PUBLIC_SALES_CHANNEL_ID',
|
|
50
|
+
* 'medusa',
|
|
51
|
+
* 'NEXT_PUBLIC_SALES_CHANNEL_ID',
|
|
52
|
+
* );
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
55
|
+
export class StorefrontConfigError extends Error {
|
|
56
|
+
public readonly platformType: string;
|
|
57
|
+
public readonly requiredEnvVar?: string;
|
|
58
|
+
|
|
59
|
+
constructor(
|
|
60
|
+
message: string,
|
|
61
|
+
platformType: string,
|
|
62
|
+
requiredEnvVar?: string,
|
|
63
|
+
) {
|
|
64
|
+
super(message);
|
|
65
|
+
this.name = 'StorefrontConfigError';
|
|
66
|
+
this.platformType = platformType;
|
|
67
|
+
this.requiredEnvVar = requiredEnvVar;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
40
71
|
/**
|
|
41
72
|
* Resource not found error
|
|
42
73
|
*/
|
package/src/factory/index.ts
CHANGED
|
@@ -2,12 +2,15 @@
|
|
|
2
2
|
* @thorprovider/adapters v2.0
|
|
3
3
|
* Provider Factory - Create commerce providers dynamically
|
|
4
4
|
*
|
|
5
|
-
* This factory
|
|
5
|
+
* This factory owns the runtime provider registry (SupportedProviderType +
|
|
6
|
+
* metadata + guards) and is bound to the type-only ProviderTypeString union
|
|
7
|
+
* from @thorprovider/types (L1).
|
|
6
8
|
* When adding a new provider:
|
|
7
|
-
* 1. Update
|
|
8
|
-
* 2. Add
|
|
9
|
-
* 3.
|
|
10
|
-
* 4.
|
|
9
|
+
* 1. Update ProviderTypeString in packages/types/src/provider.ts
|
|
10
|
+
* 2. Add the enum member + metadata in ./provider-types.ts
|
|
11
|
+
* 3. Add new discriminated union case here
|
|
12
|
+
* 4. Create packages/adapters/src/providers/[platform]/
|
|
13
|
+
* 5. Implement CommerceProvider interface
|
|
11
14
|
*/
|
|
12
15
|
|
|
13
16
|
import type { CommerceProvider } from '../types';
|
|
@@ -22,8 +25,15 @@ import { MockProvider, type MockProviderConfig } from '../providers/mock';
|
|
|
22
25
|
import { ProviderNotFoundError, ConfigurationError } from '../core/errors';
|
|
23
26
|
import type { ProviderTypeString } from '@thorprovider/types';
|
|
24
27
|
|
|
28
|
+
export {
|
|
29
|
+
SupportedProviderType,
|
|
30
|
+
PROVIDER_METADATA,
|
|
31
|
+
isSupportedProviderType,
|
|
32
|
+
getProviderMetadata,
|
|
33
|
+
} from './provider-types';
|
|
34
|
+
|
|
25
35
|
/**
|
|
26
|
-
* Supported provider types (
|
|
36
|
+
* Supported provider types (type-only union owned by @thorprovider/types L1)
|
|
27
37
|
* Kept for backward compatibility; prefer ProviderTypeString from @thorprovider/types
|
|
28
38
|
*/
|
|
29
39
|
export type ProviderType = ProviderTypeString;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest'
|
|
2
|
+
import {
|
|
3
|
+
PROVIDER_METADATA,
|
|
4
|
+
SupportedProviderType,
|
|
5
|
+
getProviderMetadata,
|
|
6
|
+
isSupportedProviderType,
|
|
7
|
+
} from './provider-types'
|
|
8
|
+
|
|
9
|
+
describe('provider registry (moved from @thorprovider/types)', () => {
|
|
10
|
+
it('accepts supported provider strings and narrows the type', () => {
|
|
11
|
+
expect(isSupportedProviderType('medusa')).toBe(true)
|
|
12
|
+
expect(isSupportedProviderType('mock')).toBe(true)
|
|
13
|
+
expect(isSupportedProviderType('stelorder')).toBe(true)
|
|
14
|
+
})
|
|
15
|
+
|
|
16
|
+
it('rejects unsupported or non-string values', () => {
|
|
17
|
+
expect(isSupportedProviderType('bogus')).toBe(false)
|
|
18
|
+
expect(isSupportedProviderType(42)).toBe(false)
|
|
19
|
+
expect(isSupportedProviderType(undefined)).toBe(false)
|
|
20
|
+
})
|
|
21
|
+
|
|
22
|
+
it('has metadata for every enum member', () => {
|
|
23
|
+
for (const value of Object.values(SupportedProviderType)) {
|
|
24
|
+
expect(PROVIDER_METADATA[value]).toBeDefined()
|
|
25
|
+
}
|
|
26
|
+
})
|
|
27
|
+
|
|
28
|
+
it('returns metadata for a supported provider', () => {
|
|
29
|
+
expect(getProviderMetadata('medusa').name).toBe('Medusa JS')
|
|
30
|
+
expect(getProviderMetadata('mock').maxRetries).toBe(0)
|
|
31
|
+
})
|
|
32
|
+
})
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @thorprovider/adapters — Provider registry (runtime)
|
|
3
|
+
*
|
|
4
|
+
* Runtime owner of the provider registry: the `SupportedProviderType` enum,
|
|
5
|
+
* its metadata, and the guards. The provider-type union contract
|
|
6
|
+
* (`ProviderTypeString`) stays type-only in `@thorprovider/types`.
|
|
7
|
+
*
|
|
8
|
+
* When adding a new provider:
|
|
9
|
+
* 1. Add the string to `ProviderTypeString` in packages/types/src/provider.ts.
|
|
10
|
+
* 2. Add the enum member + metadata entry here.
|
|
11
|
+
* 3. Create packages/adapters/src/providers/[platform]/.
|
|
12
|
+
*/
|
|
13
|
+
import type { ProviderTypeString } from '@thorprovider/types';
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* All supported commerce platform providers.
|
|
17
|
+
* `mock` is the backend-optional runtime provider used for layout/design mode.
|
|
18
|
+
* `medusa` is fully implemented for real backend usage; others are placeholders for future expansion.
|
|
19
|
+
*
|
|
20
|
+
* @remarks Implementation status:
|
|
21
|
+
* - ✅ mock: Fixture-backed provider for backend-optional storefronts
|
|
22
|
+
* - ✅ medusa: Fully implemented
|
|
23
|
+
* - 🟡 stelorder: In progress (ERP adapter v1)
|
|
24
|
+
* - 🟡 shopify: Planned (Phase 2)
|
|
25
|
+
* - 🟡 bigcommerce: Planned (Phase 2)
|
|
26
|
+
* - 🟡 woocommerce: Planned (Phase 3)
|
|
27
|
+
* - 🟡 spree: Planned (Phase 3)
|
|
28
|
+
* - 🟡 magento: Planned (Phase 3)
|
|
29
|
+
*/
|
|
30
|
+
export enum SupportedProviderType {
|
|
31
|
+
Mock = 'mock',
|
|
32
|
+
Medusa = 'medusa',
|
|
33
|
+
StelOrder = 'stelorder',
|
|
34
|
+
Shopify = 'shopify',
|
|
35
|
+
BigCommerce = 'bigcommerce',
|
|
36
|
+
WooCommerce = 'woocommerce',
|
|
37
|
+
Spree = 'spree',
|
|
38
|
+
Magento = 'magento',
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Metadata about each provider.
|
|
43
|
+
* Useful for UI, error messages, validation, and documentation.
|
|
44
|
+
*/
|
|
45
|
+
export const PROVIDER_METADATA: Record<
|
|
46
|
+
ProviderTypeString,
|
|
47
|
+
{
|
|
48
|
+
name: string;
|
|
49
|
+
description: string;
|
|
50
|
+
requiresStorefront: boolean;
|
|
51
|
+
requiredEnvVars: string[];
|
|
52
|
+
maxRetries: number;
|
|
53
|
+
}
|
|
54
|
+
> = {
|
|
55
|
+
mock: {
|
|
56
|
+
name: 'Mock',
|
|
57
|
+
description: 'Fixture-backed runtime provider for layout/design mode without a real backend',
|
|
58
|
+
requiresStorefront: false,
|
|
59
|
+
requiredEnvVars: [],
|
|
60
|
+
maxRetries: 0,
|
|
61
|
+
},
|
|
62
|
+
medusa: {
|
|
63
|
+
name: 'Medusa JS',
|
|
64
|
+
description: 'Medusa v2 commerce engine',
|
|
65
|
+
requiresStorefront: true,
|
|
66
|
+
requiredEnvVars: [
|
|
67
|
+
'NEXT_PUBLIC_COMMERCE_API_URL',
|
|
68
|
+
'NEXT_PUBLIC_COMMERCE_API_KEY',
|
|
69
|
+
'NEXT_PUBLIC_SALES_CHANNEL_ID',
|
|
70
|
+
],
|
|
71
|
+
maxRetries: 3,
|
|
72
|
+
},
|
|
73
|
+
stelorder: {
|
|
74
|
+
name: 'Stel Order',
|
|
75
|
+
description: 'Stel Order ERP and sales document API',
|
|
76
|
+
requiresStorefront: false,
|
|
77
|
+
requiredEnvVars: [
|
|
78
|
+
'NEXT_PUBLIC_COMMERCE_API_URL',
|
|
79
|
+
'NEXT_PUBLIC_COMMERCE_API_KEY',
|
|
80
|
+
],
|
|
81
|
+
maxRetries: 2,
|
|
82
|
+
},
|
|
83
|
+
shopify: {
|
|
84
|
+
name: 'Shopify',
|
|
85
|
+
description: 'Shopify Storefront API (GraphQL)',
|
|
86
|
+
requiresStorefront: false,
|
|
87
|
+
requiredEnvVars: [
|
|
88
|
+
'NEXT_PUBLIC_SHOPIFY_STORE_DOMAIN',
|
|
89
|
+
'NEXT_PUBLIC_SHOPIFY_STOREFRONT_TOKEN',
|
|
90
|
+
],
|
|
91
|
+
maxRetries: 3,
|
|
92
|
+
},
|
|
93
|
+
bigcommerce: {
|
|
94
|
+
name: 'BigCommerce',
|
|
95
|
+
description: 'BigCommerce REST Storefront API',
|
|
96
|
+
requiresStorefront: false,
|
|
97
|
+
requiredEnvVars: [
|
|
98
|
+
'BIGCOMMERCE_STORE_HASH',
|
|
99
|
+
'BIGCOMMERCE_STOREFRONT_API_TOKEN',
|
|
100
|
+
'BIGCOMMERCE_CHANNEL_ID',
|
|
101
|
+
],
|
|
102
|
+
maxRetries: 3,
|
|
103
|
+
},
|
|
104
|
+
woocommerce: {
|
|
105
|
+
name: 'WooCommerce',
|
|
106
|
+
description: 'WooCommerce Store API + REST API v3',
|
|
107
|
+
requiresStorefront: false,
|
|
108
|
+
requiredEnvVars: [
|
|
109
|
+
'WOOCOMMERCE_URL',
|
|
110
|
+
'WOOCOMMERCE_CONSUMER_KEY',
|
|
111
|
+
'WOOCOMMERCE_CONSUMER_SECRET',
|
|
112
|
+
],
|
|
113
|
+
maxRetries: 3,
|
|
114
|
+
},
|
|
115
|
+
spree: {
|
|
116
|
+
name: 'Spree Commerce',
|
|
117
|
+
description: 'Spree API v2 Storefront (JSON:API)',
|
|
118
|
+
requiresStorefront: false,
|
|
119
|
+
requiredEnvVars: [
|
|
120
|
+
'SPREE_API_URL',
|
|
121
|
+
],
|
|
122
|
+
maxRetries: 3,
|
|
123
|
+
},
|
|
124
|
+
magento: {
|
|
125
|
+
name: 'Adobe Commerce (Magento)',
|
|
126
|
+
description: 'Adobe Commerce GraphQL + REST API',
|
|
127
|
+
requiresStorefront: true,
|
|
128
|
+
requiredEnvVars: [
|
|
129
|
+
'MAGENTO_URL',
|
|
130
|
+
'MAGENTO_STORE_CODE',
|
|
131
|
+
],
|
|
132
|
+
maxRetries: 3,
|
|
133
|
+
},
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Check if a string is a valid provider type.
|
|
138
|
+
*
|
|
139
|
+
* @example
|
|
140
|
+
* ```typescript
|
|
141
|
+
* if (isSupportedProviderType(process.env.COMMERCE_PROVIDER)) {
|
|
142
|
+
* // type is narrowed to ProviderTypeString
|
|
143
|
+
* }
|
|
144
|
+
* ```
|
|
145
|
+
*/
|
|
146
|
+
export function isSupportedProviderType(
|
|
147
|
+
value: unknown
|
|
148
|
+
): value is ProviderTypeString {
|
|
149
|
+
return (
|
|
150
|
+
typeof value === 'string' &&
|
|
151
|
+
(Object.values(SupportedProviderType) as string[]).includes(value)
|
|
152
|
+
);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Get metadata for a provider type.
|
|
157
|
+
* Useful for validation, error messages, and logging.
|
|
158
|
+
*
|
|
159
|
+
* @example
|
|
160
|
+
* ```typescript
|
|
161
|
+
* const meta = getProviderMetadata('medusa');
|
|
162
|
+
* console.log(`Using ${meta.name} with max ${meta.maxRetries} retries`);
|
|
163
|
+
* ```
|
|
164
|
+
*/
|
|
165
|
+
export function getProviderMetadata(
|
|
166
|
+
type: ProviderTypeString
|
|
167
|
+
): (typeof PROVIDER_METADATA)[ProviderTypeString] {
|
|
168
|
+
if (!isSupportedProviderType(type)) {
|
|
169
|
+
throw new Error(
|
|
170
|
+
`Unsupported provider: ${type}. Supported: ${Object.values(
|
|
171
|
+
SupportedProviderType
|
|
172
|
+
).join(', ')}`
|
|
173
|
+
);
|
|
174
|
+
}
|
|
175
|
+
return PROVIDER_METADATA[type];
|
|
176
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -30,10 +30,6 @@ export type {
|
|
|
30
30
|
DesignerHistoryEntry,
|
|
31
31
|
} from '@thorprovider/types';
|
|
32
32
|
|
|
33
|
-
export {
|
|
34
|
-
StorefrontConfigError,
|
|
35
|
-
} from '@thorprovider/types';
|
|
36
|
-
|
|
37
33
|
// ============================================
|
|
38
34
|
// Capabilities
|
|
39
35
|
// ============================================
|
|
@@ -57,6 +53,7 @@ export {
|
|
|
57
53
|
CommerceError,
|
|
58
54
|
ProviderNotFoundError,
|
|
59
55
|
ConfigurationError,
|
|
56
|
+
StorefrontConfigError,
|
|
60
57
|
ResourceNotFoundError,
|
|
61
58
|
ProviderAPIError,
|
|
62
59
|
extractErrorMessage,
|
|
@@ -188,6 +185,10 @@ export type {
|
|
|
188
185
|
export {
|
|
189
186
|
createProvider,
|
|
190
187
|
isProviderType,
|
|
188
|
+
SupportedProviderType,
|
|
189
|
+
PROVIDER_METADATA,
|
|
190
|
+
isSupportedProviderType,
|
|
191
|
+
getProviderMetadata,
|
|
191
192
|
type ProviderType,
|
|
192
193
|
type ProviderFactoryConfig,
|
|
193
194
|
} from './factory';
|
|
@@ -201,6 +202,7 @@ export {
|
|
|
201
202
|
StelOrderProvider,
|
|
202
203
|
type StelOrderProviderConfig,
|
|
203
204
|
MockProvider,
|
|
205
|
+
MOCK_SALES_CHANNEL_ID,
|
|
204
206
|
type MockProviderConfig,
|
|
205
207
|
ShopifyProvider,
|
|
206
208
|
type ShopifyProviderConfig,
|
package/src/providers/index.ts
CHANGED
|
@@ -24,5 +24,5 @@ export type { SpreeProviderConfig } from './spree';
|
|
|
24
24
|
export { MagentoProvider } from './magento';
|
|
25
25
|
export type { MagentoProviderConfig } from './magento';
|
|
26
26
|
|
|
27
|
-
export { MockProvider } from './mock';
|
|
27
|
+
export { MockProvider, MOCK_SALES_CHANNEL_ID } from './mock';
|
|
28
28
|
export type { MockProviderConfig } from './mock';
|