contensis-cli 1.3.1-beta.0 → 1.3.1-beta.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +78 -6
- package/dist/commands/copy.js +2 -2
- package/dist/commands/copy.js.map +2 -2
- package/dist/commands/create.js +1 -2
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/globalOptions.js +16 -4
- package/dist/commands/globalOptions.js.map +2 -2
- package/dist/commands/import.js +1 -1
- package/dist/commands/import.js.map +2 -2
- package/dist/commands/index.js +4 -2
- package/dist/commands/index.js.map +2 -2
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/login.js +1 -2
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/push.js +102 -10
- package/dist/commands/push.js.map +3 -3
- package/dist/commands/remove.js +15 -4
- package/dist/commands/remove.js.map +2 -2
- package/dist/commands/set.js +2 -4
- package/dist/commands/set.js.map +1 -1
- package/dist/commands/update.js +70 -0
- package/dist/commands/update.js.map +7 -0
- package/dist/factories/RequestHandlerFactory.js +12 -5
- package/dist/factories/RequestHandlerFactory.js.map +2 -2
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/localisation/en-GB.js +19 -2
- package/dist/localisation/en-GB.js.map +2 -2
- package/dist/mappers/ContensisCliService-to-RequestHanderSiteConfigYaml.js.map +1 -1
- package/dist/mappers/DevInit-to-CIWorkflow.js +11 -6
- package/dist/mappers/DevInit-to-CIWorkflow.js.map +1 -1
- package/dist/mappers/DevRequests-to-RequestHanderCliArgs.js +4 -2
- package/dist/mappers/DevRequests-to-RequestHanderCliArgs.js.map +1 -1
- package/dist/models/CliService.d.js.map +1 -1
- package/dist/providers/CredentialProvider.js +11 -4
- package/dist/providers/CredentialProvider.js.map +2 -2
- package/dist/providers/GitHubCliModuleProvider.js +8 -10
- package/dist/providers/GitHubCliModuleProvider.js.map +1 -1
- package/dist/providers/HttpProvider.js +5 -4
- package/dist/providers/HttpProvider.js.map +1 -1
- package/dist/providers/ManifestProvider.js +1 -4
- package/dist/providers/ManifestProvider.js.map +1 -1
- package/dist/providers/SessionCacheProvider.js +26 -8
- package/dist/providers/SessionCacheProvider.js.map +2 -2
- package/dist/providers/file-provider.js +13 -11
- package/dist/providers/file-provider.js.map +1 -1
- package/dist/services/ContensisAuthService.js +1 -2
- package/dist/services/ContensisAuthService.js.map +1 -1
- package/dist/services/ContensisCliService.js +194 -127
- package/dist/services/ContensisCliService.js.map +3 -3
- package/dist/services/ContensisDevService.js +15 -18
- package/dist/services/ContensisDevService.js.map +2 -2
- package/dist/services/ContensisRoleService.js +8 -10
- package/dist/services/ContensisRoleService.js.map +1 -1
- package/dist/shell.js +31 -15
- package/dist/shell.js.map +2 -2
- package/dist/util/api-ids.js.map +1 -1
- package/dist/util/console.printer.js +15 -17
- package/dist/util/console.printer.js.map +2 -2
- package/dist/util/csv.formatter.js +8 -15
- package/dist/util/csv.formatter.js.map +2 -2
- package/dist/util/diff.js +6 -4
- package/dist/util/diff.js.map +1 -1
- package/dist/util/dotenv.js +1 -2
- package/dist/util/dotenv.js.map +1 -1
- package/dist/util/error.js.map +1 -1
- package/dist/util/fetch.js +4 -0
- package/dist/util/fetch.js.map +1 -1
- package/dist/util/git.js +8 -8
- package/dist/util/git.js.map +1 -1
- package/dist/util/gitignore.js +4 -0
- package/dist/util/gitignore.js.map +1 -1
- package/dist/util/html.formatter.js +70 -0
- package/dist/util/html.formatter.js.map +7 -0
- package/dist/util/index.js +5 -1
- package/dist/util/index.js.map +2 -2
- package/dist/util/json.formatter.js +6 -4
- package/dist/util/json.formatter.js.map +1 -1
- package/dist/util/logger.js +47 -53
- package/dist/util/logger.js.map +2 -2
- package/dist/util/os.js +4 -0
- package/dist/util/os.js.map +1 -1
- package/dist/util/xml.formatter.js +4 -0
- package/dist/util/xml.formatter.js.map +1 -1
- package/dist/util/yaml.js +1 -2
- package/dist/util/yaml.js.map +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/esbuild.config.js +12 -16
- package/package.json +31 -32
- package/src/commands/copy.ts +3 -1
- package/src/commands/globalOptions.ts +10 -3
- package/src/commands/import.ts +2 -0
- package/src/commands/index.ts +4 -0
- package/src/commands/push.ts +125 -1
- package/src/commands/remove.ts +20 -0
- package/src/commands/update.ts +84 -0
- package/src/factories/RequestHandlerFactory.ts +1 -1
- package/src/localisation/en-GB.ts +16 -1
- package/src/models/CliService.d.ts +1 -1
- package/src/providers/CredentialProvider.ts +2 -2
- package/src/providers/SessionCacheProvider.ts +26 -2
- package/src/services/ContensisCliService.ts +187 -49
- package/src/services/ContensisDevService.ts +2 -2
- package/src/shell.ts +20 -9
- package/src/util/console.printer.ts +23 -19
- package/src/util/csv.formatter.ts +1 -1
- package/src/util/html.formatter.ts +52 -0
- package/src/util/index.ts +1 -1
- package/src/util/logger.ts +17 -16
- package/src/version.ts +1 -1
- package/tsconfig.json +1 -1
|
@@ -18,6 +18,10 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
18
|
return to;
|
|
19
19
|
};
|
|
20
20
|
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
21
25
|
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
22
26
|
mod
|
|
23
27
|
));
|
|
@@ -65,15 +69,12 @@ class GitHubCliModuleProvider {
|
|
|
65
69
|
const release = releases.find(
|
|
66
70
|
(r) => r.tag_name.toLowerCase() === version.toLowerCase()
|
|
67
71
|
);
|
|
68
|
-
if (release)
|
|
69
|
-
|
|
70
|
-
else
|
|
71
|
-
throw new Error(`No release for ${version} found`);
|
|
72
|
+
if (release) return release;
|
|
73
|
+
else throw new Error(`No release for ${version} found`);
|
|
72
74
|
} else if (latestErr && !latest) {
|
|
73
75
|
if ((latestResponse == null ? void 0 : latestResponse.status) === 404 && (releases == null ? void 0 : releases.length)) {
|
|
74
76
|
const release = releases.find((r) => r.prerelease) || releases[0];
|
|
75
|
-
if (release)
|
|
76
|
-
return release;
|
|
77
|
+
if (release) return release;
|
|
77
78
|
}
|
|
78
79
|
} else {
|
|
79
80
|
return latest;
|
|
@@ -102,8 +103,7 @@ class GitHubCliModuleProvider {
|
|
|
102
103
|
zipFile.extractAllTo(path);
|
|
103
104
|
(0, import_file_provider.removeFile)(filePath);
|
|
104
105
|
}
|
|
105
|
-
if (import_os.default.platform() !== "win32")
|
|
106
|
-
(0, import_file_provider.addExecutePermission)((0, import_file_provider.joinPath)(path, cmd));
|
|
106
|
+
if (import_os.default.platform() !== "win32") (0, import_file_provider.addExecutePermission)((0, import_file_provider.joinPath)(path, cmd));
|
|
107
107
|
} else
|
|
108
108
|
throw new Error(
|
|
109
109
|
`no asset found in release ${release.tag_name} for platform ${import_os.default.platform()}
|
|
@@ -112,6 +112,4 @@ ${release.html_url}`
|
|
|
112
112
|
}
|
|
113
113
|
}
|
|
114
114
|
var GitHubCliModuleProvider_default = GitHubCliModuleProvider;
|
|
115
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
116
|
-
0 && (module.exports = {});
|
|
117
115
|
//# sourceMappingURL=GitHubCliModuleProvider.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/providers/GitHubCliModuleProvider.ts"],
|
|
4
4
|
"sourcesContent": ["import os from 'os';\nimport Zip from 'adm-zip';\nimport type { Endpoints } from '@octokit/types';\nimport HttpProvider from '~/providers/HttpProvider';\nimport {\n addExecutePermission,\n checkDir,\n joinPath,\n removeDirectory,\n removeFile,\n} from './file-provider';\nimport { doRetry } from '~/util/fetch';\n\ntype GitHubApiRelease =\n Endpoints['GET /repos/{owner}/{repo}/releases/latest']['response']['data'];\n\nclass GitHubCliModuleProvider {\n http: HttpProvider;\n repo: string;\n baseUrl = 'https://api.github.com/repos';\n\n get releases_url() {\n return `${this.baseUrl}/${this.repo}/releases`;\n }\n get latest_release_url() {\n return `${this.baseUrl}/${this.repo}/releases/latest`;\n }\n\n download?: {\n tag: string;\n name: string;\n url: string;\n browser_url: string;\n };\n\n constructor(repo: string) {\n this.http = new HttpProvider();\n this.repo = repo;\n }\n\n async FindLatestRelease(version?: string) {\n const { http, latest_release_url, releases_url } = this;\n // return latest tag version is:\n\n const responses = await Promise.all([\n http.get<GitHubApiRelease>(latest_release_url, {\n doRetry: doRetry({ silent: true }),\n }),\n http.get<GitHubApiRelease[]>(releases_url),\n ]);\n\n const [latestErr, latest, latestResponse] = responses[0];\n const [releasesErr, releases] = responses[1];\n\n if (releasesErr) {\n throw new Error(`Unable to get releases`, { cause: releasesErr });\n } else if (!releases || releases.length === 0)\n throw new Error(`No releases available`);\n else if (version) {\n const release = releases.find(\n r => r.tag_name.toLowerCase() === version.toLowerCase()\n );\n if (release) return release;\n else throw new Error(`No release for ${version} found`);\n } else if (latestErr && !latest) {\n if (latestResponse?.status === 404 && releases?.length) {\n // No latest release, check releases for prerelease version, fallback to last release\n const release = releases.find(r => r.prerelease) || releases[0];\n\n if (release) return release;\n }\n } else {\n return latest;\n }\n }\n\n async DownloadRelease(\n release: GitHubApiRelease,\n {\n cmd,\n path,\n platforms,\n unzip = true,\n }: {\n cmd: string;\n path: string;\n unzip?: boolean;\n platforms: [NodeJS.Platform, string][];\n }\n ) {\n // find os-specific asset\n const platform = platforms.find(p => p[0] === os.platform()) || [\n os.platform(),\n os.platform(),\n ];\n\n const asset = release.assets.find(r =>\n r.name.toLowerCase().includes(platform[1])\n );\n\n // download asset\n if (asset) {\n const filePath = joinPath(path, asset.name);\n removeDirectory(path);\n checkDir(filePath);\n await this.http.downloadFile(asset.browser_download_url, filePath);\n\n if (unzip && asset.name.endsWith('.zip')) {\n // unzip the downloaded file\n const zipFile = new Zip(filePath);\n zipFile.extractAllTo(path);\n\n // delete the downloaded zip file\n removeFile(filePath);\n }\n\n if (os.platform() !== 'win32') addExecutePermission(joinPath(path, cmd));\n } else\n throw new Error(\n `no asset found in release ${\n release.tag_name\n } for platform ${os.platform()}\\n${release.html_url}`\n );\n }\n}\n\nexport default GitHubCliModuleProvider;\n"],
|
|
5
|
-
"mappings": "
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAAe;AACf,qBAAgB;AAEhB,0BAAyB;AACzB,2BAMO;AACP,mBAAwB;AAKxB,MAAM,wBAAwB;AAAA,EAC5B;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EAEV,IAAI,eAAe;AACjB,WAAO,GAAG,KAAK,OAAO,IAAI,KAAK,IAAI;AAAA,EACrC;AAAA,EACA,IAAI,qBAAqB;AACvB,WAAO,GAAG,KAAK,OAAO,IAAI,KAAK,IAAI;AAAA,EACrC;AAAA,EAEA;AAAA,EAOA,YAAY,MAAc;AACxB,SAAK,OAAO,IAAI,oBAAAA,QAAa;AAC7B,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,MAAM,kBAAkB,SAAkB;AACxC,UAAM,EAAE,MAAM,oBAAoB,aAAa,IAAI;AAGnD,UAAM,YAAY,MAAM,QAAQ,IAAI;AAAA,MAClC,KAAK,IAAsB,oBAAoB;AAAA,QAC7C,aAAS,sBAAQ,EAAE,QAAQ,KAAK,CAAC;AAAA,MACnC,CAAC;AAAA,MACD,KAAK,IAAwB,YAAY;AAAA,IAC3C,CAAC;AAED,UAAM,CAAC,WAAW,QAAQ,cAAc,IAAI,UAAU,CAAC;AACvD,UAAM,CAAC,aAAa,QAAQ,IAAI,UAAU,CAAC;AAE3C,QAAI,aAAa;AACf,YAAM,IAAI,MAAM,0BAA0B,EAAE,OAAO,YAAY,CAAC;AAAA,IAClE,WAAW,CAAC,YAAY,SAAS,WAAW;AAC1C,YAAM,IAAI,MAAM,uBAAuB;AAAA,aAChC,SAAS;AAChB,YAAM,UAAU,SAAS;AAAA,QACvB,OAAK,EAAE,SAAS,YAAY,MAAM,QAAQ,YAAY;AAAA,MACxD;AACA,UAAI,QAAS,QAAO;AAAA,UACf,OAAM,IAAI,MAAM,kBAAkB,OAAO,QAAQ;AAAA,IACxD,WAAW,aAAa,CAAC,QAAQ;AAC/B,WAAI,iDAAgB,YAAW,QAAO,qCAAU,SAAQ;AAEtD,cAAM,UAAU,SAAS,KAAK,OAAK,EAAE,UAAU,KAAK,SAAS,CAAC;AAE9D,YAAI,QAAS,QAAO;AAAA,MACtB;AAAA,IACF,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEA,MAAM,gBACJ,SACA;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,EACV,GAMA;AAEA,UAAM,WAAW,UAAU,KAAK,OAAK,EAAE,CAAC,MAAM,UAAAC,QAAG,SAAS,CAAC,KAAK;AAAA,MAC9D,UAAAA,QAAG,SAAS;AAAA,MACZ,UAAAA,QAAG,SAAS;AAAA,IACd;AAEA,UAAM,QAAQ,QAAQ,OAAO;AAAA,MAAK,OAChC,EAAE,KAAK,YAAY,EAAE,SAAS,SAAS,CAAC,CAAC;AAAA,IAC3C;AAGA,QAAI,OAAO;AACT,YAAM,eAAW,+BAAS,MAAM,MAAM,IAAI;AAC1C,gDAAgB,IAAI;AACpB,yCAAS,QAAQ;AACjB,YAAM,KAAK,KAAK,aAAa,MAAM,sBAAsB,QAAQ;AAEjE,UAAI,SAAS,MAAM,KAAK,SAAS,MAAM,GAAG;AAExC,cAAM,UAAU,IAAI,eAAAC,QAAI,QAAQ;AAChC,gBAAQ,aAAa,IAAI;AAGzB,6CAAW,QAAQ;AAAA,MACrB;AAEA,UAAI,UAAAD,QAAG,SAAS,MAAM,QAAS,oDAAqB,+BAAS,MAAM,GAAG,CAAC;AAAA,IACzE;AACE,YAAM,IAAI;AAAA,QACR,6BACE,QAAQ,QACV,iBAAiB,UAAAA,QAAG,SAAS,CAAC;AAAA,EAAK,QAAQ,QAAQ;AAAA,MACrD;AAAA,EACJ;AACF;AAEA,IAAO,kCAAQ;",
|
|
6
6
|
"names": ["HttpProvider", "os", "Zip"]
|
|
7
7
|
}
|
|
@@ -18,6 +18,10 @@ var __copyProps = (to2, from, except, desc) => {
|
|
|
18
18
|
return to2;
|
|
19
19
|
};
|
|
20
20
|
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
21
25
|
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
22
26
|
mod
|
|
23
27
|
));
|
|
@@ -43,8 +47,7 @@ class HttpProvider {
|
|
|
43
47
|
const [error, response] = await (0, import_await_to_js.default)((0, import_fetch.enhancedFetch)(uri, init));
|
|
44
48
|
if (response && !error) {
|
|
45
49
|
const [bodyError, text] = await (0, import_await_to_js.default)(response.text());
|
|
46
|
-
if (bodyError)
|
|
47
|
-
return [bodyError, void 0, response];
|
|
50
|
+
if (bodyError) return [bodyError, void 0, response];
|
|
48
51
|
if ((0, import_util.isJson)(text)) {
|
|
49
52
|
const err = !response.status || !response.ok ? (0, import_util.tryParse)(text) : void 0;
|
|
50
53
|
const payload = response.status && response.ok ? (0, import_util.tryParse)(text) : void 0;
|
|
@@ -67,6 +70,4 @@ class HttpProvider {
|
|
|
67
70
|
}
|
|
68
71
|
}
|
|
69
72
|
var HttpProvider_default = HttpProvider;
|
|
70
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
71
|
-
0 && (module.exports = {});
|
|
72
73
|
//# sourceMappingURL=HttpProvider.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/providers/HttpProvider.ts"],
|
|
4
4
|
"sourcesContent": ["import to from 'await-to-js';\nimport { FetchInit } from 'enterprise-fetch';\nimport fs from 'fs';\nimport { Readable } from 'stream';\nimport { finished } from 'stream/promises';\n\nimport { isJson, tryParse } from '~/util';\nimport { enhancedFetch } from '~/util/fetch';\nclass HttpProvider {\n constructor() {}\n\n async get<T = any>(url: string, init: FetchInit = {}) {\n return this.fetch<T>(url, { method: 'GET', ...init });\n }\n\n async fetch<T = any>(\n uri: string,\n init: FetchInit = {}\n ): Promise<[Error | null, T | undefined, Response | undefined]> {\n const [error, response] = await to(enhancedFetch(uri, init));\n\n if (response && !error) {\n const [bodyError, text] = await to(response.text());\n if (bodyError) return [bodyError, undefined, response];\n if (isJson(text)) {\n const err =\n !response.status || !response.ok ? tryParse(text) : undefined;\n const payload =\n response.status && response.ok ? tryParse(text) : undefined;\n return [err, payload, response];\n }\n return [\n response.ok ? null : new Error(text),\n response.ok ? (text as unknown as T) : undefined,\n response,\n ];\n }\n return [error, undefined, response];\n }\n\n async downloadFile(url: string, destination: string) {\n const res = await fetch(url);\n if (res.ok && res.body !== null) {\n const fileStream = fs.createWriteStream(destination, { flags: 'wx' });\n await finished(Readable.fromWeb(res.body as any).pipe(fileStream));\n }\n }\n}\n\nexport default HttpProvider;\n"],
|
|
5
|
-
"mappings": "
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yBAAe;AAEf,gBAAe;AACf,oBAAyB;AACzB,sBAAyB;AAEzB,kBAAiC;AACjC,mBAA8B;AAC9B,MAAM,aAAa;AAAA,EACjB,cAAc;AAAA,EAAC;AAAA,EAEf,MAAM,IAAa,KAAa,OAAkB,CAAC,GAAG;AACpD,WAAO,KAAK,MAAS,KAAK,EAAE,QAAQ,OAAO,GAAG,KAAK,CAAC;AAAA,EACtD;AAAA,EAEA,MAAM,MACJ,KACA,OAAkB,CAAC,GAC2C;AAC9D,UAAM,CAAC,OAAO,QAAQ,IAAI,UAAM,mBAAAA,aAAG,4BAAc,KAAK,IAAI,CAAC;AAE3D,QAAI,YAAY,CAAC,OAAO;AACtB,YAAM,CAAC,WAAW,IAAI,IAAI,UAAM,mBAAAA,SAAG,SAAS,KAAK,CAAC;AAClD,UAAI,UAAW,QAAO,CAAC,WAAW,QAAW,QAAQ;AACrD,cAAI,oBAAO,IAAI,GAAG;AAChB,cAAM,MACJ,CAAC,SAAS,UAAU,CAAC,SAAS,SAAK,sBAAS,IAAI,IAAI;AACtD,cAAM,UACJ,SAAS,UAAU,SAAS,SAAK,sBAAS,IAAI,IAAI;AACpD,eAAO,CAAC,KAAK,SAAS,QAAQ;AAAA,MAChC;AACA,aAAO;AAAA,QACL,SAAS,KAAK,OAAO,IAAI,MAAM,IAAI;AAAA,QACnC,SAAS,KAAM,OAAwB;AAAA,QACvC;AAAA,MACF;AAAA,IACF;AACA,WAAO,CAAC,OAAO,QAAW,QAAQ;AAAA,EACpC;AAAA,EAEA,MAAM,aAAa,KAAa,aAAqB;AACnD,UAAM,MAAM,MAAM,MAAM,GAAG;AAC3B,QAAI,IAAI,MAAM,IAAI,SAAS,MAAM;AAC/B,YAAM,aAAa,UAAAC,QAAG,kBAAkB,aAAa,EAAE,OAAO,KAAK,CAAC;AACpE,gBAAM,0BAAS,uBAAS,QAAQ,IAAI,IAAW,EAAE,KAAK,UAAU,CAAC;AAAA,IACnE;AAAA,EACF;AACF;AAEA,IAAO,uBAAQ;",
|
|
6
6
|
"names": ["to", "fs"]
|
|
7
7
|
}
|
|
@@ -38,8 +38,7 @@ class ManifestProvider {
|
|
|
38
38
|
return (_a = this.manifest) == null ? void 0 : _a[name];
|
|
39
39
|
}
|
|
40
40
|
writeModule(name, moduleInfo) {
|
|
41
|
-
if (this.manifest)
|
|
42
|
-
this.manifest[name] = moduleInfo;
|
|
41
|
+
if (this.manifest) this.manifest[name] = moduleInfo;
|
|
43
42
|
else
|
|
44
43
|
this.manifest = {
|
|
45
44
|
[name]: moduleInfo
|
|
@@ -48,6 +47,4 @@ class ManifestProvider {
|
|
|
48
47
|
}
|
|
49
48
|
}
|
|
50
49
|
var ManifestProvider_default = ManifestProvider;
|
|
51
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
52
|
-
0 && (module.exports = {});
|
|
53
50
|
//# sourceMappingURL=ManifestProvider.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/providers/ManifestProvider.ts"],
|
|
4
4
|
"sourcesContent": ["import { tryParse } from '~/util';\nimport { appPath, readFile, writeFile } from './file-provider';\n\nexport type CliModule = {\n github: string;\n version: string;\n install?: string;\n cmd?: string;\n};\n\ntype CliManifest = {\n [moduleName: string]: CliModule;\n};\n\nconst MANIFEST_PATH = appPath('cli-manifest.json');\n\nclass ManifestProvider {\n private manifest: CliManifest;\n\n constructor() {\n const manifest = tryParse(readFile(MANIFEST_PATH));\n this.manifest = manifest || {};\n }\n\n get() {\n return this.manifest;\n }\n\n getModule(name: string) {\n return this.manifest?.[name];\n }\n writeModule(name: string, moduleInfo: CliModule) {\n if (this.manifest) this.manifest[name] = moduleInfo;\n else\n this.manifest = {\n [name]: moduleInfo,\n };\n\n writeFile(MANIFEST_PATH, JSON.stringify(this.manifest, null, 2));\n }\n}\n\nexport default ManifestProvider;\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAyB;AACzB,2BAA6C;AAa7C,MAAM,oBAAgB,8BAAQ,mBAAmB;AAEjD,MAAM,iBAAiB;AAAA,EACb;AAAA,EAER,cAAc;AACZ,UAAM,eAAW,0BAAS,+BAAS,aAAa,CAAC;AACjD,SAAK,WAAW,YAAY,CAAC;AAAA,EAC/B;AAAA,EAEA,MAAM;AACJ,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,UAAU,MAAc;AA5B1B;AA6BI,YAAO,UAAK,aAAL,mBAAgB;AAAA,EACzB;AAAA,EACA,YAAY,MAAc,YAAuB;AAC/C,QAAI,KAAK
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAyB;AACzB,2BAA6C;AAa7C,MAAM,oBAAgB,8BAAQ,mBAAmB;AAEjD,MAAM,iBAAiB;AAAA,EACb;AAAA,EAER,cAAc;AACZ,UAAM,eAAW,0BAAS,+BAAS,aAAa,CAAC;AACjD,SAAK,WAAW,YAAY,CAAC;AAAA,EAC/B;AAAA,EAEA,MAAM;AACJ,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,UAAU,MAAc;AA5B1B;AA6BI,YAAO,UAAK,aAAL,mBAAgB;AAAA,EACzB;AAAA,EACA,YAAY,MAAc,YAAuB;AAC/C,QAAI,KAAK,SAAU,MAAK,SAAS,IAAI,IAAI;AAAA;AAEvC,WAAK,WAAW;AAAA,QACd,CAAC,IAAI,GAAG;AAAA,MACV;AAEF,wCAAU,eAAe,KAAK,UAAU,KAAK,UAAU,MAAM,CAAC,CAAC;AAAA,EACjE;AACF;AAEA,IAAO,2BAAQ;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -18,6 +18,10 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
18
|
return to;
|
|
19
19
|
};
|
|
20
20
|
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
21
25
|
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
22
26
|
mod
|
|
23
27
|
));
|
|
@@ -41,7 +45,7 @@ class SessionCacheProvider {
|
|
|
41
45
|
constructor() {
|
|
42
46
|
this.localFilePath = import_path.default.join(import_file_provider.appRootDir, "environments.json");
|
|
43
47
|
this.cache = {
|
|
44
|
-
currentTimestamp: new Date().toISOString(),
|
|
48
|
+
currentTimestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
45
49
|
environments: {},
|
|
46
50
|
history: []
|
|
47
51
|
};
|
|
@@ -51,18 +55,19 @@ class SessionCacheProvider {
|
|
|
51
55
|
try {
|
|
52
56
|
if (import_fs.default.existsSync(this.localFilePath)) {
|
|
53
57
|
const raw = import_fs.default.readFileSync(this.localFilePath, "utf-8");
|
|
54
|
-
if ((0, import_util.isJson)(raw))
|
|
55
|
-
this.cache = (0, import_util.tryParse)(raw);
|
|
58
|
+
if ((0, import_util.isJson)(raw)) this.cache = (0, import_util.tryParse)(raw);
|
|
56
59
|
} else {
|
|
57
60
|
this.WriteCacheToDisk();
|
|
58
61
|
}
|
|
59
62
|
} catch (ex) {
|
|
63
|
+
import_logger.Logger.error(ex);
|
|
60
64
|
}
|
|
61
65
|
};
|
|
62
66
|
WriteCacheToDisk = () => {
|
|
63
67
|
try {
|
|
64
68
|
import_fs.default.writeFileSync(this.localFilePath, JSON.stringify(this.cache, null, 2));
|
|
65
69
|
} catch (ex) {
|
|
70
|
+
import_logger.Logger.error(ex);
|
|
66
71
|
}
|
|
67
72
|
};
|
|
68
73
|
Get = () => (0, import_cloneDeep.default)(this.cache);
|
|
@@ -74,10 +79,9 @@ class SessionCacheProvider {
|
|
|
74
79
|
}
|
|
75
80
|
if (key === "projects")
|
|
76
81
|
return Array.isArray(val) ? [.../* @__PURE__ */ new Set([...val, ...src])] : src;
|
|
77
|
-
if (Array.isArray(val))
|
|
78
|
-
return val.concat(src);
|
|
82
|
+
if (Array.isArray(val)) return val.concat(src);
|
|
79
83
|
});
|
|
80
|
-
this.cache.currentTimestamp = new Date().toISOString();
|
|
84
|
+
this.cache.currentTimestamp = (/* @__PURE__ */ new Date()).toISOString();
|
|
81
85
|
this.WriteCacheToDisk();
|
|
82
86
|
} catch (ex) {
|
|
83
87
|
import_logger.Logger.error(`Problem updating environments.json`);
|
|
@@ -104,8 +108,22 @@ class SessionCacheProvider {
|
|
|
104
108
|
}
|
|
105
109
|
return this.Get();
|
|
106
110
|
};
|
|
111
|
+
RemoveEnv = (env) => {
|
|
112
|
+
try {
|
|
113
|
+
const environment = this.cache.environments[env || ""];
|
|
114
|
+
if (environment) delete this.cache.environments[env || ""];
|
|
115
|
+
this.Update({
|
|
116
|
+
currentEnvironment: this.cache.currentEnvironment === env ? "" : this.cache.currentEnvironment,
|
|
117
|
+
environments: this.cache.environments
|
|
118
|
+
});
|
|
119
|
+
} catch (ex) {
|
|
120
|
+
import_logger.Logger.error(
|
|
121
|
+
`Problem removing environment "${env}" in environments.json`
|
|
122
|
+
);
|
|
123
|
+
import_logger.Logger.error(ex);
|
|
124
|
+
}
|
|
125
|
+
return this.Get();
|
|
126
|
+
};
|
|
107
127
|
}
|
|
108
128
|
var SessionCacheProvider_default = SessionCacheProvider;
|
|
109
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
110
|
-
0 && (module.exports = {});
|
|
111
129
|
//# sourceMappingURL=SessionCacheProvider.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/providers/SessionCacheProvider.ts"],
|
|
4
|
-
"sourcesContent": ["import fs from 'fs';\nimport path from 'path';\nimport clone from 'lodash/cloneDeep';\nimport mergeWith from 'lodash/mergeWith';\nimport unionBy from 'lodash/unionBy';\nimport { appRootDir } from './file-provider';\nimport { isJson, tryParse } from '~/util';\nimport { Logger } from '~/util/logger';\n\nclass SessionCacheProvider {\n private localFilePath: string;\n private cache = {} as SessionCache;\n\n constructor() {\n this.localFilePath = path.join(appRootDir, 'environments.json');\n this.cache = {\n currentTimestamp: new Date().toISOString(),\n environments: {},\n history: [],\n };\n this.ReadCacheFromDisk();\n }\n\n private ReadCacheFromDisk = () => {\n try {\n if (fs.existsSync(this.localFilePath)) {\n const raw = fs.readFileSync(this.localFilePath, 'utf-8');\n if (isJson(raw)) this.cache = tryParse(raw);\n } else {\n this.WriteCacheToDisk();\n }\n } catch (ex) {\n // Problem reading or parsing cache file\n }\n };\n\n private WriteCacheToDisk = () => {\n try {\n fs.writeFileSync(this.localFilePath, JSON.stringify(this.cache, null, 2));\n } catch (ex) {\n // Problem writing session cache to file\n }\n };\n\n Get = () => clone(this.cache);\n\n Update = (updateContent: Partial<SessionCache>) => {\n try {\n this.cache = mergeWith(this.cache, updateContent, (val, src, key) => {\n if (\n key === 'history' &&\n ((src?.[0] &&\n typeof src[0] === 'object' &&\n 'createdDate' in src[0]) ||\n (val?.[0] && typeof val[0] === 'object' && 'createdDate' in val[0]))\n ) {\n return unionBy(val, src, 'createdDate');\n }\n if (key === 'projects')\n return Array.isArray(val) ? [...new Set([...val, ...src])] : src;\n\n if (Array.isArray(val)) return val.concat(src);\n });\n this.cache.currentTimestamp = new Date().toISOString();\n this.WriteCacheToDisk();\n } catch (ex: any) {\n // Problem merging cache data for update\n Logger.error(`Problem updating environments.json`);\n Logger.error(ex);\n }\n return this.Get();\n };\n\n UpdateEnv = (\n updateContent: Partial<EnvironmentCache>,\n env = this.cache.currentEnvironment,\n setCurrentEnv = true\n ) => {\n try {\n const environment = this.cache.environments[env || ''];\n\n this.cache.environments[env || ''] = {\n ...environment,\n ...updateContent,\n };\n this.Update({\n currentEnvironment: setCurrentEnv ? env : this.cache.currentEnvironment,\n environments: this.cache.environments,\n });\n } catch (ex: any) {\n // Problem merging cache data for update\n Logger.error(\n `Problem updating environment \"${env}\" in environments.json`\n );\n Logger.error(ex);\n }\n return this.Get();\n };\n}\n\nexport default SessionCacheProvider;\n"],
|
|
5
|
-
"mappings": "
|
|
4
|
+
"sourcesContent": ["import fs from 'fs';\nimport path from 'path';\nimport clone from 'lodash/cloneDeep';\nimport mergeWith from 'lodash/mergeWith';\nimport unionBy from 'lodash/unionBy';\nimport { appRootDir } from './file-provider';\nimport { isJson, tryParse } from '~/util';\nimport { Logger } from '~/util/logger';\n\nclass SessionCacheProvider {\n private localFilePath: string;\n private cache = {} as SessionCache;\n\n constructor() {\n this.localFilePath = path.join(appRootDir, 'environments.json');\n this.cache = {\n currentTimestamp: new Date().toISOString(),\n environments: {},\n history: [],\n };\n this.ReadCacheFromDisk();\n }\n\n private ReadCacheFromDisk = () => {\n try {\n if (fs.existsSync(this.localFilePath)) {\n const raw = fs.readFileSync(this.localFilePath, 'utf-8');\n if (isJson(raw)) this.cache = tryParse(raw);\n } else {\n this.WriteCacheToDisk();\n }\n } catch (ex: any) {\n // Problem reading or parsing cache file\n Logger.error(ex);\n }\n };\n\n private WriteCacheToDisk = () => {\n try {\n fs.writeFileSync(this.localFilePath, JSON.stringify(this.cache, null, 2));\n } catch (ex: any) {\n // Problem writing session cache to file\n Logger.error(ex);\n }\n };\n\n Get = () => clone(this.cache);\n\n Update = (updateContent: Partial<SessionCache>) => {\n try {\n this.cache = mergeWith(this.cache, updateContent, (val, src, key) => {\n if (\n key === 'history' &&\n ((src?.[0] &&\n typeof src[0] === 'object' &&\n 'createdDate' in src[0]) ||\n (val?.[0] && typeof val[0] === 'object' && 'createdDate' in val[0]))\n ) {\n return unionBy(val, src, 'createdDate');\n }\n if (key === 'projects')\n return Array.isArray(val) ? [...new Set([...val, ...src])] : src;\n\n if (Array.isArray(val)) return val.concat(src);\n });\n this.cache.currentTimestamp = new Date().toISOString();\n this.WriteCacheToDisk();\n } catch (ex: any) {\n // Problem merging cache data for update\n Logger.error(`Problem updating environments.json`);\n Logger.error(ex);\n }\n return this.Get();\n };\n\n UpdateEnv = (\n updateContent: Partial<EnvironmentCache>,\n env = this.cache.currentEnvironment,\n setCurrentEnv = true\n ) => {\n try {\n const environment = this.cache.environments[env || ''];\n\n this.cache.environments[env || ''] = {\n ...environment,\n ...updateContent,\n };\n this.Update({\n currentEnvironment: setCurrentEnv ? env : this.cache.currentEnvironment,\n environments: this.cache.environments,\n });\n } catch (ex: any) {\n // Problem merging cache data for update\n Logger.error(\n `Problem updating environment \"${env}\" in environments.json`\n );\n Logger.error(ex);\n }\n return this.Get();\n };\n\n RemoveEnv = (env: string) => {\n try {\n const environment = this.cache.environments[env || ''];\n if (environment) delete this.cache.environments[env || ''];\n\n this.Update({\n currentEnvironment:\n this.cache.currentEnvironment === env\n ? ''\n : this.cache.currentEnvironment,\n environments: this.cache.environments,\n });\n } catch (ex: any) {\n // Problem merging cache data for update\n Logger.error(\n `Problem removing environment \"${env}\" in environments.json`\n );\n Logger.error(ex);\n }\n return this.Get();\n };\n}\n\nexport default SessionCacheProvider;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["path", "fs", "clone", "mergeWith", "unionBy"]
|
|
7
7
|
}
|
|
@@ -18,6 +18,10 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
18
|
return to;
|
|
19
19
|
};
|
|
20
20
|
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
21
25
|
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
22
26
|
mod
|
|
23
27
|
));
|
|
@@ -114,28 +118,26 @@ const checkDir = (filePath) => {
|
|
|
114
118
|
const appPath = (filePath) => import_path.default.isAbsolute(filePath) ? filePath : import_path.default.join(appRootDir, filePath);
|
|
115
119
|
const cwdPath = (filePath) => import_path.default.isAbsolute(filePath) ? filePath : import_path.default.join(process.cwd(), filePath);
|
|
116
120
|
const joinPath = import_path.default.join;
|
|
117
|
-
const addExecutePermission = (filePath) =>
|
|
121
|
+
const addExecutePermission = (filePath) => (
|
|
122
|
+
// Fails in windows with `TypeError [ERR_INVALID_ARG_TYPE]: The "mode" argument must be of type number. Received undefined`
|
|
123
|
+
import_fs.default.chmodSync(filePath, import_fs.default.constants.S_IRWXU)
|
|
124
|
+
);
|
|
118
125
|
const detectFileType = (fromFile) => {
|
|
119
126
|
const fileData = readFile(fromFile);
|
|
120
|
-
if (!fileData)
|
|
121
|
-
throw new Error(`Unable to read file at ${fromFile}`);
|
|
127
|
+
if (!fileData) throw new Error(`Unable to read file at ${fromFile}`);
|
|
122
128
|
try {
|
|
123
|
-
if (fileData.startsWith("<"))
|
|
124
|
-
return { contents: fileData, type: "xml" };
|
|
129
|
+
if (fileData.startsWith("<")) return { contents: fileData, type: "xml" };
|
|
125
130
|
const jsonData = (0, import_util.tryParse)(fileData);
|
|
126
|
-
if (jsonData)
|
|
127
|
-
return { contents: jsonData, type: "json" };
|
|
131
|
+
if (jsonData) return { contents: jsonData, type: "json" };
|
|
128
132
|
const csv = (0, import_csv.detectCsv)(fileData);
|
|
129
|
-
if (csv)
|
|
130
|
-
return { contents: fileData, type: "csv" };
|
|
133
|
+
if (csv) return { contents: fileData, type: "csv" };
|
|
131
134
|
} catch (ex) {
|
|
132
135
|
import_logger.Logger.error(`Problem detecting file type ${fromFile}`, ex);
|
|
133
136
|
}
|
|
134
137
|
};
|
|
135
138
|
const readFileAsJSON = async (fromFile) => {
|
|
136
139
|
const detectedFile = detectFileType(cwdPath(fromFile));
|
|
137
|
-
if (!detectedFile)
|
|
138
|
-
return void 0;
|
|
140
|
+
if (!detectedFile) return void 0;
|
|
139
141
|
try {
|
|
140
142
|
switch (detectedFile.type) {
|
|
141
143
|
case "csv": {
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/providers/file-provider.ts"],
|
|
4
4
|
"sourcesContent": ["import fs from 'fs';\nimport { homedir } from 'os';\nimport path from 'path';\nimport { tryParse } from '~/util';\nimport { csvToJson, detectCsv } from '~/util/csv.formatter';\nimport { unflattenObject } from '~/util/json.formatter';\nimport { Logger } from '~/util/logger';\nimport { xmlToJson } from '~/util/xml.formatter';\n\nconst userHomeDir = homedir();\n\nexport const appRootDir =\n process.env.CONTAINER_CONTEXT === 'true'\n ? process.cwd()\n : path.join(userHomeDir, '.contensis/');\n\nexport const readFile = (filePath: string) => {\n const directoryPath = appPath(filePath);\n if (fs.existsSync(directoryPath)) {\n const file = fs.readFileSync(directoryPath, 'utf8');\n return file;\n } else {\n return undefined;\n }\n};\n\nexport const readFiles = (directory: string, createDirectory = true) => {\n const directoryPath = appPath(directory);\n if (fs.existsSync(directoryPath)) {\n const files = fs.readdirSync(directoryPath);\n return files;\n } else if (createDirectory) {\n fs.mkdirSync(directoryPath, { recursive: true });\n return [];\n } else {\n throw new Error(`ENOENT: Directory does not exist ${directoryPath}`);\n // return undefined;\n }\n};\n\nexport const writeFile = (filePath: string, content: string) => {\n const directoryPath = appPath(filePath);\n fs.writeFileSync(directoryPath, content, { encoding: 'utf-8' });\n};\n\nexport const removeFile = (filePath: string) => {\n const directoryPath = appPath(filePath);\n if (fs.existsSync(directoryPath)) {\n fs.rmSync(directoryPath);\n }\n};\n\nexport const removeDirectory = (filePath: string) => {\n const directoryPath = appPath(filePath);\n if (fs.existsSync(directoryPath)) {\n fs.rmSync(directoryPath, { force: true, recursive: true });\n }\n};\n\nexport const moveFile = (file: string, fromPath: string, toPath: string) => {\n const from = path.join(appRootDir, `${fromPath}${file}`);\n const to = path.join(appRootDir, `${toPath}${file}`);\n if (fs.existsSync(from)) {\n checkDir(toPath);\n // if (!fs.existsSync(toPath)) fs.mkdirSync(toPath, { recursive: true });\n\n fs.rename(from, to, err => {\n if (err)\n console.error(\n `Could not rename file \"${file}\" from: ${fromPath} to: ${toPath}`,\n err\n );\n console.info(`Renamed file \"${file}\" from: ${fromPath} to: ${toPath}`);\n });\n } else {\n console.error(\n `Could not rename file \"${file}\" from: ${fromPath} to: ${toPath}\\nFile does not exist!`\n );\n }\n};\n\nexport const checkDir = (filePath: string) => {\n const directoryPath = path.dirname(appPath(filePath));\n if (!fs.existsSync(directoryPath))\n fs.mkdirSync(directoryPath, { recursive: true });\n};\n\nexport const appPath = (filePath: string) =>\n path.isAbsolute(filePath) ? filePath : path.join(appRootDir, filePath);\n\nexport const cwdPath = (filePath: string) =>\n path.isAbsolute(filePath) ? filePath : path.join(process.cwd(), filePath);\n\nexport const joinPath = path.join;\n\nexport const addExecutePermission = (filePath: string) =>\n // Fails in windows with `TypeError [ERR_INVALID_ARG_TYPE]: The \"mode\" argument must be of type number. Received undefined`\n fs.chmodSync(filePath, fs.constants.S_IRWXU);\n\ntype DetectedFileType =\n | { type: 'json'; contents: any }\n | { type: 'xml' | 'csv'; contents: string };\n\nconst detectFileType = (fromFile: string): DetectedFileType | undefined => {\n const fileData = readFile(fromFile);\n if (!fileData) throw new Error(`Unable to read file at ${fromFile}`);\n try {\n // if XML\n if (fileData.startsWith('<')) return { contents: fileData, type: 'xml' };\n\n // if JSON\n const jsonData = tryParse(fileData);\n if (jsonData) return { contents: jsonData, type: 'json' };\n\n // if CSV\n const csv = detectCsv(fileData);\n if (csv) return { contents: fileData, type: 'csv' };\n } catch (ex) {\n Logger.error(`Problem detecting file type ${fromFile}`, ex);\n }\n};\n\nexport const readFileAsJSON = async <T = any>(\n fromFile: string\n): Promise<T | undefined> => {\n const detectedFile = detectFileType(cwdPath(fromFile));\n if (!detectedFile) return undefined;\n try {\n switch (detectedFile.type) {\n case 'csv': {\n const flatJson = await csvToJson(detectedFile.contents);\n const unflattenedJson = flatJson.map(record => unflattenObject(record));\n return unflattenedJson as T;\n }\n case 'xml':\n return (await xmlToJson(detectedFile.contents)) as T;\n\n case 'json':\n default:\n return detectedFile.contents;\n }\n } catch (ex) {\n Logger.error(`Problem converting file from ${detectedFile.type}`, ex);\n }\n};\n"],
|
|
5
|
-
"mappings": "
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["path", "fs"]
|
|
7
7
|
}
|
|
@@ -80,10 +80,9 @@ class ContensisAuthService {
|
|
|
80
80
|
};
|
|
81
81
|
BearerToken = async () => this.client.bearerToken || await this.client.ensureBearerToken();
|
|
82
82
|
RefreshToken = async () => !this.client.isRefreshTokenExpired() ? this.client.refreshToken : null;
|
|
83
|
+
/* PROJECTS */
|
|
83
84
|
ProjectId = () => this.client.clientConfig.projectId;
|
|
84
85
|
RootUrl = () => this.client.clientConfig.rootUrl;
|
|
85
86
|
}
|
|
86
87
|
var ContensisAuthService_default = ContensisAuthService;
|
|
87
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
88
|
-
0 && (module.exports = {});
|
|
89
88
|
//# sourceMappingURL=ContensisAuthService.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/services/ContensisAuthService.ts"],
|
|
4
4
|
"sourcesContent": ["import { NodejsClient } from 'contensis-management-api/lib/client';\nimport { ClientGrants, ClientGrantType } from 'contensis-core-api';\n\nclass ContensisAuthService {\n private client: NodejsClient;\n private credentials: {\n clientType: ClientGrantType;\n clientDetails: ClientGrants;\n };\n\n get clientType() {\n return this.credentials.clientType;\n }\n get clientDetails() {\n return this.credentials.clientDetails;\n }\n\n constructor({\n clientId = '',\n clientSecret = '',\n username,\n password,\n refreshToken,\n projectId,\n rootUrl,\n }: {\n clientId?: string;\n clientSecret?: string;\n username?: string;\n password?: string;\n refreshToken?: string;\n projectId: string;\n rootUrl: string;\n }) {\n if (clientId && clientSecret)\n this.credentials = {\n clientType: 'client_credentials',\n clientDetails: {\n clientId,\n clientSecret,\n },\n };\n else if (username && password)\n this.credentials = {\n clientType: 'contensis_classic',\n clientDetails: {\n username,\n password,\n },\n };\n else if (refreshToken)\n this.credentials = {\n clientType: 'contensis_classic_refresh_token',\n clientDetails: {\n refreshToken,\n },\n };\n else\n this.credentials = {\n clientType: 'none',\n clientDetails: { refreshToken: '' },\n };\n\n this.client = NodejsClient.create({\n ...this.credentials,\n projectId,\n rootUrl,\n });\n }\n\n ClassicToken = async (): Promise<string | null | undefined> => {\n // make sure our token isn't expried.\n await this.client.ensureBearerToken();\n return (this.client as any).contensisClassicToken;\n };\n BearerToken = async () =>\n this.client.bearerToken || (await this.client.ensureBearerToken());\n RefreshToken = async () =>\n !this.client.isRefreshTokenExpired() ? this.client.refreshToken : null;\n\n /* PROJECTS */\n ProjectId = () => this.client.clientConfig.projectId;\n RootUrl = () => this.client.clientConfig.rootUrl;\n}\n\nexport default ContensisAuthService;\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAA6B;AAG7B,MAAM,qBAAqB;AAAA,EACjB;AAAA,EACA;AAAA,EAKR,IAAI,aAAa;AACf,WAAO,KAAK,YAAY;AAAA,EAC1B;AAAA,EACA,IAAI,gBAAgB;AAClB,WAAO,KAAK,YAAY;AAAA,EAC1B;AAAA,EAEA,YAAY;AAAA,IACV,WAAW;AAAA,IACX,eAAe;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAQG;AACD,QAAI,YAAY;AACd,WAAK,cAAc;AAAA,QACjB,YAAY;AAAA,QACZ,eAAe;AAAA,UACb;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,aACO,YAAY;AACnB,WAAK,cAAc;AAAA,QACjB,YAAY;AAAA,QACZ,eAAe;AAAA,UACb;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,aACO;AACP,WAAK,cAAc;AAAA,QACjB,YAAY;AAAA,QACZ,eAAe;AAAA,UACb;AAAA,QACF;AAAA,MACF;AAAA;AAEA,WAAK,cAAc;AAAA,QACjB,YAAY;AAAA,QACZ,eAAe,EAAE,cAAc,GAAG;AAAA,MACpC;AAEF,SAAK,SAAS,2BAAa,OAAO;AAAA,MAChC,GAAG,KAAK;AAAA,MACR;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,eAAe,YAAgD;AAE7D,UAAM,KAAK,OAAO,kBAAkB;AACpC,WAAQ,KAAK,OAAe;AAAA,EAC9B;AAAA,EACA,cAAc,YACZ,KAAK,OAAO,eAAgB,MAAM,KAAK,OAAO,kBAAkB;AAAA,EAClE,eAAe,YACb,CAAC,KAAK,OAAO,sBAAsB,IAAI,KAAK,OAAO,eAAe;AAAA,EAGpE,YAAY,MAAM,KAAK,OAAO,aAAa;AAAA,EAC3C,UAAU,MAAM,KAAK,OAAO,aAAa;AAC3C;AAEA,IAAO,+BAAQ;",
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAA6B;AAG7B,MAAM,qBAAqB;AAAA,EACjB;AAAA,EACA;AAAA,EAKR,IAAI,aAAa;AACf,WAAO,KAAK,YAAY;AAAA,EAC1B;AAAA,EACA,IAAI,gBAAgB;AAClB,WAAO,KAAK,YAAY;AAAA,EAC1B;AAAA,EAEA,YAAY;AAAA,IACV,WAAW;AAAA,IACX,eAAe;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAQG;AACD,QAAI,YAAY;AACd,WAAK,cAAc;AAAA,QACjB,YAAY;AAAA,QACZ,eAAe;AAAA,UACb;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,aACO,YAAY;AACnB,WAAK,cAAc;AAAA,QACjB,YAAY;AAAA,QACZ,eAAe;AAAA,UACb;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,aACO;AACP,WAAK,cAAc;AAAA,QACjB,YAAY;AAAA,QACZ,eAAe;AAAA,UACb;AAAA,QACF;AAAA,MACF;AAAA;AAEA,WAAK,cAAc;AAAA,QACjB,YAAY;AAAA,QACZ,eAAe,EAAE,cAAc,GAAG;AAAA,MACpC;AAEF,SAAK,SAAS,2BAAa,OAAO;AAAA,MAChC,GAAG,KAAK;AAAA,MACR;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,eAAe,YAAgD;AAE7D,UAAM,KAAK,OAAO,kBAAkB;AACpC,WAAQ,KAAK,OAAe;AAAA,EAC9B;AAAA,EACA,cAAc,YACZ,KAAK,OAAO,eAAgB,MAAM,KAAK,OAAO,kBAAkB;AAAA,EAClE,eAAe,YACb,CAAC,KAAK,OAAO,sBAAsB,IAAI,KAAK,OAAO,eAAe;AAAA;AAAA,EAGpE,YAAY,MAAM,KAAK,OAAO,aAAa;AAAA,EAC3C,UAAU,MAAM,KAAK,OAAO,aAAa;AAC3C;AAEA,IAAO,+BAAQ;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|