@sonisoft/now-sdk-ext-core 1.0.0-alpha.30

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 (138) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +3 -0
  3. package/dist/auth/AuthenticationHandlerFactory.d.ts +4 -0
  4. package/dist/auth/AuthenticationHandlerFactory.js +7 -0
  5. package/dist/auth/AuthenticationHandlerFactory.js.map +1 -0
  6. package/dist/auth/IAuthenticationHandler.d.ts +11 -0
  7. package/dist/auth/IAuthenticationHandler.js +2 -0
  8. package/dist/auth/IAuthenticationHandler.js.map +1 -0
  9. package/dist/auth/NowSDKAuthenticationHandler.d.ts +18 -0
  10. package/dist/auth/NowSDKAuthenticationHandler.js +54 -0
  11. package/dist/auth/NowSDKAuthenticationHandler.js.map +1 -0
  12. package/dist/comm/http/CookieStore.d.ts +8 -0
  13. package/dist/comm/http/CookieStore.js +21 -0
  14. package/dist/comm/http/CookieStore.js.map +1 -0
  15. package/dist/comm/http/CookieStoreFactory.d.ts +5 -0
  16. package/dist/comm/http/CookieStoreFactory.js +11 -0
  17. package/dist/comm/http/CookieStoreFactory.js.map +1 -0
  18. package/dist/comm/http/HTTPRequest.d.ts +7 -0
  19. package/dist/comm/http/HTTPRequest.js +4 -0
  20. package/dist/comm/http/HTTPRequest.js.map +1 -0
  21. package/dist/comm/http/HttpResponse.d.ts +20 -0
  22. package/dist/comm/http/HttpResponse.js +10 -0
  23. package/dist/comm/http/HttpResponse.js.map +1 -0
  24. package/dist/comm/http/ICookieStore.d.ts +5 -0
  25. package/dist/comm/http/ICookieStore.js +2 -0
  26. package/dist/comm/http/ICookieStore.js.map +1 -0
  27. package/dist/comm/http/IHttpResponse.d.ts +4 -0
  28. package/dist/comm/http/IHttpResponse.js +2 -0
  29. package/dist/comm/http/IHttpResponse.js.map +1 -0
  30. package/dist/comm/http/IRequestHandler.d.ts +11 -0
  31. package/dist/comm/http/IRequestHandler.js +2 -0
  32. package/dist/comm/http/IRequestHandler.js.map +1 -0
  33. package/dist/comm/http/IUserSession.d.ts +8 -0
  34. package/dist/comm/http/IUserSession.js +2 -0
  35. package/dist/comm/http/IUserSession.js.map +1 -0
  36. package/dist/comm/http/RequestHandler.d.ts +36 -0
  37. package/dist/comm/http/RequestHandler.js +195 -0
  38. package/dist/comm/http/RequestHandler.js.map +1 -0
  39. package/dist/comm/http/RequestHandlerFactory.d.ts +6 -0
  40. package/dist/comm/http/RequestHandlerFactory.js +7 -0
  41. package/dist/comm/http/RequestHandlerFactory.js.map +1 -0
  42. package/dist/comm/http/ServiceNowProcessorRequest.d.ts +9 -0
  43. package/dist/comm/http/ServiceNowProcessorRequest.js +61 -0
  44. package/dist/comm/http/ServiceNowProcessorRequest.js.map +1 -0
  45. package/dist/comm/http/ServiceNowRequest.d.ts +21 -0
  46. package/dist/comm/http/ServiceNowRequest.js +75 -0
  47. package/dist/comm/http/ServiceNowRequest.js.map +1 -0
  48. package/dist/comm/http/TableAPIRequest.d.ts +14 -0
  49. package/dist/comm/http/TableAPIRequest.js +46 -0
  50. package/dist/comm/http/TableAPIRequest.js.map +1 -0
  51. package/dist/comm/http/UserSession.d.ts +11 -0
  52. package/dist/comm/http/UserSession.js +24 -0
  53. package/dist/comm/http/UserSession.js.map +1 -0
  54. package/dist/comm/ws/ATFMessageHandler.d.ts +4 -0
  55. package/dist/comm/ws/ATFMessageHandler.js +5 -0
  56. package/dist/comm/ws/ATFMessageHandler.js.map +1 -0
  57. package/dist/constants/Extension.d.ts +1 -0
  58. package/dist/constants/Extension.js +2 -0
  59. package/dist/constants/Extension.js.map +1 -0
  60. package/dist/constants/Files.d.ts +3 -0
  61. package/dist/constants/Files.js +4 -0
  62. package/dist/constants/Files.js.map +1 -0
  63. package/dist/constants/ServiceNow.d.ts +2 -0
  64. package/dist/constants/ServiceNow.js +3 -0
  65. package/dist/constants/ServiceNow.js.map +1 -0
  66. package/dist/encryption/decrypt.d.ts +1 -0
  67. package/dist/encryption/decrypt.js +10 -0
  68. package/dist/encryption/decrypt.js.map +1 -0
  69. package/dist/encryption/encrypt.d.ts +1 -0
  70. package/dist/encryption/encrypt.js +13 -0
  71. package/dist/encryption/encrypt.js.map +1 -0
  72. package/dist/exception/FileException.d.ts +6 -0
  73. package/dist/exception/FileException.js +15 -0
  74. package/dist/exception/FileException.js.map +1 -0
  75. package/dist/exception/FileExistsException.d.ts +2 -0
  76. package/dist/exception/FileExistsException.js +3 -0
  77. package/dist/exception/FileExistsException.js.map +1 -0
  78. package/dist/exception/InvalidParameterException.d.ts +5 -0
  79. package/dist/exception/InvalidParameterException.js +12 -0
  80. package/dist/exception/InvalidParameterException.js.map +1 -0
  81. package/dist/exception/PathException.d.ts +2 -0
  82. package/dist/exception/PathException.js +3 -0
  83. package/dist/exception/PathException.js.map +1 -0
  84. package/dist/index.d.ts +40 -0
  85. package/dist/index.js +41 -0
  86. package/dist/index.js.map +1 -0
  87. package/dist/model/types.d.ts +10 -0
  88. package/dist/model/types.js +2 -0
  89. package/dist/model/types.js.map +1 -0
  90. package/dist/now/sdk/auth/CredentialStore.d.ts +2 -0
  91. package/dist/now/sdk/auth/CredentialStore.js +3 -0
  92. package/dist/now/sdk/auth/CredentialStore.js.map +1 -0
  93. package/dist/now/sdk/auth/CredentialWrapper.d.ts +31 -0
  94. package/dist/now/sdk/auth/CredentialWrapper.js +89 -0
  95. package/dist/now/sdk/auth/CredentialWrapper.js.map +1 -0
  96. package/dist/sn/BackgroundScriptExecutor.d.ts +44 -0
  97. package/dist/sn/BackgroundScriptExecutor.js +187 -0
  98. package/dist/sn/BackgroundScriptExecutor.js.map +1 -0
  99. package/dist/sn/IServiceNowInstance.d.ts +7 -0
  100. package/dist/sn/IServiceNowInstance.js +2 -0
  101. package/dist/sn/IServiceNowInstance.js.map +1 -0
  102. package/dist/sn/SNRequestBase.d.ts +13 -0
  103. package/dist/sn/SNRequestBase.js +24 -0
  104. package/dist/sn/SNRequestBase.js.map +1 -0
  105. package/dist/sn/ServiceNowInstance.d.ts +21 -0
  106. package/dist/sn/ServiceNowInstance.js +43 -0
  107. package/dist/sn/ServiceNowInstance.js.map +1 -0
  108. package/dist/sn/factory/ISNFactory.d.ts +0 -0
  109. package/dist/sn/factory/ISNFactory.js +1 -0
  110. package/dist/sn/factory/ISNFactory.js.map +1 -0
  111. package/dist/sn/factory/SNFactoryBase.d.ts +0 -0
  112. package/dist/sn/factory/SNFactoryBase.js +1 -0
  113. package/dist/sn/factory/SNFactoryBase.js.map +1 -0
  114. package/dist/sn/user/UserRequest.d.ts +7 -0
  115. package/dist/sn/user/UserRequest.js +32 -0
  116. package/dist/sn/user/UserRequest.js.map +1 -0
  117. package/dist/sn/user/factory/UserFactory.d.ts +2 -0
  118. package/dist/sn/user/factory/UserFactory.js +3 -0
  119. package/dist/sn/user/factory/UserFactory.js.map +1 -0
  120. package/dist/sn/user/model/IUser.d.ts +135 -0
  121. package/dist/sn/user/model/IUser.js +2 -0
  122. package/dist/sn/user/model/IUser.js.map +1 -0
  123. package/dist/sn/user/model/User.d.ts +202 -0
  124. package/dist/sn/user/model/User.js +465 -0
  125. package/dist/sn/user/model/User.js.map +1 -0
  126. package/dist/util/AppUtil.d.ts +3 -0
  127. package/dist/util/AppUtil.js +6 -0
  128. package/dist/util/AppUtil.js.map +1 -0
  129. package/dist/util/Logger.d.ts +21 -0
  130. package/dist/util/Logger.js +84 -0
  131. package/dist/util/Logger.js.map +1 -0
  132. package/dist/util/NowStringUtil.d.ts +3 -0
  133. package/dist/util/NowStringUtil.js +6 -0
  134. package/dist/util/NowStringUtil.js.map +1 -0
  135. package/dist/util/utils.d.ts +5 -0
  136. package/dist/util/utils.js +8 -0
  137. package/dist/util/utils.js.map +1 -0
  138. package/package.json +139 -0
@@ -0,0 +1,89 @@
1
+ import * as sdk_auth from '@servicenow/sdk-cli/dist/auth/index.js';
2
+ import { NowStringUtil } from '../../../util/NowStringUtil.js';
3
+ import { KeyChain } from '@servicenow/sdk-cli/dist/auth/keychain/index.js';
4
+ import { Logger } from '../../../util/Logger.js';
5
+ /***
6
+ * Wraps the functions exposed in @servicenow/sdk-cli/auth/index.ts
7
+ */
8
+ export class CredentialWrapper {
9
+ _logger = new Logger("CredentialWrapper");
10
+ keychain;
11
+ DEFAULT_ALIAS = 'fluent-default';
12
+ constructor() {
13
+ this.keychain = new KeyChain(sdk_auth.SERVICE);
14
+ }
15
+ async getStoredCredentials(alias) {
16
+ return await this.getStoredCredentialsByAlias(alias);
17
+ }
18
+ async testCredential(username, password, host) {
19
+ return await this.getCredentialsTestWrapper(username, password, host);
20
+ }
21
+ async getStoredCredentialsByAlias(alias) {
22
+ //let credArgs:ArgumentsCamelCase<Arguments> = {alias: alias};
23
+ const credentialArgs = { _: [], alias: null, auth: null };
24
+ if (!NowStringUtil.isStringEmpty(alias)) {
25
+ credentialArgs.auth = alias;
26
+ credentialArgs.alias = alias;
27
+ }
28
+ return await sdk_auth.getCredentials(credentialArgs);
29
+ }
30
+ async getCredentialsTestWrapper(username, password, host) {
31
+ const credentialArgs = { command: "test", alias: null, auth: null, username: username, password: password, host: host, isDefault: false };
32
+ return await sdk_auth.getCredentials(credentialArgs);
33
+ }
34
+ async validateCredentials(alias) {
35
+ const { login: loginService } = await import('@servicenow/sdk-cli-core/dist/command/login/index.js');
36
+ try {
37
+ const creds = await this.getStoredCredentials(alias);
38
+ const session = await loginService(creds, this._logger);
39
+ if (!session) {
40
+ return;
41
+ }
42
+ const { instanceUrl } = session;
43
+ this._logger.successful(`Successfully validated creds with instance ${instanceUrl}.`);
44
+ }
45
+ catch (error) {
46
+ this._logger.error(error instanceof Error ? error.message : error, error);
47
+ }
48
+ }
49
+ async storeCredentials(alias, isDefault, host, username, password) {
50
+ const { login: loginService } = await import('@servicenow/sdk-cli-core/dist/command/login/index.js');
51
+ try {
52
+ const credential = { host, username, password };
53
+ const session = await loginService(credential, this._logger);
54
+ if (!session) {
55
+ return;
56
+ }
57
+ const { instanceUrl } = session;
58
+ this._logger.successful(`Successfully authenticated to instance ${instanceUrl}.`);
59
+ this._logger.info(`Storing credentials for instance "${instanceUrl}" with alias ${alias}.`);
60
+ await sdk_auth.storeCredentials(alias, instanceUrl, username, password, isDefault);
61
+ this._logger.successful(`Successfully stored credentials for instance "${instanceUrl}" with alias ${alias}.`);
62
+ }
63
+ catch (error) {
64
+ this._logger.error(error instanceof Error ? error.message : error, error);
65
+ }
66
+ }
67
+ async updateDefaultCredential(alias, defaultCreds) {
68
+ if (defaultCreds) {
69
+ await sdk_auth.updateDefaultCredential(alias, defaultCreds);
70
+ }
71
+ else {
72
+ await sdk_auth.updateDefaultCredential(alias);
73
+ }
74
+ }
75
+ async getDefaultCredentials() {
76
+ const keyStore = await this.keychain.getPassword(this.DEFAULT_ALIAS);
77
+ if (!keyStore) {
78
+ return;
79
+ }
80
+ return JSON.parse(keyStore);
81
+ }
82
+ async removeCredentials(alias) {
83
+ await sdk_auth.removeCredentials(alias);
84
+ }
85
+ async listCredentials(alias) {
86
+ await sdk_auth.listCredentials(alias);
87
+ }
88
+ }
89
+ //# sourceMappingURL=CredentialWrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CredentialWrapper.js","sourceRoot":"","sources":["../../../../src/now/sdk/auth/CredentialWrapper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import { ServiceNowInstance } from "./ServiceNowInstance.js";
2
+ import { ServiceNowRequest } from "../comm/http/ServiceNowRequest.js";
3
+ import { Logger } from "../util/Logger.js";
4
+ export declare class BackgroundScriptExecutor {
5
+ snRequest: ServiceNowRequest;
6
+ instance: ServiceNowInstance;
7
+ scope: string;
8
+ _logger: Logger;
9
+ constructor(instance: ServiceNowInstance, scope: string);
10
+ executeScript(script: string, scope?: string, instance?: ServiceNowInstance): Promise<BackgroundScriptExecutionResult>;
11
+ parseScriptResult(responseXML: string): BackgroundScriptExecutionResult;
12
+ getBackgroundScriptCSRFToken(): Promise<string>;
13
+ private _parseBGScriptResult;
14
+ private _parseAffectedRecords;
15
+ }
16
+ export type CompositeScriptExecutionResult = {
17
+ consoleResult: string[];
18
+ rawResult: string;
19
+ scriptResults: ScriptExecutionOutputLine[];
20
+ };
21
+ export type BackgroundScriptExecutionResult = {
22
+ raw: string;
23
+ result: string;
24
+ affectedRecords: string;
25
+ consoleResult: string[];
26
+ rawResult: string;
27
+ scriptResults: ScriptExecutionOutputLine[];
28
+ };
29
+ export declare class ScriptExecutionOutputLine {
30
+ private _line;
31
+ private _isDebug;
32
+ private _isSystem;
33
+ private _isScript;
34
+ constructor(line: string);
35
+ get line(): string;
36
+ set line(val: string);
37
+ asDebugLine(isDebugLine?: boolean): ScriptExecutionOutputLine;
38
+ asSystemLine(isSystemLine?: boolean): ScriptExecutionOutputLine;
39
+ asScriptLine(isScriptLine?: boolean): ScriptExecutionOutputLine;
40
+ }
41
+ export interface BackgroundScriptExecutorOptions {
42
+ instance?: ServiceNowInstance;
43
+ scope?: string;
44
+ }
@@ -0,0 +1,187 @@
1
+ /* eslint-disable @typescript-eslint/no-unsafe-member-access */
2
+ /* eslint-disable @typescript-eslint/no-unsafe-assignment */
3
+ /* eslint-disable @typescript-eslint/no-unused-expressions */
4
+ /* eslint-disable @typescript-eslint/no-explicit-any */
5
+ /* eslint-disable @typescript-eslint/no-unsafe-return */
6
+ import { ServiceNowInstance } from "./ServiceNowInstance.js";
7
+ import { ServiceNowRequest } from "../comm/http/ServiceNowRequest.js";
8
+ //import { XMLParser } from "../utils";
9
+ import { XMLParser } from 'fast-xml-parser';
10
+ import { Logger } from "../util/Logger.js";
11
+ import { BG_SCRIPT_ENDPOINT } from "../constants/ServiceNow.js";
12
+ import { isNil } from "../util/utils.js";
13
+ export class BackgroundScriptExecutor {
14
+ snRequest;
15
+ instance;
16
+ scope;
17
+ _logger = new Logger("BackgroundScriptExecutor");
18
+ constructor(instance, scope) {
19
+ this.instance = instance;
20
+ this.scope = scope;
21
+ this.snRequest = new ServiceNowRequest(this.instance);
22
+ }
23
+ async executeScript(script, scope = this.scope, instance = this.instance) {
24
+ if (!instance || !(instance instanceof ServiceNowInstance)) {
25
+ throw new Error("instance must be a ServiceNowInstance");
26
+ }
27
+ if (!scope || typeof scope != "string") {
28
+ throw new Error("scope must be a string");
29
+ }
30
+ if (!script || typeof script != "string") {
31
+ throw new Error("script must be a string");
32
+ }
33
+ try {
34
+ const gck = await this.getBackgroundScriptCSRFToken();
35
+ const fd = new FormData();
36
+ fd.append("script", script);
37
+ fd.append("sysparm_ck", gck);
38
+ fd.append("runscript", "Run script");
39
+ fd.append("sys_scope", scope);
40
+ fd.append("record_for_rollback", "off");
41
+ fd.append("quota_managed_transaction", "off");
42
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
43
+ const params = new URLSearchParams(fd);
44
+ const request = {
45
+ path: BG_SCRIPT_ENDPOINT,
46
+ headers: { "Content-Type": "application/x-www-form-urlencoded" },
47
+ query: null,
48
+ body: params
49
+ };
50
+ this._logger.debug("Execute Background Script Request.", { request: request, formData: fd });
51
+ const response = await this.snRequest.post(request);
52
+ if (response.status == 200) {
53
+ const bodyXml = response?.data;
54
+ if (bodyXml) {
55
+ const resultObj = this.parseScriptResult(bodyXml);
56
+ return resultObj;
57
+ }
58
+ else {
59
+ throw new Error("Body not XML String");
60
+ }
61
+ }
62
+ else {
63
+ throw new Error(`Script Execution Request resulted in ${response.status}`);
64
+ }
65
+ }
66
+ catch (error) {
67
+ const err = error;
68
+ throw new Error(`Error executing script: ${err.message}`);
69
+ }
70
+ }
71
+ parseScriptResult(responseXML) {
72
+ const options = {
73
+ ignoreAttributes: false,
74
+ unpairedTags: ["hr", "br", "link", "meta"],
75
+ stopNodes: ["*.pre", "*.script"],
76
+ processEntities: true,
77
+ htmlEntities: true,
78
+ tagValueProcessor: (tagName, tagValue) => {
79
+ if (tagName === "PRE") {
80
+ return tagValue + "\n";
81
+ }
82
+ return tagValue;
83
+ }
84
+ };
85
+ const parser = new XMLParser(options);
86
+ const strippedResponseXML = responseXML.replace(/^\[[0-9:.]+\]/g, "");
87
+ const jObj = parser.parse(strippedResponseXML);
88
+ const compositeResult = this._parseBGScriptResult(jObj);
89
+ const affectedRecords = this._parseAffectedRecords(jObj);
90
+ const scriptResult = {
91
+ raw: responseXML,
92
+ result: compositeResult.rawResult,
93
+ consoleResult: compositeResult.consoleResult,
94
+ rawResult: compositeResult.rawResult,
95
+ scriptResults: compositeResult.scriptResults,
96
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
97
+ affectedRecords: affectedRecords
98
+ };
99
+ this._logger.debug("parseScriptResult return value.", scriptResult);
100
+ return scriptResult;
101
+ }
102
+ async getBackgroundScriptCSRFToken() {
103
+ let csrfToken = null;
104
+ const request = {
105
+ path: BG_SCRIPT_ENDPOINT,
106
+ headers: null,
107
+ query: null,
108
+ body: null
109
+ };
110
+ const response = await this.snRequest.get(request);
111
+ const isLoggedIn = response.headers["x-is-logged-in"] === "true" ? true : false;
112
+ if (response.status == 200 && isLoggedIn && !isNil(response.data)) {
113
+ const e = response.data;
114
+ const t = "<input name=\"sysparm_ck\" type=\"hidden\" value=\"";
115
+ const n = e.substring(e.indexOf(t));
116
+ csrfToken = n.substring(0, n.indexOf("\">")).replace(t, "");
117
+ this._logger.debug("CSRF Token Received: " + csrfToken, { csrfToken: csrfToken });
118
+ }
119
+ else {
120
+ this._logger.error("getBackgroundScriptCSRFToken: Invalid response. Status not 200, not logged in, or response data is empty.", { response: response });
121
+ }
122
+ return csrfToken;
123
+ }
124
+ _parseBGScriptResult(parsedXMLObj) {
125
+ this._logger.debug("_parseBGScriptResult enter", parsedXMLObj);
126
+ const scriptResults = [];
127
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
128
+ const result = parsedXMLObj.HTML.BODY.PRE["#text"];
129
+ const spl = result.split("\n");
130
+ spl.forEach((line, index) => {
131
+ if (isNil(line))
132
+ spl[index] = null;
133
+ else {
134
+ line = line.trim();
135
+ //If the output does not have a "*** Script: " before it, then it is system output
136
+ if (line.indexOf("*** Script: ") == -1) {
137
+ scriptResults.push(new ScriptExecutionOutputLine(line).asSystemLine());
138
+ //If the output does have a "*** Script: " prefixing it, it is output from this script or a script being called
139
+ }
140
+ else if (line.indexOf("*** Script: ") !== -1) {
141
+ line = line.replace("*** Script: ", "");
142
+ if (line.indexOf("[DEBUG]") !== -1) {
143
+ scriptResults.push(new ScriptExecutionOutputLine(line).asDebugLine());
144
+ }
145
+ else {
146
+ scriptResults.push(new ScriptExecutionOutputLine(line).asScriptLine());
147
+ }
148
+ }
149
+ //Keep the original array intact in order to preserve the order with system outputs.
150
+ spl[index] = line;
151
+ }
152
+ });
153
+ const filteredSpl = spl.filter(line => line !== null);
154
+ return { rawResult: result, consoleResult: filteredSpl, scriptResults: scriptResults };
155
+ }
156
+ _parseAffectedRecords(parsedXMLObj) {
157
+ return parsedXMLObj?.HTML?.BODY?.div;
158
+ }
159
+ }
160
+ export class ScriptExecutionOutputLine {
161
+ _line;
162
+ _isDebug = false;
163
+ _isSystem = false;
164
+ _isScript = false;
165
+ constructor(line) {
166
+ this._line = line;
167
+ }
168
+ get line() {
169
+ return this._line;
170
+ }
171
+ set line(val) {
172
+ this._line = val;
173
+ }
174
+ asDebugLine(isDebugLine = true) {
175
+ this._isDebug = isDebugLine;
176
+ return this;
177
+ }
178
+ asSystemLine(isSystemLine = true) {
179
+ this._isDebug = isSystemLine;
180
+ return this;
181
+ }
182
+ asScriptLine(isScriptLine = true) {
183
+ this._isDebug = isScriptLine;
184
+ return this;
185
+ }
186
+ }
187
+ //# sourceMappingURL=BackgroundScriptExecutor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BackgroundScriptExecutor.js","sourceRoot":"","sources":["../../src/sn/BackgroundScriptExecutor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export interface IServiceNowInstance {
2
+ isDefault(): boolean;
3
+ getHost(): string;
4
+ getUserName(): string;
5
+ getAlias(): string;
6
+ getPassword(): string;
7
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=IServiceNowInstance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IServiceNowInstance.js","sourceRoot":"","sources":["../../src/sn/IServiceNowInstance.ts"],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ import { ServiceNowRequest } from "../comm/http/ServiceNowRequest.js";
2
+ import { Logger } from "../util/Logger.js";
3
+ import { IServiceNowInstance } from "./IServiceNowInstance.js";
4
+ export declare abstract class SNRequestBase {
5
+ private _snInstance;
6
+ private _req;
7
+ _logger: Logger;
8
+ constructor(instance: IServiceNowInstance);
9
+ get request(): ServiceNowRequest;
10
+ set request(value: ServiceNowRequest);
11
+ get snInstance(): IServiceNowInstance;
12
+ set snInstance(value: IServiceNowInstance);
13
+ }
@@ -0,0 +1,24 @@
1
+ import { ServiceNowRequest } from "../comm/http/ServiceNowRequest.js";
2
+ import { Logger } from "../util/Logger.js";
3
+ export class SNRequestBase {
4
+ _snInstance;
5
+ _req;
6
+ _logger = new Logger("ATFTestExecutor");
7
+ constructor(instance) {
8
+ this._snInstance = instance;
9
+ this._req = new ServiceNowRequest(this._snInstance);
10
+ }
11
+ get request() {
12
+ return this._req;
13
+ }
14
+ set request(value) {
15
+ this._req = value;
16
+ }
17
+ get snInstance() {
18
+ return this._snInstance;
19
+ }
20
+ set snInstance(value) {
21
+ this._snInstance = value;
22
+ }
23
+ }
24
+ //# sourceMappingURL=SNRequestBase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SNRequestBase.js","sourceRoot":"","sources":["../../src/sn/SNRequestBase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAIxC,MAAM,OAAgB,aAAa;IACvB,WAAW,CAAsB;IAGjC,IAAI,CAAoB;IAGhC,OAAO,GAAU,IAAI,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAE/C,YAAmB,QAA4B;QAC3C,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAI,IAAI,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACzD,CAAC;IAED,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IACD,IAAW,OAAO,CAAG,KAAwB;QACzC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;IACtB,CAAC;IAED,IAAW,UAAU;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IACD,IAAW,UAAU,CAAG,KAA0B;QAC9C,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC7B,CAAC;CAEJ"}
@@ -0,0 +1,21 @@
1
+ import { IServiceNowInstance } from "./IServiceNowInstance.js";
2
+ export interface ServiceNowSettingsInstance {
3
+ host?: string;
4
+ username?: string;
5
+ alias?: string;
6
+ isDefault?: boolean;
7
+ password?: string;
8
+ }
9
+ export declare class ServiceNowInstance implements IServiceNowInstance {
10
+ private _isDefault;
11
+ private _host;
12
+ private _username;
13
+ private _alias;
14
+ private _password;
15
+ constructor(snInstanceSettingsObj?: ServiceNowSettingsInstance | null);
16
+ isDefault(): boolean;
17
+ getHost(): string;
18
+ getUserName(): string;
19
+ getAlias(): string;
20
+ getPassword(): string;
21
+ }
@@ -0,0 +1,43 @@
1
+ export class ServiceNowInstance {
2
+ _isDefault;
3
+ _host;
4
+ _username;
5
+ _alias;
6
+ _password;
7
+ constructor(snInstanceSettingsObj) {
8
+ if (typeof snInstanceSettingsObj != 'undefined' && snInstanceSettingsObj != null) {
9
+ if (snInstanceSettingsObj.host) {
10
+ this._host = snInstanceSettingsObj.host;
11
+ }
12
+ if (snInstanceSettingsObj.alias) {
13
+ this._alias = snInstanceSettingsObj.alias;
14
+ }
15
+ if (snInstanceSettingsObj.username) {
16
+ this._username = snInstanceSettingsObj.username;
17
+ }
18
+ if (snInstanceSettingsObj.isDefault) {
19
+ this._isDefault = snInstanceSettingsObj.isDefault;
20
+ }
21
+ if (snInstanceSettingsObj.password) {
22
+ this._password = snInstanceSettingsObj.password;
23
+ }
24
+ }
25
+ }
26
+ isDefault() {
27
+ return this._isDefault;
28
+ }
29
+ getHost() {
30
+ return this._host;
31
+ }
32
+ getUserName() {
33
+ return this._username;
34
+ }
35
+ getAlias() {
36
+ return this._alias;
37
+ }
38
+ //todo: Do we store the password in Secrets or the entire SN Instance? Can we store the entire array of SN Instances in secrets?
39
+ getPassword() {
40
+ return this._password;
41
+ }
42
+ }
43
+ //# sourceMappingURL=ServiceNowInstance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ServiceNowInstance.js","sourceRoot":"","sources":["../../src/sn/ServiceNowInstance.ts"],"names":[],"mappings":"AAUA,MAAM,OAAO,kBAAkB;IACnB,UAAU,CAAS;IACnB,KAAK,CAAQ;IACb,SAAS,CAAQ;IACjB,MAAM,CAAQ;IAEd,SAAS,CAAQ;IAGzB,YAAY,qBAAwD;QAChE,IAAG,OAAO,qBAAqB,IAAI,WAAW,IAAI,qBAAqB,IAAI,IAAI,EAAC,CAAC;YAC7E,IAAG,qBAAqB,CAAC,IAAI,EAAC,CAAC;gBAC3B,IAAI,CAAC,KAAK,GAAG,qBAAqB,CAAC,IAAI,CAAC;YAC5C,CAAC;YACD,IAAG,qBAAqB,CAAC,KAAK,EAAC,CAAC;gBAC5B,IAAI,CAAC,MAAM,GAAG,qBAAqB,CAAC,KAAK,CAAC;YAC9C,CAAC;YACD,IAAG,qBAAqB,CAAC,QAAQ,EAAC,CAAC;gBAC/B,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,QAAQ,CAAC;YACpD,CAAC;YACD,IAAG,qBAAqB,CAAC,SAAS,EAAC,CAAC;gBAChC,IAAI,CAAC,UAAU,GAAG,qBAAqB,CAAC,SAAS,CAAC;YACtD,CAAC;YACD,IAAG,qBAAqB,CAAC,QAAQ,EAAC,CAAC;gBAC/B,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,QAAQ,CAAC;YACpD,CAAC;QAEL,CAAC;IACL,CAAC;IAED,SAAS;QACL,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED,OAAO;QACH,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,WAAW;QACP,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED,QAAQ;QACJ,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAED,gIAAgI;IAChI,WAAW;QACP,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;CACJ"}
File without changes
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=ISNFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ISNFactory.js","sourceRoot":"","sources":["../../../src/sn/factory/ISNFactory.ts"],"names":[],"mappings":""}
File without changes
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=SNFactoryBase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SNFactoryBase.js","sourceRoot":"","sources":["../../../src/sn/factory/SNFactoryBase.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ import { IServiceNowInstance } from "../IServiceNowInstance.js";
2
+ import { SNRequestBase } from "../SNRequestBase.js";
3
+ import { IUser } from "./model/IUser.js";
4
+ export declare class UserRequest extends SNRequestBase {
5
+ constructor(instance: IServiceNowInstance);
6
+ getUser(userId: string): Promise<IUser>;
7
+ }
@@ -0,0 +1,32 @@
1
+ import { TableAPIRequest } from "../../comm/http/TableAPIRequest.js";
2
+ import { SNRequestBase } from "../SNRequestBase.js";
3
+ export class UserRequest extends SNRequestBase {
4
+ constructor(instance) {
5
+ super(instance);
6
+ }
7
+ // private async getUser(userId:string):Promise<IUser>{
8
+ // const request:HTTPRequest = { path: "/api/now/table/sys_atf_test_result?sysparm_query=sys_id="+userId, headers: null, query: null, body:null};
9
+ // const resp:HttpResponse<ServiceNowTableResponse<IUser>> = await this.request.get<ServiceNowTableResponse<IUser>>(request);
10
+ // if(resp.status == 200){
11
+ // const tableResp:ServiceNowTableResponse<IUser> = resp.bodyObject;
12
+ // if(tableResp.result && tableResp.result.length > 0){
13
+ // return tableResp.result[0];
14
+ // }
15
+ // }
16
+ // return null;
17
+ // }
18
+ async getUser(userId) {
19
+ const request = new TableAPIRequest(this.snInstance);
20
+ const params = {};
21
+ params["sysparm_query"] = "sys_id=" + userId;
22
+ const resp = await request.get("sys_user", params);
23
+ if (resp.status == 200) {
24
+ const tableResp = resp.bodyObject;
25
+ if (tableResp.result && tableResp.result.length > 0) {
26
+ return tableResp.result[0];
27
+ }
28
+ }
29
+ return null;
30
+ }
31
+ }
32
+ //# sourceMappingURL=UserRequest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserRequest.js","sourceRoot":"","sources":["../../../src/sn/user/UserRequest.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAGlE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAIjD,MAAM,OAAO,WAAY,SAAQ,aAAa;IAG1C,YAAmB,QAA4B;QAC3C,KAAK,CAAC,QAAQ,CAAC,CAAC;IACpB,CAAC;IAED,uDAAuD;IAGvD,qJAAqJ;IACrJ,iIAAiI;IACjI,8BAA8B;IAC9B,6EAA6E;IAC7E,+DAA+D;IAC/D,0CAA0C;IAC1C,YAAY;IAEZ,QAAQ;IAER,mBAAmB;IACnB,IAAI;IAEG,KAAK,CAAC,OAAO,CAAC,MAAa;QAE9B,MAAM,OAAO,GAAmB,IAAI,eAAe,CAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACtE,MAAM,MAAM,GAAU,EAAE,CAAC;QACzB,MAAM,CAAC,eAAe,CAAC,GAAG,SAAS,GAAC,MAAM,CAAC;QAI5C,MAAM,IAAI,GAAiD,MAAM,OAAO,CAAC,GAAG,CAAiC,UAAU,EAAE,MAAM,CAAC,CAAC;QACjI,IAAG,IAAI,CAAC,MAAM,IAAI,GAAG,EAAC,CAAC;YAClB,MAAM,SAAS,GAAmC,IAAI,CAAC,UAAU,CAAC;YAClE,IAAG,SAAS,CAAC,MAAM,IAAI,SAAS,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAC,CAAC;gBAChD,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC/B,CAAC;QAEL,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;CAEJ"}
@@ -0,0 +1,2 @@
1
+ export declare class UserFactory {
2
+ }
@@ -0,0 +1,3 @@
1
+ export class UserFactory {
2
+ }
3
+ //# sourceMappingURL=UserFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserFactory.js","sourceRoot":"","sources":["../../../../src/sn/user/factory/UserFactory.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,WAAW;CAEvB"}