@ainsleydev/payload-helper 0.0.11 → 0.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { cacheHook } from './plugin/hooks.js';
1
2
  import { fieldMapper, schemas } from './plugin/schema.js';
2
3
  import env from './util/env.js';
3
4
  /**
@@ -17,6 +18,28 @@ import env from './util/env.js';
17
18
  }
18
19
  incomingConfig.typescript = incomingConfig.typescript || {};
19
20
  incomingConfig.typescript.outputFile = './src/types/payload.ts';
21
+ // Map collections & add hooks
22
+ (incomingConfig.collections || []).map((collection)=>{
23
+ return {
24
+ ...collection,
25
+ hooks: {
26
+ afterChange: [
27
+ cacheHook(pluginOptions?.webServer?.cacheEndpoint ?? '/cache/', collection.slug, collection.fields, true)
28
+ ]
29
+ }
30
+ };
31
+ });
32
+ // Map globals & add hooks
33
+ (incomingConfig.globals || []).map((global)=>{
34
+ return {
35
+ ...global,
36
+ hooks: {
37
+ afterChange: [
38
+ cacheHook(pluginOptions?.webServer?.cacheEndpoint ?? '/cache/', global.slug, global.fields, false)
39
+ ]
40
+ }
41
+ };
42
+ });
20
43
  return incomingConfig;
21
44
  };
22
45
 
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import type { Config } from 'payload';\nimport { fieldMapper, schemas } from './plugin/schema.js';\nimport type { PayloadHelperPluginConfig } from './types.js';\nimport env from './util/env.js';\n\n/**\n * Payload Helper Plugin for websites at ainsley.dev\n *\n * @constructor\n * @param pluginOptions\n */\nexport const payloadHelper =\n\t(pluginOptions: PayloadHelperPluginConfig) =>\n\t(incomingConfig: Config): Config => {\n\t\tconst genGoLang = env.bool('GEN_GOLANG', false);\n\t\tif (genGoLang) {\n\t\t\tincomingConfig.typescript = {\n\t\t\t\t...incomingConfig.typescript,\n\t\t\t\tschema: schemas,\n\t\t\t};\n\t\t\t// biome-ignore lint/style/noParameterAssign: Need to change field mapper.\n\t\t\tincomingConfig = fieldMapper(incomingConfig);\n\t\t}\n\n\t\tincomingConfig.typescript = incomingConfig.typescript || {};\n\t\tincomingConfig.typescript.outputFile = './src/types/payload.ts';\n\n\t\treturn incomingConfig;\n\t};\n"],"names":["fieldMapper","schemas","env","payloadHelper","pluginOptions","incomingConfig","genGoLang","bool","typescript","schema","outputFile"],"mappings":"AACA,SAASA,WAAW,EAAEC,OAAO,QAAQ,qBAAqB;AAE1D,OAAOC,SAAS,gBAAgB;AAEhC;;;;;CAKC,GACD,OAAO,MAAMC,gBACZ,CAACC,gBACD,CAACC;QACA,MAAMC,YAAYJ,IAAIK,IAAI,CAAC,cAAc;QACzC,IAAID,WAAW;YACdD,eAAeG,UAAU,GAAG;gBAC3B,GAAGH,eAAeG,UAAU;gBAC5BC,QAAQR;YACT;YACA,0EAA0E;YAC1EI,iBAAiBL,YAAYK;QAC9B;QAEAA,eAAeG,UAAU,GAAGH,eAAeG,UAAU,IAAI,CAAC;QAC1DH,eAAeG,UAAU,CAACE,UAAU,GAAG;QAEvC,OAAOL;IACR,EAAE"}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import type { Config } from 'payload';\nimport { cacheHook } from './plugin/hooks.js';\nimport { fieldMapper, schemas } from './plugin/schema.js';\nimport type { PayloadHelperPluginConfig } from './types.js';\nimport env from './util/env.js';\n\n/**\n * Payload Helper Plugin for websites at ainsley.dev\n *\n * @constructor\n * @param pluginOptions\n */\nexport const payloadHelper =\n\t(pluginOptions: PayloadHelperPluginConfig) =>\n\t(incomingConfig: Config): Config => {\n\t\tconst genGoLang = env.bool('GEN_GOLANG', false);\n\t\tif (genGoLang) {\n\t\t\tincomingConfig.typescript = {\n\t\t\t\t...incomingConfig.typescript,\n\t\t\t\tschema: schemas,\n\t\t\t};\n\t\t\t// biome-ignore lint/style/noParameterAssign: Need to change field mapper.\n\t\t\tincomingConfig = fieldMapper(incomingConfig);\n\t\t}\n\n\t\tincomingConfig.typescript = incomingConfig.typescript || {};\n\t\tincomingConfig.typescript.outputFile = './src/types/payload.ts';\n\n\t\t// Map collections & add hooks\n\t\t(incomingConfig.collections || []).map((collection) => {\n\t\t\treturn {\n\t\t\t\t...collection,\n\t\t\t\thooks: {\n\t\t\t\t\tafterChange: [\n\t\t\t\t\t\tcacheHook(\n\t\t\t\t\t\t\tpluginOptions?.webServer?.cacheEndpoint ?? '/cache/',\n\t\t\t\t\t\t\tcollection.slug,\n\t\t\t\t\t\t\tcollection.fields,\n\t\t\t\t\t\t\ttrue,\n\t\t\t\t\t\t),\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t};\n\t\t});\n\n\t\t// Map globals & add hooks\n\t\t(incomingConfig.globals || []).map((global) => {\n\t\t\treturn {\n\t\t\t\t...global,\n\t\t\t\thooks: {\n\t\t\t\t\tafterChange: [\n\t\t\t\t\t\tcacheHook(\n\t\t\t\t\t\t\tpluginOptions?.webServer?.cacheEndpoint ?? '/cache/',\n\t\t\t\t\t\t\tglobal.slug,\n\t\t\t\t\t\t\tglobal.fields,\n\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t),\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t};\n\t\t});\n\n\t\treturn incomingConfig;\n\t};\n"],"names":["cacheHook","fieldMapper","schemas","env","payloadHelper","pluginOptions","incomingConfig","genGoLang","bool","typescript","schema","outputFile","collections","map","collection","hooks","afterChange","webServer","cacheEndpoint","slug","fields","globals","global"],"mappings":"AACA,SAASA,SAAS,QAAQ,oBAAoB;AAC9C,SAASC,WAAW,EAAEC,OAAO,QAAQ,qBAAqB;AAE1D,OAAOC,SAAS,gBAAgB;AAEhC;;;;;CAKC,GACD,OAAO,MAAMC,gBACZ,CAACC,gBACD,CAACC;QACA,MAAMC,YAAYJ,IAAIK,IAAI,CAAC,cAAc;QACzC,IAAID,WAAW;YACdD,eAAeG,UAAU,GAAG;gBAC3B,GAAGH,eAAeG,UAAU;gBAC5BC,QAAQR;YACT;YACA,0EAA0E;YAC1EI,iBAAiBL,YAAYK;QAC9B;QAEAA,eAAeG,UAAU,GAAGH,eAAeG,UAAU,IAAI,CAAC;QAC1DH,eAAeG,UAAU,CAACE,UAAU,GAAG;QAEvC,8BAA8B;QAC7BL,CAAAA,eAAeM,WAAW,IAAI,EAAE,AAAD,EAAGC,GAAG,CAAC,CAACC;YACvC,OAAO;gBACN,GAAGA,UAAU;gBACbC,OAAO;oBACNC,aAAa;wBACZhB,UACCK,eAAeY,WAAWC,iBAAiB,WAC3CJ,WAAWK,IAAI,EACfL,WAAWM,MAAM,EACjB;qBAED;gBACF;YACD;QACD;QAEA,0BAA0B;QACzBd,CAAAA,eAAee,OAAO,IAAI,EAAE,AAAD,EAAGR,GAAG,CAAC,CAACS;YACnC,OAAO;gBACN,GAAGA,MAAM;gBACTP,OAAO;oBACNC,aAAa;wBACZhB,UACCK,eAAeY,WAAWC,iBAAiB,WAC3CI,OAAOH,IAAI,EACXG,OAAOF,MAAM,EACb;qBAED;gBACF;YACD;QACD;QAEA,OAAOd;IACR,EAAE"}
@@ -0,0 +1,12 @@
1
+ import type { Field } from 'payload';
2
+ import type { CollectionAfterChangeHook, GlobalAfterChangeHook } from 'payload';
3
+ /**
4
+ * AfterChangeHook is a hook for either the Collection or Global.
5
+ */
6
+ type AfterChangeHook = CollectionAfterChangeHook | GlobalAfterChangeHook;
7
+ /**
8
+ * Cache hook is responsible for notifying the web server of changes
9
+ * on Collections or Globals as defined by the endpoint.
10
+ */
11
+ export declare const cacheHook: (endpoint: string, slug: string, fields: Field[], isCollection: boolean) => AfterChangeHook;
12
+ export {};
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Cache hook is responsible for notifying the web server of changes
3
+ * on Collections or Globals as defined by the endpoint.
4
+ */ export const cacheHook = (endpoint, slug, fields, isCollection)=>{
5
+ //@ts-expect-error
6
+ return async ({ doc, previousDoc, operation })=>{
7
+ if (operation !== 'update') {
8
+ return;
9
+ }
10
+ try {
11
+ const response = await fetch(endpoint, {
12
+ method: 'POST',
13
+ headers: {
14
+ 'Content-Type': 'application/json'
15
+ },
16
+ body: JSON.stringify({
17
+ slug: slug,
18
+ fields: fields,
19
+ type: isCollection ? 'collection' : 'global',
20
+ doc: doc,
21
+ prevDoc: previousDoc
22
+ })
23
+ });
24
+ const json = await response.json();
25
+ console.log('Webhook response', json);
26
+ } catch (err) {
27
+ console.error('Webhook error', err);
28
+ }
29
+ };
30
+ };
31
+
32
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/plugin/hooks.ts"],"sourcesContent":["import type { Field } from 'payload';\nimport type { CollectionAfterChangeHook, GlobalAfterChangeHook } from 'payload';\n\n/**\n * AfterChangeHook is a hook for either the Collection or Global.\n */\ntype AfterChangeHook = CollectionAfterChangeHook | GlobalAfterChangeHook;\n\n/**\n * Cache hook is responsible for notifying the web server of changes\n * on Collections or Globals as defined by the endpoint.\n */\nexport const cacheHook = (\n\tendpoint: string,\n\tslug: string,\n\tfields: Field[],\n\tisCollection: boolean,\n): AfterChangeHook => {\n\t//@ts-expect-error\n\treturn async ({ doc, previousDoc, operation }) => {\n\t\tif (operation !== 'update') {\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\tconst response = await fetch(endpoint, {\n\t\t\t\tmethod: 'POST',\n\t\t\t\theaders: {\n\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t},\n\t\t\t\tbody: JSON.stringify({\n\t\t\t\t\tslug: slug,\n\t\t\t\t\tfields: fields,\n\t\t\t\t\ttype: isCollection ? 'collection' : 'global',\n\t\t\t\t\tdoc: doc,\n\t\t\t\t\tprevDoc: previousDoc,\n\t\t\t\t}),\n\t\t\t});\n\t\t\tconst json = await response.json();\n\t\t\tconsole.log('Webhook response', json);\n\t\t} catch (err) {\n\t\t\tconsole.error('Webhook error', err);\n\t\t}\n\t};\n};\n"],"names":["cacheHook","endpoint","slug","fields","isCollection","doc","previousDoc","operation","response","fetch","method","headers","body","JSON","stringify","type","prevDoc","json","console","log","err","error"],"mappings":"AAQA;;;CAGC,GACD,OAAO,MAAMA,YAAY,CACxBC,UACAC,MACAC,QACAC;IAEA,kBAAkB;IAClB,OAAO,OAAO,EAAEC,GAAG,EAAEC,WAAW,EAAEC,SAAS,EAAE;QAC5C,IAAIA,cAAc,UAAU;YAC3B;QACD;QACA,IAAI;YACH,MAAMC,WAAW,MAAMC,MAAMR,UAAU;gBACtCS,QAAQ;gBACRC,SAAS;oBACR,gBAAgB;gBACjB;gBACAC,MAAMC,KAAKC,SAAS,CAAC;oBACpBZ,MAAMA;oBACNC,QAAQA;oBACRY,MAAMX,eAAe,eAAe;oBACpCC,KAAKA;oBACLW,SAASV;gBACV;YACD;YACA,MAAMW,OAAO,MAAMT,SAASS,IAAI;YAChCC,QAAQC,GAAG,CAAC,oBAAoBF;QACjC,EAAE,OAAOG,KAAK;YACbF,QAAQG,KAAK,CAAC,iBAAiBD;QAChC;IACD;AACD,EAAE"}
@@ -194,9 +194,12 @@
194
194
  * Updates the JSON schema so that it doesn't feature oneOf, so Go doesn't
195
195
  * output it as an interface{}.
196
196
  */ ({ jsonSchema })=>{
197
- loopJSONSchemaProperties(jsonSchema, ({ property })=>{
197
+ const updateRelationship = (property)=>{
198
198
  const payload = property.payload;
199
- if (payload && payload.type === 'relationship') {
199
+ if (!payload) {
200
+ return;
201
+ }
202
+ if (payload.type === 'relationship') {
200
203
  if (payload.hasMany) {
201
204
  property.type = 'array';
202
205
  property.items = {
@@ -207,6 +210,18 @@
207
210
  delete property.oneOf;
208
211
  property.$ref = `#/definitions/${property.payload.relationTo}`;
209
212
  }
213
+ const pType = payload.type;
214
+ if (pType === 'group' || pType === 'row' || pType === 'collapsible' || pType === 'array') {
215
+ if (property.properties) {
216
+ for(const k in property.properties){
217
+ updateRelationship(property.properties[k]);
218
+ }
219
+ }
220
+ return;
221
+ }
222
+ };
223
+ loopJSONSchemaProperties(jsonSchema, ({ property })=>{
224
+ updateRelationship(property);
210
225
  });
211
226
  return jsonSchema;
212
227
  },
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/plugin/schema.ts"],"sourcesContent":["import type { JSONSchema4 } from 'json-schema';\nimport type { Config, Field } from 'payload';\n\n/**\n * This function iterates over properties in JSON schema definitions,\n * passing each property and its key to a callback function.\n */\nconst loopJSONSchemaProperties = (\n\tjsonSchema: JSONSchema4,\n\tcallback: (args: { key: string; property: JSONSchema4 }) => void,\n): JSONSchema4 => {\n\tif (!jsonSchema.definitions) {\n\t\treturn jsonSchema;\n\t}\n\tObject.entries(jsonSchema.definitions).forEach(([definitionKey, definition]) => {\n\t\tif (definition.properties) {\n\t\t\tObject.entries(definition.properties).forEach(([propertyKey, property]) => {\n\t\t\t\tcallback({ key: propertyKey, property });\n\t\t\t});\n\t\t}\n\t});\n\treturn jsonSchema;\n};\n\n/**\n * Adds the necessary GoLang type conversions as a helper func.\n */\nexport const addGoJSONSchema = (type: string, nillable: boolean): Record<string, unknown> => {\n\treturn {\n\t\tgoJSONSchema: {\n\t\t\timports: ['github.com/ainsleydev/webkit/pkg/adapters/payload'],\n\t\t\tnillable: nillable,\n\t\t\ttype: type,\n\t\t},\n\t};\n};\n\n/**\n * Iterates over all the fields within the config, for both collections\n * and globals, and transforms the JSON schema\n * to include the necessary GoLang schema.\n *\n * @param config\n */\nexport const fieldMapper = (config: Config) => {\n\tconst mapper = (field: Field): Field => {\n\t\tswitch (field.type) {\n\t\t\tcase 'blocks':\n\t\t\t\tfield.typescriptSchema = [() => ({ ...addGoJSONSchema('payload.Blocks', false) })];\n\t\t\t\tfield.blocks.forEach((block) => {\n\t\t\t\t\tblock.fields = block.fields.map((f) => mapper(f));\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase 'json':\n\t\t\t\tfield.typescriptSchema = [() => ({ ...addGoJSONSchema('[]byte', false) })];\n\t\t\t\tbreak;\n\t\t\tcase 'richText':\n\t\t\t\tfield.typescriptSchema = [\n\t\t\t\t\t() => ({\n\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t...addGoJSONSchema('payload.RichText', false),\n\t\t\t\t\t}),\n\t\t\t\t];\n\t\t\t\tbreak;\n\t\t\tcase 'upload':\n\t\t\t\tfield.typescriptSchema = [\n\t\t\t\t\t() => ({ ...addGoJSONSchema('payload.Media', field.required === true) }),\n\t\t\t\t];\n\t\t\t\tbreak;\n\t\t\tcase 'tabs': {\n\t\t\t\tfield.tabs.forEach((tab) => {\n\t\t\t\t\ttab.fields = tab.fields.map((f) => mapper(f));\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'relationship': {\n\t\t\t\tif (field.relationTo === 'forms') {\n\t\t\t\t\tfield.typescriptSchema = [\n\t\t\t\t\t\t() => ({ ...addGoJSONSchema('payload.Form', field.required === true) }),\n\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'group':\n\t\t\tcase 'array':\n\t\t\tcase 'row':\n\t\t\tcase 'collapsible': {\n\t\t\t\tif (field.type === 'group' && field.name === 'meta') {\n\t\t\t\t\tfield.typescriptSchema = [\n\t\t\t\t\t\t() => ({ ...addGoJSONSchema('payload.SettingsMeta', true) }),\n\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t\tfield.fields = field.fields.map((f) => mapper(f));\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t// SEE: https://github.com/ainsleydev/webkit/blob/cdfa078605bec4ee92f2424f69271a0bf6b71366/packages/payload-helper/src/gen/schema.ts#L235\n\t\t}\n\n\t\tif (field.type !== 'ui') {\n\t\t\tif (!Array.isArray(field.typescriptSchema)) {\n\t\t\t\tfield.typescriptSchema = [];\n\t\t\t}\n\n\t\t\tif (field.type !== 'tabs' && field.type !== 'row' && field.type !== 'collapsible') {\n\t\t\t\tfield.typescriptSchema.push(({ jsonSchema }) => {\n\t\t\t\t\tconst payload = {\n\t\t\t\t\t\tname: field.name,\n\t\t\t\t\t\ttype: field.type,\n\t\t\t\t\t\tlabel: field.label,\n\t\t\t\t\t} as Record<string, unknown>;\n\n\t\t\t\t\tif (field.type === 'relationship') {\n\t\t\t\t\t\tpayload.hasMany = field.hasMany;\n\t\t\t\t\t\tpayload.relationTo = field.relationTo;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...jsonSchema,\n\t\t\t\t\t\tpayload,\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn field;\n\t};\n\n\tif (config.collections) {\n\t\tconfig.collections.forEach((collection) => {\n\t\t\tcollection.fields = collection.fields.map((field) => mapper(field));\n\t\t});\n\t}\n\n\tif (config.globals) {\n\t\tconfig.globals.forEach((global, index) => {\n\t\t\tglobal.fields = global.fields.map((field) => mapper(field));\n\t\t});\n\t}\n\n\treturn config;\n};\n\n/**\n * Adjusts the JSON schema to include the necessary GoLang schema\n *\n */\nexport const schemas: Array<(args: { jsonSchema: JSONSchema4 }) => JSONSchema4> = [\n\t/**\n\t * Removes the auth & uneeded definitions from the schema.\n\t */\n\t({ jsonSchema }): JSONSchema4 => {\n\t\tif (!jsonSchema.properties) {\n\t\t\tjsonSchema.properties = {};\n\t\t}\n\t\tif (!jsonSchema.definitions) {\n\t\t\tjsonSchema.definitions = {};\n\t\t}\n\t\tdelete jsonSchema.properties.auth;\n\t\tdelete jsonSchema.definitions.media;\n\t\tdelete jsonSchema.properties?.collections?.properties?.media;\n\t\tdelete jsonSchema.definitions.redirects;\n\t\tdelete jsonSchema.properties?.collections?.properties?.redirects;\n\t\treturn jsonSchema;\n\t},\n\t/**\n\t * Adds the settings and media definitions to the schema\n\t */\n\t({ jsonSchema }): JSONSchema4 => {\n\t\tif (!jsonSchema.definitions) {\n\t\t\tjsonSchema.definitions = {};\n\t\t}\n\n\t\tif ('settings' in jsonSchema.definitions) {\n\t\t\tjsonSchema.definitions.settings = {\n\t\t\t\ttype: 'object',\n\t\t\t\tfields: [],\n\t\t\t\t...addGoJSONSchema('payload.Settings', false),\n\t\t\t};\n\t\t}\n\n\t\tif ('forms' in jsonSchema.definitions) {\n\t\t\tjsonSchema.definitions.forms = {\n\t\t\t\ttype: 'object',\n\t\t\t\t...addGoJSONSchema('payload.Form', false),\n\t\t\t\tfields: [],\n\t\t\t};\n\t\t}\n\n\t\tif ('form-submissions' in jsonSchema.definitions) {\n\t\t\tjsonSchema.definitions['form-submissions'] = {\n\t\t\t\ttype: 'object',\n\t\t\t\t...addGoJSONSchema('payload.FormSubmission', false),\n\t\t\t\tfields: [],\n\t\t\t};\n\t\t}\n\n\t\treturn jsonSchema;\n\t},\n\t/**\n\t * Updates the JSON schema so that it doesn't feature oneOf, so Go doesn't\n\t * output it as an interface{}.\n\t */\n\t({ jsonSchema }): JSONSchema4 => {\n\t\tloopJSONSchemaProperties(jsonSchema, ({ property }) => {\n\t\t\tconst payload = property.payload;\n\t\t\tif (payload && payload.type === 'relationship') {\n\t\t\t\tif (payload.hasMany) {\n\t\t\t\t\tproperty.type = 'array';\n\t\t\t\t\tproperty.items = {\n\t\t\t\t\t\t$ref: `#/definitions/${payload.relationTo}`,\n\t\t\t\t\t};\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tdelete property.oneOf;\n\t\t\t\tproperty.$ref = `#/definitions/${property.payload.relationTo}`;\n\t\t\t}\n\t\t});\n\t\treturn jsonSchema;\n\t},\n\t/**\n\t * Changes blockType to a string so it's not an *interface{} when\n\t * comparing block types in Go.\n\t */\n\t({ jsonSchema }): JSONSchema4 => {\n\t\tloopJSONSchemaProperties(jsonSchema, ({ property, key }) => {\n\t\t\tif (key === 'blockType') {\n\t\t\t\tproperty.type = 'string';\n\t\t\t\tdelete property.const;\n\t\t\t}\n\t\t});\n\t\treturn jsonSchema;\n\t},\n\t/**\n\t * Changes blockType to a string so it's not an *interface{} when\n\t * comparing block types in Go.\n\t */\n\t({ jsonSchema }): JSONSchema4 => {\n\t\tloopJSONSchemaProperties(jsonSchema, ({ property, key }) => {\n\t\t\tconst payload = property.payload;\n\t\t\tif (payload && payload.type === 'relationship' && payload.name === 'form') {\n\t\t\t\tdelete property.$ref;\n\t\t\t}\n\t\t});\n\t\treturn jsonSchema;\n\t},\n];\n"],"names":["loopJSONSchemaProperties","jsonSchema","callback","definitions","Object","entries","forEach","definitionKey","definition","properties","propertyKey","property","key","addGoJSONSchema","type","nillable","goJSONSchema","imports","fieldMapper","config","mapper","field","typescriptSchema","blocks","block","fields","map","f","required","tabs","tab","relationTo","name","Array","isArray","push","payload","label","hasMany","collections","collection","globals","global","index","schemas","auth","media","redirects","settings","forms","items","$ref","oneOf","const"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/plugin/schema.ts"],"sourcesContent":["import type { JSONSchema4 } from 'json-schema';\nimport type { Config, Field } from 'payload';\n\n/**\n * This function iterates over properties in JSON schema definitions,\n * passing each property and its key to a callback function.\n */\nconst loopJSONSchemaProperties = (\n\tjsonSchema: JSONSchema4,\n\tcallback: (args: { key: string; property: JSONSchema4 }) => void,\n): JSONSchema4 => {\n\tif (!jsonSchema.definitions) {\n\t\treturn jsonSchema;\n\t}\n\tObject.entries(jsonSchema.definitions).forEach(([definitionKey, definition]) => {\n\t\tif (definition.properties) {\n\t\t\tObject.entries(definition.properties).forEach(([propertyKey, property]) => {\n\t\t\t\tcallback({ key: propertyKey, property });\n\t\t\t});\n\t\t}\n\t});\n\treturn jsonSchema;\n};\n\n/**\n * Adds the necessary GoLang type conversions as a helper func.\n */\nexport const addGoJSONSchema = (type: string, nillable: boolean): Record<string, unknown> => {\n\treturn {\n\t\tgoJSONSchema: {\n\t\t\timports: ['github.com/ainsleydev/webkit/pkg/adapters/payload'],\n\t\t\tnillable: nillable,\n\t\t\ttype: type,\n\t\t},\n\t};\n};\n\n/**\n * Iterates over all the fields within the config, for both collections\n * and globals, and transforms the JSON schema\n * to include the necessary GoLang schema.\n *\n * @param config\n */\nexport const fieldMapper = (config: Config) => {\n\tconst mapper = (field: Field): Field => {\n\t\tswitch (field.type) {\n\t\t\tcase 'blocks':\n\t\t\t\tfield.typescriptSchema = [() => ({ ...addGoJSONSchema('payload.Blocks', false) })];\n\t\t\t\tfield.blocks.forEach((block) => {\n\t\t\t\t\tblock.fields = block.fields.map((f) => mapper(f));\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase 'json':\n\t\t\t\tfield.typescriptSchema = [() => ({ ...addGoJSONSchema('[]byte', false) })];\n\t\t\t\tbreak;\n\t\t\tcase 'richText':\n\t\t\t\tfield.typescriptSchema = [\n\t\t\t\t\t() => ({\n\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t...addGoJSONSchema('payload.RichText', false),\n\t\t\t\t\t}),\n\t\t\t\t];\n\t\t\t\tbreak;\n\t\t\tcase 'upload':\n\t\t\t\tfield.typescriptSchema = [\n\t\t\t\t\t() => ({ ...addGoJSONSchema('payload.Media', field.required === true) }),\n\t\t\t\t];\n\t\t\t\tbreak;\n\t\t\tcase 'tabs': {\n\t\t\t\tfield.tabs.forEach((tab) => {\n\t\t\t\t\ttab.fields = tab.fields.map((f) => mapper(f));\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'relationship': {\n\t\t\t\tif (field.relationTo === 'forms') {\n\t\t\t\t\tfield.typescriptSchema = [\n\t\t\t\t\t\t() => ({ ...addGoJSONSchema('payload.Form', field.required === true) }),\n\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'group':\n\t\t\tcase 'array':\n\t\t\tcase 'row':\n\t\t\tcase 'collapsible': {\n\t\t\t\tif (field.type === 'group' && field.name === 'meta') {\n\t\t\t\t\tfield.typescriptSchema = [\n\t\t\t\t\t\t() => ({ ...addGoJSONSchema('payload.SettingsMeta', true) }),\n\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t\tfield.fields = field.fields.map((f) => mapper(f));\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t// SEE: https://github.com/ainsleydev/webkit/blob/cdfa078605bec4ee92f2424f69271a0bf6b71366/packages/payload-helper/src/gen/schema.ts#L235\n\t\t}\n\n\t\tif (field.type !== 'ui') {\n\t\t\tif (!Array.isArray(field.typescriptSchema)) {\n\t\t\t\tfield.typescriptSchema = [];\n\t\t\t}\n\n\t\t\tif (field.type !== 'tabs' && field.type !== 'row' && field.type !== 'collapsible') {\n\t\t\t\tfield.typescriptSchema.push(({ jsonSchema }) => {\n\t\t\t\t\tconst payload = {\n\t\t\t\t\t\tname: field.name,\n\t\t\t\t\t\ttype: field.type,\n\t\t\t\t\t\tlabel: field.label,\n\t\t\t\t\t} as Record<string, unknown>;\n\n\t\t\t\t\tif (field.type === 'relationship') {\n\t\t\t\t\t\tpayload.hasMany = field.hasMany;\n\t\t\t\t\t\tpayload.relationTo = field.relationTo;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...jsonSchema,\n\t\t\t\t\t\tpayload,\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn field;\n\t};\n\n\tif (config.collections) {\n\t\tconfig.collections.forEach((collection) => {\n\t\t\tcollection.fields = collection.fields.map((field) => mapper(field));\n\t\t});\n\t}\n\n\tif (config.globals) {\n\t\tconfig.globals.forEach((global, index) => {\n\t\t\tglobal.fields = global.fields.map((field) => mapper(field));\n\t\t});\n\t}\n\n\treturn config;\n};\n\n/**\n * Adjusts the JSON schema to include the necessary GoLang schema\n *\n */\nexport const schemas: Array<(args: { jsonSchema: JSONSchema4 }) => JSONSchema4> = [\n\t/**\n\t * Removes the auth & uneeded definitions from the schema.\n\t */\n\t({ jsonSchema }): JSONSchema4 => {\n\t\tif (!jsonSchema.properties) {\n\t\t\tjsonSchema.properties = {};\n\t\t}\n\t\tif (!jsonSchema.definitions) {\n\t\t\tjsonSchema.definitions = {};\n\t\t}\n\t\tdelete jsonSchema.properties.auth;\n\t\tdelete jsonSchema.definitions.media;\n\t\tdelete jsonSchema.properties?.collections?.properties?.media;\n\t\tdelete jsonSchema.definitions.redirects;\n\t\tdelete jsonSchema.properties?.collections?.properties?.redirects;\n\t\treturn jsonSchema;\n\t},\n\t/**\n\t * Adds the settings and media definitions to the schema\n\t */\n\t({ jsonSchema }): JSONSchema4 => {\n\t\tif (!jsonSchema.definitions) {\n\t\t\tjsonSchema.definitions = {};\n\t\t}\n\n\t\tif ('settings' in jsonSchema.definitions) {\n\t\t\tjsonSchema.definitions.settings = {\n\t\t\t\ttype: 'object',\n\t\t\t\tfields: [],\n\t\t\t\t...addGoJSONSchema('payload.Settings', false),\n\t\t\t};\n\t\t}\n\n\t\tif ('forms' in jsonSchema.definitions) {\n\t\t\tjsonSchema.definitions.forms = {\n\t\t\t\ttype: 'object',\n\t\t\t\t...addGoJSONSchema('payload.Form', false),\n\t\t\t\tfields: [],\n\t\t\t};\n\t\t}\n\n\t\tif ('form-submissions' in jsonSchema.definitions) {\n\t\t\tjsonSchema.definitions['form-submissions'] = {\n\t\t\t\ttype: 'object',\n\t\t\t\t...addGoJSONSchema('payload.FormSubmission', false),\n\t\t\t\tfields: [],\n\t\t\t};\n\t\t}\n\n\t\treturn jsonSchema;\n\t},\n\t/**\n\t * Updates the JSON schema so that it doesn't feature oneOf, so Go doesn't\n\t * output it as an interface{}.\n\t */\n\t({ jsonSchema }): JSONSchema4 => {\n\t\tconst updateRelationship = (property: JSONSchema4) => {\n\t\t\tconst payload = property.payload;\n\t\t\tif (!payload) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (payload.type === 'relationship') {\n\t\t\t\tif (payload.hasMany) {\n\t\t\t\t\tproperty.type = 'array';\n\t\t\t\t\tproperty.items = {\n\t\t\t\t\t\t$ref: `#/definitions/${payload.relationTo}`,\n\t\t\t\t\t};\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tdelete property.oneOf;\n\t\t\t\tproperty.$ref = `#/definitions/${property.payload.relationTo}`;\n\t\t\t}\n\n\t\t\tconst pType = payload.type;\n\t\t\tif (\n\t\t\t\tpType === 'group' ||\n\t\t\t\tpType === 'row' ||\n\t\t\t\tpType === 'collapsible' ||\n\t\t\t\tpType === 'array'\n\t\t\t) {\n\t\t\t\tif (property.properties) {\n\t\t\t\t\tfor (const k in property.properties) {\n\t\t\t\t\t\tupdateRelationship(property.properties[k]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t};\n\n\t\tloopJSONSchemaProperties(jsonSchema, ({ property }) => {\n\t\t\tupdateRelationship(property);\n\t\t});\n\t\treturn jsonSchema;\n\t},\n\t/**\n\t * Changes blockType to a string so it's not an *interface{} when\n\t * comparing block types in Go.\n\t */\n\t({ jsonSchema }): JSONSchema4 => {\n\t\tloopJSONSchemaProperties(jsonSchema, ({ property, key }) => {\n\t\t\tif (key === 'blockType') {\n\t\t\t\tproperty.type = 'string';\n\t\t\t\tdelete property.const;\n\t\t\t}\n\t\t});\n\t\treturn jsonSchema;\n\t},\n\t/**\n\t * Changes blockType to a string so it's not an *interface{} when\n\t * comparing block types in Go.\n\t */\n\t({ jsonSchema }): JSONSchema4 => {\n\t\tloopJSONSchemaProperties(jsonSchema, ({ property, key }) => {\n\t\t\tconst payload = property.payload;\n\t\t\tif (payload && payload.type === 'relationship' && payload.name === 'form') {\n\t\t\t\tdelete property.$ref;\n\t\t\t}\n\t\t});\n\t\treturn jsonSchema;\n\t},\n];\n"],"names":["loopJSONSchemaProperties","jsonSchema","callback","definitions","Object","entries","forEach","definitionKey","definition","properties","propertyKey","property","key","addGoJSONSchema","type","nillable","goJSONSchema","imports","fieldMapper","config","mapper","field","typescriptSchema","blocks","block","fields","map","f","required","tabs","tab","relationTo","name","Array","isArray","push","payload","label","hasMany","collections","collection","globals","global","index","schemas","auth","media","redirects","settings","forms","updateRelationship","items","$ref","oneOf","pType","k","const"],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -5,6 +5,11 @@ export type SettingsConfig = {
5
5
  config: GlobalConfig;
6
6
  }) => GlobalConfig;
7
7
  };
8
+ export type WebServerConfig = {
9
+ apiKey?: string;
10
+ cacheEndpoint?: string;
11
+ };
8
12
  export type PayloadHelperPluginConfig = {
9
13
  settings?: SettingsConfig;
14
+ webServer?: WebServerConfig;
10
15
  };
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/types.ts"],"sourcesContent":["// import type { SEOPluginConfig } from \"@payloadcms/plugin-seo/types\";\nimport type { GlobalConfig, Tab } from 'payload';\n\nexport type SettingsConfig = {\n\tadditionalTabs?: Tab[];\n\toverride: (args: {\n\t\tconfig: GlobalConfig;\n\t}) => GlobalConfig;\n};\nexport type PayloadHelperPluginConfig = {\n\tsettings?: SettingsConfig;\n\t// seo?: (args: {\n\t// \tconfig: SEOPluginConfig;\n\t// }) => SEOPluginConfig;\n};\n"],"names":[],"mappings":"AAAA,uEAAuE;AASvE,WAKE"}
1
+ {"version":3,"sources":["../src/types.ts"],"sourcesContent":["// import type { SEOPluginConfig } from \"@payloadcms/plugin-seo/types\";\nimport type { GlobalConfig, Tab } from 'payload';\n\nexport type SettingsConfig = {\n\tadditionalTabs?: Tab[];\n\toverride: (args: {\n\t\tconfig: GlobalConfig;\n\t}) => GlobalConfig;\n};\n\nexport type WebServerConfig = {\n\tapiKey?: string;\n\tcacheEndpoint?: string;\n};\n\nexport type PayloadHelperPluginConfig = {\n\tsettings?: SettingsConfig;\n\t// seo?: (args: {\n\t// \tconfig: SEOPluginConfig;\n\t// }) => SEOPluginConfig;\n\n\twebServer?: WebServerConfig;\n};\n"],"names":[],"mappings":"AAAA,uEAAuE;AAevE,WAOE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ainsleydev/payload-helper",
3
- "version": "0.0.11",
3
+ "version": "0.0.13",
4
4
  "description": "Payload CMS utilities, collections and global types for ainsley.dev builds",
5
5
  "license": "MIT",
6
6
  "type": "module",