@keystonejs/list-plugins
v8.1.2
Published
List level plugins which can update list config during list initialization including adding additional fields
Downloads
1,488
Readme
List Plugins
This is the last active development release of this package as Keystone 5 is now in a 6 to 12 month active maintenance phase. For more information please read our Keystone 5 and beyond post.
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
const { atTracking } = require('@keystonejs/list-plugins');
keystone.createList('ListWithPlugin', {
fields: {
// ...
},
plugins: [
atTracking({
/* ...config */
}),
],
});
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
const { byTracking } = require('@keystonejs/list-plugins');
keystone.createList('ListWithPlugin', {
fields: {
// ...
},
plugins: [
byTracking({
/* ...config */
}),
],
});
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
This plugin makes a list singleton by allowing only one item in the list. Useful for list which must contain only one items.
Usage
const { singleton } = require('@keystonejs/list-plugins');
keystone.createList('ListWithPlugin', {
fields: {...},
plugins: [
singleton(),
],
});
logging
This plugin provides a mechanism for logging all mutations in a Keystone system.
Usage
const { logging } = require('@keystonejs/list-plugins');
keystone.createList('ListWithPlugin', {
fields: {...},
plugins: [
logging(args => console.log(args),
],
});
keystone.createAuthStrategy({
type: PasswordAuthStrategy,
list: 'User',
plugins: [
logging(args => console.log(args),
]
})
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:
afterChange
afterDelete
afterAuth
afterUnauth
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 |