first commit

main
guidohollander 3 years ago
parent dd8341f1d5
commit a67af87fb7

130
.gitignore vendored

@ -0,0 +1,130 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
.pnpm-debug.log*
# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
*.lcov
# nyc test coverage
.nyc_output
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules/
jspm_packages/
# Snowpack dependency directory (https://snowpack.dev/)
web_modules/
# TypeScript cache
*.tsbuildinfo
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Optional stylelint cache
.stylelintcache
# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variable files
.env
.env.development.local
.env.test.local
.env.production.local
.env.local
# parcel-bundler cache (https://parceljs.org/)
.cache
.parcel-cache
# Next.js build output
.next
out
# Nuxt.js build / generate output
.nuxt
dist
# Gatsby files
.cache/
# Comment in the public line in if your project uses Gatsby and not Next.js
# https://nextjs.org/blog/next-9-1#public-directory-support
# public
# vuepress build output
.vuepress/dist
# vuepress v2.x temp and cache directory
.temp
.cache
# Docusaurus cache and generated files
.docusaurus
# Serverless directories
.serverless/
# FuseBox cache
.fusebox/
# DynamoDB Local files
.dynamodb/
# TernJS port file
.tern-port
# Stores VSCode versions used for testing VSCode extensions
.vscode-test
# yarn v2
.yarn/cache
.yarn/unplugged
.yarn/build-state.yml
.yarn/install-state.gz
.pnp.*

@ -0,0 +1,20 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch Program",
"skipFiles": [
"<node_internals>/**"
],
"program": "${workspaceFolder}/dist/index.js",
"outFiles": [
"${workspaceFolder}/**/*.js"
]
}
]
}

27
.vscode/tasks.json vendored

@ -0,0 +1,27 @@
{
"version": "2.0.0",
"tasks": [
{
"type": "typescript",
"tsconfig": "tsconfig.json",
"option": "watch",
"problemMatcher": [
"$tsc-watch"
],
"group": "build",
"label": "tsc: watch - tsconfig.json"
},
{
"type": "typescript",
"tsconfig": "tsconfig.json",
"problemMatcher": [
"$tsc"
],
"group": {
"kind": "build",
"isDefault": true
},
"label": "tsc: build - tsconfig.json"
}
]
}

164
package-lock.json generated

@ -0,0 +1,164 @@
{
"name": "chap1",
"version": "1.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "chap1",
"version": "1.0.0",
"license": "ISC",
"dependencies": {
"node-svn-ultimate": "^1.2.1",
"semver": "^7.5.1"
},
"devDependencies": {
"@types/node": "^20.2.3",
"@types/semver": "^7.5.0",
"typescript": "^5.0.4"
}
},
"node_modules/@types/node": {
"version": "20.2.3",
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.2.3.tgz",
"integrity": "sha512-pg9d0yC4rVNWQzX8U7xb4olIOFuuVL9za3bzMT2pu2SU0SNEi66i2qrvhE2qt0HvkhuCaWJu7pLNOt/Pj8BIrw==",
"dev": true
},
"node_modules/@types/semver": {
"version": "7.5.0",
"resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz",
"integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==",
"dev": true
},
"node_modules/fs-extra": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz",
"integrity": "sha512-VerQV6vEKuhDWD2HGOybV6v5I73syoc/cXAbKlgTC7M/oFVEtklWlp9QH2Ijw3IaWDOQcMkldSPa7zXy79Z/UQ==",
"dependencies": {
"graceful-fs": "^4.1.2",
"jsonfile": "^2.1.0",
"klaw": "^1.0.0"
}
},
"node_modules/graceful-fs": {
"version": "4.2.11",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
"integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
},
"node_modules/jsonfile": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz",
"integrity": "sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==",
"optionalDependencies": {
"graceful-fs": "^4.1.6"
}
},
"node_modules/klaw": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz",
"integrity": "sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==",
"optionalDependencies": {
"graceful-fs": "^4.1.9"
}
},
"node_modules/lru-cache": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"dependencies": {
"yallist": "^4.0.0"
},
"engines": {
"node": ">=10"
}
},
"node_modules/node-svn-ultimate": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/node-svn-ultimate/-/node-svn-ultimate-1.2.1.tgz",
"integrity": "sha512-WqNyOq3hW/A2Hi/MAMFu3PhnCzGdTnGaR6Cfr65OL7Qa8pLvlMbJ21t7Vko3CYngnI6Zn1JmKwtA3SlEcFC61A==",
"dependencies": {
"fs-extra": "^1.0.0",
"semver": "^5.3.0",
"uuid": "^3.0.0",
"xml2js": "^0.4.17"
},
"engines": {
"node": ">= 0.10.0"
}
},
"node_modules/node-svn-ultimate/node_modules/semver": {
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
"bin": {
"semver": "bin/semver"
}
},
"node_modules/sax": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
"integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
},
"node_modules/semver": {
"version": "7.5.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz",
"integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==",
"dependencies": {
"lru-cache": "^6.0.0"
},
"bin": {
"semver": "bin/semver.js"
},
"engines": {
"node": ">=10"
}
},
"node_modules/typescript": {
"version": "5.0.4",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz",
"integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
},
"engines": {
"node": ">=12.20"
}
},
"node_modules/uuid": {
"version": "3.4.0",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
"integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
"deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.",
"bin": {
"uuid": "bin/uuid"
}
},
"node_modules/xml2js": {
"version": "0.4.23",
"resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz",
"integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==",
"dependencies": {
"sax": ">=0.6.0",
"xmlbuilder": "~11.0.0"
},
"engines": {
"node": ">=4.0.0"
}
},
"node_modules/xmlbuilder": {
"version": "11.0.1",
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
"integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==",
"engines": {
"node": ">=4.0"
}
},
"node_modules/yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
}
}
}

@ -0,0 +1,20 @@
{
"name": "chap1",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"devDependencies": {
"@types/node": "^20.2.3",
"@types/semver": "^7.5.0",
"typescript": "^5.0.4"
},
"dependencies": {
"node-svn-ultimate": "^1.2.1",
"semver": "^7.5.1"
}
}

@ -0,0 +1,75 @@
[
{
"name": "MBS_ANGUILLA",
"functionalName": "MBS Anguilla",
"customer": "ANGUILLA",
"customerCode": "aia_mbs",
"path": "D:\\repo\\mbs_anguilla_21\\",
"class": "MxS",
"url": "https://svn.bearingpointcaribbean.com/svn/MBS_ANGUILLA/trunk"
},
{
"name": "MTS_ANGUILLA",
"functionalName": "MTS Anguilla",
"customer": "ANGUILLA",
"customerCode": "aia_mts",
"path": "D:\\repo\\mts_anguilla_21\\",
"class": "MxS",
"url": "https://svn.bearingpointcaribbean.com/svn/MTS_ANGUILLA/trunk"
},
{
"name": "ONLINE_ANGUILLA",
"functionalName": "Online Anguilla",
"customer": "ANGUILLA",
"customerCode": "aia_online",
"path": "D:\\repo\\online_anguilla\\",
"class": "ONLINE",
"url": "https://svn.bearingpointcaribbean.com/svn/ONLINE_ANGUILLA/trunk"
},
{
"name": "MTS_SKN",
"functionalName": "MTS Saint Kitts and Nevis",
"customer": "SKN",
"customerCode": "skn_mts",
"path": "D:\\repo\\mts_skn\\",
"class": "MxS",
"url": "https://svn.bearingpointcaribbean.com/svn/MTS_SKN/trunk"
},
{
"name": "ONLINE_SKN",
"functionalName": "Online Saint Kitts and Nevis",
"customer": "SKN",
"customerCode": "skn_online",
"path": "D:\\repo\\online_skn\\",
"class": "ONLINE",
"url": "https://svn.bearingpointcaribbean.com/svn/ONLINE_SKN/trunk"
},
{
"name": "BDSU_MTS",
"functionalName": "MTS Belastingdienst Suriname",
"customer": "Belastingdienst Suriname",
"customerCode": "bdsu_mts",
"path": "D:\\repo\\mts_bdsu\\",
"class": "MxS",
"url": "https://svn.bearingpointcaribbean.com/svn/BDSU_MTS/trunk",
"test": true
},
{
"name": "MTS_GRENADA",
"functionalName": "MTS Grenada",
"customer": "GRENADA",
"customerCode": "gd_mts",
"path": "D:\\repo\\mts_grenada\\",
"class": "MxS",
"url": "https://svn.bearingpointcaribbean.com/svn/MTS_GRENADA/trunk"
},
{
"name": "ONLINE_GD",
"functionalName": "Online Grenada",
"customer": "GRENADA",
"customerCode": "gd_online",
"path": "D:\\repo\\online_gd\\",
"class": "ONLINE",
"url": "https://svn.bearingpointcaribbean.com/svn/ONLINE_GD/trunk"
}
]

@ -0,0 +1,209 @@
import semver from 'semver';
import { SemVerIncrementType, ApiExternalsResponse } from './types';
import { svnList, svnGetLatestTag, svnPropGet } from './promises';
export class SolutionImplementation {
private url: string = '';
private baseURL: string = '';
private repository: string = '';
private repositoryURL: string = '';
private componentFolder: string | null = null;
private _isSolutionComponent: boolean = false;
private _isImplementation: boolean = false;
private implementationURL: string = ''
private type: string = '';
private version: string | null = null;
private nextVersion: string | null = null;
private previousVersion: string | null = null;
private component: string = '';
private externals: [];
constructor(url: string) {
this.parseUrl(url);
}
private parseUrl(url: string): void {
this.url = url;
const regex = /^(https?:\/\/[^\/]+\/svn\/)/;
const match = url.match(regex);
if (match && match.length > 1) {
this.baseURL = match[1];
} else {
throw new Error('Invalid URL');
}
const segments = url.split('/');
const svnIndex = segments.indexOf('svn');
const trunkTagBranchIndex = segments.findIndex(
(segment, index) => index > svnIndex && (segment === 'trunk' || segment === 'tags' || segment === 'branches')
);
this._isSolutionComponent = (trunkTagBranchIndex - svnIndex > 2);
if (svnIndex !== -1 && svnIndex + 1 < segments.length) {
this.repository = segments[svnIndex + 1];
this.repositoryURL = `${this.baseURL}${this.repository}`;
if (trunkTagBranchIndex !== -1 && trunkTagBranchIndex - 1 > svnIndex) {
const nextSegment = segments[trunkTagBranchIndex - 1];
if (nextSegment !== 'trunk' && nextSegment !== 'tags' && nextSegment !== 'branches') {
if (this._isSolutionComponent) {
this.componentFolder = nextSegment;
}
}
}
if (trunkTagBranchIndex !== -1 && trunkTagBranchIndex < segments.length) {
this.type = segments[trunkTagBranchIndex];
if (this.type === 'tags' || this.type === 'branches') {
if (trunkTagBranchIndex + 1 < segments.length) {
this.version = segments[trunkTagBranchIndex + 1];
if (trunkTagBranchIndex + 2 < segments.length) {
this.component = segments[trunkTagBranchIndex + 2];
}
}
} else {
if (trunkTagBranchIndex + 1 < segments.length) {
this.component = segments[trunkTagBranchIndex + 1];
}
}
}
this._isImplementation = (this.componentFolder === null && this.component === '');
this.implementationURL = segments.slice(0, trunkTagBranchIndex + ((this.version !== null) ? 2 : 1)).join('/');
if (this._isImplementation) {
const rawExternals = this.getExternals(url);
}
if (this._isImplementation) {
}
} else {
throw new Error('Invalid URL');
}
}
getBaseURL(): string {
return this.baseURL;
}
getURL(): string {
return this.url;
}
getImplementationURL(): string {
return this.implementationURL
}
getRepository(): string {
return this.repository;
}
getRepositoryURL(): string {
return this.repositoryURL;
}
getComponentFolder(): string | null {
return this.componentFolder;
}
isSolutionComponent(): boolean {
return this._isSolutionComponent;
}
isImplementation(): boolean {
return this._isImplementation;
}
getType(): string {
return this.type;
}
getVersion(): string | null {
return this.version;
}
public async getNextVersion(semVerIncrementType: SemVerIncrementType): Promise<string | null> {
await this.getLatestTag()
.then((result) => {
if (semver.valid(semver.coerce(result))) {
const sv: string = <string>result;
this.nextVersion = semver.inc(sv, semVerIncrementType);
} else {
this.nextVersion = null
}
})
.catch((error) => {
// Handle error
});
return this.nextVersion;
}
public async getLatestTag(): Promise<string> {
try {
const lastTagOrBranch = await svnGetLatestTag(this.implementationURL);
return lastTagOrBranch.name;
} catch (error) {
console.error('Error retrieving last tag or branch:', error);
throw error;
}
}
getTypeAndVersion(): string {
if (this.type === 'tags' || this.type === 'branches') {
return `${this.type}/${this.version}`;
} else {
return `${this.type}`;
}
}
getComponent(): string {
return this.component;
}
getComponentDecoded(): string {
return decodeURIComponent(this.component);
}
getExternalsRaw(): string {
return decodeURIComponent(this.component);
}
// getExternalsCollection(): externalsCollection {
// return decodeURIComponent(this.component);
// }
public async getExternals(): Promise<string> {
const svnOptions = { trustServerCert: true };
try {
const response: ApiExternalsResponse = await svnPropGet('svn:externals', this.url, svnOptions);
const rawExternals: string = response.target.property._
return rawExternals;
} catch (error) {
console.error('Error retrieving last tag or branch:', error);
throw error;
}
}
}
// Helper function to retrieve the last tag or branch
// async function getLastTagOrBranch(url: string): Promise<string> {
// try {
// const list = await svnListPromise(url);
// const sortedList = list.sort((a, b) => b.date.getTime() - a.date.getTime());
// const lastTagOrBranch = sortedList[0].name;
// return lastTagOrBranch;
// } catch (error) {
// throw error;
// }
// }

@ -0,0 +1,23 @@
import * as fs from 'fs';
import { ISolutionImplementation } from './types';
import { SolutionImplementation } from "./SolutionImplementation";
export class SolutionImplementationReader {
private solutionImplementations: ISolutionImplementation[];
constructor() {
const json = fs.readFileSync('solutions.json', 'utf-8');
this.solutionImplementations = JSON.parse(json);
}
public readSolutionUrl(): void {
this.solutionImplementations.forEach((solutionImplementation: ISolutionImplementation) => {
let s = new SolutionImplementation(solutionImplementation.url);
console.log(JSON.stringify(s, null, 2));
});
}
}

@ -0,0 +1,110 @@
import { SolutionImplementation } from "./SolutionImplementation";
import { SolutionImplementationReader } from "./SolutionImplementationReader";
// const trunkUrl = 'https://svn.bearingpointcaribbean.com/svn/MTS_ANGLO/Business_Licence/trunk/DSC%20Business%20license';
// const tagUrl = 'https://svn.bearingpointcaribbean.com/svn/MTS_ANGLO/Interim_Stabilization_Levy/tags/1.0.0/DSC%20Interim%20stabilization%20levy';
// const branchUrl = 'https://svn.bearingpointcaribbean.com/svn/MTS_ANGUILLA/branches/1.5.0/SC%20Address%20-%20Specific';
// const trunkSolutionUrl = 'https://svn.bearingpointcaribbean.com/svn/MTS_ANGUILLA/trunk';
// const tagSolutionUrl = 'https://svn.bearingpointcaribbean.com/svn/MTS_ANGUILLA/tags/2.1.1.1';
// const branchSolutionUrl = 'https://svn.bearingpointcaribbean.com/svn/MTS_ANGUILLA/branches/2.1.1';
async function showOutPut() {
let solution = new SolutionImplementation(branchSolutionUrl);
console.log('solution.getURL():', solution.getURL());
console.log('solution.getBaseURL():', solution.getBaseURL());
console.log('solution.getRepository():', solution.getRepository());
console.log('solution.getComponentFolder():', solution.getComponentFolder());
console.log('solution.isSolutionComponent():', solution.isSolutionComponent());
console.log('solution.isImplementation():', solution.isImplementation());
console.log('solution.getType():', solution.getType());
console.log('solution.getVersion():', solution.getVersion());
console.log('solution.getTypeAndVersion():', solution.getTypeAndVersion());
console.log('solution.getComponent():', solution.getComponent());
console.log('solution.getComponentDecoded():', solution.getComponentDecoded());
console.log('solution.getImplementationURL():', solution.getImplementationURL());
console.log('solution.getLatestTag:', await solution.getLatestTag());
console.log('solution.getNextVersion("minor"):', await solution.getNextVersion('minor'));
console.log('--');
}
// showOutPut();
// Usage
const solutionImplementations = [];
const solutionImplementationReader = new SolutionImplementationReader();
solutionImplementations.push(solutionImplementationReader.readSolutionUrl();
// solution = new SolutionImplementation(tagUrl);
// console.log('solution.getURL():', solution.getURL());
// console.log('solution.getBaseURL():', solution.getBaseURL());
// console.log('solution.getRepository():', solution.getRepository());
// console.log('solution.getComponentFolder():', solution.getComponentFolder());
// console.log('solution.isSolutionComponent():', solution.isSolutionComponent());
// console.log('solution.isImplementation():', solution.isImplementation());
// console.log('solution.getType():', solution.getType());
// console.log('solution.getVersion():', solution.getVersion());
// console.log('solution.getTypeAndVersion():', solution.getTypeAndVersion());
// console.log('solution.getComponent():', solution.getComponent());
// console.log('solution.getComponentDecoded():', solution.getComponentDecoded());
// console.log('solution.getImplementationURL():', solution.getImplementationURL());
// console.log('--');
// solution = new SolutionImplementation(branchUrl);
// console.log('solution.getURL():', solution.getURL());
// console.log('solution.getBaseURL():', solution.getBaseURL());
// console.log('solution.getRepository():', solution.getRepository());
// console.log('solution.getComponentFolder():', solution.getComponentFolder());
// console.log('solution.isSolutionComponent():', solution.isSolutionComponent());
// console.log('solution.isImplementation():', solution.isImplementation());
// console.log('solution.getType():', solution.getType());
// console.log('solution.getVersion():', solution.getVersion());
// console.log('solution.getTypeAndVersion():', solution.getTypeAndVersion());
// console.log('solution.getComponent():', solution.getComponent());
// console.log('solution.getComponentDecoded():', solution.getComponentDecoded());
// console.log('solution.getImplementationURL():', solution.getImplementationURL());
// console.log('--');
// solution = new SolutionImplementation(trunkSolutionUrl);
// console.log('solution.getURL():', solution.getURL());
// console.log('solution.getBaseURL():', solution.getBaseURL());
// console.log('solution.getRepository():', solution.getRepository());
// console.log('solution.getComponentFolder():', solution.getComponentFolder());
// console.log('solution.isSolutionComponent():', solution.isSolutionComponent());
// console.log('solution.isImplementation():', solution.isImplementation());
// console.log('solution.getType():', solution.getType());
// console.log('solution.getVersion():', solution.getVersion());
// console.log('solution.getTypeAndVersion():', solution.getTypeAndVersion());
// console.log('solution.getComponent():', solution.getComponent());
// console.log('solution.getComponentDecoded():', solution.getComponentDecoded());
// console.log('solution.getImplementationURL():', solution.getImplementationURL());
// console.log('--');
// solution = new SolutionImplementation(tagSolutionUrl);
// console.log('solution.getURL():', solution.getURL());
// console.log('solution.getBaseURL():', solution.getBaseURL());
// console.log('solution.getRepository():', solution.getRepository());
// console.log('solution.getComponentFolder():', solution.getComponentFolder());
// console.log('solution.isSolutionComponent():', solution.isSolutionComponent());
// console.log('solution.isImplementation():', solution.isImplementation());
// console.log('solution.getType():', solution.getType());
// console.log('solution.getVersion():', solution.getVersion());
// console.log('solution.getTypeAndVersion():', solution.getTypeAndVersion());
// console.log('solution.getComponent():', solution.getComponent());
// console.log('solution.getComponentDecoded():', solution.getComponentDecoded());
// console.log('solution.getImplementationURL():', solution.getImplementationURL());
// console.log('--');
// solution = new SolutionImplementation(branchSolutionUrl);
// console.log('solution.getURL():', solution.getURL());
// console.log('solution.getBaseURL():', solution.getBaseURL());
// console.log('solution.getRepository():', solution.getRepository());
// console.log('solution.getComponentFolder():', solution.getComponentFolder());
// console.log('solution.isSolutionComponent():', solution.isSolutionComponent());
// console.log('solution.isImplementation():', solution.isImplementation());
// console.log('solution.getType():', solution.getType());
// console.log('solution.getVersion():', solution.getVersion());
// console.log('solution.getTypeAndVersion():', solution.getTypeAndVersion());
// console.log('solution.getComponent():', solution.getComponent());
// console.log('solution.getComponentDecoded():', solution.getComponentDecoded());
// console.log('solution.getImplementationURL():', solution.getImplementationURL());

@ -0,0 +1,13 @@
import { promisify } from 'util';
import * as nodeSVNUltimate from 'node-svn-ultimate';
// Promisify individual functions
const svnList = promisify(nodeSVNUltimate.commands.list);
const svnGetLatestTag = promisify(nodeSVNUltimate.util.getLatestTag);
const svnPropGet = promisify(nodeSVNUltimate.commands.propget);
export {
svnList,
svnGetLatestTag,
svnPropGet
};

@ -0,0 +1,36 @@
export type SemVerIncrementType = 'minor' | 'major' | 'patch';
export interface User {
id: number;
name: string;
email: string;
}
export enum Role {
ADMIN = 'admin',
USER = 'user',
}
export interface ISolutionImplementation {
name: string;
functionalName: string;
customer: string;
customerCode: string;
path: string;
class: string;
url: string;
}
export interface ApiExternalsResponse {
target: {
$: {
path: string;
};
property: {
_: string;
$: {
name: string;
};
};
};
}

@ -0,0 +1,109 @@
{
"compilerOptions": {
/* Visit https://aka.ms/tsconfig to read more about this file */
/* Projects */
// "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */
// "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */
// "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */
// "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */
// "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */
// "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */
/* Language and Environment */
"target": "es2016", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */
// "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */
// "jsx": "preserve", /* Specify what JSX code is generated. */
// "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */
// "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */
// "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */
// "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */
// "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */
// "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */
// "noLib": true, /* Disable including any library files, including the default lib.d.ts. */
// "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */
// "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */
/* Modules */
"module": "commonjs", /* Specify what module code is generated. */
"rootDir": "src", /* Specify the root folder within your source files. */
// "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */
// "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */
// "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */
// "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */
// "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */
// "types": [], /* Specify type package names to be included without being referenced in a source file. */
// "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */
// "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */
// "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */
// "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */
// "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */
// "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */
// "resolveJsonModule": true, /* Enable importing .json files. */
// "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */
// "noResolve": true, /* Disallow 'import's, 'require's or '<reference>'s from expanding the number of files TypeScript should add to a project. */
/* JavaScript Support */
// "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */
// "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */
// "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */
/* Emit */
// "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */
// "declarationMap": true, /* Create sourcemaps for d.ts files. */
// "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */
"sourceMap": true, /* Create source map files for emitted JavaScript files. */
// "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */
// "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */
"outDir": "dist", /* Specify an output folder for all emitted files. */
// "removeComments": true, /* Disable emitting comments. */
// "noEmit": true, /* Disable emitting files from a compilation. */
// "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */
// "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */
// "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */
// "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */
// "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
// "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */
// "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */
// "newLine": "crlf", /* Set the newline character for emitting files. */
// "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */
// "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */
// "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */
// "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */
// "declarationDir": "./", /* Specify the output directory for generated declaration files. */
// "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */
/* Interop Constraints */
// "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */
// "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */
// "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */
"esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */
// "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */
"forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */
/* Type Checking */
"strict": true, /* Enable all strict type-checking options. */
// "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */
// "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */
// "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */
// "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */
// "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */
// "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */
// "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */
// "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */
// "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */
// "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */
// "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */
// "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */
// "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */
// "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */
// "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */
// "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */
// "allowUnusedLabels": true, /* Disable error reporting for unused labels. */
// "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */
/* Completeness */
// "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */
"skipLibCheck": true /* Skip type checking all .d.ts files. */
}
}
Loading…
Cancel
Save

Powered by TurnKey Linux.