diff --git a/.github/actions/run-api-tests/script.sh b/.github/actions/run-api-tests/script.sh
index 94c3196212..11b2eaacd7 100755
--- a/.github/actions/run-api-tests/script.sh
+++ b/.github/actions/run-api-tests/script.sh
@@ -10,6 +10,6 @@ export JWT_SECRET="aSecret"
opts=($DB_OPTIONS)
-yarn nx run-many --target=build:ts --nx-ignore-cycles --skip-nx-cache
+yarn nx run-many --target=build --nx-ignore-cycles --skip-nx-cache
yarn run test:generate-app --appPath=test-apps/api "${opts[@]}"
yarn run test:api --no-generate-app
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
index 9480b1fe89..4fa312f3ad 100644
--- a/.github/workflows/tests.yml
+++ b/.github/workflows/tests.yml
@@ -54,8 +54,6 @@ jobs:
- uses: nrwl/nx-set-shas@v3
- name: Monorepo install
uses: ./.github/actions/yarn-nm-install
- - name: Run build:ts
- run: yarn nx run-many --target=build:ts --nx-ignore-cycles --skip-nx-cache
- name: Run build
run: yarn nx run-many --target=build --nx-ignore-cycles --skip-nx-cache
- name: Run lint
@@ -75,8 +73,6 @@ jobs:
- uses: nrwl/nx-set-shas@v3
- name: Monorepo install
uses: ./.github/actions/yarn-nm-install
- - name: Run build:ts
- run: yarn nx run-many --target=build:ts --nx-ignore-cycles --skip-nx-cache
- name: Run build
run: yarn nx run-many --target=build --nx-ignore-cycles --skip-nx-cache
- name: TSC for packages
@@ -103,10 +99,8 @@ jobs:
- uses: nrwl/nx-set-shas@v3
- name: Monorepo install
uses: ./.github/actions/yarn-nm-install
- - name: Run build:ts
- run: yarn nx run-many --target=build:ts --nx-ignore-cycles --skip-nx-cache
- name: Run build
- run: yarn build --projects=@strapi/pack-up --skip-nx-cache
+ run: yarn build --skip-nx-cache
- name: Run tests
run: yarn nx affected --target=test:unit --nx-ignore-cycles
@@ -127,7 +121,7 @@ jobs:
- uses: nrwl/nx-set-shas@v3
- name: Monorepo install
uses: ./.github/actions/yarn-nm-install
- - name: Run build:ts for admin-test-utils
+ - name: Run build for admin-test-utils
run: yarn build --projects=@strapi/admin-test-utils,@strapi/helper-plugin --skip-nx-cache
- name: Run test
run: yarn nx affected --target=test:front --nx-ignore-cycles
@@ -173,9 +167,6 @@ jobs:
- name: Install Playwright Browsers
run: npx playwright@1.38.1 install --with-deps
- - name: Run build:ts
- run: yarn nx run-many --target=build:ts --nx-ignore-cycles --skip-nx-cache
-
- name: Run build
run: yarn nx run-many --target=build --nx-ignore-cycles --skip-nx-cache
diff --git a/e2e/tests/content-manager/listview.spec.js b/e2e/tests/content-manager/listview.spec.js
index 25102f9eb1..013d6860e6 100644
--- a/e2e/tests/content-manager/listview.spec.js
+++ b/e2e/tests/content-manager/listview.spec.js
@@ -19,6 +19,6 @@ test.describe('List View', () => {
await expect(page).toHaveTitle('Content Manager');
await expect(page.getByRole('heading', { name: 'testing' })).toBeVisible();
- await expect(page.getByRole('link', { name: /Create new entry/ })).toBeVisible();
+ await expect(page.getByRole('link', { name: /Create new entry/ }).first()).toBeVisible();
});
});
diff --git a/packages/core/admin/admin/src/content-manager/pages/ListView/index.js b/packages/core/admin/admin/src/content-manager/pages/ListView/index.js
index 5d39500556..a844c6545e 100644
--- a/packages/core/admin/admin/src/content-manager/pages/ListView/index.js
+++ b/packages/core/admin/admin/src/content-manager/pages/ListView/index.js
@@ -721,7 +721,7 @@ function ListView({
{/* Empty content */}
{/* Content */}
true;
diff --git a/packages/core/admin/admin/src/hooks/useNavigatorOnLine/tests/index.test.js b/packages/core/admin/admin/src/pages/MarketplacePage/hooks/tests/useNavigatorOnline.test.ts
similarity index 77%
rename from packages/core/admin/admin/src/hooks/useNavigatorOnLine/tests/index.test.js
rename to packages/core/admin/admin/src/pages/MarketplacePage/hooks/tests/useNavigatorOnline.test.ts
index 4b08738f0a..a3adc68f5a 100644
--- a/packages/core/admin/admin/src/hooks/useNavigatorOnLine/tests/index.test.js
+++ b/packages/core/admin/admin/src/pages/MarketplacePage/hooks/tests/useNavigatorOnline.test.ts
@@ -1,18 +1,18 @@
import { act, renderHook, waitFor } from '@testing-library/react';
-import useNavigatorOnLine from '../index';
+import { useNavigatorOnline } from '../useNavigatorOnline';
-describe('useNavigatorOnLine', () => {
+describe('useNavigatorOnline', () => {
it('returns the online state', () => {
jest.spyOn(window.navigator, 'onLine', 'get').mockReturnValue(true);
- const { result } = renderHook(() => useNavigatorOnLine());
+ const { result } = renderHook(() => useNavigatorOnline());
expect(result.current).toEqual(true);
});
it('returns the offline state', () => {
jest.spyOn(window.navigator, 'onLine', 'get').mockReturnValue(false);
- const { result } = renderHook(() => useNavigatorOnLine());
+ const { result } = renderHook(() => useNavigatorOnline());
expect(result.current).toEqual(false);
});
@@ -20,7 +20,7 @@ describe('useNavigatorOnLine', () => {
it('listens for network change online', async () => {
// Initialize an offline state
jest.spyOn(window.navigator, 'onLine', 'get').mockReturnValue(false);
- const { result } = renderHook(() => useNavigatorOnLine());
+ const { result } = renderHook(() => useNavigatorOnline());
await act(async () => {
// Simulate a change from offline to online
@@ -35,7 +35,7 @@ describe('useNavigatorOnLine', () => {
it('listens for network change offline', async () => {
// Initialize an online state
jest.spyOn(window.navigator, 'onLine', 'get').mockReturnValue(true);
- const { result } = renderHook(() => useNavigatorOnLine());
+ const { result } = renderHook(() => useNavigatorOnline());
await act(async () => {
// Simulate a change from online to offline
diff --git a/packages/core/admin/admin/src/hooks/useNavigatorOnLine/index.js b/packages/core/admin/admin/src/pages/MarketplacePage/hooks/useNavigatorOnline.ts
similarity index 76%
rename from packages/core/admin/admin/src/hooks/useNavigatorOnLine/index.js
rename to packages/core/admin/admin/src/pages/MarketplacePage/hooks/useNavigatorOnline.ts
index f2fed9c827..94bb6ab8c7 100644
--- a/packages/core/admin/admin/src/hooks/useNavigatorOnLine/index.js
+++ b/packages/core/admin/admin/src/pages/MarketplacePage/hooks/useNavigatorOnline.ts
@@ -1,21 +1,21 @@
-import { useEffect, useState } from 'react';
+import * as React from 'react';
/**
* For more details about this hook see:
* https://www.30secondsofcode.org/react/s/use-navigator-on-line
*/
-const useNavigatorOnLine = () => {
+export const useNavigatorOnline = (): boolean => {
const onlineStatus =
typeof navigator !== 'undefined' && typeof navigator.onLine === 'boolean'
? navigator.onLine
: true;
- const [isOnline, setIsOnline] = useState(onlineStatus);
+ const [isOnline, setIsOnline] = React.useState(onlineStatus);
const setOnline = () => setIsOnline(true);
const setOffline = () => setIsOnline(false);
- useEffect(() => {
+ React.useEffect(() => {
window.addEventListener('online', setOnline);
window.addEventListener('offline', setOffline);
@@ -27,5 +27,3 @@ const useNavigatorOnLine = () => {
return isOnline;
};
-
-export default useNavigatorOnLine;
diff --git a/packages/core/admin/admin/src/pages/MarketplacePage/index.js b/packages/core/admin/admin/src/pages/MarketplacePage/index.js
index 4f07924e4d..d4df98c6b0 100644
--- a/packages/core/admin/admin/src/pages/MarketplacePage/index.js
+++ b/packages/core/admin/admin/src/pages/MarketplacePage/index.js
@@ -26,7 +26,6 @@ import { useIntl } from 'react-intl';
import { useSelector } from 'react-redux';
import useDebounce from '../../hooks/useDebounce';
-import useNavigatorOnLine from '../../hooks/useNavigatorOnLine';
import { selectAdminPermissions } from '../App/selectors';
import MissingPluginBanner from './components/MissingPluginBanner';
@@ -36,6 +35,7 @@ import NpmPackagesPagination from './components/NpmPackagesPagination';
import OfflineLayout from './components/OfflineLayout';
import PageHeader from './components/PageHeader';
import SortSelect from './components/SortSelect';
+import { useNavigatorOnline } from './hooks/useNavigatorOnline';
import useMarketplaceData from './utils/useMarketplaceData';
const MarketPlacePage = () => {
@@ -47,7 +47,7 @@ const MarketPlacePage = () => {
const debouncedSearch = useDebounce(query?.search, 500) || '';
const { autoReload: isInDevelopmentMode, dependencies, useYarn, strapiVersion } = useAppInfo();
- const isOnline = useNavigatorOnLine();
+ const isOnline = useNavigatorOnline();
const npmPackageType = query?.npmPackageType || 'plugin';
diff --git a/packages/core/admin/admin/src/pages/MarketplacePage/tests/index.test.js b/packages/core/admin/admin/src/pages/MarketplacePage/tests/index.test.js
index a76c2b65e4..b325830a79 100644
--- a/packages/core/admin/admin/src/pages/MarketplacePage/tests/index.test.js
+++ b/packages/core/admin/admin/src/pages/MarketplacePage/tests/index.test.js
@@ -12,7 +12,7 @@ import { MarketPlacePage } from '../index';
import server from './server';
-jest.mock('../../../hooks/useNavigatorOnLine', () => jest.fn(() => true));
+jest.mock('../hooks/useNavigatorOnline');
jest.mock('@strapi/helper-plugin', () => ({
...jest.requireActual('@strapi/helper-plugin'),
diff --git a/packages/core/admin/admin/src/pages/MarketplacePage/tests/plugins.test.js b/packages/core/admin/admin/src/pages/MarketplacePage/tests/plugins.test.js
index 4b1e460e2c..d75d534df2 100644
--- a/packages/core/admin/admin/src/pages/MarketplacePage/tests/plugins.test.js
+++ b/packages/core/admin/admin/src/pages/MarketplacePage/tests/plugins.test.js
@@ -14,7 +14,7 @@ import server from './server';
// Increase the jest timeout to accommodate long running tests
jest.setTimeout(50000);
-jest.mock('../../../hooks/useNavigatorOnLine', () => jest.fn(() => true));
+jest.mock('../hooks/useNavigatorOnline');
jest.mock('../../../hooks/useDebounce', () => (value) => value);
jest.mock('@strapi/helper-plugin', () => ({
...jest.requireActual('@strapi/helper-plugin'),
diff --git a/packages/core/admin/admin/src/pages/MarketplacePage/tests/providers.test.js b/packages/core/admin/admin/src/pages/MarketplacePage/tests/providers.test.js
index f7ddf4e296..839b5aa9fb 100644
--- a/packages/core/admin/admin/src/pages/MarketplacePage/tests/providers.test.js
+++ b/packages/core/admin/admin/src/pages/MarketplacePage/tests/providers.test.js
@@ -19,7 +19,7 @@ jest.setTimeout(50000);
* MOCKS
*/
jest.mock('../../../hooks/useDebounce', () => (value) => value);
-jest.mock('../../../hooks/useNavigatorOnLine', () => jest.fn(() => true));
+jest.mock('../hooks/useNavigatorOnline');
jest.mock('@strapi/helper-plugin', () => ({
...jest.requireActual('@strapi/helper-plugin'),
useAppInfo: jest.fn(() => ({
diff --git a/packages/core/helper-plugin/declarations/@strapi/utils.d.ts b/packages/core/helper-plugin/declarations/@strapi/utils.d.ts
deleted file mode 100644
index 10e3d19fd7..0000000000
--- a/packages/core/helper-plugin/declarations/@strapi/utils.d.ts
+++ /dev/null
@@ -1,50 +0,0 @@
-// temporary solution found from https://stackoverflow.com/a/41641001/10434847
-
-import { ValidationError as ActualYupValidationError } from 'yup';
-
-export namespace errors {
- export declare class ApplicationError extends Error {
- details: TDetails;
-
- constructor(message?: string, details?: TDetails);
- }
-
- export declare class ValidationError extends ApplicationError {
- constructor(message?: string, details?: unknown);
- }
-
- export interface YupFormattedError {
- path: string[];
- message: string;
- name: string;
- }
- export declare class YupValidationError extends ValidationError<{
- errors: Array;
- }> {
- constructor(yupError: ActualYupValidationError, message?: string);
- }
- export declare class PaginationError extends ApplicationError {
- constructor(message?: string, details?: unknown);
- }
- export declare class NotFoundError extends ApplicationError {
- constructor(message?: string, details?: unknown);
- }
- export declare class ForbiddenError extends ApplicationError {
- constructor(message?: string, details?: unknown);
- }
- export declare class UnauthorizedError extends ApplicationError {
- constructor(message?: string, details?: unknown);
- }
- export declare class RateLimitError extends ApplicationError {
- constructor(message?: string, details?: unknown);
- }
- export declare class PayloadTooLargeError extends ApplicationError {
- constructor(message?: string, details?: unknown);
- }
- export declare class PolicyError extends ForbiddenError {
- constructor(message?: string, details?: unknown);
- }
- export declare class NotImplementedError extends ApplicationError {
- constructor(message?: string, details?: unknown);
- }
-}
diff --git a/packages/core/helper-plugin/src/utils/normalizeAPIError.ts b/packages/core/helper-plugin/src/utils/normalizeAPIError.ts
index 5470d55355..9b1564dd97 100644
--- a/packages/core/helper-plugin/src/utils/normalizeAPIError.ts
+++ b/packages/core/helper-plugin/src/utils/normalizeAPIError.ts
@@ -17,8 +17,14 @@ interface NormalizeErrorReturn {
values: Record<'path', string> | Record;
}
+interface YupFormattedError {
+ path: string[];
+ message: string;
+ name: string;
+}
+
function normalizeError(
- error: ApiError | errors.YupFormattedError,
+ error: ApiError | YupFormattedError,
{ name, intlMessagePrefixCallback }: NormalizeErrorOptions
): NormalizeErrorReturn {
const { message } = error;
@@ -37,7 +43,9 @@ function normalizeError(
return normalizedError;
}
-const validateErrorIsYupValidationError = (err: ApiError): err is errors.YupValidationError =>
+const validateErrorIsYupValidationError = (
+ err: ApiError
+): err is errors.YupValidationError & { details: { errors: YupFormattedError[] } } =>
typeof err.details === 'object' && err.details !== null && 'errors' in err.details;
export function normalizeAPIError(
diff --git a/packages/core/upload/admin/src/components/UploadAssetDialog/tests/UploadAssetDialog.test.js b/packages/core/upload/admin/src/components/UploadAssetDialog/tests/UploadAssetDialog.test.js
index d20297f55a..2b3fdd65bb 100644
--- a/packages/core/upload/admin/src/components/UploadAssetDialog/tests/UploadAssetDialog.test.js
+++ b/packages/core/upload/admin/src/components/UploadAssetDialog/tests/UploadAssetDialog.test.js
@@ -92,7 +92,7 @@ describe('UploadAssetDialog', () => {
fireEvent.click(getByRole('button', { name: 'Next' }));
await waitFor(() => expect(screen.getByText('An error occured')).toBeInTheDocument());
- });
+ }, 10000);
it('snapshots the component with 4 URLs: 3 valid and one in failure', async () => {
const { user, getByText, getByRole } = render();
diff --git a/packages/core/utils/package.json b/packages/core/utils/package.json
index a86d597db8..a7fa36f030 100644
--- a/packages/core/utils/package.json
+++ b/packages/core/utils/package.json
@@ -28,22 +28,20 @@
}
],
"main": "./dist/index.js",
+ "module": "./dist/index.mjs",
+ "source": "./src/index.ts",
"types": "./dist/index.d.ts",
"files": [
"./dist/**/!(*.d.ts.map)"
],
- "directories": {
- "lib": "./lib"
- },
"scripts": {
- "build": "run -T tsc",
- "build:ts": "run build",
- "watch": "run -T tsc -w --preserveWatchOutput",
+ "build": "pack-up build",
"clean": "run -T rimraf ./dist",
+ "lint": "run -T eslint .",
"prepublishOnly": "yarn clean && yarn build",
"test:unit": "run -T jest",
"test:unit:watch": "run -T jest --watch",
- "lint": "run -T eslint ."
+ "watch": "run -T pack-up watch"
},
"dependencies": {
"@sindresorhus/slugify": "1.1.0",
@@ -54,6 +52,7 @@
"yup": "0.32.9"
},
"devDependencies": {
+ "@strapi/pack-up": "workspace:*",
"@types/koa": "2.13.4",
"@types/node": "18.11.9",
"eslint-config-custom": "4.14.3",
diff --git a/packages/core/utils/packup.config.ts b/packages/core/utils/packup.config.ts
new file mode 100644
index 0000000000..4be00a28bd
--- /dev/null
+++ b/packages/core/utils/packup.config.ts
@@ -0,0 +1,7 @@
+// eslint-disable-next-line import/no-extraneous-dependencies
+import { defineConfig } from '@strapi/pack-up';
+
+export default defineConfig({
+ externals: ['node:stream'],
+ runtime: 'node',
+});
diff --git a/packages/core/utils/src/index.ts b/packages/core/utils/src/index.ts
index 9c867728ec..a8d5b5aec1 100644
--- a/packages/core/utils/src/index.ts
+++ b/packages/core/utils/src/index.ts
@@ -1,12 +1,10 @@
-/* eslint-disable @typescript-eslint/no-namespace */
/**
* Export shared utilities
*/
-import type * as yupTypes from 'yup';
-import parseMultipartData from './parse-multipart';
+import { parseMultipartData } from './parse-multipart';
import parseType from './parse-type';
import * as policy from './policy';
-import templateConfiguration from './template-configuration';
+import { templateConfiguration } from './template-configuration';
import { handleYupError, validateYupSchema, validateYupSchemaSync } from './validators';
import * as yup from './yup';
@@ -47,24 +45,7 @@ import * as traverse from './traverse';
import webhook from './webhook';
import { isOperator, isOperatorOfType } from './operators';
-// eslint-disable-next-line @typescript-eslint/no-namespace
-namespace utils {
- export namespace yup {
- export type BaseSchema = yupTypes.BaseSchema;
- export type AnySchema = yupTypes.AnySchema;
- export type NumberSchema = yupTypes.NumberSchema;
- export type StringSchema = yupTypes.StringSchema;
- export type BooleanSchema = yupTypes.BooleanSchema;
- export type ObjectSchema = yupTypes.AnyObjectSchema;
- export type ArraySchema = yupTypes.ArraySchema;
- export type LazySchema = ReturnType<
- typeof yupTypes.lazy
- >;
- }
-}
-
-// eslint-disable-next-line @typescript-eslint/no-redeclare
-const utils = {
+export {
parseMultipartData,
parseType,
policy,
@@ -115,5 +96,3 @@ const utils = {
isOperator,
isOperatorOfType,
};
-
-export = utils;
diff --git a/packages/core/utils/src/parse-multipart.ts b/packages/core/utils/src/parse-multipart.ts
index 4a58d8d158..a133f34f7c 100644
--- a/packages/core/utils/src/parse-multipart.ts
+++ b/packages/core/utils/src/parse-multipart.ts
@@ -1,7 +1,7 @@
import _ from 'lodash';
import type Koa from 'koa';
-export = (ctx: Koa.Context) => {
+export const parseMultipartData = (ctx: Koa.Context) => {
if (!ctx.is('multipart')) {
return { data: ctx.request.body, files: {} };
}
diff --git a/packages/core/utils/src/print-value.ts b/packages/core/utils/src/print-value.ts
index 3a83f8fd90..5c0c7b8450 100644
--- a/packages/core/utils/src/print-value.ts
+++ b/packages/core/utils/src/print-value.ts
@@ -50,4 +50,4 @@ function printValue(value: unknown, quoteStrings: boolean) {
);
}
-export = printValue;
+export { printValue };
diff --git a/packages/core/utils/src/template-configuration.ts b/packages/core/utils/src/template-configuration.ts
index 28f86f3eeb..935bf81320 100644
--- a/packages/core/utils/src/template-configuration.ts
+++ b/packages/core/utils/src/template-configuration.ts
@@ -31,4 +31,4 @@ const templateConfiguration = (obj: Record, configPath = '') =>
}, {} as Record);
};
-export = templateConfiguration;
+export { templateConfiguration };
diff --git a/packages/core/utils/src/yup.ts b/packages/core/utils/src/yup.ts
index f8645f4cbe..eb9424314a 100644
--- a/packages/core/utils/src/yup.ts
+++ b/packages/core/utils/src/yup.ts
@@ -4,7 +4,7 @@ import * as yup from 'yup';
import _ from 'lodash';
import { isNumber, isInteger, get } from 'lodash/fp';
import * as utils from './string-formatting';
-import printValue from './print-value';
+import { printValue } from './print-value';
export * from 'yup';
diff --git a/packages/core/utils/tsconfig.build.json b/packages/core/utils/tsconfig.build.json
new file mode 100644
index 0000000000..e54ade8009
--- /dev/null
+++ b/packages/core/utils/tsconfig.build.json
@@ -0,0 +1,9 @@
+{
+ "extends": "./tsconfig.json",
+ "compilerOptions": {
+ "rootDir": "./src",
+ "outDir": "./dist"
+ },
+ "include": ["src"],
+ "exclude": ["**/__tests__/**"]
+}
diff --git a/packages/core/utils/tsconfig.eslint.json b/packages/core/utils/tsconfig.eslint.json
index b531808514..d0192f9ff6 100644
--- a/packages/core/utils/tsconfig.eslint.json
+++ b/packages/core/utils/tsconfig.eslint.json
@@ -3,6 +3,6 @@
"compilerOptions": {
"noEmit": true
},
- "include": ["src"],
+ "include": ["src", "packup.config.ts"],
"exclude": ["node_modules"]
}
diff --git a/packages/providers/audit-logs-local/package.json b/packages/providers/audit-logs-local/package.json
index 2d7d9c888e..e748c409c2 100644
--- a/packages/providers/audit-logs-local/package.json
+++ b/packages/providers/audit-logs-local/package.json
@@ -28,19 +28,21 @@
}
],
"main": "./dist/index.js",
+ "module": "./dist/index.mjs",
+ "source": "./src/index.ts",
"types": "./dist/index.d.ts",
"files": [
"./dist"
],
"scripts": {
- "build": "run -T tsc",
- "build:ts": "run -T tsc",
- "watch": "run -T tsc -w --preserveWatchOutput",
+ "build": "pack-up build",
"clean": "run -T rimraf ./dist",
+ "lint": "run -T eslint .",
"prepublishOnly": "yarn clean && yarn build",
- "lint": "run -T eslint ."
+ "watch": "pack-up watch"
},
"devDependencies": {
+ "@strapi/pack-up": "workspace:*",
"@strapi/types": "4.14.3",
"eslint-config-custom": "4.14.3",
"tsconfig": "4.14.3"
diff --git a/packages/providers/audit-logs-local/packup.config.ts b/packages/providers/audit-logs-local/packup.config.ts
new file mode 100644
index 0000000000..95e06b2131
--- /dev/null
+++ b/packages/providers/audit-logs-local/packup.config.ts
@@ -0,0 +1,6 @@
+// eslint-disable-next-line import/no-extraneous-dependencies
+import { defineConfig } from '@strapi/pack-up';
+
+export default defineConfig({
+ runtime: 'node',
+});
diff --git a/packages/providers/audit-logs-local/src/index.ts b/packages/providers/audit-logs-local/src/index.ts
index 541785bbda..a56ddd1b8a 100644
--- a/packages/providers/audit-logs-local/src/index.ts
+++ b/packages/providers/audit-logs-local/src/index.ts
@@ -12,7 +12,7 @@ interface Log extends Omit {
user: string | number;
}
-export = {
+export default {
async register({ strapi }: { strapi: Strapi }) {
const contentTypes = strapi.container.get('content-types');
if (!contentTypes.keys().includes('admin::audit-log')) {
diff --git a/packages/providers/audit-logs-local/tsconfig.build.json b/packages/providers/audit-logs-local/tsconfig.build.json
new file mode 100644
index 0000000000..85d086a2df
--- /dev/null
+++ b/packages/providers/audit-logs-local/tsconfig.build.json
@@ -0,0 +1,8 @@
+{
+ "extends": "./tsconfig",
+ "compilerOptions": {
+ "outDir": "dist"
+ },
+ "include": ["src"],
+ "exclude": ["**/__tests__/**"]
+}
diff --git a/packages/providers/audit-logs-local/tsconfig.eslint.json b/packages/providers/audit-logs-local/tsconfig.eslint.json
index b531808514..d0192f9ff6 100644
--- a/packages/providers/audit-logs-local/tsconfig.eslint.json
+++ b/packages/providers/audit-logs-local/tsconfig.eslint.json
@@ -3,6 +3,6 @@
"compilerOptions": {
"noEmit": true
},
- "include": ["src"],
+ "include": ["src", "packup.config.ts"],
"exclude": ["node_modules"]
}
diff --git a/packages/providers/audit-logs-local/tsconfig.json b/packages/providers/audit-logs-local/tsconfig.json
index f6e9b92e7e..f9cbaa8cc7 100644
--- a/packages/providers/audit-logs-local/tsconfig.json
+++ b/packages/providers/audit-logs-local/tsconfig.json
@@ -1,8 +1,5 @@
{
"extends": "tsconfig/base.json",
- "compilerOptions": {
- "outDir": "dist"
- },
"include": ["src"],
- "exclude": ["node_modules", "**/__tests__/**"]
+ "exclude": ["node_modules"]
}
diff --git a/packages/providers/email-amazon-ses/package.json b/packages/providers/email-amazon-ses/package.json
index 0730e9425e..82f29f7e87 100644
--- a/packages/providers/email-amazon-ses/package.json
+++ b/packages/providers/email-amazon-ses/package.json
@@ -29,23 +29,25 @@
}
],
"main": "./dist/index.js",
+ "module": "./dist/index.mjs",
+ "source": "./src/index.ts",
"types": "./dist/index.d.ts",
"files": [
"./dist"
],
"scripts": {
- "build": "run -T tsc",
- "build:ts": "run -T tsc",
- "watch": "run -T tsc -w --preserveWatchOutput",
+ "build": "pack-up build",
"clean": "run -T rimraf ./dist",
+ "lint": "run -T eslint .",
"prepublishOnly": "yarn clean && yarn build",
- "lint": "run -T eslint ."
+ "watch": "pack-up watch"
},
"dependencies": {
"@strapi/utils": "4.14.3",
"node-ses": "^3.0.3"
},
"devDependencies": {
+ "@strapi/pack-up": "workspace:*",
"eslint-config-custom": "4.14.3",
"tsconfig": "4.14.3"
},
diff --git a/packages/providers/email-amazon-ses/packup.config.ts b/packages/providers/email-amazon-ses/packup.config.ts
new file mode 100644
index 0000000000..95e06b2131
--- /dev/null
+++ b/packages/providers/email-amazon-ses/packup.config.ts
@@ -0,0 +1,6 @@
+// eslint-disable-next-line import/no-extraneous-dependencies
+import { defineConfig } from '@strapi/pack-up';
+
+export default defineConfig({
+ runtime: 'node',
+});
diff --git a/packages/providers/email-amazon-ses/src/index.ts b/packages/providers/email-amazon-ses/src/index.ts
index e31b589ae4..98846995a2 100644
--- a/packages/providers/email-amazon-ses/src/index.ts
+++ b/packages/providers/email-amazon-ses/src/index.ts
@@ -23,7 +23,7 @@ interface ProviderOptions {
amazon?: string;
}
-export = {
+export default {
init(providerOptions: ProviderOptions, settings: Settings) {
const client = nodeSES.createClient(providerOptions);
diff --git a/packages/providers/email-amazon-ses/tsconfig.build.json b/packages/providers/email-amazon-ses/tsconfig.build.json
new file mode 100644
index 0000000000..85d086a2df
--- /dev/null
+++ b/packages/providers/email-amazon-ses/tsconfig.build.json
@@ -0,0 +1,8 @@
+{
+ "extends": "./tsconfig",
+ "compilerOptions": {
+ "outDir": "dist"
+ },
+ "include": ["src"],
+ "exclude": ["**/__tests__/**"]
+}
diff --git a/packages/providers/email-amazon-ses/tsconfig.eslint.json b/packages/providers/email-amazon-ses/tsconfig.eslint.json
index b531808514..d0192f9ff6 100644
--- a/packages/providers/email-amazon-ses/tsconfig.eslint.json
+++ b/packages/providers/email-amazon-ses/tsconfig.eslint.json
@@ -3,6 +3,6 @@
"compilerOptions": {
"noEmit": true
},
- "include": ["src"],
+ "include": ["src", "packup.config.ts"],
"exclude": ["node_modules"]
}
diff --git a/packages/providers/email-amazon-ses/tsconfig.json b/packages/providers/email-amazon-ses/tsconfig.json
index f6e9b92e7e..f9cbaa8cc7 100644
--- a/packages/providers/email-amazon-ses/tsconfig.json
+++ b/packages/providers/email-amazon-ses/tsconfig.json
@@ -1,8 +1,5 @@
{
"extends": "tsconfig/base.json",
- "compilerOptions": {
- "outDir": "dist"
- },
"include": ["src"],
- "exclude": ["node_modules", "**/__tests__/**"]
+ "exclude": ["node_modules"]
}
diff --git a/packages/providers/email-mailgun/package.json b/packages/providers/email-mailgun/package.json
index 41dbe8cc51..93041501d7 100644
--- a/packages/providers/email-mailgun/package.json
+++ b/packages/providers/email-mailgun/package.json
@@ -29,19 +29,20 @@
}
],
"main": "./dist/index.js",
+ "module": "./dist/index.mjs",
+ "source": "./src/index.ts",
"types": "./dist/index.d.ts",
"files": [
"./dist"
],
"scripts": {
- "build": "run -T tsc",
- "build:ts": "run -T tsc",
- "watch": "run -T tsc -w --preserveWatchOutput",
+ "build": "pack-up build",
"clean": "run -T rimraf ./dist",
+ "lint": "run -T eslint .",
"prepublishOnly": "yarn clean && yarn build",
"test:unit": "run -T jest",
"test:unit:watch": "run -T jest --watch",
- "lint": "run -T eslint ."
+ "watch": "pack-up watch"
},
"dependencies": {
"@strapi/utils": "4.14.3",
@@ -49,6 +50,7 @@
"mailgun.js": "8.2.1"
},
"devDependencies": {
+ "@strapi/pack-up": "workspace:*",
"eslint-config-custom": "4.14.3",
"tsconfig": "4.14.3"
},
diff --git a/packages/providers/email-mailgun/packup.config.ts b/packages/providers/email-mailgun/packup.config.ts
new file mode 100644
index 0000000000..95e06b2131
--- /dev/null
+++ b/packages/providers/email-mailgun/packup.config.ts
@@ -0,0 +1,6 @@
+// eslint-disable-next-line import/no-extraneous-dependencies
+import { defineConfig } from '@strapi/pack-up';
+
+export default defineConfig({
+ runtime: 'node',
+});
diff --git a/packages/providers/email-mailgun/src/index.ts b/packages/providers/email-mailgun/src/index.ts
index 94157a25e6..6074beefef 100644
--- a/packages/providers/email-mailgun/src/index.ts
+++ b/packages/providers/email-mailgun/src/index.ts
@@ -31,7 +31,7 @@ const optionsMap: Record = {
host: { field: 'url', fn: (value) => `https://${value || 'api.mailgun.net'}` },
};
-export = {
+export default {
convertProviderOptions(providerOptions: ProviderOptions): Record {
const newOptions: Record = {};
if (typeof providerOptions === 'object') {
diff --git a/packages/providers/email-mailgun/tsconfig.build.json b/packages/providers/email-mailgun/tsconfig.build.json
new file mode 100644
index 0000000000..85d086a2df
--- /dev/null
+++ b/packages/providers/email-mailgun/tsconfig.build.json
@@ -0,0 +1,8 @@
+{
+ "extends": "./tsconfig",
+ "compilerOptions": {
+ "outDir": "dist"
+ },
+ "include": ["src"],
+ "exclude": ["**/__tests__/**"]
+}
diff --git a/packages/providers/email-mailgun/tsconfig.eslint.json b/packages/providers/email-mailgun/tsconfig.eslint.json
index b531808514..d0192f9ff6 100644
--- a/packages/providers/email-mailgun/tsconfig.eslint.json
+++ b/packages/providers/email-mailgun/tsconfig.eslint.json
@@ -3,6 +3,6 @@
"compilerOptions": {
"noEmit": true
},
- "include": ["src"],
+ "include": ["src", "packup.config.ts"],
"exclude": ["node_modules"]
}
diff --git a/packages/providers/email-mailgun/tsconfig.json b/packages/providers/email-mailgun/tsconfig.json
index f6e9b92e7e..f9cbaa8cc7 100644
--- a/packages/providers/email-mailgun/tsconfig.json
+++ b/packages/providers/email-mailgun/tsconfig.json
@@ -1,8 +1,5 @@
{
"extends": "tsconfig/base.json",
- "compilerOptions": {
- "outDir": "dist"
- },
"include": ["src"],
- "exclude": ["node_modules", "**/__tests__/**"]
+ "exclude": ["node_modules"]
}
diff --git a/packages/providers/email-nodemailer/package.json b/packages/providers/email-nodemailer/package.json
index f19c563ce4..7b2d635842 100644
--- a/packages/providers/email-nodemailer/package.json
+++ b/packages/providers/email-nodemailer/package.json
@@ -42,23 +42,25 @@
}
],
"main": "./dist/index.js",
+ "module": "./dist/index.mjs",
+ "source": "./src/index.ts",
"types": "./dist/index.d.ts",
"files": [
"./dist"
],
"scripts": {
- "build": "run -T tsc",
- "build:ts": "run -T tsc",
- "watch": "run -T tsc -w --preserveWatchOutput",
+ "build": "pack-up build",
"clean": "run -T rimraf ./dist",
+ "lint": "run -T eslint .",
"prepublishOnly": "yarn clean && yarn build",
- "lint": "run -T eslint ."
+ "watch": "pack-up watch"
},
"dependencies": {
"lodash": "4.17.21",
"nodemailer": "6.9.1"
},
"devDependencies": {
+ "@strapi/pack-up": "workspace:*",
"@types/nodemailer": "6.4.7",
"eslint-config-custom": "4.14.3",
"tsconfig": "4.14.3"
diff --git a/packages/providers/email-nodemailer/packup.config.ts b/packages/providers/email-nodemailer/packup.config.ts
new file mode 100644
index 0000000000..95e06b2131
--- /dev/null
+++ b/packages/providers/email-nodemailer/packup.config.ts
@@ -0,0 +1,6 @@
+// eslint-disable-next-line import/no-extraneous-dependencies
+import { defineConfig } from '@strapi/pack-up';
+
+export default defineConfig({
+ runtime: 'node',
+});
diff --git a/packages/providers/email-nodemailer/src/index.ts b/packages/providers/email-nodemailer/src/index.ts
index d4d7d6de19..91fdfce75d 100644
--- a/packages/providers/email-nodemailer/src/index.ts
+++ b/packages/providers/email-nodemailer/src/index.ts
@@ -32,7 +32,7 @@ const emailFields = [
'attachments',
];
-export = {
+export default {
provider: 'nodemailer',
name: 'Nodemailer',
diff --git a/packages/providers/email-nodemailer/tsconfig.build.json b/packages/providers/email-nodemailer/tsconfig.build.json
new file mode 100644
index 0000000000..85d086a2df
--- /dev/null
+++ b/packages/providers/email-nodemailer/tsconfig.build.json
@@ -0,0 +1,8 @@
+{
+ "extends": "./tsconfig",
+ "compilerOptions": {
+ "outDir": "dist"
+ },
+ "include": ["src"],
+ "exclude": ["**/__tests__/**"]
+}
diff --git a/packages/providers/email-nodemailer/tsconfig.eslint.json b/packages/providers/email-nodemailer/tsconfig.eslint.json
index b531808514..d0192f9ff6 100644
--- a/packages/providers/email-nodemailer/tsconfig.eslint.json
+++ b/packages/providers/email-nodemailer/tsconfig.eslint.json
@@ -3,6 +3,6 @@
"compilerOptions": {
"noEmit": true
},
- "include": ["src"],
+ "include": ["src", "packup.config.ts"],
"exclude": ["node_modules"]
}
diff --git a/packages/providers/email-nodemailer/tsconfig.json b/packages/providers/email-nodemailer/tsconfig.json
index f6e9b92e7e..f9cbaa8cc7 100644
--- a/packages/providers/email-nodemailer/tsconfig.json
+++ b/packages/providers/email-nodemailer/tsconfig.json
@@ -1,8 +1,5 @@
{
"extends": "tsconfig/base.json",
- "compilerOptions": {
- "outDir": "dist"
- },
"include": ["src"],
- "exclude": ["node_modules", "**/__tests__/**"]
+ "exclude": ["node_modules"]
}
diff --git a/packages/providers/email-sendgrid/package.json b/packages/providers/email-sendgrid/package.json
index 998ede5c3a..a9fc802747 100644
--- a/packages/providers/email-sendgrid/package.json
+++ b/packages/providers/email-sendgrid/package.json
@@ -29,23 +29,25 @@
}
],
"main": "./dist/index.js",
+ "module": "./dist/index.mjs",
+ "source": "./src/index.ts",
"types": "./dist/index.d.ts",
"files": [
"./dist"
],
"scripts": {
- "build": "run -T tsc",
- "build:ts": "run -T tsc",
- "watch": "run -T tsc -w --preserveWatchOutput",
+ "build": "pack-up build",
"clean": "run -T rimraf ./dist",
+ "lint": "run -T eslint .",
"prepublishOnly": "yarn clean && yarn build",
- "lint": "run -T eslint ."
+ "watch": "pack-up watch"
},
"dependencies": {
"@sendgrid/mail": "7.7.0",
"@strapi/utils": "4.14.3"
},
"devDependencies": {
+ "@strapi/pack-up": "workspace:*",
"eslint-config-custom": "4.14.3",
"tsconfig": "4.14.3"
},
diff --git a/packages/providers/email-sendgrid/packup.config.ts b/packages/providers/email-sendgrid/packup.config.ts
new file mode 100644
index 0000000000..95e06b2131
--- /dev/null
+++ b/packages/providers/email-sendgrid/packup.config.ts
@@ -0,0 +1,6 @@
+// eslint-disable-next-line import/no-extraneous-dependencies
+import { defineConfig } from '@strapi/pack-up';
+
+export default defineConfig({
+ runtime: 'node',
+});
diff --git a/packages/providers/email-sendgrid/src/index.ts b/packages/providers/email-sendgrid/src/index.ts
index 177dd6ed11..0e56ccb3c9 100644
--- a/packages/providers/email-sendgrid/src/index.ts
+++ b/packages/providers/email-sendgrid/src/index.ts
@@ -21,7 +21,7 @@ interface ProviderOptions {
apiKey: string;
}
-export = {
+export default {
init(providerOptions: ProviderOptions, settings: Settings) {
sendgrid.setApiKey(providerOptions.apiKey);
diff --git a/packages/providers/email-sendgrid/tsconfig.build.json b/packages/providers/email-sendgrid/tsconfig.build.json
new file mode 100644
index 0000000000..85d086a2df
--- /dev/null
+++ b/packages/providers/email-sendgrid/tsconfig.build.json
@@ -0,0 +1,8 @@
+{
+ "extends": "./tsconfig",
+ "compilerOptions": {
+ "outDir": "dist"
+ },
+ "include": ["src"],
+ "exclude": ["**/__tests__/**"]
+}
diff --git a/packages/providers/email-sendgrid/tsconfig.eslint.json b/packages/providers/email-sendgrid/tsconfig.eslint.json
index b531808514..d0192f9ff6 100644
--- a/packages/providers/email-sendgrid/tsconfig.eslint.json
+++ b/packages/providers/email-sendgrid/tsconfig.eslint.json
@@ -3,6 +3,6 @@
"compilerOptions": {
"noEmit": true
},
- "include": ["src"],
+ "include": ["src", "packup.config.ts"],
"exclude": ["node_modules"]
}
diff --git a/packages/providers/email-sendgrid/tsconfig.json b/packages/providers/email-sendgrid/tsconfig.json
index f6e9b92e7e..f9cbaa8cc7 100644
--- a/packages/providers/email-sendgrid/tsconfig.json
+++ b/packages/providers/email-sendgrid/tsconfig.json
@@ -1,8 +1,5 @@
{
"extends": "tsconfig/base.json",
- "compilerOptions": {
- "outDir": "dist"
- },
"include": ["src"],
- "exclude": ["node_modules", "**/__tests__/**"]
+ "exclude": ["node_modules"]
}
diff --git a/packages/providers/email-sendmail/package.json b/packages/providers/email-sendmail/package.json
index 100aafa1f6..59368af816 100644
--- a/packages/providers/email-sendmail/package.json
+++ b/packages/providers/email-sendmail/package.json
@@ -28,23 +28,25 @@
}
],
"main": "./dist/index.js",
+ "module": "./dist/index.mjs",
+ "source": "./src/index.ts",
"types": "./dist/index.d.ts",
"files": [
"./dist"
],
"scripts": {
- "build": "run -T tsc",
- "build:ts": "run -T tsc",
- "watch": "run -T tsc -w --preserveWatchOutput",
+ "build": "pack-up build",
"clean": "run -T rimraf ./dist",
+ "lint": "run -T eslint .",
"prepublishOnly": "yarn clean && yarn build",
- "lint": "run -T eslint ."
+ "watch": "pack-up watch"
},
"dependencies": {
"@strapi/utils": "4.14.3",
"sendmail": "^1.6.1"
},
"devDependencies": {
+ "@strapi/pack-up": "workspace:*",
"@types/sendmail": "1.4.4",
"eslint-config-custom": "4.14.3",
"tsconfig": "4.14.3"
diff --git a/packages/providers/email-sendmail/packup.config.ts b/packages/providers/email-sendmail/packup.config.ts
new file mode 100644
index 0000000000..95e06b2131
--- /dev/null
+++ b/packages/providers/email-sendmail/packup.config.ts
@@ -0,0 +1,6 @@
+// eslint-disable-next-line import/no-extraneous-dependencies
+import { defineConfig } from '@strapi/pack-up';
+
+export default defineConfig({
+ runtime: 'node',
+});
diff --git a/packages/providers/email-sendmail/src/index.ts b/packages/providers/email-sendmail/src/index.ts
index 9313ebd155..6c829b0f21 100644
--- a/packages/providers/email-sendmail/src/index.ts
+++ b/packages/providers/email-sendmail/src/index.ts
@@ -19,7 +19,7 @@ interface SendOptions {
type ProviderOptions = Options;
-export = {
+export default {
init(providerOptions: ProviderOptions, settings: Settings) {
const sendmail = sendmailFactory({
silent: true,
diff --git a/packages/providers/email-sendmail/tsconfig.build.json b/packages/providers/email-sendmail/tsconfig.build.json
new file mode 100644
index 0000000000..85d086a2df
--- /dev/null
+++ b/packages/providers/email-sendmail/tsconfig.build.json
@@ -0,0 +1,8 @@
+{
+ "extends": "./tsconfig",
+ "compilerOptions": {
+ "outDir": "dist"
+ },
+ "include": ["src"],
+ "exclude": ["**/__tests__/**"]
+}
diff --git a/packages/providers/email-sendmail/tsconfig.eslint.json b/packages/providers/email-sendmail/tsconfig.eslint.json
index b531808514..d0192f9ff6 100644
--- a/packages/providers/email-sendmail/tsconfig.eslint.json
+++ b/packages/providers/email-sendmail/tsconfig.eslint.json
@@ -3,6 +3,6 @@
"compilerOptions": {
"noEmit": true
},
- "include": ["src"],
+ "include": ["src", "packup.config.ts"],
"exclude": ["node_modules"]
}
diff --git a/packages/providers/email-sendmail/tsconfig.json b/packages/providers/email-sendmail/tsconfig.json
index f6e9b92e7e..f9cbaa8cc7 100644
--- a/packages/providers/email-sendmail/tsconfig.json
+++ b/packages/providers/email-sendmail/tsconfig.json
@@ -1,8 +1,5 @@
{
"extends": "tsconfig/base.json",
- "compilerOptions": {
- "outDir": "dist"
- },
"include": ["src"],
- "exclude": ["node_modules", "**/__tests__/**"]
+ "exclude": ["node_modules"]
}
diff --git a/packages/providers/upload-aws-s3/package.json b/packages/providers/upload-aws-s3/package.json
index 6346e5e9bd..4903ce2a9b 100644
--- a/packages/providers/upload-aws-s3/package.json
+++ b/packages/providers/upload-aws-s3/package.json
@@ -30,25 +30,27 @@
}
],
"main": "./dist/index.js",
+ "module": "./dist/index.mjs",
+ "source": "./src/index.ts",
"types": "./dist/index.d.ts",
"files": [
"./dist"
],
"scripts": {
- "build": "run -T tsc",
- "build:ts": "run -T tsc",
- "watch": "run -T tsc -w --preserveWatchOutput",
+ "build": "pack-up build",
"clean": "run -T rimraf ./dist",
+ "lint": "run -T eslint .",
"prepublishOnly": "yarn clean && yarn build",
"test:unit": "run -T jest",
"test:unit:watch": "run -T jest --watch",
- "lint": "run -T eslint ."
+ "watch": "pack-up watch"
},
"dependencies": {
"aws-sdk": "2.1437.0",
"lodash": "4.17.21"
},
"devDependencies": {
+ "@strapi/pack-up": "workspace:*",
"@types/jest": "29.5.2",
"eslint-config-custom": "4.14.3",
"tsconfig": "4.14.3"
diff --git a/packages/providers/upload-aws-s3/packup.config.ts b/packages/providers/upload-aws-s3/packup.config.ts
new file mode 100644
index 0000000000..95e06b2131
--- /dev/null
+++ b/packages/providers/upload-aws-s3/packup.config.ts
@@ -0,0 +1,6 @@
+// eslint-disable-next-line import/no-extraneous-dependencies
+import { defineConfig } from '@strapi/pack-up';
+
+export default defineConfig({
+ runtime: 'node',
+});
diff --git a/packages/providers/upload-aws-s3/src/index.ts b/packages/providers/upload-aws-s3/src/index.ts
index d37fd04afb..a47909883b 100644
--- a/packages/providers/upload-aws-s3/src/index.ts
+++ b/packages/providers/upload-aws-s3/src/index.ts
@@ -44,7 +44,7 @@ interface InitOptions extends Partial {
};
}
-export = {
+export default {
init({ baseUrl, rootPath, s3Options, ...legacyS3Options }: InitOptions) {
if (Object.keys(legacyS3Options).length > 0) {
process.emitWarning(
diff --git a/packages/providers/upload-aws-s3/tsconfig.build.json b/packages/providers/upload-aws-s3/tsconfig.build.json
new file mode 100644
index 0000000000..85d086a2df
--- /dev/null
+++ b/packages/providers/upload-aws-s3/tsconfig.build.json
@@ -0,0 +1,8 @@
+{
+ "extends": "./tsconfig",
+ "compilerOptions": {
+ "outDir": "dist"
+ },
+ "include": ["src"],
+ "exclude": ["**/__tests__/**"]
+}
diff --git a/packages/providers/upload-aws-s3/tsconfig.eslint.json b/packages/providers/upload-aws-s3/tsconfig.eslint.json
index b531808514..d0192f9ff6 100644
--- a/packages/providers/upload-aws-s3/tsconfig.eslint.json
+++ b/packages/providers/upload-aws-s3/tsconfig.eslint.json
@@ -3,6 +3,6 @@
"compilerOptions": {
"noEmit": true
},
- "include": ["src"],
+ "include": ["src", "packup.config.ts"],
"exclude": ["node_modules"]
}
diff --git a/packages/providers/upload-aws-s3/tsconfig.json b/packages/providers/upload-aws-s3/tsconfig.json
index f6e9b92e7e..f9cbaa8cc7 100644
--- a/packages/providers/upload-aws-s3/tsconfig.json
+++ b/packages/providers/upload-aws-s3/tsconfig.json
@@ -1,8 +1,5 @@
{
"extends": "tsconfig/base.json",
- "compilerOptions": {
- "outDir": "dist"
- },
"include": ["src"],
- "exclude": ["node_modules", "**/__tests__/**"]
+ "exclude": ["node_modules"]
}
diff --git a/packages/providers/upload-cloudinary/package.json b/packages/providers/upload-cloudinary/package.json
index 3978d305ba..072536f617 100644
--- a/packages/providers/upload-cloudinary/package.json
+++ b/packages/providers/upload-cloudinary/package.json
@@ -29,17 +29,18 @@
}
],
"main": "./dist/index.js",
+ "module": "./dist/index.mjs",
+ "source": "./src/index.ts",
"types": "./dist/index.d.ts",
"files": [
"./dist"
],
"scripts": {
- "build": "run -T tsc",
- "build:ts": "run -T tsc",
- "watch": "run -T tsc -w --preserveWatchOutput",
+ "build": "pack-up build",
"clean": "run -T rimraf ./dist",
+ "lint": "run -T eslint .",
"prepublishOnly": "yarn clean && yarn build",
- "lint": "run -T eslint ."
+ "watch": "pack-up watch"
},
"dependencies": {
"@strapi/utils": "4.14.3",
@@ -47,6 +48,7 @@
"into-stream": "^5.1.0"
},
"devDependencies": {
+ "@strapi/pack-up": "workspace:*",
"eslint-config-custom": "4.14.3",
"tsconfig": "4.14.3"
},
diff --git a/packages/providers/upload-cloudinary/packup.config.ts b/packages/providers/upload-cloudinary/packup.config.ts
new file mode 100644
index 0000000000..95e06b2131
--- /dev/null
+++ b/packages/providers/upload-cloudinary/packup.config.ts
@@ -0,0 +1,6 @@
+// eslint-disable-next-line import/no-extraneous-dependencies
+import { defineConfig } from '@strapi/pack-up';
+
+export default defineConfig({
+ runtime: 'node',
+});
diff --git a/packages/providers/upload-cloudinary/src/index.ts b/packages/providers/upload-cloudinary/src/index.ts
index 702c99a5fa..1731f3e3d7 100644
--- a/packages/providers/upload-cloudinary/src/index.ts
+++ b/packages/providers/upload-cloudinary/src/index.ts
@@ -23,7 +23,7 @@ interface File {
buffer?: Buffer;
}
-export = {
+export default {
init(options: ConfigOptions) {
cloudinary.config(options);
diff --git a/packages/providers/upload-cloudinary/tsconfig.build.json b/packages/providers/upload-cloudinary/tsconfig.build.json
new file mode 100644
index 0000000000..85d086a2df
--- /dev/null
+++ b/packages/providers/upload-cloudinary/tsconfig.build.json
@@ -0,0 +1,8 @@
+{
+ "extends": "./tsconfig",
+ "compilerOptions": {
+ "outDir": "dist"
+ },
+ "include": ["src"],
+ "exclude": ["**/__tests__/**"]
+}
diff --git a/packages/providers/upload-cloudinary/tsconfig.eslint.json b/packages/providers/upload-cloudinary/tsconfig.eslint.json
index b531808514..d0192f9ff6 100644
--- a/packages/providers/upload-cloudinary/tsconfig.eslint.json
+++ b/packages/providers/upload-cloudinary/tsconfig.eslint.json
@@ -3,6 +3,6 @@
"compilerOptions": {
"noEmit": true
},
- "include": ["src"],
+ "include": ["src", "packup.config.ts"],
"exclude": ["node_modules"]
}
diff --git a/packages/providers/upload-local/package.json b/packages/providers/upload-local/package.json
index ee7e51dc04..1463e910c1 100644
--- a/packages/providers/upload-local/package.json
+++ b/packages/providers/upload-local/package.json
@@ -28,25 +28,27 @@
}
],
"main": "./dist/index.js",
+ "module": "./dist/index.mjs",
+ "source": "./src/index.ts",
"types": "./dist/index.d.ts",
"files": [
"./dist"
],
"scripts": {
- "build": "run -T tsc",
- "build:ts": "run -T tsc",
- "watch": "run -T tsc -w --preserveWatchOutput",
+ "build": "pack-up build",
"clean": "run -T rimraf ./dist",
+ "lint": "run -T eslint .",
"prepublishOnly": "yarn clean && yarn build",
"test:unit": "run -T jest",
"test:unit:watch": "run -T jest --watch",
- "lint": "run -T eslint ."
+ "watch": "pack-up watch"
},
"dependencies": {
"@strapi/utils": "4.14.3",
"fs-extra": "10.0.0"
},
"devDependencies": {
+ "@strapi/pack-up": "workspace:*",
"@types/jest": "29.5.2",
"eslint-config-custom": "4.14.3",
"tsconfig": "4.14.3"
diff --git a/packages/providers/upload-local/packup.config.ts b/packages/providers/upload-local/packup.config.ts
new file mode 100644
index 0000000000..b2b7fcdd87
--- /dev/null
+++ b/packages/providers/upload-local/packup.config.ts
@@ -0,0 +1,7 @@
+// eslint-disable-next-line import/no-extraneous-dependencies
+import { defineConfig } from '@strapi/pack-up';
+
+export default defineConfig({
+ externals: ['stream', 'fs', 'path'],
+ runtime: 'node',
+});
diff --git a/packages/providers/upload-local/src/index.ts b/packages/providers/upload-local/src/index.ts
index e49f8ce40e..88c1a7b051 100644
--- a/packages/providers/upload-local/src/index.ts
+++ b/packages/providers/upload-local/src/index.ts
@@ -37,7 +37,7 @@ interface CheckFileSizeOptions {
sizeLimit?: number;
}
-export = {
+export default {
init({ sizeLimit: providerOptionsSizeLimit }: InitOptions = {}) {
// TODO V5: remove providerOptions sizeLimit
if (providerOptionsSizeLimit) {
diff --git a/packages/providers/upload-local/tsconfig.build.json b/packages/providers/upload-local/tsconfig.build.json
new file mode 100644
index 0000000000..85d086a2df
--- /dev/null
+++ b/packages/providers/upload-local/tsconfig.build.json
@@ -0,0 +1,8 @@
+{
+ "extends": "./tsconfig",
+ "compilerOptions": {
+ "outDir": "dist"
+ },
+ "include": ["src"],
+ "exclude": ["**/__tests__/**"]
+}
diff --git a/packages/providers/upload-local/tsconfig.eslint.json b/packages/providers/upload-local/tsconfig.eslint.json
index b531808514..d0192f9ff6 100644
--- a/packages/providers/upload-local/tsconfig.eslint.json
+++ b/packages/providers/upload-local/tsconfig.eslint.json
@@ -3,6 +3,6 @@
"compilerOptions": {
"noEmit": true
},
- "include": ["src"],
+ "include": ["src", "packup.config.ts"],
"exclude": ["node_modules"]
}
diff --git a/packages/providers/upload-local/tsconfig.json b/packages/providers/upload-local/tsconfig.json
index f6e9b92e7e..f9cbaa8cc7 100644
--- a/packages/providers/upload-local/tsconfig.json
+++ b/packages/providers/upload-local/tsconfig.json
@@ -1,8 +1,5 @@
{
"extends": "tsconfig/base.json",
- "compilerOptions": {
- "outDir": "dist"
- },
"include": ["src"],
- "exclude": ["node_modules", "**/__tests__/**"]
+ "exclude": ["node_modules"]
}
diff --git a/packages/utils/pack-up/README.md b/packages/utils/pack-up/README.md
index 78bbcf56e8..8b2b41dbbe 100644
--- a/packages/utils/pack-up/README.md
+++ b/packages/utils/pack-up/README.md
@@ -110,6 +110,12 @@ be exported by the package, e.g. CLI scripts or Node.js workers.
The path to the directory to which the bundled files should be written.
+#### `exports`
+
+- Type: `Record`
+
+Overwrite or amend the parsed exports from your `package.json`.
+
#### `externals`
- Type: `string[]`
diff --git a/packages/utils/pack-up/package.json b/packages/utils/pack-up/package.json
index 53cf727da3..ee64ceb9c1 100644
--- a/packages/utils/pack-up/package.json
+++ b/packages/utils/pack-up/package.json
@@ -30,7 +30,6 @@
"url": "https://strapi.io"
}
],
- "bin": "./bin/pack-up.js",
"exports": {
".": {
"types": "./dist/index.d.ts",
@@ -41,6 +40,11 @@
},
"./package.json": "./package.json"
},
+ "main": "./dist/index.js",
+ "module": "./dist/index.mjs",
+ "source": "./src/index.ts",
+ "types": "./dist/index.d.ts",
+ "bin": "./bin/pack-up.js",
"files": [
"bin",
"dist"
@@ -52,8 +56,8 @@
"lint": "run -T eslint .",
"prepublishOnly": "yarn clean && yarn build",
"test": "test:ts && test:unit",
- "test:unit": "run -T jest",
"test:ts": "run -T tsc --noEmit",
+ "test:unit": "run -T jest",
"watch": "node -r esbuild-register scripts/watch"
},
"dependencies": {
diff --git a/packages/utils/pack-up/src/node/core/config.ts b/packages/utils/pack-up/src/node/core/config.ts
index 1e16a57daa..b8ff7a6744 100644
--- a/packages/utils/pack-up/src/node/core/config.ts
+++ b/packages/utils/pack-up/src/node/core/config.ts
@@ -4,10 +4,11 @@ import os from 'os';
import * as path from 'path';
import pkgUp from 'pkg-up';
-import { Runtime } from '../createBuildContext';
-
import { Logger } from './logger';
+import type { Export } from './exports';
+import type { Runtime } from '../createBuildContext';
+
interface LoadConfigOptions {
cwd: string;
logger: Logger;
@@ -69,6 +70,7 @@ interface ConfigBundle {
import?: string;
require?: string;
runtime?: Runtime;
+ types?: string;
}
interface ConfigOptions {
@@ -77,6 +79,10 @@ interface ConfigOptions {
* @description the directory to output the bundle to.
*/
dist?: string;
+ /**
+ * @description Overwrite the default exports.
+ */
+ exports?: ConfigProperty>;
/**
* @description a list of external dependencies to exclude from the bundle.
* We already collect the dependencies & peerDeps from the package.json.
@@ -96,5 +102,22 @@ const defineConfig = (configOptions: ConfigOptions): ConfigOptions => configOpti
type Config = ConfigOptions;
+type ConfigPropertyResolver = (currentValue: T) => T;
+
+type ConfigProperty = T | ConfigPropertyResolver;
+
+/** @internal */
+export function resolveConfigProperty(prop: ConfigProperty | undefined, initialValue: T): T {
+ if (!prop) {
+ return initialValue;
+ }
+
+ if (typeof prop === 'function') {
+ return (prop as ConfigPropertyResolver)(initialValue);
+ }
+
+ return prop;
+}
+
export { loadConfig, defineConfig, CONFIG_FILE_NAMES };
export type { Config };
diff --git a/packages/utils/pack-up/src/node/createBuildContext.ts b/packages/utils/pack-up/src/node/createBuildContext.ts
index 06fd7e55f8..460688395d 100644
--- a/packages/utils/pack-up/src/node/createBuildContext.ts
+++ b/packages/utils/pack-up/src/node/createBuildContext.ts
@@ -1,6 +1,7 @@
import browserslistToEsbuild from 'browserslist-to-esbuild';
import path from 'path';
+import { resolveConfigProperty } from './core/config';
import { parseExports, ExtMap, Export } from './core/exports';
import { loadTsConfig } from './core/tsconfig';
@@ -74,12 +75,14 @@ const createBuildContext = async ({
web: ['esnext'],
};
- const exports = parseExports({ extMap, pkg }).reduce((acc, x) => {
+ const parsedExports = parseExports({ extMap, pkg }).reduce((acc, x) => {
const { _path: exportPath, ...exportEntry } = x;
return { ...acc, [exportPath]: exportEntry };
}, {} as Record);
+ const exports = resolveConfigProperty(config.exports, parsedExports);
+
const parsedExternals = [
...(pkg.dependencies ? Object.keys(pkg.dependencies) : []),
...(pkg.peerDependencies ? Object.keys(pkg.peerDependencies) : []),
diff --git a/packages/utils/pack-up/src/node/createTasks.ts b/packages/utils/pack-up/src/node/createTasks.ts
index 0deaf66c2e..e7b317e4ee 100644
--- a/packages/utils/pack-up/src/node/createTasks.ts
+++ b/packages/utils/pack-up/src/node/createTasks.ts
@@ -134,6 +134,17 @@ const createTasks =
output: bundle.import,
});
}
+
+ if (bundle.types) {
+ const importId = path.join(ctx.pkg.name, bundle.source);
+
+ dtsTask.entries.push({
+ importId,
+ exportPath: bundle.source,
+ sourcePath: bundle.source,
+ targetPath: bundle.types,
+ });
+ }
}
if (dtsTask.entries.length) {
diff --git a/yarn.lock b/yarn.lock
index cc32e861eb..fafb6a5c23 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -8150,6 +8150,7 @@ __metadata:
version: 0.0.0-use.local
resolution: "@strapi/provider-audit-logs-local@workspace:packages/providers/audit-logs-local"
dependencies:
+ "@strapi/pack-up": "workspace:*"
"@strapi/types": 4.14.3
eslint-config-custom: 4.14.3
tsconfig: 4.14.3
@@ -8160,6 +8161,7 @@ __metadata:
version: 0.0.0-use.local
resolution: "@strapi/provider-email-amazon-ses@workspace:packages/providers/email-amazon-ses"
dependencies:
+ "@strapi/pack-up": "workspace:*"
"@strapi/utils": 4.14.3
eslint-config-custom: 4.14.3
node-ses: ^3.0.3
@@ -8171,6 +8173,7 @@ __metadata:
version: 0.0.0-use.local
resolution: "@strapi/provider-email-mailgun@workspace:packages/providers/email-mailgun"
dependencies:
+ "@strapi/pack-up": "workspace:*"
"@strapi/utils": 4.14.3
eslint-config-custom: 4.14.3
form-data: ^4.0.0
@@ -8183,6 +8186,7 @@ __metadata:
version: 0.0.0-use.local
resolution: "@strapi/provider-email-nodemailer@workspace:packages/providers/email-nodemailer"
dependencies:
+ "@strapi/pack-up": "workspace:*"
"@types/nodemailer": 6.4.7
eslint-config-custom: 4.14.3
lodash: 4.17.21
@@ -8196,6 +8200,7 @@ __metadata:
resolution: "@strapi/provider-email-sendgrid@workspace:packages/providers/email-sendgrid"
dependencies:
"@sendgrid/mail": 7.7.0
+ "@strapi/pack-up": "workspace:*"
"@strapi/utils": 4.14.3
eslint-config-custom: 4.14.3
tsconfig: 4.14.3
@@ -8206,6 +8211,7 @@ __metadata:
version: 0.0.0-use.local
resolution: "@strapi/provider-email-sendmail@workspace:packages/providers/email-sendmail"
dependencies:
+ "@strapi/pack-up": "workspace:*"
"@strapi/utils": 4.14.3
"@types/sendmail": 1.4.4
eslint-config-custom: 4.14.3
@@ -8218,6 +8224,7 @@ __metadata:
version: 0.0.0-use.local
resolution: "@strapi/provider-upload-aws-s3@workspace:packages/providers/upload-aws-s3"
dependencies:
+ "@strapi/pack-up": "workspace:*"
"@types/jest": 29.5.2
aws-sdk: 2.1437.0
eslint-config-custom: 4.14.3
@@ -8230,6 +8237,7 @@ __metadata:
version: 0.0.0-use.local
resolution: "@strapi/provider-upload-cloudinary@workspace:packages/providers/upload-cloudinary"
dependencies:
+ "@strapi/pack-up": "workspace:*"
"@strapi/utils": 4.14.3
cloudinary: ^1.41.0
eslint-config-custom: 4.14.3
@@ -8242,6 +8250,7 @@ __metadata:
version: 0.0.0-use.local
resolution: "@strapi/provider-upload-local@workspace:packages/providers/upload-local"
dependencies:
+ "@strapi/pack-up": "workspace:*"
"@strapi/utils": 4.14.3
"@types/jest": 29.5.2
eslint-config-custom: 4.14.3
@@ -8414,6 +8423,7 @@ __metadata:
resolution: "@strapi/utils@workspace:packages/core/utils"
dependencies:
"@sindresorhus/slugify": 1.1.0
+ "@strapi/pack-up": "workspace:*"
"@types/koa": 2.13.4
"@types/node": 18.11.9
date-fns: 2.30.0