Skip to content

Commit 69f22dd

Browse files
authored
Merge pull request #33 from byte5digital/development
Development
2 parents d2ad095 + bf68e9c commit 69f22dd

6 files changed

Lines changed: 53 additions & 44 deletions

File tree

.github/workflows/pr-to-development.yml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,6 @@ jobs:
2424
- name: Install dependencies
2525
run: yarn install --frozen-lockfile
2626

27-
- name: Run Tests
28-
run: yarn test
29-
3027
- name: Run TypeScript compilation
3128
run: yarn build
3229

README.md

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,23 @@
55
</picture>
66

77
<div align="center" style="display: flex; flex-direction: row; justify-content: center; align-items: center; gap: 12px;">
8-
<picture>
9-
<source media="(prefers-color-scheme: dark)" srcset="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fregistry.npmjs.org%2F@byte5digital%2Fpayload-assist&query=%24%5B%22dist-tags%22%5D.latest&prefix=v&label=NPM&style=for-the-badge&labelColor=ffffff&color=373E45">
10-
<source media="(prefers-color-scheme: light)" srcset="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fregistry.npmjs.org%2F@byte5digital%2Fpayload-assist&query=%24%5B%22dist-tags%22%5D.latest&prefix=v&label=NPM&style=for-the-badge&labelColor=002634&color=E5E9EB">
11-
<img alt="Assist for Payload" src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fregistry.npmjs.org%2F@byte5digital%2Fpayload-assist&query=%24%5B%22dist-tags%22%5D.latest&prefix=v&label=NPM&style=for-the-badge&labelColor=002634&color=E5E9EB">
12-
</picture>
8+
<a href="https://www.npmjs.com/@byte5digital/payload-assist">
9+
<picture>
10+
<source media="(prefers-color-scheme: dark)" srcset="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fregistry.npmjs.org%2F@byte5digital%2Fpayload-assist&query=%24%5B%22dist-tags%22%5D.latest&prefix=v&label=NPM&style=for-the-badge&labelColor=ffffff&color=373E45">
11+
<source media="(prefers-color-scheme: light)" srcset="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fregistry.npmjs.org%2F@byte5digital%2Fpayload-assist&query=%24%5B%22dist-tags%22%5D.latest&prefix=v&label=NPM&style=for-the-badge&labelColor=002634&color=E5E9EB">
12+
<img alt="Assist for Payload" src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fregistry.npmjs.org%2F@byte5digital%2Fpayload-assist&query=%24%5B%22dist-tags%22%5D.latest&prefix=v&label=NPM&style=for-the-badge&labelColor=002634&color=E5E9EB">
13+
</picture>
14+
</a>
1315
<picture>
14-
<source media="(prefers-color-scheme: dark)" srcset="https://img.shields.io/badge/TESTS-PASSING-empty?style=for-the-badge&labelColor=ffffff&color=373E45">
15-
<source media="(prefers-color-scheme: light)" srcset="https://img.shields.io/badge/TESTS-PASSING-empty?style=for-the-badge&labelColor=002634&color=E5E9EB">
16-
<img alt="Tests passing" src="https://img.shields.io/badge/TESTS-PASSING-empty?style=for-the-badge&labelColor=002634&color=E5E9EB">
17-
</picture>
18-
<picture>
19-
<source media="(prefers-color-scheme: dark)" srcset="https://img.shields.io/badge/LICENSE-MIT-empty?style=for-the-badge&labelColor=ffffff&color=373E45">
20-
<source media="(prefers-color-scheme: light)" srcset="https://img.shields.io/badge/LICENSE-MIT-empty?style=for-the-badge&labelColor=002634&color=E5E9EB">
21-
<img alt="License MIT" src="https://img.shields.io/badge/LICENSE-MIT-empty?style=for-the-badge&labelColor=002634&color=E5E9EB">
22-
</picture>
16+
<source media="(prefers-color-scheme: dark)" srcset="https://img.shields.io/badge/TESTS-PASSING-empty?style=for-the-badge&labelColor=ffffff&color=373E45">
17+
<source media="(prefers-color-scheme: light)" srcset="https://img.shields.io/badge/TESTS-PASSING-empty?style=for-the-badge&labelColor=002634&color=E5E9EB">
18+
<img alt="Tests passing" src="https://img.shields.io/badge/TESTS-PASSING-empty?style=for-the-badge&labelColor=002634&color=E5E9EB">
19+
</picture>
20+
<picture>
21+
<source media="(prefers-color-scheme: dark)" srcset="https://img.shields.io/badge/LICENSE-MIT-empty?style=for-the-badge&labelColor=ffffff&color=373E45">
22+
<source media="(prefers-color-scheme: light)" srcset="https://img.shields.io/badge/LICENSE-MIT-empty?style=for-the-badge&labelColor=002634&color=E5E9EB">
23+
<img alt="License MIT" src="https://img.shields.io/badge/LICENSE-MIT-empty?style=for-the-badge&labelColor=002634&color=E5E9EB">
24+
</picture>
2325
</div>
2426

2527
# Assist for Payload

src/types/PayloadAssistError.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
export default class PayloadAssistError extends Error {
2+
constructor(message: string) {
3+
super(message);
4+
this.name = "PayloadAssistError";
5+
}
6+
}

src/utils/payload-assist.ts

Lines changed: 24 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { PayloadAssistConfig, PayloadAssistOptions } from "../types/config";
22
import payloadAssistDefaultConfig from "../default.config";
3-
import { buildConfig, Config as PayloadConfig } from "payload";
3+
import { Config as PayloadConfig, Plugin } from "payload";
44

55
export { payloadAssistDefaultConfig as defaultConfig };
66

@@ -12,33 +12,32 @@ export let payloadAssistConfig: PayloadAssistConfig | undefined = undefined;
1212
* @param options - The options to cusotmize payloadAssist.
1313
* @returns Built and sanitized Payload Config
1414
*/
15-
export const payloadAssist = (
16-
payloadConfig: PayloadConfig,
17-
options?: PayloadAssistOptions
18-
) => {
19-
if (payloadAssistConfig) throw `PayloadAssist is already initialized`;
15+
export const payloadAssist =
16+
(options?: PayloadAssistOptions): Plugin =>
17+
(payloadConfig: PayloadConfig) => {
18+
if (payloadAssistConfig) throw `PayloadAssist is already initialized`;
2019

21-
payloadAssistConfig = {
22-
...payloadAssistDefaultConfig,
23-
...(options ?? {}),
24-
};
20+
payloadAssistConfig = {
21+
...payloadAssistDefaultConfig,
22+
...(options ?? {}),
23+
};
2524

26-
Object.entries(payloadAssistConfig.ruleSet).reduce(
27-
(payloadConfig, [ruleName, rule]) => {
28-
try {
29-
if (rule === false) return payloadConfig; // rule is deactivated, so we skip it
30-
if (!rule(payloadConfig))
31-
throw `The payload config does not satisfy "${ruleName}".`;
32-
} catch (error) {
33-
throw `[PayloadAssist Error]: ${ruleName}: ${error}`;
34-
}
35-
return payloadConfig;
36-
},
37-
payloadConfig
38-
);
25+
Object.entries(payloadAssistConfig.ruleSet).reduce(
26+
(payloadConfig, [ruleName, rule]) => {
27+
try {
28+
if (rule === false) return payloadConfig; // rule is deactivated, so we skip it
29+
if (!rule(payloadConfig))
30+
throw `The payload config does not satisfy "${ruleName}".`;
31+
} catch (error) {
32+
throw `[PayloadAssist Error]: ${ruleName}: ${error}`;
33+
}
34+
return payloadConfig;
35+
},
36+
payloadConfig
37+
);
3938

40-
return buildConfig(payloadConfig);
41-
};
39+
return payloadConfig;
40+
};
4241

4342
/**
4443
* Resets internal module state for tests or reinitialization.
Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
import { Dto } from "../types/dto";
22
import { payloadAssistConfig as payloadAssistConfig } from "./payload-assist";
3+
import PayloadAssistError from "../types/PayloadAssistError";
34

45
export const transformAndValidate = (dto: new () => Dto, data: unknown) => {
5-
if (!payloadAssistConfig) throw `PayloadAssist is not initialized. Use payloadAssist() to initialize it.`;
6+
if (!payloadAssistConfig)
7+
throw new PayloadAssistError(
8+
`PayloadAssist is not initialized. Use payloadAssist() to initialize it.`
9+
);
610

711
return payloadAssistConfig.transformAndValidate(dto, data);
812
};

src/utils/with-dto-read-hook.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import type { CollectionAfterReadHook } from "payload";
22
import { Dto } from "../types/dto";
33
import { payloadAssistConfig as payloadAssistConfig } from "./payload-assist";
4+
import PayloadAssistError from "../types/PayloadAssistError";
45

56
/**
67
* Dtos is an array of objects with the following properties:
@@ -39,7 +40,7 @@ type afterReadHook = CollectionAfterReadHook & {
3940
*/
4041
export const withDtoReadHook = (dtos: Dtos) => {
4142
const afterReadHook: afterReadHook = async (args) => {
42-
if (!payloadAssistConfig) throw `PayloadAssist is not initialized. Use payloadAssist() to initialize it.`;
43+
if (!payloadAssistConfig) throw new PayloadAssistError(`PayloadAssist is not initialized. Use payloadAssist() to initialize it.`);
4344

4445
const { doc, req } = args;
4546
if (req.payloadAPI === "local") return doc; // requests from local payload api don't require DTOs

0 commit comments

Comments
 (0)