@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.
@@ -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"}
@@ -0,0 +1,5 @@
1
+ import { AbstractRepositoryAdapter, CommitFile } from './AbstractRepositoryAdapter';
2
+ import { CodeRepository } from './CodeRepository';
3
+ export { AbstractRepositoryAdapter, CodeRepository };
4
+ export type { CommitFile };
5
+ //# sourceMappingURL=index.d.ts.map
@@ -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
+ })
package/src/index.ts ADDED
@@ -0,0 +1,5 @@
1
+ import { AbstractRepositoryAdapter, CommitFile } from './AbstractRepositoryAdapter'
2
+ import { CodeRepository } from './CodeRepository'
3
+
4
+ export { AbstractRepositoryAdapter, CodeRepository }
5
+ export type { CommitFile }