@nsshunt/stsutils 1.19.154 → 1.19.156
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/dist/index.cjs +3 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +2 -1
- package/dist/index.mjs.map +1 -1
- package/dist/node.cjs +20 -29
- package/dist/node.cjs.map +1 -1
- package/dist/node.mjs +18 -26
- package/dist/node.mjs.map +1 -1
- package/dist/pidColours-Cf8--nrU.js +28 -0
- package/dist/pidColours-Cf8--nrU.js.map +1 -0
- package/dist/{rolldown-runtime-VH7oDXx4.cjs → pidColours-uEpdtVfi.cjs} +33 -0
- package/dist/pidColours-uEpdtVfi.cjs.map +1 -0
- package/package.json +2 -2
- package/types/index.d.ts +1 -0
- package/types/index.d.ts.map +1 -1
- package/types/node.d.ts +1 -1
- package/types/node.d.ts.map +1 -1
- package/types/pidColours.d.ts +1 -4
- package/types/pidColours.d.ts.map +1 -1
- package/types/pidColoursNode.d.ts +7 -0
- package/types/pidColoursNode.d.ts.map +1 -0
package/dist/index.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const
|
|
2
|
+
const require_pidColours = require("./pidColours-uEpdtVfi.cjs");
|
|
3
3
|
let chalk = require("chalk");
|
|
4
|
-
chalk =
|
|
4
|
+
chalk = require_pidColours.__toESM(chalk, 1);
|
|
5
5
|
//#region src/commonTypes.ts
|
|
6
6
|
var ModelDelimeter = /* @__PURE__ */ function(ModelDelimeter) {
|
|
7
7
|
ModelDelimeter["ROOT"] = "_";
|
|
@@ -520,6 +520,7 @@ exports.OAuth2ParameterErrorType = OAuth2ParameterErrorType;
|
|
|
520
520
|
exports.OAuth2ParameterType = OAuth2ParameterType;
|
|
521
521
|
exports.OIDCAddressClaim = OIDCAddressClaim;
|
|
522
522
|
exports.OIDCStandardClaim = OIDCStandardClaim;
|
|
523
|
+
exports.PidColours = require_pidColours.PidColours;
|
|
523
524
|
exports.STSAxiosConfig = STSAxiosConfig;
|
|
524
525
|
exports.SetInjectionContextStore = SetInjectionContextStore;
|
|
525
526
|
exports.Sleep = Sleep;
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":[],"sources":["../src/commonTypes.ts","../src/dataAccessTypes.ts","../src/sleep.ts","../src/stsAxiosConfig.ts","../src/agentManager.ts","../src/errorhandling.ts","../src/oauth2terms.ts","../src/di.ts","../src/index.ts"],"sourcesContent":["/* eslint @typescript-eslint/no-explicit-any: 0 */ // --> OFF\n/* eslint @typescript-eslint/no-unused-vars: 0 */ // --> OFF\nimport chalk from \"chalk\";\n\nexport interface JSONObject {\n [x: string]: any | JSONObject | undefined;\n}\n\nexport enum ModelDelimeter {\n ROOT = \"_\",\n SEPERATOR = \"|\",\n COMPONENT_SEPERATOR = \"@\",\n NID_SEPERATOR = \"^\", // This seperator splits the static and dynamic part of a context string (nid). Used for creating payload header for size optimisation.\n}\n\nexport const CheckValidChar = (checkParams: string[][]): void => {\n const invalidChars = [\n ModelDelimeter.ROOT,\n ModelDelimeter.SEPERATOR,\n ModelDelimeter.COMPONENT_SEPERATOR,\n ModelDelimeter.NID_SEPERATOR,\n ];\n\n checkParams.forEach((param) => {\n invalidChars.forEach((char) => {\n if (param[1].includes(char)) {\n throw new Error(\n `Invalid character inside [${param[0]}:${param[1]}], no [${char}] allowed`\n );\n }\n });\n });\n};\n\n// npm logging levels are prioritized from 0 to 6 (highest to lowest). This from Winston logger.\nexport interface ISTSLogger {\n error(message: any): void;\n warn(message: any): void;\n info(message: any): void;\n http(message: any): void;\n verbose(message: any): void;\n debug(message: any): void;\n silly(message: any): void;\n}\n\nexport const defaultLogger: ISTSLogger = {\n debug(message) {\n console.debug(chalk.grey(`debug: ${message}`));\n },\n error(message) {\n console.error(chalk.red(`error: ${message}`));\n },\n http(message) {\n console.log(chalk.cyan(`http: ${message}`));\n },\n info(message) {\n console.info(chalk.white(`info: ${message}`));\n },\n silly(message) {\n console.log(chalk.yellow(`silly: ${message}`));\n },\n verbose(message) {\n console.log(chalk.green(`verbose: ${message}`));\n },\n warn(message) {\n console.warn(chalk.magenta(`warn: ${message}`));\n },\n};\n\nexport const emptyLogger: ISTSLogger = {\n debug(message) {},\n error(message) {},\n http(message) {},\n info(message) {},\n silly(message) {},\n verbose(message) {},\n warn(message) {},\n};\n","import { StatusCodes } from \"http-status-codes\";\n\nimport { JSONObject } from \"./commonTypes.js\";\n\n//@@ These should be moved into the stsrest01client\nexport enum edbaction {\n created = 1,\n updated = 2,\n deleted = 3,\n}\n\nexport interface IDBResource<T> {\n oid: string;\n resname: string;\n resdesc: T;\n vnum: string;\n validfrom: string;\n validto: string | null;\n dbaction: edbaction;\n dbactionuser: string;\n}\n\nexport interface IDBEntity<T> {\n oid: string;\n resourceoid: string;\n entname: string;\n entvalue: T;\n vnum: string;\n validfrom: string;\n validto: string | null;\n dbaction: edbaction;\n dbactionuser: string;\n}\n\nexport interface IDBFilters {\n resname?: string;\n entname?: string;\n resvnum?: string;\n entvnum?: string;\n filter?: string;\n incdel?: string;\n startdate?: string;\n enddate?: string;\n resenddate?: string;\n dbaction?: string;\n dbactionuser?: string;\n limit?: string;\n}\n\nexport interface IAccessLayerErrorDetail {\n status: StatusCodes;\n error: Error;\n errorMessage: string;\n operation: string;\n}\n\nexport interface IDBOptions {\n filters?: IDBFilters;\n useCache?: boolean;\n useMultipleDatabases?: boolean;\n limit?: number;\n errorOnBatchUpdate?: boolean;\n}\n\nexport interface IDBReturnData<T> {\n status: StatusCodes;\n operation: string;\n detail:\n | IDBReturnData<T>[]\n | IDBResource<T>[]\n | IDBResource<T>\n | IDBEntity<T>[]\n | IDBEntity<T>\n | T\n | null;\n options: IDBOptions;\n error?: IAccessLayerErrorDetail;\n}\n\nexport interface IDBSearchOptions {\n queryFunctionName: string;\n searchParameters: JSONObject;\n returnsResourceList: boolean;\n}\n","export async function Sleep(milliseconds = 1000): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, milliseconds));\n}\n","import { JSONObject } from \"./commonTypes.js\";\nimport { IAgentManager } from \"./agentManager.js\";\n\nexport class STSAxiosConfig {\n #url: string;\n #method: string;\n #headers?: JSONObject;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #data?: any;\n #agentManager?: IAgentManager;\n #timeout?: number;\n #withCredentials?: boolean;\n\n constructor(\n url: string,\n method: string,\n headers?: JSONObject,\n timeout?: number\n ) {\n this.#url = url;\n this.#method = method;\n if (headers !== undefined) {\n this.#headers = headers;\n }\n if (timeout !== undefined) {\n this.#timeout = timeout;\n }\n }\n\n /**\n *\n * @param cookies this.#headers['Cookie'] = cookies.join('; ')\n * @returns\n */\n withCookies(cookies: string[]) {\n if (!this.#headers) {\n this.#headers = {};\n }\n this.#headers[\"Cookie\"] = cookies.join(\"; \");\n return this;\n }\n\n /**\n *\n * @param data Add data to the body\n * @returns\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n withData(data: any) {\n this.#data = data;\n return this;\n }\n\n // 'Content-Type': 'application/json'\n\n /**\n *\n * @param accesssToken\n * @param stsUserId\n * @returns this.#headers['Authorization'] = 'Bearer ' + accesssToken; and this.#headers['x-sts_user_id'] = stsUserId;\n */\n withAuthHeaders(accesssToken: string, stsUserId?: string) {\n if (!this.#headers) {\n this.#headers = {};\n }\n this.#headers[\"Authorization\"] = \"Bearer \" + accesssToken;\n if (stsUserId) {\n this.#headers[\"x-sts_user_id\"] = stsUserId;\n }\n return this;\n }\n\n /**\n *\n * @param headers Add headers to the existing header\n * @returns\n */\n withHeaders(headers: JSONObject) {\n this.#headers = {\n ...(this.#headers ?? {}),\n ...headers,\n };\n return this;\n }\n\n /**\n *\n * @returns this.#headers['Content-Type'] = 'application/fhir+json';\n */\n withApplicationFhirAndJsonContentTypeHeaders() {\n if (!this.#headers) {\n this.#headers = {};\n }\n this.#headers[\"Content-Type\"] = \"application/fhir+json\";\n return this;\n }\n\n /**\n *\n * @returns this.#headers['Content-Type'] = 'application/merge-patch+json';\n */\n withApplicationMergePatchAndJsonContentTypeHeaders() {\n if (!this.#headers) {\n this.#headers = {};\n }\n this.#headers[\"Content-Type\"] = \"application/merge-patch+json\";\n return this;\n }\n\n /**\n *\n * @returns this.#headers['Content-Type'] = 'application/json-patch+json';\n */\n withApplicationJsonPatchAndJsonContentTypeHeaders() {\n if (!this.#headers) {\n this.#headers = {};\n }\n this.#headers[\"Content-Type\"] = \"application/json-patch+json\";\n return this;\n }\n\n /**\n *\n * @returns this.#headers['Content-Type'] = 'application/json';\n */\n withApplicationJsonContentTypeHeaders() {\n if (!this.#headers) {\n this.#headers = {};\n }\n this.#headers[\"Content-Type\"] = \"application/json\";\n return this;\n }\n\n /**\n *\n * @returns this.#headers['Content-Type'] = 'application/json';\n */\n withDefaultHeaders() {\n if (!this.#headers) {\n this.#headers = {};\n }\n this.#headers[\"Content-Type\"] = \"application/json\";\n return this;\n }\n\n /**\n *\n * @returns\n */\n withCredentials() {\n this.#withCredentials = true;\n return this;\n }\n\n /**\n *\n * @param timeout Add a connection timeout\n * @returns\n */\n withTimeout(timeout: number) {\n this.#timeout = timeout;\n return this;\n }\n\n /**\n *\n * @param agentManager Add the agent manager for each rest call. Only for nodejs not browser.\n * @returns\n */\n withAgentManager(agentManager: IAgentManager) {\n this.#agentManager = agentManager;\n return this;\n }\n\n /**\n * @returns Returns axios config object\n */\n get config(): JSONObject {\n const retVal: JSONObject = {\n url: this.#url,\n method: this.#method,\n };\n if (this.#headers) {\n retVal.headers = this.#headers;\n }\n if (this.#agentManager !== undefined) {\n if (this.#agentManager.IsHttps(this.#url)) {\n retVal.httpsAgent = this.#agentManager.GetAgent(this.#url);\n } else {\n retVal.httpAgent = this.#agentManager.GetAgent(this.#url);\n }\n }\n if (this.#data !== undefined) {\n retVal.data = this.#data;\n }\n if (this.#timeout !== undefined) {\n retVal.timeout = this.#timeout;\n }\n if (\n this.#withCredentials !== undefined &&\n this.#withCredentials === true\n ) {\n retVal.withCredentials = true;\n }\n return retVal;\n }\n}\n","export interface IAgentOptions {\n keepAlive: boolean;\n maxSockets: number;\n maxTotalSockets: number;\n maxFreeSockets: number;\n timeout: number;\n rejectUnauthorized?: boolean;\n}\n\nexport interface IAgentManagerOptions {\n httpAgentFactory: (options: IAgentOptions) => unknown;\n httpsAgentFactory: (options: IAgentOptions) => unknown;\n agentOptions?: IAgentOptions;\n agentResetInterval?: number;\n agentResetCount?: number;\n}\n\nexport interface IAgentManager {\n get agentResetInterval(): number | undefined;\n get agentResetCount(): number | undefined;\n UpdateAgentResetInterval(val: number): void;\n UpdateAgentResetCount(val: number): void;\n IncRequestCount(): void;\n IsHttps(protocol: string): boolean;\n GetAgent(protocol: string): unknown;\n ResetAgent(): void;\n Terminate(): void;\n}\n\nexport function createAgentManager(\n agentManagerOptions: IAgentManagerOptions\n): IAgentManager {\n return new AgentManager(agentManagerOptions);\n}\n\nclass AgentManager implements IAgentManager {\n #options: IAgentManagerOptions;\n #agentResetInterval: NodeJS.Timeout | null = null;\n #requestCount: number = 0;\n #httpAgent: unknown = undefined;\n #httpsAgent: unknown = undefined;\n\n constructor(agentManagerOptions: IAgentManagerOptions) {\n this.#options = agentManagerOptions;\n if (this.#options.agentResetInterval) {\n this.#SetupResetInterval();\n }\n }\n\n get agentResetInterval(): number | undefined {\n return this.#options.agentResetInterval;\n }\n\n UpdateAgentResetInterval(val: number): void {\n if (this.#agentResetInterval) {\n clearTimeout(this.#agentResetInterval);\n }\n this.#options.agentResetInterval = val;\n this.#SetupResetInterval();\n }\n\n get agentResetCount(): number | undefined {\n return this.#options.agentResetCount;\n }\n\n UpdateAgentResetCount(val: number): void {\n this.#options.agentResetCount = val;\n }\n\n #SetupResetInterval = () => {\n if (\n this.#options.agentResetInterval &&\n this.#options.agentResetInterval > 0\n ) {\n this.#agentResetInterval = setTimeout(() => {\n this.ResetAgent();\n this.#SetupResetInterval();\n }, this.#options.agentResetInterval).unref();\n }\n };\n\n IncRequestCount(): void {\n this.#requestCount++;\n if (this.#options.agentResetCount) {\n if (this.#requestCount % this.#options.agentResetCount === 0) {\n this.ResetAgent();\n }\n }\n }\n\n IsHttps(protocol: string): boolean {\n if (protocol.toLowerCase().startsWith(\"https:\")) {\n return true;\n }\n return false;\n }\n\n #GetAgentOptions = (https: boolean): IAgentOptions => {\n let options: IAgentOptions;\n if (this.#options.agentOptions) {\n options = {\n keepAlive: this.#options.agentOptions.keepAlive,\n maxSockets: this.#options.agentOptions.maxSockets,\n maxTotalSockets: this.#options.agentOptions.maxTotalSockets,\n maxFreeSockets: this.#options.agentOptions.maxFreeSockets,\n timeout: this.#options.agentOptions.timeout,\n };\n if (https === true) {\n options.rejectUnauthorized =\n this.#options.agentOptions.rejectUnauthorized; // Allows self signed certs in non production mode(s)\n }\n } else {\n // Defaults\n options = {\n keepAlive: true,\n maxSockets: 10,\n maxTotalSockets: 20,\n maxFreeSockets: 256,\n timeout: 30000,\n rejectUnauthorized: false,\n };\n }\n return options;\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n GetAgent(protocol: string): any {\n if (protocol.toLowerCase().startsWith(\"https:\")) {\n if (!this.#httpsAgent) {\n //this.#httpsAgent = new https.Agent(this.#GetAgentOptions(true));\n this.#httpsAgent = this.#options.httpsAgentFactory(\n this.#GetAgentOptions(true)\n );\n }\n return this.#httpsAgent;\n } else if (protocol.toLowerCase().startsWith(\"http:\")) {\n if (!this.#httpAgent) {\n //this.#httpAgent = new http.Agent(this.#GetAgentOptions(false));\n this.#httpAgent = this.#options.httpAgentFactory(\n this.#GetAgentOptions(false)\n );\n }\n return this.#httpAgent;\n } else {\n return null;\n }\n }\n\n ResetAgent(): void {\n this.#httpAgent = null;\n this.#httpsAgent = null;\n }\n\n Terminate(): void {\n if (this.#agentResetInterval) {\n clearTimeout(this.#agentResetInterval);\n this.#agentResetInterval = null;\n }\n\n if (this.#httpAgent) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (this.#httpAgent as any).destroy();\n this.#httpAgent = null;\n }\n\n if (this.#httpsAgent) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (this.#httpsAgent as any).destroy();\n this.#httpsAgent = null;\n }\n }\n}\n","export type errorCode = {\n code: string;\n description: string;\n};\n\nexport type errorPayload = {\n error: string;\n error_description: string;\n timestamp: number;\n //trace_id: \"255d1aef-8c98-452f-ac51-23d051240864\", //@@\n //correlation_id: \"fb3d2015-bc17-4bb9-bb85-30c5cf1aaaa7\", //@@\n details?: unknown;\n};\n\nexport function GetErrorPayload(\n errorCode: errorCode,\n details: unknown = null\n): errorPayload {\n return {\n error: errorCode.code,\n error_description: errorCode.description,\n timestamp: Date.now(),\n //trace_id: \"255d1aef-8c98-452f-ac51-23d051240864\", //@@\n //correlation_id: \"fb3d2015-bc17-4bb9-bb85-30c5cf1aaaa7\", //@@\n details: details,\n };\n}\n","import { errorCode, errorPayload } from \"./errorhandling.js\";\n\n// Ref: https://datatracker.ietf.org/doc/html/rfc6749#appendix-A\nexport enum OAuth2ParameterType {\n AUDIENCE = \"AUDIENCE\", // STS Extension\n CLIENT_ID = \"client_id\",\n CLIENT_SECRET = \"client_secret\",\n RESPONSE_TYPE = \"response_type\",\n SCOPE = \"scope\",\n STATE = \"state\",\n REDIRECT_URI = \"redirect_uri\",\n ERROR = \"error\",\n ERROR_DESCRIPTION = \"error_description\",\n ERROR_CODES = \"error_codes\", // STS Extension\n ERROR_URI = \"error_uri\",\n GRANT_TYPE = \"grant_type\",\n CODE = \"code\",\n ACCESS_TOKEN = \"access_token\",\n TOKEN_TYPE = \"token_type\",\n EXPIRES_IN = \"expires_in\",\n USERNAME = \"username\",\n PASSWORD = \"password\",\n REFRESH_TOKEN = \"refresh_token\",\n RESPONSE_MODE = \"response_mode\", // STS Extension\n TIMESTAMP = \"timestamp\", // STS Extension\n TRACE_ID = \"trace_id\", // STS Extension\n CORRELATION_ID = \"correlation_id\", // STS Extension\n}\n\n// Auth0 claim usage;\n// aud - api identifier\n// scope - list (space separated) of api permissions\n\n// Claims (Auth0)\n// https://auth0.com/docs/secure/tokens/json-web-tokens/json-web-token-claims\n\n// Reserved claims (IANA)\n// https://www.iana.org/assignments/jwt/jwt.xhtml#claims\n\n// Example scopes and claims (Auth0)\n// https://auth0.com/docs/get-started/apis/scopes/sample-use-cases-scopes-and-claims\n\n// OIDC Claims and Scopes\n// https://openid.net/specs/openid-connect-core-1_0.html#Claims\n// https://developer.okta.com/blog/2017/07/25/oidc-primer-part-1#:~:text=Simply%20put%2C%20claims%20are%20name,information%20asserted%20about%20an%20Entity.%E2%80%9D\n\n// OIDC Standard Claims\n// https://openid.net/specs/openid-connect-core-1_0.html#Claims\n// https://developer.okta.com/blog/2017/07/25/oidc-primer-part-1#:~:text=Simply%20put%2C%20claims%20are%20name,information%20asserted%20about%20an%20Entity.%E2%80%9D\nexport enum OIDCStandardClaim {\n SUB = \"sub\",\n NAME = \"name\",\n GIVEN_NAME = \"given_name\",\n FAMILY_NAME = \"family_name\",\n MIDDLE_NAME = \"middle_name\",\n NICKNAME = \"nickname\",\n PREFERRED_USERNAME = \"preferred_username\",\n PROFILE = \"profile\",\n PICTURE = \"picture\",\n WEBSITE = \"website\",\n EMAIL = \"email\",\n EMAIL_VERIFIED = \"email_verified\",\n GENDER = \"gender\",\n BIRTHDATE = \"birthdate\",\n ZONEINFO = \"zoneinfo\",\n LOCALE = \"locale\",\n PHONE_NUMBER = \"phone_number\",\n PHONE_NUMBER_VERIFIED = \"phone_number_verified\",\n ADDRESS = \"address\",\n CLIENT_SECRET = \"client_secret\",\n NONCE = \"nonce\", // STS Extension\n}\n\nexport enum OIDCAddressClaim {\n FORMATTED = \"formatted\",\n STREET_ADDRESS = \"street_address\",\n LOCALITY = \"locality\",\n REGION = \"region\",\n COUNTRY = \"country\",\n}\n\nexport class OAuth2ParameterErrorType {\n static readonly NOT_EQUAL: errorCode = {\n code: \"STS_OAUTH2_ERR_0001\",\n description: \"Parameter values not equal.\",\n };\n static readonly NOT_PRESENT: errorCode = {\n code: \"STS_OAUTH2_ERR_0002\",\n description: \"Parameter not provided.\",\n };\n static readonly INVALID_FORMAT: errorCode = {\n code: \"STS_OAUTH2_ERR_0003\",\n description: \"Parameter value format invalid.\",\n };\n static readonly EXPIRED: errorCode = {\n code: \"STS_OAUTH2_ERR_0004\",\n description: \"Parameter value expired.\",\n };\n}\n\nexport function compareParameterTypes(\n source1: string[],\n source2: string[],\n authParameterTypes: OAuth2ParameterType[]\n): errorPayload[] {\n const errors: errorPayload[] = [];\n for (let i = 0; i < authParameterTypes.length; i++) {\n const authParameterType = authParameterTypes[i];\n if (source1[i].localeCompare(source2[i]) !== 0) {\n const error: errorPayload = {\n error: OAuth2ParameterErrorType.NOT_EQUAL.code,\n error_description:\n OAuth2ParameterErrorType.NOT_EQUAL.description,\n timestamp: Date.now(),\n details: `${OAuth2ParameterErrorType.NOT_EQUAL.description}: Parameter: [${authParameterType}]`,\n };\n errors.push(error);\n }\n }\n return errors;\n}\n","/* eslint @typescript-eslint/no-explicit-any: 0 */ // --> OFF\n\n// di.ts\n\n/* For nodejs startup;\n\nimport {\n SetInjectionContextStore,\n} from \"@nsshunt/stsutils\";\n\nimport {\n NodeInjectionContextStore,\n} from \"@nsshunt/stsutils/node\";\n\nSetInjectionContextStore(\n new NodeInjectionContextStore()\n);\n\nFor browser - the default mode (SyncInjectionContextStore) is fine - nothing special to do\n\n*/\n\n// ============================================================\n// Constructor\n// ============================================================\n\nexport interface InjectionContextStore {\n run<T>(injector: Injector, fn: () => T): T;\n get(): Injector | undefined;\n}\n\nexport class SyncInjectionContextStore implements InjectionContextStore {\n private current?: Injector;\n\n run<T>(injector: Injector, fn: () => T): T {\n const previous = this.current;\n\n this.current = injector;\n\n try {\n return fn();\n } finally {\n this.current = previous;\n }\n }\n\n get(): Injector | undefined {\n return this.current;\n }\n}\n\nexport type Constructor<T = any> = (new (...args: any[]) => T) & {\n readonly name: string;\n};\n\n// ============================================================\n// Injection token\n// ============================================================\n\nexport class InjectionToken<T> {\n // This field makes T part of the structural type of InjectionToken<T>.\n //\n // It is never used at runtime.\n readonly #type!: T;\n\n constructor(public readonly description: string) {}\n\n toString(): string {\n return `InjectionToken(${this.description})`;\n }\n}\n\n// ============================================================\n// Token\n// ============================================================\n\nexport type Token<T> = Constructor<T> | InjectionToken<T>;\n\n// ============================================================\n// Providers\n// ============================================================\n\nexport type ClassProvider<T> = {\n provide: Token<T>;\n useClass: Constructor<T>;\n};\n\nexport type ValueProvider<T> = {\n provide: Token<T>;\n useValue: T;\n};\n\nexport type FactoryProvider<T> = {\n provide: Token<T>;\n useFactory: () => T;\n};\n\nexport type Provider<T = any> =\n | Constructor<T>\n | ClassProvider<T>\n | ValueProvider<T>\n | FactoryProvider<T>;\n\n// ============================================================\n// Current injection context\n// ============================================================\n\nlet contextStore: InjectionContextStore = new SyncInjectionContextStore();\n\nexport const SetInjectionContextStore = (\n store: InjectionContextStore\n): void => {\n contextStore = store;\n};\n\n// ============================================================\n// inject()\n// ============================================================\n\nexport const inject = <T>(token: Token<T>): T => {\n const injector = contextStore.get();\n\n if (!injector) {\n throw new Error(\"inject() called outside an injection context\");\n }\n\n return injector.get(token);\n};\n\nexport function getCurrentInjector(): Injector {\n const injector = contextStore.get();\n\n if (!injector) {\n throw new Error(\n \"getCurrentInjector() called outside an injection context\"\n );\n }\n\n return injector;\n}\n\n// ============================================================\n// Injector\n// ============================================================\n\nexport class Injector {\n private readonly providers = new Map<\n Token<any>,\n ClassProvider<any> | ValueProvider<any> | FactoryProvider<any>\n >();\n\n private readonly instances = new Map<Token<any>, any>();\n\n constructor(\n providers: Provider[] = [],\n private readonly parent?: Injector\n ) {\n for (const provider of providers) {\n this.register(provider);\n }\n }\n\n // --------------------------------------------------------\n // Create child injector\n // --------------------------------------------------------\n\n createChild(providers: Provider[] = []): Injector {\n return new Injector(providers, this);\n }\n\n // --------------------------------------------------------\n // Register provider\n // --------------------------------------------------------\n\n register(provider: Provider): void {\n // Nest/Angular-like shorthand:\n //\n // new Injector([\n // Logger,\n // UserService\n // ]);\n //\n // is equivalent to:\n //\n // new Injector([\n // {\n // provide: Logger,\n // useClass: Logger\n // },\n // {\n // provide: UserService,\n // useClass: UserService\n // }\n // ]);\n\n if (typeof provider === \"function\") {\n this.providers.set(provider, {\n provide: provider,\n useClass: provider,\n });\n\n return;\n }\n\n this.providers.set(provider.provide, provider);\n }\n\n // --------------------------------------------------------\n // Resolve token\n // --------------------------------------------------------\n\n get<T>(token: Token<T>): T {\n // Check whether THIS injector owns the provider.\n\n const provider = this.providers.get(token);\n\n if (provider) {\n // Providers are singletons within the injector\n // that owns them.\n\n if (this.instances.has(token)) {\n return this.instances.get(token) as T;\n }\n\n const instance = this.createProvider<T>(provider);\n\n this.instances.set(token, instance);\n\n return instance;\n }\n\n // Provider does not exist here.\n //\n // Search parent injector.\n\n if (this.parent) {\n return this.parent.get(token);\n }\n\n throw new Error(`No provider for ${this.tokenToString(token)}`);\n }\n\n // --------------------------------------------------------\n // Create provider\n // --------------------------------------------------------\n\n private createProvider<T>(\n provider: ClassProvider<any> | ValueProvider<any> | FactoryProvider<any>\n ): T {\n if (\"useValue\" in provider) {\n return provider.useValue as T;\n }\n\n if (\"useFactory\" in provider) {\n return this.runInContext(provider.useFactory) as T;\n }\n\n return this.construct(provider.useClass) as T;\n }\n\n // --------------------------------------------------------\n // Construct class\n // --------------------------------------------------------\n\n private construct<T>(type: Constructor<T>): T {\n return this.runInContext(() => new type());\n }\n\n // --------------------------------------------------------\n // Establish injection context\n // --------------------------------------------------------\n\n runInContext<T>(fn: () => T): T {\n return contextStore.run(this, fn);\n }\n\n // --------------------------------------------------------\n // Token name for diagnostics\n // --------------------------------------------------------\n\n private tokenToString(token: Token<any>): string {\n if (token instanceof InjectionToken) {\n return token.toString();\n }\n\n return token.name;\n }\n\n // --------------------------------------------------------\n // Bootstrap\n // --------------------------------------------------------\n\n bootstrap<T>(token: Constructor<T>): T {\n return this.runInContext(() => this.get(token));\n }\n}\n","export * from \"./commonTypes.js\";\nexport * from \"./dataAccessTypes.js\";\nexport * from \"./sleep.js\";\nexport * from \"./stsAxiosConfig.js\";\nexport * from \"./agentManager.js\";\nexport * from \"./errorhandling.js\";\nexport * from \"./oauth2terms.js\";\nexport * from \"./di.js\";\n\nexport const isNode =\n typeof process !== \"undefined\" &&\n typeof process.release !== \"undefined\" &&\n process.release.name === \"node\";\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","names":[],"sources":["../src/commonTypes.ts","../src/dataAccessTypes.ts","../src/sleep.ts","../src/stsAxiosConfig.ts","../src/agentManager.ts","../src/errorhandling.ts","../src/oauth2terms.ts","../src/di.ts","../src/index.ts"],"sourcesContent":["/* eslint @typescript-eslint/no-explicit-any: 0 */ // --> OFF\n/* eslint @typescript-eslint/no-unused-vars: 0 */ // --> OFF\nimport chalk from \"chalk\";\n\nexport interface JSONObject {\n [x: string]: any | JSONObject | undefined;\n}\n\nexport enum ModelDelimeter {\n ROOT = \"_\",\n SEPERATOR = \"|\",\n COMPONENT_SEPERATOR = \"@\",\n NID_SEPERATOR = \"^\", // This seperator splits the static and dynamic part of a context string (nid). Used for creating payload header for size optimisation.\n}\n\nexport const CheckValidChar = (checkParams: string[][]): void => {\n const invalidChars = [\n ModelDelimeter.ROOT,\n ModelDelimeter.SEPERATOR,\n ModelDelimeter.COMPONENT_SEPERATOR,\n ModelDelimeter.NID_SEPERATOR,\n ];\n\n checkParams.forEach((param) => {\n invalidChars.forEach((char) => {\n if (param[1].includes(char)) {\n throw new Error(\n `Invalid character inside [${param[0]}:${param[1]}], no [${char}] allowed`\n );\n }\n });\n });\n};\n\n// npm logging levels are prioritized from 0 to 6 (highest to lowest). This from Winston logger.\nexport interface ISTSLogger {\n error(message: any): void;\n warn(message: any): void;\n info(message: any): void;\n http(message: any): void;\n verbose(message: any): void;\n debug(message: any): void;\n silly(message: any): void;\n}\n\nexport const defaultLogger: ISTSLogger = {\n debug(message) {\n console.debug(chalk.grey(`debug: ${message}`));\n },\n error(message) {\n console.error(chalk.red(`error: ${message}`));\n },\n http(message) {\n console.log(chalk.cyan(`http: ${message}`));\n },\n info(message) {\n console.info(chalk.white(`info: ${message}`));\n },\n silly(message) {\n console.log(chalk.yellow(`silly: ${message}`));\n },\n verbose(message) {\n console.log(chalk.green(`verbose: ${message}`));\n },\n warn(message) {\n console.warn(chalk.magenta(`warn: ${message}`));\n },\n};\n\nexport const emptyLogger: ISTSLogger = {\n debug(message) {},\n error(message) {},\n http(message) {},\n info(message) {},\n silly(message) {},\n verbose(message) {},\n warn(message) {},\n};\n","import { StatusCodes } from \"http-status-codes\";\n\nimport { JSONObject } from \"./commonTypes.js\";\n\n//@@ These should be moved into the stsrest01client\nexport enum edbaction {\n created = 1,\n updated = 2,\n deleted = 3,\n}\n\nexport interface IDBResource<T> {\n oid: string;\n resname: string;\n resdesc: T;\n vnum: string;\n validfrom: string;\n validto: string | null;\n dbaction: edbaction;\n dbactionuser: string;\n}\n\nexport interface IDBEntity<T> {\n oid: string;\n resourceoid: string;\n entname: string;\n entvalue: T;\n vnum: string;\n validfrom: string;\n validto: string | null;\n dbaction: edbaction;\n dbactionuser: string;\n}\n\nexport interface IDBFilters {\n resname?: string;\n entname?: string;\n resvnum?: string;\n entvnum?: string;\n filter?: string;\n incdel?: string;\n startdate?: string;\n enddate?: string;\n resenddate?: string;\n dbaction?: string;\n dbactionuser?: string;\n limit?: string;\n}\n\nexport interface IAccessLayerErrorDetail {\n status: StatusCodes;\n error: Error;\n errorMessage: string;\n operation: string;\n}\n\nexport interface IDBOptions {\n filters?: IDBFilters;\n useCache?: boolean;\n useMultipleDatabases?: boolean;\n limit?: number;\n errorOnBatchUpdate?: boolean;\n}\n\nexport interface IDBReturnData<T> {\n status: StatusCodes;\n operation: string;\n detail:\n | IDBReturnData<T>[]\n | IDBResource<T>[]\n | IDBResource<T>\n | IDBEntity<T>[]\n | IDBEntity<T>\n | T\n | null;\n options: IDBOptions;\n error?: IAccessLayerErrorDetail;\n}\n\nexport interface IDBSearchOptions {\n queryFunctionName: string;\n searchParameters: JSONObject;\n returnsResourceList: boolean;\n}\n","export async function Sleep(milliseconds = 1000): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, milliseconds));\n}\n","import { JSONObject } from \"./commonTypes.js\";\nimport { IAgentManager } from \"./agentManager.js\";\n\nexport class STSAxiosConfig {\n #url: string;\n #method: string;\n #headers?: JSONObject;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #data?: any;\n #agentManager?: IAgentManager;\n #timeout?: number;\n #withCredentials?: boolean;\n\n constructor(\n url: string,\n method: string,\n headers?: JSONObject,\n timeout?: number\n ) {\n this.#url = url;\n this.#method = method;\n if (headers !== undefined) {\n this.#headers = headers;\n }\n if (timeout !== undefined) {\n this.#timeout = timeout;\n }\n }\n\n /**\n *\n * @param cookies this.#headers['Cookie'] = cookies.join('; ')\n * @returns\n */\n withCookies(cookies: string[]) {\n if (!this.#headers) {\n this.#headers = {};\n }\n this.#headers[\"Cookie\"] = cookies.join(\"; \");\n return this;\n }\n\n /**\n *\n * @param data Add data to the body\n * @returns\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n withData(data: any) {\n this.#data = data;\n return this;\n }\n\n // 'Content-Type': 'application/json'\n\n /**\n *\n * @param accesssToken\n * @param stsUserId\n * @returns this.#headers['Authorization'] = 'Bearer ' + accesssToken; and this.#headers['x-sts_user_id'] = stsUserId;\n */\n withAuthHeaders(accesssToken: string, stsUserId?: string) {\n if (!this.#headers) {\n this.#headers = {};\n }\n this.#headers[\"Authorization\"] = \"Bearer \" + accesssToken;\n if (stsUserId) {\n this.#headers[\"x-sts_user_id\"] = stsUserId;\n }\n return this;\n }\n\n /**\n *\n * @param headers Add headers to the existing header\n * @returns\n */\n withHeaders(headers: JSONObject) {\n this.#headers = {\n ...(this.#headers ?? {}),\n ...headers,\n };\n return this;\n }\n\n /**\n *\n * @returns this.#headers['Content-Type'] = 'application/fhir+json';\n */\n withApplicationFhirAndJsonContentTypeHeaders() {\n if (!this.#headers) {\n this.#headers = {};\n }\n this.#headers[\"Content-Type\"] = \"application/fhir+json\";\n return this;\n }\n\n /**\n *\n * @returns this.#headers['Content-Type'] = 'application/merge-patch+json';\n */\n withApplicationMergePatchAndJsonContentTypeHeaders() {\n if (!this.#headers) {\n this.#headers = {};\n }\n this.#headers[\"Content-Type\"] = \"application/merge-patch+json\";\n return this;\n }\n\n /**\n *\n * @returns this.#headers['Content-Type'] = 'application/json-patch+json';\n */\n withApplicationJsonPatchAndJsonContentTypeHeaders() {\n if (!this.#headers) {\n this.#headers = {};\n }\n this.#headers[\"Content-Type\"] = \"application/json-patch+json\";\n return this;\n }\n\n /**\n *\n * @returns this.#headers['Content-Type'] = 'application/json';\n */\n withApplicationJsonContentTypeHeaders() {\n if (!this.#headers) {\n this.#headers = {};\n }\n this.#headers[\"Content-Type\"] = \"application/json\";\n return this;\n }\n\n /**\n *\n * @returns this.#headers['Content-Type'] = 'application/json';\n */\n withDefaultHeaders() {\n if (!this.#headers) {\n this.#headers = {};\n }\n this.#headers[\"Content-Type\"] = \"application/json\";\n return this;\n }\n\n /**\n *\n * @returns\n */\n withCredentials() {\n this.#withCredentials = true;\n return this;\n }\n\n /**\n *\n * @param timeout Add a connection timeout\n * @returns\n */\n withTimeout(timeout: number) {\n this.#timeout = timeout;\n return this;\n }\n\n /**\n *\n * @param agentManager Add the agent manager for each rest call. Only for nodejs not browser.\n * @returns\n */\n withAgentManager(agentManager: IAgentManager) {\n this.#agentManager = agentManager;\n return this;\n }\n\n /**\n * @returns Returns axios config object\n */\n get config(): JSONObject {\n const retVal: JSONObject = {\n url: this.#url,\n method: this.#method,\n };\n if (this.#headers) {\n retVal.headers = this.#headers;\n }\n if (this.#agentManager !== undefined) {\n if (this.#agentManager.IsHttps(this.#url)) {\n retVal.httpsAgent = this.#agentManager.GetAgent(this.#url);\n } else {\n retVal.httpAgent = this.#agentManager.GetAgent(this.#url);\n }\n }\n if (this.#data !== undefined) {\n retVal.data = this.#data;\n }\n if (this.#timeout !== undefined) {\n retVal.timeout = this.#timeout;\n }\n if (\n this.#withCredentials !== undefined &&\n this.#withCredentials === true\n ) {\n retVal.withCredentials = true;\n }\n return retVal;\n }\n}\n","export interface IAgentOptions {\n keepAlive: boolean;\n maxSockets: number;\n maxTotalSockets: number;\n maxFreeSockets: number;\n timeout: number;\n rejectUnauthorized?: boolean;\n}\n\nexport interface IAgentManagerOptions {\n httpAgentFactory: (options: IAgentOptions) => unknown;\n httpsAgentFactory: (options: IAgentOptions) => unknown;\n agentOptions?: IAgentOptions;\n agentResetInterval?: number;\n agentResetCount?: number;\n}\n\nexport interface IAgentManager {\n get agentResetInterval(): number | undefined;\n get agentResetCount(): number | undefined;\n UpdateAgentResetInterval(val: number): void;\n UpdateAgentResetCount(val: number): void;\n IncRequestCount(): void;\n IsHttps(protocol: string): boolean;\n GetAgent(protocol: string): unknown;\n ResetAgent(): void;\n Terminate(): void;\n}\n\nexport function createAgentManager(\n agentManagerOptions: IAgentManagerOptions\n): IAgentManager {\n return new AgentManager(agentManagerOptions);\n}\n\nclass AgentManager implements IAgentManager {\n #options: IAgentManagerOptions;\n #agentResetInterval: NodeJS.Timeout | null = null;\n #requestCount: number = 0;\n #httpAgent: unknown = undefined;\n #httpsAgent: unknown = undefined;\n\n constructor(agentManagerOptions: IAgentManagerOptions) {\n this.#options = agentManagerOptions;\n if (this.#options.agentResetInterval) {\n this.#SetupResetInterval();\n }\n }\n\n get agentResetInterval(): number | undefined {\n return this.#options.agentResetInterval;\n }\n\n UpdateAgentResetInterval(val: number): void {\n if (this.#agentResetInterval) {\n clearTimeout(this.#agentResetInterval);\n }\n this.#options.agentResetInterval = val;\n this.#SetupResetInterval();\n }\n\n get agentResetCount(): number | undefined {\n return this.#options.agentResetCount;\n }\n\n UpdateAgentResetCount(val: number): void {\n this.#options.agentResetCount = val;\n }\n\n #SetupResetInterval = () => {\n if (\n this.#options.agentResetInterval &&\n this.#options.agentResetInterval > 0\n ) {\n this.#agentResetInterval = setTimeout(() => {\n this.ResetAgent();\n this.#SetupResetInterval();\n }, this.#options.agentResetInterval).unref();\n }\n };\n\n IncRequestCount(): void {\n this.#requestCount++;\n if (this.#options.agentResetCount) {\n if (this.#requestCount % this.#options.agentResetCount === 0) {\n this.ResetAgent();\n }\n }\n }\n\n IsHttps(protocol: string): boolean {\n if (protocol.toLowerCase().startsWith(\"https:\")) {\n return true;\n }\n return false;\n }\n\n #GetAgentOptions = (https: boolean): IAgentOptions => {\n let options: IAgentOptions;\n if (this.#options.agentOptions) {\n options = {\n keepAlive: this.#options.agentOptions.keepAlive,\n maxSockets: this.#options.agentOptions.maxSockets,\n maxTotalSockets: this.#options.agentOptions.maxTotalSockets,\n maxFreeSockets: this.#options.agentOptions.maxFreeSockets,\n timeout: this.#options.agentOptions.timeout,\n };\n if (https === true) {\n options.rejectUnauthorized =\n this.#options.agentOptions.rejectUnauthorized; // Allows self signed certs in non production mode(s)\n }\n } else {\n // Defaults\n options = {\n keepAlive: true,\n maxSockets: 10,\n maxTotalSockets: 20,\n maxFreeSockets: 256,\n timeout: 30000,\n rejectUnauthorized: false,\n };\n }\n return options;\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n GetAgent(protocol: string): any {\n if (protocol.toLowerCase().startsWith(\"https:\")) {\n if (!this.#httpsAgent) {\n //this.#httpsAgent = new https.Agent(this.#GetAgentOptions(true));\n this.#httpsAgent = this.#options.httpsAgentFactory(\n this.#GetAgentOptions(true)\n );\n }\n return this.#httpsAgent;\n } else if (protocol.toLowerCase().startsWith(\"http:\")) {\n if (!this.#httpAgent) {\n //this.#httpAgent = new http.Agent(this.#GetAgentOptions(false));\n this.#httpAgent = this.#options.httpAgentFactory(\n this.#GetAgentOptions(false)\n );\n }\n return this.#httpAgent;\n } else {\n return null;\n }\n }\n\n ResetAgent(): void {\n this.#httpAgent = null;\n this.#httpsAgent = null;\n }\n\n Terminate(): void {\n if (this.#agentResetInterval) {\n clearTimeout(this.#agentResetInterval);\n this.#agentResetInterval = null;\n }\n\n if (this.#httpAgent) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (this.#httpAgent as any).destroy();\n this.#httpAgent = null;\n }\n\n if (this.#httpsAgent) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (this.#httpsAgent as any).destroy();\n this.#httpsAgent = null;\n }\n }\n}\n","export type errorCode = {\n code: string;\n description: string;\n};\n\nexport type errorPayload = {\n error: string;\n error_description: string;\n timestamp: number;\n //trace_id: \"255d1aef-8c98-452f-ac51-23d051240864\", //@@\n //correlation_id: \"fb3d2015-bc17-4bb9-bb85-30c5cf1aaaa7\", //@@\n details?: unknown;\n};\n\nexport function GetErrorPayload(\n errorCode: errorCode,\n details: unknown = null\n): errorPayload {\n return {\n error: errorCode.code,\n error_description: errorCode.description,\n timestamp: Date.now(),\n //trace_id: \"255d1aef-8c98-452f-ac51-23d051240864\", //@@\n //correlation_id: \"fb3d2015-bc17-4bb9-bb85-30c5cf1aaaa7\", //@@\n details: details,\n };\n}\n","import { errorCode, errorPayload } from \"./errorhandling.js\";\n\n// Ref: https://datatracker.ietf.org/doc/html/rfc6749#appendix-A\nexport enum OAuth2ParameterType {\n AUDIENCE = \"AUDIENCE\", // STS Extension\n CLIENT_ID = \"client_id\",\n CLIENT_SECRET = \"client_secret\",\n RESPONSE_TYPE = \"response_type\",\n SCOPE = \"scope\",\n STATE = \"state\",\n REDIRECT_URI = \"redirect_uri\",\n ERROR = \"error\",\n ERROR_DESCRIPTION = \"error_description\",\n ERROR_CODES = \"error_codes\", // STS Extension\n ERROR_URI = \"error_uri\",\n GRANT_TYPE = \"grant_type\",\n CODE = \"code\",\n ACCESS_TOKEN = \"access_token\",\n TOKEN_TYPE = \"token_type\",\n EXPIRES_IN = \"expires_in\",\n USERNAME = \"username\",\n PASSWORD = \"password\",\n REFRESH_TOKEN = \"refresh_token\",\n RESPONSE_MODE = \"response_mode\", // STS Extension\n TIMESTAMP = \"timestamp\", // STS Extension\n TRACE_ID = \"trace_id\", // STS Extension\n CORRELATION_ID = \"correlation_id\", // STS Extension\n}\n\n// Auth0 claim usage;\n// aud - api identifier\n// scope - list (space separated) of api permissions\n\n// Claims (Auth0)\n// https://auth0.com/docs/secure/tokens/json-web-tokens/json-web-token-claims\n\n// Reserved claims (IANA)\n// https://www.iana.org/assignments/jwt/jwt.xhtml#claims\n\n// Example scopes and claims (Auth0)\n// https://auth0.com/docs/get-started/apis/scopes/sample-use-cases-scopes-and-claims\n\n// OIDC Claims and Scopes\n// https://openid.net/specs/openid-connect-core-1_0.html#Claims\n// https://developer.okta.com/blog/2017/07/25/oidc-primer-part-1#:~:text=Simply%20put%2C%20claims%20are%20name,information%20asserted%20about%20an%20Entity.%E2%80%9D\n\n// OIDC Standard Claims\n// https://openid.net/specs/openid-connect-core-1_0.html#Claims\n// https://developer.okta.com/blog/2017/07/25/oidc-primer-part-1#:~:text=Simply%20put%2C%20claims%20are%20name,information%20asserted%20about%20an%20Entity.%E2%80%9D\nexport enum OIDCStandardClaim {\n SUB = \"sub\",\n NAME = \"name\",\n GIVEN_NAME = \"given_name\",\n FAMILY_NAME = \"family_name\",\n MIDDLE_NAME = \"middle_name\",\n NICKNAME = \"nickname\",\n PREFERRED_USERNAME = \"preferred_username\",\n PROFILE = \"profile\",\n PICTURE = \"picture\",\n WEBSITE = \"website\",\n EMAIL = \"email\",\n EMAIL_VERIFIED = \"email_verified\",\n GENDER = \"gender\",\n BIRTHDATE = \"birthdate\",\n ZONEINFO = \"zoneinfo\",\n LOCALE = \"locale\",\n PHONE_NUMBER = \"phone_number\",\n PHONE_NUMBER_VERIFIED = \"phone_number_verified\",\n ADDRESS = \"address\",\n CLIENT_SECRET = \"client_secret\",\n NONCE = \"nonce\", // STS Extension\n}\n\nexport enum OIDCAddressClaim {\n FORMATTED = \"formatted\",\n STREET_ADDRESS = \"street_address\",\n LOCALITY = \"locality\",\n REGION = \"region\",\n COUNTRY = \"country\",\n}\n\nexport class OAuth2ParameterErrorType {\n static readonly NOT_EQUAL: errorCode = {\n code: \"STS_OAUTH2_ERR_0001\",\n description: \"Parameter values not equal.\",\n };\n static readonly NOT_PRESENT: errorCode = {\n code: \"STS_OAUTH2_ERR_0002\",\n description: \"Parameter not provided.\",\n };\n static readonly INVALID_FORMAT: errorCode = {\n code: \"STS_OAUTH2_ERR_0003\",\n description: \"Parameter value format invalid.\",\n };\n static readonly EXPIRED: errorCode = {\n code: \"STS_OAUTH2_ERR_0004\",\n description: \"Parameter value expired.\",\n };\n}\n\nexport function compareParameterTypes(\n source1: string[],\n source2: string[],\n authParameterTypes: OAuth2ParameterType[]\n): errorPayload[] {\n const errors: errorPayload[] = [];\n for (let i = 0; i < authParameterTypes.length; i++) {\n const authParameterType = authParameterTypes[i];\n if (source1[i].localeCompare(source2[i]) !== 0) {\n const error: errorPayload = {\n error: OAuth2ParameterErrorType.NOT_EQUAL.code,\n error_description:\n OAuth2ParameterErrorType.NOT_EQUAL.description,\n timestamp: Date.now(),\n details: `${OAuth2ParameterErrorType.NOT_EQUAL.description}: Parameter: [${authParameterType}]`,\n };\n errors.push(error);\n }\n }\n return errors;\n}\n","/* eslint @typescript-eslint/no-explicit-any: 0 */ // --> OFF\n\n// di.ts\n\n/* For nodejs startup;\n\nimport {\n SetInjectionContextStore,\n} from \"@nsshunt/stsutils\";\n\nimport {\n NodeInjectionContextStore,\n} from \"@nsshunt/stsutils/node\";\n\nSetInjectionContextStore(\n new NodeInjectionContextStore()\n);\n\nFor browser - the default mode (SyncInjectionContextStore) is fine - nothing special to do\n\n*/\n\n// ============================================================\n// Constructor\n// ============================================================\n\nexport interface InjectionContextStore {\n run<T>(injector: Injector, fn: () => T): T;\n get(): Injector | undefined;\n}\n\nexport class SyncInjectionContextStore implements InjectionContextStore {\n private current?: Injector;\n\n run<T>(injector: Injector, fn: () => T): T {\n const previous = this.current;\n\n this.current = injector;\n\n try {\n return fn();\n } finally {\n this.current = previous;\n }\n }\n\n get(): Injector | undefined {\n return this.current;\n }\n}\n\nexport type Constructor<T = any> = (new (...args: any[]) => T) & {\n readonly name: string;\n};\n\n// ============================================================\n// Injection token\n// ============================================================\n\nexport class InjectionToken<T> {\n // This field makes T part of the structural type of InjectionToken<T>.\n //\n // It is never used at runtime.\n readonly #type!: T;\n\n constructor(public readonly description: string) {}\n\n toString(): string {\n return `InjectionToken(${this.description})`;\n }\n}\n\n// ============================================================\n// Token\n// ============================================================\n\nexport type Token<T> = Constructor<T> | InjectionToken<T>;\n\n// ============================================================\n// Providers\n// ============================================================\n\nexport type ClassProvider<T> = {\n provide: Token<T>;\n useClass: Constructor<T>;\n};\n\nexport type ValueProvider<T> = {\n provide: Token<T>;\n useValue: T;\n};\n\nexport type FactoryProvider<T> = {\n provide: Token<T>;\n useFactory: () => T;\n};\n\nexport type Provider<T = any> =\n | Constructor<T>\n | ClassProvider<T>\n | ValueProvider<T>\n | FactoryProvider<T>;\n\n// ============================================================\n// Current injection context\n// ============================================================\n\nlet contextStore: InjectionContextStore = new SyncInjectionContextStore();\n\nexport const SetInjectionContextStore = (\n store: InjectionContextStore\n): void => {\n contextStore = store;\n};\n\n// ============================================================\n// inject()\n// ============================================================\n\nexport const inject = <T>(token: Token<T>): T => {\n const injector = contextStore.get();\n\n if (!injector) {\n throw new Error(\"inject() called outside an injection context\");\n }\n\n return injector.get(token);\n};\n\nexport function getCurrentInjector(): Injector {\n const injector = contextStore.get();\n\n if (!injector) {\n throw new Error(\n \"getCurrentInjector() called outside an injection context\"\n );\n }\n\n return injector;\n}\n\n// ============================================================\n// Injector\n// ============================================================\n\nexport class Injector {\n private readonly providers = new Map<\n Token<any>,\n ClassProvider<any> | ValueProvider<any> | FactoryProvider<any>\n >();\n\n private readonly instances = new Map<Token<any>, any>();\n\n constructor(\n providers: Provider[] = [],\n private readonly parent?: Injector\n ) {\n for (const provider of providers) {\n this.register(provider);\n }\n }\n\n // --------------------------------------------------------\n // Create child injector\n // --------------------------------------------------------\n\n createChild(providers: Provider[] = []): Injector {\n return new Injector(providers, this);\n }\n\n // --------------------------------------------------------\n // Register provider\n // --------------------------------------------------------\n\n register(provider: Provider): void {\n // Nest/Angular-like shorthand:\n //\n // new Injector([\n // Logger,\n // UserService\n // ]);\n //\n // is equivalent to:\n //\n // new Injector([\n // {\n // provide: Logger,\n // useClass: Logger\n // },\n // {\n // provide: UserService,\n // useClass: UserService\n // }\n // ]);\n\n if (typeof provider === \"function\") {\n this.providers.set(provider, {\n provide: provider,\n useClass: provider,\n });\n\n return;\n }\n\n this.providers.set(provider.provide, provider);\n }\n\n // --------------------------------------------------------\n // Resolve token\n // --------------------------------------------------------\n\n get<T>(token: Token<T>): T {\n // Check whether THIS injector owns the provider.\n\n const provider = this.providers.get(token);\n\n if (provider) {\n // Providers are singletons within the injector\n // that owns them.\n\n if (this.instances.has(token)) {\n return this.instances.get(token) as T;\n }\n\n const instance = this.createProvider<T>(provider);\n\n this.instances.set(token, instance);\n\n return instance;\n }\n\n // Provider does not exist here.\n //\n // Search parent injector.\n\n if (this.parent) {\n return this.parent.get(token);\n }\n\n throw new Error(`No provider for ${this.tokenToString(token)}`);\n }\n\n // --------------------------------------------------------\n // Create provider\n // --------------------------------------------------------\n\n private createProvider<T>(\n provider: ClassProvider<any> | ValueProvider<any> | FactoryProvider<any>\n ): T {\n if (\"useValue\" in provider) {\n return provider.useValue as T;\n }\n\n if (\"useFactory\" in provider) {\n return this.runInContext(provider.useFactory) as T;\n }\n\n return this.construct(provider.useClass) as T;\n }\n\n // --------------------------------------------------------\n // Construct class\n // --------------------------------------------------------\n\n private construct<T>(type: Constructor<T>): T {\n return this.runInContext(() => new type());\n }\n\n // --------------------------------------------------------\n // Establish injection context\n // --------------------------------------------------------\n\n runInContext<T>(fn: () => T): T {\n return contextStore.run(this, fn);\n }\n\n // --------------------------------------------------------\n // Token name for diagnostics\n // --------------------------------------------------------\n\n private tokenToString(token: Token<any>): string {\n if (token instanceof InjectionToken) {\n return token.toString();\n }\n\n return token.name;\n }\n\n // --------------------------------------------------------\n // Bootstrap\n // --------------------------------------------------------\n\n bootstrap<T>(token: Constructor<T>): T {\n return this.runInContext(() => this.get(token));\n }\n}\n","export * from \"./commonTypes.js\";\nexport * from \"./dataAccessTypes.js\";\nexport * from \"./sleep.js\";\nexport * from \"./stsAxiosConfig.js\";\nexport * from \"./agentManager.js\";\nexport * from \"./errorhandling.js\";\nexport * from \"./oauth2terms.js\";\nexport * from \"./di.js\";\nexport * from \"./pidColours.js\";\n\nexport const isNode =\n typeof process !== \"undefined\" &&\n typeof process.release !== \"undefined\" &&\n process.release.name === \"node\";\n"],"mappings":"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"}
|
package/dist/index.mjs
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { t as PidColours } from "./pidColours-Cf8--nrU.js";
|
|
1
2
|
import chalk from "chalk";
|
|
2
3
|
//#region src/commonTypes.ts
|
|
3
4
|
var ModelDelimeter = /* @__PURE__ */ function(ModelDelimeter) {
|
|
@@ -508,6 +509,6 @@ var Injector = class Injector {
|
|
|
508
509
|
//#region src/index.ts
|
|
509
510
|
var isNode = typeof process !== "undefined" && typeof process.release !== "undefined" && process.release.name === "node";
|
|
510
511
|
//#endregion
|
|
511
|
-
export { CheckValidChar, GetErrorPayload, InjectionToken, Injector, ModelDelimeter, OAuth2ParameterErrorType, OAuth2ParameterType, OIDCAddressClaim, OIDCStandardClaim, STSAxiosConfig, SetInjectionContextStore, Sleep, SyncInjectionContextStore, compareParameterTypes, createAgentManager, defaultLogger, edbaction, emptyLogger, getCurrentInjector, inject, isNode };
|
|
512
|
+
export { CheckValidChar, GetErrorPayload, InjectionToken, Injector, ModelDelimeter, OAuth2ParameterErrorType, OAuth2ParameterType, OIDCAddressClaim, OIDCStandardClaim, PidColours, STSAxiosConfig, SetInjectionContextStore, Sleep, SyncInjectionContextStore, compareParameterTypes, createAgentManager, defaultLogger, edbaction, emptyLogger, getCurrentInjector, inject, isNode };
|
|
512
513
|
|
|
513
514
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../src/commonTypes.ts","../src/dataAccessTypes.ts","../src/sleep.ts","../src/stsAxiosConfig.ts","../src/agentManager.ts","../src/errorhandling.ts","../src/oauth2terms.ts","../src/di.ts","../src/index.ts"],"sourcesContent":["/* eslint @typescript-eslint/no-explicit-any: 0 */ // --> OFF\n/* eslint @typescript-eslint/no-unused-vars: 0 */ // --> OFF\nimport chalk from \"chalk\";\n\nexport interface JSONObject {\n [x: string]: any | JSONObject | undefined;\n}\n\nexport enum ModelDelimeter {\n ROOT = \"_\",\n SEPERATOR = \"|\",\n COMPONENT_SEPERATOR = \"@\",\n NID_SEPERATOR = \"^\", // This seperator splits the static and dynamic part of a context string (nid). Used for creating payload header for size optimisation.\n}\n\nexport const CheckValidChar = (checkParams: string[][]): void => {\n const invalidChars = [\n ModelDelimeter.ROOT,\n ModelDelimeter.SEPERATOR,\n ModelDelimeter.COMPONENT_SEPERATOR,\n ModelDelimeter.NID_SEPERATOR,\n ];\n\n checkParams.forEach((param) => {\n invalidChars.forEach((char) => {\n if (param[1].includes(char)) {\n throw new Error(\n `Invalid character inside [${param[0]}:${param[1]}], no [${char}] allowed`\n );\n }\n });\n });\n};\n\n// npm logging levels are prioritized from 0 to 6 (highest to lowest). This from Winston logger.\nexport interface ISTSLogger {\n error(message: any): void;\n warn(message: any): void;\n info(message: any): void;\n http(message: any): void;\n verbose(message: any): void;\n debug(message: any): void;\n silly(message: any): void;\n}\n\nexport const defaultLogger: ISTSLogger = {\n debug(message) {\n console.debug(chalk.grey(`debug: ${message}`));\n },\n error(message) {\n console.error(chalk.red(`error: ${message}`));\n },\n http(message) {\n console.log(chalk.cyan(`http: ${message}`));\n },\n info(message) {\n console.info(chalk.white(`info: ${message}`));\n },\n silly(message) {\n console.log(chalk.yellow(`silly: ${message}`));\n },\n verbose(message) {\n console.log(chalk.green(`verbose: ${message}`));\n },\n warn(message) {\n console.warn(chalk.magenta(`warn: ${message}`));\n },\n};\n\nexport const emptyLogger: ISTSLogger = {\n debug(message) {},\n error(message) {},\n http(message) {},\n info(message) {},\n silly(message) {},\n verbose(message) {},\n warn(message) {},\n};\n","import { StatusCodes } from \"http-status-codes\";\n\nimport { JSONObject } from \"./commonTypes.js\";\n\n//@@ These should be moved into the stsrest01client\nexport enum edbaction {\n created = 1,\n updated = 2,\n deleted = 3,\n}\n\nexport interface IDBResource<T> {\n oid: string;\n resname: string;\n resdesc: T;\n vnum: string;\n validfrom: string;\n validto: string | null;\n dbaction: edbaction;\n dbactionuser: string;\n}\n\nexport interface IDBEntity<T> {\n oid: string;\n resourceoid: string;\n entname: string;\n entvalue: T;\n vnum: string;\n validfrom: string;\n validto: string | null;\n dbaction: edbaction;\n dbactionuser: string;\n}\n\nexport interface IDBFilters {\n resname?: string;\n entname?: string;\n resvnum?: string;\n entvnum?: string;\n filter?: string;\n incdel?: string;\n startdate?: string;\n enddate?: string;\n resenddate?: string;\n dbaction?: string;\n dbactionuser?: string;\n limit?: string;\n}\n\nexport interface IAccessLayerErrorDetail {\n status: StatusCodes;\n error: Error;\n errorMessage: string;\n operation: string;\n}\n\nexport interface IDBOptions {\n filters?: IDBFilters;\n useCache?: boolean;\n useMultipleDatabases?: boolean;\n limit?: number;\n errorOnBatchUpdate?: boolean;\n}\n\nexport interface IDBReturnData<T> {\n status: StatusCodes;\n operation: string;\n detail:\n | IDBReturnData<T>[]\n | IDBResource<T>[]\n | IDBResource<T>\n | IDBEntity<T>[]\n | IDBEntity<T>\n | T\n | null;\n options: IDBOptions;\n error?: IAccessLayerErrorDetail;\n}\n\nexport interface IDBSearchOptions {\n queryFunctionName: string;\n searchParameters: JSONObject;\n returnsResourceList: boolean;\n}\n","export async function Sleep(milliseconds = 1000): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, milliseconds));\n}\n","import { JSONObject } from \"./commonTypes.js\";\nimport { IAgentManager } from \"./agentManager.js\";\n\nexport class STSAxiosConfig {\n #url: string;\n #method: string;\n #headers?: JSONObject;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #data?: any;\n #agentManager?: IAgentManager;\n #timeout?: number;\n #withCredentials?: boolean;\n\n constructor(\n url: string,\n method: string,\n headers?: JSONObject,\n timeout?: number\n ) {\n this.#url = url;\n this.#method = method;\n if (headers !== undefined) {\n this.#headers = headers;\n }\n if (timeout !== undefined) {\n this.#timeout = timeout;\n }\n }\n\n /**\n *\n * @param cookies this.#headers['Cookie'] = cookies.join('; ')\n * @returns\n */\n withCookies(cookies: string[]) {\n if (!this.#headers) {\n this.#headers = {};\n }\n this.#headers[\"Cookie\"] = cookies.join(\"; \");\n return this;\n }\n\n /**\n *\n * @param data Add data to the body\n * @returns\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n withData(data: any) {\n this.#data = data;\n return this;\n }\n\n // 'Content-Type': 'application/json'\n\n /**\n *\n * @param accesssToken\n * @param stsUserId\n * @returns this.#headers['Authorization'] = 'Bearer ' + accesssToken; and this.#headers['x-sts_user_id'] = stsUserId;\n */\n withAuthHeaders(accesssToken: string, stsUserId?: string) {\n if (!this.#headers) {\n this.#headers = {};\n }\n this.#headers[\"Authorization\"] = \"Bearer \" + accesssToken;\n if (stsUserId) {\n this.#headers[\"x-sts_user_id\"] = stsUserId;\n }\n return this;\n }\n\n /**\n *\n * @param headers Add headers to the existing header\n * @returns\n */\n withHeaders(headers: JSONObject) {\n this.#headers = {\n ...(this.#headers ?? {}),\n ...headers,\n };\n return this;\n }\n\n /**\n *\n * @returns this.#headers['Content-Type'] = 'application/fhir+json';\n */\n withApplicationFhirAndJsonContentTypeHeaders() {\n if (!this.#headers) {\n this.#headers = {};\n }\n this.#headers[\"Content-Type\"] = \"application/fhir+json\";\n return this;\n }\n\n /**\n *\n * @returns this.#headers['Content-Type'] = 'application/merge-patch+json';\n */\n withApplicationMergePatchAndJsonContentTypeHeaders() {\n if (!this.#headers) {\n this.#headers = {};\n }\n this.#headers[\"Content-Type\"] = \"application/merge-patch+json\";\n return this;\n }\n\n /**\n *\n * @returns this.#headers['Content-Type'] = 'application/json-patch+json';\n */\n withApplicationJsonPatchAndJsonContentTypeHeaders() {\n if (!this.#headers) {\n this.#headers = {};\n }\n this.#headers[\"Content-Type\"] = \"application/json-patch+json\";\n return this;\n }\n\n /**\n *\n * @returns this.#headers['Content-Type'] = 'application/json';\n */\n withApplicationJsonContentTypeHeaders() {\n if (!this.#headers) {\n this.#headers = {};\n }\n this.#headers[\"Content-Type\"] = \"application/json\";\n return this;\n }\n\n /**\n *\n * @returns this.#headers['Content-Type'] = 'application/json';\n */\n withDefaultHeaders() {\n if (!this.#headers) {\n this.#headers = {};\n }\n this.#headers[\"Content-Type\"] = \"application/json\";\n return this;\n }\n\n /**\n *\n * @returns\n */\n withCredentials() {\n this.#withCredentials = true;\n return this;\n }\n\n /**\n *\n * @param timeout Add a connection timeout\n * @returns\n */\n withTimeout(timeout: number) {\n this.#timeout = timeout;\n return this;\n }\n\n /**\n *\n * @param agentManager Add the agent manager for each rest call. Only for nodejs not browser.\n * @returns\n */\n withAgentManager(agentManager: IAgentManager) {\n this.#agentManager = agentManager;\n return this;\n }\n\n /**\n * @returns Returns axios config object\n */\n get config(): JSONObject {\n const retVal: JSONObject = {\n url: this.#url,\n method: this.#method,\n };\n if (this.#headers) {\n retVal.headers = this.#headers;\n }\n if (this.#agentManager !== undefined) {\n if (this.#agentManager.IsHttps(this.#url)) {\n retVal.httpsAgent = this.#agentManager.GetAgent(this.#url);\n } else {\n retVal.httpAgent = this.#agentManager.GetAgent(this.#url);\n }\n }\n if (this.#data !== undefined) {\n retVal.data = this.#data;\n }\n if (this.#timeout !== undefined) {\n retVal.timeout = this.#timeout;\n }\n if (\n this.#withCredentials !== undefined &&\n this.#withCredentials === true\n ) {\n retVal.withCredentials = true;\n }\n return retVal;\n }\n}\n","export interface IAgentOptions {\n keepAlive: boolean;\n maxSockets: number;\n maxTotalSockets: number;\n maxFreeSockets: number;\n timeout: number;\n rejectUnauthorized?: boolean;\n}\n\nexport interface IAgentManagerOptions {\n httpAgentFactory: (options: IAgentOptions) => unknown;\n httpsAgentFactory: (options: IAgentOptions) => unknown;\n agentOptions?: IAgentOptions;\n agentResetInterval?: number;\n agentResetCount?: number;\n}\n\nexport interface IAgentManager {\n get agentResetInterval(): number | undefined;\n get agentResetCount(): number | undefined;\n UpdateAgentResetInterval(val: number): void;\n UpdateAgentResetCount(val: number): void;\n IncRequestCount(): void;\n IsHttps(protocol: string): boolean;\n GetAgent(protocol: string): unknown;\n ResetAgent(): void;\n Terminate(): void;\n}\n\nexport function createAgentManager(\n agentManagerOptions: IAgentManagerOptions\n): IAgentManager {\n return new AgentManager(agentManagerOptions);\n}\n\nclass AgentManager implements IAgentManager {\n #options: IAgentManagerOptions;\n #agentResetInterval: NodeJS.Timeout | null = null;\n #requestCount: number = 0;\n #httpAgent: unknown = undefined;\n #httpsAgent: unknown = undefined;\n\n constructor(agentManagerOptions: IAgentManagerOptions) {\n this.#options = agentManagerOptions;\n if (this.#options.agentResetInterval) {\n this.#SetupResetInterval();\n }\n }\n\n get agentResetInterval(): number | undefined {\n return this.#options.agentResetInterval;\n }\n\n UpdateAgentResetInterval(val: number): void {\n if (this.#agentResetInterval) {\n clearTimeout(this.#agentResetInterval);\n }\n this.#options.agentResetInterval = val;\n this.#SetupResetInterval();\n }\n\n get agentResetCount(): number | undefined {\n return this.#options.agentResetCount;\n }\n\n UpdateAgentResetCount(val: number): void {\n this.#options.agentResetCount = val;\n }\n\n #SetupResetInterval = () => {\n if (\n this.#options.agentResetInterval &&\n this.#options.agentResetInterval > 0\n ) {\n this.#agentResetInterval = setTimeout(() => {\n this.ResetAgent();\n this.#SetupResetInterval();\n }, this.#options.agentResetInterval).unref();\n }\n };\n\n IncRequestCount(): void {\n this.#requestCount++;\n if (this.#options.agentResetCount) {\n if (this.#requestCount % this.#options.agentResetCount === 0) {\n this.ResetAgent();\n }\n }\n }\n\n IsHttps(protocol: string): boolean {\n if (protocol.toLowerCase().startsWith(\"https:\")) {\n return true;\n }\n return false;\n }\n\n #GetAgentOptions = (https: boolean): IAgentOptions => {\n let options: IAgentOptions;\n if (this.#options.agentOptions) {\n options = {\n keepAlive: this.#options.agentOptions.keepAlive,\n maxSockets: this.#options.agentOptions.maxSockets,\n maxTotalSockets: this.#options.agentOptions.maxTotalSockets,\n maxFreeSockets: this.#options.agentOptions.maxFreeSockets,\n timeout: this.#options.agentOptions.timeout,\n };\n if (https === true) {\n options.rejectUnauthorized =\n this.#options.agentOptions.rejectUnauthorized; // Allows self signed certs in non production mode(s)\n }\n } else {\n // Defaults\n options = {\n keepAlive: true,\n maxSockets: 10,\n maxTotalSockets: 20,\n maxFreeSockets: 256,\n timeout: 30000,\n rejectUnauthorized: false,\n };\n }\n return options;\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n GetAgent(protocol: string): any {\n if (protocol.toLowerCase().startsWith(\"https:\")) {\n if (!this.#httpsAgent) {\n //this.#httpsAgent = new https.Agent(this.#GetAgentOptions(true));\n this.#httpsAgent = this.#options.httpsAgentFactory(\n this.#GetAgentOptions(true)\n );\n }\n return this.#httpsAgent;\n } else if (protocol.toLowerCase().startsWith(\"http:\")) {\n if (!this.#httpAgent) {\n //this.#httpAgent = new http.Agent(this.#GetAgentOptions(false));\n this.#httpAgent = this.#options.httpAgentFactory(\n this.#GetAgentOptions(false)\n );\n }\n return this.#httpAgent;\n } else {\n return null;\n }\n }\n\n ResetAgent(): void {\n this.#httpAgent = null;\n this.#httpsAgent = null;\n }\n\n Terminate(): void {\n if (this.#agentResetInterval) {\n clearTimeout(this.#agentResetInterval);\n this.#agentResetInterval = null;\n }\n\n if (this.#httpAgent) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (this.#httpAgent as any).destroy();\n this.#httpAgent = null;\n }\n\n if (this.#httpsAgent) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (this.#httpsAgent as any).destroy();\n this.#httpsAgent = null;\n }\n }\n}\n","export type errorCode = {\n code: string;\n description: string;\n};\n\nexport type errorPayload = {\n error: string;\n error_description: string;\n timestamp: number;\n //trace_id: \"255d1aef-8c98-452f-ac51-23d051240864\", //@@\n //correlation_id: \"fb3d2015-bc17-4bb9-bb85-30c5cf1aaaa7\", //@@\n details?: unknown;\n};\n\nexport function GetErrorPayload(\n errorCode: errorCode,\n details: unknown = null\n): errorPayload {\n return {\n error: errorCode.code,\n error_description: errorCode.description,\n timestamp: Date.now(),\n //trace_id: \"255d1aef-8c98-452f-ac51-23d051240864\", //@@\n //correlation_id: \"fb3d2015-bc17-4bb9-bb85-30c5cf1aaaa7\", //@@\n details: details,\n };\n}\n","import { errorCode, errorPayload } from \"./errorhandling.js\";\n\n// Ref: https://datatracker.ietf.org/doc/html/rfc6749#appendix-A\nexport enum OAuth2ParameterType {\n AUDIENCE = \"AUDIENCE\", // STS Extension\n CLIENT_ID = \"client_id\",\n CLIENT_SECRET = \"client_secret\",\n RESPONSE_TYPE = \"response_type\",\n SCOPE = \"scope\",\n STATE = \"state\",\n REDIRECT_URI = \"redirect_uri\",\n ERROR = \"error\",\n ERROR_DESCRIPTION = \"error_description\",\n ERROR_CODES = \"error_codes\", // STS Extension\n ERROR_URI = \"error_uri\",\n GRANT_TYPE = \"grant_type\",\n CODE = \"code\",\n ACCESS_TOKEN = \"access_token\",\n TOKEN_TYPE = \"token_type\",\n EXPIRES_IN = \"expires_in\",\n USERNAME = \"username\",\n PASSWORD = \"password\",\n REFRESH_TOKEN = \"refresh_token\",\n RESPONSE_MODE = \"response_mode\", // STS Extension\n TIMESTAMP = \"timestamp\", // STS Extension\n TRACE_ID = \"trace_id\", // STS Extension\n CORRELATION_ID = \"correlation_id\", // STS Extension\n}\n\n// Auth0 claim usage;\n// aud - api identifier\n// scope - list (space separated) of api permissions\n\n// Claims (Auth0)\n// https://auth0.com/docs/secure/tokens/json-web-tokens/json-web-token-claims\n\n// Reserved claims (IANA)\n// https://www.iana.org/assignments/jwt/jwt.xhtml#claims\n\n// Example scopes and claims (Auth0)\n// https://auth0.com/docs/get-started/apis/scopes/sample-use-cases-scopes-and-claims\n\n// OIDC Claims and Scopes\n// https://openid.net/specs/openid-connect-core-1_0.html#Claims\n// https://developer.okta.com/blog/2017/07/25/oidc-primer-part-1#:~:text=Simply%20put%2C%20claims%20are%20name,information%20asserted%20about%20an%20Entity.%E2%80%9D\n\n// OIDC Standard Claims\n// https://openid.net/specs/openid-connect-core-1_0.html#Claims\n// https://developer.okta.com/blog/2017/07/25/oidc-primer-part-1#:~:text=Simply%20put%2C%20claims%20are%20name,information%20asserted%20about%20an%20Entity.%E2%80%9D\nexport enum OIDCStandardClaim {\n SUB = \"sub\",\n NAME = \"name\",\n GIVEN_NAME = \"given_name\",\n FAMILY_NAME = \"family_name\",\n MIDDLE_NAME = \"middle_name\",\n NICKNAME = \"nickname\",\n PREFERRED_USERNAME = \"preferred_username\",\n PROFILE = \"profile\",\n PICTURE = \"picture\",\n WEBSITE = \"website\",\n EMAIL = \"email\",\n EMAIL_VERIFIED = \"email_verified\",\n GENDER = \"gender\",\n BIRTHDATE = \"birthdate\",\n ZONEINFO = \"zoneinfo\",\n LOCALE = \"locale\",\n PHONE_NUMBER = \"phone_number\",\n PHONE_NUMBER_VERIFIED = \"phone_number_verified\",\n ADDRESS = \"address\",\n CLIENT_SECRET = \"client_secret\",\n NONCE = \"nonce\", // STS Extension\n}\n\nexport enum OIDCAddressClaim {\n FORMATTED = \"formatted\",\n STREET_ADDRESS = \"street_address\",\n LOCALITY = \"locality\",\n REGION = \"region\",\n COUNTRY = \"country\",\n}\n\nexport class OAuth2ParameterErrorType {\n static readonly NOT_EQUAL: errorCode = {\n code: \"STS_OAUTH2_ERR_0001\",\n description: \"Parameter values not equal.\",\n };\n static readonly NOT_PRESENT: errorCode = {\n code: \"STS_OAUTH2_ERR_0002\",\n description: \"Parameter not provided.\",\n };\n static readonly INVALID_FORMAT: errorCode = {\n code: \"STS_OAUTH2_ERR_0003\",\n description: \"Parameter value format invalid.\",\n };\n static readonly EXPIRED: errorCode = {\n code: \"STS_OAUTH2_ERR_0004\",\n description: \"Parameter value expired.\",\n };\n}\n\nexport function compareParameterTypes(\n source1: string[],\n source2: string[],\n authParameterTypes: OAuth2ParameterType[]\n): errorPayload[] {\n const errors: errorPayload[] = [];\n for (let i = 0; i < authParameterTypes.length; i++) {\n const authParameterType = authParameterTypes[i];\n if (source1[i].localeCompare(source2[i]) !== 0) {\n const error: errorPayload = {\n error: OAuth2ParameterErrorType.NOT_EQUAL.code,\n error_description:\n OAuth2ParameterErrorType.NOT_EQUAL.description,\n timestamp: Date.now(),\n details: `${OAuth2ParameterErrorType.NOT_EQUAL.description}: Parameter: [${authParameterType}]`,\n };\n errors.push(error);\n }\n }\n return errors;\n}\n","/* eslint @typescript-eslint/no-explicit-any: 0 */ // --> OFF\n\n// di.ts\n\n/* For nodejs startup;\n\nimport {\n SetInjectionContextStore,\n} from \"@nsshunt/stsutils\";\n\nimport {\n NodeInjectionContextStore,\n} from \"@nsshunt/stsutils/node\";\n\nSetInjectionContextStore(\n new NodeInjectionContextStore()\n);\n\nFor browser - the default mode (SyncInjectionContextStore) is fine - nothing special to do\n\n*/\n\n// ============================================================\n// Constructor\n// ============================================================\n\nexport interface InjectionContextStore {\n run<T>(injector: Injector, fn: () => T): T;\n get(): Injector | undefined;\n}\n\nexport class SyncInjectionContextStore implements InjectionContextStore {\n private current?: Injector;\n\n run<T>(injector: Injector, fn: () => T): T {\n const previous = this.current;\n\n this.current = injector;\n\n try {\n return fn();\n } finally {\n this.current = previous;\n }\n }\n\n get(): Injector | undefined {\n return this.current;\n }\n}\n\nexport type Constructor<T = any> = (new (...args: any[]) => T) & {\n readonly name: string;\n};\n\n// ============================================================\n// Injection token\n// ============================================================\n\nexport class InjectionToken<T> {\n // This field makes T part of the structural type of InjectionToken<T>.\n //\n // It is never used at runtime.\n readonly #type!: T;\n\n constructor(public readonly description: string) {}\n\n toString(): string {\n return `InjectionToken(${this.description})`;\n }\n}\n\n// ============================================================\n// Token\n// ============================================================\n\nexport type Token<T> = Constructor<T> | InjectionToken<T>;\n\n// ============================================================\n// Providers\n// ============================================================\n\nexport type ClassProvider<T> = {\n provide: Token<T>;\n useClass: Constructor<T>;\n};\n\nexport type ValueProvider<T> = {\n provide: Token<T>;\n useValue: T;\n};\n\nexport type FactoryProvider<T> = {\n provide: Token<T>;\n useFactory: () => T;\n};\n\nexport type Provider<T = any> =\n | Constructor<T>\n | ClassProvider<T>\n | ValueProvider<T>\n | FactoryProvider<T>;\n\n// ============================================================\n// Current injection context\n// ============================================================\n\nlet contextStore: InjectionContextStore = new SyncInjectionContextStore();\n\nexport const SetInjectionContextStore = (\n store: InjectionContextStore\n): void => {\n contextStore = store;\n};\n\n// ============================================================\n// inject()\n// ============================================================\n\nexport const inject = <T>(token: Token<T>): T => {\n const injector = contextStore.get();\n\n if (!injector) {\n throw new Error(\"inject() called outside an injection context\");\n }\n\n return injector.get(token);\n};\n\nexport function getCurrentInjector(): Injector {\n const injector = contextStore.get();\n\n if (!injector) {\n throw new Error(\n \"getCurrentInjector() called outside an injection context\"\n );\n }\n\n return injector;\n}\n\n// ============================================================\n// Injector\n// ============================================================\n\nexport class Injector {\n private readonly providers = new Map<\n Token<any>,\n ClassProvider<any> | ValueProvider<any> | FactoryProvider<any>\n >();\n\n private readonly instances = new Map<Token<any>, any>();\n\n constructor(\n providers: Provider[] = [],\n private readonly parent?: Injector\n ) {\n for (const provider of providers) {\n this.register(provider);\n }\n }\n\n // --------------------------------------------------------\n // Create child injector\n // --------------------------------------------------------\n\n createChild(providers: Provider[] = []): Injector {\n return new Injector(providers, this);\n }\n\n // --------------------------------------------------------\n // Register provider\n // --------------------------------------------------------\n\n register(provider: Provider): void {\n // Nest/Angular-like shorthand:\n //\n // new Injector([\n // Logger,\n // UserService\n // ]);\n //\n // is equivalent to:\n //\n // new Injector([\n // {\n // provide: Logger,\n // useClass: Logger\n // },\n // {\n // provide: UserService,\n // useClass: UserService\n // }\n // ]);\n\n if (typeof provider === \"function\") {\n this.providers.set(provider, {\n provide: provider,\n useClass: provider,\n });\n\n return;\n }\n\n this.providers.set(provider.provide, provider);\n }\n\n // --------------------------------------------------------\n // Resolve token\n // --------------------------------------------------------\n\n get<T>(token: Token<T>): T {\n // Check whether THIS injector owns the provider.\n\n const provider = this.providers.get(token);\n\n if (provider) {\n // Providers are singletons within the injector\n // that owns them.\n\n if (this.instances.has(token)) {\n return this.instances.get(token) as T;\n }\n\n const instance = this.createProvider<T>(provider);\n\n this.instances.set(token, instance);\n\n return instance;\n }\n\n // Provider does not exist here.\n //\n // Search parent injector.\n\n if (this.parent) {\n return this.parent.get(token);\n }\n\n throw new Error(`No provider for ${this.tokenToString(token)}`);\n }\n\n // --------------------------------------------------------\n // Create provider\n // --------------------------------------------------------\n\n private createProvider<T>(\n provider: ClassProvider<any> | ValueProvider<any> | FactoryProvider<any>\n ): T {\n if (\"useValue\" in provider) {\n return provider.useValue as T;\n }\n\n if (\"useFactory\" in provider) {\n return this.runInContext(provider.useFactory) as T;\n }\n\n return this.construct(provider.useClass) as T;\n }\n\n // --------------------------------------------------------\n // Construct class\n // --------------------------------------------------------\n\n private construct<T>(type: Constructor<T>): T {\n return this.runInContext(() => new type());\n }\n\n // --------------------------------------------------------\n // Establish injection context\n // --------------------------------------------------------\n\n runInContext<T>(fn: () => T): T {\n return contextStore.run(this, fn);\n }\n\n // --------------------------------------------------------\n // Token name for diagnostics\n // --------------------------------------------------------\n\n private tokenToString(token: Token<any>): string {\n if (token instanceof InjectionToken) {\n return token.toString();\n }\n\n return token.name;\n }\n\n // --------------------------------------------------------\n // Bootstrap\n // --------------------------------------------------------\n\n bootstrap<T>(token: Constructor<T>): T {\n return this.runInContext(() => this.get(token));\n }\n}\n","export * from \"./commonTypes.js\";\nexport * from \"./dataAccessTypes.js\";\nexport * from \"./sleep.js\";\nexport * from \"./stsAxiosConfig.js\";\nexport * from \"./agentManager.js\";\nexport * from \"./errorhandling.js\";\nexport * from \"./oauth2terms.js\";\nexport * from \"./di.js\";\n\nexport const isNode =\n typeof process !== \"undefined\" &&\n typeof process.release !== \"undefined\" &&\n process.release.name === \"node\";\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../src/commonTypes.ts","../src/dataAccessTypes.ts","../src/sleep.ts","../src/stsAxiosConfig.ts","../src/agentManager.ts","../src/errorhandling.ts","../src/oauth2terms.ts","../src/di.ts","../src/index.ts"],"sourcesContent":["/* eslint @typescript-eslint/no-explicit-any: 0 */ // --> OFF\n/* eslint @typescript-eslint/no-unused-vars: 0 */ // --> OFF\nimport chalk from \"chalk\";\n\nexport interface JSONObject {\n [x: string]: any | JSONObject | undefined;\n}\n\nexport enum ModelDelimeter {\n ROOT = \"_\",\n SEPERATOR = \"|\",\n COMPONENT_SEPERATOR = \"@\",\n NID_SEPERATOR = \"^\", // This seperator splits the static and dynamic part of a context string (nid). Used for creating payload header for size optimisation.\n}\n\nexport const CheckValidChar = (checkParams: string[][]): void => {\n const invalidChars = [\n ModelDelimeter.ROOT,\n ModelDelimeter.SEPERATOR,\n ModelDelimeter.COMPONENT_SEPERATOR,\n ModelDelimeter.NID_SEPERATOR,\n ];\n\n checkParams.forEach((param) => {\n invalidChars.forEach((char) => {\n if (param[1].includes(char)) {\n throw new Error(\n `Invalid character inside [${param[0]}:${param[1]}], no [${char}] allowed`\n );\n }\n });\n });\n};\n\n// npm logging levels are prioritized from 0 to 6 (highest to lowest). This from Winston logger.\nexport interface ISTSLogger {\n error(message: any): void;\n warn(message: any): void;\n info(message: any): void;\n http(message: any): void;\n verbose(message: any): void;\n debug(message: any): void;\n silly(message: any): void;\n}\n\nexport const defaultLogger: ISTSLogger = {\n debug(message) {\n console.debug(chalk.grey(`debug: ${message}`));\n },\n error(message) {\n console.error(chalk.red(`error: ${message}`));\n },\n http(message) {\n console.log(chalk.cyan(`http: ${message}`));\n },\n info(message) {\n console.info(chalk.white(`info: ${message}`));\n },\n silly(message) {\n console.log(chalk.yellow(`silly: ${message}`));\n },\n verbose(message) {\n console.log(chalk.green(`verbose: ${message}`));\n },\n warn(message) {\n console.warn(chalk.magenta(`warn: ${message}`));\n },\n};\n\nexport const emptyLogger: ISTSLogger = {\n debug(message) {},\n error(message) {},\n http(message) {},\n info(message) {},\n silly(message) {},\n verbose(message) {},\n warn(message) {},\n};\n","import { StatusCodes } from \"http-status-codes\";\n\nimport { JSONObject } from \"./commonTypes.js\";\n\n//@@ These should be moved into the stsrest01client\nexport enum edbaction {\n created = 1,\n updated = 2,\n deleted = 3,\n}\n\nexport interface IDBResource<T> {\n oid: string;\n resname: string;\n resdesc: T;\n vnum: string;\n validfrom: string;\n validto: string | null;\n dbaction: edbaction;\n dbactionuser: string;\n}\n\nexport interface IDBEntity<T> {\n oid: string;\n resourceoid: string;\n entname: string;\n entvalue: T;\n vnum: string;\n validfrom: string;\n validto: string | null;\n dbaction: edbaction;\n dbactionuser: string;\n}\n\nexport interface IDBFilters {\n resname?: string;\n entname?: string;\n resvnum?: string;\n entvnum?: string;\n filter?: string;\n incdel?: string;\n startdate?: string;\n enddate?: string;\n resenddate?: string;\n dbaction?: string;\n dbactionuser?: string;\n limit?: string;\n}\n\nexport interface IAccessLayerErrorDetail {\n status: StatusCodes;\n error: Error;\n errorMessage: string;\n operation: string;\n}\n\nexport interface IDBOptions {\n filters?: IDBFilters;\n useCache?: boolean;\n useMultipleDatabases?: boolean;\n limit?: number;\n errorOnBatchUpdate?: boolean;\n}\n\nexport interface IDBReturnData<T> {\n status: StatusCodes;\n operation: string;\n detail:\n | IDBReturnData<T>[]\n | IDBResource<T>[]\n | IDBResource<T>\n | IDBEntity<T>[]\n | IDBEntity<T>\n | T\n | null;\n options: IDBOptions;\n error?: IAccessLayerErrorDetail;\n}\n\nexport interface IDBSearchOptions {\n queryFunctionName: string;\n searchParameters: JSONObject;\n returnsResourceList: boolean;\n}\n","export async function Sleep(milliseconds = 1000): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, milliseconds));\n}\n","import { JSONObject } from \"./commonTypes.js\";\nimport { IAgentManager } from \"./agentManager.js\";\n\nexport class STSAxiosConfig {\n #url: string;\n #method: string;\n #headers?: JSONObject;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #data?: any;\n #agentManager?: IAgentManager;\n #timeout?: number;\n #withCredentials?: boolean;\n\n constructor(\n url: string,\n method: string,\n headers?: JSONObject,\n timeout?: number\n ) {\n this.#url = url;\n this.#method = method;\n if (headers !== undefined) {\n this.#headers = headers;\n }\n if (timeout !== undefined) {\n this.#timeout = timeout;\n }\n }\n\n /**\n *\n * @param cookies this.#headers['Cookie'] = cookies.join('; ')\n * @returns\n */\n withCookies(cookies: string[]) {\n if (!this.#headers) {\n this.#headers = {};\n }\n this.#headers[\"Cookie\"] = cookies.join(\"; \");\n return this;\n }\n\n /**\n *\n * @param data Add data to the body\n * @returns\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n withData(data: any) {\n this.#data = data;\n return this;\n }\n\n // 'Content-Type': 'application/json'\n\n /**\n *\n * @param accesssToken\n * @param stsUserId\n * @returns this.#headers['Authorization'] = 'Bearer ' + accesssToken; and this.#headers['x-sts_user_id'] = stsUserId;\n */\n withAuthHeaders(accesssToken: string, stsUserId?: string) {\n if (!this.#headers) {\n this.#headers = {};\n }\n this.#headers[\"Authorization\"] = \"Bearer \" + accesssToken;\n if (stsUserId) {\n this.#headers[\"x-sts_user_id\"] = stsUserId;\n }\n return this;\n }\n\n /**\n *\n * @param headers Add headers to the existing header\n * @returns\n */\n withHeaders(headers: JSONObject) {\n this.#headers = {\n ...(this.#headers ?? {}),\n ...headers,\n };\n return this;\n }\n\n /**\n *\n * @returns this.#headers['Content-Type'] = 'application/fhir+json';\n */\n withApplicationFhirAndJsonContentTypeHeaders() {\n if (!this.#headers) {\n this.#headers = {};\n }\n this.#headers[\"Content-Type\"] = \"application/fhir+json\";\n return this;\n }\n\n /**\n *\n * @returns this.#headers['Content-Type'] = 'application/merge-patch+json';\n */\n withApplicationMergePatchAndJsonContentTypeHeaders() {\n if (!this.#headers) {\n this.#headers = {};\n }\n this.#headers[\"Content-Type\"] = \"application/merge-patch+json\";\n return this;\n }\n\n /**\n *\n * @returns this.#headers['Content-Type'] = 'application/json-patch+json';\n */\n withApplicationJsonPatchAndJsonContentTypeHeaders() {\n if (!this.#headers) {\n this.#headers = {};\n }\n this.#headers[\"Content-Type\"] = \"application/json-patch+json\";\n return this;\n }\n\n /**\n *\n * @returns this.#headers['Content-Type'] = 'application/json';\n */\n withApplicationJsonContentTypeHeaders() {\n if (!this.#headers) {\n this.#headers = {};\n }\n this.#headers[\"Content-Type\"] = \"application/json\";\n return this;\n }\n\n /**\n *\n * @returns this.#headers['Content-Type'] = 'application/json';\n */\n withDefaultHeaders() {\n if (!this.#headers) {\n this.#headers = {};\n }\n this.#headers[\"Content-Type\"] = \"application/json\";\n return this;\n }\n\n /**\n *\n * @returns\n */\n withCredentials() {\n this.#withCredentials = true;\n return this;\n }\n\n /**\n *\n * @param timeout Add a connection timeout\n * @returns\n */\n withTimeout(timeout: number) {\n this.#timeout = timeout;\n return this;\n }\n\n /**\n *\n * @param agentManager Add the agent manager for each rest call. Only for nodejs not browser.\n * @returns\n */\n withAgentManager(agentManager: IAgentManager) {\n this.#agentManager = agentManager;\n return this;\n }\n\n /**\n * @returns Returns axios config object\n */\n get config(): JSONObject {\n const retVal: JSONObject = {\n url: this.#url,\n method: this.#method,\n };\n if (this.#headers) {\n retVal.headers = this.#headers;\n }\n if (this.#agentManager !== undefined) {\n if (this.#agentManager.IsHttps(this.#url)) {\n retVal.httpsAgent = this.#agentManager.GetAgent(this.#url);\n } else {\n retVal.httpAgent = this.#agentManager.GetAgent(this.#url);\n }\n }\n if (this.#data !== undefined) {\n retVal.data = this.#data;\n }\n if (this.#timeout !== undefined) {\n retVal.timeout = this.#timeout;\n }\n if (\n this.#withCredentials !== undefined &&\n this.#withCredentials === true\n ) {\n retVal.withCredentials = true;\n }\n return retVal;\n }\n}\n","export interface IAgentOptions {\n keepAlive: boolean;\n maxSockets: number;\n maxTotalSockets: number;\n maxFreeSockets: number;\n timeout: number;\n rejectUnauthorized?: boolean;\n}\n\nexport interface IAgentManagerOptions {\n httpAgentFactory: (options: IAgentOptions) => unknown;\n httpsAgentFactory: (options: IAgentOptions) => unknown;\n agentOptions?: IAgentOptions;\n agentResetInterval?: number;\n agentResetCount?: number;\n}\n\nexport interface IAgentManager {\n get agentResetInterval(): number | undefined;\n get agentResetCount(): number | undefined;\n UpdateAgentResetInterval(val: number): void;\n UpdateAgentResetCount(val: number): void;\n IncRequestCount(): void;\n IsHttps(protocol: string): boolean;\n GetAgent(protocol: string): unknown;\n ResetAgent(): void;\n Terminate(): void;\n}\n\nexport function createAgentManager(\n agentManagerOptions: IAgentManagerOptions\n): IAgentManager {\n return new AgentManager(agentManagerOptions);\n}\n\nclass AgentManager implements IAgentManager {\n #options: IAgentManagerOptions;\n #agentResetInterval: NodeJS.Timeout | null = null;\n #requestCount: number = 0;\n #httpAgent: unknown = undefined;\n #httpsAgent: unknown = undefined;\n\n constructor(agentManagerOptions: IAgentManagerOptions) {\n this.#options = agentManagerOptions;\n if (this.#options.agentResetInterval) {\n this.#SetupResetInterval();\n }\n }\n\n get agentResetInterval(): number | undefined {\n return this.#options.agentResetInterval;\n }\n\n UpdateAgentResetInterval(val: number): void {\n if (this.#agentResetInterval) {\n clearTimeout(this.#agentResetInterval);\n }\n this.#options.agentResetInterval = val;\n this.#SetupResetInterval();\n }\n\n get agentResetCount(): number | undefined {\n return this.#options.agentResetCount;\n }\n\n UpdateAgentResetCount(val: number): void {\n this.#options.agentResetCount = val;\n }\n\n #SetupResetInterval = () => {\n if (\n this.#options.agentResetInterval &&\n this.#options.agentResetInterval > 0\n ) {\n this.#agentResetInterval = setTimeout(() => {\n this.ResetAgent();\n this.#SetupResetInterval();\n }, this.#options.agentResetInterval).unref();\n }\n };\n\n IncRequestCount(): void {\n this.#requestCount++;\n if (this.#options.agentResetCount) {\n if (this.#requestCount % this.#options.agentResetCount === 0) {\n this.ResetAgent();\n }\n }\n }\n\n IsHttps(protocol: string): boolean {\n if (protocol.toLowerCase().startsWith(\"https:\")) {\n return true;\n }\n return false;\n }\n\n #GetAgentOptions = (https: boolean): IAgentOptions => {\n let options: IAgentOptions;\n if (this.#options.agentOptions) {\n options = {\n keepAlive: this.#options.agentOptions.keepAlive,\n maxSockets: this.#options.agentOptions.maxSockets,\n maxTotalSockets: this.#options.agentOptions.maxTotalSockets,\n maxFreeSockets: this.#options.agentOptions.maxFreeSockets,\n timeout: this.#options.agentOptions.timeout,\n };\n if (https === true) {\n options.rejectUnauthorized =\n this.#options.agentOptions.rejectUnauthorized; // Allows self signed certs in non production mode(s)\n }\n } else {\n // Defaults\n options = {\n keepAlive: true,\n maxSockets: 10,\n maxTotalSockets: 20,\n maxFreeSockets: 256,\n timeout: 30000,\n rejectUnauthorized: false,\n };\n }\n return options;\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n GetAgent(protocol: string): any {\n if (protocol.toLowerCase().startsWith(\"https:\")) {\n if (!this.#httpsAgent) {\n //this.#httpsAgent = new https.Agent(this.#GetAgentOptions(true));\n this.#httpsAgent = this.#options.httpsAgentFactory(\n this.#GetAgentOptions(true)\n );\n }\n return this.#httpsAgent;\n } else if (protocol.toLowerCase().startsWith(\"http:\")) {\n if (!this.#httpAgent) {\n //this.#httpAgent = new http.Agent(this.#GetAgentOptions(false));\n this.#httpAgent = this.#options.httpAgentFactory(\n this.#GetAgentOptions(false)\n );\n }\n return this.#httpAgent;\n } else {\n return null;\n }\n }\n\n ResetAgent(): void {\n this.#httpAgent = null;\n this.#httpsAgent = null;\n }\n\n Terminate(): void {\n if (this.#agentResetInterval) {\n clearTimeout(this.#agentResetInterval);\n this.#agentResetInterval = null;\n }\n\n if (this.#httpAgent) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (this.#httpAgent as any).destroy();\n this.#httpAgent = null;\n }\n\n if (this.#httpsAgent) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (this.#httpsAgent as any).destroy();\n this.#httpsAgent = null;\n }\n }\n}\n","export type errorCode = {\n code: string;\n description: string;\n};\n\nexport type errorPayload = {\n error: string;\n error_description: string;\n timestamp: number;\n //trace_id: \"255d1aef-8c98-452f-ac51-23d051240864\", //@@\n //correlation_id: \"fb3d2015-bc17-4bb9-bb85-30c5cf1aaaa7\", //@@\n details?: unknown;\n};\n\nexport function GetErrorPayload(\n errorCode: errorCode,\n details: unknown = null\n): errorPayload {\n return {\n error: errorCode.code,\n error_description: errorCode.description,\n timestamp: Date.now(),\n //trace_id: \"255d1aef-8c98-452f-ac51-23d051240864\", //@@\n //correlation_id: \"fb3d2015-bc17-4bb9-bb85-30c5cf1aaaa7\", //@@\n details: details,\n };\n}\n","import { errorCode, errorPayload } from \"./errorhandling.js\";\n\n// Ref: https://datatracker.ietf.org/doc/html/rfc6749#appendix-A\nexport enum OAuth2ParameterType {\n AUDIENCE = \"AUDIENCE\", // STS Extension\n CLIENT_ID = \"client_id\",\n CLIENT_SECRET = \"client_secret\",\n RESPONSE_TYPE = \"response_type\",\n SCOPE = \"scope\",\n STATE = \"state\",\n REDIRECT_URI = \"redirect_uri\",\n ERROR = \"error\",\n ERROR_DESCRIPTION = \"error_description\",\n ERROR_CODES = \"error_codes\", // STS Extension\n ERROR_URI = \"error_uri\",\n GRANT_TYPE = \"grant_type\",\n CODE = \"code\",\n ACCESS_TOKEN = \"access_token\",\n TOKEN_TYPE = \"token_type\",\n EXPIRES_IN = \"expires_in\",\n USERNAME = \"username\",\n PASSWORD = \"password\",\n REFRESH_TOKEN = \"refresh_token\",\n RESPONSE_MODE = \"response_mode\", // STS Extension\n TIMESTAMP = \"timestamp\", // STS Extension\n TRACE_ID = \"trace_id\", // STS Extension\n CORRELATION_ID = \"correlation_id\", // STS Extension\n}\n\n// Auth0 claim usage;\n// aud - api identifier\n// scope - list (space separated) of api permissions\n\n// Claims (Auth0)\n// https://auth0.com/docs/secure/tokens/json-web-tokens/json-web-token-claims\n\n// Reserved claims (IANA)\n// https://www.iana.org/assignments/jwt/jwt.xhtml#claims\n\n// Example scopes and claims (Auth0)\n// https://auth0.com/docs/get-started/apis/scopes/sample-use-cases-scopes-and-claims\n\n// OIDC Claims and Scopes\n// https://openid.net/specs/openid-connect-core-1_0.html#Claims\n// https://developer.okta.com/blog/2017/07/25/oidc-primer-part-1#:~:text=Simply%20put%2C%20claims%20are%20name,information%20asserted%20about%20an%20Entity.%E2%80%9D\n\n// OIDC Standard Claims\n// https://openid.net/specs/openid-connect-core-1_0.html#Claims\n// https://developer.okta.com/blog/2017/07/25/oidc-primer-part-1#:~:text=Simply%20put%2C%20claims%20are%20name,information%20asserted%20about%20an%20Entity.%E2%80%9D\nexport enum OIDCStandardClaim {\n SUB = \"sub\",\n NAME = \"name\",\n GIVEN_NAME = \"given_name\",\n FAMILY_NAME = \"family_name\",\n MIDDLE_NAME = \"middle_name\",\n NICKNAME = \"nickname\",\n PREFERRED_USERNAME = \"preferred_username\",\n PROFILE = \"profile\",\n PICTURE = \"picture\",\n WEBSITE = \"website\",\n EMAIL = \"email\",\n EMAIL_VERIFIED = \"email_verified\",\n GENDER = \"gender\",\n BIRTHDATE = \"birthdate\",\n ZONEINFO = \"zoneinfo\",\n LOCALE = \"locale\",\n PHONE_NUMBER = \"phone_number\",\n PHONE_NUMBER_VERIFIED = \"phone_number_verified\",\n ADDRESS = \"address\",\n CLIENT_SECRET = \"client_secret\",\n NONCE = \"nonce\", // STS Extension\n}\n\nexport enum OIDCAddressClaim {\n FORMATTED = \"formatted\",\n STREET_ADDRESS = \"street_address\",\n LOCALITY = \"locality\",\n REGION = \"region\",\n COUNTRY = \"country\",\n}\n\nexport class OAuth2ParameterErrorType {\n static readonly NOT_EQUAL: errorCode = {\n code: \"STS_OAUTH2_ERR_0001\",\n description: \"Parameter values not equal.\",\n };\n static readonly NOT_PRESENT: errorCode = {\n code: \"STS_OAUTH2_ERR_0002\",\n description: \"Parameter not provided.\",\n };\n static readonly INVALID_FORMAT: errorCode = {\n code: \"STS_OAUTH2_ERR_0003\",\n description: \"Parameter value format invalid.\",\n };\n static readonly EXPIRED: errorCode = {\n code: \"STS_OAUTH2_ERR_0004\",\n description: \"Parameter value expired.\",\n };\n}\n\nexport function compareParameterTypes(\n source1: string[],\n source2: string[],\n authParameterTypes: OAuth2ParameterType[]\n): errorPayload[] {\n const errors: errorPayload[] = [];\n for (let i = 0; i < authParameterTypes.length; i++) {\n const authParameterType = authParameterTypes[i];\n if (source1[i].localeCompare(source2[i]) !== 0) {\n const error: errorPayload = {\n error: OAuth2ParameterErrorType.NOT_EQUAL.code,\n error_description:\n OAuth2ParameterErrorType.NOT_EQUAL.description,\n timestamp: Date.now(),\n details: `${OAuth2ParameterErrorType.NOT_EQUAL.description}: Parameter: [${authParameterType}]`,\n };\n errors.push(error);\n }\n }\n return errors;\n}\n","/* eslint @typescript-eslint/no-explicit-any: 0 */ // --> OFF\n\n// di.ts\n\n/* For nodejs startup;\n\nimport {\n SetInjectionContextStore,\n} from \"@nsshunt/stsutils\";\n\nimport {\n NodeInjectionContextStore,\n} from \"@nsshunt/stsutils/node\";\n\nSetInjectionContextStore(\n new NodeInjectionContextStore()\n);\n\nFor browser - the default mode (SyncInjectionContextStore) is fine - nothing special to do\n\n*/\n\n// ============================================================\n// Constructor\n// ============================================================\n\nexport interface InjectionContextStore {\n run<T>(injector: Injector, fn: () => T): T;\n get(): Injector | undefined;\n}\n\nexport class SyncInjectionContextStore implements InjectionContextStore {\n private current?: Injector;\n\n run<T>(injector: Injector, fn: () => T): T {\n const previous = this.current;\n\n this.current = injector;\n\n try {\n return fn();\n } finally {\n this.current = previous;\n }\n }\n\n get(): Injector | undefined {\n return this.current;\n }\n}\n\nexport type Constructor<T = any> = (new (...args: any[]) => T) & {\n readonly name: string;\n};\n\n// ============================================================\n// Injection token\n// ============================================================\n\nexport class InjectionToken<T> {\n // This field makes T part of the structural type of InjectionToken<T>.\n //\n // It is never used at runtime.\n readonly #type!: T;\n\n constructor(public readonly description: string) {}\n\n toString(): string {\n return `InjectionToken(${this.description})`;\n }\n}\n\n// ============================================================\n// Token\n// ============================================================\n\nexport type Token<T> = Constructor<T> | InjectionToken<T>;\n\n// ============================================================\n// Providers\n// ============================================================\n\nexport type ClassProvider<T> = {\n provide: Token<T>;\n useClass: Constructor<T>;\n};\n\nexport type ValueProvider<T> = {\n provide: Token<T>;\n useValue: T;\n};\n\nexport type FactoryProvider<T> = {\n provide: Token<T>;\n useFactory: () => T;\n};\n\nexport type Provider<T = any> =\n | Constructor<T>\n | ClassProvider<T>\n | ValueProvider<T>\n | FactoryProvider<T>;\n\n// ============================================================\n// Current injection context\n// ============================================================\n\nlet contextStore: InjectionContextStore = new SyncInjectionContextStore();\n\nexport const SetInjectionContextStore = (\n store: InjectionContextStore\n): void => {\n contextStore = store;\n};\n\n// ============================================================\n// inject()\n// ============================================================\n\nexport const inject = <T>(token: Token<T>): T => {\n const injector = contextStore.get();\n\n if (!injector) {\n throw new Error(\"inject() called outside an injection context\");\n }\n\n return injector.get(token);\n};\n\nexport function getCurrentInjector(): Injector {\n const injector = contextStore.get();\n\n if (!injector) {\n throw new Error(\n \"getCurrentInjector() called outside an injection context\"\n );\n }\n\n return injector;\n}\n\n// ============================================================\n// Injector\n// ============================================================\n\nexport class Injector {\n private readonly providers = new Map<\n Token<any>,\n ClassProvider<any> | ValueProvider<any> | FactoryProvider<any>\n >();\n\n private readonly instances = new Map<Token<any>, any>();\n\n constructor(\n providers: Provider[] = [],\n private readonly parent?: Injector\n ) {\n for (const provider of providers) {\n this.register(provider);\n }\n }\n\n // --------------------------------------------------------\n // Create child injector\n // --------------------------------------------------------\n\n createChild(providers: Provider[] = []): Injector {\n return new Injector(providers, this);\n }\n\n // --------------------------------------------------------\n // Register provider\n // --------------------------------------------------------\n\n register(provider: Provider): void {\n // Nest/Angular-like shorthand:\n //\n // new Injector([\n // Logger,\n // UserService\n // ]);\n //\n // is equivalent to:\n //\n // new Injector([\n // {\n // provide: Logger,\n // useClass: Logger\n // },\n // {\n // provide: UserService,\n // useClass: UserService\n // }\n // ]);\n\n if (typeof provider === \"function\") {\n this.providers.set(provider, {\n provide: provider,\n useClass: provider,\n });\n\n return;\n }\n\n this.providers.set(provider.provide, provider);\n }\n\n // --------------------------------------------------------\n // Resolve token\n // --------------------------------------------------------\n\n get<T>(token: Token<T>): T {\n // Check whether THIS injector owns the provider.\n\n const provider = this.providers.get(token);\n\n if (provider) {\n // Providers are singletons within the injector\n // that owns them.\n\n if (this.instances.has(token)) {\n return this.instances.get(token) as T;\n }\n\n const instance = this.createProvider<T>(provider);\n\n this.instances.set(token, instance);\n\n return instance;\n }\n\n // Provider does not exist here.\n //\n // Search parent injector.\n\n if (this.parent) {\n return this.parent.get(token);\n }\n\n throw new Error(`No provider for ${this.tokenToString(token)}`);\n }\n\n // --------------------------------------------------------\n // Create provider\n // --------------------------------------------------------\n\n private createProvider<T>(\n provider: ClassProvider<any> | ValueProvider<any> | FactoryProvider<any>\n ): T {\n if (\"useValue\" in provider) {\n return provider.useValue as T;\n }\n\n if (\"useFactory\" in provider) {\n return this.runInContext(provider.useFactory) as T;\n }\n\n return this.construct(provider.useClass) as T;\n }\n\n // --------------------------------------------------------\n // Construct class\n // --------------------------------------------------------\n\n private construct<T>(type: Constructor<T>): T {\n return this.runInContext(() => new type());\n }\n\n // --------------------------------------------------------\n // Establish injection context\n // --------------------------------------------------------\n\n runInContext<T>(fn: () => T): T {\n return contextStore.run(this, fn);\n }\n\n // --------------------------------------------------------\n // Token name for diagnostics\n // --------------------------------------------------------\n\n private tokenToString(token: Token<any>): string {\n if (token instanceof InjectionToken) {\n return token.toString();\n }\n\n return token.name;\n }\n\n // --------------------------------------------------------\n // Bootstrap\n // --------------------------------------------------------\n\n bootstrap<T>(token: Constructor<T>): T {\n return this.runInContext(() => this.get(token));\n }\n}\n","export * from \"./commonTypes.js\";\nexport * from \"./dataAccessTypes.js\";\nexport * from \"./sleep.js\";\nexport * from \"./stsAxiosConfig.js\";\nexport * from \"./agentManager.js\";\nexport * from \"./errorhandling.js\";\nexport * from \"./oauth2terms.js\";\nexport * from \"./di.js\";\nexport * from \"./pidColours.js\";\n\nexport const isNode =\n typeof process !== \"undefined\" &&\n typeof process.release !== \"undefined\" &&\n process.release.name === \"node\";\n"],"mappings":"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"}
|
package/dist/node.cjs
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const
|
|
3
|
-
let chalk = require("chalk");
|
|
2
|
+
const require_pidColours = require("./pidColours-uEpdtVfi.cjs");
|
|
4
3
|
let node_async_hooks = require("node:async_hooks");
|
|
5
4
|
let winston = require("winston");
|
|
6
|
-
winston =
|
|
5
|
+
winston = require_pidColours.__toESM(winston, 1);
|
|
7
6
|
//#region src/di-node.ts
|
|
8
7
|
var NodeInjectionContextStore = class {
|
|
9
8
|
storage = new node_async_hooks.AsyncLocalStorage();
|
|
@@ -15,39 +14,31 @@ var NodeInjectionContextStore = class {
|
|
|
15
14
|
}
|
|
16
15
|
};
|
|
17
16
|
//#endregion
|
|
18
|
-
//#region src/
|
|
19
|
-
var
|
|
20
|
-
static
|
|
21
|
-
static pidColours = /* @__PURE__ */ new Map();
|
|
22
|
-
static randomChannel = () => Math.floor(80 + Math.random() * 176);
|
|
23
|
-
static getPidColour = (pid) => {
|
|
24
|
-
let colour = PidColours.pidColours.get(pid);
|
|
25
|
-
if (!colour) {
|
|
26
|
-
colour = PidColours.chalk.rgb(PidColours.randomChannel(), PidColours.randomChannel(), PidColours.randomChannel());
|
|
27
|
-
PidColours.pidColours.set(pid, colour);
|
|
28
|
-
}
|
|
29
|
-
return colour;
|
|
30
|
-
};
|
|
31
|
-
static GetPidColour = () => {
|
|
32
|
-
return PidColours.getPidColour(process.pid);
|
|
33
|
-
};
|
|
34
|
-
static GetPidFormat = (text) => {
|
|
35
|
-
return `${PidColours.getPidColour(process.pid)(String(process.pid))} ${text}`;
|
|
36
|
-
};
|
|
37
|
-
static GetPidFormatNoColour = (text) => {
|
|
38
|
-
return `${process.pid} ${text}`;
|
|
39
|
-
};
|
|
40
|
-
static pidFormatNoColour = winston.default.format((info) => {
|
|
17
|
+
//#region src/pidColoursNode.ts
|
|
18
|
+
var PidColoursNode = class PidColoursNode {
|
|
19
|
+
static pidFormatNoColourWinstonFormatter = winston.default.format((info) => {
|
|
41
20
|
info.message = `${process.pid} ${info.message}`;
|
|
42
21
|
return info;
|
|
43
22
|
});
|
|
44
|
-
static
|
|
45
|
-
info.message = `${PidColours.getPidColour(process.pid)(String(process.pid))} ${info.message}`;
|
|
23
|
+
static pidFormatWinstonFormatter = winston.default.format((info) => {
|
|
24
|
+
info.message = `${require_pidColours.PidColours.getPidColour(process.pid)(String(process.pid))} ${info.message}`;
|
|
46
25
|
return info;
|
|
47
26
|
});
|
|
27
|
+
static CreateRawWinstonLogger = (level = "debug", withColour = true) => {
|
|
28
|
+
if (withColour === true) return winston.default.createLogger({
|
|
29
|
+
level,
|
|
30
|
+
format: winston.default.format.combine(PidColoursNode.pidFormatWinstonFormatter(), winston.default.format.colorize(), winston.default.format.simple()),
|
|
31
|
+
transports: [new winston.default.transports.Console()]
|
|
32
|
+
});
|
|
33
|
+
else return winston.default.createLogger({
|
|
34
|
+
level,
|
|
35
|
+
format: winston.default.format.combine(PidColoursNode.pidFormatNoColourWinstonFormatter(), winston.default.format.colorize(), winston.default.format.simple()),
|
|
36
|
+
transports: [new winston.default.transports.Console()]
|
|
37
|
+
});
|
|
38
|
+
};
|
|
48
39
|
};
|
|
49
40
|
//#endregion
|
|
50
41
|
exports.NodeInjectionContextStore = NodeInjectionContextStore;
|
|
51
|
-
exports.
|
|
42
|
+
exports.PidColoursNode = PidColoursNode;
|
|
52
43
|
|
|
53
44
|
//# sourceMappingURL=node.cjs.map
|
package/dist/node.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.cjs","names":["AsyncLocalStorage","
|
|
1
|
+
{"version":3,"file":"node.cjs","names":["AsyncLocalStorage","PidColours"],"sources":["../src/di-node.ts","../src/pidColoursNode.ts"],"sourcesContent":["import { AsyncLocalStorage } from \"node:async_hooks\";\n\nimport { Injector, InjectionContextStore } from \"./di.js\";\n\nexport class NodeInjectionContextStore implements InjectionContextStore {\n private readonly storage = new AsyncLocalStorage<Injector>();\n\n run<T>(injector: Injector, fn: () => T): T {\n return this.storage.run(injector, fn);\n }\n\n get(): Injector | undefined {\n return this.storage.getStore();\n }\n}\n","import winston from \"winston\";\nimport { PidColours } from \"./pidColours.js\";\n\nexport class PidColoursNode {\n static readonly pidFormatNoColourWinstonFormatter = winston.format(\n (info) => {\n info.message = `${process.pid} ${info.message}`;\n return info;\n }\n );\n\n static readonly pidFormatWinstonFormatter = winston.format((info) => {\n const colour = PidColours.getPidColour(process.pid);\n info.message = `${colour(String(process.pid))} ${info.message}`;\n return info;\n });\n\n static readonly CreateRawWinstonLogger = (\n level: string = \"debug\",\n withColour: boolean = true\n ) => {\n if (withColour === true) {\n return winston.createLogger({\n level,\n format: winston.format.combine(\n PidColoursNode.pidFormatWinstonFormatter(),\n winston.format.colorize(),\n winston.format.simple()\n ),\n transports: [new winston.transports.Console()],\n });\n } else {\n return winston.createLogger({\n level,\n format: winston.format.combine(\n PidColoursNode.pidFormatNoColourWinstonFormatter(),\n winston.format.colorize(),\n winston.format.simple()\n ),\n transports: [new winston.transports.Console()],\n });\n }\n };\n}\n"],"mappings":";;;;;;AAIA,IAAa,4BAAb,MAAwE;CACpE,UAA2B,IAAIA,iBAAAA,kBAA4B;CAE3D,IAAO,UAAoB,IAAgB;EACvC,OAAO,KAAK,QAAQ,IAAI,UAAU,EAAE;CACxC;CAEA,MAA4B;EACxB,OAAO,KAAK,QAAQ,SAAS;CACjC;AACJ;;;ACXA,IAAa,iBAAb,MAAa,eAAe;CACxB,OAAgB,oCAAoC,QAAA,QAAQ,QACvD,SAAS;EACN,KAAK,UAAU,GAAG,QAAQ,IAAI,GAAG,KAAK;EACtC,OAAO;CACX,CACJ;CAEA,OAAgB,4BAA4B,QAAA,QAAQ,QAAQ,SAAS;EAEjE,KAAK,UAAU,GADAC,mBAAAA,WAAW,aAAa,QAAQ,GAC7B,CAAA,CAAO,OAAO,QAAQ,GAAG,CAAC,EAAE,GAAG,KAAK;EACtD,OAAO;CACX,CAAC;CAED,OAAgB,0BACZ,QAAgB,SAChB,aAAsB,SACrB;EACD,IAAI,eAAe,MACf,OAAO,QAAA,QAAQ,aAAa;GACxB;GACA,QAAQ,QAAA,QAAQ,OAAO,QACnB,eAAe,0BAA0B,GACzC,QAAA,QAAQ,OAAO,SAAS,GACxB,QAAA,QAAQ,OAAO,OAAO,CAC1B;GACA,YAAY,CAAC,IAAI,QAAA,QAAQ,WAAW,QAAQ,CAAC;EACjD,CAAC;OAED,OAAO,QAAA,QAAQ,aAAa;GACxB;GACA,QAAQ,QAAA,QAAQ,OAAO,QACnB,eAAe,kCAAkC,GACjD,QAAA,QAAQ,OAAO,SAAS,GACxB,QAAA,QAAQ,OAAO,OAAO,CAC1B;GACA,YAAY,CAAC,IAAI,QAAA,QAAQ,WAAW,QAAQ,CAAC;EACjD,CAAC;CAET;AACJ"}
|
package/dist/node.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { t as PidColours } from "./pidColours-Cf8--nrU.js";
|
|
2
2
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
3
3
|
import winston from "winston";
|
|
4
4
|
//#region src/di-node.ts
|
|
@@ -12,38 +12,30 @@ var NodeInjectionContextStore = class {
|
|
|
12
12
|
}
|
|
13
13
|
};
|
|
14
14
|
//#endregion
|
|
15
|
-
//#region src/
|
|
16
|
-
var
|
|
17
|
-
static
|
|
18
|
-
static pidColours = /* @__PURE__ */ new Map();
|
|
19
|
-
static randomChannel = () => Math.floor(80 + Math.random() * 176);
|
|
20
|
-
static getPidColour = (pid) => {
|
|
21
|
-
let colour = PidColours.pidColours.get(pid);
|
|
22
|
-
if (!colour) {
|
|
23
|
-
colour = PidColours.chalk.rgb(PidColours.randomChannel(), PidColours.randomChannel(), PidColours.randomChannel());
|
|
24
|
-
PidColours.pidColours.set(pid, colour);
|
|
25
|
-
}
|
|
26
|
-
return colour;
|
|
27
|
-
};
|
|
28
|
-
static GetPidColour = () => {
|
|
29
|
-
return PidColours.getPidColour(process.pid);
|
|
30
|
-
};
|
|
31
|
-
static GetPidFormat = (text) => {
|
|
32
|
-
return `${PidColours.getPidColour(process.pid)(String(process.pid))} ${text}`;
|
|
33
|
-
};
|
|
34
|
-
static GetPidFormatNoColour = (text) => {
|
|
35
|
-
return `${process.pid} ${text}`;
|
|
36
|
-
};
|
|
37
|
-
static pidFormatNoColour = winston.format((info) => {
|
|
15
|
+
//#region src/pidColoursNode.ts
|
|
16
|
+
var PidColoursNode = class PidColoursNode {
|
|
17
|
+
static pidFormatNoColourWinstonFormatter = winston.format((info) => {
|
|
38
18
|
info.message = `${process.pid} ${info.message}`;
|
|
39
19
|
return info;
|
|
40
20
|
});
|
|
41
|
-
static
|
|
21
|
+
static pidFormatWinstonFormatter = winston.format((info) => {
|
|
42
22
|
info.message = `${PidColours.getPidColour(process.pid)(String(process.pid))} ${info.message}`;
|
|
43
23
|
return info;
|
|
44
24
|
});
|
|
25
|
+
static CreateRawWinstonLogger = (level = "debug", withColour = true) => {
|
|
26
|
+
if (withColour === true) return winston.createLogger({
|
|
27
|
+
level,
|
|
28
|
+
format: winston.format.combine(PidColoursNode.pidFormatWinstonFormatter(), winston.format.colorize(), winston.format.simple()),
|
|
29
|
+
transports: [new winston.transports.Console()]
|
|
30
|
+
});
|
|
31
|
+
else return winston.createLogger({
|
|
32
|
+
level,
|
|
33
|
+
format: winston.format.combine(PidColoursNode.pidFormatNoColourWinstonFormatter(), winston.format.colorize(), winston.format.simple()),
|
|
34
|
+
transports: [new winston.transports.Console()]
|
|
35
|
+
});
|
|
36
|
+
};
|
|
45
37
|
};
|
|
46
38
|
//#endregion
|
|
47
|
-
export { NodeInjectionContextStore,
|
|
39
|
+
export { NodeInjectionContextStore, PidColoursNode };
|
|
48
40
|
|
|
49
41
|
//# sourceMappingURL=node.mjs.map
|
package/dist/node.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.mjs","names":[],"sources":["../src/di-node.ts","../src/
|
|
1
|
+
{"version":3,"file":"node.mjs","names":[],"sources":["../src/di-node.ts","../src/pidColoursNode.ts"],"sourcesContent":["import { AsyncLocalStorage } from \"node:async_hooks\";\n\nimport { Injector, InjectionContextStore } from \"./di.js\";\n\nexport class NodeInjectionContextStore implements InjectionContextStore {\n private readonly storage = new AsyncLocalStorage<Injector>();\n\n run<T>(injector: Injector, fn: () => T): T {\n return this.storage.run(injector, fn);\n }\n\n get(): Injector | undefined {\n return this.storage.getStore();\n }\n}\n","import winston from \"winston\";\nimport { PidColours } from \"./pidColours.js\";\n\nexport class PidColoursNode {\n static readonly pidFormatNoColourWinstonFormatter = winston.format(\n (info) => {\n info.message = `${process.pid} ${info.message}`;\n return info;\n }\n );\n\n static readonly pidFormatWinstonFormatter = winston.format((info) => {\n const colour = PidColours.getPidColour(process.pid);\n info.message = `${colour(String(process.pid))} ${info.message}`;\n return info;\n });\n\n static readonly CreateRawWinstonLogger = (\n level: string = \"debug\",\n withColour: boolean = true\n ) => {\n if (withColour === true) {\n return winston.createLogger({\n level,\n format: winston.format.combine(\n PidColoursNode.pidFormatWinstonFormatter(),\n winston.format.colorize(),\n winston.format.simple()\n ),\n transports: [new winston.transports.Console()],\n });\n } else {\n return winston.createLogger({\n level,\n format: winston.format.combine(\n PidColoursNode.pidFormatNoColourWinstonFormatter(),\n winston.format.colorize(),\n winston.format.simple()\n ),\n transports: [new winston.transports.Console()],\n });\n }\n };\n}\n"],"mappings":";;;;AAIA,IAAa,4BAAb,MAAwE;CACpE,UAA2B,IAAI,kBAA4B;CAE3D,IAAO,UAAoB,IAAgB;EACvC,OAAO,KAAK,QAAQ,IAAI,UAAU,EAAE;CACxC;CAEA,MAA4B;EACxB,OAAO,KAAK,QAAQ,SAAS;CACjC;AACJ;;;ACXA,IAAa,iBAAb,MAAa,eAAe;CACxB,OAAgB,oCAAoC,QAAQ,QACvD,SAAS;EACN,KAAK,UAAU,GAAG,QAAQ,IAAI,GAAG,KAAK;EACtC,OAAO;CACX,CACJ;CAEA,OAAgB,4BAA4B,QAAQ,QAAQ,SAAS;EAEjE,KAAK,UAAU,GADA,WAAW,aAAa,QAAQ,GAC7B,CAAA,CAAO,OAAO,QAAQ,GAAG,CAAC,EAAE,GAAG,KAAK;EACtD,OAAO;CACX,CAAC;CAED,OAAgB,0BACZ,QAAgB,SAChB,aAAsB,SACrB;EACD,IAAI,eAAe,MACf,OAAO,QAAQ,aAAa;GACxB;GACA,QAAQ,QAAQ,OAAO,QACnB,eAAe,0BAA0B,GACzC,QAAQ,OAAO,SAAS,GACxB,QAAQ,OAAO,OAAO,CAC1B;GACA,YAAY,CAAC,IAAI,QAAQ,WAAW,QAAQ,CAAC;EACjD,CAAC;OAED,OAAO,QAAQ,aAAa;GACxB;GACA,QAAQ,QAAQ,OAAO,QACnB,eAAe,kCAAkC,GACjD,QAAQ,OAAO,SAAS,GACxB,QAAQ,OAAO,OAAO,CAC1B;GACA,YAAY,CAAC,IAAI,QAAQ,WAAW,QAAQ,CAAC;EACjD,CAAC;CAET;AACJ"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Chalk } from "chalk";
|
|
2
|
+
//#region src/pidColours.ts
|
|
3
|
+
var PidColours = class PidColours {
|
|
4
|
+
static chalk = new Chalk({ level: 3 });
|
|
5
|
+
static pidColours = /* @__PURE__ */ new Map();
|
|
6
|
+
static randomChannel = () => Math.floor(80 + Math.random() * 176);
|
|
7
|
+
static getPidColour = (pid) => {
|
|
8
|
+
let colour = PidColours.pidColours.get(pid);
|
|
9
|
+
if (!colour) {
|
|
10
|
+
colour = PidColours.chalk.rgb(PidColours.randomChannel(), PidColours.randomChannel(), PidColours.randomChannel());
|
|
11
|
+
PidColours.pidColours.set(pid, colour);
|
|
12
|
+
}
|
|
13
|
+
return colour;
|
|
14
|
+
};
|
|
15
|
+
static GetPidColour = () => {
|
|
16
|
+
return PidColours.getPidColour(process.pid);
|
|
17
|
+
};
|
|
18
|
+
static GetPidFormat = (text) => {
|
|
19
|
+
return `${PidColours.getPidColour(process.pid)(String(process.pid))} ${text}`;
|
|
20
|
+
};
|
|
21
|
+
static GetPidFormatNoColour = (text) => {
|
|
22
|
+
return `${process.pid} ${text}`;
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
//#endregion
|
|
26
|
+
export { PidColours as t };
|
|
27
|
+
|
|
28
|
+
//# sourceMappingURL=pidColours-Cf8--nrU.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pidColours-Cf8--nrU.js","names":[],"sources":["../src/pidColours.ts"],"sourcesContent":["import { Chalk } from \"chalk\";\n\nexport class PidColours {\n private static readonly chalk = new Chalk({ level: 3 });\n\n private static readonly pidColours = new Map<\n number,\n (text: string) => string\n >();\n\n private static readonly randomChannel = () =>\n Math.floor(80 + Math.random() * 176);\n\n static readonly getPidColour = (pid: number) => {\n let colour = PidColours.pidColours.get(pid);\n\n if (!colour) {\n colour = PidColours.chalk.rgb(\n PidColours.randomChannel(),\n PidColours.randomChannel(),\n PidColours.randomChannel()\n );\n\n PidColours.pidColours.set(pid, colour);\n }\n\n return colour;\n };\n\n static readonly GetPidColour = () => {\n return PidColours.getPidColour(process.pid);\n };\n\n static readonly GetPidFormat = (text: string) => {\n const colour = PidColours.getPidColour(process.pid);\n return `${colour(String(process.pid))} ${text}`;\n };\n\n static readonly GetPidFormatNoColour = (text: string) => {\n return `${process.pid} ${text}`;\n };\n}\n"],"mappings":";;AAEA,IAAa,aAAb,MAAa,WAAW;CACpB,OAAwB,QAAQ,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;CAEtD,OAAwB,6BAAa,IAAI,IAGvC;CAEF,OAAwB,sBACpB,KAAK,MAAM,KAAK,KAAK,OAAO,IAAI,GAAG;CAEvC,OAAgB,gBAAgB,QAAgB;EAC5C,IAAI,SAAS,WAAW,WAAW,IAAI,GAAG;EAE1C,IAAI,CAAC,QAAQ;GACT,SAAS,WAAW,MAAM,IACtB,WAAW,cAAc,GACzB,WAAW,cAAc,GACzB,WAAW,cAAc,CAC7B;GAEA,WAAW,WAAW,IAAI,KAAK,MAAM;EACzC;EAEA,OAAO;CACX;CAEA,OAAgB,qBAAqB;EACjC,OAAO,WAAW,aAAa,QAAQ,GAAG;CAC9C;CAEA,OAAgB,gBAAgB,SAAiB;EAE7C,OAAO,GADQ,WAAW,aAAa,QAAQ,GACrC,CAAA,CAAO,OAAO,QAAQ,GAAG,CAAC,EAAE,GAAG;CAC7C;CAEA,OAAgB,wBAAwB,SAAiB;EACrD,OAAO,GAAG,QAAQ,IAAI,GAAG;CAC7B;AACJ"}
|
|
@@ -20,9 +20,42 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
20
20
|
enumerable: true
|
|
21
21
|
}) : target, mod));
|
|
22
22
|
//#endregion
|
|
23
|
+
let chalk = require("chalk");
|
|
24
|
+
//#region src/pidColours.ts
|
|
25
|
+
var PidColours = class PidColours {
|
|
26
|
+
static chalk = new chalk.Chalk({ level: 3 });
|
|
27
|
+
static pidColours = /* @__PURE__ */ new Map();
|
|
28
|
+
static randomChannel = () => Math.floor(80 + Math.random() * 176);
|
|
29
|
+
static getPidColour = (pid) => {
|
|
30
|
+
let colour = PidColours.pidColours.get(pid);
|
|
31
|
+
if (!colour) {
|
|
32
|
+
colour = PidColours.chalk.rgb(PidColours.randomChannel(), PidColours.randomChannel(), PidColours.randomChannel());
|
|
33
|
+
PidColours.pidColours.set(pid, colour);
|
|
34
|
+
}
|
|
35
|
+
return colour;
|
|
36
|
+
};
|
|
37
|
+
static GetPidColour = () => {
|
|
38
|
+
return PidColours.getPidColour(process.pid);
|
|
39
|
+
};
|
|
40
|
+
static GetPidFormat = (text) => {
|
|
41
|
+
return `${PidColours.getPidColour(process.pid)(String(process.pid))} ${text}`;
|
|
42
|
+
};
|
|
43
|
+
static GetPidFormatNoColour = (text) => {
|
|
44
|
+
return `${process.pid} ${text}`;
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
//#endregion
|
|
48
|
+
Object.defineProperty(exports, "PidColours", {
|
|
49
|
+
enumerable: true,
|
|
50
|
+
get: function() {
|
|
51
|
+
return PidColours;
|
|
52
|
+
}
|
|
53
|
+
});
|
|
23
54
|
Object.defineProperty(exports, "__toESM", {
|
|
24
55
|
enumerable: true,
|
|
25
56
|
get: function() {
|
|
26
57
|
return __toESM;
|
|
27
58
|
}
|
|
28
59
|
});
|
|
60
|
+
|
|
61
|
+
//# sourceMappingURL=pidColours-uEpdtVfi.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pidColours-uEpdtVfi.cjs","names":["Chalk"],"sources":["../src/pidColours.ts"],"sourcesContent":["import { Chalk } from \"chalk\";\n\nexport class PidColours {\n private static readonly chalk = new Chalk({ level: 3 });\n\n private static readonly pidColours = new Map<\n number,\n (text: string) => string\n >();\n\n private static readonly randomChannel = () =>\n Math.floor(80 + Math.random() * 176);\n\n static readonly getPidColour = (pid: number) => {\n let colour = PidColours.pidColours.get(pid);\n\n if (!colour) {\n colour = PidColours.chalk.rgb(\n PidColours.randomChannel(),\n PidColours.randomChannel(),\n PidColours.randomChannel()\n );\n\n PidColours.pidColours.set(pid, colour);\n }\n\n return colour;\n };\n\n static readonly GetPidColour = () => {\n return PidColours.getPidColour(process.pid);\n };\n\n static readonly GetPidFormat = (text: string) => {\n const colour = PidColours.getPidColour(process.pid);\n return `${colour(String(process.pid))} ${text}`;\n };\n\n static readonly GetPidFormatNoColour = (text: string) => {\n return `${process.pid} ${text}`;\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAEA,IAAa,aAAb,MAAa,WAAW;CACpB,OAAwB,QAAQ,IAAIA,MAAAA,MAAM,EAAE,OAAO,EAAE,CAAC;CAEtD,OAAwB,6BAAa,IAAI,IAGvC;CAEF,OAAwB,sBACpB,KAAK,MAAM,KAAK,KAAK,OAAO,IAAI,GAAG;CAEvC,OAAgB,gBAAgB,QAAgB;EAC5C,IAAI,SAAS,WAAW,WAAW,IAAI,GAAG;EAE1C,IAAI,CAAC,QAAQ;GACT,SAAS,WAAW,MAAM,IACtB,WAAW,cAAc,GACzB,WAAW,cAAc,GACzB,WAAW,cAAc,CAC7B;GAEA,WAAW,WAAW,IAAI,KAAK,MAAM;EACzC;EAEA,OAAO;CACX;CAEA,OAAgB,qBAAqB;EACjC,OAAO,WAAW,aAAa,QAAQ,GAAG;CAC9C;CAEA,OAAgB,gBAAgB,SAAiB;EAE7C,OAAO,GADQ,WAAW,aAAa,QAAQ,GACrC,CAAA,CAAO,OAAO,QAAQ,GAAG,CAAC,EAAE,GAAG;CAC7C;CAEA,OAAgB,wBAAwB,SAAiB;EACrD,OAAO,GAAG,QAAQ,IAAI,GAAG;CAC7B;AACJ"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nsshunt/stsutils",
|
|
3
|
-
"version": "1.19.
|
|
3
|
+
"version": "1.19.156",
|
|
4
4
|
"description": "STS Utils",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.cjs",
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
"@typescript-eslint/eslint-plugin": "^8.71.0",
|
|
61
61
|
"@typescript-eslint/parser": "^8.71.0",
|
|
62
62
|
"chalk": "^5.6.2",
|
|
63
|
-
"eslint": "^10.
|
|
63
|
+
"eslint": "^10.12.0",
|
|
64
64
|
"globals": "^17.13.0",
|
|
65
65
|
"typescript": "^6.0.3",
|
|
66
66
|
"vite": "^8.3.2",
|
package/types/index.d.ts
CHANGED
package/types/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC;AAEhC,eAAO,MAAM,MAAM,SAGgB,CAAC"}
|
package/types/node.d.ts
CHANGED
package/types/node.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,
|
|
1
|
+
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC"}
|
package/types/pidColours.d.ts
CHANGED
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
import winston from "winston";
|
|
2
1
|
export declare class PidColours {
|
|
3
2
|
private static readonly chalk;
|
|
4
3
|
private static readonly pidColours;
|
|
5
4
|
private static readonly randomChannel;
|
|
6
|
-
|
|
5
|
+
static readonly getPidColour: (pid: number) => (text: string) => string;
|
|
7
6
|
static readonly GetPidColour: () => (text: string) => string;
|
|
8
7
|
static readonly GetPidFormat: (text: string) => string;
|
|
9
8
|
static readonly GetPidFormatNoColour: (text: string) => string;
|
|
10
|
-
static readonly pidFormatNoColour: winston.Logform.FormatWrap;
|
|
11
|
-
static readonly pidFormat: winston.Logform.FormatWrap;
|
|
12
9
|
}
|
|
13
10
|
//# sourceMappingURL=pidColours.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pidColours.d.ts","sourceRoot":"","sources":["../src/pidColours.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pidColours.d.ts","sourceRoot":"","sources":["../src/pidColours.ts"],"names":[],"mappings":"AAEA,qBAAa,UAAU;IACnB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAA2B;IAExD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAG9B;IAEJ,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CACI;IAEzC,MAAM,CAAC,QAAQ,CAAC,YAAY,GAAI,KAAK,MAAM,YANhC,MAAM,KAAK,MAAM,CAoB1B;IAEF,MAAM,CAAC,QAAQ,CAAC,YAAY,eAtBjB,MAAM,KAAK,MAAM,CAwB1B;IAEF,MAAM,CAAC,QAAQ,CAAC,YAAY,GAAI,MAAM,MAAM,YAG1C;IAEF,MAAM,CAAC,QAAQ,CAAC,oBAAoB,GAAI,MAAM,MAAM,YAElD;CACL"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import winston from "winston";
|
|
2
|
+
export declare class PidColoursNode {
|
|
3
|
+
static readonly pidFormatNoColourWinstonFormatter: winston.Logform.FormatWrap;
|
|
4
|
+
static readonly pidFormatWinstonFormatter: winston.Logform.FormatWrap;
|
|
5
|
+
static readonly CreateRawWinstonLogger: (level?: string, withColour?: boolean) => winston.Logger;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=pidColoursNode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pidColoursNode.d.ts","sourceRoot":"","sources":["../src/pidColoursNode.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAG9B,qBAAa,cAAc;IACvB,MAAM,CAAC,QAAQ,CAAC,iCAAiC,6BAK/C;IAEF,MAAM,CAAC,QAAQ,CAAC,yBAAyB,6BAItC;IAEH,MAAM,CAAC,QAAQ,CAAC,sBAAsB,GAClC,QAAO,MAAgB,EACvB,aAAY,OAAc,oBAuB5B;CACL"}
|