@plumile/backoffice-core 0.1.105 → 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 (50) 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/config/columns.d.ts +15 -0
  7. package/lib/esm/config/columns.d.ts.map +1 -0
  8. package/lib/esm/config/columns.js +163 -0
  9. package/lib/esm/config/detail.d.ts +43 -0
  10. package/lib/esm/config/detail.d.ts.map +1 -0
  11. package/lib/esm/config/detail.js +122 -0
  12. package/lib/esm/config/filters.d.ts +41 -0
  13. package/lib/esm/config/filters.d.ts.map +1 -0
  14. package/lib/esm/config/filters.js +98 -0
  15. package/lib/esm/config/list.d.ts +2 -0
  16. package/lib/esm/config/list.d.ts.map +1 -0
  17. package/lib/esm/config/list.js +14 -0
  18. package/lib/esm/config/record.d.ts +10 -0
  19. package/lib/esm/config/record.d.ts.map +1 -0
  20. package/lib/esm/config/record.js +147 -0
  21. package/lib/esm/config/sorts.d.ts +8 -0
  22. package/lib/esm/config/sorts.d.ts.map +1 -0
  23. package/lib/esm/config/sorts.js +10 -0
  24. package/lib/esm/index.d.ts +8 -0
  25. package/lib/esm/index.d.ts.map +1 -1
  26. package/lib/esm/index.js +9 -1
  27. package/lib/esm/taskState.d.ts +15 -0
  28. package/lib/esm/taskState.d.ts.map +1 -0
  29. package/lib/esm/taskState.js +22 -0
  30. package/lib/tsconfig.esm.tsbuildinfo +1 -1
  31. package/lib/types/base64.d.ts.map +1 -1
  32. package/lib/types/billing.d.ts +25 -0
  33. package/lib/types/billing.d.ts.map +1 -0
  34. package/lib/types/config/columns.d.ts +15 -0
  35. package/lib/types/config/columns.d.ts.map +1 -0
  36. package/lib/types/config/detail.d.ts +43 -0
  37. package/lib/types/config/detail.d.ts.map +1 -0
  38. package/lib/types/config/filters.d.ts +41 -0
  39. package/lib/types/config/filters.d.ts.map +1 -0
  40. package/lib/types/config/list.d.ts +2 -0
  41. package/lib/types/config/list.d.ts.map +1 -0
  42. package/lib/types/config/record.d.ts +10 -0
  43. package/lib/types/config/record.d.ts.map +1 -0
  44. package/lib/types/config/sorts.d.ts +8 -0
  45. package/lib/types/config/sorts.d.ts.map +1 -0
  46. package/lib/types/index.d.ts +8 -0
  47. package/lib/types/index.d.ts.map +1 -1
  48. package/lib/types/taskState.d.ts +15 -0
  49. package/lib/types/taskState.d.ts.map +1 -0
  50. package/package.json +12 -2
@@ -1 +1 @@
1
- {"version":3,"file":"base64.d.ts","sourceRoot":"","sources":["../../src/base64.ts"],"names":[],"mappings":"AAGA,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAgBxD;AAKD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAexD"}
1
+ {"version":3,"file":"base64.d.ts","sourceRoot":"","sources":["../../src/base64.ts"],"names":[],"mappings":"AAsBA,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAqBxD;AAKD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAoBxD"}
package/lib/esm/base64.js CHANGED
@@ -1,7 +1,14 @@
1
+ function getGlobalBuffer() {
2
+ return globalThis.Buffer;
3
+ }
1
4
  export function encodeUtf8ToBase64(value) {
2
5
  if (typeof value !== 'string') {
3
6
  throw new TypeError('encodeUtf8ToBase64 expects a string input.');
4
7
  }
8
+ const NodeBuffer = getGlobalBuffer();
9
+ if (NodeBuffer != null) {
10
+ return NodeBuffer.from(value, 'utf-8').toString('base64');
11
+ }
5
12
  if (typeof globalThis.btoa === 'function') {
6
13
  const utf8 = encodeURIComponent(value).replace(/%([0-9A-F]{2})/g, (_, code) => {
7
14
  return String.fromCharCode(Number.parseInt(code, 16));
@@ -14,6 +21,10 @@ export function decodeBase64ToUtf8(value) {
14
21
  if (typeof value !== 'string') {
15
22
  throw new TypeError('decodeBase64ToUtf8 expects a string input.');
16
23
  }
24
+ const NodeBuffer = getGlobalBuffer();
25
+ if (NodeBuffer != null) {
26
+ return NodeBuffer.from(value, 'base64').toString('utf-8');
27
+ }
17
28
  if (typeof globalThis.atob === 'function') {
18
29
  const binary = globalThis.atob(value);
19
30
  const percentEncoded = Array.from(binary, (char) => {
@@ -24,4 +35,4 @@ export function decodeBase64ToUtf8(value) {
24
35
  }
25
36
  throw new Error('No base64 decoder is available in this environment.');
26
37
  }
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZTY0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Jhc2U2NC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLFVBQVUsa0JBQWtCLENBQUMsS0FBYTtJQUM5QyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzlCLE1BQU0sSUFBSSxTQUFTLENBQUMsNENBQTRDLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsSUFBSSxPQUFPLFVBQVUsQ0FBQyxJQUFJLEtBQUssVUFBVSxFQUFFLENBQUM7UUFDMUMsTUFBTSxJQUFJLEdBQUcsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUM1QyxpQkFBaUIsRUFDakIsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUU7WUFDVixPQUFPLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN4RCxDQUFDLENBQ0YsQ0FBQztRQUNGLE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsTUFBTSxJQUFJLEtBQUssQ0FBQyxxREFBcUQsQ0FBQyxDQUFDO0FBQ3pFLENBQUM7QUFLRCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsS0FBYTtJQUM5QyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzlCLE1BQU0sSUFBSSxTQUFTLENBQUMsNENBQTRDLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsSUFBSSxPQUFPLFVBQVUsQ0FBQyxJQUFJLEtBQUssVUFBVSxFQUFFLENBQUM7UUFDMUMsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QyxNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ2pELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDOUQsT0FBTyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3BCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNaLE9BQU8sa0JBQWtCLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELE1BQU0sSUFBSSxLQUFLLENBQUMscURBQXFELENBQUMsQ0FBQztBQUN6RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBFbmNvZGUgYSBVVEYtOCBzdHJpbmcgaW50byBhIGJhc2U2NCBzdHJpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbmNvZGVVdGY4VG9CYXNlNjQodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZW5jb2RlVXRmOFRvQmFzZTY0IGV4cGVjdHMgYSBzdHJpbmcgaW5wdXQuJyk7XG4gIH1cblxuICBpZiAodHlwZW9mIGdsb2JhbFRoaXMuYnRvYSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNvbnN0IHV0ZjggPSBlbmNvZGVVUklDb21wb25lbnQodmFsdWUpLnJlcGxhY2UoXG4gICAgICAvJShbMC05QS1GXXsyfSkvZyxcbiAgICAgIChfLCBjb2RlKSA9PiB7XG4gICAgICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKE51bWJlci5wYXJzZUludChjb2RlLCAxNikpO1xuICAgICAgfSxcbiAgICApO1xuICAgIHJldHVybiBnbG9iYWxUaGlzLmJ0b2EodXRmOCk7XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoJ05vIGJhc2U2NCBlbmNvZGVyIGlzIGF2YWlsYWJsZSBpbiB0aGlzIGVudmlyb25tZW50LicpO1xufVxuXG4vKipcbiAqIERlY29kZSBhIGJhc2U2NCBzdHJpbmcgaW50byBhIFVURi04IHN0cmluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZUJhc2U2NFRvVXRmOCh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdkZWNvZGVCYXNlNjRUb1V0ZjggZXhwZWN0cyBhIHN0cmluZyBpbnB1dC4nKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgZ2xvYmFsVGhpcy5hdG9iID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY29uc3QgYmluYXJ5ID0gZ2xvYmFsVGhpcy5hdG9iKHZhbHVlKTtcbiAgICBjb25zdCBwZXJjZW50RW5jb2RlZCA9IEFycmF5LmZyb20oYmluYXJ5LCAoY2hhcikgPT4ge1xuICAgICAgY29uc3QgY29kZSA9IGNoYXIuY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikucGFkU3RhcnQoMiwgJzAnKTtcbiAgICAgIHJldHVybiBgJSR7Y29kZX1gO1xuICAgIH0pLmpvaW4oJycpO1xuICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQocGVyY2VudEVuY29kZWQpO1xuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKCdObyBiYXNlNjQgZGVjb2RlciBpcyBhdmFpbGFibGUgaW4gdGhpcyBlbnZpcm9ubWVudC4nKTtcbn1cbiJdfQ==
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZTY0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Jhc2U2NC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFlQSxTQUFTLGVBQWU7SUFDdEIsT0FBUSxVQUF3QyxDQUFDLE1BQU0sQ0FBQztBQUMxRCxDQUFDO0FBS0QsTUFBTSxVQUFVLGtCQUFrQixDQUFDLEtBQWE7SUFDOUMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUM5QixNQUFNLElBQUksU0FBUyxDQUFDLDRDQUE0QyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELE1BQU0sVUFBVSxHQUFHLGVBQWUsRUFBRSxDQUFDO0lBQ3JDLElBQUksVUFBVSxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3ZCLE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxJQUFJLE9BQU8sVUFBVSxDQUFDLElBQUksS0FBSyxVQUFVLEVBQUUsQ0FBQztRQUMxQyxNQUFNLElBQUksR0FBRyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQzVDLGlCQUFpQixFQUNqQixDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRTtZQUNWLE9BQU8sTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3hELENBQUMsQ0FDRixDQUFDO1FBQ0YsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLHFEQUFxRCxDQUFDLENBQUM7QUFDekUsQ0FBQztBQUtELE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxLQUFhO0lBQzlDLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDOUIsTUFBTSxJQUFJLFNBQVMsQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRCxNQUFNLFVBQVUsR0FBRyxlQUFlLEVBQUUsQ0FBQztJQUNyQyxJQUFJLFVBQVUsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN2QixPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsSUFBSSxPQUFPLFVBQVUsQ0FBQyxJQUFJLEtBQUssVUFBVSxFQUFFLENBQUM7UUFDMUMsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QyxNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ2pELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDOUQsT0FBTyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3BCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNaLE9BQU8sa0JBQWtCLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELE1BQU0sSUFBSSxLQUFLLENBQUMscURBQXFELENBQUMsQ0FBQztBQUN6RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBFbmNvZGUgYSBVVEYtOCBzdHJpbmcgaW50byBhIGJhc2U2NCBzdHJpbmcuXG4gKi9cbnR5cGUgR2xvYmFsQnVmZmVyID0ge1xuICBmcm9tOiAoXG4gICAgdmFsdWU6IHN0cmluZyxcbiAgICBlbmNvZGluZzogc3RyaW5nLFxuICApID0+IHtcbiAgICB0b1N0cmluZzogKGVuY29kaW5nOiBzdHJpbmcpID0+IHN0cmluZztcbiAgfTtcbn07XG5cbi8qKlxuICpcbiAqL1xuZnVuY3Rpb24gZ2V0R2xvYmFsQnVmZmVyKCk6IEdsb2JhbEJ1ZmZlciB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiAoZ2xvYmFsVGhpcyBhcyB7IEJ1ZmZlcj86IEdsb2JhbEJ1ZmZlciB9KS5CdWZmZXI7XG59XG5cbi8qKlxuICpcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuY29kZVV0ZjhUb0Jhc2U2NCh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdlbmNvZGVVdGY4VG9CYXNlNjQgZXhwZWN0cyBhIHN0cmluZyBpbnB1dC4nKTtcbiAgfVxuXG4gIGNvbnN0IE5vZGVCdWZmZXIgPSBnZXRHbG9iYWxCdWZmZXIoKTtcbiAgaWYgKE5vZGVCdWZmZXIgIT0gbnVsbCkge1xuICAgIHJldHVybiBOb2RlQnVmZmVyLmZyb20odmFsdWUsICd1dGYtOCcpLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgZ2xvYmFsVGhpcy5idG9hID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY29uc3QgdXRmOCA9IGVuY29kZVVSSUNvbXBvbmVudCh2YWx1ZSkucmVwbGFjZShcbiAgICAgIC8lKFswLTlBLUZdezJ9KS9nLFxuICAgICAgKF8sIGNvZGUpID0+IHtcbiAgICAgICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoTnVtYmVyLnBhcnNlSW50KGNvZGUsIDE2KSk7XG4gICAgICB9LFxuICAgICk7XG4gICAgcmV0dXJuIGdsb2JhbFRoaXMuYnRvYSh1dGY4KTtcbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcignTm8gYmFzZTY0IGVuY29kZXIgaXMgYXZhaWxhYmxlIGluIHRoaXMgZW52aXJvbm1lbnQuJyk7XG59XG5cbi8qKlxuICogRGVjb2RlIGEgYmFzZTY0IHN0cmluZyBpbnRvIGEgVVRGLTggc3RyaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlQmFzZTY0VG9VdGY4KHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2RlY29kZUJhc2U2NFRvVXRmOCBleHBlY3RzIGEgc3RyaW5nIGlucHV0LicpO1xuICB9XG5cbiAgY29uc3QgTm9kZUJ1ZmZlciA9IGdldEdsb2JhbEJ1ZmZlcigpO1xuICBpZiAoTm9kZUJ1ZmZlciAhPSBudWxsKSB7XG4gICAgcmV0dXJuIE5vZGVCdWZmZXIuZnJvbSh2YWx1ZSwgJ2Jhc2U2NCcpLnRvU3RyaW5nKCd1dGYtOCcpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBnbG9iYWxUaGlzLmF0b2IgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjb25zdCBiaW5hcnkgPSBnbG9iYWxUaGlzLmF0b2IodmFsdWUpO1xuICAgIGNvbnN0IHBlcmNlbnRFbmNvZGVkID0gQXJyYXkuZnJvbShiaW5hcnksIChjaGFyKSA9PiB7XG4gICAgICBjb25zdCBjb2RlID0gY2hhci5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCAnMCcpO1xuICAgICAgcmV0dXJuIGAlJHtjb2RlfWA7XG4gICAgfSkuam9pbignJyk7XG4gICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChwZXJjZW50RW5jb2RlZCk7XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoJ05vIGJhc2U2NCBkZWNvZGVyIGlzIGF2YWlsYWJsZSBpbiB0aGlzIGVudmlyb25tZW50LicpO1xufVxuIl19
@@ -0,0 +1,25 @@
1
+ export type BillingLedgerDirectionLike = 'CREDIT' | 'DEBIT';
2
+ export declare function resolveBillingLedgerDirection<Kind extends string, Direction extends BillingLedgerDirectionLike = BillingLedgerDirectionLike>(params: {
3
+ kind: Kind;
4
+ deltaAmount: number;
5
+ usageDebitKind?: Kind;
6
+ creditTopUpKind?: Kind;
7
+ creditDirection?: Direction;
8
+ debitDirection?: Direction;
9
+ }): Direction;
10
+ export type MoneyAmountLike<Currency extends string = string> = {
11
+ readonly amount: number;
12
+ readonly currency: Currency;
13
+ };
14
+ export type BillingScopeUsageLike = {
15
+ readonly eventsCount?: number | null;
16
+ };
17
+ export type FormatMoneyAmountOptions = {
18
+ readonly locale?: string | readonly string[];
19
+ readonly maximumFractionDigits?: number;
20
+ readonly minimumFractionDigits?: number;
21
+ };
22
+ export declare function normalizeSignedZero(value: number): number;
23
+ export declare function hasBillingScopeUsage(total: BillingScopeUsageLike | null | undefined): boolean;
24
+ export declare function formatMoneyAmount(amount: MoneyAmountLike, options?: FormatMoneyAmountOptions): string;
25
+ //# sourceMappingURL=billing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"billing.d.ts","sourceRoot":"","sources":["../../src/billing.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,0BAA0B,GAAG,QAAQ,GAAG,OAAO,CAAC;AAK5D,wBAAgB,6BAA6B,CAC3C,IAAI,SAAS,MAAM,EACnB,SAAS,SAAS,0BAA0B,GAAG,0BAA0B,EACzE,MAAM,EAAE;IACR,IAAI,EAAE,IAAI,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,IAAI,CAAC;IACtB,eAAe,CAAC,EAAE,IAAI,CAAC;IACvB,eAAe,CAAC,EAAE,SAAS,CAAC;IAC5B,cAAc,CAAC,EAAE,SAAS,CAAC;CAC5B,GAAG,SAAS,CAgBZ;AAED,MAAM,MAAM,eAAe,CAAC,QAAQ,SAAS,MAAM,GAAG,MAAM,IAAI;IAC9D,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC;IAC7C,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;CACzC,CAAC;AAKF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAKzD;AAKD,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,qBAAqB,GAAG,IAAI,GAAG,SAAS,GAC9C,OAAO,CAET;AAKD,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,eAAe,EACvB,OAAO,GAAE,wBAA6B,GACrC,MAAM,CAOR"}
@@ -0,0 +1,34 @@
1
+ export function resolveBillingLedgerDirection(params) {
2
+ const usageDebitKind = params.usageDebitKind ?? 'USAGE_DEBIT';
3
+ const creditTopUpKind = params.creditTopUpKind ?? 'CREDIT_TOP_UP';
4
+ const creditDirection = params.creditDirection ?? 'CREDIT';
5
+ const debitDirection = params.debitDirection ?? 'DEBIT';
6
+ if (params.kind === usageDebitKind) {
7
+ return debitDirection;
8
+ }
9
+ if (params.kind === creditTopUpKind) {
10
+ return creditDirection;
11
+ }
12
+ if (params.deltaAmount < 0) {
13
+ return debitDirection;
14
+ }
15
+ return creditDirection;
16
+ }
17
+ export function normalizeSignedZero(value) {
18
+ if (Object.is(value, -0)) {
19
+ return 0;
20
+ }
21
+ return value;
22
+ }
23
+ export function hasBillingScopeUsage(total) {
24
+ return total != null && (total.eventsCount ?? 0) > 0;
25
+ }
26
+ export function formatMoneyAmount(amount, options = {}) {
27
+ return new Intl.NumberFormat(options.locale, {
28
+ style: 'currency',
29
+ currency: amount.currency,
30
+ maximumFractionDigits: options.maximumFractionDigits ?? 6,
31
+ minimumFractionDigits: options.minimumFractionDigits,
32
+ }).format(normalizeSignedZero(amount.amount));
33
+ }
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmlsbGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iaWxsaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE1BQU0sVUFBVSw2QkFBNkIsQ0FHM0MsTUFPRDtJQUNDLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxjQUFjLElBQUssYUFBc0IsQ0FBQztJQUN4RSxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsZUFBZSxJQUFLLGVBQXdCLENBQUM7SUFDNUUsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsSUFBSyxRQUFzQixDQUFDO0lBQzFFLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxjQUFjLElBQUssT0FBcUIsQ0FBQztJQUV2RSxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssY0FBYyxFQUFFLENBQUM7UUFDbkMsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQztJQUNELElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxlQUFlLEVBQUUsQ0FBQztRQUNwQyxPQUFPLGVBQWUsQ0FBQztJQUN6QixDQUFDO0lBQ0QsSUFBSSxNQUFNLENBQUMsV0FBVyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQzNCLE9BQU8sY0FBYyxDQUFDO0lBQ3hCLENBQUM7SUFDRCxPQUFPLGVBQWUsQ0FBQztBQUN6QixDQUFDO0FBb0JELE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxLQUFhO0lBQy9DLElBQUksTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3pCLE9BQU8sQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUtELE1BQU0sVUFBVSxvQkFBb0IsQ0FDbEMsS0FBK0M7SUFFL0MsT0FBTyxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdkQsQ0FBQztBQUtELE1BQU0sVUFBVSxpQkFBaUIsQ0FDL0IsTUFBdUIsRUFDdkIsVUFBb0MsRUFBRTtJQUV0QyxPQUFPLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFO1FBQzNDLEtBQUssRUFBRSxVQUFVO1FBQ2pCLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUTtRQUN6QixxQkFBcUIsRUFBRSxPQUFPLENBQUMscUJBQXFCLElBQUksQ0FBQztRQUN6RCxxQkFBcUIsRUFBRSxPQUFPLENBQUMscUJBQXFCO0tBQ3JELENBQUMsQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDaEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEJpbGxpbmdMZWRnZXJEaXJlY3Rpb25MaWtlID0gJ0NSRURJVCcgfCAnREVCSVQnO1xuXG4vKipcbiAqXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlQmlsbGluZ0xlZGdlckRpcmVjdGlvbjxcbiAgS2luZCBleHRlbmRzIHN0cmluZyxcbiAgRGlyZWN0aW9uIGV4dGVuZHMgQmlsbGluZ0xlZGdlckRpcmVjdGlvbkxpa2UgPSBCaWxsaW5nTGVkZ2VyRGlyZWN0aW9uTGlrZSxcbj4ocGFyYW1zOiB7XG4gIGtpbmQ6IEtpbmQ7XG4gIGRlbHRhQW1vdW50OiBudW1iZXI7XG4gIHVzYWdlRGViaXRLaW5kPzogS2luZDtcbiAgY3JlZGl0VG9wVXBLaW5kPzogS2luZDtcbiAgY3JlZGl0RGlyZWN0aW9uPzogRGlyZWN0aW9uO1xuICBkZWJpdERpcmVjdGlvbj86IERpcmVjdGlvbjtcbn0pOiBEaXJlY3Rpb24ge1xuICBjb25zdCB1c2FnZURlYml0S2luZCA9IHBhcmFtcy51c2FnZURlYml0S2luZCA/PyAoJ1VTQUdFX0RFQklUJyBhcyBLaW5kKTtcbiAgY29uc3QgY3JlZGl0VG9wVXBLaW5kID0gcGFyYW1zLmNyZWRpdFRvcFVwS2luZCA/PyAoJ0NSRURJVF9UT1BfVVAnIGFzIEtpbmQpO1xuICBjb25zdCBjcmVkaXREaXJlY3Rpb24gPSBwYXJhbXMuY3JlZGl0RGlyZWN0aW9uID8/ICgnQ1JFRElUJyBhcyBEaXJlY3Rpb24pO1xuICBjb25zdCBkZWJpdERpcmVjdGlvbiA9IHBhcmFtcy5kZWJpdERpcmVjdGlvbiA/PyAoJ0RFQklUJyBhcyBEaXJlY3Rpb24pO1xuXG4gIGlmIChwYXJhbXMua2luZCA9PT0gdXNhZ2VEZWJpdEtpbmQpIHtcbiAgICByZXR1cm4gZGViaXREaXJlY3Rpb247XG4gIH1cbiAgaWYgKHBhcmFtcy5raW5kID09PSBjcmVkaXRUb3BVcEtpbmQpIHtcbiAgICByZXR1cm4gY3JlZGl0RGlyZWN0aW9uO1xuICB9XG4gIGlmIChwYXJhbXMuZGVsdGFBbW91bnQgPCAwKSB7XG4gICAgcmV0dXJuIGRlYml0RGlyZWN0aW9uO1xuICB9XG4gIHJldHVybiBjcmVkaXREaXJlY3Rpb247XG59XG5cbmV4cG9ydCB0eXBlIE1vbmV5QW1vdW50TGlrZTxDdXJyZW5jeSBleHRlbmRzIHN0cmluZyA9IHN0cmluZz4gPSB7XG4gIHJlYWRvbmx5IGFtb3VudDogbnVtYmVyO1xuICByZWFkb25seSBjdXJyZW5jeTogQ3VycmVuY3k7XG59O1xuXG5leHBvcnQgdHlwZSBCaWxsaW5nU2NvcGVVc2FnZUxpa2UgPSB7XG4gIHJlYWRvbmx5IGV2ZW50c0NvdW50PzogbnVtYmVyIHwgbnVsbDtcbn07XG5cbmV4cG9ydCB0eXBlIEZvcm1hdE1vbmV5QW1vdW50T3B0aW9ucyA9IHtcbiAgcmVhZG9ubHkgbG9jYWxlPzogc3RyaW5nIHwgcmVhZG9ubHkgc3RyaW5nW107XG4gIHJlYWRvbmx5IG1heGltdW1GcmFjdGlvbkRpZ2l0cz86IG51bWJlcjtcbiAgcmVhZG9ubHkgbWluaW11bUZyYWN0aW9uRGlnaXRzPzogbnVtYmVyO1xufTtcblxuLyoqXG4gKlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplU2lnbmVkWmVybyh2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgaWYgKE9iamVjdC5pcyh2YWx1ZSwgLTApKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG4vKipcbiAqXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYXNCaWxsaW5nU2NvcGVVc2FnZShcbiAgdG90YWw6IEJpbGxpbmdTY29wZVVzYWdlTGlrZSB8IG51bGwgfCB1bmRlZmluZWQsXG4pOiBib29sZWFuIHtcbiAgcmV0dXJuIHRvdGFsICE9IG51bGwgJiYgKHRvdGFsLmV2ZW50c0NvdW50ID8/IDApID4gMDtcbn1cblxuLyoqXG4gKlxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0TW9uZXlBbW91bnQoXG4gIGFtb3VudDogTW9uZXlBbW91bnRMaWtlLFxuICBvcHRpb25zOiBGb3JtYXRNb25leUFtb3VudE9wdGlvbnMgPSB7fSxcbik6IHN0cmluZyB7XG4gIHJldHVybiBuZXcgSW50bC5OdW1iZXJGb3JtYXQob3B0aW9ucy5sb2NhbGUsIHtcbiAgICBzdHlsZTogJ2N1cnJlbmN5JyxcbiAgICBjdXJyZW5jeTogYW1vdW50LmN1cnJlbmN5LFxuICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogb3B0aW9ucy5tYXhpbXVtRnJhY3Rpb25EaWdpdHMgPz8gNixcbiAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IG9wdGlvbnMubWluaW11bUZyYWN0aW9uRGlnaXRzLFxuICB9KS5mb3JtYXQobm9ybWFsaXplU2lnbmVkWmVybyhhbW91bnQuYW1vdW50KSk7XG59XG4iXX0=
@@ -0,0 +1,15 @@
1
+ import type { BackofficeColumnSpec, BackofficeFieldSize, I18nLabel } from '../types.js';
2
+ export type BackofficeColumnDefinition<RowView, ColumnId extends keyof RowView & string> = {
3
+ key: ColumnId;
4
+ size: BackofficeFieldSize;
5
+ header: I18nLabel;
6
+ copy?: BackofficeColumnSpec<RowView>['copy'];
7
+ cell?: BackofficeColumnSpec<RowView>['cell'];
8
+ visibility?: BackofficeColumnSpec<RowView>['visibility'];
9
+ };
10
+ export type DefineBackofficeColumnsOptions = {
11
+ entity: string;
12
+ defaultCell?: 'auto' | 'none';
13
+ };
14
+ export declare const defineColumns: <RowView extends object>() => <ColumnId extends keyof RowView & string>(columns: readonly BackofficeColumnDefinition<RowView, ColumnId>[], options: DefineBackofficeColumnsOptions) => readonly BackofficeColumnSpec<RowView>[];
15
+ //# sourceMappingURL=columns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"columns.d.ts","sourceRoot":"","sources":["../../../src/config/columns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,mBAAmB,EACnB,SAAS,EACV,MAAM,aAAa,CAAC;AAoIrB,MAAM,MAAM,0BAA0B,CACpC,OAAO,EACP,QAAQ,SAAS,MAAM,OAAO,GAAG,MAAM,IACrC;IACF,GAAG,EAAE,QAAQ,CAAC;IACd,IAAI,EAAE,mBAAmB,CAAC;IAC1B,MAAM,EAAE,SAAS,CAAC;IAClB,IAAI,CAAC,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;IAC7C,IAAI,CAAC,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;IAC7C,UAAU,CAAC,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC;CAC1D,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC/B,CAAC;AAsCF,eAAO,MAAM,aAAa,GAAI,OAAO,SAAS,MAAM,QAC1C,QAAQ,SAAS,MAAM,OAAO,GAAG,MAAM,EAC7C,SAAS,SAAS,0BAA0B,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,EACjE,SAAS,8BAA8B,KACtC,SAAS,oBAAoB,CAAC,OAAO,CAAC,EA8B1C,CAAC"}
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0YWlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbmZpZy9kZXRhaWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxZQUFZLE1BQU0sZUFBZSxDQUFDO0FBUXpDLE9BQU8sRUFBRSxxQkFBcUIsRUFBc0IsTUFBTSxhQUFhLENBQUM7QUFFeEUsTUFBTSxFQUFFLGFBQWEsRUFBRSxHQUFHLFlBQVksQ0FBQztBQUV2QyxNQUFNLGdCQUFnQixHQUFjLENBQUMsQ0FBQyxFQUFFLEVBQUU7SUFDeEMsT0FBTyxDQUFDLENBQUMsOEJBQThCLENBQUMsQ0FBQztBQUMzQyxDQUFDLENBQUM7QUFDRixNQUFNLGdCQUFnQixHQUFjLENBQUMsQ0FBQyxFQUFFLEVBQUU7SUFDeEMsT0FBTyxDQUFDLENBQUMsOEJBQThCLENBQUMsQ0FBQztBQUMzQyxDQUFDLENBQUM7QUFDRixNQUFNLFVBQVUsR0FBRztJQUNqQixNQUFNO0lBQ04sT0FBTztJQUNQLE9BQU87SUFDUCxNQUFNO0lBQ04sVUFBVTtJQUNWLE9BQU87SUFDUCxTQUFTO0lBQ1QsS0FBSztDQUNHLENBQUM7QUFTWCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFVLElBRTdDLEVBQWtCLEVBQUU7SUFDbkIsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQztJQUN0QixJQUFJLElBQUksSUFBSSxJQUFJLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDN0MsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0QsTUFBTSxFQUFFLENBQUMsYUFBYSxDQUFDLEVBQUUsV0FBVyxFQUFFLEdBQUcsSUFBK0IsQ0FBQztJQUN6RSxJQUFJLFdBQVcsSUFBSSxJQUFJLElBQUksT0FBTyxXQUFXLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDM0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsQ0FDeEIsSUFBVSxFQUNLLEVBQUU7SUFDakIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUN0QixJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztRQUN4QixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUMzQixJQUFVLEVBQ0ssRUFBRTtJQUNqQixNQUFNLEtBQUssR0FBRyxxQkFBcUIsQ0FBQyxJQUFxQixFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ3ZFLElBQUksS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ2xCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3ZCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQy9CLElBQVUsRUFDVixHQUE4QixFQUNOLEVBQUU7SUFDMUIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pCLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUSxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzdELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFDRCxJQUFJLFNBQVMsR0FBMEIsU0FBUyxDQUFDO0lBQ2pELElBQUksR0FBRyxLQUFLLFdBQVcsRUFBRSxDQUFDO1FBQ3hCLFNBQVMsR0FBRyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUNELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMvQixJQUFJLE1BQU0sSUFBSSxJQUFJLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDakQsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLE1BQXVCLENBQUM7UUFDdkMsSUFBSSxPQUFPLEVBQUUsS0FBSyxRQUFRLElBQUksT0FBTyxFQUFFLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDckQsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsQ0FFcEMsT0FFRCxFQUE4QyxFQUFFO0lBQy9DLE1BQU0sTUFBTSxHQUFzQyxFQUFFLENBQUM7SUFFckQsSUFBSSxPQUFPLEVBQUUsaUJBQWlCLElBQUksSUFBSSxFQUFFLENBQUM7UUFDdkMsTUFBTSxDQUFDLElBQUksQ0FDVDtZQUNFLElBQUksRUFBRSxVQUFVO1lBQ2hCLElBQUksRUFBRSxHQUFHO1lBQ1QsS0FBSyxFQUFFLGdCQUFnQjtZQUN2QixLQUFLLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDZCxPQUFPLGlCQUFpQixDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztZQUM5QyxDQUFDO1NBQ0YsRUFDRDtZQUNFLElBQUksRUFBRSxVQUFVO1lBQ2hCLElBQUksRUFBRSxHQUFHO1lBQ1QsS0FBSyxFQUFFLGdCQUFnQjtZQUN2QixLQUFLLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDZCxPQUFPLGlCQUFpQixDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztZQUM5QyxDQUFDO1NBQ0YsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLENBR3JDLEtBQWdCLEVBQ2hCLGNBQTBELEVBQUUsRUFDZCxFQUFFO0lBQ2hELE9BQU87UUFDTDtZQUNFLElBQUksRUFBRSxTQUFTO1lBQ2YsS0FBSztZQUNMLE1BQU0sRUFBRSxDQUFDLEdBQUcsV0FBVyxFQUFFLEdBQUcsc0JBQXNCLEVBQVEsQ0FBQztTQUM1RDtLQUNGLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxDQUV0QyxPQUdELEVBQXNDLEVBQUU7SUFDdkMsT0FBTztRQUNMLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSztRQUNwQixRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsS0FBSztRQUMzQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNuQixPQUFPLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QixDQUFDO1FBQ0QsRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDWCxPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQixDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLENBQ3ZDLElBQTZCLEVBQzdCLFFBQTRCLEVBQzVCLGFBRUMsRUFDVyxFQUFFO0lBQ2QsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxVQUFVLENBQUM7SUFDN0IsSUFBSSxRQUFRLElBQUksSUFBSSxJQUFJLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztRQUMvQyxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLElBQUksSUFBSSxDQUFDO0lBQ2hDLENBQUM7SUFDRCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7UUFDaEMsTUFBTSxFQUFFLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQyxPQUFPLEVBQUUsS0FBSyxRQUFRLENBQUM7SUFDekIsQ0FBQyxDQUFDLENBQUM7SUFDSCxPQUFPLEtBQUssRUFBRSxJQUFJLElBQUksSUFBSSxDQUFDO0FBQzdCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLEdBQWMsRUFBRTtJQUNwRCxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUU7UUFDWCxPQUFPLENBQUMsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQ3RDLENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWxheVJ1bnRpbWUgZnJvbSAncmVsYXktcnVudGltZSc7XG5cbmltcG9ydCB0eXBlIHtcbiAgQmFja29mZmljZURldGFpbENvbnRlbnRTcGVjLFxuICBCYWNrb2ZmaWNlRGV0YWlsRmllbGRTcGVjLFxuICBCYWNrb2ZmaWNlRGV0YWlsSGVhZGVyQ29uZmlnLFxuICBJMThuTGFiZWwsXG59IGZyb20gJy4uL3R5cGVzLmpzJztcbmltcG9ydCB7IHJlYWRSZWNvcmRWYWx1ZUJ5S2V5cywgdHlwZSBVbmtub3duUmVjb3JkIH0gZnJvbSAnLi9yZWNvcmQuanMnO1xuXG5jb25zdCB7IEZSQUdNRU5UU19LRVkgfSA9IFJlbGF5UnVudGltZTtcblxuY29uc3QgQ1JFQVRFRF9BVF9MQUJFTDogSTE4bkxhYmVsID0gKHQpID0+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"}