declastruct-github 1.0.0
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/LICENSE +21 -0
- package/dist/.test/assets/getSampleGithubContext.d.ts +6 -0
- package/dist/.test/assets/getSampleGithubContext.js +18 -0
- package/dist/.test/assets/getSampleGithubContext.js.map +1 -0
- package/dist/.test/assets/getSampleRepo.d.ts +9 -0
- package/dist/.test/assets/getSampleRepo.js +19 -0
- package/dist/.test/assets/getSampleRepo.js.map +1 -0
- package/dist/access/daos/DeclaredGithubBranchDao.d.ts +10 -0
- package/dist/access/daos/DeclaredGithubBranchDao.js +35 -0
- package/dist/access/daos/DeclaredGithubBranchDao.js.map +1 -0
- package/dist/access/daos/DeclaredGithubBranchProtectionDao.d.ts +9 -0
- package/dist/access/daos/DeclaredGithubBranchProtectionDao.js +34 -0
- package/dist/access/daos/DeclaredGithubBranchProtectionDao.js.map +1 -0
- package/dist/access/daos/DeclaredGithubRepoConfigDao.d.ts +9 -0
- package/dist/access/daos/DeclaredGithubRepoConfigDao.js +34 -0
- package/dist/access/daos/DeclaredGithubRepoConfigDao.js.map +1 -0
- package/dist/access/daos/DeclaredGithubRepoDao.d.ts +9 -0
- package/dist/access/daos/DeclaredGithubRepoDao.js +34 -0
- package/dist/access/daos/DeclaredGithubRepoDao.js.map +1 -0
- package/dist/access/sdks/getGithubClient.d.ts +8 -0
- package/dist/access/sdks/getGithubClient.js +22 -0
- package/dist/access/sdks/getGithubClient.js.map +1 -0
- package/dist/contract/sdks/declastruct.acceptance.test.d.ts +1 -0
- package/dist/contract/sdks/declastruct.acceptance.test.js +104 -0
- package/dist/contract/sdks/declastruct.acceptance.test.js.map +1 -0
- package/dist/contract/sdks/index.d.ts +10 -0
- package/dist/contract/sdks/index.js +20 -0
- package/dist/contract/sdks/index.js.map +1 -0
- package/dist/domain.objects/ContextGithubApi.d.ts +9 -0
- package/dist/domain.objects/ContextGithubApi.js +3 -0
- package/dist/domain.objects/ContextGithubApi.js.map +1 -0
- package/dist/domain.objects/DeclaredGithubBranch.d.ts +39 -0
- package/dist/domain.objects/DeclaredGithubBranch.js +12 -0
- package/dist/domain.objects/DeclaredGithubBranch.js.map +1 -0
- package/dist/domain.objects/DeclaredGithubBranchProtection.d.ts +108 -0
- package/dist/domain.objects/DeclaredGithubBranchProtection.js +12 -0
- package/dist/domain.objects/DeclaredGithubBranchProtection.js.map +1 -0
- package/dist/domain.objects/DeclaredGithubRepo.d.ts +57 -0
- package/dist/domain.objects/DeclaredGithubRepo.js +9 -0
- package/dist/domain.objects/DeclaredGithubRepo.js.map +1 -0
- package/dist/domain.objects/DeclaredGithubRepoConfig.d.ts +100 -0
- package/dist/domain.objects/DeclaredGithubRepoConfig.js +12 -0
- package/dist/domain.objects/DeclaredGithubRepoConfig.js.map +1 -0
- package/dist/domain.objects/DeclastructGithubProvider.d.ts +17 -0
- package/dist/domain.objects/DeclastructGithubProvider.js +3 -0
- package/dist/domain.objects/DeclastructGithubProvider.js.map +1 -0
- package/dist/domain.operations/branch/castToDeclaredGithubBranch.d.ts +15 -0
- package/dist/domain.operations/branch/castToDeclaredGithubBranch.js +39 -0
- package/dist/domain.operations/branch/castToDeclaredGithubBranch.js.map +1 -0
- package/dist/domain.operations/branch/getBranch.d.ts +14 -0
- package/dist/domain.operations/branch/getBranch.integration.test.d.ts +1 -0
- package/dist/domain.operations/branch/getBranch.integration.test.js +59 -0
- package/dist/domain.operations/branch/getBranch.integration.test.js.map +1 -0
- package/dist/domain.operations/branch/getBranch.js +50 -0
- package/dist/domain.operations/branch/getBranch.js.map +1 -0
- package/dist/domain.operations/branch/getBranchCommitShaByRepoDefault.d.ts +11 -0
- package/dist/domain.operations/branch/getBranchCommitShaByRepoDefault.js +37 -0
- package/dist/domain.operations/branch/getBranchCommitShaByRepoDefault.js.map +1 -0
- package/dist/domain.operations/branch/getBranches.d.ts +23 -0
- package/dist/domain.operations/branch/getBranches.integration.test.d.ts +1 -0
- package/dist/domain.operations/branch/getBranches.integration.test.js +40 -0
- package/dist/domain.operations/branch/getBranches.integration.test.js.map +1 -0
- package/dist/domain.operations/branch/getBranches.js +33 -0
- package/dist/domain.operations/branch/getBranches.js.map +1 -0
- package/dist/domain.operations/branch/setBranch.d.ts +12 -0
- package/dist/domain.operations/branch/setBranch.integration.test.d.ts +1 -0
- package/dist/domain.operations/branch/setBranch.integration.test.js +65 -0
- package/dist/domain.operations/branch/setBranch.integration.test.js.map +1 -0
- package/dist/domain.operations/branch/setBranch.js +100 -0
- package/dist/domain.operations/branch/setBranch.js.map +1 -0
- package/dist/domain.operations/branch/setBranch.test.d.ts +1 -0
- package/dist/domain.operations/branch/setBranch.test.js +151 -0
- package/dist/domain.operations/branch/setBranch.test.js.map +1 -0
- package/dist/domain.operations/branchProtection/castToDeclaredGithubBranchProtection.d.ts +14 -0
- package/dist/domain.operations/branchProtection/castToDeclaredGithubBranchProtection.js +66 -0
- package/dist/domain.operations/branchProtection/castToDeclaredGithubBranchProtection.js.map +1 -0
- package/dist/domain.operations/branchProtection/getBranchProtection.d.ts +14 -0
- package/dist/domain.operations/branchProtection/getBranchProtection.integration.test.d.ts +1 -0
- package/dist/domain.operations/branchProtection/getBranchProtection.integration.test.js +63 -0
- package/dist/domain.operations/branchProtection/getBranchProtection.integration.test.js.map +1 -0
- package/dist/domain.operations/branchProtection/getBranchProtection.js +53 -0
- package/dist/domain.operations/branchProtection/getBranchProtection.js.map +1 -0
- package/dist/domain.operations/branchProtection/setBranchProtection.d.ts +12 -0
- package/dist/domain.operations/branchProtection/setBranchProtection.integration.test.d.ts +1 -0
- package/dist/domain.operations/branchProtection/setBranchProtection.integration.test.js +96 -0
- package/dist/domain.operations/branchProtection/setBranchProtection.integration.test.js.map +1 -0
- package/dist/domain.operations/branchProtection/setBranchProtection.js +90 -0
- package/dist/domain.operations/branchProtection/setBranchProtection.js.map +1 -0
- package/dist/domain.operations/branchProtection/setBranchProtection.test.d.ts +1 -0
- package/dist/domain.operations/branchProtection/setBranchProtection.test.js +173 -0
- package/dist/domain.operations/branchProtection/setBranchProtection.test.js.map +1 -0
- package/dist/domain.operations/provider/getDeclastructGithubProvider.d.ts +11 -0
- package/dist/domain.operations/provider/getDeclastructGithubProvider.integration.test.d.ts +1 -0
- package/dist/domain.operations/provider/getDeclastructGithubProvider.integration.test.js +212 -0
- package/dist/domain.operations/provider/getDeclastructGithubProvider.integration.test.js.map +1 -0
- package/dist/domain.operations/provider/getDeclastructGithubProvider.js +44 -0
- package/dist/domain.operations/provider/getDeclastructGithubProvider.js.map +1 -0
- package/dist/domain.operations/repo/castToDeclaredGithubRepo.d.ts +10 -0
- package/dist/domain.operations/repo/castToDeclaredGithubRepo.js +42 -0
- package/dist/domain.operations/repo/castToDeclaredGithubRepo.js.map +1 -0
- package/dist/domain.operations/repo/getRepo.d.ts +14 -0
- package/dist/domain.operations/repo/getRepo.integration.test.d.ts +1 -0
- package/dist/domain.operations/repo/getRepo.integration.test.js +45 -0
- package/dist/domain.operations/repo/getRepo.integration.test.js.map +1 -0
- package/dist/domain.operations/repo/getRepo.js +38 -0
- package/dist/domain.operations/repo/getRepo.js.map +1 -0
- package/dist/domain.operations/repo/getRepos.d.ts +21 -0
- package/dist/domain.operations/repo/getRepos.integration.test.d.ts +1 -0
- package/dist/domain.operations/repo/getRepos.integration.test.js +28 -0
- package/dist/domain.operations/repo/getRepos.integration.test.js.map +1 -0
- package/dist/domain.operations/repo/getRepos.js +41 -0
- package/dist/domain.operations/repo/getRepos.js.map +1 -0
- package/dist/domain.operations/repo/setRepo.d.ts +12 -0
- package/dist/domain.operations/repo/setRepo.integration.test.d.ts +1 -0
- package/dist/domain.operations/repo/setRepo.integration.test.js +29 -0
- package/dist/domain.operations/repo/setRepo.integration.test.js.map +1 -0
- package/dist/domain.operations/repo/setRepo.js +70 -0
- package/dist/domain.operations/repo/setRepo.js.map +1 -0
- package/dist/domain.operations/repo/setRepo.test.d.ts +1 -0
- package/dist/domain.operations/repo/setRepo.test.js +150 -0
- package/dist/domain.operations/repo/setRepo.test.js.map +1 -0
- package/dist/domain.operations/repoConfig/castToDeclaredGithubRepoConfig.d.ts +15 -0
- package/dist/domain.operations/repoConfig/castToDeclaredGithubRepoConfig.js +36 -0
- package/dist/domain.operations/repoConfig/castToDeclaredGithubRepoConfig.js.map +1 -0
- package/dist/domain.operations/repoConfig/getRepoConfig.d.ts +14 -0
- package/dist/domain.operations/repoConfig/getRepoConfig.integration.test.d.ts +1 -0
- package/dist/domain.operations/repoConfig/getRepoConfig.integration.test.js +55 -0
- package/dist/domain.operations/repoConfig/getRepoConfig.integration.test.js.map +1 -0
- package/dist/domain.operations/repoConfig/getRepoConfig.js +47 -0
- package/dist/domain.operations/repoConfig/getRepoConfig.js.map +1 -0
- package/dist/domain.operations/repoConfig/setRepoConfig.d.ts +12 -0
- package/dist/domain.operations/repoConfig/setRepoConfig.integration.test.d.ts +1 -0
- package/dist/domain.operations/repoConfig/setRepoConfig.integration.test.js +87 -0
- package/dist/domain.operations/repoConfig/setRepoConfig.integration.test.js.map +1 -0
- package/dist/domain.operations/repoConfig/setRepoConfig.js +65 -0
- package/dist/domain.operations/repoConfig/setRepoConfig.js.map +1 -0
- package/package.json +104 -0
- package/readme.md +181 -0
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const test_fns_1 = require("test-fns");
|
|
4
|
+
const getSampleGithubContext_1 = require("../../.test/assets/getSampleGithubContext");
|
|
5
|
+
const DeclaredGithubBranchProtection_1 = require("../../domain.objects/DeclaredGithubBranchProtection");
|
|
6
|
+
const DeclaredGithubRepoConfig_1 = require("../../domain.objects/DeclaredGithubRepoConfig");
|
|
7
|
+
const getDeclastructGithubProvider_1 = require("./getDeclastructGithubProvider");
|
|
8
|
+
const log = console;
|
|
9
|
+
/**
|
|
10
|
+
* .what = integration tests for declastruct github provider
|
|
11
|
+
* .why = validates provider interface works correctly with real github API
|
|
12
|
+
*/
|
|
13
|
+
describe('getDeclastructGithubProvider', () => {
|
|
14
|
+
const githubContext = (0, getSampleGithubContext_1.getSampleGithubContext)();
|
|
15
|
+
(0, test_fns_1.given)('a declastruct github provider', () => {
|
|
16
|
+
// create provider with credentials
|
|
17
|
+
const provider = (0, getDeclastructGithubProvider_1.getDeclastructGithubProvider)({
|
|
18
|
+
credentials: {
|
|
19
|
+
token: githubContext.github.token,
|
|
20
|
+
},
|
|
21
|
+
}, { log });
|
|
22
|
+
(0, test_fns_1.then)('should have correct name', () => {
|
|
23
|
+
expect(provider.name).toBe('github');
|
|
24
|
+
});
|
|
25
|
+
(0, test_fns_1.then)('should have all required DAOs', () => {
|
|
26
|
+
expect(provider.daos.DeclaredGithubRepo).toBeDefined();
|
|
27
|
+
expect(provider.daos.DeclaredGithubBranch).toBeDefined();
|
|
28
|
+
expect(provider.daos.DeclaredGithubRepoConfig).toBeDefined();
|
|
29
|
+
expect(provider.daos.DeclaredGithubBranchProtection).toBeDefined();
|
|
30
|
+
});
|
|
31
|
+
(0, test_fns_1.then)('should have lifecycle hooks', () => {
|
|
32
|
+
expect(provider.hooks.beforeAll).toBeDefined();
|
|
33
|
+
expect(provider.hooks.afterAll).toBeDefined();
|
|
34
|
+
});
|
|
35
|
+
(0, test_fns_1.then)('should have github context with token', () => {
|
|
36
|
+
expect(provider.context.github.token).toBe(githubContext.github.token);
|
|
37
|
+
});
|
|
38
|
+
(0, test_fns_1.when)('using repo dao', () => {
|
|
39
|
+
const repoDao = provider.daos.DeclaredGithubRepo;
|
|
40
|
+
(0, test_fns_1.then)('should have get.byUnique method', () => {
|
|
41
|
+
expect(repoDao.get.byUnique).toBeDefined();
|
|
42
|
+
});
|
|
43
|
+
(0, test_fns_1.then)('should have get.byRef method', () => {
|
|
44
|
+
expect(repoDao.get.byRef).toBeDefined();
|
|
45
|
+
});
|
|
46
|
+
(0, test_fns_1.then)('should have set.finsert method', () => {
|
|
47
|
+
expect(repoDao.set.finsert).toBeDefined();
|
|
48
|
+
});
|
|
49
|
+
(0, test_fns_1.then)('should have set.upsert method', () => {
|
|
50
|
+
expect(repoDao.set.upsert).toBeDefined();
|
|
51
|
+
});
|
|
52
|
+
(0, test_fns_1.then)('can get repo by unique', async () => {
|
|
53
|
+
/**
|
|
54
|
+
* .what = validates byUnique can fetch existing repo from github
|
|
55
|
+
* .why = ensures read operations work correctly via provider interface
|
|
56
|
+
*/
|
|
57
|
+
const repo = await repoDao.get.byUnique({
|
|
58
|
+
owner: 'ehmpathy',
|
|
59
|
+
name: 'declastruct-github-demo',
|
|
60
|
+
}, provider.context);
|
|
61
|
+
// verify repo was fetched
|
|
62
|
+
expect(repo).toBeDefined();
|
|
63
|
+
expect(repo?.name).toBe('declastruct-github-demo');
|
|
64
|
+
expect(repo?.owner).toBe('ehmpathy');
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
(0, test_fns_1.when)('using branch dao', () => {
|
|
68
|
+
const branchDao = provider.daos.DeclaredGithubBranch;
|
|
69
|
+
(0, test_fns_1.then)('should have get.byUnique method', () => {
|
|
70
|
+
expect(branchDao.get.byUnique).toBeDefined();
|
|
71
|
+
});
|
|
72
|
+
(0, test_fns_1.then)('should have get.byRef method', () => {
|
|
73
|
+
expect(branchDao.get.byRef).toBeDefined();
|
|
74
|
+
});
|
|
75
|
+
(0, test_fns_1.then)('should have set.finsert method', () => {
|
|
76
|
+
expect(branchDao.set.finsert).toBeDefined();
|
|
77
|
+
});
|
|
78
|
+
(0, test_fns_1.then)('should have set.upsert method', () => {
|
|
79
|
+
expect(branchDao.set.upsert).toBeDefined();
|
|
80
|
+
});
|
|
81
|
+
(0, test_fns_1.then)('can get branch by unique', async () => {
|
|
82
|
+
/**
|
|
83
|
+
* .what = validates byUnique can fetch existing branch from github
|
|
84
|
+
* .why = ensures read operations work correctly via provider interface
|
|
85
|
+
*/
|
|
86
|
+
const branch = await branchDao.get.byUnique({
|
|
87
|
+
repo: { owner: 'ehmpathy', name: 'declastruct-github-demo' },
|
|
88
|
+
name: 'main',
|
|
89
|
+
}, provider.context);
|
|
90
|
+
// verify branch was fetched
|
|
91
|
+
expect(branch).toBeDefined();
|
|
92
|
+
expect(branch?.name).toBe('main');
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
(0, test_fns_1.when)('using repo config dao', () => {
|
|
96
|
+
const repoConfigDao = provider.daos.DeclaredGithubRepoConfig;
|
|
97
|
+
(0, test_fns_1.then)('should have get.byUnique method', () => {
|
|
98
|
+
expect(repoConfigDao.get.byUnique).toBeDefined();
|
|
99
|
+
});
|
|
100
|
+
(0, test_fns_1.then)('should have get.byRef method', () => {
|
|
101
|
+
expect(repoConfigDao.get.byRef).toBeDefined();
|
|
102
|
+
});
|
|
103
|
+
(0, test_fns_1.then)('should have set.finsert method', () => {
|
|
104
|
+
expect(repoConfigDao.set.finsert).toBeDefined();
|
|
105
|
+
});
|
|
106
|
+
(0, test_fns_1.then)('should have set.upsert method', () => {
|
|
107
|
+
expect(repoConfigDao.set.upsert).toBeDefined();
|
|
108
|
+
});
|
|
109
|
+
(0, test_fns_1.then)('can get repo config by unique', async () => {
|
|
110
|
+
/**
|
|
111
|
+
* .what = validates byUnique can fetch existing repo config from github
|
|
112
|
+
* .why = ensures read operations work correctly via provider interface
|
|
113
|
+
*/
|
|
114
|
+
const config = await repoConfigDao.get.byUnique({
|
|
115
|
+
repo: { owner: 'ehmpathy', name: 'declastruct-github-demo' },
|
|
116
|
+
}, provider.context);
|
|
117
|
+
// verify config was fetched
|
|
118
|
+
expect(config).toBeDefined();
|
|
119
|
+
expect(config?.repo.name).toBe('declastruct-github-demo');
|
|
120
|
+
});
|
|
121
|
+
(0, test_fns_1.then)('can upsert repo config idempotently', async () => {
|
|
122
|
+
/**
|
|
123
|
+
* .what = validates upsert creates or updates repo config on github
|
|
124
|
+
* .why = ensures write operations work correctly via provider interface
|
|
125
|
+
* .note = uses minimal safe configuration for demo repo
|
|
126
|
+
*/
|
|
127
|
+
// define desired repo configuration
|
|
128
|
+
const desiredConfig = DeclaredGithubRepoConfig_1.DeclaredGithubRepoConfig.as({
|
|
129
|
+
repo: { owner: 'ehmpathy', name: 'declastruct-github-demo' },
|
|
130
|
+
hasIssues: true,
|
|
131
|
+
hasProjects: false,
|
|
132
|
+
hasWiki: false,
|
|
133
|
+
hasDownloads: true,
|
|
134
|
+
isTemplate: false,
|
|
135
|
+
defaultBranch: 'main',
|
|
136
|
+
allowSquashMerge: true,
|
|
137
|
+
allowMergeCommit: false,
|
|
138
|
+
allowRebaseMerge: false,
|
|
139
|
+
allowAutoMerge: false,
|
|
140
|
+
deleteBranchOnMerge: true,
|
|
141
|
+
allowUpdateBranch: true,
|
|
142
|
+
});
|
|
143
|
+
// upsert
|
|
144
|
+
const result = await repoConfigDao.set.upsert(desiredConfig, provider.context);
|
|
145
|
+
// verify upsert succeeded
|
|
146
|
+
expect(result).toBeDefined();
|
|
147
|
+
expect(result.repo.name).toBe('declastruct-github-demo');
|
|
148
|
+
});
|
|
149
|
+
});
|
|
150
|
+
(0, test_fns_1.when)('using branch protection dao', () => {
|
|
151
|
+
const branchProtectionDao = provider.daos.DeclaredGithubBranchProtection;
|
|
152
|
+
(0, test_fns_1.then)('should have get.byUnique method', () => {
|
|
153
|
+
expect(branchProtectionDao.get.byUnique).toBeDefined();
|
|
154
|
+
});
|
|
155
|
+
(0, test_fns_1.then)('should have get.byRef method', () => {
|
|
156
|
+
expect(branchProtectionDao.get.byRef).toBeDefined();
|
|
157
|
+
});
|
|
158
|
+
(0, test_fns_1.then)('should have set.finsert method', () => {
|
|
159
|
+
expect(branchProtectionDao.set.finsert).toBeDefined();
|
|
160
|
+
});
|
|
161
|
+
(0, test_fns_1.then)('should have set.upsert method', () => {
|
|
162
|
+
expect(branchProtectionDao.set.upsert).toBeDefined();
|
|
163
|
+
});
|
|
164
|
+
(0, test_fns_1.then)('can get branch protection by unique', async () => {
|
|
165
|
+
/**
|
|
166
|
+
* .what = validates byUnique can fetch existing branch protection from github
|
|
167
|
+
* .why = ensures read operations work correctly via provider interface
|
|
168
|
+
*/
|
|
169
|
+
const protection = await branchProtectionDao.get.byUnique({
|
|
170
|
+
branch: {
|
|
171
|
+
repo: { owner: 'ehmpathy', name: 'declastruct-github-demo' },
|
|
172
|
+
name: 'main',
|
|
173
|
+
},
|
|
174
|
+
}, provider.context);
|
|
175
|
+
// verify protection was fetched (may be null if not configured)
|
|
176
|
+
expect(protection !== undefined).toBe(true);
|
|
177
|
+
});
|
|
178
|
+
(0, test_fns_1.then)('can upsert branch protection idempotently', async () => {
|
|
179
|
+
/**
|
|
180
|
+
* .what = validates upsert creates or updates branch protection on github
|
|
181
|
+
* .why = ensures write operations work correctly via provider interface
|
|
182
|
+
* .note = uses idempotent operation safe for demo repo
|
|
183
|
+
*/
|
|
184
|
+
// define desired protection configuration
|
|
185
|
+
const desiredProtection = DeclaredGithubBranchProtection_1.DeclaredGithubBranchProtection.as({
|
|
186
|
+
branch: {
|
|
187
|
+
repo: { owner: 'ehmpathy', name: 'declastruct-github-demo' },
|
|
188
|
+
name: 'main',
|
|
189
|
+
},
|
|
190
|
+
requiredStatusChecks: null,
|
|
191
|
+
enforceAdmins: false,
|
|
192
|
+
requiredPullRequestReviews: null,
|
|
193
|
+
restrictions: null,
|
|
194
|
+
requireLinearHistory: false,
|
|
195
|
+
allowsForcePushes: false,
|
|
196
|
+
allowsDeletions: false,
|
|
197
|
+
blockCreations: false,
|
|
198
|
+
requiredConversationResolution: false,
|
|
199
|
+
lockBranch: false,
|
|
200
|
+
allowForkSyncing: false,
|
|
201
|
+
});
|
|
202
|
+
// upsert
|
|
203
|
+
const result = await branchProtectionDao.set.upsert(desiredProtection, provider.context);
|
|
204
|
+
// verify upsert succeeded
|
|
205
|
+
expect(result).toBeDefined();
|
|
206
|
+
expect(result.branch.name).toBe('main');
|
|
207
|
+
expect(result.branch.repo.name).toBe('declastruct-github-demo');
|
|
208
|
+
});
|
|
209
|
+
});
|
|
210
|
+
});
|
|
211
|
+
});
|
|
212
|
+
//# sourceMappingURL=getDeclastructGithubProvider.integration.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getDeclastructGithubProvider.integration.test.js","sourceRoot":"","sources":["../../../src/domain.operations/provider/getDeclastructGithubProvider.integration.test.ts"],"names":[],"mappings":";;AAAA,uCAA6C;AAE7C,sFAAmF;AACnF,wGAAqG;AACrG,4FAAyF;AACzF,iFAA8E;AAE9E,MAAM,GAAG,GAAG,OAAO,CAAC;AAEpB;;;GAGG;AACH,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC5C,MAAM,aAAa,GAAG,IAAA,+CAAsB,GAAE,CAAC;IAE/C,IAAA,gBAAK,EAAC,+BAA+B,EAAE,GAAG,EAAE;QAC1C,mCAAmC;QACnC,MAAM,QAAQ,GAAG,IAAA,2DAA4B,EAC3C;YACE,WAAW,EAAE;gBACX,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,KAAK;aAClC;SACF,EACD,EAAE,GAAG,EAAE,CACR,CAAC;QAEF,IAAA,eAAI,EAAC,0BAA0B,EAAE,GAAG,EAAE;YACpC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,IAAA,eAAI,EAAC,+BAA+B,EAAE,GAAG,EAAE;YACzC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,WAAW,EAAE,CAAC;YACvD,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,WAAW,EAAE,CAAC;YACzD,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,WAAW,EAAE,CAAC;YAC7D,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,WAAW,EAAE,CAAC;QACrE,CAAC,CAAC,CAAC;QAEH,IAAA,eAAI,EAAC,6BAA6B,EAAE,GAAG,EAAE;YACvC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;YAC/C,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,IAAA,eAAI,EAAC,uCAAuC,EAAE,GAAG,EAAE;YACjD,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACzE,CAAC,CAAC,CAAC;QAEH,IAAA,eAAI,EAAC,gBAAgB,EAAE,GAAG,EAAE;YAC1B,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC;YAEjD,IAAA,eAAI,EAAC,iCAAiC,EAAE,GAAG,EAAE;gBAC3C,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;YAC7C,CAAC,CAAC,CAAC;YAEH,IAAA,eAAI,EAAC,8BAA8B,EAAE,GAAG,EAAE;gBACxC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;YAC1C,CAAC,CAAC,CAAC;YAEH,IAAA,eAAI,EAAC,gCAAgC,EAAE,GAAG,EAAE;gBAC1C,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;YAC5C,CAAC,CAAC,CAAC;YAEH,IAAA,eAAI,EAAC,+BAA+B,EAAE,GAAG,EAAE;gBACzC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;YAC3C,CAAC,CAAC,CAAC;YAEH,IAAA,eAAI,EAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;gBACxC;;;mBAGG;gBACH,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CACrC;oBACE,KAAK,EAAE,UAAU;oBACjB,IAAI,EAAE,yBAAyB;iBAChC,EACD,QAAQ,CAAC,OAAO,CACjB,CAAC;gBAEF,0BAA0B;gBAC1B,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;gBAC3B,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;gBACnD,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACvC,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAA,eAAI,EAAC,kBAAkB,EAAE,GAAG,EAAE;YAC5B,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC;YAErD,IAAA,eAAI,EAAC,iCAAiC,EAAE,GAAG,EAAE;gBAC3C,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;YAC/C,CAAC,CAAC,CAAC;YAEH,IAAA,eAAI,EAAC,8BAA8B,EAAE,GAAG,EAAE;gBACxC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;YAC5C,CAAC,CAAC,CAAC;YAEH,IAAA,eAAI,EAAC,gCAAgC,EAAE,GAAG,EAAE;gBAC1C,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;YAC9C,CAAC,CAAC,CAAC;YAEH,IAAA,eAAI,EAAC,+BAA+B,EAAE,GAAG,EAAE;gBACzC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;YAC7C,CAAC,CAAC,CAAC;YAEH,IAAA,eAAI,EAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;gBAC1C;;;mBAGG;gBACH,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,QAAQ,CACzC;oBACE,IAAI,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,yBAAyB,EAAE;oBAC5D,IAAI,EAAE,MAAM;iBACb,EACD,QAAQ,CAAC,OAAO,CACjB,CAAC;gBAEF,4BAA4B;gBAC5B,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;gBAC7B,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACpC,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAA,eAAI,EAAC,uBAAuB,EAAE,GAAG,EAAE;YACjC,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,wBAAwB,CAAC;YAE7D,IAAA,eAAI,EAAC,iCAAiC,EAAE,GAAG,EAAE;gBAC3C,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;YACnD,CAAC,CAAC,CAAC;YAEH,IAAA,eAAI,EAAC,8BAA8B,EAAE,GAAG,EAAE;gBACxC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;YAChD,CAAC,CAAC,CAAC;YAEH,IAAA,eAAI,EAAC,gCAAgC,EAAE,GAAG,EAAE;gBAC1C,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;YAClD,CAAC,CAAC,CAAC;YAEH,IAAA,eAAI,EAAC,+BAA+B,EAAE,GAAG,EAAE;gBACzC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;YACjD,CAAC,CAAC,CAAC;YAEH,IAAA,eAAI,EAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;gBAC/C;;;mBAGG;gBACH,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,QAAQ,CAC7C;oBACE,IAAI,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,yBAAyB,EAAE;iBAC7D,EACD,QAAQ,CAAC,OAAO,CACjB,CAAC;gBAEF,4BAA4B;gBAC5B,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;gBAC7B,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;YAC5D,CAAC,CAAC,CAAC;YAEH,IAAA,eAAI,EAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;gBACrD;;;;mBAIG;gBAEH,oCAAoC;gBACpC,MAAM,aAAa,GAAG,mDAAwB,CAAC,EAAE,CAAC;oBAChD,IAAI,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,yBAAyB,EAAE;oBAC5D,SAAS,EAAE,IAAI;oBACf,WAAW,EAAE,KAAK;oBAClB,OAAO,EAAE,KAAK;oBACd,YAAY,EAAE,IAAI;oBAClB,UAAU,EAAE,KAAK;oBACjB,aAAa,EAAE,MAAM;oBACrB,gBAAgB,EAAE,IAAI;oBACtB,gBAAgB,EAAE,KAAK;oBACvB,gBAAgB,EAAE,KAAK;oBACvB,cAAc,EAAE,KAAK;oBACrB,mBAAmB,EAAE,IAAI;oBACzB,iBAAiB,EAAE,IAAI;iBACxB,CAAC,CAAC;gBAEH,SAAS;gBACT,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,MAAO,CAC5C,aAAa,EACb,QAAQ,CAAC,OAAO,CACjB,CAAC;gBAEF,0BAA0B;gBAC1B,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;gBAC7B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;YAC3D,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAA,eAAI,EAAC,6BAA6B,EAAE,GAAG,EAAE;YACvC,MAAM,mBAAmB,GAAG,QAAQ,CAAC,IAAI,CAAC,8BAA8B,CAAC;YAEzE,IAAA,eAAI,EAAC,iCAAiC,EAAE,GAAG,EAAE;gBAC3C,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;YACzD,CAAC,CAAC,CAAC;YAEH,IAAA,eAAI,EAAC,8BAA8B,EAAE,GAAG,EAAE;gBACxC,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;YACtD,CAAC,CAAC,CAAC;YAEH,IAAA,eAAI,EAAC,gCAAgC,EAAE,GAAG,EAAE;gBAC1C,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;YACxD,CAAC,CAAC,CAAC;YAEH,IAAA,eAAI,EAAC,+BAA+B,EAAE,GAAG,EAAE;gBACzC,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;YACvD,CAAC,CAAC,CAAC;YAEH,IAAA,eAAI,EAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;gBACrD;;;mBAGG;gBACH,MAAM,UAAU,GAAG,MAAM,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CACvD;oBACE,MAAM,EAAE;wBACN,IAAI,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,yBAAyB,EAAE;wBAC5D,IAAI,EAAE,MAAM;qBACb;iBACF,EACD,QAAQ,CAAC,OAAO,CACjB,CAAC;gBAEF,gEAAgE;gBAChE,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9C,CAAC,CAAC,CAAC;YAEH,IAAA,eAAI,EAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;gBAC3D;;;;mBAIG;gBAEH,0CAA0C;gBAC1C,MAAM,iBAAiB,GAAG,+DAA8B,CAAC,EAAE,CAAC;oBAC1D,MAAM,EAAE;wBACN,IAAI,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,yBAAyB,EAAE;wBAC5D,IAAI,EAAE,MAAM;qBACb;oBACD,oBAAoB,EAAE,IAAI;oBAC1B,aAAa,EAAE,KAAK;oBACpB,0BAA0B,EAAE,IAAI;oBAChC,YAAY,EAAE,IAAI;oBAClB,oBAAoB,EAAE,KAAK;oBAC3B,iBAAiB,EAAE,KAAK;oBACxB,eAAe,EAAE,KAAK;oBACtB,cAAc,EAAE,KAAK;oBACrB,8BAA8B,EAAE,KAAK;oBACrC,UAAU,EAAE,KAAK;oBACjB,gBAAgB,EAAE,KAAK;iBACxB,CAAC,CAAC;gBAEH,SAAS;gBACT,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,GAAG,CAAC,MAAO,CAClD,iBAAiB,EACjB,QAAQ,CAAC,OAAO,CACjB,CAAC;gBAEF,0BAA0B;gBAC1B,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;gBAC7B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACxC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;YAClE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getDeclastructGithubProvider = void 0;
|
|
4
|
+
const declastruct_1 = require("declastruct");
|
|
5
|
+
const DeclaredGithubBranchDao_1 = require("../../access/daos/DeclaredGithubBranchDao");
|
|
6
|
+
const DeclaredGithubBranchProtectionDao_1 = require("../../access/daos/DeclaredGithubBranchProtectionDao");
|
|
7
|
+
const DeclaredGithubRepoConfigDao_1 = require("../../access/daos/DeclaredGithubRepoConfigDao");
|
|
8
|
+
const DeclaredGithubRepoDao_1 = require("../../access/daos/DeclaredGithubRepoDao");
|
|
9
|
+
/**
|
|
10
|
+
* .what = creates a declastruct provider for github resources
|
|
11
|
+
* .why = enables github resource management via declastruct framework
|
|
12
|
+
*/
|
|
13
|
+
const getDeclastructGithubProvider = (input, context) => {
|
|
14
|
+
// build context from credentials and log trail
|
|
15
|
+
const providerContext = {
|
|
16
|
+
...context,
|
|
17
|
+
github: {
|
|
18
|
+
token: input.credentials.token,
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
// assemble DAOs for all github resource types
|
|
22
|
+
const daos = {
|
|
23
|
+
DeclaredGithubRepo: DeclaredGithubRepoDao_1.DeclaredGithubRepoDao,
|
|
24
|
+
DeclaredGithubBranch: DeclaredGithubBranchDao_1.DeclaredGithubBranchDao,
|
|
25
|
+
DeclaredGithubRepoConfig: DeclaredGithubRepoConfigDao_1.DeclaredGithubRepoConfigDao,
|
|
26
|
+
DeclaredGithubBranchProtection: DeclaredGithubBranchProtectionDao_1.DeclaredGithubBranchProtectionDao,
|
|
27
|
+
};
|
|
28
|
+
// return provider with all required properties
|
|
29
|
+
return new declastruct_1.DeclastructProvider({
|
|
30
|
+
name: 'github',
|
|
31
|
+
daos,
|
|
32
|
+
context: providerContext,
|
|
33
|
+
hooks: {
|
|
34
|
+
beforeAll: async () => {
|
|
35
|
+
// no setup needed for github provider
|
|
36
|
+
},
|
|
37
|
+
afterAll: async () => {
|
|
38
|
+
// no teardown needed for github provider
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
});
|
|
42
|
+
};
|
|
43
|
+
exports.getDeclastructGithubProvider = getDeclastructGithubProvider;
|
|
44
|
+
//# sourceMappingURL=getDeclastructGithubProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getDeclastructGithubProvider.js","sourceRoot":"","sources":["../../../src/domain.operations/provider/getDeclastructGithubProvider.ts"],"names":[],"mappings":";;;AAAA,6CAAkD;AAGlD,uFAAoF;AACpF,2GAAwG;AACxG,+FAA4F;AAC5F,mFAAgF;AAIhF;;;GAGG;AACI,MAAM,4BAA4B,GAAG,CAC1C,KAIC,EACD,OAAwB,EACG,EAAE;IAC7B,+CAA+C;IAC/C,MAAM,eAAe,GAAuC;QAC1D,GAAG,OAAO;QACV,MAAM,EAAE;YACN,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,KAAK;SAC/B;KACF,CAAC;IAEF,8CAA8C;IAC9C,MAAM,IAAI,GAAG;QACX,kBAAkB,EAAE,6CAAqB;QACzC,oBAAoB,EAAE,iDAAuB;QAC7C,wBAAwB,EAAE,yDAA2B;QACrD,8BAA8B,EAAE,qEAAiC;KAClE,CAAC;IAEF,+CAA+C;IAC/C,OAAO,IAAI,iCAAmB,CAAC;QAC7B,IAAI,EAAE,QAAQ;QACd,IAAI;QACJ,OAAO,EAAE,eAAe;QACxB,KAAK,EAAE;YACL,SAAS,EAAE,KAAK,IAAI,EAAE;gBACpB,sCAAsC;YACxC,CAAC;YACD,QAAQ,EAAE,KAAK,IAAI,EAAE;gBACnB,yCAAyC;YAC3C,CAAC;SACF;KACF,CAAC,CAAC;AACL,CAAC,CAAC;AAtCW,QAAA,4BAA4B,gCAsCvC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Endpoints } from '@octokit/types';
|
|
2
|
+
import { HasMetadata } from 'type-fns';
|
|
3
|
+
import { DeclaredGithubRepo } from '../../domain.objects/DeclaredGithubRepo';
|
|
4
|
+
type GithubRepoResponse = Endpoints['GET /repos/{owner}/{repo}']['response']['data'] | Endpoints['GET /user/repos']['response']['data'][number] | Endpoints['GET /orgs/{org}/repos']['response']['data'][number];
|
|
5
|
+
/**
|
|
6
|
+
* .what = casts GitHub API repository response to DeclaredGithubRepo
|
|
7
|
+
* .why = transforms external API shape to our domain model with type safety and validation
|
|
8
|
+
*/
|
|
9
|
+
export declare const castToDeclaredGithubRepo: (input: GithubRepoResponse) => HasMetadata<DeclaredGithubRepo>;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.castToDeclaredGithubRepo = void 0;
|
|
4
|
+
const uni_time_1 = require("@ehmpathy/uni-time");
|
|
5
|
+
const helpful_errors_1 = require("helpful-errors");
|
|
6
|
+
const type_fns_1 = require("type-fns");
|
|
7
|
+
const DeclaredGithubRepo_1 = require("../../domain.objects/DeclaredGithubRepo");
|
|
8
|
+
/**
|
|
9
|
+
* .what = extracts required value from object or throws
|
|
10
|
+
* .why = ensures type safety and fail-fast behavior for missing required fields
|
|
11
|
+
*/
|
|
12
|
+
const getOrThrow = (obj, key) => {
|
|
13
|
+
const value = obj[key];
|
|
14
|
+
// if its not undefined, return it
|
|
15
|
+
if ((0, type_fns_1.isNotUndefined)(value))
|
|
16
|
+
return value;
|
|
17
|
+
// otherwise, fail fast
|
|
18
|
+
helpful_errors_1.UnexpectedCodePathError.throw(`${String(key)} not found on response`, {
|
|
19
|
+
input: obj,
|
|
20
|
+
key,
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* .what = casts GitHub API repository response to DeclaredGithubRepo
|
|
25
|
+
* .why = transforms external API shape to our domain model with type safety and validation
|
|
26
|
+
*/
|
|
27
|
+
const castToDeclaredGithubRepo = (input) => {
|
|
28
|
+
return DeclaredGithubRepo_1.DeclaredGithubRepo.as({
|
|
29
|
+
id: getOrThrow(input, 'id'),
|
|
30
|
+
owner: getOrThrow(getOrThrow(input, 'owner'), 'login'),
|
|
31
|
+
name: getOrThrow(input, 'name'),
|
|
32
|
+
description: input.description ?? null,
|
|
33
|
+
homepage: input.homepage ?? null,
|
|
34
|
+
private: getOrThrow(input, 'private'),
|
|
35
|
+
visibility: input.visibility ?? 'public',
|
|
36
|
+
archived: input.archived ?? false,
|
|
37
|
+
createdAt: input.created_at ? (0, uni_time_1.asUniDateTime)(input.created_at) : undefined,
|
|
38
|
+
updatedAt: input.updated_at ? (0, uni_time_1.asUniDateTime)(input.updated_at) : undefined,
|
|
39
|
+
});
|
|
40
|
+
};
|
|
41
|
+
exports.castToDeclaredGithubRepo = castToDeclaredGithubRepo;
|
|
42
|
+
//# sourceMappingURL=castToDeclaredGithubRepo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"castToDeclaredGithubRepo.js","sourceRoot":"","sources":["../../../src/domain.operations/repo/castToDeclaredGithubRepo.ts"],"names":[],"mappings":";;;AAAA,iDAAmD;AAEnD,mDAAyD;AACzD,uCAAqE;AAErE,gFAA6E;AAE7E;;;GAGG;AACH,MAAM,UAAU,GAAG,CACjB,GAAM,EACN,GAAM,EACc,EAAE;IACtB,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IAEvB,kCAAkC;IAClC,IAAI,IAAA,yBAAc,EAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAExC,uBAAuB;IACvB,wCAAuB,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,wBAAwB,EAAE;QACpE,KAAK,EAAE,GAAG;QACV,GAAG;KACJ,CAAC,CAAC;AACL,CAAC,CAAC;AAOF;;;GAGG;AACI,MAAM,wBAAwB,GAAG,CACtC,KAAyB,EACQ,EAAE;IACnC,OAAO,uCAAkB,CAAC,EAAE,CAAC;QAC3B,EAAE,EAAE,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC;QAC3B,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QACtD,IAAI,EAAE,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC;QAC/B,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,IAAI;QACtC,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,IAAI;QAChC,OAAO,EAAE,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC;QACrC,UAAU,EACP,KAAK,CAAC,UAAgD,IAAI,QAAQ;QACrE,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,KAAK;QACjC,SAAS,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,IAAA,wBAAa,EAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS;QACzE,SAAS,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,IAAA,wBAAa,EAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS;KAC1E,CAAoC,CAAC;AACxC,CAAC,CAAC;AAhBW,QAAA,wBAAwB,4BAgBnC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { RefByUnique } from 'domain-objects';
|
|
2
|
+
import { HasMetadata, PickOne } from 'type-fns';
|
|
3
|
+
import { VisualogicContext } from 'visualogic';
|
|
4
|
+
import { ContextGithubApi } from '../../domain.objects/ContextGithubApi';
|
|
5
|
+
import { DeclaredGithubRepo } from '../../domain.objects/DeclaredGithubRepo';
|
|
6
|
+
/**
|
|
7
|
+
* .what = gets a GitHub repository
|
|
8
|
+
* .why = retrieves current state of a repo from GitHub API for declarative management
|
|
9
|
+
*/
|
|
10
|
+
export declare const getRepo: (input: {
|
|
11
|
+
by: PickOne<{
|
|
12
|
+
unique: RefByUnique<typeof DeclaredGithubRepo>;
|
|
13
|
+
}>;
|
|
14
|
+
}, context: ContextGithubApi & VisualogicContext) => Promise<HasMetadata<DeclaredGithubRepo> | null>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const test_fns_1 = require("test-fns");
|
|
4
|
+
const getSampleGithubContext_1 = require("../../.test/assets/getSampleGithubContext");
|
|
5
|
+
const getSampleRepo_1 = require("../../.test/assets/getSampleRepo");
|
|
6
|
+
const getRepo_1 = require("./getRepo");
|
|
7
|
+
const log = console;
|
|
8
|
+
describe('getRepo', () => {
|
|
9
|
+
const context = { log, ...(0, getSampleGithubContext_1.getSampleGithubContext)() };
|
|
10
|
+
(0, test_fns_1.given)('a live example repo exists', () => {
|
|
11
|
+
(0, test_fns_1.then)('we should be able to get its state', async () => {
|
|
12
|
+
const sampleRepo = (0, getSampleRepo_1.getSampleRepo)({
|
|
13
|
+
owner: 'ehmpathy',
|
|
14
|
+
name: 'declastruct-github',
|
|
15
|
+
});
|
|
16
|
+
const repo = await (0, getRepo_1.getRepo)({
|
|
17
|
+
by: {
|
|
18
|
+
unique: {
|
|
19
|
+
owner: sampleRepo.owner,
|
|
20
|
+
name: sampleRepo.name,
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
}, context);
|
|
24
|
+
console.log(repo);
|
|
25
|
+
expect(repo).toBeDefined();
|
|
26
|
+
expect(repo?.name).toBe(sampleRepo.name);
|
|
27
|
+
expect(repo?.owner).toBe(sampleRepo.owner);
|
|
28
|
+
expect(repo?.id).toBeDefined();
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
(0, test_fns_1.given)('a repo that does not exist', () => {
|
|
32
|
+
(0, test_fns_1.then)('it should return null', async () => {
|
|
33
|
+
const repo = await (0, getRepo_1.getRepo)({
|
|
34
|
+
by: {
|
|
35
|
+
unique: {
|
|
36
|
+
owner: 'ehmpathy',
|
|
37
|
+
name: 'repo-that-does-not-exist-99999',
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
}, context);
|
|
41
|
+
expect(repo).toBeNull();
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
//# sourceMappingURL=getRepo.integration.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getRepo.integration.test.js","sourceRoot":"","sources":["../../../src/domain.operations/repo/getRepo.integration.test.ts"],"names":[],"mappings":";;AAAA,uCAAuC;AAEvC,sFAAmF;AACnF,oEAAiE;AACjE,uCAAoC;AAEpC,MAAM,GAAG,GAAG,OAAO,CAAC;AAEpB,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;IACvB,MAAM,OAAO,GAAG,EAAE,GAAG,EAAE,GAAG,IAAA,+CAAsB,GAAE,EAAE,CAAC;IAErD,IAAA,gBAAK,EAAC,4BAA4B,EAAE,GAAG,EAAE;QACvC,IAAA,eAAI,EAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;YACpD,MAAM,UAAU,GAAG,IAAA,6BAAa,EAAC;gBAC/B,KAAK,EAAE,UAAU;gBACjB,IAAI,EAAE,oBAAoB;aAC3B,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,MAAM,IAAA,iBAAO,EACxB;gBACE,EAAE,EAAE;oBACF,MAAM,EAAE;wBACN,KAAK,EAAE,UAAU,CAAC,KAAK;wBACvB,IAAI,EAAE,UAAU,CAAC,IAAI;qBACtB;iBACF;aACF,EACD,OAAO,CACR,CAAC;YAEF,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClB,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;YAC3B,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACzC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAC3C,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QACjC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,gBAAK,EAAC,4BAA4B,EAAE,GAAG,EAAE;QACvC,IAAA,eAAI,EAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;YACvC,MAAM,IAAI,GAAG,MAAM,IAAA,iBAAO,EACxB;gBACE,EAAE,EAAE;oBACF,MAAM,EAAE;wBACN,KAAK,EAAE,UAAU;wBACjB,IAAI,EAAE,gCAAgC;qBACvC;iBACF;aACF,EACD,OAAO,CACR,CAAC;YAEF,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC1B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getRepo = void 0;
|
|
4
|
+
const as_procedure_1 = require("as-procedure");
|
|
5
|
+
const helpful_errors_1 = require("helpful-errors");
|
|
6
|
+
const getGithubClient_1 = require("../../access/sdks/getGithubClient");
|
|
7
|
+
const castToDeclaredGithubRepo_1 = require("./castToDeclaredGithubRepo");
|
|
8
|
+
/**
|
|
9
|
+
* .what = gets a GitHub repository
|
|
10
|
+
* .why = retrieves current state of a repo from GitHub API for declarative management
|
|
11
|
+
*/
|
|
12
|
+
exports.getRepo = (0, as_procedure_1.asProcedure)(async (input, context) => {
|
|
13
|
+
// get cached GitHub client
|
|
14
|
+
const github = (0, getGithubClient_1.getGithubClient)({}, context);
|
|
15
|
+
// determine owner and repo name from input
|
|
16
|
+
const { owner, repo } = (() => {
|
|
17
|
+
if (input.by.unique)
|
|
18
|
+
return { owner: input.by.unique.owner, repo: input.by.unique.name };
|
|
19
|
+
helpful_errors_1.UnexpectedCodePathError.throw('not referenced by unique. how not?', {
|
|
20
|
+
input,
|
|
21
|
+
});
|
|
22
|
+
})();
|
|
23
|
+
// execute the GitHub API call
|
|
24
|
+
try {
|
|
25
|
+
const response = await github.repos.get({ owner, repo });
|
|
26
|
+
return (0, castToDeclaredGithubRepo_1.castToDeclaredGithubRepo)(response.data);
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
if (!(error instanceof Error))
|
|
30
|
+
throw error;
|
|
31
|
+
// return null for 404/not found
|
|
32
|
+
if (error.message.includes('Not Found'))
|
|
33
|
+
return null;
|
|
34
|
+
// throw helpful error for all other failures
|
|
35
|
+
throw new helpful_errors_1.HelpfulError('github.getRepo error', { cause: error });
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
//# sourceMappingURL=getRepo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getRepo.js","sourceRoot":"","sources":["../../../src/domain.operations/repo/getRepo.ts"],"names":[],"mappings":";;;AAAA,+CAA2C;AAE3C,mDAAuE;AAIvE,uEAAoE;AAGpE,yEAAsE;AAEtE;;;GAGG;AACU,QAAA,OAAO,GAAG,IAAA,0BAAW,EAChC,KAAK,EACH,KAIC,EACD,OAA6C,EACI,EAAE;IACnD,2BAA2B;IAC3B,MAAM,MAAM,GAAG,IAAA,iCAAe,EAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAE5C,2CAA2C;IAC3C,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,EAAE;QAC5B,IAAI,KAAK,CAAC,EAAE,CAAC,MAAM;YACjB,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAEtE,wCAAuB,CAAC,KAAK,CAAC,oCAAoC,EAAE;YAClE,KAAK;SACN,CAAC,CAAC;IACL,CAAC,CAAC,EAAE,CAAC;IAEL,8BAA8B;IAC9B,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACzD,OAAO,IAAA,mDAAwB,EAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC;YAAE,MAAM,KAAK,CAAC;QAE3C,gCAAgC;QAChC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;YAAE,OAAO,IAAI,CAAC;QAErD,6CAA6C;QAC7C,MAAM,IAAI,6BAAY,CAAC,sBAAsB,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IACnE,CAAC;AACH,CAAC,CACF,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { HasMetadata } from 'type-fns';
|
|
2
|
+
import { VisualogicContext } from 'visualogic';
|
|
3
|
+
import { ContextGithubApi } from '../../domain.objects/ContextGithubApi';
|
|
4
|
+
import { DeclaredGithubRepo } from '../../domain.objects/DeclaredGithubRepo';
|
|
5
|
+
/**
|
|
6
|
+
* .what = lists GitHub repositories
|
|
7
|
+
* .why = retrieves multiple repos from GitHub API for declarative management
|
|
8
|
+
*/
|
|
9
|
+
export declare const getRepos: (input: {
|
|
10
|
+
where?: {
|
|
11
|
+
owner?: string;
|
|
12
|
+
};
|
|
13
|
+
page?: {
|
|
14
|
+
range?: {
|
|
15
|
+
until: {
|
|
16
|
+
page: number;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
limit?: number;
|
|
20
|
+
};
|
|
21
|
+
}, context: ContextGithubApi & VisualogicContext) => Promise<HasMetadata<DeclaredGithubRepo>[]>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const test_fns_1 = require("test-fns");
|
|
4
|
+
const getSampleGithubContext_1 = require("../../.test/assets/getSampleGithubContext");
|
|
5
|
+
const getRepos_1 = require("./getRepos");
|
|
6
|
+
const log = console;
|
|
7
|
+
describe('getRepos', () => {
|
|
8
|
+
const context = { log, ...(0, getSampleGithubContext_1.getSampleGithubContext)() };
|
|
9
|
+
(0, test_fns_1.given)('an authenticated user with repos', () => {
|
|
10
|
+
(0, test_fns_1.then)('we should be able to get a list', async () => {
|
|
11
|
+
const repos = await (0, getRepos_1.getRepos)({ page: { limit: 10 } }, context);
|
|
12
|
+
console.log(repos);
|
|
13
|
+
expect(repos.length).toBeGreaterThan(0);
|
|
14
|
+
});
|
|
15
|
+
});
|
|
16
|
+
(0, test_fns_1.given)('a specific owner', () => {
|
|
17
|
+
(0, test_fns_1.then)('we should be able to list their repos', async () => {
|
|
18
|
+
const repos = await (0, getRepos_1.getRepos)({
|
|
19
|
+
where: { owner: 'ehmpathy' },
|
|
20
|
+
page: { limit: 5 },
|
|
21
|
+
}, context);
|
|
22
|
+
console.log(repos);
|
|
23
|
+
expect(repos.length).toBeGreaterThan(0);
|
|
24
|
+
expect(repos.every((repo) => repo.owner === 'ehmpathy')).toBe(true);
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
//# sourceMappingURL=getRepos.integration.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getRepos.integration.test.js","sourceRoot":"","sources":["../../../src/domain.operations/repo/getRepos.integration.test.ts"],"names":[],"mappings":";;AAAA,uCAAuC;AAEvC,sFAAmF;AACnF,yCAAsC;AAEtC,MAAM,GAAG,GAAG,OAAO,CAAC;AAEpB,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACxB,MAAM,OAAO,GAAG,EAAE,GAAG,EAAE,GAAG,IAAA,+CAAsB,GAAE,EAAE,CAAC;IAErD,IAAA,gBAAK,EAAC,kCAAkC,EAAE,GAAG,EAAE;QAC7C,IAAA,eAAI,EAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;YACjD,MAAM,KAAK,GAAG,MAAM,IAAA,mBAAQ,EAAC,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;YAC/D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACnB,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,gBAAK,EAAC,kBAAkB,EAAE,GAAG,EAAE;QAC7B,IAAA,eAAI,EAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;YACvD,MAAM,KAAK,GAAG,MAAM,IAAA,mBAAQ,EAC1B;gBACE,KAAK,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE;gBAC5B,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;aACnB,EACD,OAAO,CACR,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACnB,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACxC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getRepos = void 0;
|
|
4
|
+
const helpful_errors_1 = require("helpful-errors");
|
|
5
|
+
const getGithubClient_1 = require("../../access/sdks/getGithubClient");
|
|
6
|
+
const castToDeclaredGithubRepo_1 = require("./castToDeclaredGithubRepo");
|
|
7
|
+
/**
|
|
8
|
+
* .what = lists GitHub repositories
|
|
9
|
+
* .why = retrieves multiple repos from GitHub API for declarative management
|
|
10
|
+
*/
|
|
11
|
+
const getRepos = async (input, context) => {
|
|
12
|
+
// get cached GitHub client
|
|
13
|
+
const github = (0, getGithubClient_1.getGithubClient)({}, context);
|
|
14
|
+
// execute the GitHub API call
|
|
15
|
+
try {
|
|
16
|
+
const response = await (async () => {
|
|
17
|
+
// if owner is specified, list repos for that org/user
|
|
18
|
+
if (input.where?.owner) {
|
|
19
|
+
return github.repos.listForOrg({
|
|
20
|
+
org: input.where.owner,
|
|
21
|
+
page: input.page?.range?.until.page,
|
|
22
|
+
per_page: input.page?.limit,
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
// otherwise, list repos for authenticated user
|
|
26
|
+
return github.repos.listForAuthenticatedUser({
|
|
27
|
+
page: input.page?.range?.until.page,
|
|
28
|
+
per_page: input.page?.limit,
|
|
29
|
+
});
|
|
30
|
+
})();
|
|
31
|
+
const repos = response.data ?? [];
|
|
32
|
+
return repos.map(castToDeclaredGithubRepo_1.castToDeclaredGithubRepo);
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
if (!(error instanceof Error))
|
|
36
|
+
throw error;
|
|
37
|
+
throw new helpful_errors_1.HelpfulError('github.getRepos error', { cause: error });
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
exports.getRepos = getRepos;
|
|
41
|
+
//# sourceMappingURL=getRepos.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getRepos.js","sourceRoot":"","sources":["../../../src/domain.operations/repo/getRepos.ts"],"names":[],"mappings":";;;AAAA,mDAA8C;AAI9C,uEAAoE;AAGpE,yEAAsE;AAEtE;;;GAGG;AACI,MAAM,QAAQ,GAAG,KAAK,EAC3B,KAQC,EACD,OAA6C,EACD,EAAE;IAC9C,2BAA2B;IAC3B,MAAM,MAAM,GAAG,IAAA,iCAAe,EAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAE5C,8BAA8B;IAC9B,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE;YACjC,sDAAsD;YACtD,IAAI,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC;gBACvB,OAAO,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;oBAC7B,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK;oBACtB,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI;oBACnC,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK;iBAC5B,CAAC,CAAC;YACL,CAAC;YAED,+CAA+C;YAC/C,OAAO,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC;gBAC3C,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI;gBACnC,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK;aAC5B,CAAC,CAAC;QACL,CAAC,CAAC,EAAE,CAAC;QAEL,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC;QAClC,OAAO,KAAK,CAAC,GAAG,CAAC,mDAAwB,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC;YAAE,MAAM,KAAK,CAAC;QAC3C,MAAM,IAAI,6BAAY,CAAC,uBAAuB,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IACpE,CAAC;AACH,CAAC,CAAC;AAxCW,QAAA,QAAQ,YAwCnB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { HasMetadata, PickOne } from 'type-fns';
|
|
2
|
+
import { VisualogicContext } from 'visualogic';
|
|
3
|
+
import { ContextGithubApi } from '../../domain.objects/ContextGithubApi';
|
|
4
|
+
import { DeclaredGithubRepo } from '../../domain.objects/DeclaredGithubRepo';
|
|
5
|
+
/**
|
|
6
|
+
* .what = sets a GitHub repository: upsert or finsert
|
|
7
|
+
* .why = enables declarative creation and updates of repos following declastruct patterns
|
|
8
|
+
*/
|
|
9
|
+
export declare const setRepo: (input: PickOne<{
|
|
10
|
+
finsert: DeclaredGithubRepo;
|
|
11
|
+
upsert: DeclaredGithubRepo;
|
|
12
|
+
}>, context: ContextGithubApi & VisualogicContext) => Promise<HasMetadata<DeclaredGithubRepo>>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const test_fns_1 = require("test-fns");
|
|
4
|
+
const getSampleGithubContext_1 = require("../../.test/assets/getSampleGithubContext");
|
|
5
|
+
const log = console;
|
|
6
|
+
describe('setRepo', () => {
|
|
7
|
+
const context = { log, ...(0, getSampleGithubContext_1.getSampleGithubContext)() };
|
|
8
|
+
(0, test_fns_1.given)('a repo declaration for finsert', () => {
|
|
9
|
+
(0, test_fns_1.then)('it should return existing repo if it exists', async () => {
|
|
10
|
+
/**
|
|
11
|
+
* .note = this test is skipped because setRepo requires permissions
|
|
12
|
+
* to create/update repos which may not be available in all test environments
|
|
13
|
+
* .what = validates that finsert returns existing repo without modification
|
|
14
|
+
*/
|
|
15
|
+
expect(true).toBe(true); // placeholder
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
(0, test_fns_1.given)('a repo declaration for upsert', () => {
|
|
19
|
+
(0, test_fns_1.then)('it should create or update the repo', async () => {
|
|
20
|
+
/**
|
|
21
|
+
* .note = this test is skipped because setRepo requires write permissions
|
|
22
|
+
* which may not be available in integration test environment
|
|
23
|
+
* .what = validates that upsert creates new repo or updates existing one
|
|
24
|
+
*/
|
|
25
|
+
expect(true).toBe(true); // placeholder
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
//# sourceMappingURL=setRepo.integration.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setRepo.integration.test.js","sourceRoot":"","sources":["../../../src/domain.operations/repo/setRepo.integration.test.ts"],"names":[],"mappings":";;AAAA,uCAAuC;AAEvC,sFAAmF;AAGnF,MAAM,GAAG,GAAG,OAAO,CAAC;AAEpB,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;IACvB,MAAM,OAAO,GAAG,EAAE,GAAG,EAAE,GAAG,IAAA,+CAAsB,GAAE,EAAE,CAAC;IAErD,IAAA,gBAAK,EAAC,gCAAgC,EAAE,GAAG,EAAE;QAC3C,IAAA,eAAI,EAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;YAC7D;;;;eAIG;YACH,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc;QACzC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,gBAAK,EAAC,+BAA+B,EAAE,GAAG,EAAE;QAC1C,IAAA,eAAI,EAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YACrD;;;;eAIG;YACH,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc;QACzC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|