Skip to content

Commit

Permalink
feat: adds fields-select package
Browse files Browse the repository at this point in the history
* pass after operation, fields select package

* add fields-select package

* fields select doc

* bump

* publish script

* publish scripts
  • Loading branch information
r1tsuu authored Jun 21, 2024
1 parent 727899c commit 39586cc
Show file tree
Hide file tree
Showing 22 changed files with 1,600 additions and 958 deletions.
12 changes: 7 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,17 @@

#### 2. [Cached Local API](packages/cached-local-api/) - cache and automatically revalidate the Local API operations with support of `depth` using Next.js `unstable_cache`

#### 3. [Plugin Docs Reorder](packages/docs-reorder/) - reordering documents in a collection list view
#### 3. [Fields Select](packages/fields-select/) - select fields from Local API / REST API response like with GraphQL, as well with `defaultSelect` for relationship fields

#### 4. [Plugin Better Localized Fields](packages/better-localized-fields/) - Adds to every localized field locales tabs with a field's value on selected locale.
#### 4. [Plugin Docs Reorder](packages/docs-reorder/) - reordering documents in a collection list view

#### 5. [Plugin Better Use-As-Title](packages/better-use-as-title) - Better version of `useAsTitle` property that accepts function with document data as argument.
#### 5. [Plugin Better Localized Fields](packages/better-localized-fields/) - Adds to every localized field locales tabs with a field's value on selected locale.

#### 6. [Bump Payload CLI](packages/bump-payload/) - Bumps all Payload 3.0 related packages versions.
#### 6. [Plugin Better Use-As-Title](packages/better-use-as-title) - Better version of `useAsTitle` property that accepts function with document data as argument.

#### 7. [Plugin SEO](packages/seo) - Alternative version of [official](https://payloadcms.com/docs/plugins/seo) Payload plugin that comes with AI seo generating.
#### 7. [Bump Payload CLI](packages/bump-payload/) - Bumps all Payload 3.0 related packages versions.

#### 8. [Plugin SEO](packages/seo) - Alternative version of [official](https://payloadcms.com/docs/plugins/seo) Payload plugin that comes with AI seo generating.

## Note

Expand Down
5 changes: 3 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "payload-enchants",
"version": "1.1.40-pre.0",
"version": "1.1.40",
"private": true,
"description": "",
"keywords": [],
Expand All @@ -17,14 +17,15 @@
"dev": "pnpm --filter test dev",
"dev:types": "cd test && pnpm generate:types",
"lint": "turbo lint --filter \"@payload-enchants/*\"",
"publish:all": "pnpm publish:docs-reorder && pnpm publish:translator && pnpm publish:better-localized-fields && pnpm publish:bump-payload && pnpm publish:seo && pnpm publish:better-use-as-title && pnpm publish:cached-local-api",
"publish:all": "pnpm publish:docs-reorder && pnpm publish:translator && pnpm publish:better-localized-fields && pnpm publish:bump-payload && pnpm publish:seo && pnpm publish:better-use-as-title && pnpm publish:cached-local-api && pnpm publish:fields-select",
"publish:better-localized-fields": "cd ./packages/better-localized-fields && pnpm publish",
"publish:bump-payload": "cd ./packages/bump-payload && pnpm publish",
"publish:cached-local-api": "cd ./packages/cached-local-api && pnpm publish",
"publish:docs-reorder": "cd ./packages/docs-reorder && pnpm publish",
"publish:seo": "cd ./packages/seo && pnpm publish",
"publish:translator": "cd ./packages/translator && pnpm publish",
"publish:better-use-as-title": "cd ./packages/better-use-as-title && pnpm publish",
"publish:fields-select": "cd ./packages/fields-select && pnpm publish",
"test": "cd test && pnpm test"
},
"devDependencies": {
Expand Down
2 changes: 1 addition & 1 deletion packages/better-localized-fields/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@payload-enchants/better-localized-fields",
"version": "1.1.39",
"version": "1.1.40",
"private": false,
"bugs": "https://github.com/r1tsuu/payload-enchants/issues",
"repository": "https://github.com/r1tsuu/payload-enchants",
Expand Down
2 changes: 1 addition & 1 deletion packages/better-use-as-title/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@payload-enchants/better-use-as-title",
"version": "1.1.39",
"version": "1.1.40",
"private": false,
"bugs": "https://github.com/r1tsuu/payload-enchants/issues",
"repository": "https://github.com/r1tsuu/payload-enchants",
Expand Down
2 changes: 1 addition & 1 deletion packages/bump-payload/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "bump-payload",
"version": "1.1.39",
"version": "1.1.40",
"private": false,
"bugs": "https://github.com/r1tsuu/payload-enchants/issues",
"repository": "https://github.com/r1tsuu/payload-enchants",
Expand Down
2 changes: 1 addition & 1 deletion packages/cached-local-api/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@payload-enchants/cached-local-api",
"version": "1.1.40-pre.0",
"version": "1.1.40",
"private": false,
"bugs": "https://github.com/r1tsuu/payload-enchants/issues",
"repository": "https://github.com/r1tsuu/payload-enchants",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,7 @@ export const extendCollectionConfig = ({
},
],
afterOperation: [
...(collection.hooks?.afterOperation ?? []),
({ operation, req: { payload }, result }) => {
if (!ctx.useSimpleCacheStrategy) return result;
if (!['delete', 'deleteByID', 'update', 'updateByID'].includes(operation)) return result;
Expand Down
2 changes: 1 addition & 1 deletion packages/docs-reorder/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@payload-enchants/docs-reorder",
"version": "1.1.39",
"version": "1.1.40",
"private": false,
"bugs": "https://github.com/r1tsuu/payload-enchants/issues",
"repository": "https://github.com/r1tsuu/payload-enchants",
Expand Down
4 changes: 4 additions & 0 deletions packages/fields-select/.eslintrc.cjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
/** @type {import('eslint').Linter.Config} */
module.exports = {
extends: ['../../.eslintrc.cjs'],
};
26 changes: 26 additions & 0 deletions packages/fields-select/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*

node_modules
dist
dist-ssr
*.local

# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?

tsconfig.tsbuildinfo
20 changes: 20 additions & 0 deletions packages/fields-select/.swcrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"$schema": "https://json.schemastore.org/swcrc",
"sourceMaps": true,
"jsc": {
"target": "esnext",
"parser": {
"syntax": "typescript",
"tsx": true,
"dts": true
},
"transform": {
"react": {
"runtime": "automatic"
}
}
},
"module": {
"type": "es6"
}
}
63 changes: 63 additions & 0 deletions packages/fields-select/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
# Fields select plugin for Payload 3.0

## Install

`pnpm add @payload-enchants/fields-select`

In your payload.config.ts:

```ts
/// ....
import { fieldsSelect } from '@payload-enchants/fields-select';

export default buildConfig({
// ...
plugins: [fieldsSelect()],
});
```

## Description

Adds an option to select fields from Local API / REST API response like with GraphQL
As well solves a problem, when you need only specific fields to populate from relationship field with `defaultSelect` option
Could significally reduce your pages data sizes, especially when they are related to each other.
PR with more powerful version of this to Payload - https://github.com/payloadcms/payload/pull/5942

## Usage

### Local API:

```ts
/** As well findByID **/
payload.find({
collection: 'posts',
context: {
/**
* Selects:
* top level id, title fields
* text field from "nestedGroup" group field
* all fields from "nestedArray" field
* "title" field from populated relationship document
**/
select: ['id', 'title', 'nestedGroup.text', 'nestedArray', 'relationship.title'],
},
});
```

### REST API:

Use `select` query parameter, example:
`?select[0]=id&select[1]=title`

### Default Select option for relationship fields

```ts
const linkField: RelationshipField = {
custom: {
/** Field will be populated only with id, slug and title fields **/
defaultSelect: ['id', 'slug', 'title'],
},
name: 'link',
relationTo: 'pages',
};
```
49 changes: 49 additions & 0 deletions packages/fields-select/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
{
"name": "@payload-enchants/fields-select",
"version": "1.1.39",
"private": false,
"bugs": "https://github.com/r1tsuu/payload-enchants/issues",
"repository": "https://github.com/r1tsuu/payload-enchants",
"license": "MIT",
"author": "r1tsuu",
"type": "module",
"exports": {
".": {
"import": "./src/index.ts",
"require": "./src/index.ts",
"types": "./src/index.ts"
}
},
"files": [
"dist"
],
"scripts": {
"build": "pnpm copyfiles && pnpm build:swc && pnpm build:types",
"build:swc": "swc ./src -d ./dist --config-file .swcrc",
"build:types": "tsc --emitDeclarationOnly --outDir dist",
"clean": "rimraf dist && rimraf tsconfig.tsbuildinfo",
"copyfiles": "copyfiles -u 1 \"src/**/*.{html,css,scss,ttf,woff,woff2,eot,svg,jpg,png,json}\" dist/",
"lint": "eslint src",
"lint:fix": "eslint --fix --ext .ts,.tsx src",
"prepublishOnly": "pnpm clean && pnpm build"
},
"devDependencies": {
"payload": "3.0.0-beta.41",
"typescript": "^5.4.5"
},
"peerDependencies": {
"payload": "^3.0.0-beta.41"
},
"publishConfig": {
"exports": {
".": {
"import": "./dist/index.js",
"require": "./dist/index.js",
"types": "./dist/index.d.ts"
}
},
"main": "./dist/index.js",
"registry": "https://registry.npmjs.org/",
"types": "./dist/index.d.ts"
}
}
Loading

0 comments on commit 39586cc

Please sign in to comment.