@quatrain/code 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AbstractRepositoryAdapter.d.ts +10 -0
- package/dist/AbstractRepositoryAdapter.d.ts.map +1 -0
- package/dist/AbstractRepositoryAdapter.js +7 -0
- package/dist/AbstractRepositoryAdapter.js.map +1 -0
- package/dist/CodeRepository.d.ts +7 -0
- package/dist/CodeRepository.d.ts.map +1 -0
- package/dist/CodeRepository.js +17 -0
- package/dist/CodeRepository.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/package.json +46 -0
- package/src/AbstractRepositoryAdapter.ts +27 -0
- package/src/CodeRepository.ts +28 -0
- package/src/__test__/CodeRepository.test.ts +22 -0
- package/src/index.ts +5 -0
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface CommitFile {
|
|
2
|
+
path: string;
|
|
3
|
+
content: string;
|
|
4
|
+
}
|
|
5
|
+
export declare abstract class AbstractRepositoryAdapter {
|
|
6
|
+
abstract pull(branch?: string): Promise<void>;
|
|
7
|
+
abstract push(files: CommitFile[], message: string, branch?: string): Promise<void>;
|
|
8
|
+
abstract createBranch(branchName: string, fromBranch?: string): Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=AbstractRepositoryAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AbstractRepositoryAdapter.d.ts","sourceRoot":"","sources":["../src/AbstractRepositoryAdapter.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;CACjB;AAED,8BAAsB,yBAAyB;IAK5C,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ7C,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOnF,QAAQ,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAC/E"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AbstractRepositoryAdapter = void 0;
|
|
4
|
+
class AbstractRepositoryAdapter {
|
|
5
|
+
}
|
|
6
|
+
exports.AbstractRepositoryAdapter = AbstractRepositoryAdapter;
|
|
7
|
+
//# sourceMappingURL=AbstractRepositoryAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AbstractRepositoryAdapter.js","sourceRoot":"","sources":["../src/AbstractRepositoryAdapter.ts"],"names":[],"mappings":";;;AAKA,MAAsB,yBAAyB;CAqB9C;AArBD,8DAqBC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { AbstractRepositoryAdapter } from './AbstractRepositoryAdapter';
|
|
2
|
+
export declare class CodeRepository {
|
|
3
|
+
protected static _adapter: AbstractRepositoryAdapter | null;
|
|
4
|
+
static setAdapter(adapter: AbstractRepositoryAdapter): void;
|
|
5
|
+
static getAdapter(): AbstractRepositoryAdapter;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=CodeRepository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CodeRepository.d.ts","sourceRoot":"","sources":["../src/CodeRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAA;AAKvE,qBAAa,cAAc;IACxB,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,yBAAyB,GAAG,IAAI,CAAO;WAMpD,UAAU,CAAC,OAAO,EAAE,yBAAyB;WAS7C,UAAU,IAAI,yBAAyB;CAMvD"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CodeRepository = void 0;
|
|
4
|
+
class CodeRepository {
|
|
5
|
+
static _adapter = null;
|
|
6
|
+
static setAdapter(adapter) {
|
|
7
|
+
CodeRepository._adapter = adapter;
|
|
8
|
+
}
|
|
9
|
+
static getAdapter() {
|
|
10
|
+
if (!CodeRepository._adapter) {
|
|
11
|
+
throw new Error('No Repository adapter configured. Please call CodeRepository.setAdapter() first.');
|
|
12
|
+
}
|
|
13
|
+
return CodeRepository._adapter;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
exports.CodeRepository = CodeRepository;
|
|
17
|
+
//# sourceMappingURL=CodeRepository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CodeRepository.js","sourceRoot":"","sources":["../src/CodeRepository.ts"],"names":[],"mappings":";;;AAKA,MAAa,cAAc;IACd,MAAM,CAAC,QAAQ,GAAqC,IAAI,CAAA;IAM3D,MAAM,CAAC,UAAU,CAAC,OAAkC;QACxD,cAAc,CAAC,QAAQ,GAAG,OAAO,CAAA;IACpC,CAAC;IAOM,MAAM,CAAC,UAAU;QACrB,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,kFAAkF,CAAC,CAAA;QACtG,CAAC;QACD,OAAO,cAAc,CAAC,QAAQ,CAAA;IACjC,CAAC;;AArBJ,wCAsBC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AACnF,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEjD,OAAO,EAAE,yBAAyB,EAAE,cAAc,EAAE,CAAA;AACpD,YAAY,EAAE,UAAU,EAAE,CAAA"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CodeRepository = exports.AbstractRepositoryAdapter = void 0;
|
|
4
|
+
const AbstractRepositoryAdapter_1 = require("./AbstractRepositoryAdapter");
|
|
5
|
+
Object.defineProperty(exports, "AbstractRepositoryAdapter", { enumerable: true, get: function () { return AbstractRepositoryAdapter_1.AbstractRepositoryAdapter; } });
|
|
6
|
+
const CodeRepository_1 = require("./CodeRepository");
|
|
7
|
+
Object.defineProperty(exports, "CodeRepository", { enumerable: true, get: function () { return CodeRepository_1.CodeRepository; } });
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,2EAAmF;AAG1E,0GAHA,qDAAyB,OAGA;AAFlC,qDAAiD;AAEb,+FAF3B,+BAAc,OAE2B"}
|
package/package.json
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@quatrain/code",
|
|
3
|
+
"version": "1.1.1",
|
|
4
|
+
"license": "AGPL-3.0-only",
|
|
5
|
+
"description": "Remote code repository adapters commons",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"bun": "src/index.ts",
|
|
9
|
+
"files": [
|
|
10
|
+
"LICENSE.md",
|
|
11
|
+
"src/",
|
|
12
|
+
"dist/",
|
|
13
|
+
"README.md",
|
|
14
|
+
"NOTICE.md"
|
|
15
|
+
],
|
|
16
|
+
"repository": {
|
|
17
|
+
"type": "git",
|
|
18
|
+
"url": "git+https://github.com/Quatrain/Core.git",
|
|
19
|
+
"directory": "packages/code"
|
|
20
|
+
},
|
|
21
|
+
"author": "Quatrain Développement SAS <developers@quatrain.com>",
|
|
22
|
+
"dependencies": {
|
|
23
|
+
"@quatrain/core": "^1.1.52"
|
|
24
|
+
},
|
|
25
|
+
"devDependencies": {
|
|
26
|
+
"@tsconfig/recommended": "^1.0.1",
|
|
27
|
+
"@types/jest": "^29.5.12",
|
|
28
|
+
"@types/node": "^22.10.1",
|
|
29
|
+
"jest": "^29.7.0",
|
|
30
|
+
"jest-node-exports-resolver": "^1.1.6",
|
|
31
|
+
"jest-serial-runner": "^1.2.1",
|
|
32
|
+
"trace-unhandled": "^2.0.1",
|
|
33
|
+
"ts-jest": "^29.4.6",
|
|
34
|
+
"ts-node": "^10.9.1",
|
|
35
|
+
"typescript": "^5.1.5"
|
|
36
|
+
},
|
|
37
|
+
"scripts": {
|
|
38
|
+
"test-ci": "jest --runInBand",
|
|
39
|
+
"build": "tsc",
|
|
40
|
+
"wbuild": "tsc --watch",
|
|
41
|
+
"bump-to": "yarn version"
|
|
42
|
+
},
|
|
43
|
+
"typedoc": {
|
|
44
|
+
"entryPoint": "src/index.ts"
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export interface CommitFile {
|
|
2
|
+
path: string
|
|
3
|
+
content: string
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
export abstract class AbstractRepositoryAdapter {
|
|
7
|
+
/**
|
|
8
|
+
* Pull latest changes from remote repository
|
|
9
|
+
* @param branch
|
|
10
|
+
*/
|
|
11
|
+
abstract pull(branch?: string): Promise<void>
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Commit and push files to remote repository
|
|
15
|
+
* @param files List of files to commit
|
|
16
|
+
* @param message Commit message
|
|
17
|
+
* @param branch Target branch
|
|
18
|
+
*/
|
|
19
|
+
abstract push(files: CommitFile[], message: string, branch?: string): Promise<void>
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Create a new branch
|
|
23
|
+
* @param branchName
|
|
24
|
+
* @param fromBranch
|
|
25
|
+
*/
|
|
26
|
+
abstract createBranch(branchName: string, fromBranch?: string): Promise<void>
|
|
27
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { AbstractRepositoryAdapter } from './AbstractRepositoryAdapter'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Singleton to access the configured Repository adapter
|
|
5
|
+
*/
|
|
6
|
+
export class CodeRepository {
|
|
7
|
+
protected static _adapter: AbstractRepositoryAdapter | null = null
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Set the Repository adapter to be used globally
|
|
11
|
+
* @param adapter The configured adapter instance
|
|
12
|
+
*/
|
|
13
|
+
public static setAdapter(adapter: AbstractRepositoryAdapter) {
|
|
14
|
+
CodeRepository._adapter = adapter
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Get the current Repository adapter
|
|
19
|
+
* @returns The configured Repository adapter
|
|
20
|
+
* @throws Error if no adapter has been set
|
|
21
|
+
*/
|
|
22
|
+
public static getAdapter(): AbstractRepositoryAdapter {
|
|
23
|
+
if (!CodeRepository._adapter) {
|
|
24
|
+
throw new Error('No Repository adapter configured. Please call CodeRepository.setAdapter() first.')
|
|
25
|
+
}
|
|
26
|
+
return CodeRepository._adapter
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { AbstractRepositoryAdapter, CommitFile } from '../AbstractRepositoryAdapter'
|
|
2
|
+
import { CodeRepository } from '../CodeRepository'
|
|
3
|
+
|
|
4
|
+
class MockRepoAdapter extends AbstractRepositoryAdapter {
|
|
5
|
+
async pull() {}
|
|
6
|
+
async push(files: CommitFile[], message: string) {}
|
|
7
|
+
async createBranch(branchName: string) {}
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
describe('CodeRepository Singleton', () => {
|
|
11
|
+
it('should throw an error if no adapter is set', () => {
|
|
12
|
+
// @ts-ignore : private property access for test reset
|
|
13
|
+
CodeRepository._adapter = null
|
|
14
|
+
expect(() => CodeRepository.getAdapter()).toThrow()
|
|
15
|
+
})
|
|
16
|
+
|
|
17
|
+
it('should set and get the adapter successfully', () => {
|
|
18
|
+
const adapter = new MockRepoAdapter()
|
|
19
|
+
CodeRepository.setAdapter(adapter)
|
|
20
|
+
expect(CodeRepository.getAdapter()).toBe(adapter)
|
|
21
|
+
})
|
|
22
|
+
})
|