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