jsii-release 0.2.674 → 0.2.676

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.
Files changed (36) hide show
  1. package/.gitattributes +1 -1
  2. package/.projenrc.ts +25 -10
  3. package/README.md +27 -0
  4. package/bin/publib-ca +2 -0
  5. package/lib/bin/publib-ca.d.ts +1 -0
  6. package/lib/bin/publib-ca.js +154 -0
  7. package/lib/codeartifact/codeartifact-cli.d.ts +31 -0
  8. package/lib/codeartifact/codeartifact-cli.js +133 -0
  9. package/lib/codeartifact/codeartifact-repo.d.ts +69 -0
  10. package/lib/codeartifact/codeartifact-repo.js +299 -0
  11. package/lib/codeartifact/display.d.ts +1 -0
  12. package/lib/codeartifact/display.js +11 -0
  13. package/lib/codeartifact/files.d.ts +15 -0
  14. package/lib/codeartifact/files.js +104 -0
  15. package/lib/codeartifact/shell.d.ts +51 -0
  16. package/lib/codeartifact/shell.js +132 -0
  17. package/lib/codeartifact/staging/maven.d.ts +5 -0
  18. package/lib/codeartifact/staging/maven.js +120 -0
  19. package/lib/codeartifact/staging/npm.d.ts +4 -0
  20. package/lib/codeartifact/staging/npm.js +84 -0
  21. package/lib/codeartifact/staging/nuget.d.ts +4 -0
  22. package/lib/codeartifact/staging/nuget.js +76 -0
  23. package/lib/codeartifact/staging/parallel-shell.d.ts +6 -0
  24. package/lib/codeartifact/staging/parallel-shell.js +49 -0
  25. package/lib/codeartifact/staging/pip.d.ts +4 -0
  26. package/lib/codeartifact/staging/pip.js +52 -0
  27. package/lib/codeartifact/usage-dir.d.ts +55 -0
  28. package/lib/codeartifact/usage-dir.js +160 -0
  29. package/lib/help/corking.d.ts +15 -0
  30. package/lib/help/corking.js +57 -0
  31. package/lib/help/shell.d.ts +4 -0
  32. package/lib/help/shell.js +4 -2
  33. package/lib/help/sleep.d.ts +1 -0
  34. package/lib/help/sleep.js +8 -0
  35. package/package.json +16 -2
  36. package/package.json.bak +16 -2
package/.gitattributes CHANGED
@@ -5,13 +5,13 @@
5
5
  /.gitattributes linguist-generated
6
6
  /.github/pull_request_template.md linguist-generated
7
7
  /.github/workflows/auto-approve.yml linguist-generated
8
+ /.github/workflows/auto-merge.yml linguist-generated
8
9
  /.github/workflows/build.yml linguist-generated
9
10
  /.github/workflows/integ.yml linguist-generated
10
11
  /.github/workflows/pull-request-lint.yml linguist-generated
11
12
  /.github/workflows/release.yml linguist-generated
12
13
  /.github/workflows/upgrade-main.yml linguist-generated
13
14
  /.gitignore linguist-generated
14
- /.mergify.yml linguist-generated
15
15
  /.npmignore linguist-generated
16
16
  /.npmrc linguist-generated
17
17
  /.projen/** linguist-generated
package/.projenrc.ts CHANGED
@@ -1,26 +1,38 @@
1
1
  import { readdirSync } from 'fs';
2
- import { typescript, github } from 'projen';
2
+ import * as cdklabs from 'cdklabs-projen-project-types';
3
+ import { github } from 'projen';
3
4
 
4
- const project = new typescript.TypeScriptProject({
5
+ const project = new cdklabs.CdklabsTypeScriptProject({
6
+ private: false,
5
7
  projenrcTs: true,
6
8
  defaultReleaseBranch: 'main',
7
9
  name: 'publib',
8
10
  description: 'Release jsii modules to multiple package managers',
9
11
  releaseToNpm: true,
10
12
  repository: 'https://github.com/cdklabs/publib.git',
11
- authorName: 'Amazon Web Services',
12
- authorOrganization: true,
13
13
  authorUrl: 'https://aws.amazon.com',
14
14
  homepage: 'https://github.com/cdklabs/publib',
15
- autoApproveOptions: {
16
- allowedUsernames: ['cdklabs-automation'],
17
- secret: 'GITHUB_TOKEN',
18
- },
19
15
  devDeps: [
20
16
  'ts-node',
21
17
  '@aws-sdk/client-sts',
18
+ '@types/glob',
19
+ '@types/node@^14.17.0',
20
+ '@types/yargs@^17',
21
+ 'cdklabs-projen-project-types',
22
22
  ],
23
23
  autoApproveUpgrades: true,
24
+ deps: [
25
+ '@aws-sdk/client-codeartifact',
26
+ '@aws-sdk/credential-providers',
27
+ '@aws-sdk/types',
28
+ 'glob@10.0.0', // Can't use a newer version of glob, it adds a CLI that depends on 'jackspeak' which has crazy dependencies
29
+ 'yargs@^17',
30
+ 'p-queue@6', // Last non-ESM version
31
+ ],
32
+ workflowNodeVersion: '16.x',
33
+ minNodeVersion: '16.0.0',
34
+ enablePRAutoMerge: true,
35
+ setNodeEngineVersion: false,
24
36
  });
25
37
 
26
38
  // we can't use 9.x because it doesn't work with node 10.
@@ -44,6 +56,10 @@ for (const f of readdirSync('./bin').filter(file => file.startsWith('publib')))
44
56
  project.addBins({ [shim]: './bin/jsii-release-shim' });
45
57
  }
46
58
 
59
+ const integ = project.addTask('integ');
60
+ // This replaces the 'testMatch' in package.json with a different glob
61
+ integ.exec('jest --testMatch "<rootDir>/test/**/*.integ.ts"');
62
+
47
63
  //////////////////////////////////////////////////////////////////////
48
64
 
49
65
  const test = github.GitHub.of(project)?.addWorkflow('integ');
@@ -133,8 +149,7 @@ test?.addJob('test', {
133
149
  },
134
150
  {
135
151
  name: 'Run integration tests',
136
- // Replace the 'testMatch' in package.json
137
- run: 'npx jest --testMatch "<rootDir>/test/**/*.integ.ts"',
152
+ run: 'yarn integ',
138
153
  },
139
154
  ],
140
155
  });
package/README.md CHANGED
@@ -230,6 +230,33 @@ Repository tags will be in the following format:
230
230
  |`GIT_COMMIT_MESSAGE`|Optional|The commit message. Defaults to 'chore(release): $VERSION'.|
231
231
  |`DRYRUN`|Optional|Set to "true" for a dry run.|
232
232
 
233
+ ## Publish to CodeArtifact for testing
234
+
235
+ This package contains the `publib-ca` CLI tool which is intended to use to publish
236
+ packages to CodeArtifact for testing (in a pipeline, before publishing to the
237
+ actual public package managers).
238
+
239
+ Use the following commands:
240
+
241
+ `publib-ca create [--no-gc] [--no-login]` creates a new CodeArtifact repository
242
+ with a random name, with upstreams configured for all supported public package
243
+ managers. By default this command runs the `gc` and `login` subcommands
244
+ automatically.
245
+
246
+ `publib-ca login --repo NAME [--cmd COMMAND]` logs in to a CodeArtifact repository and prepares some files that configure package managers for use with this CodeArtifact repository. If `--cmd` is given, the command is run in an environment
247
+ where all supported package managers have been configured for the given repository.
248
+ Otherwise, activate these settings in the current bash shell by running
249
+ `source ~/.publib-ca/usage/activate.bash`. This will set some
250
+ environment variables and copy some files into the current directory. (Note: the
251
+ CodeArtifact repository used here does not have to be created using `publib-ca create`. It
252
+ is fine if it already existed beforehand).
253
+
254
+ `publib-ca gc` collects old repositories created using `publib-ca create`.
255
+
256
+ `publib-ca publish [--repo NAME] DIRECTORY` publishes all packages in the given
257
+ directory to the given repository. If `--repo` is not given, the most recently
258
+ logged-into repository is used, if the login session is still valid.
259
+
233
260
  ## Roadmap
234
261
 
235
262
  * [X] GitHub Support: Maven
package/bin/publib-ca ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('../lib/bin/publib-ca.js');
@@ -0,0 +1 @@
1
+ export declare function main(): Promise<void>;
@@ -0,0 +1,154 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.main = void 0;
27
+ /**
28
+ * Publib CodeArtifact CLI
29
+ */
30
+ /* eslint-disable no-console */
31
+ const yargs = __importStar(require("yargs"));
32
+ const codeartifact_cli_1 = require("../codeartifact/codeartifact-cli");
33
+ const display_1 = require("../codeartifact/display");
34
+ async function main() {
35
+ await yargs
36
+ .usage('$0 <command>')
37
+ .option('assume-role-arn', {
38
+ description: 'Role to assume before doing CodeArtifact calls',
39
+ alias: 'a',
40
+ requiresArg: true,
41
+ type: 'string',
42
+ })
43
+ .command('create', 'Create a temporary CodeArtifact repository with upstreams', cmd => cmd
44
+ .option('gc', {
45
+ description: 'Garbage collect old repositories',
46
+ type: 'boolean',
47
+ default: true,
48
+ })
49
+ .option('login', {
50
+ description: 'Automatically log in to the newly created repository',
51
+ type: 'boolean',
52
+ default: true,
53
+ }), async (args) => {
54
+ const cli = new codeartifact_cli_1.CodeArtifactCli({
55
+ assumeRoleArn: args['assume-role-arn'],
56
+ });
57
+ if (args.gc) {
58
+ await cli.gc();
59
+ }
60
+ const repoName = await cli.create();
61
+ console.log(repoName);
62
+ if (args.login) {
63
+ await cli.login(repoName);
64
+ cli.usageDir.advertise();
65
+ }
66
+ })
67
+ .command('gc', 'Clean up day-old testing repositories', cmd => cmd, async (args) => {
68
+ const cli = new codeartifact_cli_1.CodeArtifactCli({
69
+ assumeRoleArn: args['assume-role-arn'],
70
+ });
71
+ await cli.gc();
72
+ })
73
+ .command('login', 'Login to a given repository', cmd => cmd
74
+ .option('repo', {
75
+ alias: 'r',
76
+ description: 'Name of the repository to log in to',
77
+ type: 'string',
78
+ requiresArg: true,
79
+ })
80
+ .option('cmd', {
81
+ alias: 'c',
82
+ description: 'Run a command in a shell set up for the target repository',
83
+ type: 'string',
84
+ requiresArg: true,
85
+ }), async (args) => {
86
+ const cli = new codeartifact_cli_1.CodeArtifactCli({
87
+ assumeRoleArn: args['assume-role-arn'],
88
+ });
89
+ await cli.login(args.repo);
90
+ if (args.cmd) {
91
+ await cli.runCommand(args.cmd);
92
+ }
93
+ else {
94
+ cli.usageDir.advertise();
95
+ }
96
+ })
97
+ .command('shell', 'Start a subshell with the repository activated', cmd => cmd
98
+ .option('repo', {
99
+ alias: 'r',
100
+ description: 'Name of the repository to log in to',
101
+ type: 'string',
102
+ requiresArg: true,
103
+ demandOption: false,
104
+ }), async (args) => {
105
+ var _a;
106
+ const cli = new codeartifact_cli_1.CodeArtifactCli({
107
+ assumeRoleArn: args['assume-role-arn'],
108
+ });
109
+ const repo = await cli.login(args.repo);
110
+ const defaultShell = process.platform === 'win32' ? 'cmd' : 'bash';
111
+ (0, display_1.header)(`Shell activated for ${repo.repositoryName}`);
112
+ await cli.runInteractively((_a = process.env.SHELL) !== null && _a !== void 0 ? _a : defaultShell);
113
+ })
114
+ .command('publish <DIRECTORY>', 'Publish a given directory', cmd => cmd
115
+ .positional('DIRECTORY', {
116
+ descripton: 'Directory distribution',
117
+ type: 'string',
118
+ demandOption: true,
119
+ })
120
+ .option('repo', {
121
+ alias: 'r',
122
+ description: 'Name of the repository to create (default: generate unique name)',
123
+ type: 'string',
124
+ requiresArg: true,
125
+ }), async (args) => {
126
+ const cli = new codeartifact_cli_1.CodeArtifactCli({
127
+ assumeRoleArn: args['assume-role-arn'],
128
+ });
129
+ await cli.publish(args.DIRECTORY, args.repo);
130
+ })
131
+ .command('delete', 'Delete testing repository', cmd => cmd
132
+ .option('repo', {
133
+ alias: 'r',
134
+ description: 'Name of the repository to cleanup (default: most recently logged in to)',
135
+ type: 'string',
136
+ requiresArg: true,
137
+ }), async (args) => {
138
+ const cli = new codeartifact_cli_1.CodeArtifactCli({
139
+ assumeRoleArn: args['assume-role-arn'],
140
+ });
141
+ await cli.delete(args.repo);
142
+ })
143
+ .demandCommand(1, 'You must supply a command')
144
+ .help()
145
+ .showHelpOnFail(false)
146
+ .parse();
147
+ }
148
+ exports.main = main;
149
+ main().catch(e => {
150
+ // eslint-disable-next-line no-console
151
+ console.error(e);
152
+ process.exitCode = 1;
153
+ });
154
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGliLWNhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Jpbi9wdWJsaWItY2EudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7R0FFRztBQUNILCtCQUErQjtBQUMvQiw2Q0FBK0I7QUFDL0IsdUVBQW1FO0FBQ25FLHFEQUFpRDtBQUUxQyxLQUFLLFVBQVUsSUFBSTtJQUN4QixNQUFNLEtBQUs7U0FDUixLQUFLLENBQUMsY0FBYyxDQUFDO1NBQ3JCLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRTtRQUN6QixXQUFXLEVBQUUsZ0RBQWdEO1FBQzdELEtBQUssRUFBRSxHQUFHO1FBQ1YsV0FBVyxFQUFFLElBQUk7UUFDakIsSUFBSSxFQUFFLFFBQVE7S0FDZixDQUFDO1NBQ0QsT0FBTyxDQUFDLFFBQVEsRUFBRSwyREFBMkQsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUc7U0FDdkYsTUFBTSxDQUFDLElBQUksRUFBRTtRQUNaLFdBQVcsRUFBRSxrQ0FBa0M7UUFDL0MsSUFBSSxFQUFFLFNBQVM7UUFDZixPQUFPLEVBQUUsSUFBSTtLQUNkLENBQUM7U0FDRCxNQUFNLENBQUMsT0FBTyxFQUFFO1FBQ2YsV0FBVyxFQUFFLHNEQUFzRDtRQUNuRSxJQUFJLEVBQUUsU0FBUztRQUNmLE9BQU8sRUFBRSxJQUFJO0tBQ2QsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRTtRQUVuQixNQUFNLEdBQUcsR0FBRyxJQUFJLGtDQUFlLENBQUM7WUFDOUIsYUFBYSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztTQUN2QyxDQUFDLENBQUM7UUFFSCxJQUFJLElBQUksQ0FBQyxFQUFFLEVBQUU7WUFDWCxNQUFNLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQztTQUNoQjtRQUVELE1BQU0sUUFBUSxHQUFHLE1BQU0sR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3BDLE9BQU8s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QUFDLENBQUMsQ0FBQyxFQUFFO0lBQ2Ysc0NBQXNDO0lBQ3RDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakIsT0FBTyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7QUFDdkIsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFB1YmxpYiBDb2RlQXJ0aWZhY3QgQ0xJXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbmltcG9ydCAqIGFzIHlhcmdzIGZyb20gJ3lhcmdzJztcbmltcG9ydCB7IENvZGVBcnRpZmFjdENsaSB9IGZyb20gJy4uL2NvZGVhcnRpZmFjdC9jb2RlYXJ0aWZhY3QtY2xpJztcbmltcG9ydCB7IGhlYWRlciB9IGZyb20gJy4uL2NvZGVhcnRpZmFjdC9kaXNwbGF5JztcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG1haW4oKSB7XG4gIGF3YWl0IHlhcmdzXG4gICAgLnVzYWdlKCckMCA8Y29tbWFuZD4nKVxuICAgIC5vcHRpb24oJ2Fzc3VtZS1yb2xlLWFybicsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnUm9sZSB0byBhc3N1bWUgYmVmb3JlIGRvaW5nIENvZGVBcnRpZmFjdCBjYWxscycsXG4gICAgICBhbGlhczogJ2EnLFxuICAgICAgcmVxdWlyZXNBcmc6IHRydWUsXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICB9KVxuICAgIC5jb21tYW5kKCdjcmVhdGUnLCAnQ3JlYXRlIGEgdGVtcG9yYXJ5IENvZGVBcnRpZmFjdCByZXBvc2l0b3J5IHdpdGggdXBzdHJlYW1zJywgY21kID0+IGNtZFxuICAgICAgLm9wdGlvbignZ2MnLCB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiAnR2FyYmFnZSBjb2xsZWN0IG9sZCByZXBvc2l0b3JpZXMnLFxuICAgICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgICB9KVxuICAgICAgLm9wdGlvbignbG9naW4nLCB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiAnQXV0b21hdGljYWxseSBsb2cgaW4gdG8gdGhlIG5ld2x5IGNyZWF0ZWQgcmVwb3NpdG9yeScsXG4gICAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICAgIH0pLCBhc3luYyAoYXJncykgPT4ge1xuXG4gICAgICBjb25zdCBjbGkgPSBuZXcgQ29kZUFydGlmYWN0Q2xpKHtcbiAgICAgICAgYXNzdW1lUm9sZUFybjogYXJnc1snYXNzdW1lLXJvbGUtYXJuJ10sXG4gICAgICB9KTtcblxuICAgICAgaWYgKGFyZ3MuZ2MpIHtcbiAgICAgICAgYXdhaXQgY2xpLmdjKCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlcG9OYW1lID0gYXdhaXQgY2xpLmNyZWF0ZSgpO1xuICAgICAgY29uc29sZS5sb2cocmVwb05hbWUpO1xuXG4gICAgICBpZiAoYXJncy5sb2dpbikge1xuICAgICAgICBhd2FpdCBjbGkubG9naW4ocmVwb05hbWUpO1xuICAgICAgICBjbGkudXNhZ2VEaXIuYWR2ZXJ0aXNlKCk7XG4gICAgICB9XG4gICAgfSlcbiAgICAuY29tbWFuZCgnZ2MnLCAnQ2xlYW4gdXAgZGF5LW9sZCB0ZXN0aW5nIHJlcG9zaXRvcmllcycsIGNtZCA9PiBjbWQsIGFzeW5jIChhcmdzKSA9PiB7XG4gICAgICBjb25zdCBjbGkgPSBuZXcgQ29kZUFydGlmYWN0Q2xpKHtcbiAgICAgICAgYXNzdW1lUm9sZUFybjogYXJnc1snYXNzdW1lLXJvbGUtYXJuJ10sXG4gICAgICB9KTtcbiAgICAgIGF3YWl0IGNsaS5nYygpO1xuICAgIH0pXG4gICAgLmNvbW1hbmQoJ2xvZ2luJywgJ0xvZ2luIHRvIGEgZ2l2ZW4gcmVwb3NpdG9yeScsIGNtZCA9PiBjbWRcbiAgICAgIC5vcHRpb24oJ3JlcG8nLCB7XG4gICAgICAgIGFsaWFzOiAncicsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnTmFtZSBvZiB0aGUgcmVwb3NpdG9yeSB0byBsb2cgaW4gdG8nLFxuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgcmVxdWlyZXNBcmc6IHRydWUsXG4gICAgICB9KVxuICAgICAgLm9wdGlvbignY21kJywge1xuICAgICAgICBhbGlhczogJ2MnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ1J1biBhIGNvbW1hbmQgaW4gYSBzaGVsbCBzZXQgdXAgZm9yIHRoZSB0YXJnZXQgcmVwb3NpdG9yeScsXG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICByZXF1aXJlc0FyZzogdHJ1ZSxcbiAgICAgIH0pLCBhc3luYyAoYXJncykgPT4ge1xuXG4gICAgICBjb25zdCBjbGkgPSBuZXcgQ29kZUFydGlmYWN0Q2xpKHtcbiAgICAgICAgYXNzdW1lUm9sZUFybjogYXJnc1snYXNzdW1lLXJvbGUtYXJuJ10sXG4gICAgICB9KTtcbiAgICAgIGF3YWl0IGNsaS5sb2dpbihhcmdzLnJlcG8pO1xuXG4gICAgICBpZiAoYXJncy5jbWQpIHtcbiAgICAgICAgYXdhaXQgY2xpLnJ1bkNvbW1hbmQoYXJncy5jbWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2xpLnVzYWdlRGlyLmFkdmVydGlzZSgpO1xuICAgICAgfVxuICAgIH0pXG4gICAgLmNvbW1hbmQoJ3NoZWxsJywgJ1N0YXJ0IGEgc3Vic2hlbGwgd2l0aCB0aGUgcmVwb3NpdG9yeSBhY3RpdmF0ZWQnLCBjbWQgPT4gY21kXG4gICAgICAub3B0aW9uKCdyZXBvJywge1xuICAgICAgICBhbGlhczogJ3InLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ05hbWUgb2YgdGhlIHJlcG9zaXRvcnkgdG8gbG9nIGluIHRvJyxcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIHJlcXVpcmVzQXJnOiB0cnVlLFxuICAgICAgICBkZW1hbmRPcHRpb246IGZhbHNlLFxuICAgICAgfSksIGFzeW5jIChhcmdzKSA9PiB7XG4gICAgICBjb25zdCBjbGkgPSBuZXcgQ29kZUFydGlmYWN0Q2xpKHtcbiAgICAgICAgYXNzdW1lUm9sZUFybjogYXJnc1snYXNzdW1lLXJvbGUtYXJuJ10sXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHJlcG8gPSBhd2FpdCBjbGkubG9naW4oYXJncy5yZXBvKTtcblxuICAgICAgY29uc3QgZGVmYXVsdFNoZWxsID0gcHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJyA/ICdjbWQnIDogJ2Jhc2gnO1xuXG4gICAgICBoZWFkZXIoYFNoZWxsIGFjdGl2YXRlZCBmb3IgJHtyZXBvLnJlcG9zaXRvcnlOYW1lfWApO1xuICAgICAgYXdhaXQgY2xpLnJ1bkludGVyYWN0aXZlbHkocHJvY2Vzcy5lbnYuU0hFTEwgPz8gZGVmYXVsdFNoZWxsKTtcbiAgICB9KVxuICAgIC5jb21tYW5kKCdwdWJsaXNoIDxESVJFQ1RPUlk+JywgJ1B1Ymxpc2ggYSBnaXZlbiBkaXJlY3RvcnknLCBjbWQgPT4gY21kXG4gICAgICAucG9zaXRpb25hbCgnRElSRUNUT1JZJywge1xuICAgICAgICBkZXNjcmlwdG9uOiAnRGlyZWN0b3J5IGRpc3RyaWJ1dGlvbicsXG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICBkZW1hbmRPcHRpb246IHRydWUsXG4gICAgICB9KVxuICAgICAgLm9wdGlvbigncmVwbycsIHtcbiAgICAgICAgYWxpYXM6ICdyJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdOYW1lIG9mIHRoZSByZXBvc2l0b3J5IHRvIGNyZWF0ZSAoZGVmYXVsdDogZ2VuZXJhdGUgdW5pcXVlIG5hbWUpJyxcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIHJlcXVpcmVzQXJnOiB0cnVlLFxuICAgICAgfSksIGFzeW5jIChhcmdzKSA9PiB7XG5cbiAgICAgIGNvbnN0IGNsaSA9IG5ldyBDb2RlQXJ0aWZhY3RDbGkoe1xuICAgICAgICBhc3N1bWVSb2xlQXJuOiBhcmdzWydhc3N1bWUtcm9sZS1hcm4nXSxcbiAgICAgIH0pO1xuICAgICAgYXdhaXQgY2xpLnB1Ymxpc2goYXJncy5ESVJFQ1RPUlksIGFyZ3MucmVwbyk7XG4gICAgfSlcbiAgICAuY29tbWFuZCgnZGVsZXRlJywgJ0RlbGV0ZSB0ZXN0aW5nIHJlcG9zaXRvcnknLCBjbWQgPT4gY21kXG4gICAgICAub3B0aW9uKCdyZXBvJywge1xuICAgICAgICBhbGlhczogJ3InLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ05hbWUgb2YgdGhlIHJlcG9zaXRvcnkgdG8gY2xlYW51cCAoZGVmYXVsdDogbW9zdCByZWNlbnRseSBsb2dnZWQgaW4gdG8pJyxcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIHJlcXVpcmVzQXJnOiB0cnVlLFxuICAgICAgfSksIGFzeW5jIChhcmdzKSA9PiB7XG5cbiAgICAgIGNvbnN0IGNsaSA9IG5ldyBDb2RlQXJ0aWZhY3RDbGkoe1xuICAgICAgICBhc3N1bWVSb2xlQXJuOiBhcmdzWydhc3N1bWUtcm9sZS1hcm4nXSxcbiAgICAgIH0pO1xuICAgICAgYXdhaXQgY2xpLmRlbGV0ZShhcmdzLnJlcG8pO1xuICAgIH0pXG4gICAgLmRlbWFuZENvbW1hbmQoMSwgJ1lvdSBtdXN0IHN1cHBseSBhIGNvbW1hbmQnKVxuICAgIC5oZWxwKClcbiAgICAuc2hvd0hlbHBPbkZhaWwoZmFsc2UpXG4gICAgLnBhcnNlKCk7XG59XG5cbm1haW4oKS5jYXRjaChlID0+IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgY29uc29sZS5lcnJvcihlKTtcbiAgcHJvY2Vzcy5leGl0Q29kZSA9IDE7XG59KTtcbiJdfQ==
@@ -0,0 +1,31 @@
1
+ import { LoginInformation } from './codeartifact-repo';
2
+ import { UsageDir } from './usage-dir';
3
+ export interface CodeArtifactCliOptions {
4
+ readonly assumeRoleArn?: string;
5
+ }
6
+ export declare class CodeArtifactCli {
7
+ private readonly options;
8
+ readonly usageDir: UsageDir;
9
+ constructor(options?: CodeArtifactCliOptions);
10
+ private get repoOptions();
11
+ /**
12
+ * Create a random repository, return its name
13
+ */
14
+ create(): Promise<string>;
15
+ /**
16
+ * Delete the given repo
17
+ */
18
+ delete(repoName?: string): Promise<void>;
19
+ /**
20
+ * Log in to the given repo, write activation instructins to the usage dir
21
+ */
22
+ login(repoName?: string): Promise<LoginInformation>;
23
+ publish(directory: string, repoName?: string): Promise<void>;
24
+ gc(): Promise<void>;
25
+ runCommand(command: string): Promise<void>;
26
+ runInteractively(command: string): Promise<void>;
27
+ /**
28
+ * Return a CodeArtifactRepo object, either from the name argument or the most recently activated repository
29
+ */
30
+ private repoFromName;
31
+ }
@@ -0,0 +1,133 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.CodeArtifactCli = void 0;
27
+ const child_process = __importStar(require("child_process"));
28
+ const path = __importStar(require("path"));
29
+ const credential_providers_1 = require("@aws-sdk/credential-providers");
30
+ const glob = __importStar(require("glob"));
31
+ const codeartifact_repo_1 = require("./codeartifact-repo");
32
+ const shell_1 = require("./shell");
33
+ const maven_1 = require("./staging/maven");
34
+ const npm_1 = require("./staging/npm");
35
+ const nuget_1 = require("./staging/nuget");
36
+ const pip_1 = require("./staging/pip");
37
+ const usage_dir_1 = require("./usage-dir");
38
+ const LOGIN_DATA_KEY = 'login';
39
+ class CodeArtifactCli {
40
+ constructor(options = {}) {
41
+ this.options = options;
42
+ this.usageDir = usage_dir_1.UsageDir.default();
43
+ }
44
+ get repoOptions() {
45
+ return {
46
+ credentials: this.options.assumeRoleArn ? (0, credential_providers_1.fromTemporaryCredentials)({
47
+ params: {
48
+ RoleArn: this.options.assumeRoleArn,
49
+ DurationSeconds: 3600,
50
+ RoleSessionName: 'publib-ca',
51
+ },
52
+ }) : undefined,
53
+ };
54
+ }
55
+ /**
56
+ * Create a random repository, return its name
57
+ */
58
+ async create() {
59
+ const repo = await codeartifact_repo_1.CodeArtifactRepo.createRandom(this.repoOptions);
60
+ return repo.repositoryName;
61
+ }
62
+ /**
63
+ * Delete the given repo
64
+ */
65
+ async delete(repoName) {
66
+ const repo = await this.repoFromName(repoName);
67
+ await repo.delete();
68
+ if (!repoName) {
69
+ await this.usageDir.delete();
70
+ }
71
+ }
72
+ /**
73
+ * Log in to the given repo, write activation instructins to the usage dir
74
+ */
75
+ async login(repoName) {
76
+ const repo = await this.repoFromName(repoName);
77
+ const login = await repo.login();
78
+ await this.usageDir.reset();
79
+ await this.usageDir.putJson(LOGIN_DATA_KEY, login);
80
+ await this.usageDir.addToEnv({
81
+ CODEARTIFACT_REPO: login.repositoryName,
82
+ });
83
+ await (0, npm_1.npmLogin)(login, this.usageDir);
84
+ await (0, pip_1.pipLogin)(login, this.usageDir);
85
+ await (0, maven_1.mavenLogin)(login, this.usageDir);
86
+ await (0, nuget_1.nugetLogin)(login, this.usageDir);
87
+ return login;
88
+ }
89
+ async publish(directory, repoName) {
90
+ const repo = await this.repoFromName(repoName);
91
+ const login = await repo.login();
92
+ await (0, npm_1.uploadNpmPackages)(glob.sync(path.join(directory, 'js', '*.tgz')), login, this.usageDir);
93
+ await (0, pip_1.uploadPythonPackages)(glob.sync(path.join(directory, 'python', '*')), login);
94
+ await (0, maven_1.uploadJavaPackages)(glob.sync(path.join(directory, 'java', '**', '*.pom')), login, this.usageDir);
95
+ await (0, nuget_1.uploadDotnetPackages)(glob.sync(path.join(directory, 'dotnet', '**', '*.nupkg')), this.usageDir);
96
+ console.log('🛍 Configuring packages for upstream versions');
97
+ await repo.markAllUpstreamAllow();
98
+ }
99
+ async gc() {
100
+ await codeartifact_repo_1.CodeArtifactRepo.gc(this.repoOptions);
101
+ }
102
+ async runCommand(command) {
103
+ await this.usageDir.activateInCurrentProcess();
104
+ await (0, shell_1.shell)(command, {
105
+ shell: true,
106
+ show: 'always',
107
+ });
108
+ }
109
+ async runInteractively(command) {
110
+ await this.usageDir.activateInCurrentProcess();
111
+ child_process.execSync(command, {
112
+ env: process.env,
113
+ stdio: ['inherit', 'inherit', 'inherit'],
114
+ });
115
+ }
116
+ /**
117
+ * Return a CodeArtifactRepo object, either from the name argument or the most recently activated repository
118
+ */
119
+ async repoFromName(repoName) {
120
+ if (repoName) {
121
+ return codeartifact_repo_1.CodeArtifactRepo.existing(repoName, this.repoOptions);
122
+ }
123
+ const loginInfo = await this.usageDir.readJson(LOGIN_DATA_KEY);
124
+ if (loginInfo && loginInfo.expirationTimeMs > Date.now()) {
125
+ const existing = codeartifact_repo_1.CodeArtifactRepo.existing(loginInfo.repositoryName, this.repoOptions);
126
+ existing.setLoginInformation(loginInfo);
127
+ return existing;
128
+ }
129
+ throw new Error('No repository name given, and no repository activated recently. Login to a repo or pass a repo name.');
130
+ }
131
+ }
132
+ exports.CodeArtifactCli = CodeArtifactCli;
133
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZWFydGlmYWN0LWNsaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb2RlYXJ0aWZhY3QvY29kZWFydGlmYWN0LWNsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZEQUErQztBQUMvQywyQ0FBNkI7QUFDN0Isd0VBQXlFO0FBQ3pFLDJDQUE2QjtBQUM3QiwyREFBa0c7QUFDbEcsbUNBQWdDO0FBQ2hDLDJDQUFpRTtBQUNqRSx1Q0FBNEQ7QUFDNUQsMkNBQW1FO0FBQ25FLHVDQUErRDtBQUMvRCwyQ0FBdUM7QUFFdkMsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDO0FBTS9CLE1BQWEsZUFBZTtJQUcxQixZQUE2QixVQUFrQyxFQUFFO1FBQXBDLFlBQU8sR0FBUCxPQUFPLENBQTZCO1FBRmpELGFBQVEsR0FBRyxvQkFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBRzlDLENBQUM7SUFFRCxJQUFZLFdBQVc7UUFDckIsT0FBTztZQUNMLFdBQVcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBQSwrQ0FBd0IsRUFBQztnQkFDakUsTUFBTSxFQUFFO29CQUNOLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWE7b0JBQ25DLGVBQWUsRUFBRSxJQUFJO29CQUNyQixlQUFlLEVBQUUsV0FBVztpQkFDN0I7YUFDRixDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7U0FDZixDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLE1BQU07UUFDakIsTUFBTSxJQUFJLEdBQUcsTUFBTSxvQ0FBZ0IsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25FLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQWlC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TSxJQUFBLGFBQUssRUFBQyxPQUFPLEVBQUU7WUFDbkIsS0FBSyxFQUFFLElBQUk7WUFDWCxJQUFJLEVBQUUsUUFBUTtTQUNmLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsT0FBZTtRQUMzQyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUMvQyxhQUFhLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRTtZQUM5QixHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUc7WUFDaEIsS0FBSyxFQUFFLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUM7U0FDekMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ssS0FBSyxDQUFDLFlBQVksQ0FBQyxRQUFpQjtRQUMxQyxJQUFJLFFBQVEsRUFBRTtZQUNaLE9BQU8sb0NBQWdCLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDOUQ7UUFFRCxNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFtQixjQUFjLENBQUMsQ0FBRTtRQUVsRixJQUFJLFNBQVMsSUFBSSxTQUFTLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ3hELE1BQU0sUUFBUSxHQUFHLG9DQUFnQixDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN2RixRQUFRLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDeEMsT0FBTyxRQUFRLENBQUM7U0FDakI7UUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLHNHQUFzRyxDQUFDLENBQUM7SUFDMUgsQ0FBQztDQUNGO0FBbEhELDBDQWtIQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNoaWxkX3Byb2Nlc3MgZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgZnJvbVRlbXBvcmFyeUNyZWRlbnRpYWxzIH0gZnJvbSAnQGF3cy1zZGsvY3JlZGVudGlhbC1wcm92aWRlcnMnO1xuaW1wb3J0ICogYXMgZ2xvYiBmcm9tICdnbG9iJztcbmltcG9ydCB7IENvZGVBcnRpZmFjdFJlcG8sIENvZGVBcnRpZmFjdFJlcG9PcHRpb25zLCBMb2dpbkluZm9ybWF0aW9uIH0gZnJvbSAnLi9jb2RlYXJ0aWZhY3QtcmVwbyc7XG5pbXBvcnQgeyBzaGVsbCB9IGZyb20gJy4vc2hlbGwnO1xuaW1wb3J0IHsgdXBsb2FkSmF2YVBhY2thZ2VzLCBtYXZlbkxvZ2luIH0gZnJvbSAnLi9zdGFnaW5nL21hdmVuJztcbmltcG9ydCB7IHVwbG9hZE5wbVBhY2thZ2VzLCBucG1Mb2dpbiB9IGZyb20gJy4vc3RhZ2luZy9ucG0nO1xuaW1wb3J0IHsgdXBsb2FkRG90bmV0UGFja2FnZXMsIG51Z2V0TG9naW4gfSBmcm9tICcuL3N0YWdpbmcvbnVnZXQnO1xuaW1wb3J0IHsgdXBsb2FkUHl0aG9uUGFja2FnZXMsIHBpcExvZ2luIH0gZnJvbSAnLi9zdGFnaW5nL3BpcCc7XG5pbXBvcnQgeyBVc2FnZURpciB9IGZyb20gJy4vdXNhZ2UtZGlyJztcblxuY29uc3QgTE9HSU5fREFUQV9LRVkgPSAnbG9naW4nO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvZGVBcnRpZmFjdENsaU9wdGlvbnMge1xuICByZWFkb25seSBhc3N1bWVSb2xlQXJuPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgQ29kZUFydGlmYWN0Q2xpIHtcbiAgcHVibGljIHJlYWRvbmx5IHVzYWdlRGlyID0gVXNhZ2VEaXIuZGVmYXVsdCgpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogQ29kZUFydGlmYWN0Q2xpT3B0aW9ucyA9IHt9KSB7XG4gIH1cblxuICBwcml2YXRlIGdldCByZXBvT3B0aW9ucygpOiBDb2RlQXJ0aWZhY3RSZXBvT3B0aW9ucyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNyZWRlbnRpYWxzOiB0aGlzLm9wdGlvbnMuYXNzdW1lUm9sZUFybiA/IGZyb21UZW1wb3JhcnlDcmVkZW50aWFscyh7XG4gICAgICAgIHBhcmFtczoge1xuICAgICAgICAgIFJvbGVBcm46IHRoaXMub3B0aW9ucy5hc3N1bWVSb2xlQXJuLFxuICAgICAgICAgIER1cmF0aW9uU2Vjb25kczogMzYwMCxcbiAgICAgICAgICBSb2xlU2Vzc2lvbk5hbWU6ICdwdWJsaWItY2EnLFxuICAgICAgICB9LFxuICAgICAgfSkgOiB1bmRlZmluZWQsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSByYW5kb20gcmVwb3NpdG9yeSwgcmV0dXJuIGl0cyBuYW1lXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgY3JlYXRlKCkge1xuICAgIGNvbnN0IHJlcG8gPSBhd2FpdCBDb2RlQXJ0aWZhY3RSZXBvLmNyZWF0ZVJhbmRvbSh0aGlzLnJlcG9PcHRpb25zKTtcbiAgICByZXR1cm4gcmVwby5yZXBvc2l0b3J5TmFtZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGUgdGhlIGdpdmVuIHJlcG9cbiAgICovXG4gIHB1YmxpYyBhc3luYyBkZWxldGUocmVwb05hbWU/OiBzdHJpbmcpIHtcbiAgICBjb25zdCByZXBvID0gYXdhaXQgdGhpcy5yZXBvRnJvbU5hbWUocmVwb05hbWUpO1xuICAgIGF3YWl0IHJlcG8uZGVsZXRlKCk7XG5cbiAgICBpZiAoIXJlcG9OYW1lKSB7XG4gICAgICBhd2FpdCB0aGlzLnVzYWdlRGlyLmRlbGV0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBMb2cgaW4gdG8gdGhlIGdpdmVuIHJlcG8sIHdyaXRlIGFjdGl2YXRpb24gaW5zdHJ1Y3RpbnMgdG8gdGhlIHVzYWdlIGRpclxuICAgKi9cbiAgcHVibGljIGFzeW5jIGxvZ2luKHJlcG9OYW1lPzogc3RyaW5nKSB7XG4gICAgY29uc3QgcmVwbyA9IGF3YWl0IHRoaXMucmVwb0Zyb21OYW1lKHJlcG9OYW1lKTtcbiAgICBjb25zdCBsb2dpbiA9IGF3YWl0IHJlcG8ubG9naW4oKTtcblxuICAgIGF3YWl0IHRoaXMudXNhZ2VEaXIucmVzZXQoKTtcbiAgICBhd2FpdCB0aGlzLnVzYWdlRGlyLnB1dEpzb24oTE9HSU5fREFUQV9LRVksIGxvZ2luKTtcblxuICAgIGF3YWl0IHRoaXMudXNhZ2VEaXIuYWRkVG9FbnYoe1xuICAgICAgQ09ERUFSVElGQUNUX1JFUE86IGxvZ2luLnJlcG9zaXRvcnlOYW1lLFxuICAgIH0pO1xuXG4gICAgYXdhaXQgbnBtTG9naW4obG9naW4sIHRoaXMudXNhZ2VEaXIpO1xuICAgIGF3YWl0IHBpcExvZ2luKGxvZ2luLCB0aGlzLnVzYWdlRGlyKTtcbiAgICBhd2FpdCBtYXZlbkxvZ2luKGxvZ2luLCB0aGlzLnVzYWdlRGlyKTtcbiAgICBhd2FpdCBudWdldExvZ2luKGxvZ2luLCB0aGlzLnVzYWdlRGlyKTtcblxuICAgIHJldHVybiBsb2dpbjtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwdWJsaXNoKGRpcmVjdG9yeTogc3RyaW5nLCByZXBvTmFtZT86IHN0cmluZykge1xuICAgIGNvbnN0IHJlcG8gPSBhd2FpdCB0aGlzLnJlcG9Gcm9tTmFtZShyZXBvTmFtZSk7XG4gICAgY29uc3QgbG9naW4gPSBhd2FpdCByZXBvLmxvZ2luKCk7XG5cbiAgICBhd2FpdCB1cGxvYWROcG1QYWNrYWdlcyhnbG9iLnN5bmMocGF0aC5qb2luKGRpcmVjdG9yeSwgJ2pzJywgJyoudGd6JykpLCBsb2dpbiwgdGhpcy51c2FnZURpcik7XG5cbiAgICBhd2FpdCB1cGxvYWRQeXRob25QYWNrYWdlcyhnbG9iLnN5bmMocGF0aC5qb2luKGRpcmVjdG9yeSwgJ3B5dGhvbicsICcqJykpLCBsb2dpbik7XG5cbiAgICBhd2FpdCB1cGxvYWRKYXZhUGFja2FnZXMoZ2xvYi5zeW5jKHBhdGguam9pbihkaXJlY3RvcnksICdqYXZhJywgJyoqJywgJyoucG9tJykpLCBsb2dpbiwgdGhpcy51c2FnZURpcik7XG5cbiAgICBhd2FpdCB1cGxvYWREb3RuZXRQYWNrYWdlcyhnbG9iLnN5bmMocGF0aC5qb2luKGRpcmVjdG9yeSwgJ2RvdG5ldCcsICcqKicsICcqLm51cGtnJykpLCB0aGlzLnVzYWdlRGlyKTtcblxuICAgIGNvbnNvbGUubG9nKCfwn5uNIENvbmZpZ3VyaW5nIHBhY2thZ2VzIGZvciB1cHN0cmVhbSB2ZXJzaW9ucycpO1xuICAgIGF3YWl0IHJlcG8ubWFya0FsbFVwc3RyZWFtQWxsb3coKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnYygpIHtcbiAgICBhd2FpdCBDb2RlQXJ0aWZhY3RSZXBvLmdjKHRoaXMucmVwb09wdGlvbnMpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHJ1bkNvbW1hbmQoY29tbWFuZDogc3RyaW5nKSB7XG4gICAgYXdhaXQgdGhpcy51c2FnZURpci5hY3RpdmF0ZUluQ3VycmVudFByb2Nlc3MoKTtcbiAgICBhd2FpdCBzaGVsbChjb21tYW5kLCB7XG4gICAgICBzaGVsbDogdHJ1ZSxcbiAgICAgIHNob3c6ICdhbHdheXMnLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHJ1bkludGVyYWN0aXZlbHkoY29tbWFuZDogc3RyaW5nKSB7XG4gICAgYXdhaXQgdGhpcy51c2FnZURpci5hY3RpdmF0ZUluQ3VycmVudFByb2Nlc3MoKTtcbiAgICBjaGlsZF9wcm9jZXNzLmV4ZWNTeW5jKGNvbW1hbmQsIHtcbiAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICBzdGRpbzogWydpbmhlcml0JywgJ2luaGVyaXQnLCAnaW5oZXJpdCddLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIENvZGVBcnRpZmFjdFJlcG8gb2JqZWN0LCBlaXRoZXIgZnJvbSB0aGUgbmFtZSBhcmd1bWVudCBvciB0aGUgbW9zdCByZWNlbnRseSBhY3RpdmF0ZWQgcmVwb3NpdG9yeVxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyByZXBvRnJvbU5hbWUocmVwb05hbWU/OiBzdHJpbmcpIHtcbiAgICBpZiAocmVwb05hbWUpIHtcbiAgICAgIHJldHVybiBDb2RlQXJ0aWZhY3RSZXBvLmV4aXN0aW5nKHJlcG9OYW1lLCB0aGlzLnJlcG9PcHRpb25zKTtcbiAgICB9XG5cbiAgICBjb25zdCBsb2dpbkluZm8gPSBhd2FpdCB0aGlzLnVzYWdlRGlyLnJlYWRKc29uPExvZ2luSW5mb3JtYXRpb24+KExPR0lOX0RBVEFfS0VZKSA7XG5cbiAgICBpZiAobG9naW5JbmZvICYmIGxvZ2luSW5mby5leHBpcmF0aW9uVGltZU1zID4gRGF0ZS5ub3coKSkge1xuICAgICAgY29uc3QgZXhpc3RpbmcgPSBDb2RlQXJ0aWZhY3RSZXBvLmV4aXN0aW5nKGxvZ2luSW5mby5yZXBvc2l0b3J5TmFtZSwgdGhpcy5yZXBvT3B0aW9ucyk7XG4gICAgICBleGlzdGluZy5zZXRMb2dpbkluZm9ybWF0aW9uKGxvZ2luSW5mbyk7XG4gICAgICByZXR1cm4gZXhpc3Rpbmc7XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKCdObyByZXBvc2l0b3J5IG5hbWUgZ2l2ZW4sIGFuZCBubyByZXBvc2l0b3J5IGFjdGl2YXRlZCByZWNlbnRseS4gTG9naW4gdG8gYSByZXBvIG9yIHBhc3MgYSByZXBvIG5hbWUuJyk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,69 @@
1
+ import { AwsCredentialIdentityProvider } from '@aws-sdk/types';
2
+ export interface CodeArtifactRepoOptions {
3
+ readonly credentials?: AwsCredentialIdentityProvider;
4
+ }
5
+ /**
6
+ * A CodeArtifact repository
7
+ */
8
+ export declare class CodeArtifactRepo {
9
+ readonly repositoryName: string;
10
+ static readonly DEFAULT_DOMAIN = "publib-ca";
11
+ /**
12
+ * Create a CodeArtifact repo with a random name
13
+ */
14
+ static createRandom(options?: CodeArtifactRepoOptions): Promise<CodeArtifactRepo>;
15
+ /**
16
+ * Create a CodeArtifact repository with a given name
17
+ */
18
+ static createWithName(name: string, options?: CodeArtifactRepoOptions): Promise<CodeArtifactRepo>;
19
+ /**
20
+ * Reference an existing CodeArtifact repository
21
+ */
22
+ static existing(repositoryName: string, options?: CodeArtifactRepoOptions): CodeArtifactRepo;
23
+ /**
24
+ * Garbage collect repositories
25
+ */
26
+ static gc(options?: CodeArtifactRepoOptions): Promise<void>;
27
+ readonly npmUpstream = "npm-upstream";
28
+ readonly pypiUpstream = "pypi-upstream";
29
+ readonly nugetUpstream = "nuget-upstream";
30
+ readonly mavenUpstream = "maven-upstream";
31
+ readonly domain = "publib-ca";
32
+ private readonly codeArtifact;
33
+ private _loginInformation;
34
+ private constructor();
35
+ /**
36
+ * Create the repository
37
+ */
38
+ create(): Promise<void>;
39
+ /**
40
+ * Absorb old login information
41
+ */
42
+ setLoginInformation(loginInfo: LoginInformation): void;
43
+ login(): Promise<LoginInformation>;
44
+ delete(): Promise<void>;
45
+ /**
46
+ * List all packages and mark them as "allow upstream versions".
47
+ *
48
+ * If we don't do this and we publish `foo@2.3.4-rc.0`, then we can't
49
+ * download `foo@2.3.0` anymore because by default CodeArtifact will
50
+ * block different versions from the same package.
51
+ */
52
+ markAllUpstreamAllow(): Promise<void>;
53
+ private ensureDomain;
54
+ private ensureUpstreams;
55
+ private ensureRepository;
56
+ private domainExists;
57
+ private repositoryExists;
58
+ private listPackages;
59
+ private send;
60
+ }
61
+ export interface LoginInformation {
62
+ readonly authToken: string;
63
+ readonly expirationTimeMs: number;
64
+ readonly repositoryName: string;
65
+ readonly npmEndpoint: string;
66
+ readonly mavenEndpoint: string;
67
+ readonly nugetEndpoint: string;
68
+ readonly pypiEndpoint: string;
69
+ }