@sonisoft/now-sdk-ext-cli 2.0.0-alpha.0 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2912 -313
- package/dist/commands/aggregate/count.d.ts +16 -0
- package/dist/commands/aggregate/count.d.ts.map +1 -0
- package/dist/commands/aggregate/count.js +67 -0
- package/dist/commands/aggregate/count.js.map +1 -0
- package/dist/commands/aggregate/group.d.ts +24 -0
- package/dist/commands/aggregate/group.d.ts.map +1 -0
- package/dist/commands/aggregate/group.js +120 -0
- package/dist/commands/aggregate/group.js.map +1 -0
- package/dist/commands/aggregate/query.d.ts +21 -0
- package/dist/commands/aggregate/query.d.ts.map +1 -0
- package/dist/commands/aggregate/query.js +100 -0
- package/dist/commands/aggregate/query.js.map +1 -0
- package/dist/commands/app/index.d.ts +0 -1
- package/dist/commands/app/index.d.ts.map +1 -1
- package/dist/commands/app/index.js +2 -2
- package/dist/commands/app/index.js.map +1 -1
- package/dist/commands/app/install.d.ts +0 -1
- package/dist/commands/app/install.d.ts.map +1 -1
- package/dist/commands/app/install.js +1 -2
- package/dist/commands/app/install.js.map +1 -1
- package/dist/commands/app/repo-install.d.ts +0 -1
- package/dist/commands/app/repo-install.d.ts.map +1 -1
- package/dist/commands/app/repo-install.js +1 -3
- package/dist/commands/app/repo-install.js.map +1 -1
- package/dist/commands/app/repo-list.d.ts +0 -1
- package/dist/commands/app/repo-list.d.ts.map +1 -1
- package/dist/commands/app/repo-list.js +1 -3
- package/dist/commands/app/repo-list.js.map +1 -1
- package/dist/commands/app/uninstall.d.ts +0 -1
- package/dist/commands/app/uninstall.d.ts.map +1 -1
- package/dist/commands/app/uninstall.js +1 -2
- package/dist/commands/app/uninstall.js.map +1 -1
- package/dist/commands/atf/index.d.ts +0 -46
- package/dist/commands/atf/index.d.ts.map +1 -1
- package/dist/commands/atf/index.js +48 -121
- package/dist/commands/atf/index.js.map +1 -1
- package/dist/commands/attachment/get.d.ts +14 -0
- package/dist/commands/attachment/get.d.ts.map +1 -0
- package/dist/commands/attachment/get.js +44 -0
- package/dist/commands/attachment/get.js.map +1 -0
- package/dist/commands/attachment/list.d.ts +16 -0
- package/dist/commands/attachment/list.d.ts.map +1 -0
- package/dist/commands/attachment/list.js +60 -0
- package/dist/commands/attachment/list.js.map +1 -0
- package/dist/commands/attachment/upload.d.ts +17 -0
- package/dist/commands/attachment/upload.d.ts.map +1 -0
- package/dist/commands/attachment/upload.js +71 -0
- package/dist/commands/attachment/upload.js.map +1 -0
- package/dist/commands/batch/create.d.ts +15 -0
- package/dist/commands/batch/create.d.ts.map +1 -0
- package/dist/commands/batch/create.js +56 -0
- package/dist/commands/batch/create.js.map +1 -0
- package/dist/commands/batch/update.d.ts +15 -0
- package/dist/commands/batch/update.d.ts.map +1 -0
- package/dist/commands/batch/update.js +56 -0
- package/dist/commands/batch/update.js.map +1 -0
- package/dist/commands/bulk/delete.d.ts +18 -0
- package/dist/commands/bulk/delete.d.ts.map +1 -0
- package/dist/commands/bulk/delete.js +95 -0
- package/dist/commands/bulk/delete.js.map +1 -0
- package/dist/commands/bulk/update.d.ts +19 -0
- package/dist/commands/bulk/update.d.ts.map +1 -0
- package/dist/commands/bulk/update.js +110 -0
- package/dist/commands/bulk/update.js.map +1 -0
- package/dist/commands/exec/index.d.ts +0 -1
- package/dist/commands/exec/index.d.ts.map +1 -1
- package/dist/commands/exec/index.js +12 -22
- package/dist/commands/exec/index.js.map +1 -1
- package/dist/commands/flow/action.d.ts +19 -0
- package/dist/commands/flow/action.d.ts.map +1 -0
- package/dist/commands/flow/action.js +88 -0
- package/dist/commands/flow/action.js.map +1 -0
- package/dist/commands/flow/cancel.d.ts +17 -0
- package/dist/commands/flow/cancel.d.ts.map +1 -0
- package/dist/commands/flow/cancel.js +60 -0
- package/dist/commands/flow/cancel.js.map +1 -0
- package/dist/commands/flow/error.d.ts +16 -0
- package/dist/commands/flow/error.d.ts.map +1 -0
- package/dist/commands/flow/error.js +51 -0
- package/dist/commands/flow/error.js.map +1 -0
- package/dist/commands/flow/message.d.ts +18 -0
- package/dist/commands/flow/message.d.ts.map +1 -0
- package/dist/commands/flow/message.js +66 -0
- package/dist/commands/flow/message.js.map +1 -0
- package/dist/commands/flow/outputs.d.ts +16 -0
- package/dist/commands/flow/outputs.d.ts.map +1 -0
- package/dist/commands/flow/outputs.js +55 -0
- package/dist/commands/flow/outputs.js.map +1 -0
- package/dist/commands/flow/run.d.ts +19 -0
- package/dist/commands/flow/run.d.ts.map +1 -0
- package/dist/commands/flow/run.js +98 -0
- package/dist/commands/flow/run.js.map +1 -0
- package/dist/commands/flow/status.d.ts +16 -0
- package/dist/commands/flow/status.d.ts.map +1 -0
- package/dist/commands/flow/status.js +52 -0
- package/dist/commands/flow/status.js.map +1 -0
- package/dist/commands/flow/subflow.d.ts +19 -0
- package/dist/commands/flow/subflow.d.ts.map +1 -0
- package/dist/commands/flow/subflow.js +92 -0
- package/dist/commands/flow/subflow.js.map +1 -0
- package/dist/commands/health/check.d.ts +20 -0
- package/dist/commands/health/check.d.ts.map +1 -0
- package/dist/commands/health/check.js +105 -0
- package/dist/commands/health/check.js.map +1 -0
- package/dist/commands/log/index.d.ts +2 -26
- package/dist/commands/log/index.d.ts.map +1 -1
- package/dist/commands/log/index.js +23 -251
- package/dist/commands/log/index.js.map +1 -1
- package/dist/commands/query/app.d.ts +17 -0
- package/dist/commands/query/app.d.ts.map +1 -0
- package/dist/commands/query/app.js +81 -0
- package/dist/commands/query/app.js.map +1 -0
- package/dist/commands/query/columns.d.ts +16 -0
- package/dist/commands/query/columns.d.ts.map +1 -0
- package/dist/commands/query/columns.js +76 -0
- package/dist/commands/query/columns.js.map +1 -0
- package/dist/commands/query/index.d.ts +19 -0
- package/dist/commands/query/index.d.ts.map +1 -0
- package/dist/commands/query/index.js +94 -0
- package/dist/commands/query/index.js.map +1 -0
- package/dist/commands/query/syslog.d.ts +16 -0
- package/dist/commands/query/syslog.d.ts.map +1 -0
- package/dist/commands/query/syslog.js +67 -0
- package/dist/commands/query/syslog.js.map +1 -0
- package/dist/commands/schema/field.d.ts +16 -0
- package/dist/commands/schema/field.d.ts.map +1 -0
- package/dist/commands/schema/field.js +62 -0
- package/dist/commands/schema/field.js.map +1 -0
- package/dist/commands/schema/index.d.ts +19 -0
- package/dist/commands/schema/index.d.ts.map +1 -0
- package/dist/commands/schema/index.js +90 -0
- package/dist/commands/schema/index.js.map +1 -0
- package/dist/commands/schema/validate-catalog.d.ts +15 -0
- package/dist/commands/schema/validate-catalog.d.ts.map +1 -0
- package/dist/commands/schema/validate-catalog.js +58 -0
- package/dist/commands/schema/validate-catalog.js.map +1 -0
- package/dist/commands/scope/index.d.ts +14 -0
- package/dist/commands/scope/index.d.ts.map +1 -0
- package/dist/commands/scope/index.js +58 -0
- package/dist/commands/scope/index.js.map +1 -0
- package/dist/commands/scope/set.d.ts +14 -0
- package/dist/commands/scope/set.d.ts.map +1 -0
- package/dist/commands/scope/set.js +44 -0
- package/dist/commands/scope/set.js.map +1 -0
- package/dist/commands/script-sync/pull.d.ts +16 -0
- package/dist/commands/script-sync/pull.d.ts.map +1 -0
- package/dist/commands/script-sync/pull.js +74 -0
- package/dist/commands/script-sync/pull.js.map +1 -0
- package/dist/commands/script-sync/push.d.ts +16 -0
- package/dist/commands/script-sync/push.d.ts.map +1 -0
- package/dist/commands/script-sync/push.js +73 -0
- package/dist/commands/script-sync/push.js.map +1 -0
- package/dist/commands/script-sync/sync.d.ts +15 -0
- package/dist/commands/script-sync/sync.d.ts.map +1 -0
- package/dist/commands/script-sync/sync.js +71 -0
- package/dist/commands/script-sync/sync.js.map +1 -0
- package/dist/commands/search/add-table.d.ts +16 -0
- package/dist/commands/search/add-table.d.ts.map +1 -0
- package/dist/commands/search/add-table.js +68 -0
- package/dist/commands/search/add-table.js.map +1 -0
- package/dist/commands/search/groups.d.ts +12 -0
- package/dist/commands/search/groups.d.ts.map +1 -0
- package/dist/commands/search/groups.js +42 -0
- package/dist/commands/search/groups.js.map +1 -0
- package/dist/commands/search/index.d.ts +18 -0
- package/dist/commands/search/index.d.ts.map +1 -0
- package/dist/commands/search/index.js +103 -0
- package/dist/commands/search/index.js.map +1 -0
- package/dist/commands/search/tables.d.ts +14 -0
- package/dist/commands/search/tables.d.ts.map +1 -0
- package/dist/commands/search/tables.js +50 -0
- package/dist/commands/search/tables.js.map +1 -0
- package/dist/commands/store/install.d.ts +19 -0
- package/dist/commands/store/install.d.ts.map +1 -0
- package/dist/commands/store/install.js +90 -0
- package/dist/commands/store/install.js.map +1 -0
- package/dist/commands/store/search.d.ts +16 -0
- package/dist/commands/store/search.d.ts.map +1 -0
- package/dist/commands/store/search.js +67 -0
- package/dist/commands/store/search.js.map +1 -0
- package/dist/commands/store/update.d.ts +18 -0
- package/dist/commands/store/update.d.ts.map +1 -0
- package/dist/commands/store/update.js +83 -0
- package/dist/commands/store/update.js.map +1 -0
- package/dist/commands/store/validate.d.ts +14 -0
- package/dist/commands/store/validate.d.ts.map +1 -0
- package/dist/commands/store/validate.js +43 -0
- package/dist/commands/store/validate.js.map +1 -0
- package/dist/commands/task/approve.d.ts +15 -0
- package/dist/commands/task/approve.d.ts.map +1 -0
- package/dist/commands/task/approve.js +66 -0
- package/dist/commands/task/approve.js.map +1 -0
- package/dist/commands/task/assign.d.ts +17 -0
- package/dist/commands/task/assign.d.ts.map +1 -0
- package/dist/commands/task/assign.js +86 -0
- package/dist/commands/task/assign.js.map +1 -0
- package/dist/commands/task/close.d.ts +16 -0
- package/dist/commands/task/close.d.ts.map +1 -0
- package/dist/commands/task/close.js +71 -0
- package/dist/commands/task/close.js.map +1 -0
- package/dist/commands/task/comment.d.ts +17 -0
- package/dist/commands/task/comment.d.ts.map +1 -0
- package/dist/commands/task/comment.js +86 -0
- package/dist/commands/task/comment.js.map +1 -0
- package/dist/commands/task/find.d.ts +15 -0
- package/dist/commands/task/find.d.ts.map +1 -0
- package/dist/commands/task/find.js +65 -0
- package/dist/commands/task/find.js.map +1 -0
- package/dist/commands/task/resolve.d.ts +16 -0
- package/dist/commands/task/resolve.d.ts.map +1 -0
- package/dist/commands/task/resolve.js +71 -0
- package/dist/commands/task/resolve.js.map +1 -0
- package/dist/commands/update-set/clone.d.ts +15 -0
- package/dist/commands/update-set/clone.d.ts.map +1 -0
- package/dist/commands/update-set/clone.js +50 -0
- package/dist/commands/update-set/clone.js.map +1 -0
- package/dist/commands/update-set/create.d.ts +16 -0
- package/dist/commands/update-set/create.d.ts.map +1 -0
- package/dist/commands/update-set/create.js +60 -0
- package/dist/commands/update-set/create.js.map +1 -0
- package/dist/commands/update-set/current.d.ts +14 -0
- package/dist/commands/update-set/current.d.ts.map +1 -0
- package/dist/commands/update-set/current.js +55 -0
- package/dist/commands/update-set/current.js.map +1 -0
- package/dist/commands/update-set/index.d.ts +15 -0
- package/dist/commands/update-set/index.d.ts.map +1 -0
- package/dist/commands/update-set/index.js +56 -0
- package/dist/commands/update-set/index.js.map +1 -0
- package/dist/commands/update-set/inspect.d.ts +14 -0
- package/dist/commands/update-set/inspect.d.ts.map +1 -0
- package/dist/commands/update-set/inspect.js +43 -0
- package/dist/commands/update-set/inspect.js.map +1 -0
- package/dist/commands/update-set/move.d.ts +16 -0
- package/dist/commands/update-set/move.d.ts.map +1 -0
- package/dist/commands/update-set/move.js +57 -0
- package/dist/commands/update-set/move.js.map +1 -0
- package/dist/commands/workflow/create.d.ts +14 -0
- package/dist/commands/workflow/create.d.ts.map +1 -0
- package/dist/commands/workflow/create.js +50 -0
- package/dist/commands/workflow/create.js.map +1 -0
- package/dist/commands/workflow/publish.d.ts +15 -0
- package/dist/commands/workflow/publish.d.ts.map +1 -0
- package/dist/commands/workflow/publish.js +53 -0
- package/dist/commands/workflow/publish.js.map +1 -0
- package/dist/commands/xml/export.d.ts +17 -0
- package/dist/commands/xml/export.d.ts.map +1 -0
- package/dist/commands/xml/export.js +87 -0
- package/dist/commands/xml/export.js.map +1 -0
- package/dist/commands/xml/import.d.ts +16 -0
- package/dist/commands/xml/import.d.ts.map +1 -0
- package/dist/commands/xml/import.js +69 -0
- package/dist/commands/xml/import.js.map +1 -0
- package/dist/common/authenticated-command.d.ts +5 -2
- package/dist/common/authenticated-command.d.ts.map +1 -1
- package/dist/common/authenticated-command.js +12 -3
- package/dist/common/authenticated-command.js.map +1 -1
- package/dist/common/base-command.d.ts +2 -2
- package/dist/common/base-command.d.ts.map +1 -1
- package/dist/common/base-command.js +0 -1
- package/dist/common/base-command.js.map +1 -1
- package/dist/common/scope-autocomplete.js +0 -1
- package/dist/common/scope-autocomplete.js.map +1 -1
- package/dist/services/aggregate-display.service.d.ts +18 -0
- package/dist/services/aggregate-display.service.d.ts.map +1 -0
- package/dist/services/aggregate-display.service.js +83 -0
- package/dist/services/aggregate-display.service.js.map +1 -0
- package/dist/services/app-display.service.d.ts +36 -0
- package/dist/services/app-display.service.d.ts.map +1 -0
- package/dist/services/app-display.service.js +101 -0
- package/dist/services/app-display.service.js.map +1 -0
- package/dist/services/atf-result-formatter.service.d.ts +64 -0
- package/dist/services/atf-result-formatter.service.d.ts.map +1 -0
- package/dist/services/atf-result-formatter.service.js +83 -0
- package/dist/services/atf-result-formatter.service.js.map +1 -0
- package/dist/services/attachment-display.service.d.ts +18 -0
- package/dist/services/attachment-display.service.d.ts.map +1 -0
- package/dist/services/attachment-display.service.js +93 -0
- package/dist/services/attachment-display.service.js.map +1 -0
- package/dist/services/batch-display.service.d.ts +11 -0
- package/dist/services/batch-display.service.d.ts.map +1 -0
- package/dist/services/batch-display.service.js +75 -0
- package/dist/services/batch-display.service.js.map +1 -0
- package/dist/services/bulk-display.service.d.ts +11 -0
- package/dist/services/bulk-display.service.d.ts.map +1 -0
- package/dist/services/bulk-display.service.js +85 -0
- package/dist/services/bulk-display.service.js.map +1 -0
- package/dist/services/code-search-display.service.d.ts +23 -0
- package/dist/services/code-search-display.service.d.ts.map +1 -0
- package/dist/services/code-search-display.service.js +130 -0
- package/dist/services/code-search-display.service.js.map +1 -0
- package/dist/services/flow-display.service.d.ts +10 -0
- package/dist/services/flow-display.service.d.ts.map +1 -0
- package/dist/services/flow-display.service.js +164 -0
- package/dist/services/flow-display.service.js.map +1 -0
- package/dist/services/health-display.service.d.ts +8 -0
- package/dist/services/health-display.service.d.ts.map +1 -0
- package/dist/services/health-display.service.js +91 -0
- package/dist/services/health-display.service.js.map +1 -0
- package/dist/services/log-filter.service.d.ts +31 -0
- package/dist/services/log-filter.service.d.ts.map +1 -0
- package/dist/services/log-filter.service.js +117 -0
- package/dist/services/log-filter.service.js.map +1 -0
- package/dist/services/log-formatter.service.d.ts +30 -0
- package/dist/services/log-formatter.service.d.ts.map +1 -0
- package/dist/services/log-formatter.service.js +122 -0
- package/dist/services/log-formatter.service.js.map +1 -0
- package/dist/services/query-display.service.d.ts +23 -0
- package/dist/services/query-display.service.d.ts.map +1 -0
- package/dist/services/query-display.service.js +152 -0
- package/dist/services/query-display.service.js.map +1 -0
- package/dist/services/schema-display.service.d.ts +18 -0
- package/dist/services/schema-display.service.d.ts.map +1 -0
- package/dist/services/schema-display.service.js +106 -0
- package/dist/services/schema-display.service.js.map +1 -0
- package/dist/services/scope-display.service.d.ts +18 -0
- package/dist/services/scope-display.service.d.ts.map +1 -0
- package/dist/services/scope-display.service.js +83 -0
- package/dist/services/scope-display.service.js.map +1 -0
- package/dist/services/script-parameter.service.d.ts +16 -0
- package/dist/services/script-parameter.service.d.ts.map +1 -0
- package/dist/services/script-parameter.service.js +34 -0
- package/dist/services/script-parameter.service.js.map +1 -0
- package/dist/services/script-sync-display.service.d.ts +13 -0
- package/dist/services/script-sync-display.service.d.ts.map +1 -0
- package/dist/services/script-sync-display.service.js +71 -0
- package/dist/services/script-sync-display.service.js.map +1 -0
- package/dist/services/store-app-display.service.d.ts +16 -0
- package/dist/services/store-app-display.service.d.ts.map +1 -0
- package/dist/services/store-app-display.service.js +114 -0
- package/dist/services/store-app-display.service.js.map +1 -0
- package/dist/services/task-display.service.d.ts +14 -0
- package/dist/services/task-display.service.d.ts.map +1 -0
- package/dist/services/task-display.service.js +86 -0
- package/dist/services/task-display.service.js.map +1 -0
- package/dist/services/update-set-display.service.d.ts +28 -0
- package/dist/services/update-set-display.service.d.ts.map +1 -0
- package/dist/services/update-set-display.service.js +150 -0
- package/dist/services/update-set-display.service.js.map +1 -0
- package/dist/services/workflow-display.service.d.ts +13 -0
- package/dist/services/workflow-display.service.d.ts.map +1 -0
- package/dist/services/workflow-display.service.js +53 -0
- package/dist/services/workflow-display.service.js.map +1 -0
- package/dist/services/xml-display.service.d.ts +11 -0
- package/dist/services/xml-display.service.d.ts.map +1 -0
- package/dist/services/xml-display.service.js +55 -0
- package/dist/services/xml-display.service.js.map +1 -0
- package/dist/util/log-factory.d.ts +5 -0
- package/dist/util/log-factory.d.ts.map +1 -0
- package/dist/util/log-factory.js +8 -0
- package/dist/util/log-factory.js.map +1 -0
- package/oclif.manifest.json +5506 -387
- package/package.json +83 -23
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from '../../common/authenticated-command.js';
|
|
2
|
+
export declare class XmlExport extends AuthenticatedCommand<typeof XmlExport> {
|
|
3
|
+
static args: {};
|
|
4
|
+
static description: string;
|
|
5
|
+
static examples: {
|
|
6
|
+
description: string;
|
|
7
|
+
command: string;
|
|
8
|
+
}[];
|
|
9
|
+
static flags: {
|
|
10
|
+
table: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
11
|
+
'sys-id': import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
12
|
+
output: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
13
|
+
json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
14
|
+
};
|
|
15
|
+
run(): Promise<void>;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=export.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../../src/commands/xml/export.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAA;AAG5E,qBAAa,SAAU,SAAQ,oBAAoB,CAAC,OAAO,SAAS,CAAC;IAEnE,MAAM,CAAC,IAAI,KAAK;IAClB,MAAM,CAAC,WAAW,SAQmC;IACrD,MAAM,CAAC,QAAQ;;;QAaZ;IACH,MAAM,CAAC,KAAK;;;;;MAsBT;IAEK,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAmC3B"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/* eslint-disable perfectionist/sort-objects */
|
|
2
|
+
import { Flags } from '@oclif/core';
|
|
3
|
+
import { XMLRecordManager } from '@sonisoft/now-sdk-ext-core';
|
|
4
|
+
import { writeFileSync } from 'node:fs';
|
|
5
|
+
import path from 'node:path';
|
|
6
|
+
import { AuthenticatedCommand } from '../../common/authenticated-command.js';
|
|
7
|
+
import { XmlDisplayService } from '../../services/xml-display.service.js';
|
|
8
|
+
export class XmlExport extends AuthenticatedCommand {
|
|
9
|
+
static args = {};
|
|
10
|
+
static description = 'Export a single ServiceNow record as XML.\n\n' +
|
|
11
|
+
'Downloads the XML representation of a specific record from a ServiceNow table. ' +
|
|
12
|
+
'Without --output, the XML is printed to stdout. ' +
|
|
13
|
+
'With --output, the XML is written to the specified file path.\n\n' +
|
|
14
|
+
'Features:\n' +
|
|
15
|
+
' \u2022 Export any record by table and sys_id\n' +
|
|
16
|
+
' \u2022 Print XML to stdout for piping to other tools\n' +
|
|
17
|
+
' \u2022 Save directly to a file with --output\n' +
|
|
18
|
+
' \u2022 JSON output mode for CI/CD integration';
|
|
19
|
+
static examples = [
|
|
20
|
+
{
|
|
21
|
+
description: 'Export a record to stdout',
|
|
22
|
+
command: '<%= config.bin %> <%= command.id %> --table sys_script_include --sys-id abc123def456 --auth dev',
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
description: 'Export and save to a file',
|
|
26
|
+
command: '<%= config.bin %> <%= command.id %> --table incident --sys-id abc123 --output ./export.xml --auth dev',
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
description: 'Export as JSON metadata',
|
|
30
|
+
command: '<%= config.bin %> <%= command.id %> --table sys_script --sys-id abc123 --json --auth dev',
|
|
31
|
+
},
|
|
32
|
+
];
|
|
33
|
+
static flags = {
|
|
34
|
+
'table': Flags.string({
|
|
35
|
+
char: 't',
|
|
36
|
+
description: 'Table name of the record to export',
|
|
37
|
+
required: true,
|
|
38
|
+
}),
|
|
39
|
+
'sys-id': Flags.string({
|
|
40
|
+
char: 's',
|
|
41
|
+
description: 'Sys ID of the record to export',
|
|
42
|
+
required: true,
|
|
43
|
+
}),
|
|
44
|
+
'output': Flags.string({
|
|
45
|
+
char: 'o',
|
|
46
|
+
description: 'File path to write the exported XML to. If omitted, XML is printed to stdout.',
|
|
47
|
+
required: false,
|
|
48
|
+
}),
|
|
49
|
+
'json': Flags.boolean({
|
|
50
|
+
char: 'j',
|
|
51
|
+
description: 'Output results as JSON',
|
|
52
|
+
required: false,
|
|
53
|
+
default: false,
|
|
54
|
+
}),
|
|
55
|
+
};
|
|
56
|
+
async run() {
|
|
57
|
+
const { flags } = await this.parse(XmlExport);
|
|
58
|
+
const displayService = new XmlDisplayService();
|
|
59
|
+
try {
|
|
60
|
+
const xmlManager = new XMLRecordManager(this.instance);
|
|
61
|
+
this.log(`Exporting record ${flags['sys-id']} from table '${flags.table}'...`);
|
|
62
|
+
const result = await xmlManager.exportRecord({
|
|
63
|
+
table: flags.table,
|
|
64
|
+
sysId: flags['sys-id'],
|
|
65
|
+
});
|
|
66
|
+
if (flags.output) {
|
|
67
|
+
const resolvedPath = path.resolve(flags.output);
|
|
68
|
+
writeFileSync(resolvedPath, result.xml, 'utf-8');
|
|
69
|
+
this.log(`XML written to ${resolvedPath}`);
|
|
70
|
+
}
|
|
71
|
+
const lines = displayService.formatExportResult(result, flags.output, flags.json ?? false);
|
|
72
|
+
for (const line of lines) {
|
|
73
|
+
(flags.json ?? false) ? console.log(line) : this.log(line);
|
|
74
|
+
}
|
|
75
|
+
// If no output file and not JSON mode, print the raw XML to stdout
|
|
76
|
+
if (!flags.output && !(flags.json ?? false)) {
|
|
77
|
+
this.log('');
|
|
78
|
+
console.log(result.xml);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
this._logger.error("Error occurred during XML export.", error);
|
|
83
|
+
this.error(error);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=export.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export.js","sourceRoot":"","sources":["../../../src/commands/xml/export.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from '../../common/authenticated-command.js';
|
|
2
|
+
export declare class XmlImport extends AuthenticatedCommand<typeof XmlImport> {
|
|
3
|
+
static args: {};
|
|
4
|
+
static description: string;
|
|
5
|
+
static examples: {
|
|
6
|
+
description: string;
|
|
7
|
+
command: string;
|
|
8
|
+
}[];
|
|
9
|
+
static flags: {
|
|
10
|
+
file: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
11
|
+
table: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
12
|
+
json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
13
|
+
};
|
|
14
|
+
run(): Promise<void>;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=import.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"import.d.ts","sourceRoot":"","sources":["../../../src/commands/xml/import.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAA;AAG5E,qBAAa,SAAU,SAAQ,oBAAoB,CAAC,OAAO,SAAS,CAAC;IAEnE,MAAM,CAAC,IAAI,KAAK;IAClB,MAAM,CAAC,WAAW,SAMmC;IACrD,MAAM,CAAC,QAAQ;;;QASZ;IACH,MAAM,CAAC,KAAK;;;;MAiBT;IAEK,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA2B3B"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/* eslint-disable perfectionist/sort-objects */
|
|
2
|
+
import { Flags } from '@oclif/core';
|
|
3
|
+
import { XMLRecordManager } from '@sonisoft/now-sdk-ext-core';
|
|
4
|
+
import { readFileSync } from 'node:fs';
|
|
5
|
+
import path from 'node:path';
|
|
6
|
+
import { AuthenticatedCommand } from '../../common/authenticated-command.js';
|
|
7
|
+
import { XmlDisplayService } from '../../services/xml-display.service.js';
|
|
8
|
+
export class XmlImport extends AuthenticatedCommand {
|
|
9
|
+
static args = {};
|
|
10
|
+
static description = 'Import XML records into a ServiceNow instance.\n\n' +
|
|
11
|
+
'Reads an XML file and imports its contents into the specified target table. ' +
|
|
12
|
+
'The XML should be in ServiceNow unload format.\n\n' +
|
|
13
|
+
'Features:\n' +
|
|
14
|
+
' \u2022 Import from local XML files\n' +
|
|
15
|
+
' \u2022 Target a specific table\n' +
|
|
16
|
+
' \u2022 JSON output mode for CI/CD integration';
|
|
17
|
+
static examples = [
|
|
18
|
+
{
|
|
19
|
+
description: 'Import records from an XML file',
|
|
20
|
+
command: '<%= config.bin %> <%= command.id %> --file ./export.xml --table sys_script_include --auth dev',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
description: 'Import with JSON output',
|
|
24
|
+
command: '<%= config.bin %> <%= command.id %> --file ./records.xml --table incident --json --auth dev',
|
|
25
|
+
},
|
|
26
|
+
];
|
|
27
|
+
static flags = {
|
|
28
|
+
'file': Flags.string({
|
|
29
|
+
char: 'f',
|
|
30
|
+
description: 'Path to the XML file to import',
|
|
31
|
+
required: true,
|
|
32
|
+
}),
|
|
33
|
+
'table': Flags.string({
|
|
34
|
+
char: 't',
|
|
35
|
+
description: 'Target table to import records into',
|
|
36
|
+
required: true,
|
|
37
|
+
}),
|
|
38
|
+
'json': Flags.boolean({
|
|
39
|
+
char: 'j',
|
|
40
|
+
description: 'Output results as JSON',
|
|
41
|
+
required: false,
|
|
42
|
+
default: false,
|
|
43
|
+
}),
|
|
44
|
+
};
|
|
45
|
+
async run() {
|
|
46
|
+
const { flags } = await this.parse(XmlImport);
|
|
47
|
+
const displayService = new XmlDisplayService();
|
|
48
|
+
try {
|
|
49
|
+
const xmlManager = new XMLRecordManager(this.instance);
|
|
50
|
+
const resolvedPath = path.resolve(flags.file);
|
|
51
|
+
this.log(`Reading XML file: ${resolvedPath}`);
|
|
52
|
+
const xmlContent = readFileSync(resolvedPath, 'utf-8');
|
|
53
|
+
this.log(`Importing records into table '${flags.table}'...`);
|
|
54
|
+
const result = await xmlManager.importRecords({
|
|
55
|
+
xmlContent,
|
|
56
|
+
targetTable: flags.table,
|
|
57
|
+
});
|
|
58
|
+
const lines = displayService.formatImportResult(result, flags.json ?? false);
|
|
59
|
+
for (const line of lines) {
|
|
60
|
+
(flags.json ?? false) ? console.log(line) : this.log(line);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
this._logger.error("Error occurred during XML import.", error);
|
|
65
|
+
this.error(error);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=import.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"import.js","sourceRoot":"","sources":["../../../src/commands/xml/import.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAE/C,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAA;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AAEzE,MAAM,OAAO,SAAU,SAAQ,oBAAsC;IAEnE,MAAM,CAAC,IAAI,GAAG,EAAE,CAAA;IAClB,MAAM,CAAC,WAAW,GAAG,oDAAoD;QACrE,8EAA8E;QAC9E,oDAAoD;QACpD,aAAa;QACb,wCAAwC;QACxC,oCAAoC;QACpC,iDAAiD,CAAA;IACrD,MAAM,CAAC,QAAQ,GAAG;QACd;YACE,WAAW,EAAE,iCAAiC;YAC9C,OAAO,EAAE,+FAA+F;SACzG;QACD;YACE,WAAW,EAAE,yBAAyB;YACtC,OAAO,EAAE,6FAA6F;SACvG;KACF,CAAA;IACH,MAAM,CAAC,KAAK,GAAG;QACX,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;YACnB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,gCAAgC;YAC7C,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC;YACpB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,qCAAqC;YAClD,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;YACpB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,wBAAwB;YACrC,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE,KAAK;SACf,CAAC;KACH,CAAA;IAED,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QAC7C,MAAM,cAAc,GAAG,IAAI,iBAAiB,EAAE,CAAA;QAE9C,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YAEtD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;YAC7C,IAAI,CAAC,GAAG,CAAC,qBAAqB,YAAY,EAAE,CAAC,CAAA;YAC7C,MAAM,UAAU,GAAG,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;YAEtD,IAAI,CAAC,GAAG,CAAC,iCAAiC,KAAK,CAAC,KAAK,MAAM,CAAC,CAAA;YAE5D,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,aAAa,CAAC;gBAC5C,UAAU;gBACV,WAAW,EAAE,KAAK,CAAC,KAAK;aACzB,CAAC,CAAA;YAEF,MAAM,KAAK,GAAG,cAAc,CAAC,kBAAkB,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,CAAA;YAC5E,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YAC5D,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAc,CAAC,CAAA;YACvE,IAAI,CAAC,KAAK,CAAC,KAAc,CAAC,CAAA;QAC5B,CAAC;IACH,CAAC"}
|
|
@@ -8,13 +8,16 @@ export declare abstract class AuthenticatedCommand<T extends typeof Command> ext
|
|
|
8
8
|
'log-level': Interfaces.OptionFlag<"info" | "debug" | "warn" | "error" | "trace", Interfaces.CustomOptions>;
|
|
9
9
|
};
|
|
10
10
|
static enableJsonFlag: boolean;
|
|
11
|
+
protected _logger: Logger;
|
|
11
12
|
protected args: Args<T>;
|
|
12
13
|
protected authLogger: Logger;
|
|
13
14
|
protected flags: Flags<T>;
|
|
14
15
|
protected instance: ServiceNowInstance;
|
|
15
|
-
|
|
16
|
+
get logger(): Logger;
|
|
17
|
+
set logger(logger: Logger);
|
|
18
|
+
protected catch(err: Error & {
|
|
16
19
|
exitCode?: number;
|
|
17
|
-
}
|
|
20
|
+
}): Promise<any>;
|
|
18
21
|
protected finally(_: Error | undefined): Promise<any>;
|
|
19
22
|
init(): Promise<void>;
|
|
20
23
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authenticated-command.d.ts","sourceRoot":"","sources":["../../src/common/authenticated-command.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAS,UAAU,EAAE,MAAM,aAAa,CAAA;AAExD,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAA8B,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"authenticated-command.d.ts","sourceRoot":"","sources":["../../src/common/authenticated-command.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAS,UAAU,EAAE,MAAM,aAAa,CAAA;AAExD,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAA8B,MAAM,4BAA4B,CAAC;AAMpG,MAAM,MAAM,KAAK,CAAC,CAAC,SAAS,OAAO,OAAO,IAAI,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,OAAO,oBAAoB,CAAC,WAAW,CAAC,CAAC,CAAA;AAC7H,MAAM,MAAM,IAAI,CAAC,CAAC,SAAS,OAAO,OAAO,IAAI,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;AAE/E,8BAAsB,oBAAoB,CAAC,CAAC,SAAS,OAAO,OAAO,CAAE,SAAQ,OAAO;IAElF,MAAM,CAAC,SAAS;;;MASf;IAEC,MAAM,CAAC,cAAc,UAAO;IAChC,SAAS,CAAC,OAAO,EAAG,MAAM,CAAC;IACvB,SAAS,CAAC,IAAI,EAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACzB,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,KAAK,EAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/B,SAAS,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IAEnC,IAAW,MAAM,IAAI,MAAM,CAE1B;IAED,IAAW,MAAM,CAAC,MAAM,EAAE,MAAM,EAE/B;cAEa,KAAK,CAAC,GAAG,EAAE,KAAK,GAAG;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAC,GAAG,OAAO,CAAC,GAAG,CAAC;cAQrD,OAAO,CAAC,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC;IAK9C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAiCnC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
1
|
import { Command, Flags } from '@oclif/core';
|
|
3
2
|
import { getCredentials } from "@servicenow/sdk-cli/dist/auth/index.js";
|
|
4
|
-
import {
|
|
3
|
+
import { ServiceNowInstance } from '@sonisoft/now-sdk-ext-core';
|
|
4
|
+
import { LogFactory } from '../util/log-factory.js';
|
|
5
5
|
export class AuthenticatedCommand extends Command {
|
|
6
6
|
// // define flags that can be inherited by any command that extends BaseCommand
|
|
7
7
|
static baseFlags = {
|
|
@@ -15,10 +15,17 @@ export class AuthenticatedCommand extends Command {
|
|
|
15
15
|
};
|
|
16
16
|
// add the --json flag
|
|
17
17
|
static enableJsonFlag = true;
|
|
18
|
+
_logger;
|
|
18
19
|
args;
|
|
19
|
-
authLogger
|
|
20
|
+
authLogger;
|
|
20
21
|
flags;
|
|
21
22
|
instance;
|
|
23
|
+
get logger() {
|
|
24
|
+
return this._logger;
|
|
25
|
+
}
|
|
26
|
+
set logger(logger) {
|
|
27
|
+
this._logger = logger;
|
|
28
|
+
}
|
|
22
29
|
async catch(err) {
|
|
23
30
|
// add any custom logic to handle errors from the command
|
|
24
31
|
// or simply return the parent class error handling
|
|
@@ -40,6 +47,8 @@ export class AuthenticatedCommand extends Command {
|
|
|
40
47
|
});
|
|
41
48
|
this.flags = flags;
|
|
42
49
|
this.args = args;
|
|
50
|
+
this.logger = LogFactory.createLogger(this.ctor.name, this.flags.logLevel || 'info');
|
|
51
|
+
this.authLogger = LogFactory.createLogger("AuthenticatedCommand", this.flags.logLevel || 'info');
|
|
43
52
|
// const wrapper:CredentialWrapper = new CredentialWrapper();
|
|
44
53
|
// const credential:Creds = await (flags.auth ? wrapper.getStoredCredentialsByAlias(flags.auth) : wrapper.getStoredCredentialsByAlias( 'fluent-default'));
|
|
45
54
|
// const credentialArgs = {"_": "get-credentials", auth: flags.auth || "fluent-default"};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authenticated-command.js","sourceRoot":"","sources":["../../src/common/authenticated-command.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"authenticated-command.js","sourceRoot":"","sources":["../../src/common/authenticated-command.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,9 +10,9 @@ export declare abstract class BaseCommand<T extends typeof Command> extends Comm
|
|
|
10
10
|
protected args: Args<T>;
|
|
11
11
|
protected flags: Flags<T>;
|
|
12
12
|
protected logger: Logger;
|
|
13
|
-
protected catch(err: {
|
|
13
|
+
protected catch(err: Error & {
|
|
14
14
|
exitCode?: number;
|
|
15
|
-
}
|
|
15
|
+
}): Promise<any>;
|
|
16
16
|
protected finally(_: Error | undefined): Promise<any>;
|
|
17
17
|
init(): Promise<void>;
|
|
18
18
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-command.d.ts","sourceRoot":"","sources":["../../src/common/base-command.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,EAAS,UAAU,EAAC,MAAM,aAAa,CAAA;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAEnD,MAAM,MAAM,KAAK,CAAC,CAAC,SAAS,OAAO,OAAO,IAAI,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,OAAO,WAAW,CAAC,WAAW,CAAC,CAAC,CAAA;AACpH,MAAM,MAAM,IAAI,CAAC,CAAC,SAAS,OAAO,OAAO,IAAI,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;AAE/E,8BAAsB,WAAW,CAAC,CAAC,SAAS,OAAO,OAAO,CAAE,SAAQ,OAAO;IAEzE,MAAM,CAAC,SAAS;;MAOf;
|
|
1
|
+
{"version":3,"file":"base-command.d.ts","sourceRoot":"","sources":["../../src/common/base-command.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,EAAS,UAAU,EAAC,MAAM,aAAa,CAAA;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAEnD,MAAM,MAAM,KAAK,CAAC,CAAC,SAAS,OAAO,OAAO,IAAI,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,OAAO,WAAW,CAAC,WAAW,CAAC,CAAC,CAAA;AACpH,MAAM,MAAM,IAAI,CAAC,CAAC,SAAS,OAAO,OAAO,IAAI,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;AAE/E,8BAAsB,WAAW,CAAC,CAAC,SAAS,OAAO,OAAO,CAAE,SAAQ,OAAO;IAEzE,MAAM,CAAC,SAAS;;MAOf;IAED,MAAM,CAAC,cAAc,UAAO;IAC9B,SAAS,CAAC,IAAI,EAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACvB,SAAS,CAAC,KAAK,EAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3B,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;cAET,KAAK,CAAC,GAAG,EAAE,KAAK,GAAG;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAC,GAAG,OAAO,CAAC,GAAG,CAAC;cAQrD,OAAO,CAAC,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC;IAO9C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAenC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-command.js","sourceRoot":"","sources":["../../src/common/base-command.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"base-command.js","sourceRoot":"","sources":["../../src/common/base-command.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,EAAE,KAAK,EAAa,MAAM,aAAa,CAAA;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAKnD,MAAM,OAAgB,WAAsC,SAAQ,OAAO;IACzE,6EAA6E;IAC7E,MAAM,CAAC,SAAS,GAAG;QACjB,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC;YACxB,OAAO,EAAE,MAAM;YACf,SAAS,EAAE,QAAQ;YACnB,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAU;YAC7D,OAAO,EAAE,4BAA4B;SACtC,CAAC,EAAE;KACL,CAAA;IACH,sBAAsB;IACpB,MAAM,CAAC,cAAc,GAAG,IAAI,CAAA;IACpB,IAAI,CAAW;IACb,KAAK,CAAY;IACjB,MAAM,CAAS;IAEf,KAAK,CAAC,KAAK,CAAC,GAAgC;QACpD,yDAAyD;QACzD,mDAAmD;QACnD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAqC,EAAE,GAAG,CAAC,CAAC;QAE9D,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACzB,CAAC;IAES,KAAK,CAAC,OAAO,CAAC,CAAoB;QAC1C,8EAA8E;QAG9E,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IACzB,CAAC;IAEM,KAAK,CAAC,IAAI;QACf,MAAM,KAAK,CAAC,IAAI,EAAE,CAAA;QAClB,MAAM,EAAC,IAAI,EAAE,KAAK,EAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC;YACrC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;YACpB,SAAS,EAAG,KAAK,CAAC,IAA2B,CAAC,SAAS;YACvD,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc;YACxC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK;YACtB,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM;SACzB,CAAC,CAAA;QACF,IAAI,CAAC,KAAK,GAAG,KAAiB,CAAA;QAC9B,IAAI,CAAC,IAAI,GAAG,IAAe,CAAA;QAG3B,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scope-autocomplete.js","sourceRoot":"","sources":["../../src/common/scope-autocomplete.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"scope-autocomplete.js","sourceRoot":"","sources":["../../src/common/scope-autocomplete.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export declare class AggregateDisplayService {
|
|
2
|
+
/**
|
|
3
|
+
* Format aggregate (non-grouped) result for display.
|
|
4
|
+
* Returns lines for console output, or JSON string if jsonOutput is true.
|
|
5
|
+
*/
|
|
6
|
+
formatAggregateResult(stats: any, tableName: string, jsonOutput: boolean): string[];
|
|
7
|
+
/**
|
|
8
|
+
* Format count result for display.
|
|
9
|
+
* Returns lines for console output, or JSON string if jsonOutput is true.
|
|
10
|
+
*/
|
|
11
|
+
formatCountResult(count: number, tableName: string, query: string | undefined, jsonOutput: boolean): string[];
|
|
12
|
+
/**
|
|
13
|
+
* Format grouped aggregate result for display.
|
|
14
|
+
* Returns lines for console output, or JSON string if jsonOutput is true.
|
|
15
|
+
*/
|
|
16
|
+
formatGroupedResult(groups: any[], tableName: string, jsonOutput: boolean): string[];
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=aggregate-display.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aggregate-display.service.d.ts","sourceRoot":"","sources":["../../src/services/aggregate-display.service.ts"],"names":[],"mappings":"AAEA,qBAAa,uBAAuB;IAClC;;;OAGG;IACH,qBAAqB,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAG,MAAM,EAAE;IA+BnF;;;OAGG;IACH,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,UAAU,EAAE,OAAO,GAAG,MAAM,EAAE;IAe7G;;;OAGG;IACH,mBAAmB,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAG,MAAM,EAAE;CA2CrF"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
export class AggregateDisplayService {
|
|
2
|
+
/**
|
|
3
|
+
* Format aggregate (non-grouped) result for display.
|
|
4
|
+
* Returns lines for console output, or JSON string if jsonOutput is true.
|
|
5
|
+
*/
|
|
6
|
+
formatAggregateResult(stats, tableName, jsonOutput) {
|
|
7
|
+
if (jsonOutput) {
|
|
8
|
+
return [JSON.stringify({ stats, table: tableName }, null, 2)];
|
|
9
|
+
}
|
|
10
|
+
const lines = [];
|
|
11
|
+
lines.push(`\nAggregate Results: ${tableName}`);
|
|
12
|
+
lines.push(" " + "\u2500".repeat(50));
|
|
13
|
+
if (stats.count !== undefined) {
|
|
14
|
+
lines.push(` Count: ${stats.count}`);
|
|
15
|
+
}
|
|
16
|
+
// Display stat fields (avg.field, min.field, max.field, sum.field)
|
|
17
|
+
const statKeys = Object.keys(stats).filter(k => k !== 'count');
|
|
18
|
+
if (statKeys.length > 0) {
|
|
19
|
+
lines.push("");
|
|
20
|
+
lines.push(" " + "Metric".padEnd(35) + "Value");
|
|
21
|
+
lines.push(" " + "\u2500".repeat(50));
|
|
22
|
+
for (const key of statKeys) {
|
|
23
|
+
lines.push(" " + key.padEnd(35) + String(stats[key] ?? ''));
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
lines.push(" " + "\u2500".repeat(50));
|
|
27
|
+
return lines;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Format count result for display.
|
|
31
|
+
* Returns lines for console output, or JSON string if jsonOutput is true.
|
|
32
|
+
*/
|
|
33
|
+
formatCountResult(count, tableName, query, jsonOutput) {
|
|
34
|
+
if (jsonOutput) {
|
|
35
|
+
return [JSON.stringify({ count, query: query || '', table: tableName }, null, 2)];
|
|
36
|
+
}
|
|
37
|
+
const lines = [];
|
|
38
|
+
const queryMsg = query ? ` (query: "${query}")` : '';
|
|
39
|
+
lines.push(`\nRecord Count: ${tableName}${queryMsg}`);
|
|
40
|
+
lines.push(" " + "\u2500".repeat(50));
|
|
41
|
+
lines.push(` Count: ${count}`);
|
|
42
|
+
lines.push(" " + "\u2500".repeat(50));
|
|
43
|
+
return lines;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Format grouped aggregate result for display.
|
|
47
|
+
* Returns lines for console output, or JSON string if jsonOutput is true.
|
|
48
|
+
*/
|
|
49
|
+
formatGroupedResult(groups, tableName, jsonOutput) {
|
|
50
|
+
if (jsonOutput) {
|
|
51
|
+
return [JSON.stringify({ groupCount: groups.length, groups, table: tableName }, null, 2)];
|
|
52
|
+
}
|
|
53
|
+
const lines = [];
|
|
54
|
+
if (groups.length === 0) {
|
|
55
|
+
lines.push(`\nNo grouped results for table "${tableName}".`);
|
|
56
|
+
return lines;
|
|
57
|
+
}
|
|
58
|
+
lines.push(`\nGrouped Aggregate Results: ${tableName} (${groups.length} group${groups.length === 1 ? '' : 's'})`);
|
|
59
|
+
lines.push(" " + "\u2500".repeat(90));
|
|
60
|
+
for (const [index, group] of groups.entries()) {
|
|
61
|
+
// Display group-by fields
|
|
62
|
+
const groupLabel = (group.groupby_fields || [])
|
|
63
|
+
.map((f) => `${f.field}=${f.display_value || f.value}`)
|
|
64
|
+
.join(', ');
|
|
65
|
+
lines.push(` Group ${index + 1}: ${groupLabel}`);
|
|
66
|
+
// Display stats for this group
|
|
67
|
+
const stats = group.stats || {};
|
|
68
|
+
if (stats.count !== undefined) {
|
|
69
|
+
lines.push(` Count: ${stats.count}`);
|
|
70
|
+
}
|
|
71
|
+
const statKeys = Object.keys(stats).filter(k => k !== 'count');
|
|
72
|
+
for (const key of statKeys) {
|
|
73
|
+
lines.push(` ${key}: ${stats[key]}`);
|
|
74
|
+
}
|
|
75
|
+
if (index < groups.length - 1) {
|
|
76
|
+
lines.push("");
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
lines.push(" " + "\u2500".repeat(90));
|
|
80
|
+
return lines;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=aggregate-display.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aggregate-display.service.js","sourceRoot":"","sources":["../../src/services/aggregate-display.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export interface AppInfo {
|
|
2
|
+
can_install_or_upgrade: boolean;
|
|
3
|
+
dependencies: null | string;
|
|
4
|
+
isInstalled: boolean;
|
|
5
|
+
latest_version: string;
|
|
6
|
+
name: string;
|
|
7
|
+
scope: string;
|
|
8
|
+
short_description: string;
|
|
9
|
+
sys_id: string;
|
|
10
|
+
vendor: string;
|
|
11
|
+
version: null | string;
|
|
12
|
+
versions: Array<{
|
|
13
|
+
publish_date_display: string;
|
|
14
|
+
version: string;
|
|
15
|
+
}>;
|
|
16
|
+
}
|
|
17
|
+
export interface AppFilterOptions {
|
|
18
|
+
installable?: boolean;
|
|
19
|
+
installed?: boolean;
|
|
20
|
+
}
|
|
21
|
+
export declare class AppDisplayService {
|
|
22
|
+
/**
|
|
23
|
+
* Filter applications based on installed/installable criteria.
|
|
24
|
+
*/
|
|
25
|
+
filterApps(apps: AppInfo[], options: AppFilterOptions): AppInfo[];
|
|
26
|
+
/**
|
|
27
|
+
* Format application list for display.
|
|
28
|
+
* Returns lines for console output, or JSON string if jsonOutput is true.
|
|
29
|
+
*/
|
|
30
|
+
formatAppList(apps: AppInfo[], jsonOutput: boolean, processingTime?: number): string[];
|
|
31
|
+
/**
|
|
32
|
+
* Format the install result for display.
|
|
33
|
+
*/
|
|
34
|
+
formatInstallResult(appName: string, appScope: string, targetVersion: string, success: boolean, statusLabel: string, error?: string): string[];
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=app-display.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-display.service.d.ts","sourceRoot":"","sources":["../../src/services/app-display.service.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,OAAO;IACtB,sBAAsB,EAAE,OAAO,CAAC;IAChC,YAAY,EAAE,IAAI,GAAG,MAAM,CAAC;IAC5B,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,IAAI,GAAG,MAAM,CAAC;IACvB,QAAQ,EAAE,KAAK,CAAC;QAAE,oBAAoB,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;KAAE,CAAC,CAAC;CACrE;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,qBAAa,iBAAiB;IAC5B;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,EAAE;IAYjE;;;OAGG;IACH,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE;IA8EtF;;OAEG;IACH,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE;CAiB/I"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
export class AppDisplayService {
|
|
2
|
+
/**
|
|
3
|
+
* Filter applications based on installed/installable criteria.
|
|
4
|
+
*/
|
|
5
|
+
filterApps(apps, options) {
|
|
6
|
+
if (options.installed) {
|
|
7
|
+
return apps.filter(app => app.isInstalled);
|
|
8
|
+
}
|
|
9
|
+
if (options.installable) {
|
|
10
|
+
return apps.filter(app => !app.isInstalled && app.can_install_or_upgrade);
|
|
11
|
+
}
|
|
12
|
+
return apps;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Format application list for display.
|
|
16
|
+
* Returns lines for console output, or JSON string if jsonOutput is true.
|
|
17
|
+
*/
|
|
18
|
+
formatAppList(apps, jsonOutput, processingTime) {
|
|
19
|
+
if (jsonOutput) {
|
|
20
|
+
return [JSON.stringify({
|
|
21
|
+
applications: apps.map(app => ({
|
|
22
|
+
available_versions: app.versions.length,
|
|
23
|
+
can_install_or_upgrade: app.can_install_or_upgrade,
|
|
24
|
+
current_version: app.version || null,
|
|
25
|
+
dependencies: app.dependencies || null,
|
|
26
|
+
isInstalled: app.isInstalled,
|
|
27
|
+
latest_version: app.latest_version,
|
|
28
|
+
name: app.name,
|
|
29
|
+
scope: app.scope,
|
|
30
|
+
short_description: app.short_description,
|
|
31
|
+
sys_id: app.sys_id,
|
|
32
|
+
vendor: app.vendor,
|
|
33
|
+
})),
|
|
34
|
+
processingTime,
|
|
35
|
+
total: apps.length,
|
|
36
|
+
}, null, 2)];
|
|
37
|
+
}
|
|
38
|
+
const lines = [];
|
|
39
|
+
lines.push(`Found ${apps.length} application(s)`);
|
|
40
|
+
if (processingTime !== undefined) {
|
|
41
|
+
lines.push(`Processing Time: ${processingTime}ms\n`);
|
|
42
|
+
}
|
|
43
|
+
if (apps.length === 0) {
|
|
44
|
+
lines.push("No applications found matching the specified criteria.");
|
|
45
|
+
return lines;
|
|
46
|
+
}
|
|
47
|
+
lines.push("─".repeat(100));
|
|
48
|
+
for (const [index, app] of apps.entries()) {
|
|
49
|
+
lines.push(`${index + 1}. ${app.name}`);
|
|
50
|
+
lines.push(` Scope: ${app.scope}`);
|
|
51
|
+
lines.push(` Sys ID: ${app.sys_id}`);
|
|
52
|
+
lines.push(` Vendor: ${app.vendor}`);
|
|
53
|
+
lines.push(` Latest Version: ${app.latest_version}`);
|
|
54
|
+
lines.push(` Installed: ${app.isInstalled ? 'Yes (v' + app.version + ')' : 'No'}`);
|
|
55
|
+
lines.push(` Can Install: ${app.can_install_or_upgrade ? 'Yes' : 'No'}`);
|
|
56
|
+
if (app.dependencies) {
|
|
57
|
+
lines.push(` Dependencies: ${app.dependencies}`);
|
|
58
|
+
}
|
|
59
|
+
if (app.short_description) {
|
|
60
|
+
lines.push(` Description: ${app.short_description}`);
|
|
61
|
+
}
|
|
62
|
+
lines.push(` Available Versions: ${app.versions.length}`);
|
|
63
|
+
if (app.versions.length > 0) {
|
|
64
|
+
const recentVersions = app.versions.slice(-3).reverse();
|
|
65
|
+
lines.push(` Recent Versions:`);
|
|
66
|
+
for (const v of recentVersions) {
|
|
67
|
+
lines.push(` - v${v.version} (${v.publish_date_display})`);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
lines.push("─".repeat(100));
|
|
71
|
+
}
|
|
72
|
+
lines.push(`\nTotal: ${apps.length} application(s)`);
|
|
73
|
+
const installedCount = apps.filter(a => a.isInstalled).length;
|
|
74
|
+
const installableCount = apps.filter(a => !a.isInstalled && a.can_install_or_upgrade).length;
|
|
75
|
+
lines.push("\nSummary:");
|
|
76
|
+
lines.push(` Installed: ${installedCount}`);
|
|
77
|
+
lines.push(` Installable: ${installableCount}`);
|
|
78
|
+
lines.push(` Other: ${apps.length - installedCount - installableCount}`);
|
|
79
|
+
return lines;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Format the install result for display.
|
|
83
|
+
*/
|
|
84
|
+
formatInstallResult(appName, appScope, targetVersion, success, statusLabel, error) {
|
|
85
|
+
const lines = [];
|
|
86
|
+
if (success) {
|
|
87
|
+
lines.push('\n✓ Installation completed successfully!');
|
|
88
|
+
lines.push(` Application: ${appName}`);
|
|
89
|
+
lines.push(` Scope: ${appScope}`);
|
|
90
|
+
lines.push(` Version: ${targetVersion}`);
|
|
91
|
+
lines.push(` Final Status: ${statusLabel}`);
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
lines.push('\n✗ Installation failed');
|
|
95
|
+
lines.push(` Status: ${statusLabel}`);
|
|
96
|
+
lines.push(` Error: ${error || statusLabel}`);
|
|
97
|
+
}
|
|
98
|
+
return lines;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=app-display.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-display.service.js","sourceRoot":"","sources":["../../src/services/app-display.service.ts"],"names":[],"mappings":"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"}
|