payload-intl 1.3.2 → 1.4.0
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/README.md +23 -3
- package/dist/components/MessagesField.d.ts +12 -0
- package/dist/components/MessagesField.d.ts.map +1 -0
- package/dist/components/MessagesField.js +36 -0
- package/dist/components/MessagesField.js.map +1 -0
- package/dist/components/MessagesImport.d.ts +2 -0
- package/dist/components/MessagesImport.d.ts.map +1 -0
- package/dist/components/MessagesImport.js +68 -0
- package/dist/components/MessagesImport.js.map +1 -0
- package/dist/components/MessagesImport.module.css +8 -0
- package/dist/components/input/LexicalInput.d.ts +8 -0
- package/dist/components/input/LexicalInput.d.ts.map +1 -0
- package/dist/components/input/LexicalInput.js +21 -0
- package/dist/components/input/LexicalInput.js.map +1 -0
- package/dist/components/input/MessageInput.d.ts +12 -0
- package/dist/components/input/MessageInput.d.ts.map +1 -0
- package/dist/components/{inputs → input}/MessageInput.js +31 -38
- package/dist/components/input/MessageInput.js.map +1 -0
- package/dist/components/{inputs → input}/MessageInput.module.css +14 -19
- package/dist/components/{inputs → input}/ReferencePopover.d.ts +1 -1
- package/dist/components/input/ReferencePopover.d.ts.map +1 -0
- package/dist/components/{inputs → input}/ReferencePopover.js +20 -5
- package/dist/components/input/ReferencePopover.js.map +1 -0
- package/dist/components/input/SingleLinePlugin.d.ts.map +1 -0
- package/dist/components/input/SingleLinePlugin.js.map +1 -0
- package/dist/components/{hooks → input}/useHtmlLexicalAdapter.d.ts.map +1 -1
- package/dist/components/{hooks → input}/useHtmlLexicalAdapter.js.map +1 -1
- package/dist/{utils/format.d.ts → components/input/utils.d.ts} +2 -2
- package/dist/components/input/utils.d.ts.map +1 -0
- package/dist/{utils/format.js → components/input/utils.js} +2 -2
- package/dist/components/input/utils.js.map +1 -0
- package/dist/components/input/variables/VariableChip.d.ts.map +1 -0
- package/dist/components/{inputs → input}/variables/VariableChip.js +1 -2
- package/dist/components/input/variables/VariableChip.js.map +1 -0
- package/dist/components/input/variables/VariableIcon.d.ts.map +1 -0
- package/dist/components/input/variables/VariableIcon.js.map +1 -0
- package/dist/components/input/variables/VariableNode.d.ts.map +1 -0
- package/dist/components/input/variables/VariableNode.js.map +1 -0
- package/dist/components/input/variables/VariableSuggestion.d.ts.map +1 -0
- package/dist/components/input/variables/VariableSuggestion.js.map +1 -0
- package/dist/components/input/variables/editors/PluralVariableEditor.d.ts.map +1 -0
- package/dist/components/{inputs → input}/variables/editors/PluralVariableEditor.js +1 -1
- package/dist/components/input/variables/editors/PluralVariableEditor.js.map +1 -0
- package/dist/components/input/variables/editors/SelectVariableEditor.d.ts.map +1 -0
- package/dist/components/{inputs → input}/variables/editors/SelectVariableEditor.js +1 -1
- package/dist/components/input/variables/editors/SelectVariableEditor.js.map +1 -0
- package/dist/components/input/variables/editors/TagVariableEditor.d.ts.map +1 -0
- package/dist/components/{inputs → input}/variables/editors/TagVariableEditor.js +1 -1
- package/dist/components/input/variables/editors/TagVariableEditor.js.map +1 -0
- package/dist/components/input/variables/editors/TemporalVariableEditor.d.ts.map +1 -0
- package/dist/components/input/variables/editors/TemporalVariableEditor.js.map +1 -0
- package/dist/components/input/variables/pickers/NumericVariableEditor.d.ts.map +1 -0
- package/dist/components/{inputs → input}/variables/pickers/NumericVariableEditor.js +1 -1
- package/dist/components/input/variables/pickers/NumericVariableEditor.js.map +1 -0
- package/dist/components/input/variables/pickers/TemporalVariablePicker.d.ts.map +1 -0
- package/dist/components/{inputs → input}/variables/pickers/TemporalVariablePicker.js +1 -1
- package/dist/components/input/variables/pickers/TemporalVariablePicker.js.map +1 -0
- package/dist/components/layout/MessageField.d.ts +5 -4
- package/dist/components/layout/MessageField.d.ts.map +1 -1
- package/dist/components/layout/MessageField.js +44 -51
- package/dist/components/layout/MessageField.js.map +1 -1
- package/dist/components/layout/MessageField.module.css +17 -5
- package/dist/components/layout/MessagesTabs.d.ts.map +1 -1
- package/dist/components/layout/MessagesTabs.js +9 -19
- package/dist/components/layout/MessagesTabs.js.map +1 -1
- package/dist/components/layout/MessagesTree.d.ts +7 -5
- package/dist/components/layout/MessagesTree.d.ts.map +1 -1
- package/dist/components/layout/MessagesTree.js +12 -22
- package/dist/components/layout/MessagesTree.js.map +1 -1
- package/dist/components/layout/MessagesTree.module.css +7 -3
- package/dist/{utils/config.d.ts → config.d.ts} +1 -1
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js.map +1 -0
- package/dist/const.d.ts +3 -9
- package/dist/const.d.ts.map +1 -1
- package/dist/const.js +3 -12
- package/dist/const.js.map +1 -1
- package/dist/exports/client.d.ts +3 -1
- package/dist/exports/client.d.ts.map +1 -1
- package/dist/exports/client.js +3 -1
- package/dist/exports/client.js.map +1 -1
- package/dist/exports/fetchMessages.d.ts +4 -0
- package/dist/exports/fetchMessages.d.ts.map +1 -0
- package/dist/exports/fetchMessages.js +18 -0
- package/dist/exports/fetchMessages.js.map +1 -0
- package/dist/exports/rsc.d.ts +0 -2
- package/dist/exports/rsc.d.ts.map +1 -1
- package/dist/exports/rsc.js +0 -2
- package/dist/exports/rsc.js.map +1 -1
- package/dist/file-storage-hooks.d.ts +17 -0
- package/dist/file-storage-hooks.d.ts.map +1 -0
- package/dist/file-storage-hooks.js +37 -0
- package/dist/file-storage-hooks.js.map +1 -0
- package/dist/hooks.d.ts +19 -3
- package/dist/hooks.d.ts.map +1 -1
- package/dist/hooks.js +41 -20
- package/dist/hooks.js.map +1 -1
- package/dist/icu/guards.d.ts.map +1 -0
- package/dist/icu/guards.js.map +1 -0
- package/dist/icu/index.d.ts +6 -0
- package/dist/icu/index.d.ts.map +1 -0
- package/dist/icu/index.js +7 -0
- package/dist/icu/index.js.map +1 -0
- package/dist/{utils/icu-tranform.d.ts → icu/lexical.d.ts} +1 -10
- package/dist/icu/lexical.d.ts.map +1 -0
- package/dist/{utils/icu-tranform.js → icu/lexical.js} +4 -44
- package/dist/icu/lexical.js.map +1 -0
- package/dist/icu/schema.d.ts +4 -0
- package/dist/icu/schema.d.ts.map +1 -0
- package/dist/icu/schema.js +43 -0
- package/dist/icu/schema.js.map +1 -0
- package/dist/icu/serialize.d.ts +11 -0
- package/dist/icu/serialize.d.ts.map +1 -0
- package/dist/icu/serialize.js +45 -0
- package/dist/icu/serialize.js.map +1 -0
- package/dist/icu/validate.d.ts.map +1 -0
- package/dist/icu/validate.js.map +1 -0
- package/dist/index.d.ts +23 -22
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +181 -37
- package/dist/index.js.map +1 -1
- package/dist/payload-types.d.ts +43 -16
- package/dist/payload-types.d.ts.map +1 -1
- package/dist/types.d.ts +24 -8
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/file-storage.d.ts +26 -0
- package/dist/utils/file-storage.d.ts.map +1 -0
- package/dist/utils/file-storage.js +61 -0
- package/dist/utils/file-storage.js.map +1 -0
- package/dist/utils/sanitize.d.ts +5 -3
- package/dist/utils/sanitize.d.ts.map +1 -1
- package/dist/utils/sanitize.js +4 -2
- package/dist/utils/sanitize.js.map +1 -1
- package/dist/utils/schema.d.ts +5 -7
- package/dist/utils/schema.d.ts.map +1 -1
- package/dist/utils/schema.js +11 -39
- package/dist/utils/schema.js.map +1 -1
- package/dist/utils/scopes.d.ts +3 -0
- package/dist/utils/scopes.d.ts.map +1 -0
- package/dist/utils/scopes.js +24 -0
- package/dist/utils/scopes.js.map +1 -0
- package/package.json +5 -5
- package/dist/components/MessageFormField.d.ts +0 -14
- package/dist/components/MessageFormField.d.ts.map +0 -1
- package/dist/components/MessageFormField.js +0 -28
- package/dist/components/MessageFormField.js.map +0 -1
- package/dist/components/MessagesForm.d.ts +0 -13
- package/dist/components/MessagesForm.d.ts.map +0 -1
- package/dist/components/MessagesForm.js +0 -120
- package/dist/components/MessagesForm.js.map +0 -1
- package/dist/components/MessagesForm.module.css +0 -41
- package/dist/components/MessagesFormProvider.d.ts +0 -33
- package/dist/components/MessagesFormProvider.d.ts.map +0 -1
- package/dist/components/MessagesFormProvider.js +0 -34
- package/dist/components/MessagesFormProvider.js.map +0 -1
- package/dist/components/MessagesLink.d.ts +0 -8
- package/dist/components/MessagesLink.d.ts.map +0 -1
- package/dist/components/MessagesLink.js +0 -22
- package/dist/components/MessagesLink.js.map +0 -1
- package/dist/components/MessagesView.d.ts +0 -10
- package/dist/components/MessagesView.d.ts.map +0 -1
- package/dist/components/MessagesView.js +0 -57
- package/dist/components/MessagesView.js.map +0 -1
- package/dist/components/actions/CopyMessages.d.ts +0 -2
- package/dist/components/actions/CopyMessages.d.ts.map +0 -1
- package/dist/components/actions/CopyMessages.js +0 -41
- package/dist/components/actions/CopyMessages.js.map +0 -1
- package/dist/components/actions/CopyMessages.module.css +0 -8
- package/dist/components/actions/JsonImport.d.ts +0 -5
- package/dist/components/actions/JsonImport.d.ts.map +0 -1
- package/dist/components/actions/JsonImport.js +0 -52
- package/dist/components/actions/JsonImport.js.map +0 -1
- package/dist/components/actions/JsonImport.module.css +0 -14
- package/dist/components/hooks/useMessagesFormSubmit.d.ts +0 -11
- package/dist/components/hooks/useMessagesFormSubmit.d.ts.map +0 -1
- package/dist/components/hooks/useMessagesFormSubmit.js +0 -44
- package/dist/components/hooks/useMessagesFormSubmit.js.map +0 -1
- package/dist/components/inputs/FieldWrapper.d.ts +0 -8
- package/dist/components/inputs/FieldWrapper.d.ts.map +0 -1
- package/dist/components/inputs/FieldWrapper.js +0 -24
- package/dist/components/inputs/FieldWrapper.js.map +0 -1
- package/dist/components/inputs/FieldWrapper.module.css +0 -24
- package/dist/components/inputs/LexicalInput.d.ts +0 -9
- package/dist/components/inputs/LexicalInput.d.ts.map +0 -1
- package/dist/components/inputs/LexicalInput.js +0 -26
- package/dist/components/inputs/LexicalInput.js.map +0 -1
- package/dist/components/inputs/MessageInput.d.ts +0 -14
- package/dist/components/inputs/MessageInput.d.ts.map +0 -1
- package/dist/components/inputs/MessageInput.js.map +0 -1
- package/dist/components/inputs/ReferencePopover.d.ts.map +0 -1
- package/dist/components/inputs/ReferencePopover.js.map +0 -1
- package/dist/components/inputs/SingleLinePlugin.d.ts.map +0 -1
- package/dist/components/inputs/SingleLinePlugin.js.map +0 -1
- package/dist/components/inputs/variables/VariableChip.d.ts.map +0 -1
- package/dist/components/inputs/variables/VariableChip.js.map +0 -1
- package/dist/components/inputs/variables/VariableIcon.d.ts.map +0 -1
- package/dist/components/inputs/variables/VariableIcon.js.map +0 -1
- package/dist/components/inputs/variables/VariableNode.d.ts.map +0 -1
- package/dist/components/inputs/variables/VariableNode.js.map +0 -1
- package/dist/components/inputs/variables/VariableSuggestion.d.ts.map +0 -1
- package/dist/components/inputs/variables/VariableSuggestion.js.map +0 -1
- package/dist/components/inputs/variables/editors/PluralVariableEditor.d.ts.map +0 -1
- package/dist/components/inputs/variables/editors/PluralVariableEditor.js.map +0 -1
- package/dist/components/inputs/variables/editors/SelectVariableEditor.d.ts.map +0 -1
- package/dist/components/inputs/variables/editors/SelectVariableEditor.js.map +0 -1
- package/dist/components/inputs/variables/editors/TagVariableEditor.d.ts.map +0 -1
- package/dist/components/inputs/variables/editors/TagVariableEditor.js.map +0 -1
- package/dist/components/inputs/variables/editors/TemporalVariableEditor.d.ts.map +0 -1
- package/dist/components/inputs/variables/editors/TemporalVariableEditor.js.map +0 -1
- package/dist/components/inputs/variables/pickers/NumericVariableEditor.d.ts.map +0 -1
- package/dist/components/inputs/variables/pickers/NumericVariableEditor.js.map +0 -1
- package/dist/components/inputs/variables/pickers/TemporalVariablePicker.d.ts.map +0 -1
- package/dist/components/inputs/variables/pickers/TemporalVariablePicker.js.map +0 -1
- package/dist/components/layout/GroupStatusDot.d.ts +0 -6
- package/dist/components/layout/GroupStatusDot.d.ts.map +0 -1
- package/dist/components/layout/GroupStatusDot.js +0 -24
- package/dist/components/layout/GroupStatusDot.js.map +0 -1
- package/dist/components/layout/StatusDot.d.ts +0 -7
- package/dist/components/layout/StatusDot.d.ts.map +0 -1
- package/dist/components/layout/StatusDot.js +0 -12
- package/dist/components/layout/StatusDot.js.map +0 -1
- package/dist/components/layout/StatusDot.module.css +0 -16
- package/dist/endpoints/set-messages.d.ts +0 -3
- package/dist/endpoints/set-messages.d.ts.map +0 -1
- package/dist/endpoints/set-messages.js +0 -105
- package/dist/endpoints/set-messages.js.map +0 -1
- package/dist/entities.d.ts +0 -5
- package/dist/entities.d.ts.map +0 -1
- package/dist/entities.js +0 -42
- package/dist/entities.js.map +0 -1
- package/dist/requests/fetchMessages.d.ts +0 -3
- package/dist/requests/fetchMessages.d.ts.map +0 -1
- package/dist/requests/fetchMessages.js +0 -40
- package/dist/requests/fetchMessages.js.map +0 -1
- package/dist/utils/config.d.ts.map +0 -1
- package/dist/utils/config.js.map +0 -1
- package/dist/utils/format.d.ts.map +0 -1
- package/dist/utils/format.js.map +0 -1
- package/dist/utils/guards.d.ts.map +0 -1
- package/dist/utils/guards.js.map +0 -1
- package/dist/utils/icu-tranform.d.ts.map +0 -1
- package/dist/utils/icu-tranform.js.map +0 -1
- package/dist/utils/validate.d.ts.map +0 -1
- package/dist/utils/validate.js.map +0 -1
- /package/dist/components/{inputs → input}/ReferencePopover.module.css +0 -0
- /package/dist/components/{inputs → input}/SingleLinePlugin.d.ts +0 -0
- /package/dist/components/{inputs → input}/SingleLinePlugin.js +0 -0
- /package/dist/components/{hooks → input}/useHtmlLexicalAdapter.d.ts +0 -0
- /package/dist/components/{hooks → input}/useHtmlLexicalAdapter.js +0 -0
- /package/dist/components/{inputs → input}/variables/VariableChip.d.ts +0 -0
- /package/dist/components/{inputs → input}/variables/VariableChip.module.css +0 -0
- /package/dist/components/{inputs → input}/variables/VariableIcon.d.ts +0 -0
- /package/dist/components/{inputs → input}/variables/VariableIcon.js +0 -0
- /package/dist/components/{inputs → input}/variables/VariableNode.d.ts +0 -0
- /package/dist/components/{inputs → input}/variables/VariableNode.js +0 -0
- /package/dist/components/{inputs → input}/variables/VariableSuggestion.d.ts +0 -0
- /package/dist/components/{inputs → input}/variables/VariableSuggestion.js +0 -0
- /package/dist/components/{inputs → input}/variables/VariableSuggestion.module.css +0 -0
- /package/dist/components/{inputs → input}/variables/editors/PluralVariableEditor.d.ts +0 -0
- /package/dist/components/{inputs → input}/variables/editors/PluralVariableEditor.module.css +0 -0
- /package/dist/components/{inputs → input}/variables/editors/SelectVariableEditor.d.ts +0 -0
- /package/dist/components/{inputs → input}/variables/editors/SelectVariableEditor.module.css +0 -0
- /package/dist/components/{inputs → input}/variables/editors/TagVariableEditor.d.ts +0 -0
- /package/dist/components/{inputs → input}/variables/editors/TagVariableEditor.module.css +0 -0
- /package/dist/components/{inputs → input}/variables/editors/TemporalVariableEditor.d.ts +0 -0
- /package/dist/components/{inputs → input}/variables/editors/TemporalVariableEditor.js +0 -0
- /package/dist/components/{inputs → input}/variables/pickers/NumericVariableEditor.d.ts +0 -0
- /package/dist/components/{inputs → input}/variables/pickers/NumericVariableEditor.module.css +0 -0
- /package/dist/components/{inputs → input}/variables/pickers/TemporalVariablePicker.d.ts +0 -0
- /package/dist/components/{inputs → input}/variables/pickers/TemporalVariablePicker.module.css +0 -0
- /package/dist/{utils/config.js → config.js} +0 -0
- /package/dist/{utils → icu}/guards.d.ts +0 -0
- /package/dist/{utils → icu}/guards.js +0 -0
- /package/dist/{utils → icu}/validate.d.ts +0 -0
- /package/dist/{utils → icu}/validate.js +0 -0
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { uncaughtSwitchCase } from '@davincicoding/payload-plugin-kit';
|
|
2
|
+
import { parse, TYPE } from '@formatjs/icu-messageformat-parser';
|
|
3
|
+
/**
|
|
4
|
+
* Parse an ICU message string into a AST array
|
|
5
|
+
*/ export const parseICUMessage = parse;
|
|
6
|
+
/**
|
|
7
|
+
* Serialize an ICU message AST array into a ICU message string
|
|
8
|
+
*/ export const serializeICUMessage = (elements)=>elements.map((element)=>{
|
|
9
|
+
switch(element.type){
|
|
10
|
+
case TYPE.literal:
|
|
11
|
+
return element.value;
|
|
12
|
+
case TYPE.argument:
|
|
13
|
+
return stringifyElement(element.value);
|
|
14
|
+
case TYPE.number:
|
|
15
|
+
// TODO serialize element.style
|
|
16
|
+
return stringifyElement(element.value, 'number');
|
|
17
|
+
case TYPE.select:
|
|
18
|
+
return stringifyElement(element.value, 'select', Object.entries(element.options).map(([key, option])=>`${key} {${option.value.length > 0 ? serializeICUMessage(option.value) : key}}`));
|
|
19
|
+
case TYPE.plural:
|
|
20
|
+
return stringifyElement(element.value, 'plural', [
|
|
21
|
+
element.offset < 0 && `offset:${element.offset}`,
|
|
22
|
+
...Object.entries(element.options).map(([key, option])=>`${key} {${option.value.length > 0 ? serializeICUMessage(option.value) : key}}`)
|
|
23
|
+
]);
|
|
24
|
+
case TYPE.tag:
|
|
25
|
+
return `<${element.value}>${serializeICUMessage(element.children)}</${element.value}>`;
|
|
26
|
+
case TYPE.date:
|
|
27
|
+
// TODO serialize element.style
|
|
28
|
+
return stringifyElement(element.value, 'date');
|
|
29
|
+
case TYPE.time:
|
|
30
|
+
// TODO serialize element.style
|
|
31
|
+
return stringifyElement(element.value, 'time');
|
|
32
|
+
case TYPE.pound:
|
|
33
|
+
return '#';
|
|
34
|
+
default:
|
|
35
|
+
return uncaughtSwitchCase(element);
|
|
36
|
+
}
|
|
37
|
+
}).join('');
|
|
38
|
+
function stringifyElement(name, type, options = []) {
|
|
39
|
+
if (type === undefined) return `{${name}}`;
|
|
40
|
+
const filteredOptions = options.filter((option)=>typeof option === 'string' && option.length > 0);
|
|
41
|
+
if (filteredOptions.length === 0) return `{${name}, ${type}}`;
|
|
42
|
+
return `{${name}, ${type}, ${filteredOptions.join(' ')}}`;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
//# sourceMappingURL=serialize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/icu/serialize.ts"],"sourcesContent":["import { uncaughtSwitchCase } from '@davincicoding/payload-plugin-kit';\nimport type { MessageFormatElement } from '@formatjs/icu-messageformat-parser';\nimport { parse, TYPE } from '@formatjs/icu-messageformat-parser';\n\n/**\n * Parse an ICU message string into a AST array\n */\nexport const parseICUMessage = parse;\n\n/**\n * Serialize an ICU message AST array into a ICU message string\n */\nexport const serializeICUMessage = (elements: MessageFormatElement[]): string =>\n elements\n .map((element) => {\n switch (element.type) {\n case TYPE.literal:\n return element.value;\n case TYPE.argument:\n return stringifyElement(element.value);\n case TYPE.number:\n // TODO serialize element.style\n return stringifyElement(element.value, 'number');\n case TYPE.select:\n return stringifyElement(\n element.value,\n 'select',\n Object.entries(element.options).map(\n ([key, option]) =>\n `${key} {${option.value.length > 0 ? serializeICUMessage(option.value) : key}}`,\n ),\n );\n case TYPE.plural:\n return stringifyElement(element.value, 'plural', [\n element.offset < 0 && `offset:${element.offset}`,\n ...Object.entries(element.options).map(\n ([key, option]) =>\n `${key} {${\n option.value.length > 0\n ? serializeICUMessage(option.value)\n : key\n }}`,\n ),\n ]);\n case TYPE.tag:\n return `<${element.value}>${serializeICUMessage(element.children)}</${element.value}>`;\n case TYPE.date:\n // TODO serialize element.style\n return stringifyElement(element.value, 'date');\n case TYPE.time:\n // TODO serialize element.style\n return stringifyElement(element.value, 'time');\n case TYPE.pound:\n return '#';\n default:\n return uncaughtSwitchCase(element);\n }\n })\n .join('');\n\nfunction stringifyElement(\n name: string,\n type?: string,\n options: (string | boolean)[] = [],\n): string {\n if (type === undefined) return `{${name}}`;\n\n const filteredOptions = options.filter(\n (option): option is string =>\n typeof option === 'string' && option.length > 0,\n );\n if (filteredOptions.length === 0) return `{${name}, ${type}}`;\n\n return `{${name}, ${type}, ${filteredOptions.join(' ')}}`;\n}\n"],"names":["uncaughtSwitchCase","parse","TYPE","parseICUMessage","serializeICUMessage","elements","map","element","type","literal","value","argument","stringifyElement","number","select","Object","entries","options","key","option","length","plural","offset","tag","children","date","time","pound","join","name","undefined","filteredOptions","filter"],"mappings":"AAAA,SAASA,kBAAkB,QAAQ,oCAAoC;AAEvE,SAASC,KAAK,EAAEC,IAAI,QAAQ,qCAAqC;AAEjE;;CAEC,GACD,OAAO,MAAMC,kBAAkBF,MAAM;AAErC;;CAEC,GACD,OAAO,MAAMG,sBAAsB,CAACC,WAClCA,SACGC,GAAG,CAAC,CAACC;QACJ,OAAQA,QAAQC,IAAI;YAClB,KAAKN,KAAKO,OAAO;gBACf,OAAOF,QAAQG,KAAK;YACtB,KAAKR,KAAKS,QAAQ;gBAChB,OAAOC,iBAAiBL,QAAQG,KAAK;YACvC,KAAKR,KAAKW,MAAM;gBACd,+BAA+B;gBAC/B,OAAOD,iBAAiBL,QAAQG,KAAK,EAAE;YACzC,KAAKR,KAAKY,MAAM;gBACd,OAAOF,iBACLL,QAAQG,KAAK,EACb,UACAK,OAAOC,OAAO,CAACT,QAAQU,OAAO,EAAEX,GAAG,CACjC,CAAC,CAACY,KAAKC,OAAO,GACZ,GAAGD,IAAI,EAAE,EAAEC,OAAOT,KAAK,CAACU,MAAM,GAAG,IAAIhB,oBAAoBe,OAAOT,KAAK,IAAIQ,IAAI,CAAC,CAAC;YAGvF,KAAKhB,KAAKmB,MAAM;gBACd,OAAOT,iBAAiBL,QAAQG,KAAK,EAAE,UAAU;oBAC/CH,QAAQe,MAAM,GAAG,KAAK,CAAC,OAAO,EAAEf,QAAQe,MAAM,EAAE;uBAC7CP,OAAOC,OAAO,CAACT,QAAQU,OAAO,EAAEX,GAAG,CACpC,CAAC,CAACY,KAAKC,OAAO,GACZ,GAAGD,IAAI,EAAE,EACPC,OAAOT,KAAK,CAACU,MAAM,GAAG,IAClBhB,oBAAoBe,OAAOT,KAAK,IAChCQ,IACL,CAAC,CAAC;iBAER;YACH,KAAKhB,KAAKqB,GAAG;gBACX,OAAO,CAAC,CAAC,EAAEhB,QAAQG,KAAK,CAAC,CAAC,EAAEN,oBAAoBG,QAAQiB,QAAQ,EAAE,EAAE,EAAEjB,QAAQG,KAAK,CAAC,CAAC,CAAC;YACxF,KAAKR,KAAKuB,IAAI;gBACZ,+BAA+B;gBAC/B,OAAOb,iBAAiBL,QAAQG,KAAK,EAAE;YACzC,KAAKR,KAAKwB,IAAI;gBACZ,+BAA+B;gBAC/B,OAAOd,iBAAiBL,QAAQG,KAAK,EAAE;YACzC,KAAKR,KAAKyB,KAAK;gBACb,OAAO;YACT;gBACE,OAAO3B,mBAAmBO;QAC9B;IACF,GACCqB,IAAI,CAAC,IAAI;AAEd,SAAShB,iBACPiB,IAAY,EACZrB,IAAa,EACbS,UAAgC,EAAE;IAElC,IAAIT,SAASsB,WAAW,OAAO,CAAC,CAAC,EAAED,KAAK,CAAC,CAAC;IAE1C,MAAME,kBAAkBd,QAAQe,MAAM,CACpC,CAACb,SACC,OAAOA,WAAW,YAAYA,OAAOC,MAAM,GAAG;IAElD,IAAIW,gBAAgBX,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,EAAES,KAAK,EAAE,EAAErB,KAAK,CAAC,CAAC;IAE7D,OAAO,CAAC,CAAC,EAAEqB,KAAK,EAAE,EAAErB,KAAK,EAAE,EAAEuB,gBAAgBH,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/icu/validate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAIhD,eAAO,MAAM,eAAe,UACnB,OAAO,aACH,gBAAgB,EAAE,KAC5B,cA6DF,CAAC;AAEF,eAAO,MAAM,eAAe,cACd,gBAAgB,EAAE,KAAG,gBAEE,CAAC;AAEtC,MAAM,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/icu/validate.ts"],"sourcesContent":["import { TYPE } from '@formatjs/icu-messageformat-parser';\nimport type { ValidateResult } from 'react-hook-form';\nimport type { TemplateVariable } from '@/types';\nimport { isNumericElement, isTemporalElement } from './guards';\nimport { extractTemplateVariables } from './schema';\n\nexport const validateMessage = (\n value: unknown,\n variables: TemplateVariable[],\n): ValidateResult => {\n if (typeof value !== 'string') return 'Invalid value';\n\n try {\n const variableUsages = extractTemplateVariables(value);\n\n for (const allowedVariable of variables) {\n const variableUsage = variableUsages.find(\n (placeholder) => placeholder.value === allowedVariable.value,\n );\n\n if (!variableUsage) continue;\n\n if (isNumericElement(allowedVariable)) {\n if (isNumericElement(variableUsage)) continue;\n return `{${allowedVariable.value}} has invalid type`;\n }\n\n if (isTemporalElement(allowedVariable)) {\n if (isTemporalElement(variableUsage)) continue;\n return `{${allowedVariable.value}} has invalid type`;\n }\n\n switch (allowedVariable.type) {\n case TYPE.argument:\n if (variableUsage.type === TYPE.argument) continue;\n return `{${allowedVariable.value}} has invalid type`;\n case TYPE.select: {\n if (variableUsage.type !== TYPE.select)\n return `{${allowedVariable.value}} has invalid type`;\n\n const allowedOptions = Object.keys(allowedVariable.options);\n for (const option of allowedOptions) {\n if (variableUsage.options[option]) continue;\n return `{${allowedVariable.value}} has missing option: ${option}`;\n }\n const usedOptions = Object.keys(variableUsage.options);\n for (const option of usedOptions) {\n if (allowedOptions.includes(option)) continue;\n return `{${allowedVariable.value}} has unsupported option: ${option}`;\n }\n continue;\n }\n case TYPE.tag:\n if (variableUsage.type === TYPE.tag) continue;\n return `{${allowedVariable.value}} has invalid type`;\n }\n }\n\n const supportedVariables = new Set(variables.map(({ value }) => value));\n\n for (const variableUsage of variableUsages) {\n if (supportedVariables.has(variableUsage.value)) continue;\n return `{${variableUsage.value}} is not supported`;\n }\n\n return true;\n } catch (error) {\n if (!(error instanceof Error)) return false;\n return `Invalid syntax: ${error.message}`;\n }\n};\n\nexport const createValidator =\n (variables: TemplateVariable[]): MessageValidator =>\n (value: unknown) =>\n validateMessage(value, variables);\n\nexport type MessageValidator = (value: unknown) => ValidateResult;\n"],"names":["TYPE","isNumericElement","isTemporalElement","extractTemplateVariables","validateMessage","value","variables","variableUsages","allowedVariable","variableUsage","find","placeholder","type","argument","select","allowedOptions","Object","keys","options","option","usedOptions","includes","tag","supportedVariables","Set","map","has","error","Error","message","createValidator"],"mappings":"AAAA,SAASA,IAAI,QAAQ,qCAAqC;AAG1D,SAASC,gBAAgB,EAAEC,iBAAiB,QAAQ,WAAW;AAC/D,SAASC,wBAAwB,QAAQ,WAAW;AAEpD,OAAO,MAAMC,kBAAkB,CAC7BC,OACAC;IAEA,IAAI,OAAOD,UAAU,UAAU,OAAO;IAEtC,IAAI;QACF,MAAME,iBAAiBJ,yBAAyBE;QAEhD,KAAK,MAAMG,mBAAmBF,UAAW;YACvC,MAAMG,gBAAgBF,eAAeG,IAAI,CACvC,CAACC,cAAgBA,YAAYN,KAAK,KAAKG,gBAAgBH,KAAK;YAG9D,IAAI,CAACI,eAAe;YAEpB,IAAIR,iBAAiBO,kBAAkB;gBACrC,IAAIP,iBAAiBQ,gBAAgB;gBACrC,OAAO,CAAC,CAAC,EAAED,gBAAgBH,KAAK,CAAC,kBAAkB,CAAC;YACtD;YAEA,IAAIH,kBAAkBM,kBAAkB;gBACtC,IAAIN,kBAAkBO,gBAAgB;gBACtC,OAAO,CAAC,CAAC,EAAED,gBAAgBH,KAAK,CAAC,kBAAkB,CAAC;YACtD;YAEA,OAAQG,gBAAgBI,IAAI;gBAC1B,KAAKZ,KAAKa,QAAQ;oBAChB,IAAIJ,cAAcG,IAAI,KAAKZ,KAAKa,QAAQ,EAAE;oBAC1C,OAAO,CAAC,CAAC,EAAEL,gBAAgBH,KAAK,CAAC,kBAAkB,CAAC;gBACtD,KAAKL,KAAKc,MAAM;oBAAE;wBAChB,IAAIL,cAAcG,IAAI,KAAKZ,KAAKc,MAAM,EACpC,OAAO,CAAC,CAAC,EAAEN,gBAAgBH,KAAK,CAAC,kBAAkB,CAAC;wBAEtD,MAAMU,iBAAiBC,OAAOC,IAAI,CAACT,gBAAgBU,OAAO;wBAC1D,KAAK,MAAMC,UAAUJ,eAAgB;4BACnC,IAAIN,cAAcS,OAAO,CAACC,OAAO,EAAE;4BACnC,OAAO,CAAC,CAAC,EAAEX,gBAAgBH,KAAK,CAAC,sBAAsB,EAAEc,QAAQ;wBACnE;wBACA,MAAMC,cAAcJ,OAAOC,IAAI,CAACR,cAAcS,OAAO;wBACrD,KAAK,MAAMC,UAAUC,YAAa;4BAChC,IAAIL,eAAeM,QAAQ,CAACF,SAAS;4BACrC,OAAO,CAAC,CAAC,EAAEX,gBAAgBH,KAAK,CAAC,0BAA0B,EAAEc,QAAQ;wBACvE;wBACA;oBACF;gBACA,KAAKnB,KAAKsB,GAAG;oBACX,IAAIb,cAAcG,IAAI,KAAKZ,KAAKsB,GAAG,EAAE;oBACrC,OAAO,CAAC,CAAC,EAAEd,gBAAgBH,KAAK,CAAC,kBAAkB,CAAC;YACxD;QACF;QAEA,MAAMkB,qBAAqB,IAAIC,IAAIlB,UAAUmB,GAAG,CAAC,CAAC,EAAEpB,KAAK,EAAE,GAAKA;QAEhE,KAAK,MAAMI,iBAAiBF,eAAgB;YAC1C,IAAIgB,mBAAmBG,GAAG,CAACjB,cAAcJ,KAAK,GAAG;YACjD,OAAO,CAAC,CAAC,EAAEI,cAAcJ,KAAK,CAAC,kBAAkB,CAAC;QACpD;QAEA,OAAO;IACT,EAAE,OAAOsB,OAAO;QACd,IAAI,CAAEA,CAAAA,iBAAiBC,KAAI,GAAI,OAAO;QACtC,OAAO,CAAC,gBAAgB,EAAED,MAAME,OAAO,EAAE;IAC3C;AACF,EAAE;AAEF,OAAO,MAAMC,kBACX,CAACxB,YACD,CAACD,QACCD,gBAAgBC,OAAOC,WAAW"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,33 +1,34 @@
|
|
|
1
|
-
import type { Plugin } from 'payload';
|
|
2
|
-
import type {
|
|
3
|
-
export interface MessagesPluginConfig {
|
|
4
|
-
|
|
1
|
+
import type { CollectionSlug, GlobalAdminOptions, GlobalConfig, Plugin } from 'payload';
|
|
2
|
+
import type { EditorAccessGuard, MessagesHooks, MessagesSchema, MessagesScopesConfig, TypedMessagesScopesConfig } from './types.ts';
|
|
3
|
+
export interface MessagesPluginConfig<Schema extends MessagesSchema> {
|
|
4
|
+
/** Nested object defining message keys and ICU templates. */
|
|
5
|
+
schema: Schema;
|
|
6
|
+
globalSlug?: string;
|
|
7
|
+
globalGroup?: GlobalAdminOptions['group'];
|
|
8
|
+
globalLabel?: string;
|
|
9
|
+
uploadCollection?: CollectionSlug;
|
|
5
10
|
/**
|
|
6
|
-
*
|
|
11
|
+
* Colocate translation editing with Payload globals. Each entry maps a
|
|
12
|
+
* top-level schema key to a global with the same slug, adding a Messages
|
|
13
|
+
* tab or sidebar to that global's edit view.
|
|
7
14
|
*
|
|
8
|
-
*
|
|
15
|
+
* Accepts an array of slugs (defaults to `'tab'` position) or a record
|
|
16
|
+
* mapping slugs to `'tab' | 'sidebar' | { position, existingFieldsTabLabel? }`.
|
|
9
17
|
*/
|
|
10
|
-
|
|
18
|
+
scopes?: TypedMessagesScopesConfig<Schema>;
|
|
11
19
|
/**
|
|
12
20
|
* Access control for allowing to edit the messages.
|
|
13
21
|
*
|
|
14
|
-
* @default `(
|
|
22
|
+
* @default `({ user }) => user !== null`
|
|
15
23
|
*/
|
|
16
|
-
editorAccess?:
|
|
17
|
-
hooks?: MessagesHooks;
|
|
24
|
+
editorAccess?: EditorAccessGuard;
|
|
18
25
|
/**
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
* - `'db'` — stores translations as JSON in a `data` field (default).
|
|
22
|
-
* - `'upload'` — stores translations as uploaded `.json` files, enabling
|
|
23
|
-
* static hosting via a CDN or object storage.
|
|
24
|
-
*
|
|
25
|
-
* @default 'db'
|
|
26
|
+
* Collection hooks for the messages collection. Extends Payload's
|
|
27
|
+
* collection hooks with an additional `afterUpdate` callback.
|
|
26
28
|
*/
|
|
27
|
-
|
|
28
|
-
tabs?: boolean;
|
|
29
|
+
hooks?: GlobalConfig['hooks'];
|
|
29
30
|
}
|
|
30
|
-
export
|
|
31
|
-
export { fetchMessages } from './
|
|
32
|
-
export
|
|
31
|
+
export type { MessagesScopesConfig, MessagesSchema, MessagesHooks, EditorAccessGuard, };
|
|
32
|
+
export { fetchMessages } from './exports/fetchMessages';
|
|
33
|
+
export declare const intlPlugin: <Schema extends MessagesSchema>({ schema, globalSlug, globalGroup, globalLabel, scopes: scopesConfig, uploadCollection, hooks, editorAccess, }: MessagesPluginConfig<Schema>) => Plugin;
|
|
33
34
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EAEd,kBAAkB,EAClB,YAAY,EACZ,MAAM,EACP,MAAM,SAAS,CAAC;AAWjB,OAAO,KAAK,EACV,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,oBAAoB,EAEpB,yBAAyB,EAC1B,MAAM,YAAY,CAAC;AAGpB,MAAM,WAAW,oBAAoB,CAAC,MAAM,SAAS,cAAc;IACjE,6DAA6D;IAC7D,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,cAAc,CAAC;IAClC;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAC3C;;;;OAIG;IACH,YAAY,CAAC,EAAE,iBAAiB,CAAC;IACjC;;;OAGG;IACH,KAAK,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;CAC/B;AAED,YAAY,EACV,oBAAoB,EACpB,cAAc,EACd,aAAa,EACb,iBAAiB,GAClB,CAAC;AAEF,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,eAAO,MAAM,UAAU,GACpB,MAAM,SAAS,cAAc,kHAS3B,oBAAoB,CAAC,MAAM,CAAC,KAAG,MA4LjC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,48 +1,192 @@
|
|
|
1
|
-
import { PLUGIN_CONTEXT } from './const';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
export
|
|
1
|
+
import { PLUGIN_CONTEXT, VIRTUAL_MESSAGES_FIELD_NAME } from './const';
|
|
2
|
+
import { createPersistDataToFileHook, createPopulateDataFromFileHook } from './file-storage-hooks';
|
|
3
|
+
import { createExtractScopedMessagesHook, createPopulateScopedMessagesHook } from './hooks';
|
|
4
|
+
import { normalizeScopes } from './utils/scopes';
|
|
5
|
+
export { fetchMessages } from './exports/fetchMessages';
|
|
6
|
+
export const intlPlugin = ({ schema, globalSlug = 'messages', globalGroup, globalLabel, scopes: scopesConfig, uploadCollection, hooks = {}, editorAccess = ({ user })=>user !== null })=>(config)=>{
|
|
6
7
|
if (!config.localization) {
|
|
7
8
|
console.warn('[payload-intl] You have not set the localization option in your Payload config, so this plugin will have no effect.');
|
|
8
9
|
}
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
config.admin.components ??= {};
|
|
12
|
-
config.admin.components.actions ??= [];
|
|
13
|
-
config.admin.components.actions.push({
|
|
14
|
-
exportName: 'MessagesLink',
|
|
15
|
-
path: 'payload-intl/rsc#MessagesLink'
|
|
10
|
+
PLUGIN_CONTEXT.set(config, {
|
|
11
|
+
globalSlug
|
|
16
12
|
});
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
13
|
+
const scopes = normalizeScopes(scopesConfig);
|
|
14
|
+
config.typescript ??= {};
|
|
15
|
+
config.typescript.schema ??= [];
|
|
16
|
+
config.typescript.schema.push(({ jsonSchema })=>({
|
|
17
|
+
...jsonSchema,
|
|
18
|
+
definitions: {
|
|
19
|
+
...jsonSchema.definitions,
|
|
20
|
+
MessagesData: {
|
|
21
|
+
type: 'object',
|
|
22
|
+
additionalProperties: {
|
|
23
|
+
anyOf: [
|
|
24
|
+
{
|
|
25
|
+
$ref: '#/definitions/MessagesData'
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
type: 'string'
|
|
29
|
+
}
|
|
30
|
+
]
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}));
|
|
35
|
+
config.globals ??= [];
|
|
36
|
+
config.globals.push({
|
|
37
|
+
slug: globalSlug,
|
|
38
|
+
label: globalLabel,
|
|
39
|
+
access: {
|
|
40
|
+
read: ()=>true,
|
|
41
|
+
update: ({ req })=>editorAccess(req)
|
|
42
|
+
},
|
|
43
|
+
hooks: {
|
|
44
|
+
...hooks,
|
|
45
|
+
...uploadCollection ? {
|
|
46
|
+
afterRead: [
|
|
47
|
+
createPopulateDataFromFileHook({
|
|
48
|
+
uploadCollection
|
|
49
|
+
}),
|
|
50
|
+
...hooks.afterRead ?? []
|
|
51
|
+
],
|
|
52
|
+
beforeChange: [
|
|
53
|
+
createPersistDataToFileHook({
|
|
54
|
+
uploadCollection
|
|
55
|
+
}),
|
|
56
|
+
...hooks.beforeChange ?? []
|
|
57
|
+
]
|
|
58
|
+
} : {}
|
|
59
|
+
},
|
|
60
|
+
admin: {
|
|
61
|
+
hidden: (req)=>!editorAccess(req),
|
|
62
|
+
group: globalGroup,
|
|
63
|
+
components: {
|
|
64
|
+
elements: {
|
|
65
|
+
beforeDocumentControls: [
|
|
66
|
+
{
|
|
67
|
+
path: 'payload-intl/client#MessagesImport'
|
|
68
|
+
}
|
|
69
|
+
]
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
fields: [
|
|
74
|
+
{
|
|
75
|
+
name: 'data',
|
|
76
|
+
type: 'json',
|
|
77
|
+
label: false,
|
|
78
|
+
required: true,
|
|
79
|
+
localized: true,
|
|
80
|
+
virtual: uploadCollection !== undefined,
|
|
81
|
+
defaultValue: {},
|
|
82
|
+
typescriptSchema: [
|
|
83
|
+
()=>({
|
|
84
|
+
$ref: '#/definitions/MessagesData'
|
|
85
|
+
})
|
|
86
|
+
],
|
|
87
|
+
admin: {
|
|
88
|
+
components: {
|
|
89
|
+
Field: {
|
|
90
|
+
path: 'payload-intl/client#MessagesField',
|
|
91
|
+
clientProps: {
|
|
92
|
+
schema: schema
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
27
96
|
}
|
|
28
97
|
},
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
98
|
+
...uploadCollection ? [
|
|
99
|
+
{
|
|
100
|
+
name: 'file',
|
|
101
|
+
type: 'upload',
|
|
102
|
+
localized: true,
|
|
103
|
+
relationTo: uploadCollection,
|
|
104
|
+
admin: {
|
|
105
|
+
hidden: true
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
] : []
|
|
109
|
+
]
|
|
35
110
|
});
|
|
36
|
-
|
|
37
|
-
config.
|
|
38
|
-
slug
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
111
|
+
if (scopes.size === 0) return config;
|
|
112
|
+
/* Configure Scopes */ for (const global of config.globals){
|
|
113
|
+
const scopeConfig = scopes.get(global.slug);
|
|
114
|
+
if (!scopeConfig) continue;
|
|
115
|
+
/* Inject Messages Field */ const messagesField = {
|
|
116
|
+
name: VIRTUAL_MESSAGES_FIELD_NAME,
|
|
117
|
+
label: false,
|
|
118
|
+
type: 'json',
|
|
119
|
+
virtual: true,
|
|
120
|
+
access: {
|
|
121
|
+
read: ({ req })=>editorAccess(req),
|
|
122
|
+
update: ({ req })=>editorAccess(req),
|
|
123
|
+
create: ({ req })=>editorAccess(req)
|
|
124
|
+
},
|
|
125
|
+
admin: {
|
|
126
|
+
components: {
|
|
127
|
+
Field: {
|
|
128
|
+
path: 'payload-intl/client#MessagesField',
|
|
129
|
+
clientProps: {
|
|
130
|
+
schema: schema[global.slug]
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
},
|
|
135
|
+
hooks: {
|
|
136
|
+
afterRead: [
|
|
137
|
+
createPopulateScopedMessagesHook({
|
|
138
|
+
globalSlug: globalSlug,
|
|
139
|
+
scope: global.slug
|
|
140
|
+
})
|
|
141
|
+
],
|
|
142
|
+
beforeChange: [
|
|
143
|
+
createExtractScopedMessagesHook({
|
|
144
|
+
globalSlug: globalSlug,
|
|
145
|
+
scope: global.slug
|
|
146
|
+
})
|
|
147
|
+
]
|
|
148
|
+
}
|
|
149
|
+
};
|
|
150
|
+
global.fields ??= [];
|
|
151
|
+
if (scopeConfig.position === 'sidebar') {
|
|
152
|
+
global.fields.push({
|
|
153
|
+
type: 'group',
|
|
154
|
+
label: 'Messages',
|
|
155
|
+
admin: {
|
|
156
|
+
position: 'sidebar'
|
|
157
|
+
},
|
|
158
|
+
fields: [
|
|
159
|
+
messagesField
|
|
160
|
+
]
|
|
161
|
+
});
|
|
162
|
+
} else if (global.fields[0]?.type === 'tabs') {
|
|
163
|
+
global.fields[0].tabs.push({
|
|
164
|
+
label: 'Messages',
|
|
165
|
+
fields: [
|
|
166
|
+
messagesField
|
|
167
|
+
]
|
|
168
|
+
});
|
|
169
|
+
} else {
|
|
170
|
+
global.fields = [
|
|
171
|
+
{
|
|
172
|
+
type: 'tabs',
|
|
173
|
+
tabs: [
|
|
174
|
+
{
|
|
175
|
+
label: scopeConfig.existingFieldsTabLabel ?? 'Fields',
|
|
176
|
+
fields: global.fields
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
label: 'Messages',
|
|
180
|
+
fields: [
|
|
181
|
+
messagesField
|
|
182
|
+
]
|
|
183
|
+
}
|
|
184
|
+
]
|
|
185
|
+
}
|
|
186
|
+
];
|
|
187
|
+
}
|
|
188
|
+
}
|
|
44
189
|
return config;
|
|
45
190
|
};
|
|
46
|
-
export { fetchMessages } from './requests/fetchMessages';
|
|
47
191
|
|
|
48
192
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import type { Plugin } from 'payload';\nimport type { MessagesViewProps } from './components/MessagesView';\nimport { PLUGIN_CONTEXT } from './const';\nimport { setMessagesEndpoint } from './endpoints/set-messages';\nimport { Messages } from './entities';\nimport type {\n MessagesGuard,\n MessagesHooks,\n MessagesSchema,\n StorageStrategy,\n} from './types.ts';\nimport { getSupportedLocales } from './utils/config';\n\nexport interface MessagesPluginConfig {\n schema: MessagesSchema;\n /**\n * The slug of the collection to use for the messages.\n *\n * @default `messages`\n */\n collectionSlug?: string;\n /**\n * Access control for allowing to edit the messages.\n *\n * @default `(req) => req.user !== null // Authenticated users only`\n */\n editorAccess?: MessagesGuard;\n hooks?: MessagesHooks;\n /**\n * Where translated messages are persisted.\n *\n * - `'db'` — stores translations as JSON in a `data` field (default).\n * - `'upload'` — stores translations as uploaded `.json` files, enabling\n * static hosting via a CDN or object storage.\n *\n * @default 'db'\n */\n storage?: StorageStrategy;\n tabs?: boolean;\n}\n\nexport const intlPlugin =\n ({\n schema,\n tabs,\n collectionSlug = 'messages',\n hooks = {},\n editorAccess = (req) => req.user !== null,\n storage = 'db',\n }: MessagesPluginConfig): Plugin =>\n (config) => {\n if (!config.localization) {\n console.warn(\n '[payload-intl] You have not set the localization option in your Payload config, so this plugin will have no effect.',\n );\n }\n\n const locales = getSupportedLocales(config.localization);\n\n config.admin ??= {};\n config.admin.components ??= {};\n config.admin.components.actions ??= [];\n config.admin.components.actions.push({\n exportName: 'MessagesLink',\n path: 'payload-intl/rsc#MessagesLink',\n });\n\n config.admin.components.views = {\n ...config.admin.components.views,\n intl: {\n Component: {\n path: 'payload-intl/rsc#MessagesView',\n serverProps: {\n access: editorAccess,\n locales,\n schema,\n tabs,\n } satisfies MessagesViewProps,\n },\n path: '/intl',\n },\n };\n\n PLUGIN_CONTEXT.set(config, {\n collectionSlug,\n storage,\n });\n config.collections ??= [];\n config.collections.push(Messages({ slug: collectionSlug, hooks, storage }));\n\n config.endpoints ??= [];\n config.endpoints.push(setMessagesEndpoint);\n\n return config;\n };\n\nexport { fetchMessages } from './requests/fetchMessages';\n\nexport type {\n Messages,\n MessagesSchema,\n StorageStrategy,\n} from './types.ts';\n"],"names":["PLUGIN_CONTEXT","setMessagesEndpoint","Messages","getSupportedLocales","intlPlugin","schema","tabs","collectionSlug","hooks","editorAccess","req","user","storage","config","localization","console","warn","locales","admin","components","actions","push","exportName","path","views","intl","Component","serverProps","access","set","collections","slug","endpoints","fetchMessages"],"mappings":"AAEA,SAASA,cAAc,QAAQ,UAAU;AACzC,SAASC,mBAAmB,QAAQ,2BAA2B;AAC/D,SAASC,QAAQ,QAAQ,aAAa;AAOtC,SAASC,mBAAmB,QAAQ,iBAAiB;AA8BrD,OAAO,MAAMC,aACX,CAAC,EACCC,MAAM,EACNC,IAAI,EACJC,iBAAiB,UAAU,EAC3BC,QAAQ,CAAC,CAAC,EACVC,eAAe,CAACC,MAAQA,IAAIC,IAAI,KAAK,IAAI,EACzCC,UAAU,IAAI,EACO,GACvB,CAACC;QACC,IAAI,CAACA,OAAOC,YAAY,EAAE;YACxBC,QAAQC,IAAI,CACV;QAEJ;QAEA,MAAMC,UAAUd,oBAAoBU,OAAOC,YAAY;QAEvDD,OAAOK,KAAK,KAAK,CAAC;QAClBL,OAAOK,KAAK,CAACC,UAAU,KAAK,CAAC;QAC7BN,OAAOK,KAAK,CAACC,UAAU,CAACC,OAAO,KAAK,EAAE;QACtCP,OAAOK,KAAK,CAACC,UAAU,CAACC,OAAO,CAACC,IAAI,CAAC;YACnCC,YAAY;YACZC,MAAM;QACR;QAEAV,OAAOK,KAAK,CAACC,UAAU,CAACK,KAAK,GAAG;YAC9B,GAAGX,OAAOK,KAAK,CAACC,UAAU,CAACK,KAAK;YAChCC,MAAM;gBACJC,WAAW;oBACTH,MAAM;oBACNI,aAAa;wBACXC,QAAQnB;wBACRQ;wBACAZ;wBACAC;oBACF;gBACF;gBACAiB,MAAM;YACR;QACF;QAEAvB,eAAe6B,GAAG,CAAChB,QAAQ;YACzBN;YACAK;QACF;QACAC,OAAOiB,WAAW,KAAK,EAAE;QACzBjB,OAAOiB,WAAW,CAACT,IAAI,CAACnB,SAAS;YAAE6B,MAAMxB;YAAgBC;YAAOI;QAAQ;QAExEC,OAAOmB,SAAS,KAAK,EAAE;QACvBnB,OAAOmB,SAAS,CAACX,IAAI,CAACpB;QAEtB,OAAOY;IACT,EAAE;AAEJ,SAASoB,aAAa,QAAQ,2BAA2B"}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import type {\n CollectionSlug,\n Field,\n GlobalAdminOptions,\n GlobalConfig,\n Plugin,\n} from 'payload';\nimport { PLUGIN_CONTEXT, VIRTUAL_MESSAGES_FIELD_NAME } from './const';\nimport type { MessagesFieldProps } from './exports/client';\nimport {\n createPersistDataToFileHook,\n createPopulateDataFromFileHook,\n} from './file-storage-hooks';\nimport {\n createExtractScopedMessagesHook,\n createPopulateScopedMessagesHook,\n} from './hooks';\nimport type {\n EditorAccessGuard,\n MessagesHooks,\n MessagesSchema,\n MessagesScopesConfig,\n Messages as MessagesType,\n TypedMessagesScopesConfig,\n} from './types.ts';\nimport { normalizeScopes } from './utils/scopes';\n\nexport interface MessagesPluginConfig<Schema extends MessagesSchema> {\n /** Nested object defining message keys and ICU templates. */\n schema: Schema;\n globalSlug?: string;\n globalGroup?: GlobalAdminOptions['group'];\n globalLabel?: string;\n uploadCollection?: CollectionSlug;\n /**\n * Colocate translation editing with Payload globals. Each entry maps a\n * top-level schema key to a global with the same slug, adding a Messages\n * tab or sidebar to that global's edit view.\n *\n * Accepts an array of slugs (defaults to `'tab'` position) or a record\n * mapping slugs to `'tab' | 'sidebar' | { position, existingFieldsTabLabel? }`.\n */\n scopes?: TypedMessagesScopesConfig<Schema>;\n /**\n * Access control for allowing to edit the messages.\n *\n * @default `({ user }) => user !== null`\n */\n editorAccess?: EditorAccessGuard;\n /**\n * Collection hooks for the messages collection. Extends Payload's\n * collection hooks with an additional `afterUpdate` callback.\n */\n hooks?: GlobalConfig['hooks'];\n}\n\nexport type {\n MessagesScopesConfig,\n MessagesSchema,\n MessagesHooks,\n EditorAccessGuard,\n};\n\nexport { fetchMessages } from './exports/fetchMessages';\n\nexport const intlPlugin =\n <Schema extends MessagesSchema>({\n schema,\n globalSlug = 'messages',\n globalGroup,\n globalLabel,\n scopes: scopesConfig,\n uploadCollection,\n hooks = {},\n editorAccess = ({ user }) => user !== null,\n }: MessagesPluginConfig<Schema>): Plugin =>\n (config) => {\n if (!config.localization) {\n console.warn(\n '[payload-intl] You have not set the localization option in your Payload config, so this plugin will have no effect.',\n );\n }\n\n PLUGIN_CONTEXT.set(config, {\n globalSlug,\n });\n\n const scopes = normalizeScopes(scopesConfig);\n\n config.typescript ??= {};\n config.typescript.schema ??= [];\n config.typescript.schema.push(({ jsonSchema }) => ({\n ...jsonSchema,\n definitions: {\n ...jsonSchema.definitions,\n MessagesData: {\n type: 'object',\n additionalProperties: {\n anyOf: [{ $ref: '#/definitions/MessagesData' }, { type: 'string' }],\n },\n },\n },\n }));\n\n config.globals ??= [];\n\n config.globals.push({\n slug: globalSlug,\n label: globalLabel,\n access: {\n read: () => true,\n update: ({ req }) => editorAccess(req),\n },\n hooks: {\n ...hooks,\n ...(uploadCollection\n ? {\n afterRead: [\n createPopulateDataFromFileHook({ uploadCollection }),\n ...(hooks.afterRead ?? []),\n ],\n beforeChange: [\n createPersistDataToFileHook({ uploadCollection }),\n ...(hooks.beforeChange ?? []),\n ],\n }\n : {}),\n },\n admin: {\n hidden: (req) => !editorAccess(req),\n group: globalGroup,\n components: {\n elements: {\n beforeDocumentControls: [\n {\n path: 'payload-intl/client#MessagesImport',\n },\n ],\n },\n },\n },\n fields: [\n {\n name: 'data',\n type: 'json',\n label: false,\n required: true,\n localized: true,\n virtual: uploadCollection !== undefined,\n defaultValue: {},\n typescriptSchema: [\n () => ({\n $ref: '#/definitions/MessagesData',\n }),\n ],\n admin: {\n components: {\n Field: {\n path: 'payload-intl/client#MessagesField',\n clientProps: {\n schema: schema,\n } satisfies MessagesFieldProps,\n },\n },\n },\n },\n\n ...(uploadCollection\n ? [\n {\n name: 'file',\n type: 'upload' as const,\n localized: true,\n relationTo: uploadCollection,\n admin: { hidden: true },\n },\n ]\n : []),\n ],\n });\n\n if (scopes.size === 0) return config;\n\n /* Configure Scopes */\n\n for (const global of config.globals) {\n const scopeConfig = scopes.get(global.slug);\n if (!scopeConfig) continue;\n\n /* Inject Messages Field */\n\n const messagesField: Field = {\n name: VIRTUAL_MESSAGES_FIELD_NAME,\n label: false,\n type: 'json',\n virtual: true,\n access: {\n read: ({ req }) => editorAccess(req),\n update: ({ req }) => editorAccess(req),\n create: ({ req }) => editorAccess(req),\n },\n admin: {\n components: {\n Field: {\n path: 'payload-intl/client#MessagesField',\n clientProps: {\n schema: schema[global.slug] as MessagesType,\n } satisfies MessagesFieldProps,\n },\n },\n },\n hooks: {\n afterRead: [\n createPopulateScopedMessagesHook({\n globalSlug: globalSlug as 'messages',\n scope: global.slug,\n }),\n ],\n beforeChange: [\n createExtractScopedMessagesHook({\n globalSlug: globalSlug as 'messages',\n scope: global.slug,\n }),\n ],\n },\n };\n\n global.fields ??= [];\n\n if (scopeConfig.position === 'sidebar') {\n global.fields.push({\n type: 'group',\n label: 'Messages',\n admin: {\n position: 'sidebar',\n },\n fields: [messagesField],\n });\n } else if (global.fields[0]?.type === 'tabs') {\n global.fields[0].tabs.push({\n label: 'Messages',\n fields: [messagesField],\n });\n } else {\n global.fields = [\n {\n type: 'tabs',\n tabs: [\n {\n label: scopeConfig.existingFieldsTabLabel ?? 'Fields',\n fields: global.fields,\n },\n {\n label: 'Messages',\n fields: [messagesField],\n },\n ],\n },\n ];\n }\n }\n\n return config;\n };\n"],"names":["PLUGIN_CONTEXT","VIRTUAL_MESSAGES_FIELD_NAME","createPersistDataToFileHook","createPopulateDataFromFileHook","createExtractScopedMessagesHook","createPopulateScopedMessagesHook","normalizeScopes","fetchMessages","intlPlugin","schema","globalSlug","globalGroup","globalLabel","scopes","scopesConfig","uploadCollection","hooks","editorAccess","user","config","localization","console","warn","set","typescript","push","jsonSchema","definitions","MessagesData","type","additionalProperties","anyOf","$ref","globals","slug","label","access","read","update","req","afterRead","beforeChange","admin","hidden","group","components","elements","beforeDocumentControls","path","fields","name","required","localized","virtual","undefined","defaultValue","typescriptSchema","Field","clientProps","relationTo","size","global","scopeConfig","get","messagesField","create","scope","position","tabs","existingFieldsTabLabel"],"mappings":"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"}
|
package/dist/payload-types.d.ts
CHANGED
|
@@ -17,7 +17,7 @@ export interface Config {
|
|
|
17
17
|
blocks: {};
|
|
18
18
|
collections: {
|
|
19
19
|
users: User;
|
|
20
|
-
|
|
20
|
+
uploads: Upload;
|
|
21
21
|
'payload-kv': PayloadKv;
|
|
22
22
|
'payload-locked-documents': PayloadLockedDocument;
|
|
23
23
|
'payload-preferences': PayloadPreference;
|
|
@@ -26,7 +26,7 @@ export interface Config {
|
|
|
26
26
|
collectionsJoins: {};
|
|
27
27
|
collectionsSelect: {
|
|
28
28
|
users: UsersSelect<false> | UsersSelect<true>;
|
|
29
|
-
|
|
29
|
+
uploads: UploadsSelect<false> | UploadsSelect<true>;
|
|
30
30
|
'payload-kv': PayloadKvSelect<false> | PayloadKvSelect<true>;
|
|
31
31
|
'payload-locked-documents': PayloadLockedDocumentsSelect<false> | PayloadLockedDocumentsSelect<true>;
|
|
32
32
|
'payload-preferences': PayloadPreferencesSelect<false> | PayloadPreferencesSelect<true>;
|
|
@@ -36,8 +36,12 @@ export interface Config {
|
|
|
36
36
|
defaultIDType: string;
|
|
37
37
|
};
|
|
38
38
|
fallbackLocale: null;
|
|
39
|
-
globals: {
|
|
40
|
-
|
|
39
|
+
globals: {
|
|
40
|
+
messages: Message;
|
|
41
|
+
};
|
|
42
|
+
globalsSelect: {
|
|
43
|
+
messages: MessagesSelect<false> | MessagesSelect<true>;
|
|
44
|
+
};
|
|
41
45
|
locale: null;
|
|
42
46
|
user: User & {
|
|
43
47
|
collection: 'users';
|
|
@@ -89,14 +93,10 @@ export interface User {
|
|
|
89
93
|
}
|
|
90
94
|
/**
|
|
91
95
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
92
|
-
* via the `definition` "
|
|
96
|
+
* via the `definition` "uploads".
|
|
93
97
|
*/
|
|
94
|
-
export interface
|
|
98
|
+
export interface Upload {
|
|
95
99
|
id: string;
|
|
96
|
-
locale: string;
|
|
97
|
-
data?: {
|
|
98
|
-
[k: string]: unknown;
|
|
99
|
-
} | unknown[] | string | number | boolean | null;
|
|
100
100
|
updatedAt: string;
|
|
101
101
|
createdAt: string;
|
|
102
102
|
url?: string | null;
|
|
@@ -130,8 +130,8 @@ export interface PayloadLockedDocument {
|
|
|
130
130
|
relationTo: 'users';
|
|
131
131
|
value: string | User;
|
|
132
132
|
} | null) | ({
|
|
133
|
-
relationTo: '
|
|
134
|
-
value: string |
|
|
133
|
+
relationTo: 'uploads';
|
|
134
|
+
value: string | Upload;
|
|
135
135
|
} | null);
|
|
136
136
|
globalSlug?: string | null;
|
|
137
137
|
user: {
|
|
@@ -191,11 +191,9 @@ export interface UsersSelect<T extends boolean = true> {
|
|
|
191
191
|
}
|
|
192
192
|
/**
|
|
193
193
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
194
|
-
* via the `definition` "
|
|
194
|
+
* via the `definition` "uploads_select".
|
|
195
195
|
*/
|
|
196
|
-
export interface
|
|
197
|
-
locale?: T;
|
|
198
|
-
data?: T;
|
|
196
|
+
export interface UploadsSelect<T extends boolean = true> {
|
|
199
197
|
updatedAt?: T;
|
|
200
198
|
createdAt?: T;
|
|
201
199
|
url?: T;
|
|
@@ -248,6 +246,35 @@ export interface PayloadMigrationsSelect<T extends boolean = true> {
|
|
|
248
246
|
updatedAt?: T;
|
|
249
247
|
createdAt?: T;
|
|
250
248
|
}
|
|
249
|
+
/**
|
|
250
|
+
* This interface was referenced by `Config`'s JSON-Schema
|
|
251
|
+
* via the `definition` "messages".
|
|
252
|
+
*/
|
|
253
|
+
export interface Message {
|
|
254
|
+
id: string;
|
|
255
|
+
data: MessagesData;
|
|
256
|
+
file?: (string | null) | Upload;
|
|
257
|
+
updatedAt?: string | null;
|
|
258
|
+
createdAt?: string | null;
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* This interface was referenced by `Config`'s JSON-Schema
|
|
262
|
+
* via the `definition` "MessagesData".
|
|
263
|
+
*/
|
|
264
|
+
export interface MessagesData {
|
|
265
|
+
[k: string]: MessagesData | string;
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* This interface was referenced by `Config`'s JSON-Schema
|
|
269
|
+
* via the `definition` "messages_select".
|
|
270
|
+
*/
|
|
271
|
+
export interface MessagesSelect<T extends boolean = true> {
|
|
272
|
+
data?: T;
|
|
273
|
+
file?: T;
|
|
274
|
+
updatedAt?: T;
|
|
275
|
+
createdAt?: T;
|
|
276
|
+
globalType?: T;
|
|
277
|
+
}
|
|
251
278
|
/**
|
|
252
279
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
253
280
|
* via the `definition` "auth".
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payload-types.d.ts","sourceRoot":"","sources":["../src/payload-types.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH;;;;;GAKG;AACH,MAAM,MAAM,kBAAkB,GAC1B,gBAAgB,GAChB,cAAc,GACd,kBAAkB,GAClB,mBAAmB,GACnB,mBAAmB,GACnB,iBAAiB,GACjB,qBAAqB,GACrB,iBAAiB,GACjB,gBAAgB,GAChB,iBAAiB,GACjB,iBAAiB,GACjB,mBAAmB,GACnB,kBAAkB,GAClB,gBAAgB,GAChB,iBAAiB,GACjB,kBAAkB,GAClB,sBAAsB,GACtB,mBAAmB,GACnB,wBAAwB,GACxB,iBAAiB,GACjB,qBAAqB,GACrB,eAAe,GACf,eAAe,GACf,cAAc,GACd,eAAe,GACf,cAAc,GACd,eAAe,GACf,aAAa,GACb,YAAY,GACZ,WAAW,GACX,cAAc,GACd,eAAe,GACf,eAAe,GACf,YAAY,GACZ,aAAa,GACb,cAAc,GACd,cAAc,GACd,eAAe,GACf,gBAAgB,GAChB,YAAY,GACZ,YAAY,GACZ,oBAAoB,GACpB,kBAAkB,GAClB,cAAc,GACd,gBAAgB,GAChB,kBAAkB,GAClB,cAAc,CAAC;AAEnB,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE;QACJ,KAAK,EAAE,kBAAkB,CAAC;KAC3B,CAAC;IACF,MAAM,EAAE,EAAE,CAAC;IACX,WAAW,EAAE;QACX,KAAK,EAAE,IAAI,CAAC;QACZ,
|
|
1
|
+
{"version":3,"file":"payload-types.d.ts","sourceRoot":"","sources":["../src/payload-types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,20 +1,36 @@
|
|
|
1
1
|
import type { LiteralElement, MessageFormatElement, PoundElement } from '@formatjs/icu-messageformat-parser';
|
|
2
|
-
import type { CollectionConfig, PayloadRequest } from 'payload';
|
|
2
|
+
import type { CollectionConfig, GlobalSlug, PayloadRequest } from 'payload';
|
|
3
3
|
import type { DeepPartial } from 'react-hook-form';
|
|
4
4
|
import type { MessagesPluginConfig } from '.';
|
|
5
|
-
export type ResolvedPluginOptions<K extends keyof MessagesPluginConfig = keyof MessagesPluginConfig
|
|
5
|
+
export type ResolvedPluginOptions<K extends keyof MessagesPluginConfig<MessagesSchema> = keyof MessagesPluginConfig<MessagesSchema>> = Pick<Required<MessagesPluginConfig<MessagesSchema>>, K>;
|
|
6
6
|
export type MessagesHooks = {
|
|
7
7
|
afterUpdate?: () => Promise<void> | void;
|
|
8
8
|
} & CollectionConfig['hooks'];
|
|
9
|
-
export
|
|
10
|
-
|
|
9
|
+
export interface TabScopeConfig {
|
|
10
|
+
position: 'tab';
|
|
11
|
+
existingFieldsTabLabel?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface SidebarScopeConfig {
|
|
14
|
+
position: 'sidebar';
|
|
15
|
+
}
|
|
16
|
+
export type ScopeConfig = TabScopeConfig | SidebarScopeConfig;
|
|
17
|
+
export type ScopePosition = ScopeConfig['position'];
|
|
18
|
+
export type ScopeKey<Schema extends MessagesSchema> = {
|
|
19
|
+
[K in keyof Schema & GlobalSlug]: Schema[K] extends object ? K : never;
|
|
20
|
+
}[keyof Schema & GlobalSlug];
|
|
21
|
+
export type MessagesScopesConfig<Scope extends string = string> = Scope[] | Record<Scope, ScopeConfig | ScopePosition>;
|
|
22
|
+
export type TypedMessagesScopesConfig<Schema extends MessagesSchema = MessagesSchema> = MessagesScopesConfig<ScopeKey<Schema>>;
|
|
23
|
+
export type EditorAccessGuard = (req: Pick<PayloadRequest, 'user'>) => boolean;
|
|
11
24
|
export type Locale = string;
|
|
12
25
|
export type Translations<T> = Record<Locale, T>;
|
|
13
|
-
export type Messages
|
|
14
|
-
[key: string]: Messages
|
|
26
|
+
export type Messages = {
|
|
27
|
+
[key: string]: Messages | string;
|
|
28
|
+
};
|
|
29
|
+
export type MessagesSchema = Messages;
|
|
30
|
+
export type MessageConfig = {
|
|
31
|
+
description: string | undefined;
|
|
32
|
+
variables: TemplateVariable[];
|
|
15
33
|
};
|
|
16
|
-
export type MessageSchema = string;
|
|
17
|
-
export type MessagesSchema = Messages<MessageSchema>;
|
|
18
34
|
export interface VariableMentionNodeAttrs {
|
|
19
35
|
name: string;
|
|
20
36
|
label: string;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,oBAAoB,EACpB,YAAY,EACb,MAAM,oCAAoC,CAAC;AAC5C,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,oBAAoB,EACpB,YAAY,EACb,MAAM,oCAAoC,CAAC;AAC5C,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC5E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,GAAG,CAAC;AAG9C,MAAM,MAAM,qBAAqB,CAC/B,CAAC,SACC,MAAM,oBAAoB,CAAC,cAAc,CAAC,GAAG,MAAM,oBAAoB,CAAC,cAAc,CAAC,IACvF,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAE5D,MAAM,MAAM,aAAa,GAAG;IAC1B,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAC1C,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAI9B,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,KAAK,CAAC;IAChB,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,MAAM,MAAM,WAAW,GAAG,cAAc,GAAG,kBAAkB,CAAC;AAE9D,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;AAEpD,MAAM,MAAM,QAAQ,CAAC,MAAM,SAAS,cAAc,IAAI;KACnD,CAAC,IAAI,MAAM,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,SAAS,MAAM,GAAG,CAAC,GAAG,KAAK;CACvE,CAAC,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC;AAE7B,MAAM,MAAM,oBAAoB,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM,IAC1D,KAAK,EAAE,GACP,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,aAAa,CAAC,CAAC;AAE/C,MAAM,MAAM,yBAAyB,CACnC,MAAM,SAAS,cAAc,GAAG,cAAc,IAC5C,oBAAoB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AAE3C,MAAM,MAAM,iBAAiB,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,KAAK,OAAO,CAAC;AAI/E,MAAM,MAAM,MAAM,GAAG,MAAM,CAAC;AAE5B,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAEhD,MAAM,MAAM,QAAQ,GAAG;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC;AAEtC,MAAM,MAAM,aAAa,GAAG;IAC1B,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,SAAS,EAAE,gBAAgB,EAAE,CAAC;CAC/B,CAAC;AAEF,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAED,YAAY,EAAE,WAAW,EAAE,CAAC;AAE5B,MAAM,MAAM,gBAAgB,GAAG,OAAO,CACpC,oBAAoB,EACpB,cAAc,GAAG,YAAY,CAC9B,CAAC;AAEF,YAAY,EACV,eAAe,EACf,WAAW,EACX,cAAc,EACd,aAAa,EACb,aAAa,EACb,aAAa,EACb,UAAU,EACV,WAAW,GACZ,MAAM,oCAAoC,CAAC"}
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/types.ts"],"sourcesContent":["import type {\n LiteralElement,\n MessageFormatElement,\n PoundElement,\n} from '@formatjs/icu-messageformat-parser';\nimport type { CollectionConfig, PayloadRequest } from 'payload';\nimport type { DeepPartial } from 'react-hook-form';\nimport type { MessagesPluginConfig } from '.';\n\nexport type ResolvedPluginOptions<\n K extends
|
|
1
|
+
{"version":3,"sources":["../src/types.ts"],"sourcesContent":["import type {\n LiteralElement,\n MessageFormatElement,\n PoundElement,\n} from '@formatjs/icu-messageformat-parser';\nimport type { CollectionConfig, GlobalSlug, PayloadRequest } from 'payload';\nimport type { DeepPartial } from 'react-hook-form';\nimport type { MessagesPluginConfig } from '.';\nimport type { User } from './payload-types';\n\nexport type ResolvedPluginOptions<\n K extends\n keyof MessagesPluginConfig<MessagesSchema> = keyof MessagesPluginConfig<MessagesSchema>,\n> = Pick<Required<MessagesPluginConfig<MessagesSchema>>, K>;\n\nexport type MessagesHooks = {\n afterUpdate?: () => Promise<void> | void;\n} & CollectionConfig['hooks'];\n\n/* MARK: Scope */\n\nexport interface TabScopeConfig {\n position: 'tab';\n existingFieldsTabLabel?: string;\n}\n\nexport interface SidebarScopeConfig {\n position: 'sidebar';\n}\n\nexport type ScopeConfig = TabScopeConfig | SidebarScopeConfig;\n\nexport type ScopePosition = ScopeConfig['position'];\n\nexport type ScopeKey<Schema extends MessagesSchema> = {\n [K in keyof Schema & GlobalSlug]: Schema[K] extends object ? K : never;\n}[keyof Schema & GlobalSlug];\n\nexport type MessagesScopesConfig<Scope extends string = string> =\n | Scope[]\n | Record<Scope, ScopeConfig | ScopePosition>;\n\nexport type TypedMessagesScopesConfig<\n Schema extends MessagesSchema = MessagesSchema,\n> = MessagesScopesConfig<ScopeKey<Schema>>;\n\nexport type EditorAccessGuard = (req: Pick<PayloadRequest, 'user'>) => boolean;\n\n/* MARK: Messages */\n\nexport type Locale = string;\n\nexport type Translations<T> = Record<Locale, T>;\n\nexport type Messages = {\n [key: string]: Messages | string;\n};\n\nexport type MessagesSchema = Messages;\n\nexport type MessageConfig = {\n description: string | undefined;\n variables: TemplateVariable[];\n};\n\nexport interface VariableMentionNodeAttrs {\n name: string;\n label: string;\n icu: string;\n}\n\nexport type { DeepPartial };\n\nexport type TemplateVariable = Exclude<\n MessageFormatElement,\n LiteralElement | PoundElement\n>;\n\nexport type {\n ArgumentElement,\n DateElement,\n LiteralElement,\n NumberElement,\n PluralElement,\n SelectElement,\n TagElement,\n TimeElement,\n} from '@formatjs/icu-messageformat-parser';\n"],"names":[],"mappings":"AA8EA,WAS4C"}
|