diff --git a/README.md b/README.md
index b389b35..f00f83f 100644
--- a/README.md
+++ b/README.md
@@ -83,9 +83,9 @@ pnpm add @strapi/sdk-js
To interact with your Strapi backend, initialize the SDK with your Strapi API base URL:
```typescript
-import { strapiSDK } from '@strapi/sdk-js';
+import { strapi } from '@strapi/sdk-js';
-const sdk = strapiSDK({ baseURL: 'http://localhost:1337/api' });
+const sdk = strapi({ baseURL: 'http://localhost:1337/api' });
```
Alternatively, use a `
```
@@ -107,7 +107,7 @@ The SDK supports multiple authentication strategies for accessing authenticated
If your Strapi instance uses API tokens, configure the SDK like this:
```typescript
-const sdk = strapiSDK({
+const sdk = strapi({
baseURL: 'http://localhost:1337/api',
auth: {
strategy: 'api-token',
@@ -230,25 +230,25 @@ For **browser environments**, debug capabilities are intentionally turned off to
The `debug` tool allows you to control logs using wildcard patterns (`*`):
- `*`: enable all logs.
-- `sdk:module`: enable logs for a specific module.
-- `sdk:module1,sdk:module2`: enable logs for multiple modules.
-- `sdk:*`: match all namespaces under `sdk`.
-- `sdk:*,-sdk:module2`: enable all logs except those from `sdk:module2`.
+- `strapi:module`: enable logs for a specific module.
+- `strapi:module1,sdk:module2`: enable logs for multiple modules.
+- `strapi:*`: match all namespaces under `strapi`.
+- `strapi:*,-strapi:module2`: enable all logs except those from `strapi:module2`.
### Namespaces
Below is a list of available namespaces to use:
-| Namespace | Description |
-| ------------------------------------- | ----------------------------------------------------------------------------------------- |
-| `sdk:core` | Logs SDK initialization, configuration validation, and HTTP client setup. |
-| `sdk:validators:sdk` | Logs details related to SDK configuration validation. |
-| `sdk:validators:url` | Logs URL validation processes. |
-| `sdk:http` | Logs HTTP client setup, request processing, and response/error handling. |
-| `sdk:auth:factory` | Logs the registration and creation of authentication providers. |
-| `sdk:auth:manager` | Logs authentication lifecycle management. |
-| `sdk:auth:provider:api-token` | Logs operations related to API token authentication. |
-| `sdk:auth:provider:users-permissions` | Logs operations related to user and permissions-based authentication. |
-| `sdk:ct:collection` | Logs interactions with collection-type content managers. |
-| `sdk:ct:single` | Logs interactions with single-type content managers. |
-| `sdk:utils:url-helper` | Logs URL helper utility operations (e.g., appending query parameters or formatting URLs). |
+| Namespace | Description |
+| ---------------------------------------- | ----------------------------------------------------------------------------------------- |
+| `strapi:core` | Logs SDK initialization, configuration validation, and HTTP client setup. |
+| `strapi:validators:config` | Logs details related to SDK configuration validation. |
+| `strapi:validators:url` | Logs URL validation processes. |
+| `strapi:http` | Logs HTTP client setup, request processing, and response/error handling. |
+| `strapi:auth:factory` | Logs the registration and creation of authentication providers. |
+| `strapi:auth:manager` | Logs authentication lifecycle management. |
+| `strapi:auth:provider:api-token` | Logs operations related to API token authentication. |
+| `strapi:auth:provider:users-permissions` | Logs operations related to user and permissions-based authentication. |
+| `strapi:ct:collection` | Logs interactions with collection-type content managers. |
+| `strapi:ct:single` | Logs interactions with single-type content managers. |
+| `strapi:utils:url-helper` | Logs URL helper utility operations (e.g., appending query parameters or formatting URLs). |
diff --git a/src/auth/factory/factory.ts b/src/auth/factory/factory.ts
index 6d65e13..754d0dc 100644
--- a/src/auth/factory/factory.ts
+++ b/src/auth/factory/factory.ts
@@ -1,11 +1,11 @@
import createDebug from 'debug';
-import { StrapiSDKError } from '../../errors';
+import { StrapiError } from '../../errors';
import type { AuthProviderCreator, AuthProviderMap, CreateAuthProviderParams } from './types';
import type { AuthProvider } from '../providers';
-const debug = createDebug('sdk:auth:factory');
+const debug = createDebug('strapi:auth:factory');
/**
* A factory class responsible for creating and managing authentication providers.
@@ -26,7 +26,7 @@ export class AuthProviderFactory {
*
* @returns An instance of an AuthProvider initialized with the given options.
*
- * @throws {StrapiSDKError} Throws an error if the specified strategy is not registered in the factory.
+ * @throws {StrapiError} Throws an error if the specified strategy is not registered in the factory.
*
* @example
* ```typescript
@@ -48,7 +48,7 @@ export class AuthProviderFactory {
if (!creator) {
debug('the %o auth strategy is not registered, skipping', authStrategy);
- throw new StrapiSDKError(`Auth strategy "${authStrategy}" is not supported.`);
+ throw new StrapiError(`Auth strategy "${authStrategy}" is not supported.`);
}
const instance = creator(options);
diff --git a/src/auth/manager.ts b/src/auth/manager.ts
index d584217..f382230 100644
--- a/src/auth/manager.ts
+++ b/src/auth/manager.ts
@@ -11,7 +11,7 @@ import type {
UsersPermissionsAuthProviderOptions,
} from './providers';
-const debug = createDebug('sdk:auth:manager');
+const debug = createDebug('strapi:auth:manager');
/**
* Manages authentication by using different authentication providers and strategies.
diff --git a/src/auth/providers/abstract.ts b/src/auth/providers/abstract.ts
index 9387e7a..580552e 100644
--- a/src/auth/providers/abstract.ts
+++ b/src/auth/providers/abstract.ts
@@ -51,7 +51,7 @@ export abstract class AbstractAuthProvider implements AuthProvider
* It is called within the constructor to ensure that all required options adhere
* to the expected format or values before proceeding with operational methods.
*
- * @throws {StrapiSDKValidationError} If the validation fails due to invalid or missing options.
+ * @throws {StrapiValidationError} If the validation fails due to invalid or missing options.
*/
protected abstract preflightValidation(): void;
diff --git a/src/auth/providers/api-token.ts b/src/auth/providers/api-token.ts
index c5220cb..1673834 100644
--- a/src/auth/providers/api-token.ts
+++ b/src/auth/providers/api-token.ts
@@ -1,10 +1,10 @@
import createDebug from 'debug';
-import { StrapiSDKValidationError } from '../../errors';
+import { StrapiValidationError } from '../../errors';
import { AbstractAuthProvider } from './abstract';
-const debug = createDebug('sdk:auth:provider:api-token');
+const debug = createDebug('strapi:auth:provider:api-token');
const API_TOKEN_AUTH_STRATEGY_IDENTIFIER = 'api-token';
@@ -41,7 +41,7 @@ export class ApiTokenAuthProvider extends AbstractAuthProvider {
- const sdkValidator = new StrapiSDKValidator();
+export const strapi = (config: StrapiConfig) => {
+ const configValidator = new StrapiConfigValidator();
- return new StrapiSDK(
+ return new Strapi(
// Properties
config,
// Dependencies
- sdkValidator
+ configValidator
);
};
diff --git a/src/sdk.ts b/src/sdk.ts
index 5b20201..68ea7d7 100644
--- a/src/sdk.ts
+++ b/src/sdk.ts
@@ -2,16 +2,16 @@ import createDebug from 'debug';
import { AuthManager } from './auth';
import { CollectionTypeManager, SingleTypeManager } from './content-types';
-import { StrapiSDKInitializationError } from './errors';
+import { StrapiInitializationError } from './errors';
import { HttpClient } from './http';
import { AuthInterceptors, HttpInterceptors } from './interceptors';
-import { StrapiSDKValidator } from './validators';
+import { StrapiConfigValidator } from './validators';
import type { HttpClientConfig } from './http';
-const debug = createDebug('sdk:core');
+const debug = createDebug('strapi:core');
-export interface StrapiSDKConfig {
+export interface StrapiConfig {
/** The base URL of the Strapi content API, required for all SDK operations. */
baseURL: string;
@@ -42,12 +42,12 @@ export interface AuthConfig {
*
* @template T_Config - Configuration type inferred from the user-provided SDK configuration
*/
-export class StrapiSDK {
+export class Strapi {
/** @internal */
private readonly _config: T_Config;
/** @internal */
- private readonly _validator: StrapiSDKValidator;
+ private readonly _validator: StrapiConfigValidator;
/** @internal */
private readonly _authManager: AuthManager;
@@ -61,7 +61,7 @@ export class StrapiSDK
config: T_Config,
// Dependencies
- validator: StrapiSDKValidator = new StrapiSDKValidator(),
+ validator: StrapiConfigValidator = new StrapiConfigValidator(),
authManager: AuthManager = new AuthManager(),
// Lazy dependencies
@@ -100,10 +100,10 @@ export class StrapiSDK
* internal SDK validator. It is invoked during the initialization process to confirm that
* all necessary parts are correctly configured before effectively using the SDK.
*
- * @throws {StrapiSDKInitializationError} If the configuration validation fails, indicating an issue with the SDK initialization process.
+ * @throws {StrapiInitializationError} If the configuration validation fails, indicating an issue with the SDK initialization process.
*
* @example
- * // Creating a new instance of StrapiSDK which triggers preflightValidation
+ * // Creating a new instance of the SDK which triggers preflightValidation
* const config = {
* baseURL: 'https://example.com',
* auth: {
@@ -111,7 +111,7 @@ export class StrapiSDK
* options: { token: 'your-token-here' }
* }
* };
- * const sdk = new StrapiSDK(config);
+ * const sdk = new Strapi(config);
*
* // The preflightValidation is automatically called within the constructor
* // to ensure the provided config is valid prior to any further setup.
@@ -125,7 +125,7 @@ export class StrapiSDK
debug('validating the configuration');
this._validator.validateConfig(this._config);
} catch (e) {
- throw new StrapiSDKInitializationError(e);
+ throw new StrapiInitializationError(e);
}
}
@@ -226,7 +226,7 @@ export class StrapiSDK
*
* @example
* const config = { baseURL: 'http://localhost:1337/api' };
- * const sdk = new StrapiSDK(config);
+ * const sdk = new Strapi(config);
*
* console.log(sdk.baseURL); // Output: http://localhost:1337
*/
@@ -245,7 +245,8 @@ export class StrapiSDK
* @example
* ```typescript
* // Create the SDK instance
- * const sdk = strapiSDK({ baseURL: 'http://localhost:1337/api' );
+ * const config = { baseURL: 'http://localhost:1337/api' };
+ * const sdk = new Strapi(config);
*
* // Perform a custom fetch query
* const response = await sdk.fetch('/categories');
@@ -279,7 +280,8 @@ export class StrapiSDK
* @example
* ```typescript
* // Initialize the SDK with required configuration
- * const sdk = new StrapiSDK({ baseURL: 'http://localhost:1337/api' });
+ * const config = { baseURL: 'http://localhost:1337/api' };
+ * const sdk = new Strapi(config);
*
* // Retrieve a CollectionTypeManager for the 'articles' resource
* const articles = sdk.collection('articles');
@@ -301,7 +303,7 @@ export class StrapiSDK
* ```
*
* @see CollectionTypeManager
- * @see StrapiSDK
+ * @see Strapi
*/
collection(resource: string) {
return new CollectionTypeManager(resource, this._httpClient);
@@ -320,7 +322,7 @@ export class StrapiSDK
* @example
* ```typescript
* // Initialize the SDK with required configuration
- * const sdk = new StrapiSDK({ baseURL: 'http://localhost:1337/api' });
+ * const sdk = new Strapi({ baseURL: 'http://localhost:1337/api' });
*
* // Retrieve a SingleTypeManager for the 'homepage' resource
* const homepage = sdk.single('homepage');
@@ -336,7 +338,7 @@ export class StrapiSDK
* ```
*
* @see SingleTypeManager
- * @see StrapiSDK
+ * @see Strapi
*/
single(resource: string) {
return new SingleTypeManager(resource, this._httpClient);
diff --git a/src/utilities/url-helper.ts b/src/utilities/url-helper.ts
index 70205e0..901683f 100644
--- a/src/utilities/url-helper.ts
+++ b/src/utilities/url-helper.ts
@@ -2,7 +2,7 @@ import createDebug from 'debug';
import type { BaseQueryParams } from '../types/content-api';
-const debug = createDebug('sdk:utils:url-helper');
+const debug = createDebug('strapi:utils:url-helper');
export class URLHelper {
/**
diff --git a/src/validators/index.ts b/src/validators/index.ts
index acbffb3..a9ce9ff 100644
--- a/src/validators/index.ts
+++ b/src/validators/index.ts
@@ -1,2 +1,2 @@
-export { StrapiSDKValidator } from './sdk';
+export { StrapiConfigValidator } from './sdk';
export { URLValidator } from './url';
diff --git a/src/validators/sdk.ts b/src/validators/sdk.ts
index 4088e3b..97bb9a1 100644
--- a/src/validators/sdk.ts
+++ b/src/validators/sdk.ts
@@ -1,19 +1,19 @@
import createDebug from 'debug';
-import { StrapiSDKValidationError, URLValidationError } from '../errors';
+import { StrapiValidationError, URLValidationError } from '../errors';
import { URLValidator } from './url';
-import type { StrapiSDKConfig } from '../sdk';
+import type { StrapiConfig } from '../sdk';
-const debug = createDebug('sdk:validators:sdk');
+const debug = createDebug('strapi:validators:config');
/**
* Provides the ability to validate the configuration used for initializing the Strapi SDK.
*
* This includes URL validation to ensure compatibility with Strapi's API endpoints.
*/
-export class StrapiSDKValidator {
+export class StrapiConfigValidator {
private readonly _urlValidator: URLValidator;
constructor(
@@ -29,9 +29,9 @@ export class StrapiSDKValidator {
*
* @param config - The configuration object for the Strapi SDK. Must include a `baseURL` property indicating the API's endpoint.
*
- * @throws {StrapiSDKValidationError} If the configuration is invalid, or if the baseURL is invalid.
+ * @throws {StrapiValidationError} If the configuration is invalid, or if the baseURL is invalid.
*/
- validateConfig(config: StrapiSDKConfig) {
+ validateConfig(config: StrapiConfig) {
debug('validating sdk config');
if (
@@ -42,7 +42,7 @@ export class StrapiSDKValidator {
) {
debug(`provided sdk configuration is not a valid object: %o (%s)`, config, typeof config);
- throw new StrapiSDKValidationError(
+ throw new StrapiValidationError(
new TypeError('The provided configuration is not a valid object.')
);
}
@@ -57,7 +57,7 @@ export class StrapiSDKValidator {
*
* @param url - The base URL string to validate.
*
- * @throws {StrapiSDKValidationError} If the URL is invalid or if it fails through the URLValidator checks.
+ * @throws {StrapiValidationError} If the URL is invalid or if it fails through the URLValidator checks.
*/
private validateBaseURL(url: unknown) {
try {
@@ -66,7 +66,7 @@ export class StrapiSDKValidator {
} catch (e) {
if (e instanceof URLValidationError) {
debug('failed to validate sdk config, invalid base url %o', url);
- throw new StrapiSDKValidationError(e);
+ throw new StrapiValidationError(e);
}
throw e;
diff --git a/src/validators/url.ts b/src/validators/url.ts
index d3b2983..5ae5733 100644
--- a/src/validators/url.ts
+++ b/src/validators/url.ts
@@ -2,7 +2,7 @@ import createDebug from 'debug';
import { URLParsingError } from '../errors';
-const debug = createDebug('sdk:validators:url');
+const debug = createDebug('strapi:validators:url');
/**
* Class representing a URLValidator.
diff --git a/tests/unit/auth/factory.test.ts b/tests/unit/auth/factory.test.ts
index c7f92eb..d5e52cb 100644
--- a/tests/unit/auth/factory.test.ts
+++ b/tests/unit/auth/factory.test.ts
@@ -1,5 +1,5 @@
+import { StrapiError } from '../../../src';
import { AuthProviderFactory } from '../../../src/auth';
-import { StrapiSDKError } from '../../../src/errors';
import { MockAuthProvider } from '../mocks';
describe('AuthProviderFactory', () => {
@@ -16,7 +16,7 @@ describe('AuthProviderFactory', () => {
// Act & Assert
expect(() => {
factory.create(invalidStrategyName, {});
- }).toThrow(StrapiSDKError);
+ }).toThrow(StrapiError);
});
it('should create a valid instance for registered providers', () => {
diff --git a/tests/unit/auth/providers/api-token.test.ts b/tests/unit/auth/providers/api-token.test.ts
index 6f49d99..cb38f73 100644
--- a/tests/unit/auth/providers/api-token.test.ts
+++ b/tests/unit/auth/providers/api-token.test.ts
@@ -1,4 +1,4 @@
-import { StrapiSDKValidationError } from '../../../../src';
+import { StrapiValidationError } from '../../../../src';
import { ApiTokenAuthProvider, ApiTokenAuthProviderOptions } from '../../../../src/auth';
describe('ApiTokenAuthProvider', () => {
@@ -32,7 +32,7 @@ describe('ApiTokenAuthProvider', () => {
const token = ' ';
// Act & Assert
- expect(() => new ApiTokenAuthProvider({ token })).toThrow(StrapiSDKValidationError);
+ expect(() => new ApiTokenAuthProvider({ token })).toThrow(StrapiValidationError);
expect(spy).toHaveBeenCalledTimes(1);
});
@@ -50,7 +50,7 @@ describe('ApiTokenAuthProvider', () => {
const options = { token: null } as unknown as ApiTokenAuthProviderOptions;
// Act & Assert
- expect(() => new ApiTokenAuthProvider(options)).toThrow(StrapiSDKValidationError);
+ expect(() => new ApiTokenAuthProvider(options)).toThrow(StrapiValidationError);
expect(spy).toHaveBeenCalledTimes(1);
});
});
diff --git a/tests/unit/auth/providers/users-permissions.test.ts b/tests/unit/auth/providers/users-permissions.test.ts
index 12b168a..8b32e33 100644
--- a/tests/unit/auth/providers/users-permissions.test.ts
+++ b/tests/unit/auth/providers/users-permissions.test.ts
@@ -1,4 +1,4 @@
-import { HTTPBadRequestError, StrapiSDKValidationError } from '../../../../src';
+import { HTTPBadRequestError, StrapiValidationError } from '../../../../src';
import {
UsersPermissionsAuthProvider,
UsersPermissionsAuthProviderOptions,
@@ -74,7 +74,7 @@ describe('UsersPermissionsAuthProvider', () => {
new UsersPermissionsAuthProvider(
options as unknown as UsersPermissionsAuthProviderOptions
)
- ).toThrow(StrapiSDKValidationError);
+ ).toThrow(StrapiValidationError);
expect(spy).toHaveBeenCalledTimes(1);
});
diff --git a/tests/unit/errors/sdk-errors.test.ts b/tests/unit/errors/sdk-errors.test.ts
index c322f15..4773868 100644
--- a/tests/unit/errors/sdk-errors.test.ts
+++ b/tests/unit/errors/sdk-errors.test.ts
@@ -1,14 +1,10 @@
-import {
- StrapiSDKError,
- StrapiSDKInitializationError,
- StrapiSDKValidationError,
-} from '../../../src/errors';
-
-describe('SDK Errors', () => {
- describe('StrapiSDKError', () => {
+import { StrapiError, StrapiInitializationError, StrapiValidationError } from '../../../src';
+
+describe('Strapi Errors', () => {
+ describe('StrapiError', () => {
it('should have a default message', () => {
// Act
- const error = new StrapiSDKError();
+ const error = new StrapiError();
// Assert
expect(error.message).toBe(
@@ -22,7 +18,7 @@ describe('SDK Errors', () => {
const customMessage = 'Custom error message.';
// Act
- const error = new StrapiSDKError(undefined, customMessage);
+ const error = new StrapiError(undefined, customMessage);
// Assert
expect(error.message).toBe(customMessage);
@@ -33,17 +29,17 @@ describe('SDK Errors', () => {
const cause = new Error('Root cause');
// Act
- const error = new StrapiSDKError(cause);
+ const error = new StrapiError(cause);
// Assert
expect(error.cause).toBe(cause);
});
});
- describe('StrapiSDKValidationError', () => {
+ describe('StrapiValidationError', () => {
it('should have a default message', () => {
// Act
- const error = new StrapiSDKValidationError();
+ const error = new StrapiValidationError();
// Assert
expect(error.message).toBe('Some of the provided values are not valid.');
@@ -55,7 +51,7 @@ describe('SDK Errors', () => {
const customMessage = 'Validation error occurred.';
// Act
- const error = new StrapiSDKValidationError(undefined, customMessage);
+ const error = new StrapiValidationError(undefined, customMessage);
// Assert
expect(error.message).toBe(customMessage);
@@ -66,17 +62,17 @@ describe('SDK Errors', () => {
const cause = new Error('Validation root cause');
// Act
- const error = new StrapiSDKValidationError(cause);
+ const error = new StrapiValidationError(cause);
// Assert
expect(error.cause).toBe(cause);
});
});
- describe('StrapiSDKInitializationError', () => {
+ describe('StrapiInitializationError', () => {
it('should have a default message', () => {
// Act
- const error = new StrapiSDKInitializationError();
+ const error = new StrapiInitializationError();
// Assert
expect(error.message).toBe('Could not initialize the Strapi SDK');
@@ -88,7 +84,7 @@ describe('SDK Errors', () => {
const customMessage = 'Initialization error occurred.';
// Act
- const error = new StrapiSDKInitializationError(undefined, customMessage);
+ const error = new StrapiInitializationError(undefined, customMessage);
// Assert
expect(error.message).toBe(customMessage);
@@ -99,7 +95,7 @@ describe('SDK Errors', () => {
const cause = new Error('Initialization root cause');
// Act
- const error = new StrapiSDKInitializationError(cause);
+ const error = new StrapiInitializationError(cause);
// Assert
expect(error.cause).toBe(cause);
diff --git a/tests/unit/index.test.ts b/tests/unit/index.test.ts
index 6ec9212..8079848 100644
--- a/tests/unit/index.test.ts
+++ b/tests/unit/index.test.ts
@@ -1,27 +1,27 @@
-import { strapiSDK, StrapiSDKInitializationError, StrapiSDKValidationError } from '../../src';
-import { StrapiSDK } from '../../src/sdk';
+import { strapi, StrapiInitializationError, StrapiValidationError } from '../../src';
+import { Strapi } from '../../src/sdk';
-import type { StrapiSDKConfig } from '../../src/sdk';
+import type { StrapiConfig } from '../../src/sdk';
-describe('strapiSDK', () => {
+describe('strapi', () => {
it('should create an SDK instance with valid configuration', () => {
// Arrange
- const config = { baseURL: 'https://api.example.com' } satisfies StrapiSDKConfig;
+ const config = { baseURL: 'https://api.example.com' } satisfies StrapiConfig;
// Act
- const sdkInstance = strapiSDK(config);
+ const sdk = strapi(config);
// Assert
- expect(sdkInstance).toBeInstanceOf(StrapiSDK);
- expect(sdkInstance).toHaveProperty('baseURL', config.baseURL);
+ expect(sdk).toBeInstanceOf(Strapi);
+ expect(sdk).toHaveProperty('baseURL', config.baseURL);
});
it('should throw an error for an invalid baseURL', () => {
// Arrange
- const config = { baseURL: 'invalid-url' } satisfies StrapiSDKConfig;
+ const config = { baseURL: 'invalid-url' } satisfies StrapiConfig;
// Act & Assert
- expect(() => strapiSDK(config)).toThrow(StrapiSDKInitializationError);
+ expect(() => strapi(config)).toThrow(StrapiInitializationError);
});
it('should throw an error if auth configuration is invalid', () => {
@@ -32,9 +32,9 @@ describe('strapiSDK', () => {
strategy: 'api-token',
options: { token: '' }, // Invalid token
},
- } satisfies StrapiSDKConfig;
+ } satisfies StrapiConfig;
// Act & Assert
- expect(() => strapiSDK(config)).toThrow(StrapiSDKValidationError);
+ expect(() => strapi(config)).toThrow(StrapiValidationError);
});
});
diff --git a/tests/unit/mocks/index.ts b/tests/unit/mocks/index.ts
index 1943dcc..6f3eadd 100644
--- a/tests/unit/mocks/index.ts
+++ b/tests/unit/mocks/index.ts
@@ -4,6 +4,6 @@ export { MockAuthManager } from './auth-manager.mock';
export { MockHttpClient } from './http-client.mock';
export { MockURLValidator } from './url-validator.mock';
export { MockFlakyURLValidator } from './flaky-url-validator.mock';
-export { MockStrapiSDKValidator } from './sdk-validator.mock';
+export { MockStrapiConfigValidator } from './strapi-config-validator.mock';
export { mockRequest } from './request.mock';
export { mockResponse } from './response.mock';
diff --git a/tests/unit/mocks/sdk-validator.mock.ts b/tests/unit/mocks/sdk-validator.mock.ts
deleted file mode 100644
index a354fb1..0000000
--- a/tests/unit/mocks/sdk-validator.mock.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-import { StrapiSDKValidator } from '../../../src/validators';
-
-export class MockStrapiSDKValidator extends StrapiSDKValidator {}
diff --git a/tests/unit/mocks/strapi-config-validator.mock.ts b/tests/unit/mocks/strapi-config-validator.mock.ts
new file mode 100644
index 0000000..54956df
--- /dev/null
+++ b/tests/unit/mocks/strapi-config-validator.mock.ts
@@ -0,0 +1,3 @@
+import { StrapiConfigValidator } from '../../../src/validators';
+
+export class MockStrapiConfigValidator extends StrapiConfigValidator {}
diff --git a/tests/unit/sdk.test.ts b/tests/unit/sdk.test.ts
index 33442c7..10d7533 100644
--- a/tests/unit/sdk.test.ts
+++ b/tests/unit/sdk.test.ts
@@ -6,25 +6,25 @@ import {
HTTPInternalServerError,
HTTPNotFoundError,
HTTPTimeoutError,
- StrapiSDKInitializationError,
+ StrapiInitializationError,
} from '../../src';
import { CollectionTypeManager, SingleTypeManager } from '../../src/content-types';
import { HttpClient, StatusCode } from '../../src/http';
-import { StrapiSDK } from '../../src/sdk';
-import { StrapiSDKValidator } from '../../src/validators';
+import { Strapi } from '../../src/sdk';
+import { StrapiConfigValidator } from '../../src/validators';
import {
MockAuthManager,
MockAuthProvider,
MockHttpClient,
- MockStrapiSDKValidator,
+ MockStrapiConfigValidator,
MockFlakyURLValidator,
} from './mocks';
import type { HttpClientConfig } from '../../src/http';
-import type { StrapiSDKConfig } from '../../src/sdk';
+import type { StrapiConfig } from '../../src/sdk';
-describe('StrapiSDK', () => {
+describe('Strapi', () => {
const mockHttpClientFactory = (config: HttpClientConfig) => new MockHttpClient(config);
beforeEach(() => {
@@ -47,71 +47,71 @@ describe('StrapiSDK', () => {
const config = {
baseURL: 'https://localhost:1337/api',
auth: { strategy: MockAuthProvider.identifier, options: {} },
- } satisfies StrapiSDKConfig;
+ } satisfies StrapiConfig;
- const mockValidator = new MockStrapiSDKValidator();
+ const mockValidator = new MockStrapiConfigValidator();
const mockAuthManager = new MockAuthManager();
- const sdkValidatorSpy = jest.spyOn(mockValidator, 'validateConfig');
+ const validatorSpy = jest.spyOn(mockValidator, 'validateConfig');
const authSetStrategySpy = jest.spyOn(MockAuthManager.prototype, 'setStrategy');
// Act
- const sdk = new StrapiSDK(config, mockValidator, mockAuthManager, mockHttpClientFactory);
+ const sdk = new Strapi(config, mockValidator, mockAuthManager, mockHttpClientFactory);
// Assert
- expect(sdk).toBeInstanceOf(StrapiSDK);
- expect(sdkValidatorSpy).toHaveBeenCalledWith(config);
+ expect(sdk).toBeInstanceOf(Strapi);
+ expect(validatorSpy).toHaveBeenCalledWith(config);
expect(authSetStrategySpy).toHaveBeenCalledWith(MockAuthProvider.identifier, {});
});
it('should not set the auth strategy if no auth config is provided', () => {
// Arrange
- const config = { baseURL: 'https://localhost:1337/api' } satisfies StrapiSDKConfig;
+ const config = { baseURL: 'https://localhost:1337/api' } satisfies StrapiConfig;
- const mockValidator = new MockStrapiSDKValidator();
+ const mockValidator = new MockStrapiConfigValidator();
const mockAuthManager = new MockAuthManager();
const authSetStrategySpy = jest.spyOn(MockAuthManager.prototype, 'setStrategy');
// Act
- const sdk = new StrapiSDK(config, mockValidator, mockAuthManager, mockHttpClientFactory);
+ const sdk = new Strapi(config, mockValidator, mockAuthManager, mockHttpClientFactory);
// Assert
- expect(sdk).toBeInstanceOf(StrapiSDK);
+ expect(sdk).toBeInstanceOf(Strapi);
expect(authSetStrategySpy).not.toHaveBeenCalled();
});
it('should throw an error on invalid baseURL', () => {
// Arrange
- const config = { baseURL: 'invalid-url' } satisfies StrapiSDKConfig;
+ const config = { baseURL: 'invalid-url' } satisfies StrapiConfig;
- const mockValidator = new MockStrapiSDKValidator();
+ const mockValidator = new MockStrapiConfigValidator();
const validateConfigSpy = jest.spyOn(mockValidator, 'validateConfig');
// Act & Assert
- expect(() => new StrapiSDK(config, mockValidator)).toThrow(StrapiSDKInitializationError);
+ expect(() => new Strapi(config, mockValidator)).toThrow(StrapiInitializationError);
expect(validateConfigSpy).toHaveBeenCalledWith(config);
});
it('should fail to create and SDK instance if there is an unexpected error', () => {
// Arrange
- let sdk!: StrapiSDK;
+ let sdk!: Strapi;
const baseURL = 'https://example.com';
- const config: StrapiSDKConfig = { baseURL } satisfies StrapiSDKConfig;
- const expectedError = new StrapiSDKInitializationError(new Error('Unexpected error'));
+ const config: StrapiConfig = { baseURL } satisfies StrapiConfig;
+ const expectedError = new StrapiInitializationError(new Error('Unexpected error'));
const validateSpy = jest.spyOn(MockFlakyURLValidator.prototype, 'validate');
// Act
- const createSDK = () => {
- sdk = new StrapiSDK(config, new StrapiSDKValidator(new MockFlakyURLValidator()));
+ const instantiateSDK = () => {
+ sdk = new Strapi(config, new StrapiConfigValidator(new MockFlakyURLValidator()));
};
// Assert
- expect(createSDK).toThrow(expectedError);
+ expect(instantiateSDK).toThrow(expectedError);
expect(sdk).toBeUndefined();
@@ -121,10 +121,10 @@ describe('StrapiSDK', () => {
it('should initialize correctly with the default validator', () => {
// Arrange
- const sdk = new StrapiSDK({ baseURL: 'https://localhost:1337/api' });
+ const sdk = new Strapi({ baseURL: 'https://localhost:1337/api' });
// Act & Assert
- expect(sdk).toBeInstanceOf(StrapiSDK);
+ expect(sdk).toBeInstanceOf(Strapi);
});
});
@@ -132,12 +132,12 @@ describe('StrapiSDK', () => {
it('should return a new CollectionTypeManager instance when given a resource name', () => {
// Arrange
const resource = 'articles';
- const config = { baseURL: 'https://localhost:1337/api' } satisfies StrapiSDKConfig;
+ const config = { baseURL: 'https://localhost:1337/api' } satisfies StrapiConfig;
- const mockValidator = new MockStrapiSDKValidator();
+ const mockValidator = new MockStrapiConfigValidator();
const mockAuthManager = new MockAuthManager();
- const sdk = new StrapiSDK(config, mockValidator, mockAuthManager, mockHttpClientFactory);
+ const sdk = new Strapi(config, mockValidator, mockAuthManager, mockHttpClientFactory);
// Act
const collection = sdk.collection(resource);
@@ -152,12 +152,12 @@ describe('StrapiSDK', () => {
it('should return a new SingleTypeManager instance when given a resource name', () => {
// Arrange
const resource = 'homepage';
- const config = { baseURL: 'https://localhost:1337/api' } satisfies StrapiSDKConfig;
+ const config = { baseURL: 'https://localhost:1337/api' } satisfies StrapiConfig;
- const mockValidator = new MockStrapiSDKValidator();
+ const mockValidator = new MockStrapiConfigValidator();
const mockAuthManager = new MockAuthManager();
- const sdk = new StrapiSDK(config, mockValidator, mockAuthManager, mockHttpClientFactory);
+ const sdk = new Strapi(config, mockValidator, mockAuthManager, mockHttpClientFactory);
// Act
const single = sdk.single(resource);
@@ -173,12 +173,12 @@ describe('StrapiSDK', () => {
it('fetch should add an application/json Content-Type header to each request', async () => {
// Arrange
const path = '/homepage';
- const config = { baseURL: 'https://localhost:1337/api' } satisfies StrapiSDKConfig;
+ const config = { baseURL: 'https://localhost:1337/api' } satisfies StrapiConfig;
- const mockValidator = new MockStrapiSDKValidator();
+ const mockValidator = new MockStrapiConfigValidator();
const mockAuthManager = new MockAuthManager();
- const sdk = new StrapiSDK(config, mockValidator, mockAuthManager, mockHttpClientFactory);
+ const sdk = new Strapi(config, mockValidator, mockAuthManager, mockHttpClientFactory);
const fetchSpy = jest.spyOn(MockHttpClient.prototype, 'fetch');
@@ -203,12 +203,12 @@ describe('StrapiSDK', () => {
])('should throw an HTTP exception on %s error', async (_name, status, error) => {
// Arrange
const path = '/homepage';
- const config = { baseURL: 'https://localhost:1337/api' } satisfies StrapiSDKConfig;
+ const config = { baseURL: 'https://localhost:1337/api' } satisfies StrapiConfig;
- const mockValidator = new MockStrapiSDKValidator();
+ const mockValidator = new MockStrapiConfigValidator();
const mockAuthManager = new MockAuthManager();
- const sdk = new StrapiSDK(config, mockValidator, mockAuthManager, mockHttpClientFactory);
+ const sdk = new Strapi(config, mockValidator, mockAuthManager, mockHttpClientFactory);
jest
.spyOn(MockHttpClient.prototype, 'fetch')
@@ -226,14 +226,14 @@ describe('StrapiSDK', () => {
const config = {
baseURL: 'https://localhost:1337/api',
auth: { strategy: MockAuthProvider.identifier },
- } satisfies StrapiSDKConfig;
+ } satisfies StrapiConfig;
- const mockValidator = new MockStrapiSDKValidator();
+ const mockValidator = new MockStrapiConfigValidator();
const mockAuthManager = new MockAuthManager();
const authenticateSpy = jest.spyOn(MockAuthManager.prototype, 'authenticate');
- const sdk = new StrapiSDK(config, mockValidator, mockAuthManager, mockHttpClientFactory);
+ const sdk = new Strapi(config, mockValidator, mockAuthManager, mockHttpClientFactory);
// Act
await sdk.fetch('/');
@@ -247,14 +247,14 @@ describe('StrapiSDK', () => {
const config = {
baseURL: 'https://localhost:1337/api',
auth: { strategy: MockAuthProvider.identifier },
- } satisfies StrapiSDKConfig;
+ } satisfies StrapiConfig;
- const mockValidator = new MockStrapiSDKValidator();
+ const mockValidator = new MockStrapiConfigValidator();
const mockAuthManager = new MockAuthManager();
const authenticateRequestSpy = jest.spyOn(MockAuthManager.prototype, 'authenticateRequest');
- const sdk = new StrapiSDK(config, mockValidator, mockAuthManager, mockHttpClientFactory);
+ const sdk = new Strapi(config, mockValidator, mockAuthManager, mockHttpClientFactory);
// Act
await sdk.fetch('/');
@@ -271,14 +271,14 @@ describe('StrapiSDK', () => {
it(`shouldn't authenticates outgoing HTTP requests if no auth strategy is set`, async () => {
// Arrange
- const config = { baseURL: 'https://localhost:1337/api' } satisfies StrapiSDKConfig;
+ const config = { baseURL: 'https://localhost:1337/api' } satisfies StrapiConfig;
- const mockValidator = new MockStrapiSDKValidator();
+ const mockValidator = new MockStrapiConfigValidator();
const mockAuthManager = new MockAuthManager();
const authenticateRequestSpy = jest.spyOn(MockAuthManager.prototype, 'authenticateRequest');
- const sdk = new StrapiSDK(config, mockValidator, mockAuthManager, mockHttpClientFactory);
+ const sdk = new Strapi(config, mockValidator, mockAuthManager, mockHttpClientFactory);
// Act
await sdk.fetch('/');
@@ -298,12 +298,12 @@ describe('StrapiSDK', () => {
const config = {
baseURL: 'https://localhost:1337/api',
auth: { strategy: MockAuthProvider.identifier },
- } satisfies StrapiSDKConfig;
+ } satisfies StrapiConfig;
- const mockValidator = new MockStrapiSDKValidator();
+ const mockValidator = new MockStrapiConfigValidator();
const mockAuthManager = new MockAuthManager();
- const sdk = new StrapiSDK(config, mockValidator, mockAuthManager, mockHttpClientFactory);
+ const sdk = new Strapi(config, mockValidator, mockAuthManager, mockHttpClientFactory);
const spies = {
authenticate: jest.spyOn(MockAuthManager.prototype, 'authenticate'),
@@ -332,13 +332,13 @@ describe('StrapiSDK', () => {
it('should fetch data correctly with fetch method', async () => {
// Arrange
- const config = { baseURL: 'https://localhost:1337/api' } satisfies StrapiSDKConfig;
+ const config = { baseURL: 'https://localhost:1337/api' } satisfies StrapiConfig;
const requestSpy = jest.spyOn(MockHttpClient.prototype, 'request');
- const mockValidator = new MockStrapiSDKValidator();
+ const mockValidator = new MockStrapiConfigValidator();
const mockAuthManager = new MockAuthManager();
- const sdk = new StrapiSDK(config, mockValidator, mockAuthManager, mockHttpClientFactory);
+ const sdk = new Strapi(config, mockValidator, mockAuthManager, mockHttpClientFactory);
// Act
const response = await sdk.fetch('/data');
@@ -350,12 +350,12 @@ describe('StrapiSDK', () => {
it('should retrieve baseURL correctly from config', () => {
// Arrange
- const config = { baseURL: 'https://localhost:1337/api' } satisfies StrapiSDKConfig;
+ const config = { baseURL: 'https://localhost:1337/api' } satisfies StrapiConfig;
- const mockValidator = new MockStrapiSDKValidator();
+ const mockValidator = new MockStrapiConfigValidator();
const mockAuthManager = new MockAuthManager();
- const sdk = new StrapiSDK(config, mockValidator, mockAuthManager, mockHttpClientFactory);
+ const sdk = new Strapi(config, mockValidator, mockAuthManager, mockHttpClientFactory);
// Act
const { baseURL } = sdk;
diff --git a/tests/unit/validators/sdk.test.ts b/tests/unit/validators/strapi-config.test.ts
similarity index 61%
rename from tests/unit/validators/sdk.test.ts
rename to tests/unit/validators/strapi-config.test.ts
index 6e6e92a..545e8b4 100644
--- a/tests/unit/validators/sdk.test.ts
+++ b/tests/unit/validators/strapi-config.test.ts
@@ -1,9 +1,9 @@
-import { StrapiSDKValidationError, URLValidationError } from '../../../src';
-import { StrapiSDKValidator, URLValidator } from '../../../src/validators';
+import { StrapiValidationError, URLValidationError } from '../../../src';
+import { StrapiConfigValidator, URLValidator } from '../../../src/validators';
-import type { StrapiSDKConfig } from '../../../src/sdk';
+import type { StrapiConfig } from '../../../src/sdk';
-describe('Strapi SDKValidator', () => {
+describe('Strapi Config Validator', () => {
let urlValidatorMock: jest.Mocked;
beforeEach(() => {
@@ -16,20 +16,20 @@ describe('Strapi SDKValidator', () => {
'should throw an error if config is not a valid object (%s)',
(config: unknown) => {
// Arrange
- const validator = new StrapiSDKValidator(urlValidatorMock);
- const expected = new StrapiSDKValidationError(
+ const validator = new StrapiConfigValidator(urlValidatorMock);
+ const expected = new StrapiValidationError(
new TypeError('The provided configuration is not a valid object.')
);
// Act & Assert
- expect(() => validator.validateConfig(config as StrapiSDKConfig)).toThrow(expected);
+ expect(() => validator.validateConfig(config as StrapiConfig)).toThrow(expected);
}
);
it('should not throw an error if config is a valid object', () => {
// Arrange
const config = { baseURL: 'https://example.com' };
- const validator = new StrapiSDKValidator(urlValidatorMock);
+ const validator = new StrapiConfigValidator(urlValidatorMock);
// Act & Assert
expect(() => validator.validateConfig(config)).not.toThrow();
@@ -39,8 +39,8 @@ describe('Strapi SDKValidator', () => {
describe('validateBaseURL', () => {
it('should call validateBaseURL method with the baseURL', () => {
// Arrange
- const validator = new StrapiSDKValidator(urlValidatorMock);
- const config: StrapiSDKConfig = { baseURL: 'http://valid.url' };
+ const validator = new StrapiConfigValidator(urlValidatorMock);
+ const config: StrapiConfig = { baseURL: 'http://valid.url' };
// Act
validator.validateConfig(config);
@@ -49,9 +49,9 @@ describe('Strapi SDKValidator', () => {
expect(urlValidatorMock.validate).toHaveBeenCalledWith('http://valid.url');
});
- it('should throw StrapiSDKValidationError on URLValidationError', () => {
+ it('should throw StrapiValidationError on URLValidationError', () => {
// Arrange
- const validator = new StrapiSDKValidator(urlValidatorMock);
+ const validator = new StrapiConfigValidator(urlValidatorMock);
const baseURL = 'invalid-url';
urlValidatorMock.validate.mockImplementationOnce(() => {
@@ -59,7 +59,7 @@ describe('Strapi SDKValidator', () => {
});
// Act & Assert
- expect(() => validator.validateConfig({ baseURL })).toThrow(StrapiSDKValidationError);
+ expect(() => validator.validateConfig({ baseURL })).toThrow(StrapiValidationError);
});
});
});