@plumile/backoffice-core 0.1.104 → 0.1.106

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.
Files changed (76) hide show
  1. package/lib/esm/base64.d.ts.map +1 -1
  2. package/lib/esm/base64.js +12 -1
  3. package/lib/esm/billing.d.ts +25 -0
  4. package/lib/esm/billing.d.ts.map +1 -0
  5. package/lib/esm/billing.js +34 -0
  6. package/lib/esm/builders.d.ts +85 -3
  7. package/lib/esm/builders.d.ts.map +1 -1
  8. package/lib/esm/builders.js +206 -6
  9. package/lib/esm/config/columns.d.ts +15 -0
  10. package/lib/esm/config/columns.d.ts.map +1 -0
  11. package/lib/esm/config/columns.js +163 -0
  12. package/lib/esm/config/detail.d.ts +43 -0
  13. package/lib/esm/config/detail.d.ts.map +1 -0
  14. package/lib/esm/config/detail.js +122 -0
  15. package/lib/esm/config/filters.d.ts +41 -0
  16. package/lib/esm/config/filters.d.ts.map +1 -0
  17. package/lib/esm/config/filters.js +98 -0
  18. package/lib/esm/config/list.d.ts +2 -0
  19. package/lib/esm/config/list.d.ts.map +1 -0
  20. package/lib/esm/config/list.js +14 -0
  21. package/lib/esm/config/record.d.ts +10 -0
  22. package/lib/esm/config/record.d.ts.map +1 -0
  23. package/lib/esm/config/record.js +147 -0
  24. package/lib/esm/config/sorts.d.ts +8 -0
  25. package/lib/esm/config/sorts.d.ts.map +1 -0
  26. package/lib/esm/config/sorts.js +10 -0
  27. package/lib/esm/filters/schema.d.ts.map +1 -1
  28. package/lib/esm/filters/schema.js +5 -2
  29. package/lib/esm/index.d.ts +8 -0
  30. package/lib/esm/index.d.ts.map +1 -1
  31. package/lib/esm/index.js +9 -1
  32. package/lib/esm/resolve.d.ts +4 -3
  33. package/lib/esm/resolve.d.ts.map +1 -1
  34. package/lib/esm/resolve.js +1 -1
  35. package/lib/esm/state/buildListHref.d.ts.map +1 -1
  36. package/lib/esm/state/buildListHref.js +5 -3
  37. package/lib/esm/taskState.d.ts +15 -0
  38. package/lib/esm/taskState.d.ts.map +1 -0
  39. package/lib/esm/taskState.js +22 -0
  40. package/lib/esm/type-tests/operation-bound-config.test-d.d.ts +6 -0
  41. package/lib/esm/type-tests/operation-bound-config.test-d.d.ts.map +1 -0
  42. package/lib/esm/type-tests/operation-bound-config.test-d.js +169 -0
  43. package/lib/esm/types.d.ts +110 -44
  44. package/lib/esm/types.d.ts.map +1 -1
  45. package/lib/esm/types.js +1 -1
  46. package/lib/tsconfig.esm.tsbuildinfo +1 -1
  47. package/lib/types/base64.d.ts.map +1 -1
  48. package/lib/types/billing.d.ts +25 -0
  49. package/lib/types/billing.d.ts.map +1 -0
  50. package/lib/types/builders.d.ts +85 -3
  51. package/lib/types/builders.d.ts.map +1 -1
  52. package/lib/types/config/columns.d.ts +15 -0
  53. package/lib/types/config/columns.d.ts.map +1 -0
  54. package/lib/types/config/detail.d.ts +43 -0
  55. package/lib/types/config/detail.d.ts.map +1 -0
  56. package/lib/types/config/filters.d.ts +41 -0
  57. package/lib/types/config/filters.d.ts.map +1 -0
  58. package/lib/types/config/list.d.ts +2 -0
  59. package/lib/types/config/list.d.ts.map +1 -0
  60. package/lib/types/config/record.d.ts +10 -0
  61. package/lib/types/config/record.d.ts.map +1 -0
  62. package/lib/types/config/sorts.d.ts +8 -0
  63. package/lib/types/config/sorts.d.ts.map +1 -0
  64. package/lib/types/filters/schema.d.ts.map +1 -1
  65. package/lib/types/index.d.ts +8 -0
  66. package/lib/types/index.d.ts.map +1 -1
  67. package/lib/types/resolve.d.ts +4 -3
  68. package/lib/types/resolve.d.ts.map +1 -1
  69. package/lib/types/state/buildListHref.d.ts.map +1 -1
  70. package/lib/types/taskState.d.ts +15 -0
  71. package/lib/types/taskState.d.ts.map +1 -0
  72. package/lib/types/type-tests/operation-bound-config.test-d.d.ts +6 -0
  73. package/lib/types/type-tests/operation-bound-config.test-d.d.ts.map +1 -0
  74. package/lib/types/types.d.ts +110 -44
  75. package/lib/types/types.d.ts.map +1 -1
  76. package/package.json +12 -2
@@ -0,0 +1,163 @@
1
+ const isDateColumn = (key) => {
2
+ return key.endsWith('At') || key.endsWith('Date');
3
+ };
4
+ const TECHNICAL_KEY_PARTS = [
5
+ 'id',
6
+ 'sha',
7
+ 'hash',
8
+ 'token',
9
+ 'payload',
10
+ 'json',
11
+ 'raw',
12
+ 'credential',
13
+ 'fingerprint',
14
+ 'cloneUrl',
15
+ ];
16
+ const STATUS_KEY_PARTS = [
17
+ 'status',
18
+ 'state',
19
+ 'kind',
20
+ 'level',
21
+ 'locked',
22
+ 'risk',
23
+ ];
24
+ const RELATION_KEY_PARTS = [
25
+ 'organization',
26
+ 'group',
27
+ 'project',
28
+ 'initiative',
29
+ 'task',
30
+ 'user',
31
+ 'conversation',
32
+ 'account',
33
+ ];
34
+ const METRIC_KEY_PARTS = [
35
+ 'count',
36
+ 'amount',
37
+ 'total',
38
+ 'billing',
39
+ 'cost',
40
+ 'quantity',
41
+ 'category',
42
+ ];
43
+ const matchesKeyPart = (key, parts) => {
44
+ const normalized = key.toLowerCase();
45
+ return parts.some((part) => {
46
+ return normalized.includes(part.toLowerCase());
47
+ });
48
+ };
49
+ const resolveDefaultVisibility = (key, index) => {
50
+ if (index === 0) {
51
+ return {
52
+ priority: 'primary',
53
+ mobile: 'title',
54
+ };
55
+ }
56
+ if (matchesKeyPart(key, TECHNICAL_KEY_PARTS)) {
57
+ return {
58
+ priority: 'debug',
59
+ mobile: 'hidden',
60
+ minVisibleAt: 'lg',
61
+ debugOnly: true,
62
+ };
63
+ }
64
+ if (matchesKeyPart(key, STATUS_KEY_PARTS)) {
65
+ return {
66
+ priority: 'important',
67
+ mobile: 'status',
68
+ minVisibleAt: 'sm',
69
+ };
70
+ }
71
+ if (matchesKeyPart(key, METRIC_KEY_PARTS) || isDateColumn(key)) {
72
+ return {
73
+ priority: 'secondary',
74
+ align: 'right',
75
+ mobile: 'meta',
76
+ minVisibleAt: 'md',
77
+ };
78
+ }
79
+ if (matchesKeyPart(key, RELATION_KEY_PARTS)) {
80
+ return {
81
+ priority: 'important',
82
+ mobile: 'subtitle',
83
+ minVisibleAt: 'md',
84
+ };
85
+ }
86
+ return {
87
+ priority: 'secondary',
88
+ mobile: 'meta',
89
+ minVisibleAt: 'lg',
90
+ };
91
+ };
92
+ const readColumnValue = (row, columnId) => {
93
+ const direct = row[columnId];
94
+ if (typeof direct === 'string' || typeof direct === 'number') {
95
+ return direct;
96
+ }
97
+ if (Array.isArray(direct)) {
98
+ return direct.length;
99
+ }
100
+ if (columnId.endsWith('s')) {
101
+ const countKey = `${columnId.slice(0, -1)}Count`;
102
+ const countValue = row[countKey];
103
+ if (typeof countValue === 'number') {
104
+ return countValue;
105
+ }
106
+ }
107
+ return null;
108
+ };
109
+ const buildDefaultCell = (columnId) => {
110
+ if (columnId === 'id') {
111
+ return {
112
+ type: 'text',
113
+ value: () => {
114
+ return '';
115
+ },
116
+ };
117
+ }
118
+ if (isDateColumn(columnId)) {
119
+ return {
120
+ type: 'dateTime',
121
+ value: (row) => {
122
+ const value = row[columnId];
123
+ if (typeof value === 'string' || typeof value === 'number') {
124
+ return value;
125
+ }
126
+ return null;
127
+ },
128
+ };
129
+ }
130
+ return {
131
+ type: 'text',
132
+ value: (row) => {
133
+ return readColumnValue(row, columnId);
134
+ },
135
+ };
136
+ };
137
+ export const defineColumns = () => {
138
+ return (columns, options) => {
139
+ const defaultCell = options.defaultCell ?? 'auto';
140
+ const filteredColumns = columns.filter((column) => {
141
+ return column.key !== 'id';
142
+ });
143
+ return filteredColumns.map((column, index) => {
144
+ const { cell: columnCell, copy, header, key, size, visibility } = column;
145
+ let cell = columnCell ?? null;
146
+ if (cell == null && defaultCell === 'auto') {
147
+ cell = buildDefaultCell(key);
148
+ }
149
+ if (cell == null) {
150
+ throw new Error(`Missing cell definition for column "${key}" in ${options.entity}.`);
151
+ }
152
+ return {
153
+ key,
154
+ size,
155
+ header,
156
+ copy,
157
+ cell,
158
+ visibility: visibility ?? resolveDefaultVisibility(key, index),
159
+ };
160
+ });
161
+ };
162
+ };
163
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb25maWcvY29sdW1ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxNQUFNLFlBQVksR0FBRyxDQUFDLEdBQVcsRUFBVyxFQUFFO0lBQzVDLE9BQU8sR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3BELENBQUMsQ0FBQztBQUVGLE1BQU0sbUJBQW1CLEdBQUc7SUFDMUIsSUFBSTtJQUNKLEtBQUs7SUFDTCxNQUFNO0lBQ04sT0FBTztJQUNQLFNBQVM7SUFDVCxNQUFNO0lBQ04sS0FBSztJQUNMLFlBQVk7SUFDWixhQUFhO0lBQ2IsVUFBVTtDQUNGLENBQUM7QUFFWCxNQUFNLGdCQUFnQixHQUFHO0lBQ3ZCLFFBQVE7SUFDUixPQUFPO0lBQ1AsTUFBTTtJQUNOLE9BQU87SUFDUCxRQUFRO0lBQ1IsTUFBTTtDQUNFLENBQUM7QUFFWCxNQUFNLGtCQUFrQixHQUFHO0lBQ3pCLGNBQWM7SUFDZCxPQUFPO0lBQ1AsU0FBUztJQUNULFlBQVk7SUFDWixNQUFNO0lBQ04sTUFBTTtJQUNOLGNBQWM7SUFDZCxTQUFTO0NBQ0QsQ0FBQztBQUVYLE1BQU0sZ0JBQWdCLEdBQUc7SUFDdkIsT0FBTztJQUNQLFFBQVE7SUFDUixPQUFPO0lBQ1AsU0FBUztJQUNULE1BQU07SUFDTixVQUFVO0lBQ1YsVUFBVTtDQUNGLENBQUM7QUFFWCxNQUFNLGNBQWMsR0FBRyxDQUFDLEdBQVcsRUFBRSxLQUF3QixFQUFXLEVBQUU7SUFDeEUsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JDLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1FBQ3pCLE9BQU8sVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMs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SSxHQUFHLGdCQUFnQixDQUFvQixHQUFHLENBQUMsQ0FBQztZQUNsRCxDQUFDO1lBRUQsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQ2IsdUNBQXVDLEdBQUcsUUFBUSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQ3BFLENBQUM7WUFDSixDQUFDO1lBRUQsT0FBTztnQkFDTCxHQUFHO2dCQUNILElBQUk7Z0JBQ0osTUFBTTtnQkFDTixJQUFJO2dCQUNKLElBQUk7Z0JBQ0osVUFBVSxFQUFFLFVBQVUsSUFBSSx3QkFBd0IsQ0FBVSxHQUFHLEVBQUUsS0FBSyxDQUFDO2FBQ3hFLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcbiAgQmFja29mZmljZUNvbHVtblNwZWMsXG4gIEJhY2tvZmZpY2VGaWVsZFNpemUsXG4gIEkxOG5MYWJlbCxcbn0gZnJvbSAnLi4vdHlwZXMuanMnO1xuXG5jb25zdCBpc0RhdGVDb2x1bW4gPSAoa2V5OiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgcmV0dXJuIGtleS5lbmRzV2l0aCgnQXQnKSB8fCBrZXkuZW5kc1dpdGgoJ0RhdGUnKTtcbn07XG5cbmNvbnN0IFRFQ0hOSUNBTF9LRVlfUEFSVFMgPSBbXG4gICdpZCcsXG4gICdzaGEnLFxuICAnaGFzaCcsXG4gICd0b2tlbicsXG4gICdwYXlsb2FkJyxcbiAgJ2pzb24nLFxuICAncmF3JyxcbiAgJ2NyZWRlbnRpYWwnLFxuICAnZmluZ2VycHJpbnQnLFxuICAnY2xvbmVVcmwnLFxuXSBhcyBjb25zdDtcblxuY29uc3QgU1RBVFVTX0tFWV9QQVJUUyA9IFtcbiAgJ3N0YXR1cycsXG4gICdzdGF0ZScsXG4gICdraW5kJyxcbiAgJ2xldmVsJyxcbiAgJ2xvY2tlZCcsXG4gICdyaXNrJyxcbl0gYXMgY29uc3Q7XG5cbmNvbnN0IFJFTEFUSU9OX0tFWV9QQVJUUyA9IFtcbiAgJ29yZ2FuaXphdGlvbicsXG4gICdncm91cCcsXG4gICdwcm9qZWN0JyxcbiAgJ2luaXRpYXRpdmUnLFxuICAndGFzaycsXG4gICd1c2VyJyxcbiAgJ2NvbnZlcnNhdGlvbicsXG4gICdhY2NvdW50Jyxcbl0gYXMgY29uc3Q7XG5cbmNvbnN0IE1FVFJJQ19LRVlfUEFSVFMgPSBbXG4gICdjb3VudCcsXG4gICdhbW91bnQnLFxuICAndG90YWwnLFxuICAnYmlsbGluZycsXG4gICdjb3N0JyxcbiAgJ3F1YW50aXR5JyxcbiAgJ2NhdGVnb3J5Jyxcbl0gYXMgY29uc3Q7XG5cbmNvbnN0IG1hdGNoZXNLZXlQYXJ0ID0gKGtleTogc3RyaW5nLCBwYXJ0czogcmVhZG9ubHkgc3RyaW5nW10pOiBib29sZWFuID0+IHtcbiAgY29uc3Qgbm9ybWFsaXplZCA9IGtleS50b0xvd2VyQ2FzZSgpO1xuICByZXR1cm4gcGFydHMuc29tZSgocGFydCkgPT4ge1xuICAgIHJldHVybiBub3JtYWxpemVkLmluY2x1ZGVzKHBhcnQudG9Mb3dlckNhc2UoKSk7XG4gIH0pO1xufTtcblxuY29uc3QgcmVzb2x2ZURlZmF1bHRWaXNpYmlsaXR5ID0gPFJvd1ZpZXcgZXh0ZW5kcyBvYmplY3Q+KFxuICBrZXk6IHN0cmluZyxcbiAgaW5kZXg6IG51bWJlcixcbik6IEJhY2tvZmZpY2VDb2x1bW5TcGVjPFJvd1ZpZXc+Wyd2aXNpYmlsaXR5J10gPT4ge1xuICBpZiAoaW5kZXggPT09IDApIHtcbiAgICByZXR1cm4ge1xuICAgICAgcHJpb3JpdHk6ICdwcmltYXJ5JyxcbiAgICAgIG1vYmlsZTogJ3RpdGxlJyxcbiAgICB9O1xuICB9XG5cbiAgaWYgKG1hdGNoZXNLZXlQYXJ0KGtleSwgVEVDSE5JQ0FMX0tFWV9QQVJUUykpIHtcbiAgICByZXR1cm4ge1xuICAgICAgcHJpb3JpdHk6ICdkZWJ1ZycsXG4gICAgICBtb2JpbGU6ICdoaWRkZW4nLFxuICAgICAgbWluVmlzaWJsZUF0OiAnbGcnLFxuICAgICAgZGVidWdPbmx5OiB0cnVlLFxuICAgIH07XG4gIH1cblxuICBpZiAobWF0Y2hlc0tleVBhcnQoa2V5LCBTVEFUVVNfS0VZX1BBUlRTKSkge1xuICAgIHJldHVybiB7XG4gICAgICBwcmlvcml0eTogJ2ltcG9ydGFudCcsXG4gICAgICBtb2JpbGU6ICdzdGF0dXMnLFxuICAgICAgbWluVmlzaWJsZUF0OiAnc20nLFxuICAgIH07XG4gIH1cblxuICBpZiAobWF0Y2hlc0tleVBhcnQoa2V5LCBNRVRSSUNfS0VZX1BBUlRTKSB8fCBpc0RhdGVDb2x1bW4oa2V5KSkge1xuICAgIHJldHVybiB7XG4gICAgICBwcmlvcml0eTogJ3NlY29uZGFyeScsXG4gICAgICBhbGlnbjogJ3JpZ2h0JyxcbiAgICAgIG1vYmlsZTogJ21ldGEnLFxuICAgICAgbWluVmlzaWJsZUF0OiAnbWQnLFxuICAgIH07XG4gIH1cblxuICBpZiAobWF0Y2hlc0tleVBhcnQoa2V5LCBSRUxBVElPTl9LRVlfUEFSVFMpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHByaW9yaXR5OiAnaW1wb3J0YW50JyxcbiAgICAgIG1vYmlsZTogJ3N1YnRpdGxlJyxcbiAgICAgIG1pblZpc2libGVBdDogJ21kJyxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBwcmlvcml0eTogJ3NlY29uZGFyeScsXG4gICAgbW9iaWxlOiAnbWV0YScsXG4gICAgbWluVmlzaWJsZUF0OiAnbGcnLFxuICB9O1xufTtcblxuY29uc3QgcmVhZENvbHVtblZhbHVlID0gPFxuICBSb3dWaWV3IGV4dGVuZHMgb2JqZWN0LFxuICBDb2x1bW5JZCBleHRlbmRzIGtleW9mIFJvd1ZpZXcgJiBzdHJpbmcsXG4+KFxuICByb3c6IFJvd1ZpZXcsXG4gIGNvbHVtbklkOiBDb2x1bW5JZCxcbik6IHN0cmluZyB8IG51bWJlciB8IG51bGwgPT4ge1xuICBjb25zdCBkaXJlY3QgPSByb3dbY29sdW1uSWRdO1xuICBpZiAodHlwZW9mIGRpcmVjdCA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIGRpcmVjdCA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gZGlyZWN0O1xuICB9XG4gIGlmIChBcnJheS5pc0FycmF5KGRpcmVjdCkpIHtcbiAgICByZXR1cm4gZGlyZWN0Lmxlbmd0aDtcbiAgfVxuICBpZiAoY29sdW1uSWQuZW5kc1dpdGgoJ3MnKSkge1xuICAgIGNvbnN0IGNvdW50S2V5ID0gYCR7Y29sdW1uSWQuc2xpY2UoMCwgLTEpfUNvdW50YCBhcyBrZXlvZiBSb3dWaWV3ICYgc3RyaW5nO1xuICAgIGNvbnN0IGNvdW50VmFsdWUgPSByb3dbY291bnRLZXldO1xuICAgIGlmICh0eXBlb2YgY291bnRWYWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybiBjb3VudFZhbHVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCB0eXBlIEJhY2tvZmZpY2VDb2x1bW5EZWZpbml0aW9uPFxuICBSb3dWaWV3LFxuICBDb2x1bW5JZCBleHRlbmRzIGtleW9mIFJvd1ZpZXcgJiBzdHJpbmcsXG4+ID0ge1xuICBrZXk6IENvbHVtbklkO1xuICBzaXplOiBCYWNrb2ZmaWNlRmllbGRTaXplO1xuICBoZWFkZXI6IEkxOG5MYWJlbDtcbiAgY29weT86IEJhY2tvZmZpY2VDb2x1bW5TcGVjPFJvd1ZpZXc+Wydjb3B5J107XG4gIGNlbGw/OiBCYWNrb2ZmaWNlQ29sdW1uU3BlYzxSb3dWaWV3PlsnY2VsbCddO1xuICB2aXNpYmlsaXR5PzogQmFja29mZmljZUNvbHVtblNwZWM8Um93Vmlldz5bJ3Zpc2liaWxpdHknXTtcbn07XG5cbmV4cG9ydCB0eXBlIERlZmluZUJhY2tvZmZpY2VDb2x1bW5zT3B0aW9ucyA9IHtcbiAgZW50aXR5OiBzdHJpbmc7XG4gIGRlZmF1bHRDZWxsPzogJ2F1dG8nIHwgJ25vbmUnO1xufTtcblxuY29uc3QgYnVpbGREZWZhdWx0Q2VsbCA9IDxcbiAgUm93VmlldyBleHRlbmRzIG9iamVjdCxcbiAgQ29sdW1uSWQgZXh0ZW5kcyBrZXlvZiBSb3dWaWV3ICYgc3RyaW5nLFxuPihcbiAgY29sdW1uSWQ6IENvbHVtbklkLFxuKTogQmFja29mZmljZUNvbHVtblNwZWM8Um93Vmlldz5bJ2NlbGwnXSA9PiB7XG4gIGlmIChjb2x1bW5JZCA9PT0gJ2lkJykge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAndGV4dCcsXG4gICAgICB2YWx1ZTogKCkgPT4ge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBpZiAoaXNEYXRlQ29sdW1uKGNvbHVtbklkKSkge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAnZGF0ZVRpbWUnLFxuICAgICAgdmFsdWU6IChyb3cpID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSByb3dbY29sdW1uSWRdO1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAndGV4dCcsXG4gICAgdmFsdWU6IChyb3cpID0+IHtcbiAgICAgIHJldHVybiByZWFkQ29sdW1uVmFsdWUocm93LCBjb2x1bW5JZCk7XG4gICAgfSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBkZWZpbmVDb2x1bW5zID0gPFJvd1ZpZXcgZXh0ZW5kcyBvYmplY3Q+KCkgPT4ge1xuICByZXR1cm4gPENvbHVtbklkIGV4dGVuZHMga2V5b2YgUm93VmlldyAmIHN0cmluZz4oXG4gICAgY29sdW1uczogcmVhZG9ubHkgQmFja29mZmljZUNvbHVtbkRlZmluaXRpb248Um93VmlldywgQ29sdW1uSWQ+W10sXG4gICAgb3B0aW9uczogRGVmaW5lQmFja29mZmljZUNvbHVtbnNPcHRpb25zLFxuICApOiByZWFkb25seSBCYWNrb2ZmaWNlQ29sdW1uU3BlYzxSb3dWaWV3PltdID0+IHtcbiAgICBjb25zdCBkZWZhdWx0Q2VsbCA9IG9wdGlvbnMuZGVmYXVsdENlbGwgPz8gJ2F1dG8nO1xuICAgIGNvbnN0IGZpbHRlcmVkQ29sdW1ucyA9IGNvbHVtbnMuZmlsdGVyKChjb2x1bW4pID0+IHtcbiAgICAgIHJldHVybiBjb2x1bW4ua2V5ICE9PSAnaWQnO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGZpbHRlcmVkQ29sdW1ucy5tYXAoKGNvbHVtbiwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IHsgY2VsbDogY29sdW1uQ2VsbCwgY29weSwgaGVhZGVyLCBrZXksIHNpemUsIHZpc2liaWxpdHkgfSA9IGNvbHVtbjtcbiAgICAgIGxldCBjZWxsID0gY29sdW1uQ2VsbCA/PyBudWxsO1xuXG4gICAgICBpZiAoY2VsbCA9PSBudWxsICYmIGRlZmF1bHRDZWxsID09PSAnYXV0bycpIHtcbiAgICAgICAgY2VsbCA9IGJ1aWxkRGVmYXVsdENlbGw8Um93VmlldywgQ29sdW1uSWQ+KGtleSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChjZWxsID09IG51bGwpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBNaXNzaW5nIGNlbGwgZGVmaW5pdGlvbiBmb3IgY29sdW1uIFwiJHtrZXl9XCIgaW4gJHtvcHRpb25zLmVudGl0eX0uYCxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAga2V5LFxuICAgICAgICBzaXplLFxuICAgICAgICBoZWFkZXIsXG4gICAgICAgIGNvcHksXG4gICAgICAgIGNlbGwsXG4gICAgICAgIHZpc2liaWxpdHk6IHZpc2liaWxpdHkgPz8gcmVzb2x2ZURlZmF1bHRWaXNpYmlsaXR5PFJvd1ZpZXc+KGtleSwgaW5kZXgpLFxuICAgICAgfTtcbiAgICB9KTtcbiAgfTtcbn07XG4iXX0=
@@ -0,0 +1,43 @@
1
+ import type { BackofficeDetailContentSpec, BackofficeDetailFieldSpec, BackofficeDetailHeaderConfig, I18nLabel } from '../types.js';
2
+ type DetailNodeTimestamps = {
3
+ createdAt?: string | number | null;
4
+ updatedAt?: string | number | null;
5
+ created?: {
6
+ at?: string | number | null;
7
+ } | null;
8
+ updated?: {
9
+ at?: string | number | null;
10
+ } | null;
11
+ };
12
+ export declare const resolveNodeFromQuery: <NodeRef>(data: {
13
+ node?: NodeRef | null;
14
+ }) => NodeRef | null;
15
+ export declare const readNodeId: <Node extends {
16
+ id: string;
17
+ }>(node: Node) => string | null;
18
+ export declare const readNodeTitle: <Node extends object>(node: Node) => string | null;
19
+ export declare const readNodeTimestamp: <Node extends DetailNodeTimestamps>(node: Node, key: "createdAt" | "updatedAt") => string | number | null;
20
+ export declare const buildBasicDetailFields: <Node extends {
21
+ id: string;
22
+ } & DetailNodeTimestamps>(options?: {
23
+ includeTimestamps?: boolean;
24
+ }) => readonly BackofficeDetailFieldSpec<Node>[];
25
+ export declare const buildBasicDetailContent: <Node extends {
26
+ id: string;
27
+ } & DetailNodeTimestamps>(title: I18nLabel, extraFields?: readonly BackofficeDetailFieldSpec<Node>[]) => readonly BackofficeDetailContentSpec<Node>[];
28
+ export declare const buildGenericDetailHeader: <Node extends {
29
+ id: string;
30
+ } & DetailNodeTimestamps>(options: {
31
+ title: I18nLabel;
32
+ subtitle?: I18nLabel;
33
+ }) => BackofficeDetailHeaderConfig<Node>;
34
+ export declare const resolveNodeFromConnection: <Row extends {
35
+ id: string;
36
+ }>(data: Record<string, unknown>, detailId: string | undefined, getConnection: (data: Record<string, unknown>) => {
37
+ edges: readonly {
38
+ node: Row;
39
+ }[];
40
+ }) => Row | null;
41
+ export declare const buildPayloadBlockLabel: () => I18nLabel;
42
+ export {};
43
+ //# sourceMappingURL=detail.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detail.d.ts","sourceRoot":"","sources":["../../../src/config/detail.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,2BAA2B,EAC3B,yBAAyB,EACzB,4BAA4B,EAC5B,SAAS,EACV,MAAM,aAAa,CAAC;AAsBrB,KAAK,oBAAoB,GAAG;IAC1B,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACnC,OAAO,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IACjD,OAAO,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;CAClD,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,OAAO,EAAE,MAAM;IAClD,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CACvB,KAAG,OAAO,GAAG,IAUb,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,IAAI,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EACpD,MAAM,IAAI,KACT,MAAM,GAAG,IAMX,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,IAAI,SAAS,MAAM,EAC/C,MAAM,IAAI,KACT,MAAM,GAAG,IAMX,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,IAAI,SAAS,oBAAoB,EACjE,MAAM,IAAI,EACV,KAAK,WAAW,GAAG,WAAW,KAC7B,MAAM,GAAG,MAAM,GAAG,IAiBpB,CAAC;AAEF,eAAO,MAAM,sBAAsB,GACjC,IAAI,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,oBAAoB,EAClD,UAAU;IACV,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,KAAG,SAAS,yBAAyB,CAAC,IAAI,CAAC,EAyB3C,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAClC,IAAI,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,oBAAoB,EAElD,OAAO,SAAS,EAChB,cAAa,SAAS,yBAAyB,CAAC,IAAI,CAAC,EAAO,KAC3D,SAAS,2BAA2B,CAAC,IAAI,CAAC,EAQ5C,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACnC,IAAI,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,oBAAoB,EAClD,SAAS;IACT,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,KAAG,4BAA4B,CAAC,IAAI,CAWpC,CAAC;AAEF,eAAO,MAAM,yBAAyB,GAAI,GAAG,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EAClE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,UAAU,MAAM,GAAG,SAAS,EAC5B,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK;IAChD,KAAK,EAAE,SAAS;QAAE,IAAI,EAAE,GAAG,CAAA;KAAE,EAAE,CAAC;CACjC,KACA,GAAG,GAAG,IAWR,CAAC;AAEF,eAAO,MAAM,sBAAsB,QAAO,SAIzC,CAAC"}
@@ -0,0 +1,122 @@
1
+ import RelayRuntime from 'relay-runtime';
2
+ import { readRecordValueByKeys } from './record.js';
3
+ const { FRAGMENTS_KEY } = RelayRuntime;
4
+ const CREATED_AT_LABEL = (t) => {
5
+ return t('backoffice.columns.createdAt');
6
+ };
7
+ const UPDATED_AT_LABEL = (t) => {
8
+ return t('backoffice.columns.updatedAt');
9
+ };
10
+ const TITLE_KEYS = [
11
+ 'name',
12
+ 'title',
13
+ 'label',
14
+ 'slug',
15
+ 'fullSlug',
16
+ 'email',
17
+ 'tokenId',
18
+ 'key',
19
+ ];
20
+ export const resolveNodeFromQuery = (data) => {
21
+ const { node } = data;
22
+ if (node == null || typeof node !== 'object') {
23
+ return null;
24
+ }
25
+ const { [FRAGMENTS_KEY]: fragmentMap } = node;
26
+ if (fragmentMap == null || typeof fragmentMap !== 'object') {
27
+ return null;
28
+ }
29
+ return node;
30
+ };
31
+ export const readNodeId = (node) => {
32
+ const value = node.id;
33
+ if (value.trim() !== '') {
34
+ return value;
35
+ }
36
+ return null;
37
+ };
38
+ export const readNodeTitle = (node) => {
39
+ const value = readRecordValueByKeys(node, TITLE_KEYS);
40
+ if (value == null) {
41
+ return null;
42
+ }
43
+ return String(value);
44
+ };
45
+ export const readNodeTimestamp = (node, key) => {
46
+ const direct = node[key];
47
+ if (typeof direct === 'string' || typeof direct === 'number') {
48
+ return direct;
49
+ }
50
+ let nestedKey = 'updated';
51
+ if (key === 'createdAt') {
52
+ nestedKey = 'created';
53
+ }
54
+ const nested = node[nestedKey];
55
+ if (nested != null && typeof nested === 'object') {
56
+ const { at } = nested;
57
+ if (typeof at === 'string' || typeof at === 'number') {
58
+ return at;
59
+ }
60
+ }
61
+ return null;
62
+ };
63
+ export const buildBasicDetailFields = (options) => {
64
+ const fields = [];
65
+ if (options?.includeTimestamps ?? true) {
66
+ fields.push({
67
+ type: 'dateTime',
68
+ size: 'm',
69
+ label: CREATED_AT_LABEL,
70
+ value: (node) => {
71
+ return readNodeTimestamp(node, 'createdAt');
72
+ },
73
+ }, {
74
+ type: 'dateTime',
75
+ size: 'm',
76
+ label: UPDATED_AT_LABEL,
77
+ value: (node) => {
78
+ return readNodeTimestamp(node, 'updatedAt');
79
+ },
80
+ });
81
+ }
82
+ return fields;
83
+ };
84
+ export const buildBasicDetailContent = (title, extraFields = []) => {
85
+ return [
86
+ {
87
+ kind: 'section',
88
+ title,
89
+ fields: [...extraFields, ...buildBasicDetailFields()],
90
+ },
91
+ ];
92
+ };
93
+ export const buildGenericDetailHeader = (options) => {
94
+ return {
95
+ title: options.title,
96
+ subtitle: options.subtitle ?? options.title,
97
+ titleValue: (node) => {
98
+ return readNodeTitle(node);
99
+ },
100
+ id: (node) => {
101
+ return readNodeId(node);
102
+ },
103
+ };
104
+ };
105
+ export const resolveNodeFromConnection = (data, detailId, getConnection) => {
106
+ const connection = getConnection(data);
107
+ const { edges } = connection;
108
+ if (detailId == null || detailId.trim() === '') {
109
+ return edges[0]?.node ?? null;
110
+ }
111
+ const match = edges.find((edge) => {
112
+ const id = readNodeId(edge.node);
113
+ return id === detailId;
114
+ });
115
+ return match?.node ?? null;
116
+ };
117
+ export const buildPayloadBlockLabel = () => {
118
+ return (t) => {
119
+ return t('backoffice.tools.output');
120
+ };
121
+ };
122
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0YWlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbmZpZy9kZXRhaWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxZQUFZLE1BQU0sZUFBZSxDQUFDO0FBUXpDLE9BQU8sRUFBRSxxQkFBcUIsRUFBc0IsTUFBTSxhQUFhLENBQUM7QUFFeEUsTUFBTSxFQUFFLGFBQWEsRUFBRSxHQUFHLFlBQVksQ0FBQztBQUV2QyxNQUFNLGdCQUFnQixHQUFjLENBQUMsQ0FBQyxFQUFFLEVBQUU7SUFDeEMsT0FBTyxDQUFDLENBQUMsOEJBQThCLENBQUMsQ0FBQztBQUMzQyxDQUFDLENBQUM7QUFDRixNQUFNLGdCQUFnQixHQUFjLENBQUMsQ0FBQyxFQUFFLEVBQUU7SUFDeEMsT0FBTyxDQUFDLENBQUMsOEJBQThCLENBQUMsQ0FBQztBQUMzQyxDQUFDLENBQUM7QUFDRixNQUFNLFVBQVUsR0FBRztJQUNqQixNQUFNO0lBQ04sT0FBTztJQUNQLE9BQU87SUFDUCxNQUFNO0lBQ04sVUFBVTtJQUNWLE9BQU87SUFDUCxTQUFTO0lBQ1QsS0FBSztDQUNHLENBQUM7QUFTWCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFVLElBRTdDLEVBQWtCLEVBQUU7SUFDbkIsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQztJQUN0QixJQUFJLElBQUksSUFBSSxJQUFJLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDN0MsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0QsTUFBTSxFQUFFLENBQUMsYUFBYSxDQUFDLEVBQUUsV0FBVyxFQUFFLEdBQUcsSUFBK0IsQ0FBQztJQUN6RSxJQUFJLFdBQVcsSUFBSSxJQUFJLElBQUksT0FBTyxXQUFXLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDM0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxD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RTtJQUNwRCxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUU7UUFDWCxPQUFPLENBQUMsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQ3RDLENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWxheVJ1bnRpbWUgZnJvbSAncmVsYXktcnVudGltZSc7XG5cbmltcG9ydCB0eXBlIHtcbiAgQmFja29mZmljZURldGFpbENvbnRlbnRTcGVjLFxuICBCYWNrb2ZmaWNlRGV0YWlsRmllbGRTcGVjLFxuICBCYWNrb2ZmaWNlRGV0YWlsSGVhZGVyQ29uZmlnLFxuICBJMThuTGFiZWwsXG59IGZyb20gJy4uL3R5cGVzLmpzJztcbmltcG9ydCB7IHJlYWRSZWNvcmRWYWx1ZUJ5S2V5cywgdHlwZSBVbmtub3duUmVjb3JkIH0gZnJvbSAnLi9yZWNvcmQuanMnO1xuXG5jb25zdCB7IEZSQUdNRU5UU19LRVkgfSA9IFJlbGF5UnVudGltZTtcblxuY29uc3QgQ1JFQVRFRF9BVF9MQUJFTDogSTE4bkxhYmVsID0gKHQpID0+IHtcbiAgcmV0dXJuIHQoJ2JhY2tvZmZpY2UuY29sdW1ucy5jcmVhdGVkQXQnKTtcbn07XG5jb25zdCBVUERBVEVEX0FUX0xBQkVMOiBJMThuTGFiZWwgPSAodCkgPT4ge1xuICByZXR1cm4gdCgnYmFja29mZmljZS5jb2x1bW5zLnVwZGF0ZWRBdCcpO1xufTtcbmNvbnN0IFRJVExFX0tFWVMgPSBbXG4gICduYW1lJyxcbiAgJ3RpdGxlJyxcbiAgJ2xhYmVsJyxcbiAgJ3NsdWcnLFxuICAnZnVsbFNsdWcnLFxuICAnZW1haWwnLFxuICAndG9rZW5JZCcsXG4gICdrZXknLFxuXSBhcyBjb25zdDtcblxudHlwZSBEZXRhaWxOb2RlVGltZXN0YW1wcyA9IHtcbiAgY3JlYXRlZEF0Pzogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbDtcbiAgdXBkYXRlZEF0Pzogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbDtcbiAgY3JlYXRlZD86IHsgYXQ/OiBzdHJpbmcgfCBudW1iZXIgfCBudWxsIH0gfCBudWxsO1xuICB1cGRhdGVkPzogeyBhdD86IHN0cmluZyB8IG51bWJlciB8IG51bGwgfSB8IG51bGw7XG59O1xuXG5leHBvcnQgY29uc3QgcmVzb2x2ZU5vZGVGcm9tUXVlcnkgPSA8Tm9kZVJlZj4oZGF0YToge1xuICBub2RlPzogTm9kZVJlZiB8IG51bGw7XG59KTogTm9kZVJlZiB8IG51bGwgPT4ge1xuICBjb25zdCB7IG5vZGUgfSA9IGRhdGE7XG4gIGlmIChub2RlID09IG51bGwgfHwgdHlwZW9mIG5vZGUgIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3QgeyBbRlJBR01FTlRTX0tFWV06IGZyYWdtZW50TWFwIH0gPSBub2RlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBpZiAoZnJhZ21lbnRNYXAgPT0gbnVsbCB8fCB0eXBlb2YgZnJhZ21lbnRNYXAgIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgcmV0dXJuIG5vZGU7XG59O1xuXG5leHBvcnQgY29uc3QgcmVhZE5vZGVJZCA9IDxOb2RlIGV4dGVuZHMgeyBpZDogc3RyaW5nIH0+KFxuICBub2RlOiBOb2RlLFxuKTogc3RyaW5nIHwgbnVsbCA9PiB7XG4gIGNvbnN0IHZhbHVlID0gbm9kZS5pZDtcbiAgaWYgKHZhbHVlLnRyaW0oKSAhPT0gJycpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5leHBvcnQgY29uc3QgcmVhZE5vZGVUaXRsZSA9IDxOb2RlIGV4dGVuZHMgb2JqZWN0PihcbiAgbm9kZTogTm9kZSxcbik6IHN0cmluZyB8IG51bGwgPT4ge1xuICBjb25zdCB2YWx1ZSA9IHJlYWRSZWNvcmRWYWx1ZUJ5S2V5cyhub2RlIGFzIFVua25vd25SZWNvcmQsIFRJVExFX0tFWVMpO1xuICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiBTdHJpbmcodmFsdWUpO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlYWROb2RlVGltZXN0YW1wID0gPE5vZGUgZXh0ZW5kcyBEZXRhaWxOb2RlVGltZXN0YW1wcz4oXG4gIG5vZGU6IE5vZGUsXG4gIGtleTogJ2NyZWF0ZWRBdCcgfCAndXBkYXRlZEF0Jyxcbik6IHN0cmluZyB8IG51bWJlciB8IG51bGwgPT4ge1xuICBjb25zdCBkaXJlY3QgPSBub2RlW2tleV07XG4gIGlmICh0eXBlb2YgZGlyZWN0ID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgZGlyZWN0ID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiBkaXJlY3Q7XG4gIH1cbiAgbGV0IG5lc3RlZEtleTogJ2NyZWF0ZWQnIHwgJ3VwZGF0ZWQnID0gJ3VwZGF0ZWQnO1xuICBpZiAoa2V5ID09PSAnY3JlYXRlZEF0Jykge1xuICAgIG5lc3RlZEtleSA9ICdjcmVhdGVkJztcbiAgfVxuICBjb25zdCBuZXN0ZWQgPSBub2RlW25lc3RlZEtleV07XG4gIGlmIChuZXN0ZWQgIT0gbnVsbCAmJiB0eXBlb2YgbmVzdGVkID09PSAnb2JqZWN0Jykge1xuICAgIGNvbnN0IHsgYXQgfSA9IG5lc3RlZCBhcyBVbmtub3duUmVjb3JkO1xuICAgIGlmICh0eXBlb2YgYXQgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBhdCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybiBhdDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5leHBvcnQgY29uc3QgYnVpbGRCYXNpY0RldGFpbEZpZWxkcyA9IDxcbiAgTm9kZSBleHRlbmRzIHsgaWQ6IHN0cmluZyB9ICYgRGV0YWlsTm9kZVRpbWVzdGFtcHMsXG4+KG9wdGlvbnM/OiB7XG4gIGluY2x1ZGVUaW1lc3RhbXBzPzogYm9vbGVhbjtcbn0pOiByZWFkb25seSBCYWNrb2ZmaWNlRGV0YWlsRmllbGRTcGVjPE5vZGU+W10gPT4ge1xuICBjb25zdCBmaWVsZHM6IEJhY2tvZmZpY2VEZXRhaWxGaWVsZFNwZWM8Tm9kZT5bXSA9IFtdO1xuXG4gIGlmIChvcHRpb25zPy5pbmNsdWRlVGltZXN0YW1wcyA/PyB0cnVlKSB7XG4gICAgZmllbGRzLnB1c2goXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdkYXRlVGltZScsXG4gICAgICAgIHNpemU6ICdtJyxcbiAgICAgICAgbGFiZWw6IENSRUFURURfQVRfTEFCRUwsXG4gICAgICAgIHZhbHVlOiAobm9kZSkgPT4ge1xuICAgICAgICAgIHJldHVybiByZWFkTm9kZVRpbWVzdGFtcChub2RlLCAnY3JlYXRlZEF0Jyk7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnZGF0ZVRpbWUnLFxuICAgICAgICBzaXplOiAnbScsXG4gICAgICAgIGxhYmVsOiBVUERBVEVEX0FUX0xBQkVMLFxuICAgICAgICB2YWx1ZTogKG5vZGUpID0+IHtcbiAgICAgICAgICByZXR1cm4gcmVhZE5vZGVUaW1lc3RhbXAobm9kZSwgJ3VwZGF0ZWRBdCcpO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIGZpZWxkcztcbn07XG5cbmV4cG9ydCBjb25zdCBidWlsZEJhc2ljRGV0YWlsQ29udGVudCA9IDxcbiAgTm9kZSBleHRlbmRzIHsgaWQ6IHN0cmluZyB9ICYgRGV0YWlsTm9kZVRpbWVzdGFtcHMsXG4+KFxuICB0aXRsZTogSTE4bkxhYmVsLFxuICBleHRyYUZpZWxkczogcmVhZG9ubHkgQmFja29mZmljZURldGFpbEZpZWxkU3BlYzxOb2RlPltdID0gW10sXG4pOiByZWFkb25seSBCYWNrb2ZmaWNlRGV0YWlsQ29udGVudFNwZWM8Tm9kZT5bXSA9PiB7XG4gIHJldHVybiBbXG4gICAge1xuICAgICAga2luZDogJ3NlY3Rpb24nLFxuICAgICAgdGl0bGUsXG4gICAgICBmaWVsZHM6IFsuLi5leHRyYUZpZWxkcywgLi4uYnVpbGRCYXNpY0RldGFpbEZpZWxkczxOb2RlPigpXSxcbiAgICB9LFxuICBdO1xufTtcblxuZXhwb3J0IGNvbnN0IGJ1aWxkR2VuZXJpY0RldGFpbEhlYWRlciA9IDxcbiAgTm9kZSBleHRlbmRzIHsgaWQ6IHN0cmluZyB9ICYgRGV0YWlsTm9kZVRpbWVzdGFtcHMsXG4+KG9wdGlvbnM6IHtcbiAgdGl0bGU6IEkxOG5MYWJlbDtcbiAgc3VidGl0bGU/OiBJMThuTGFiZWw7XG59KTogQmFja29mZmljZURldGFpbEhlYWRlckNvbmZpZzxOb2RlPiA9PiB7XG4gIHJldHVybiB7XG4gICAgdGl0bGU6IG9wdGlvbnMudGl0bGUsXG4gICAgc3VidGl0bGU6IG9wdGlvbnMuc3VidGl0bGUgPz8gb3B0aW9ucy50aXRsZSxcbiAgICB0aXRsZVZhbHVlOiAobm9kZSkgPT4ge1xuICAgICAgcmV0dXJuIHJlYWROb2RlVGl0bGUobm9kZSk7XG4gICAgfSxcbiAgICBpZDogKG5vZGUpID0+IHtcbiAgICAgIHJldHVybiByZWFkTm9kZUlkKG5vZGUpO1xuICAgIH0sXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgcmVzb2x2ZU5vZGVGcm9tQ29ubmVjdGlvbiA9IDxSb3cgZXh0ZW5kcyB7IGlkOiBzdHJpbmcgfT4oXG4gIGRhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICBkZXRhaWxJZDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICBnZXRDb25uZWN0aW9uOiAoZGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IHtcbiAgICBlZGdlczogcmVhZG9ubHkgeyBub2RlOiBSb3cgfVtdO1xuICB9LFxuKTogUm93IHwgbnVsbCA9PiB7XG4gIGNvbnN0IGNvbm5lY3Rpb24gPSBnZXRDb25uZWN0aW9uKGRhdGEpO1xuICBjb25zdCB7IGVkZ2VzIH0gPSBjb25uZWN0aW9uO1xuICBpZiAoZGV0YWlsSWQgPT0gbnVsbCB8fCBkZXRhaWxJZC50cmltKCkgPT09ICcnKSB7XG4gICAgcmV0dXJuIGVkZ2VzWzBdPy5ub2RlID8/IG51bGw7XG4gIH1cbiAgY29uc3QgbWF0Y2ggPSBlZGdlcy5maW5kKChlZGdlKSA9PiB7XG4gICAgY29uc3QgaWQgPSByZWFkTm9kZUlkKGVkZ2Uubm9kZSk7XG4gICAgcmV0dXJuIGlkID09PSBkZXRhaWxJZDtcbiAgfSk7XG4gIHJldHVybiBtYXRjaD8ubm9kZSA/PyBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IGJ1aWxkUGF5bG9hZEJsb2NrTGFiZWwgPSAoKTogSTE4bkxhYmVsID0+IHtcbiAgcmV0dXJuICh0KSA9PiB7XG4gICAgcmV0dXJuIHQoJ2JhY2tvZmZpY2UudG9vbHMub3V0cHV0Jyk7XG4gIH07XG59O1xuIl19
@@ -0,0 +1,41 @@
1
+ import type { BackofficeFilterSpec, I18nLabel } from '../types.js';
2
+ export type BackofficeLegacyFilterOption = {
3
+ id: string;
4
+ value: string;
5
+ label: I18nLabel;
6
+ };
7
+ type BackofficeLegacyFilterBase<Where> = {
8
+ id: string;
9
+ label: I18nLabel;
10
+ whereKey?: Extract<keyof Where, string>;
11
+ path?: readonly string[];
12
+ placement?: 'quick' | 'drawer' | 'both';
13
+ };
14
+ export type BackofficeLegacyFilterSpec<Where> = (BackofficeLegacyFilterBase<Where> & {
15
+ kind: 'textContains';
16
+ placeholderLabel?: I18nLabel;
17
+ placeholderText?: I18nLabel;
18
+ }) | (BackofficeLegacyFilterBase<Where> & {
19
+ kind: 'datetime';
20
+ mode?: 'from' | 'to' | 'exact';
21
+ placeholderLabel?: I18nLabel;
22
+ placeholderText?: I18nLabel;
23
+ }) | (BackofficeLegacyFilterBase<Where> & {
24
+ kind: 'number';
25
+ placeholderLabel?: I18nLabel;
26
+ placeholderText?: I18nLabel;
27
+ inputMode?: 'numeric' | 'decimal';
28
+ }) | (BackofficeLegacyFilterBase<Where> & {
29
+ kind: 'select';
30
+ options: readonly BackofficeLegacyFilterOption[];
31
+ }) | (BackofficeLegacyFilterBase<Where> & {
32
+ kind: 'boolean';
33
+ trueLabel?: I18nLabel;
34
+ falseLabel?: I18nLabel;
35
+ }) | (BackofficeLegacyFilterBase<Where> & {
36
+ kind: 'entityId';
37
+ entity: string;
38
+ });
39
+ export declare function mapFilters<Where extends Record<string, unknown>>(filters: readonly BackofficeLegacyFilterSpec<Where>[]): readonly BackofficeFilterSpec<Where>[];
40
+ export {};
41
+ //# sourceMappingURL=filters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filters.d.ts","sourceRoot":"","sources":["../../../src/config/filters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EAEpB,SAAS,EACV,MAAM,aAAa,CAAC;AAGrB,MAAM,MAAM,4BAA4B,GAAG;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,SAAS,CAAC;CAClB,CAAC;AAEF,KAAK,0BAA0B,CAAC,KAAK,IAAI;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC,MAAM,KAAK,EAAE,MAAM,CAAC,CAAC;IACxC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,SAAS,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,0BAA0B,CAAC,KAAK,IACxC,CAAC,0BAA0B,CAAC,KAAK,CAAC,GAAG;IACnC,IAAI,EAAE,cAAc,CAAC;IACrB,gBAAgB,CAAC,EAAE,SAAS,CAAC;IAC7B,eAAe,CAAC,EAAE,SAAS,CAAC;CAC7B,CAAC,GACF,CAAC,0BAA0B,CAAC,KAAK,CAAC,GAAG;IACnC,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC;IAC/B,gBAAgB,CAAC,EAAE,SAAS,CAAC;IAC7B,eAAe,CAAC,EAAE,SAAS,CAAC;CAC7B,CAAC,GACF,CAAC,0BAA0B,CAAC,KAAK,CAAC,GAAG;IACnC,IAAI,EAAE,QAAQ,CAAC;IACf,gBAAgB,CAAC,EAAE,SAAS,CAAC;IAC7B,eAAe,CAAC,EAAE,SAAS,CAAC;IAC5B,SAAS,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;CACnC,CAAC,GACF,CAAC,0BAA0B,CAAC,KAAK,CAAC,GAAG;IACnC,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,SAAS,4BAA4B,EAAE,CAAC;CAClD,CAAC,GACF,CAAC,0BAA0B,CAAC,KAAK,CAAC,GAAG;IACnC,IAAI,EAAE,SAAS,CAAC;IAChB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,UAAU,CAAC,EAAE,SAAS,CAAC;CACxB,CAAC,GACF,CAAC,0BAA0B,CAAC,KAAK,CAAC,GAAG;IACnC,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,CAAC;AAwCP,wBAAgB,UAAU,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9D,OAAO,EAAE,SAAS,0BAA0B,CAAC,KAAK,CAAC,EAAE,GACpD,SAAS,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAwExC"}
@@ -0,0 +1,98 @@
1
+ import { readWhereValue, setWhereValue } from '../filters/where.js';
2
+ const buildWhere = (key, value, path) => {
3
+ const next = setWhereValue(null, key, value, path);
4
+ if (next == null) {
5
+ return {};
6
+ }
7
+ return next;
8
+ };
9
+ const buildPickerScope = (where) => {
10
+ const scope = {};
11
+ const keys = [
12
+ 'organizationId',
13
+ 'groupId',
14
+ 'projectId',
15
+ 'initiativeId',
16
+ ];
17
+ keys.forEach((key) => {
18
+ const whereKey = key;
19
+ const value = readWhereValue(where, whereKey);
20
+ if (typeof value === 'string') {
21
+ scope[whereKey] = value;
22
+ }
23
+ });
24
+ return scope;
25
+ };
26
+ export function mapFilters(filters) {
27
+ return filters.map((filter) => {
28
+ const key = (filter.whereKey ?? filter.id);
29
+ const base = {
30
+ id: filter.id,
31
+ label: filter.label,
32
+ placement: filter.placement,
33
+ whereKey: filter.whereKey,
34
+ path: filter.path,
35
+ toGraphQL: (value) => {
36
+ return buildWhere(key, value, filter.path);
37
+ },
38
+ };
39
+ switch (filter.kind) {
40
+ case 'textContains':
41
+ return {
42
+ ...base,
43
+ kind: 'text',
44
+ placeholderLabel: filter.placeholderLabel,
45
+ placeholderText: filter.placeholderText,
46
+ };
47
+ case 'datetime':
48
+ return {
49
+ ...base,
50
+ kind: 'datetime',
51
+ mode: filter.mode,
52
+ placeholderLabel: filter.placeholderLabel,
53
+ placeholderText: filter.placeholderText,
54
+ };
55
+ case 'number':
56
+ return {
57
+ ...base,
58
+ kind: 'number',
59
+ placeholderLabel: filter.placeholderLabel,
60
+ placeholderText: filter.placeholderText,
61
+ inputMode: filter.inputMode,
62
+ };
63
+ case 'select':
64
+ return {
65
+ ...base,
66
+ kind: 'enum',
67
+ options: filter.options.map((option) => {
68
+ return {
69
+ value: option.value,
70
+ label: option.label,
71
+ };
72
+ }),
73
+ };
74
+ case 'boolean':
75
+ return {
76
+ ...base,
77
+ kind: 'boolean',
78
+ trueLabel: filter.trueLabel,
79
+ falseLabel: filter.falseLabel,
80
+ };
81
+ case 'entityId':
82
+ return {
83
+ ...base,
84
+ kind: 'entityId',
85
+ entity: filter.entity,
86
+ pickerScope: (where) => {
87
+ return buildPickerScope(where);
88
+ },
89
+ };
90
+ default:
91
+ return {
92
+ ...base,
93
+ kind: 'text',
94
+ };
95
+ }
96
+ });
97
+ }
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb25maWcvZmlsdGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxPQUFPLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBZ0RwRSxNQUFNLFVBQVUsR0FBRyxDQUNqQixHQUFpQyxFQUNqQyxLQUFjLEVBQ2QsSUFBd0IsRUFDUixFQUFFO0lBQ2xCLE1BQU0sSUFBSSxHQUFHLGFBQWEsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNuRCxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNqQixPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFDRCxPQUFPLElBQXNCLENBQUM7QUFDaEMsQ0FBQyxDQUFDO0FBRUYsTUFBTSxnQkFBZ0IsR0FBRyxDQUN2QixLQUFtQixFQUNXLEVBQUU7SUFDaEMsTUFBTSxLQUFLLEdBQWlDLEVBQUUsQ0FBQztJQUMvQyxNQUFNLElBQUksR0FBRztRQUNYLGdCQUFnQjtRQUNoQixTQUFTO1FBQ1QsV0FBVztRQUNYLGNBQWM7S0FDTixDQUFDO0lBQ1gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1FBQ25CLE1BQU0sUUFBUSxHQUFHLEdBQW1DLENBQUM7UUFDckQsTUFBTSxLQUFLLEdBQUcsY0FBYyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztRQUM5QyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzlCLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxLQUdqQixDQUFDO1FBQ0osQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDLENBQUM7QUFLRixNQUFNLFVBQVUsVUFBVSxDQUN4QixPQUFxRDtJQUVyRCxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtRQUM1QixNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLElBQUksTUFBTSxDQUFDLEVBQUUsQ0FBaUMsQ0FBQztRQUMzRSxNQUFNLElBQUksR0FBRztZQUNYLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRTtZQUNiLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSztZQUNuQixTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVM7WUFDM0IsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRO1lBQ3pCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtZQUNqQixTQUFTLEVBQUUsQ0FBQyxLQUFjLEVBQUUsRUFBRTtnQkFDNUIsT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDN0MsQ0FBQztTQUNGLENBQUM7UUFFRixRQUFRLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNwQixLQUFLLGNBQWM7Z0JBQ2pCLE9BQU87b0JBQ0wsR0FBRyxJQUFJO29CQUNQLElBQUksRUFBRSxNQUFNO29CQUNaLGdCQUFnQixFQUFFLE1BQU0sQ0FBQyxnQkFBZ0I7b0JBQ3pDLGVBQWUsRUFBRSxNQUFNLENBQUMsZUFBZTtpQkFDeEMsQ0FBQztZQUNKLEtBQUssVUFBVTtnQkFDYixPQUFPO29CQUNMLEdBQUcsSUFBSTtvQkFDUCxJQUFJLEVBQUUsVUFBVTtvQkFDaEIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO29CQUNqQixnQkFBZ0IsRUFBRSxNQUFNLENBQUMsZ0JBQWdCO29CQUN6QyxlQUFlLEVBQUUsTUFBTSxDQUFDLGVBQWU7aUJBQ3hDLENBQUM7WUFDSixLQUFLLFFBQVE7Z0JBQ1gsT0FBTztvQkFDTCxHQUFHLElBQUk7b0JBQ1AsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDLGdCQUFnQjtvQkFDekMsZUFBZSxFQUFFLE1BQU0sQ0FBQyxlQUFlO29CQUN2QyxTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVM7aUJBQzVCLENBQUM7WUFDSixLQUFLLFFBQVE7Z0JBQ1gsT0FBTztvQkFDTCxHQUFHLElBQUk7b0JBQ1AsSUFBSSxFQUFFLE1BQU07b0JBQ1osT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7d0JBQ3JDLE9BQU87NEJBQ0wsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLOzRCQUNuQixLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUs7eUJBQ3BCLENBQUM7b0JBQ0osQ0FBQyxDQUFDO2lCQUNILENBQUM7WUFDSixLQUFLLFNBQVM7Z0JBQ1osT0FBTztvQkFDTCxHQUFHLElBQUk7b0JBQ1AsSUFBSSxFQUFFLFNBQVM7b0JBQ2YsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTO29CQUMzQixVQUFVLEVBQUUsTUFBTSxDQUFDLFVBQVU7aUJBQzlCLENBQUM7WUFDSixLQUFLLFVBQVU7Z0JBQ2IsT0FBTztvQkFDTCxHQUFHLElBQUk7b0JBQ1AsSUFBSSxFQUFFLFVBQVU7b0JBQ2hCLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTTtvQkFDckIsV0FBVyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7d0JBQ3JCLE9BQU8sZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ2pDLENBQUM7aUJBQ0YsQ0FBQztZQUNKO2dCQUNFLE9BQU87b0JBQ0wsR0FBRyxJQUFJO29CQUNQLElBQUksRUFBRSxNQUFNO2lCQUNiLENBQUM7UUFDTixDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBCYWNrb2ZmaWNlRmlsdGVyU3BlYyxcbiAgQmFja29mZmljZVBpY2tlclNjb3BlLFxuICBJMThuTGFiZWwsXG59IGZyb20gJy4uL3R5cGVzLmpzJztcbmltcG9ydCB7IHJlYWRXaGVyZVZhbHVlLCBzZXRXaGVyZVZhbHVlIH0gZnJvbSAnLi4vZmlsdGVycy93aGVyZS5qcyc7XG5cbmV4cG9ydCB0eXBlIEJhY2tvZmZpY2VMZWdhY3lGaWx0ZXJPcHRpb24gPSB7XG4gIGlkOiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIGxhYmVsOiBJMThuTGFiZWw7XG59O1xuXG50eXBlIEJhY2tvZmZpY2VMZWdhY3lGaWx0ZXJCYXNlPFdoZXJlPiA9IHtcbiAgaWQ6IHN0cmluZztcbiAgbGFiZWw6IEkxOG5MYWJlbDtcbiAgd2hlcmVLZXk/OiBFeHRyYWN0PGtleW9mIFdoZXJlLCBzdHJpbmc+O1xuICBwYXRoPzogcmVhZG9ubHkgc3RyaW5nW107XG4gIHBsYWNlbWVudD86ICdxdWljaycgfCAnZHJhd2VyJyB8ICdib3RoJztcbn07XG5cbmV4cG9ydCB0eXBlIEJhY2tvZmZpY2VMZWdhY3lGaWx0ZXJTcGVjPFdoZXJlPiA9XG4gIHwgKEJhY2tvZmZpY2VMZWdhY3lGaWx0ZXJCYXNlPFdoZXJlPiAmIHtcbiAgICAgIGtpbmQ6ICd0ZXh0Q29udGFpbnMnO1xuICAgICAgcGxhY2Vob2xkZXJMYWJlbD86IEkxOG5MYWJlbDtcbiAgICAgIHBsYWNlaG9sZGVyVGV4dD86IEkxOG5MYWJlbDtcbiAgICB9KVxuICB8IChCYWNrb2ZmaWNlTGVnYWN5RmlsdGVyQmFzZTxXaGVyZT4gJiB7XG4gICAgICBraW5kOiAnZGF0ZXRpbWUnO1xuICAgICAgbW9kZT86ICdmcm9tJyB8ICd0bycgfCAnZXhhY3QnO1xuICAgICAgcGxhY2Vob2xkZXJMYWJlbD86IEkxOG5MYWJlbDtcbiAgICAgIHBsYWNlaG9sZGVyVGV4dD86IEkxOG5MYWJlbDtcbiAgICB9KVxuICB8IChCYWNrb2ZmaWNlTGVnYWN5RmlsdGVyQmFzZTxXaGVyZT4gJiB7XG4gICAgICBraW5kOiAnbnVtYmVyJztcbiAgICAgIHBsYWNlaG9sZGVyTGFiZWw/OiBJMThuTGFiZWw7XG4gICAgICBwbGFjZWhvbGRlclRleHQ/OiBJMThuTGFiZWw7XG4gICAgICBpbnB1dE1vZGU/OiAnbnVtZXJpYycgfCAnZGVjaW1hbCc7XG4gICAgfSlcbiAgfCAoQmFja29mZmljZUxlZ2FjeUZpbHRlckJhc2U8V2hlcmU+ICYge1xuICAgICAga2luZDogJ3NlbGVjdCc7XG4gICAgICBvcHRpb25zOiByZWFkb25seSBCYWNrb2ZmaWNlTGVnYWN5RmlsdGVyT3B0aW9uW107XG4gICAgfSlcbiAgfCAoQmFja29mZmljZUxlZ2FjeUZpbHRlckJhc2U8V2hlcmU+ICYge1xuICAgICAga2luZDogJ2Jvb2xlYW4nO1xuICAgICAgdHJ1ZUxhYmVsPzogSTE4bkxhYmVsO1xuICAgICAgZmFsc2VMYWJlbD86IEkxOG5MYWJlbDtcbiAgICB9KVxuICB8IChCYWNrb2ZmaWNlTGVnYWN5RmlsdGVyQmFzZTxXaGVyZT4gJiB7XG4gICAgICBraW5kOiAnZW50aXR5SWQnO1xuICAgICAgZW50aXR5OiBzdHJpbmc7XG4gICAgfSk7XG5cbmNvbnN0IGJ1aWxkV2hlcmUgPSA8V2hlcmUgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oXG4gIGtleTogRXh0cmFjdDxrZXlvZiBXaGVyZSwgc3RyaW5nPixcbiAgdmFsdWU6IHVua25vd24sXG4gIHBhdGg/OiByZWFkb25seSBzdHJpbmdbXSxcbik6IFBhcnRpYWw8V2hlcmU+ID0+IHtcbiAgY29uc3QgbmV4dCA9IHNldFdoZXJlVmFsdWUobnVsbCwga2V5LCB2YWx1ZSwgcGF0aCk7XG4gIGlmIChuZXh0ID09IG51bGwpIHtcbiAgICByZXR1cm4ge307XG4gIH1cbiAgcmV0dXJuIG5leHQgYXMgUGFydGlhbDxXaGVyZT47XG59O1xuXG5jb25zdCBidWlsZFBpY2tlclNjb3BlID0gPFdoZXJlIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KFxuICB3aGVyZTogV2hlcmUgfCBudWxsLFxuKTogQmFja29mZmljZVBpY2tlclNjb3BlPFdoZXJlPiA9PiB7XG4gIGNvbnN0IHNjb3BlOiBCYWNrb2ZmaWNlUGlja2VyU2NvcGU8V2hlcmU+ID0ge307XG4gIGNvbnN0IGtleXMgPSBbXG4gICAgJ29yZ2FuaXphdGlvbklkJyxcbiAgICAnZ3JvdXBJZCcsXG4gICAgJ3Byb2plY3RJZCcsXG4gICAgJ2luaXRpYXRpdmVJZCcsXG4gIF0gYXMgY29uc3Q7XG4gIGtleXMuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgY29uc3Qgd2hlcmVLZXkgPSBrZXkgYXMgRXh0cmFjdDxrZXlvZiBXaGVyZSwgc3RyaW5nPjtcbiAgICBjb25zdCB2YWx1ZSA9IHJlYWRXaGVyZVZhbHVlKHdoZXJlLCB3aGVyZUtleSk7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHNjb3BlW3doZXJlS2V5XSA9IHZhbHVlIGFzIEV4dHJhY3Q8XG4gICAgICAgIE5vbk51bGxhYmxlPFdoZXJlW3R5cGVvZiB3aGVyZUtleV0+LFxuICAgICAgICBzdHJpbmdcbiAgICAgID47XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHNjb3BlO1xufTtcblxuLyoqXG4gKlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFwRmlsdGVyczxXaGVyZSBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+PihcbiAgZmlsdGVyczogcmVhZG9ubHkgQmFja29mZmljZUxlZ2FjeUZpbHRlclNwZWM8V2hlcmU+W10sXG4pOiByZWFkb25seSBCYWNrb2ZmaWNlRmlsdGVyU3BlYzxXaGVyZT5bXSB7XG4gIHJldHVybiBmaWx0ZXJzLm1hcCgoZmlsdGVyKSA9PiB7XG4gICAgY29uc3Qga2V5ID0gKGZpbHRlci53aGVyZUtleSA/PyBmaWx0ZXIuaWQpIGFzIEV4dHJhY3Q8a2V5b2YgV2hlcmUsIHN0cmluZz47XG4gICAgY29uc3QgYmFzZSA9IHtcbiAgICAgIGlkOiBmaWx0ZXIuaWQsXG4gICAgICBsYWJlbDogZmlsdGVyLmxhYmVsLFxuICAgICAgcGxhY2VtZW50OiBmaWx0ZXIucGxhY2VtZW50LFxuICAgICAgd2hlcmVLZXk6IGZpbHRlci53aGVyZUtleSxcbiAgICAgIHBhdGg6IGZpbHRlci5wYXRoLFxuICAgICAgdG9HcmFwaFFMOiAodmFsdWU6IHVua25vd24pID0+IHtcbiAgICAgICAgcmV0dXJuIGJ1aWxkV2hlcmUoa2V5LCB2YWx1ZSwgZmlsdGVyLnBhdGgpO1xuICAgICAgfSxcbiAgICB9O1xuXG4gICAgc3dpdGNoIChmaWx0ZXIua2luZCkge1xuICAgICAgY2FzZSAndGV4dENvbnRhaW5zJzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5iYXNlLFxuICAgICAgICAgIGtpbmQ6ICd0ZXh0JyxcbiAgICAgICAgICBwbGFjZWhvbGRlckxhYmVsOiBmaWx0ZXIucGxhY2Vob2xkZXJMYWJlbCxcbiAgICAgICAgICBwbGFjZWhvbGRlclRleHQ6IGZpbHRlci5wbGFjZWhvbGRlclRleHQsXG4gICAgICAgIH07XG4gICAgICBjYXNlICdkYXRldGltZSc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uYmFzZSxcbiAgICAgICAgICBraW5kOiAnZGF0ZXRpbWUnLFxuICAgICAgICAgIG1vZGU6IGZpbHRlci5tb2RlLFxuICAgICAgICAgIHBsYWNlaG9sZGVyTGFiZWw6IGZpbHRlci5wbGFjZWhvbGRlckxhYmVsLFxuICAgICAgICAgIHBsYWNlaG9sZGVyVGV4dDogZmlsdGVyLnBsYWNlaG9sZGVyVGV4dCxcbiAgICAgICAgfTtcbiAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uYmFzZSxcbiAgICAgICAgICBraW5kOiAnbnVtYmVyJyxcbiAgICAgICAgICBwbGFjZWhvbGRlckxhYmVsOiBmaWx0ZXIucGxhY2Vob2xkZXJMYWJlbCxcbiAgICAgICAgICBwbGFjZWhvbGRlclRleHQ6IGZpbHRlci5wbGFjZWhvbGRlclRleHQsXG4gICAgICAgICAgaW5wdXRNb2RlOiBmaWx0ZXIuaW5wdXRNb2RlLFxuICAgICAgICB9O1xuICAgICAgY2FzZSAnc2VsZWN0JzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5iYXNlLFxuICAgICAgICAgIGtpbmQ6ICdlbnVtJyxcbiAgICAgICAgICBvcHRpb25zOiBmaWx0ZXIub3B0aW9ucy5tYXAoKG9wdGlvbikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgdmFsdWU6IG9wdGlvbi52YWx1ZSxcbiAgICAgICAgICAgICAgbGFiZWw6IG9wdGlvbi5sYWJlbCxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSksXG4gICAgICAgIH07XG4gICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5iYXNlLFxuICAgICAgICAgIGtpbmQ6ICdib29sZWFuJyxcbiAgICAgICAgICB0cnVlTGFiZWw6IGZpbHRlci50cnVlTGFiZWwsXG4gICAgICAgICAgZmFsc2VMYWJlbDogZmlsdGVyLmZhbHNlTGFiZWwsXG4gICAgICAgIH07XG4gICAgICBjYXNlICdlbnRpdHlJZCc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uYmFzZSxcbiAgICAgICAgICBraW5kOiAnZW50aXR5SWQnLFxuICAgICAgICAgIGVudGl0eTogZmlsdGVyLmVudGl0eSxcbiAgICAgICAgICBwaWNrZXJTY29wZTogKHdoZXJlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYnVpbGRQaWNrZXJTY29wZSh3aGVyZSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uYmFzZSxcbiAgICAgICAgICBraW5kOiAndGV4dCcsXG4gICAgICAgIH07XG4gICAgfVxuICB9KTtcbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export declare const getRowId: <Row extends object>(row: Row) => string;
2
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/config/list.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ,GAAI,GAAG,SAAS,MAAM,EAAE,KAAK,GAAG,KAAG,MAYvD,CAAC"}
@@ -0,0 +1,14 @@
1
+ export const getRowId = (row) => {
2
+ const { id } = row;
3
+ if (typeof id === 'string') {
4
+ if (id.trim() === '') {
5
+ return '';
6
+ }
7
+ return id;
8
+ }
9
+ if (typeof id === 'number') {
10
+ return String(id);
11
+ }
12
+ return '';
13
+ };
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb25maWcvbGlzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FBcUIsR0FBUSxFQUFVLEVBQUU7SUFDL0QsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEdBQThCLENBQUM7SUFDOUMsSUFBSSxPQUFPLEVBQUUsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUMzQixJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUNyQixPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFDRCxJQUFJLE9BQU8sRUFBRSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzNCLE9BQU8sTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3BCLENBQUM7SUFDRCxPQUFPLEVBQUUsQ0FBQztBQUNaLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBnZXRSb3dJZCA9IDxSb3cgZXh0ZW5kcyBvYmplY3Q+KHJvdzogUm93KTogc3RyaW5nID0+IHtcbiAgY29uc3QgeyBpZCB9ID0gcm93IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBpZiAodHlwZW9mIGlkID09PSAnc3RyaW5nJykge1xuICAgIGlmIChpZC50cmltKCkgPT09ICcnKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIHJldHVybiBpZDtcbiAgfVxuICBpZiAodHlwZW9mIGlkID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiBTdHJpbmcoaWQpO1xuICB9XG4gIHJldHVybiAnJztcbn07XG4iXX0=
@@ -0,0 +1,10 @@
1
+ export type UnknownRecord = Record<string, unknown>;
2
+ export declare const readRecordValueByKeys: (record: UnknownRecord, keys: readonly string[]) => string | number | null;
3
+ export declare const readRecordValue: <T extends object, K extends keyof T & string>(record: T, key: K) => string | number | null;
4
+ export declare const readRecordRaw: <T extends object, K extends keyof T & string>(record: T, key: K) => T[K];
5
+ export declare const readStringField: <T extends object, K extends keyof T & string>(record: T, key: K) => string | null;
6
+ export declare const readNumberField: <T extends object, K extends keyof T & string>(record: T, key: K) => number | null;
7
+ export declare const readBooleanField: <T extends object, K extends keyof T & string>(record: T, key: K) => boolean | null;
8
+ export declare const readArrayLength: <T extends object, K extends keyof T & string>(record: T, key: K) => number | null;
9
+ export declare const formatJsonValue: (value: unknown) => string | null;
10
+ //# sourceMappingURL=record.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record.d.ts","sourceRoot":"","sources":["../../../src/config/record.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAsCpD,eAAO,MAAM,qBAAqB,GAChC,QAAQ,aAAa,EACrB,MAAM,SAAS,MAAM,EAAE,KACtB,MAAM,GAAG,MAAM,GAAG,IAQpB,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,EAC1E,QAAQ,CAAC,EACT,KAAK,CAAC,KACL,MAAM,GAAG,MAAM,GAAG,IAqDpB,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,EACxE,QAAQ,CAAC,EACT,KAAK,CAAC,KACL,CAAC,CAAC,CAAC,CAEL,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,EAC1E,QAAQ,CAAC,EACT,KAAK,CAAC,KACL,MAAM,GAAG,IAMX,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,EAC1E,QAAQ,CAAC,EACT,KAAK,CAAC,KACL,MAAM,GAAG,IAMX,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,EAC3E,QAAQ,CAAC,EACT,KAAK,CAAC,KACL,OAAO,GAAG,IAMZ,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,EAC1E,QAAQ,CAAC,EACT,KAAK,CAAC,KACL,MAAM,GAAG,IAMX,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,OAAO,OAAO,KAAG,MAAM,GAAG,IAezD,CAAC"}