@aderis-erp/cli 1.0.15 → 1.0.17

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 (163) hide show
  1. package/README.md +30 -8
  2. package/dist/commands/access-groups.d.ts +0 -1
  3. package/dist/commands/access-groups.js +5 -61
  4. package/dist/commands/account-transaction-allocations.d.ts +0 -1
  5. package/dist/commands/account-transaction-allocations.js +5 -61
  6. package/dist/commands/account-transactions.d.ts +0 -1
  7. package/dist/commands/account-transactions.js +9 -63
  8. package/dist/commands/accounts.d.ts +0 -1
  9. package/dist/commands/accounts.js +5 -61
  10. package/dist/commands/agent-platform.d.ts +0 -1
  11. package/dist/commands/agent-platform.js +5 -61
  12. package/dist/commands/analytics.d.ts +0 -1
  13. package/dist/commands/analytics.js +5 -61
  14. package/dist/commands/api-keys.d.ts +39 -0
  15. package/dist/commands/api-keys.js +1117 -0
  16. package/dist/commands/audit-log.d.ts +0 -1
  17. package/dist/commands/audit-log.js +5 -61
  18. package/dist/commands/auth/login.d.ts +9 -0
  19. package/dist/commands/auth/login.js +73 -20
  20. package/dist/commands/auth/logout.d.ts +4 -0
  21. package/dist/commands/auth/logout.js +4 -0
  22. package/dist/commands/auth/status.js +26 -17
  23. package/dist/commands/auth/tenant.js +3 -6
  24. package/dist/commands/auth.d.ts +0 -1
  25. package/dist/commands/auth.js +5 -34
  26. package/dist/commands/bank-accounts.d.ts +0 -1
  27. package/dist/commands/bank-accounts.js +5 -61
  28. package/dist/commands/bank-integrations.d.ts +0 -1
  29. package/dist/commands/bank-integrations.js +5 -61
  30. package/dist/commands/business-partners.d.ts +1 -1
  31. package/dist/commands/business-partners.js +14 -63
  32. package/dist/commands/chat.d.ts +0 -1
  33. package/dist/commands/chat.js +5 -61
  34. package/dist/commands/config/add.d.ts +3 -0
  35. package/dist/commands/config/add.js +34 -16
  36. package/dist/commands/config/current.js +3 -0
  37. package/dist/commands/config/list.js +3 -0
  38. package/dist/commands/credit-card-accounts.d.ts +0 -1
  39. package/dist/commands/credit-card-accounts.js +5 -61
  40. package/dist/commands/delivery-notes.d.ts +0 -1
  41. package/dist/commands/delivery-notes.js +7 -63
  42. package/dist/commands/dunning-configs.d.ts +0 -1
  43. package/dist/commands/dunning-configs.js +5 -61
  44. package/dist/commands/dunning-reminders.d.ts +0 -1
  45. package/dist/commands/dunning-reminders.js +5 -61
  46. package/dist/commands/dunning-runs.d.ts +0 -1
  47. package/dist/commands/dunning-runs.js +5 -61
  48. package/dist/commands/email-transactions.d.ts +0 -1
  49. package/dist/commands/email-transactions.js +5 -61
  50. package/dist/commands/employees.d.ts +0 -1
  51. package/dist/commands/employees.js +5 -61
  52. package/dist/commands/entity-configurations.d.ts +0 -1
  53. package/dist/commands/entity-configurations.js +5 -61
  54. package/dist/commands/event-processor-mappings.d.ts +0 -1
  55. package/dist/commands/event-processor-mappings.js +5 -61
  56. package/dist/commands/files.d.ts +0 -1
  57. package/dist/commands/files.js +5 -61
  58. package/dist/commands/health.d.ts +0 -1
  59. package/dist/commands/health.js +5 -61
  60. package/dist/commands/inbox.d.ts +0 -1
  61. package/dist/commands/inbox.js +5 -61
  62. package/dist/commands/integrations.d.ts +0 -1
  63. package/dist/commands/integrations.js +5 -61
  64. package/dist/commands/item-categories.d.ts +0 -1
  65. package/dist/commands/item-categories.js +5 -61
  66. package/dist/commands/items.d.ts +0 -1
  67. package/dist/commands/items.js +5 -61
  68. package/dist/commands/journal-lines.d.ts +0 -1
  69. package/dist/commands/journal-lines.js +5 -61
  70. package/dist/commands/journals.d.ts +1 -1
  71. package/dist/commands/journals.js +9 -62
  72. package/dist/commands/ledgers.d.ts +0 -1
  73. package/dist/commands/ledgers.js +5 -61
  74. package/dist/commands/nango-integrations.d.ts +39 -0
  75. package/dist/commands/nango-integrations.js +1115 -0
  76. package/dist/commands/office-locations.d.ts +0 -1
  77. package/dist/commands/office-locations.js +5 -61
  78. package/dist/commands/payment-methods.d.ts +0 -1
  79. package/dist/commands/payment-methods.js +5 -61
  80. package/dist/commands/payment-runs.d.ts +0 -1
  81. package/dist/commands/payment-runs.js +5 -61
  82. package/dist/commands/payment-terms.d.ts +0 -1
  83. package/dist/commands/payment-terms.js +5 -61
  84. package/dist/commands/payments.d.ts +0 -1
  85. package/dist/commands/payments.js +5 -61
  86. package/dist/commands/price-lists.d.ts +0 -1
  87. package/dist/commands/price-lists.js +5 -61
  88. package/dist/commands/processor-mappings.d.ts +0 -1
  89. package/dist/commands/processor-mappings.js +5 -61
  90. package/dist/commands/processors.d.ts +0 -1
  91. package/dist/commands/processors.js +5 -61
  92. package/dist/commands/purchase-order-types.d.ts +0 -1
  93. package/dist/commands/purchase-order-types.js +5 -61
  94. package/dist/commands/purchase-orders.d.ts +0 -1
  95. package/dist/commands/purchase-orders.js +7 -63
  96. package/dist/commands/reports.d.ts +0 -1
  97. package/dist/commands/reports.js +6 -62
  98. package/dist/commands/salary-types.d.ts +0 -1
  99. package/dist/commands/salary-types.js +5 -61
  100. package/dist/commands/sales-invoices.d.ts +0 -1
  101. package/dist/commands/sales-invoices.js +12 -65
  102. package/dist/commands/sales-orders.d.ts +0 -1
  103. package/dist/commands/sales-orders.js +7 -63
  104. package/dist/commands/saved-views.d.ts +0 -1
  105. package/dist/commands/saved-views.js +5 -61
  106. package/dist/commands/scheduled-processor-mappings.d.ts +0 -1
  107. package/dist/commands/scheduled-processor-mappings.js +5 -61
  108. package/dist/commands/schedules.d.ts +0 -1
  109. package/dist/commands/schedules.js +5 -61
  110. package/dist/commands/switch.js +4 -4
  111. package/dist/commands/tag-configurations.d.ts +0 -1
  112. package/dist/commands/tag-configurations.js +9 -64
  113. package/dist/commands/tags.d.ts +0 -1
  114. package/dist/commands/tags.js +5 -61
  115. package/dist/commands/tax-codes.d.ts +0 -1
  116. package/dist/commands/tax-codes.js +5 -61
  117. package/dist/commands/tax-matrix.d.ts +0 -1
  118. package/dist/commands/tax-matrix.js +5 -61
  119. package/dist/commands/tenants.d.ts +0 -1
  120. package/dist/commands/tenants.js +7 -62
  121. package/dist/commands/text-templates.d.ts +0 -1
  122. package/dist/commands/text-templates.js +5 -61
  123. package/dist/commands/tools.d.ts +0 -1
  124. package/dist/commands/tools.js +5 -61
  125. package/dist/commands/vat-declarations.d.ts +1 -1
  126. package/dist/commands/vat-declarations.js +11 -62
  127. package/dist/commands/vendor-invoices.d.ts +0 -1
  128. package/dist/commands/vendor-invoices.js +10 -65
  129. package/dist/commands/webhooks.d.ts +0 -1
  130. package/dist/commands/webhooks.js +5 -61
  131. package/dist/commands/workflows.d.ts +0 -1
  132. package/dist/commands/workflows.js +5 -61
  133. package/dist/lib/api-client.js +3 -6
  134. package/dist/lib/auth/constants.d.ts +11 -0
  135. package/dist/lib/auth/constants.js +11 -0
  136. package/dist/lib/auth/errors.d.ts +17 -0
  137. package/dist/lib/auth/errors.js +22 -0
  138. package/dist/lib/auth/flow.d.ts +27 -0
  139. package/dist/lib/auth/flow.js +163 -0
  140. package/dist/lib/auth/guards.d.ts +5 -0
  141. package/dist/lib/auth/guards.js +14 -0
  142. package/dist/lib/auth/http.d.ts +16 -0
  143. package/dist/lib/auth/http.js +49 -0
  144. package/dist/lib/auth/index.d.ts +49 -0
  145. package/dist/lib/auth/index.js +217 -0
  146. package/dist/lib/auth/keycloak-provider.d.ts +75 -0
  147. package/dist/lib/auth/keycloak-provider.js +215 -0
  148. package/dist/lib/auth/pages.d.ts +25 -0
  149. package/dist/lib/auth/pages.js +123 -0
  150. package/dist/lib/auth/pkce.d.ts +11 -0
  151. package/dist/lib/auth/pkce.js +17 -0
  152. package/dist/lib/auth/tokens.d.ts +54 -0
  153. package/dist/lib/auth/tokens.js +104 -0
  154. package/dist/lib/auth/types.d.ts +57 -0
  155. package/dist/lib/auth/types.js +1 -0
  156. package/dist/lib/auth/validated-url.d.ts +6 -0
  157. package/dist/lib/auth/validated-url.js +53 -0
  158. package/dist/lib/config.d.ts +13 -3
  159. package/dist/lib/config.js +24 -19
  160. package/oclif.manifest.json +440 -71
  161. package/package.json +2 -1
  162. package/dist/lib/auth.d.ts +0 -43
  163. package/dist/lib/auth.js +0 -610
@@ -41,7 +41,7 @@ export default class AgentPlatform extends Command {
41
41
  'sort-by': Flags.string({ description: 'Sort field(s), comma-separated. Direction (:ASC/:DESC) is optional; date-like fields default to DESC, others to ASC.' }),
42
42
  filter: Flags.string({ description: 'Filter (e.g. --filter status=ACTIVE). Operators: in:A,B, like:%, gt:, lt:, null:', multiple: true }),
43
43
  query: Flags.string({ description: 'Additional query params as JSON' }),
44
- fields: Flags.string({ description: 'Comma-separated list of fields to show (e.g. --fields=id,name,status)' }),
44
+ fields: Flags.string({ description: 'Comma-separated list of fields to return, applied by the API (e.g. --fields=id,name,status)' }),
45
45
  sanitize: Flags.boolean({ description: 'Remove null values, audit fields, and duplicate UUIDs from output' }),
46
46
  'show-http-request': Flags.boolean({ description: 'Show HTTP request details (method, URL, body)' }),
47
47
  };
@@ -113,6 +113,8 @@ export default class AgentPlatform extends Command {
113
113
  queryParams.search = flags.search;
114
114
  if (flags['sort-by'])
115
115
  queryParams.sortBy = normalizeSortBy(flags['sort-by']);
116
+ if (flags.fields)
117
+ queryParams.fields = flags.fields;
116
118
  if (flags.query) {
117
119
  try {
118
120
  Object.assign(queryParams, JSON.parse(flags.query));
@@ -315,11 +317,6 @@ export default class AgentPlatform extends Command {
315
317
  output = obj[arrayKeys[0]];
316
318
  }
317
319
  }
318
- // Filter fields if --fields flag is provided
319
- if (flags.fields) {
320
- const fieldList = flags.fields.split(',').map(f => f.trim());
321
- output = this.filterFields(output, fieldList);
322
- }
323
320
  // Sanitize output if requested
324
321
  if (flags.sanitize) {
325
322
  output = this.sanitizeOutput(output);
@@ -574,6 +571,8 @@ export default class AgentPlatform extends Command {
574
571
  baseParams.sortBy = normalizeSortBy(flags['sort-by']);
575
572
  if (flags.include)
576
573
  baseParams.include = flags.include;
574
+ if (flags.fields)
575
+ baseParams.fields = flags.fields;
577
576
  if (flags.query) {
578
577
  try {
579
578
  Object.assign(baseParams, JSON.parse(flags.query));
@@ -628,12 +627,7 @@ export default class AgentPlatform extends Command {
628
627
  }
629
628
  }
630
629
  process.stderr.write(' done\n');
631
- // Filter fields if specified
632
630
  let output = allItems;
633
- if (flags.fields) {
634
- const fieldList = flags.fields.split(',').map(f => f.trim());
635
- output = this.filterFields(allItems, fieldList);
636
- }
637
631
  // Sanitize output if requested
638
632
  if (flags.sanitize) {
639
633
  output = this.sanitizeOutput(output);
@@ -962,56 +956,6 @@ export default class AgentPlatform extends Command {
962
956
  return `\$${op}`;
963
957
  return opRe.test(rest) ? `\$${op}:${this.parseFilterValue(rest)}` : `\$${op}:${rest}`;
964
958
  }
965
- filterFields(data, fields) {
966
- const isUnsafeKey = (k) => k === '__proto__' || k === 'constructor' || k === 'prototype';
967
- const pick = (obj, keys) => {
968
- // Group keys by their first segment so sibling sub-paths
969
- // (e.g. 'items.amount' + 'items._type') resolve in one recursive pass
970
- // and don't clobber each other on merge.
971
- const directKeys = new Set();
972
- const nestedKeys = new Map();
973
- for (const key of keys) {
974
- if (key.split('.').some(isUnsafeKey))
975
- continue;
976
- if (key.includes('.')) {
977
- const [first, ...rest] = key.split('.');
978
- if (isUnsafeKey(first))
979
- continue;
980
- const list = nestedKeys.get(first);
981
- if (list) {
982
- list.push(rest.join('.'));
983
- }
984
- else {
985
- nestedKeys.set(first, [rest.join('.')]);
986
- }
987
- }
988
- else {
989
- directKeys.add(key);
990
- }
991
- }
992
- const result = {};
993
- for (const key of directKeys) {
994
- if (key in obj)
995
- result[key] = obj[key];
996
- }
997
- for (const [first, restKeys] of nestedKeys) {
998
- const val = obj[first];
999
- if (!val || typeof val !== 'object')
1000
- continue;
1001
- if (Array.isArray(val)) {
1002
- result[first] = val.map(item => pick(item, restKeys));
1003
- }
1004
- else {
1005
- result[first] = pick(val, restKeys);
1006
- }
1007
- }
1008
- return result;
1009
- };
1010
- if (Array.isArray(data)) {
1011
- return data.map(item => pick(item, fields));
1012
- }
1013
- return pick(data, fields);
1014
- }
1015
959
  sanitizeOutput(data) {
1016
960
  const auditFields = ['_type', 'tenantId', 'createdAt', 'updatedAt', 'createdBy', 'updatedBy'];
1017
961
  const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
@@ -31,7 +31,6 @@ export default class Analytics extends Command {
31
31
  private runCamt053Import;
32
32
  private runNestedImport;
33
33
  private parseFilterValue;
34
- private filterFields;
35
34
  private sanitizeOutput;
36
35
  private getColumns;
37
36
  private getValue;
@@ -34,7 +34,7 @@ export default class Analytics extends Command {
34
34
  'sort-by': Flags.string({ description: 'Sort field(s), comma-separated. Direction (:ASC/:DESC) is optional; date-like fields default to DESC, others to ASC.' }),
35
35
  filter: Flags.string({ description: 'Filter (e.g. --filter status=ACTIVE). Operators: in:A,B, like:%, gt:, lt:, null:', multiple: true }),
36
36
  query: Flags.string({ description: 'Additional query params as JSON' }),
37
- fields: Flags.string({ description: 'Comma-separated list of fields to show (e.g. --fields=id,name,status)' }),
37
+ fields: Flags.string({ description: 'Comma-separated list of fields to return, applied by the API (e.g. --fields=id,name,status)' }),
38
38
  sanitize: Flags.boolean({ description: 'Remove null values, audit fields, and duplicate UUIDs from output' }),
39
39
  'show-http-request': Flags.boolean({ description: 'Show HTTP request details (method, URL, body)' }),
40
40
  };
@@ -106,6 +106,8 @@ export default class Analytics extends Command {
106
106
  queryParams.search = flags.search;
107
107
  if (flags['sort-by'])
108
108
  queryParams.sortBy = normalizeSortBy(flags['sort-by']);
109
+ if (flags.fields)
110
+ queryParams.fields = flags.fields;
109
111
  if (flags.query) {
110
112
  try {
111
113
  Object.assign(queryParams, JSON.parse(flags.query));
@@ -308,11 +310,6 @@ export default class Analytics extends Command {
308
310
  output = obj[arrayKeys[0]];
309
311
  }
310
312
  }
311
- // Filter fields if --fields flag is provided
312
- if (flags.fields) {
313
- const fieldList = flags.fields.split(',').map(f => f.trim());
314
- output = this.filterFields(output, fieldList);
315
- }
316
313
  // Sanitize output if requested
317
314
  if (flags.sanitize) {
318
315
  output = this.sanitizeOutput(output);
@@ -567,6 +564,8 @@ export default class Analytics extends Command {
567
564
  baseParams.sortBy = normalizeSortBy(flags['sort-by']);
568
565
  if (flags.include)
569
566
  baseParams.include = flags.include;
567
+ if (flags.fields)
568
+ baseParams.fields = flags.fields;
570
569
  if (flags.query) {
571
570
  try {
572
571
  Object.assign(baseParams, JSON.parse(flags.query));
@@ -621,12 +620,7 @@ export default class Analytics extends Command {
621
620
  }
622
621
  }
623
622
  process.stderr.write(' done\n');
624
- // Filter fields if specified
625
623
  let output = allItems;
626
- if (flags.fields) {
627
- const fieldList = flags.fields.split(',').map(f => f.trim());
628
- output = this.filterFields(allItems, fieldList);
629
- }
630
624
  // Sanitize output if requested
631
625
  if (flags.sanitize) {
632
626
  output = this.sanitizeOutput(output);
@@ -955,56 +949,6 @@ export default class Analytics extends Command {
955
949
  return `\$${op}`;
956
950
  return opRe.test(rest) ? `\$${op}:${this.parseFilterValue(rest)}` : `\$${op}:${rest}`;
957
951
  }
958
- filterFields(data, fields) {
959
- const isUnsafeKey = (k) => k === '__proto__' || k === 'constructor' || k === 'prototype';
960
- const pick = (obj, keys) => {
961
- // Group keys by their first segment so sibling sub-paths
962
- // (e.g. 'items.amount' + 'items._type') resolve in one recursive pass
963
- // and don't clobber each other on merge.
964
- const directKeys = new Set();
965
- const nestedKeys = new Map();
966
- for (const key of keys) {
967
- if (key.split('.').some(isUnsafeKey))
968
- continue;
969
- if (key.includes('.')) {
970
- const [first, ...rest] = key.split('.');
971
- if (isUnsafeKey(first))
972
- continue;
973
- const list = nestedKeys.get(first);
974
- if (list) {
975
- list.push(rest.join('.'));
976
- }
977
- else {
978
- nestedKeys.set(first, [rest.join('.')]);
979
- }
980
- }
981
- else {
982
- directKeys.add(key);
983
- }
984
- }
985
- const result = {};
986
- for (const key of directKeys) {
987
- if (key in obj)
988
- result[key] = obj[key];
989
- }
990
- for (const [first, restKeys] of nestedKeys) {
991
- const val = obj[first];
992
- if (!val || typeof val !== 'object')
993
- continue;
994
- if (Array.isArray(val)) {
995
- result[first] = val.map(item => pick(item, restKeys));
996
- }
997
- else {
998
- result[first] = pick(val, restKeys);
999
- }
1000
- }
1001
- return result;
1002
- };
1003
- if (Array.isArray(data)) {
1004
- return data.map(item => pick(item, fields));
1005
- }
1006
- return pick(data, fields);
1007
- }
1008
952
  sanitizeOutput(data) {
1009
953
  const auditFields = ['_type', 'tenantId', 'createdAt', 'updatedAt', 'createdBy', 'updatedBy'];
1010
954
  const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
@@ -0,0 +1,39 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class ApiKeys extends Command {
3
+ static description: string;
4
+ static examples: string[];
5
+ static args: {
6
+ action: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
7
+ id: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
8
+ };
9
+ static flags: {
10
+ context: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
+ output: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
+ table: import("@oclif/core/interfaces").BooleanFlag<boolean>;
13
+ csv: import("@oclif/core/interfaces").BooleanFlag<boolean>;
14
+ data: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
15
+ file: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
16
+ set: import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
17
+ page: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
18
+ limit: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
19
+ include: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
20
+ search: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
21
+ 'sort-by': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
22
+ filter: import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
23
+ query: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
24
+ fields: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
25
+ sanitize: import("@oclif/core/interfaces").BooleanFlag<boolean>;
26
+ 'show-http-request': import("@oclif/core/interfaces").BooleanFlag<boolean>;
27
+ };
28
+ run(): Promise<void>;
29
+ private runImport;
30
+ private runExport;
31
+ private runCamt053Import;
32
+ private runNestedImport;
33
+ private parseFilterValue;
34
+ private sanitizeOutput;
35
+ private getColumns;
36
+ private getValue;
37
+ private printTable;
38
+ private printCsv;
39
+ }