@keystonejs-contrib-next/list-plugins
v2.0.0
Published
List level plugins which can update list config during list initialization including adding additional fields
Downloads
9
Readme
List Plugins
atTracking
Adds createdAt and updatedAt fields to a list. These fields are read-only by will be updated automatically when items are created or updated.
Usage
import { atTracking } from '@keystonejs-contrib-next/list-plugins';
const withAtTracking = atTracking({});
const User = list(withAtTracking({
ui: {...},
fields: {...},
...
}))Config
| Option | Type | Default | Description |
| ---------------- | -------- | ------------------- | ----------------------------------------- |
| createdAtField | String | createdAt | Name of the createdAt field. |
| updatedAtField | String | updatedAt | Name of the createdAt field. |
| format | String | MM/DD/YYYY h:mm A | Format of the generated DateTime field. |
| access | Object | See: access | Change default access controls. |
access
By default access control on at tracking fields is read only:
{
read: true,
create: false,
update: false
}Disabling created or updated
You can import either createdAt or updatedAt to apply a single tracking field:
const { createdAt, updatedAt } = require('@keystonejs/list-plugins');Note: The API is the same.
byTracking
Adds createdBy and updatedBy fields to a list. These fields are read-only by will be updated automatically when items are created or updated.
Usage
import { byTracking } from '@keystonejs-contrib-next/list-plugins';
const withByTracking = byTracking({});
const User = list(withByTracking({
ui: {...},
fields: {...},
...
}))Config
| Option | Type | Default | Description |
| ---------------- | -------- | ----------- | ---------------------------------------------------- |
| createdByField | String | createdBy | Name of the createdBy field. |
| updatedByField | String | updatedBy | Name of the createdBy field. |
| ref | String | User | A reference to the list authenticated items (users). |
| access | Object | See: access | Change default access controls. |
access
By default access control on at tracking fields is read only:
{
read: true,
create: false,
update: false
}Disabling created or updated
You can import either createdBy or updatedBy to apply a single tracking field:
const { createdBy, updatedBy } = require('@keystonejs/list-plugins');Note: The API is the same.
singleton
NOT ported
~~This plugin makes a list singleton by allowing only one item in the list. Useful for list which must contain only one items.~~
logging
This plugin provides a mechanism for logging all mutations in a Keystone system.
Usage
const { logging } = require('@keystonejs-contrib-next/list-plugins');
const withLogging = logging();
const withLogging = logging(args => console.log(args));
const User = list(withLogging({
ui: {...},
fields: {...},
...
}))
Provided hooks
The logging plugin will log the arguments of all mutations with the function args => console.log(JSON.stringify(args)).
You can customise its behaviour by providing an alternate logging function.
The plugin provides the following hooks:
afterChangeafterDeleteafterAuthafterUnauth
The logging function for each hook recieves specific arguments related to the mutation.
afterChange (create)
| Option | Type | Description |
| --------------- | -------- | ----------------------------------------- |
| operation | String | "create" |
| authedItem | Object | The currently authenticated item. |
| authedListKey | String | The list currently authenticated against. |
| listKey | String | The key of the list being operated on. |
| originalInput | Object | The original input to the mutation. |
| createdItem | Object | The database record of the created item. |
afterChange (update)
| Option | Type | Description |
| --------------- | -------- | -------------------------------------------------------------------------------------------------------------- |
| operation | String | "update" |
| authedItem | Object | The currently authenticated item. |
| authedListKey | String | The list currently authenticated against. |
| listKey | String | The key of the list being operated on. |
| originalInput | Object | The original input to the mutation. |
| changedItem | Object | The database record of the updated item. This will only include those fields which have actually been changed. |
afterDelete
| Option | Type | Description |
| --------------- | -------- | ----------------------------------------- |
| operation | String | "delete" |
| authedItem | Object | The currently authenticated item. |
| authedListKey | String | The list currently authenticated against. |
| listKey | String | The key of the list being operated on. |
| deletedItem | Object | The database record of the deleted item. |
afterAuth
| Option | Type | Description |
| --------------- | --------- | ------------------------------------------------------- |
| operation | String | "authenticate" |
| authedItem | Object | The currently authenticated item. |
| authedListKey | String | The list currently authenticated against. |
| listKey | String | The key of the list being operated on. |
| item | Object | The authenticated item |
| success | Boolean | A success indicator returned by authentication strategy |
| message | String | A success message returned by authentication strategy |
| token | String | The token returned by authentication strategy |
afterUnauth
| Option | Type | Description |
| --------------- | -------- | ----------------------------------------- |
| operation | String | "unauthenticate" |
| authedItem | Object | The currently authenticated item. |
| authedListKey | String | The list currently authenticated against. |
| listKey | String | The key of the list being operated on. |
| itemId | String | The ID of the unauthenticated item |
