@backstage/backend-defaults 0.13.0 → 0.13.1-next.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.
Files changed (90) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/dist/CreateBackend.cjs.js +2 -1
  3. package/dist/CreateBackend.cjs.js.map +1 -1
  4. package/dist/PackageDiscoveryService.cjs.js +2 -0
  5. package/dist/PackageDiscoveryService.cjs.js.map +1 -1
  6. package/dist/alpha/entrypoints/actions/DefaultActionsService.cjs.js +4 -0
  7. package/dist/alpha/entrypoints/actions/DefaultActionsService.cjs.js.map +1 -1
  8. package/dist/alpha/entrypoints/actionsRegistry/DefaultActionsRegistryService.cjs.js +5 -1
  9. package/dist/alpha/entrypoints/actionsRegistry/DefaultActionsRegistryService.cjs.js.map +1 -1
  10. package/dist/alpha/entrypoints/instanceMetadata/instanceMetadataServiceFactory.cjs.js +35 -0
  11. package/dist/alpha/entrypoints/instanceMetadata/instanceMetadataServiceFactory.cjs.js.map +1 -0
  12. package/dist/alpha.cjs.js +2 -0
  13. package/dist/alpha.cjs.js.map +1 -1
  14. package/dist/alpha.d.ts +8 -1
  15. package/dist/database.d.ts +1 -1
  16. package/dist/entrypoints/auditor/WinstonRootAuditorService.cjs.js +1 -0
  17. package/dist/entrypoints/auditor/WinstonRootAuditorService.cjs.js.map +1 -1
  18. package/dist/entrypoints/auth/DefaultAuthService.cjs.js +6 -0
  19. package/dist/entrypoints/auth/DefaultAuthService.cjs.js.map +1 -1
  20. package/dist/entrypoints/auth/JwksClient.cjs.js +3 -2
  21. package/dist/entrypoints/auth/JwksClient.cjs.js.map +1 -1
  22. package/dist/entrypoints/auth/external/ExternalAuthTokenHandler.cjs.js +6 -4
  23. package/dist/entrypoints/auth/external/ExternalAuthTokenHandler.cjs.js.map +1 -1
  24. package/dist/entrypoints/auth/plugin/PluginTokenHandler.cjs.js +14 -8
  25. package/dist/entrypoints/auth/plugin/PluginTokenHandler.cjs.js.map +1 -1
  26. package/dist/entrypoints/auth/plugin/keys/DatabaseKeyStore.cjs.js +6 -4
  27. package/dist/entrypoints/auth/plugin/keys/DatabaseKeyStore.cjs.js.map +1 -1
  28. package/dist/entrypoints/auth/plugin/keys/DatabasePluginKeySource.cjs.js +6 -2
  29. package/dist/entrypoints/auth/plugin/keys/DatabasePluginKeySource.cjs.js.map +1 -1
  30. package/dist/entrypoints/auth/plugin/keys/StaticConfigPluginKeySource.cjs.js +2 -0
  31. package/dist/entrypoints/auth/plugin/keys/StaticConfigPluginKeySource.cjs.js.map +1 -1
  32. package/dist/entrypoints/auth/user/UserTokenHandler.cjs.js +6 -4
  33. package/dist/entrypoints/auth/user/UserTokenHandler.cjs.js.map +1 -1
  34. package/dist/entrypoints/database/DatabaseManager.cjs.js +9 -3
  35. package/dist/entrypoints/database/DatabaseManager.cjs.js.map +1 -1
  36. package/dist/entrypoints/database/connectors/mysql.cjs.js +2 -0
  37. package/dist/entrypoints/database/connectors/mysql.cjs.js.map +1 -1
  38. package/dist/entrypoints/database/connectors/postgres.cjs.js +2 -0
  39. package/dist/entrypoints/database/connectors/postgres.cjs.js.map +1 -1
  40. package/dist/entrypoints/database/connectors/sqlite3.cjs.js +1 -0
  41. package/dist/entrypoints/database/connectors/sqlite3.cjs.js.map +1 -1
  42. package/dist/entrypoints/lifecycle/lifecycleServiceFactory.cjs.js +2 -0
  43. package/dist/entrypoints/lifecycle/lifecycleServiceFactory.cjs.js.map +1 -1
  44. package/dist/entrypoints/rootHealth/rootHealthServiceFactory.cjs.js +2 -1
  45. package/dist/entrypoints/rootHealth/rootHealthServiceFactory.cjs.js.map +1 -1
  46. package/dist/entrypoints/rootLifecycle/rootLifecycleServiceFactory.cjs.js +1 -0
  47. package/dist/entrypoints/rootLifecycle/rootLifecycleServiceFactory.cjs.js.map +1 -1
  48. package/dist/entrypoints/scheduler/lib/LocalTaskWorker.cjs.js +9 -6
  49. package/dist/entrypoints/scheduler/lib/LocalTaskWorker.cjs.js.map +1 -1
  50. package/dist/entrypoints/scheduler/lib/PluginTaskSchedulerImpl.cjs.js +11 -8
  51. package/dist/entrypoints/scheduler/lib/PluginTaskSchedulerImpl.cjs.js.map +1 -1
  52. package/dist/entrypoints/scheduler/lib/TaskWorker.cjs.js +9 -4
  53. package/dist/entrypoints/scheduler/lib/TaskWorker.cjs.js.map +1 -1
  54. package/dist/entrypoints/urlReader/lib/AwsCodeCommitUrlReader.cjs.js +8 -5
  55. package/dist/entrypoints/urlReader/lib/AwsCodeCommitUrlReader.cjs.js.map +1 -1
  56. package/dist/entrypoints/urlReader/lib/AwsS3UrlReader.cjs.js +8 -5
  57. package/dist/entrypoints/urlReader/lib/AwsS3UrlReader.cjs.js.map +1 -1
  58. package/dist/entrypoints/urlReader/lib/AzureBlobStorageUrlReader.cjs.js +9 -6
  59. package/dist/entrypoints/urlReader/lib/AzureBlobStorageUrlReader.cjs.js.map +1 -1
  60. package/dist/entrypoints/urlReader/lib/AzureUrlReader.cjs.js +6 -4
  61. package/dist/entrypoints/urlReader/lib/AzureUrlReader.cjs.js.map +1 -1
  62. package/dist/entrypoints/urlReader/lib/BitbucketCloudUrlReader.cjs.js +12 -10
  63. package/dist/entrypoints/urlReader/lib/BitbucketCloudUrlReader.cjs.js.map +1 -1
  64. package/dist/entrypoints/urlReader/lib/BitbucketServerUrlReader.cjs.js +6 -4
  65. package/dist/entrypoints/urlReader/lib/BitbucketServerUrlReader.cjs.js.map +1 -1
  66. package/dist/entrypoints/urlReader/lib/BitbucketUrlReader.cjs.js +25 -13
  67. package/dist/entrypoints/urlReader/lib/BitbucketUrlReader.cjs.js.map +1 -1
  68. package/dist/entrypoints/urlReader/lib/GerritUrlReader.cjs.js +6 -4
  69. package/dist/entrypoints/urlReader/lib/GerritUrlReader.cjs.js.map +1 -1
  70. package/dist/entrypoints/urlReader/lib/GiteaUrlReader.cjs.js +6 -4
  71. package/dist/entrypoints/urlReader/lib/GiteaUrlReader.cjs.js.map +1 -1
  72. package/dist/entrypoints/urlReader/lib/GithubUrlReader.cjs.js +11 -9
  73. package/dist/entrypoints/urlReader/lib/GithubUrlReader.cjs.js.map +1 -1
  74. package/dist/entrypoints/urlReader/lib/GitlabUrlReader.cjs.js +8 -9
  75. package/dist/entrypoints/urlReader/lib/GitlabUrlReader.cjs.js.map +1 -1
  76. package/dist/entrypoints/urlReader/lib/GoogleGcsUrlReader.cjs.js +6 -4
  77. package/dist/entrypoints/urlReader/lib/GoogleGcsUrlReader.cjs.js.map +1 -1
  78. package/dist/entrypoints/urlReader/lib/HarnessUrlReader.cjs.js +6 -4
  79. package/dist/entrypoints/urlReader/lib/HarnessUrlReader.cjs.js.map +1 -1
  80. package/dist/entrypoints/urlReader/lib/tree/ReadTreeResponseFactory.cjs.js +4 -3
  81. package/dist/entrypoints/urlReader/lib/tree/ReadTreeResponseFactory.cjs.js.map +1 -1
  82. package/dist/entrypoints/urlReader/lib/tree/ReadableArrayResponse.cjs.js +4 -2
  83. package/dist/entrypoints/urlReader/lib/tree/ReadableArrayResponse.cjs.js.map +1 -1
  84. package/dist/entrypoints/urlReader/lib/tree/TarArchiveResponse.cjs.js +7 -1
  85. package/dist/entrypoints/urlReader/lib/tree/TarArchiveResponse.cjs.js.map +1 -1
  86. package/dist/entrypoints/urlReader/lib/tree/ZipArchiveResponse.cjs.js +6 -1
  87. package/dist/entrypoints/urlReader/lib/tree/ZipArchiveResponse.cjs.js.map +1 -1
  88. package/dist/package.json.cjs.js +1 -1
  89. package/dist/urlReader.d.ts +12 -11
  90. package/package.json +17 -17
@@ -15,6 +15,12 @@ var fs__default = /*#__PURE__*/_interopDefaultCompat(fs);
15
15
  var platformPath__default = /*#__PURE__*/_interopDefaultCompat(platformPath);
16
16
 
17
17
  class ZipArchiveResponse {
18
+ read = false;
19
+ stream;
20
+ subPath;
21
+ workDir;
22
+ etag;
23
+ filter;
18
24
  constructor(stream, subPath, workDir, etag, filter) {
19
25
  this.stream = stream;
20
26
  this.subPath = subPath;
@@ -33,7 +39,6 @@ class ZipArchiveResponse {
33
39
  }
34
40
  this.etag = etag;
35
41
  }
36
- read = false;
37
42
  // Make sure the input stream is only read once
38
43
  onlyOnce() {
39
44
  if (this.read) {
@@ -1 +1 @@
1
- {"version":3,"file":"ZipArchiveResponse.cjs.js","sources":["../../../../../src/entrypoints/urlReader/lib/tree/ZipArchiveResponse.ts"],"sourcesContent":["/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n UrlReaderServiceReadTreeResponse,\n UrlReaderServiceReadTreeResponseDirOptions,\n UrlReaderServiceReadTreeResponseFile,\n} from '@backstage/backend-plugin-api';\nimport archiver from 'archiver';\nimport yauzl, { Entry } from 'yauzl';\nimport fs from 'fs-extra';\nimport platformPath from 'path';\nimport { Readable } from 'stream';\nimport { streamToBuffer } from './util';\nimport { resolveSafeChildPath } from '@backstage/backend-plugin-api';\n\n/**\n * Wraps a zip archive stream into a tree response reader.\n */\nexport class ZipArchiveResponse implements UrlReaderServiceReadTreeResponse {\n private read = false;\n\n constructor(\n private readonly stream: Readable,\n private readonly subPath: string,\n private readonly workDir: string,\n public readonly etag: string,\n private readonly filter?: (path: string, info: { size: number }) => boolean,\n ) {\n if (subPath) {\n if (!subPath.endsWith('/')) {\n this.subPath += '/';\n }\n if (subPath.startsWith('/')) {\n throw new TypeError(\n `ZipArchiveResponse subPath must not start with a /, got '${subPath}'`,\n );\n }\n }\n\n this.etag = etag;\n }\n\n // Make sure the input stream is only read once\n private onlyOnce() {\n if (this.read) {\n throw new Error('Response has already been read');\n }\n this.read = true;\n }\n\n // File path relative to the root extracted directory or a sub directory if subpath is set.\n private getInnerPath(path: string): string {\n return path.slice(this.subPath.length);\n }\n\n private shouldBeIncluded(entry: Entry): boolean {\n if (this.subPath) {\n if (!entry.fileName.startsWith(this.subPath)) {\n return false;\n }\n }\n if (this.filter) {\n return this.filter(this.getInnerPath(entry.fileName), {\n size: entry.uncompressedSize,\n });\n }\n return true;\n }\n\n private async streamToTemporaryFile(\n stream: Readable,\n ): Promise<{ fileName: string; cleanup: () => Promise<void> }> {\n const tmpDir = await fs.mkdtemp(\n platformPath.join(this.workDir, 'backstage-tmp'),\n );\n const tmpFile = platformPath.join(tmpDir, 'tmp.zip');\n\n const writeStream = fs.createWriteStream(tmpFile);\n\n return new Promise((resolve, reject) => {\n writeStream.on('error', reject);\n writeStream.on('finish', () => {\n writeStream.end();\n resolve({\n fileName: tmpFile,\n cleanup: () => fs.rm(tmpDir, { recursive: true }),\n });\n });\n stream.pipe(writeStream);\n });\n }\n\n private forEveryZipEntry(\n zip: string,\n callback: (entry: Entry, content: Readable) => Promise<void>,\n ): Promise<void> {\n return new Promise((resolve, reject) => {\n yauzl.open(zip, { lazyEntries: true }, (err, zipfile) => {\n if (err || !zipfile) {\n reject(err || new Error(`Failed to open zip file ${zip}`));\n return;\n }\n\n zipfile.on('entry', async (entry: Entry) => {\n // Check that the file is not a directory, and that is matches the filter.\n if (!entry.fileName.endsWith('/') && this.shouldBeIncluded(entry)) {\n zipfile.openReadStream(entry, async (openErr, readStream) => {\n if (openErr || !readStream) {\n reject(\n openErr ||\n new Error(`Failed to open zip entry ${entry.fileName}`),\n );\n return;\n }\n\n await callback(entry, readStream);\n zipfile.readEntry();\n });\n } else {\n zipfile.readEntry();\n }\n });\n zipfile.once('end', () => resolve());\n zipfile.on('error', e => reject(e));\n zipfile.readEntry();\n });\n });\n }\n\n async files(): Promise<UrlReaderServiceReadTreeResponseFile[]> {\n this.onlyOnce();\n const files = Array<UrlReaderServiceReadTreeResponseFile>();\n const temporary = await this.streamToTemporaryFile(this.stream);\n\n await this.forEveryZipEntry(temporary.fileName, async (entry, content) => {\n files.push({\n path: this.getInnerPath(entry.fileName),\n content: async () => await streamToBuffer(content),\n lastModifiedAt: entry.lastModFileTime\n ? new Date(entry.lastModFileTime)\n : undefined,\n });\n });\n\n await temporary.cleanup();\n\n return files;\n }\n\n async archive(): Promise<Readable> {\n this.onlyOnce();\n\n if (!this.subPath) {\n return this.stream;\n }\n\n const archive = archiver('zip');\n const temporary = await this.streamToTemporaryFile(this.stream);\n\n await this.forEveryZipEntry(temporary.fileName, async (entry, content) => {\n archive.append(await streamToBuffer(content), {\n name: this.getInnerPath(entry.fileName),\n });\n });\n\n archive.finalize();\n\n await temporary.cleanup();\n\n return archive;\n }\n\n async dir(\n options?: UrlReaderServiceReadTreeResponseDirOptions,\n ): Promise<string> {\n this.onlyOnce();\n const dir =\n options?.targetDir ??\n (await fs.mkdtemp(platformPath.join(this.workDir, 'backstage-')));\n\n const temporary = await this.streamToTemporaryFile(this.stream);\n\n await this.forEveryZipEntry(temporary.fileName, async (entry, content) => {\n const entryPath = this.getInnerPath(entry.fileName);\n const dirname = platformPath.dirname(entryPath);\n\n if (dirname) {\n await fs.mkdirp(resolveSafeChildPath(dir, dirname));\n }\n return new Promise(async (resolve, reject) => {\n const file = fs.createWriteStream(resolveSafeChildPath(dir, entryPath));\n file.on('finish', resolve);\n\n content.on('error', reject);\n content.pipe(file);\n });\n });\n\n await temporary.cleanup();\n\n return dir;\n }\n}\n"],"names":["fs","platformPath","yauzl","streamToBuffer","archiver","resolveSafeChildPath"],"mappings":"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"}
1
+ {"version":3,"file":"ZipArchiveResponse.cjs.js","sources":["../../../../../src/entrypoints/urlReader/lib/tree/ZipArchiveResponse.ts"],"sourcesContent":["/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n UrlReaderServiceReadTreeResponse,\n UrlReaderServiceReadTreeResponseDirOptions,\n UrlReaderServiceReadTreeResponseFile,\n} from '@backstage/backend-plugin-api';\nimport archiver from 'archiver';\nimport yauzl, { Entry } from 'yauzl';\nimport fs from 'fs-extra';\nimport platformPath from 'path';\nimport { Readable } from 'stream';\nimport { streamToBuffer } from './util';\nimport { resolveSafeChildPath } from '@backstage/backend-plugin-api';\n\n/**\n * Wraps a zip archive stream into a tree response reader.\n */\nexport class ZipArchiveResponse implements UrlReaderServiceReadTreeResponse {\n private read = false;\n private readonly stream: Readable;\n private readonly subPath: string;\n private readonly workDir: string;\n public readonly etag: string;\n private readonly filter?: (path: string, info: { size: number }) => boolean;\n\n constructor(\n stream: Readable,\n subPath: string,\n workDir: string,\n etag: string,\n filter?: (path: string, info: { size: number }) => boolean,\n ) {\n this.stream = stream;\n this.subPath = subPath;\n this.workDir = workDir;\n this.etag = etag;\n this.filter = filter;\n if (subPath) {\n if (!subPath.endsWith('/')) {\n this.subPath += '/';\n }\n if (subPath.startsWith('/')) {\n throw new TypeError(\n `ZipArchiveResponse subPath must not start with a /, got '${subPath}'`,\n );\n }\n }\n\n this.etag = etag;\n }\n\n // Make sure the input stream is only read once\n private onlyOnce() {\n if (this.read) {\n throw new Error('Response has already been read');\n }\n this.read = true;\n }\n\n // File path relative to the root extracted directory or a sub directory if subpath is set.\n private getInnerPath(path: string): string {\n return path.slice(this.subPath.length);\n }\n\n private shouldBeIncluded(entry: Entry): boolean {\n if (this.subPath) {\n if (!entry.fileName.startsWith(this.subPath)) {\n return false;\n }\n }\n if (this.filter) {\n return this.filter(this.getInnerPath(entry.fileName), {\n size: entry.uncompressedSize,\n });\n }\n return true;\n }\n\n private async streamToTemporaryFile(\n stream: Readable,\n ): Promise<{ fileName: string; cleanup: () => Promise<void> }> {\n const tmpDir = await fs.mkdtemp(\n platformPath.join(this.workDir, 'backstage-tmp'),\n );\n const tmpFile = platformPath.join(tmpDir, 'tmp.zip');\n\n const writeStream = fs.createWriteStream(tmpFile);\n\n return new Promise((resolve, reject) => {\n writeStream.on('error', reject);\n writeStream.on('finish', () => {\n writeStream.end();\n resolve({\n fileName: tmpFile,\n cleanup: () => fs.rm(tmpDir, { recursive: true }),\n });\n });\n stream.pipe(writeStream);\n });\n }\n\n private forEveryZipEntry(\n zip: string,\n callback: (entry: Entry, content: Readable) => Promise<void>,\n ): Promise<void> {\n return new Promise((resolve, reject) => {\n yauzl.open(zip, { lazyEntries: true }, (err, zipfile) => {\n if (err || !zipfile) {\n reject(err || new Error(`Failed to open zip file ${zip}`));\n return;\n }\n\n zipfile.on('entry', async (entry: Entry) => {\n // Check that the file is not a directory, and that is matches the filter.\n if (!entry.fileName.endsWith('/') && this.shouldBeIncluded(entry)) {\n zipfile.openReadStream(entry, async (openErr, readStream) => {\n if (openErr || !readStream) {\n reject(\n openErr ||\n new Error(`Failed to open zip entry ${entry.fileName}`),\n );\n return;\n }\n\n await callback(entry, readStream);\n zipfile.readEntry();\n });\n } else {\n zipfile.readEntry();\n }\n });\n zipfile.once('end', () => resolve());\n zipfile.on('error', e => reject(e));\n zipfile.readEntry();\n });\n });\n }\n\n async files(): Promise<UrlReaderServiceReadTreeResponseFile[]> {\n this.onlyOnce();\n const files = Array<UrlReaderServiceReadTreeResponseFile>();\n const temporary = await this.streamToTemporaryFile(this.stream);\n\n await this.forEveryZipEntry(temporary.fileName, async (entry, content) => {\n files.push({\n path: this.getInnerPath(entry.fileName),\n content: async () => await streamToBuffer(content),\n lastModifiedAt: entry.lastModFileTime\n ? new Date(entry.lastModFileTime)\n : undefined,\n });\n });\n\n await temporary.cleanup();\n\n return files;\n }\n\n async archive(): Promise<Readable> {\n this.onlyOnce();\n\n if (!this.subPath) {\n return this.stream;\n }\n\n const archive = archiver('zip');\n const temporary = await this.streamToTemporaryFile(this.stream);\n\n await this.forEveryZipEntry(temporary.fileName, async (entry, content) => {\n archive.append(await streamToBuffer(content), {\n name: this.getInnerPath(entry.fileName),\n });\n });\n\n archive.finalize();\n\n await temporary.cleanup();\n\n return archive;\n }\n\n async dir(\n options?: UrlReaderServiceReadTreeResponseDirOptions,\n ): Promise<string> {\n this.onlyOnce();\n const dir =\n options?.targetDir ??\n (await fs.mkdtemp(platformPath.join(this.workDir, 'backstage-')));\n\n const temporary = await this.streamToTemporaryFile(this.stream);\n\n await this.forEveryZipEntry(temporary.fileName, async (entry, content) => {\n const entryPath = this.getInnerPath(entry.fileName);\n const dirname = platformPath.dirname(entryPath);\n\n if (dirname) {\n await fs.mkdirp(resolveSafeChildPath(dir, dirname));\n }\n return new Promise(async (resolve, reject) => {\n const file = fs.createWriteStream(resolveSafeChildPath(dir, entryPath));\n file.on('finish', resolve);\n\n content.on('error', reject);\n content.pipe(file);\n });\n });\n\n await temporary.cleanup();\n\n return dir;\n }\n}\n"],"names":["fs","platformPath","yauzl","streamToBuffer","archiver","resolveSafeChildPath"],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var version = "0.13.0";
5
+ var version = "0.13.1-next.1";
6
6
  var packageinfo = {
7
7
  version: version};
8
8
 
@@ -102,9 +102,9 @@ interface ReadTreeResponseFactory {
102
102
  * @public
103
103
  */
104
104
  declare class AzureUrlReader implements UrlReaderService {
105
+ static factory: ReaderFactory;
105
106
  private readonly integration;
106
107
  private readonly deps;
107
- static factory: ReaderFactory;
108
108
  constructor(integration: AzureIntegration, deps: {
109
109
  treeResponseFactory: ReadTreeResponseFactory;
110
110
  credentialsProvider: AzureDevOpsCredentialsProvider;
@@ -122,9 +122,9 @@ declare class AzureUrlReader implements UrlReaderService {
122
122
  * @public
123
123
  */
124
124
  declare class BitbucketCloudUrlReader implements UrlReaderService {
125
+ static factory: ReaderFactory;
125
126
  private readonly integration;
126
127
  private readonly deps;
127
- static factory: ReaderFactory;
128
128
  constructor(integration: BitbucketCloudIntegration, deps: {
129
129
  treeResponseFactory: ReadTreeResponseFactory;
130
130
  });
@@ -144,13 +144,14 @@ declare class BitbucketCloudUrlReader implements UrlReaderService {
144
144
  * @deprecated in favor of BitbucketCloudUrlReader and BitbucketServerUrlReader
145
145
  */
146
146
  declare class BitbucketUrlReader implements UrlReaderService {
147
+ static factory: ReaderFactory;
147
148
  private readonly integration;
148
149
  private readonly deps;
149
- static factory: ReaderFactory;
150
150
  constructor(integration: BitbucketIntegration, logger: LoggerService, deps: {
151
151
  treeResponseFactory: ReadTreeResponseFactory;
152
152
  });
153
153
  read(url: string): Promise<Buffer>;
154
+ private getCredentials;
154
155
  readUrl(url: string, options?: UrlReaderServiceReadUrlOptions): Promise<UrlReaderServiceReadUrlResponse>;
155
156
  readTree(url: string, options?: UrlReaderServiceReadTreeOptions): Promise<UrlReaderServiceReadTreeResponse>;
156
157
  search(url: string, options?: UrlReaderServiceSearchOptions): Promise<UrlReaderServiceSearchResponse>;
@@ -164,9 +165,9 @@ declare class BitbucketUrlReader implements UrlReaderService {
164
165
  * @public
165
166
  */
166
167
  declare class BitbucketServerUrlReader implements UrlReaderService {
168
+ static factory: ReaderFactory;
167
169
  private readonly integration;
168
170
  private readonly deps;
169
- static factory: ReaderFactory;
170
171
  constructor(integration: BitbucketServerIntegration, deps: {
171
172
  treeResponseFactory: ReadTreeResponseFactory;
172
173
  });
@@ -199,9 +200,9 @@ declare class BitbucketServerUrlReader implements UrlReaderService {
199
200
  * @public
200
201
  */
201
202
  declare class GerritUrlReader implements UrlReaderService {
203
+ static factory: ReaderFactory;
202
204
  private readonly integration;
203
205
  private readonly deps;
204
- static factory: ReaderFactory;
205
206
  constructor(integration: GerritIntegration, deps: {
206
207
  treeResponseFactory: ReadTreeResponseFactory;
207
208
  });
@@ -222,9 +223,9 @@ declare class GerritUrlReader implements UrlReaderService {
222
223
  * @public
223
224
  */
224
225
  declare class GithubUrlReader implements UrlReaderService {
226
+ static factory: ReaderFactory;
225
227
  private readonly integration;
226
228
  private readonly deps;
227
- static factory: ReaderFactory;
228
229
  constructor(integration: GithubIntegration, deps: {
229
230
  treeResponseFactory: ReadTreeResponseFactory;
230
231
  credentialsProvider: GithubCredentialsProvider;
@@ -249,9 +250,9 @@ declare class GithubUrlReader implements UrlReaderService {
249
250
  * @public
250
251
  */
251
252
  declare class GitlabUrlReader implements UrlReaderService {
253
+ static factory: ReaderFactory;
252
254
  private readonly integration;
253
255
  private readonly deps;
254
- static factory: ReaderFactory;
255
256
  constructor(integration: GitLabIntegration, deps: {
256
257
  treeResponseFactory: ReadTreeResponseFactory;
257
258
  });
@@ -283,9 +284,9 @@ declare class GitlabUrlReader implements UrlReaderService {
283
284
  * @public
284
285
  */
285
286
  declare class GiteaUrlReader implements UrlReaderService {
287
+ static factory: ReaderFactory;
286
288
  private readonly integration;
287
289
  private readonly deps;
288
- static factory: ReaderFactory;
289
290
  constructor(integration: GiteaIntegration, deps: {
290
291
  treeResponseFactory: ReadTreeResponseFactory;
291
292
  });
@@ -304,9 +305,9 @@ declare class GiteaUrlReader implements UrlReaderService {
304
305
  * @public
305
306
  */
306
307
  declare class HarnessUrlReader implements UrlReaderService {
308
+ static factory: ReaderFactory;
307
309
  private readonly integration;
308
310
  private readonly deps;
309
- static factory: ReaderFactory;
310
311
  constructor(integration: HarnessIntegration, deps: {
311
312
  treeResponseFactory: ReadTreeResponseFactory;
312
313
  });
@@ -324,10 +325,10 @@ declare class HarnessUrlReader implements UrlReaderService {
324
325
  * @public
325
326
  */
326
327
  declare class AwsS3UrlReader implements UrlReaderService {
328
+ static factory: ReaderFactory;
327
329
  private readonly credsManager;
328
330
  private readonly integration;
329
331
  private readonly deps;
330
- static factory: ReaderFactory;
331
332
  constructor(credsManager: AwsCredentialsManager, integration: AwsS3Integration, deps: {
332
333
  treeResponseFactory: ReadTreeResponseFactory;
333
334
  });
@@ -352,10 +353,10 @@ declare class AwsS3UrlReader implements UrlReaderService {
352
353
  * @public
353
354
  */
354
355
  declare class AzureBlobStorageUrlReader implements UrlReaderService {
356
+ static factory: ReaderFactory;
355
357
  private readonly credsManager;
356
358
  private readonly integration;
357
359
  private readonly deps;
358
- static factory: ReaderFactory;
359
360
  constructor(credsManager: AzureCredentialsManager, integration: AzureBlobStorageIntergation, deps: {
360
361
  treeResponseFactory: ReadTreeResponseFactory;
361
362
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@backstage/backend-defaults",
3
- "version": "0.13.0",
3
+ "version": "0.13.1-next.1",
4
4
  "description": "Backend defaults used by Backstage backend apps",
5
5
  "backstage": {
6
6
  "role": "node-library"
@@ -216,19 +216,19 @@
216
216
  "@aws-sdk/credential-providers": "^3.350.0",
217
217
  "@aws-sdk/types": "^3.347.0",
218
218
  "@azure/storage-blob": "^12.5.0",
219
- "@backstage/backend-app-api": "^1.2.8",
220
- "@backstage/backend-dev-utils": "^0.1.5",
221
- "@backstage/backend-plugin-api": "^1.4.4",
222
- "@backstage/cli-node": "^0.2.14",
223
- "@backstage/config": "^1.3.5",
224
- "@backstage/config-loader": "^1.10.5",
225
- "@backstage/errors": "^1.2.7",
226
- "@backstage/integration": "^1.18.1",
227
- "@backstage/integration-aws-node": "^0.1.18",
228
- "@backstage/plugin-auth-node": "^0.6.8",
229
- "@backstage/plugin-events-node": "^0.4.16",
230
- "@backstage/plugin-permission-node": "^0.10.5",
231
- "@backstage/types": "^1.2.2",
219
+ "@backstage/backend-app-api": "1.3.0-next.1",
220
+ "@backstage/backend-dev-utils": "0.1.5",
221
+ "@backstage/backend-plugin-api": "1.5.0-next.1",
222
+ "@backstage/cli-node": "0.2.15-next.0",
223
+ "@backstage/config": "1.3.6-next.0",
224
+ "@backstage/config-loader": "1.10.6-next.0",
225
+ "@backstage/errors": "1.2.7",
226
+ "@backstage/integration": "1.18.2-next.0",
227
+ "@backstage/integration-aws-node": "0.1.19-next.0",
228
+ "@backstage/plugin-auth-node": "0.6.9-next.1",
229
+ "@backstage/plugin-events-node": "0.4.17-next.1",
230
+ "@backstage/plugin-permission-node": "0.10.6-next.1",
231
+ "@backstage/types": "1.2.2",
232
232
  "@google-cloud/storage": "^7.0.0",
233
233
  "@keyv/memcache": "^2.0.1",
234
234
  "@keyv/redis": "^4.0.1",
@@ -284,9 +284,9 @@
284
284
  },
285
285
  "devDependencies": {
286
286
  "@aws-sdk/util-stream-node": "^3.350.0",
287
- "@backstage/backend-plugin-api": "^1.4.4",
288
- "@backstage/backend-test-utils": "^1.9.1",
289
- "@backstage/cli": "^0.34.4",
287
+ "@backstage/backend-plugin-api": "1.5.0-next.1",
288
+ "@backstage/backend-test-utils": "1.10.0-next.1",
289
+ "@backstage/cli": "0.34.5-next.1",
290
290
  "@google-cloud/cloud-sql-connector": "^1.4.0",
291
291
  "@types/archiver": "^6.0.0",
292
292
  "@types/base64-stream": "^1.0.2",