playwright-ms-auth 0.0.10

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 (60) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +525 -0
  3. package/bin/ms-auth +2 -0
  4. package/lib/authenticate.d.ts +10 -0
  5. package/lib/authenticate.d.ts.map +1 -0
  6. package/lib/authenticate.js +213 -0
  7. package/lib/authenticate.js.map +1 -0
  8. package/lib/certAuth.d.ts +21 -0
  9. package/lib/certAuth.d.ts.map +1 -0
  10. package/lib/certAuth.js +82 -0
  11. package/lib/certAuth.js.map +1 -0
  12. package/lib/cli.d.ts +3 -0
  13. package/lib/cli.d.ts.map +1 -0
  14. package/lib/cli.js +109 -0
  15. package/lib/cli.js.map +1 -0
  16. package/lib/config.d.ts +10 -0
  17. package/lib/config.d.ts.map +1 -0
  18. package/lib/config.js +115 -0
  19. package/lib/config.js.map +1 -0
  20. package/lib/index.d.ts +16 -0
  21. package/lib/index.d.ts.map +1 -0
  22. package/lib/index.js +17 -0
  23. package/lib/index.js.map +1 -0
  24. package/lib/providers/AzureKeyVaultProvider.d.ts +17 -0
  25. package/lib/providers/AzureKeyVaultProvider.d.ts.map +1 -0
  26. package/lib/providers/AzureKeyVaultProvider.js +105 -0
  27. package/lib/providers/AzureKeyVaultProvider.js.map +1 -0
  28. package/lib/providers/CredentialProvider.d.ts +24 -0
  29. package/lib/providers/CredentialProvider.d.ts.map +1 -0
  30. package/lib/providers/CredentialProvider.js +10 -0
  31. package/lib/providers/CredentialProvider.js.map +1 -0
  32. package/lib/providers/CredentialProviderFactory.d.ts +20 -0
  33. package/lib/providers/CredentialProviderFactory.d.ts.map +1 -0
  34. package/lib/providers/CredentialProviderFactory.js +37 -0
  35. package/lib/providers/CredentialProviderFactory.js.map +1 -0
  36. package/lib/providers/EnvironmentProvider.d.ts +13 -0
  37. package/lib/providers/EnvironmentProvider.d.ts.map +1 -0
  38. package/lib/providers/EnvironmentProvider.js +52 -0
  39. package/lib/providers/EnvironmentProvider.js.map +1 -0
  40. package/lib/providers/GitHubSecretsProvider.d.ts +13 -0
  41. package/lib/providers/GitHubSecretsProvider.d.ts.map +1 -0
  42. package/lib/providers/GitHubSecretsProvider.js +59 -0
  43. package/lib/providers/GitHubSecretsProvider.js.map +1 -0
  44. package/lib/providers/LocalFileProvider.d.ts +13 -0
  45. package/lib/providers/LocalFileProvider.d.ts.map +1 -0
  46. package/lib/providers/LocalFileProvider.js +77 -0
  47. package/lib/providers/LocalFileProvider.js.map +1 -0
  48. package/lib/providers/index.d.ts +7 -0
  49. package/lib/providers/index.d.ts.map +1 -0
  50. package/lib/providers/index.js +7 -0
  51. package/lib/providers/index.js.map +1 -0
  52. package/lib/types.d.ts +111 -0
  53. package/lib/types.d.ts.map +1 -0
  54. package/lib/types.js +37 -0
  55. package/lib/types.js.map +1 -0
  56. package/lib/utils.d.ts +30 -0
  57. package/lib/utils.d.ts.map +1 -0
  58. package/lib/utils.js +75 -0
  59. package/lib/utils.js.map +1 -0
  60. package/package.json +68 -0
package/lib/index.js ADDED
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @paeng/playwright-ms-auth
3
+ *
4
+ * Flexible authentication framework for Playwright tests supporting
5
+ * password and certificate authentication with multiple credential providers.
6
+ */
7
+ export * from "./types";
8
+ export * from "./config";
9
+ export * from "./authenticate";
10
+ export * from "./certAuth";
11
+ export * from "./utils";
12
+ export * from "./providers";
13
+ // Re-export commonly used functions
14
+ export { authenticate, loadStorageState } from "./authenticate";
15
+ export { loadConfigFromEnv, validateConfig } from "./config";
16
+ export { CredentialProviderFactory } from "./providers";
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAE5B,oCAAoC;AACpC,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { CredentialProvider } from "./CredentialProvider";
2
+ import type { AzureKeyVaultConfig, CredentialResult } from "../types";
3
+ /**
4
+ * Azure KeyVault credential provider
5
+ * Retrieves passwords or certificates from Azure KeyVault
6
+ */
7
+ export declare class AzureKeyVaultProvider extends CredentialProvider {
8
+ private client;
9
+ private credential;
10
+ constructor(config: AzureKeyVaultConfig);
11
+ getProviderName(): string;
12
+ validateConfig(): void;
13
+ private getTokenCredential;
14
+ private getClient;
15
+ getCredential(): Promise<CredentialResult>;
16
+ }
17
+ //# sourceMappingURL=AzureKeyVaultProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AzureKeyVaultProvider.d.ts","sourceRoot":"","sources":["../../src/providers/AzureKeyVaultProvider.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAGtE;;;GAGG;AACH,qBAAa,qBAAsB,SAAQ,kBAAkB;IAC3D,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,UAAU,CAAgC;gBAEtC,MAAM,EAAE,mBAAmB;IAKvC,eAAe,IAAI,MAAM;IAIzB,cAAc,IAAI,IAAI;IAiBtB,OAAO,CAAC,kBAAkB;IAsB1B,OAAO,CAAC,SAAS;IAWX,aAAa,IAAI,OAAO,CAAC,gBAAgB,CAAC;CAqEjD"}
@@ -0,0 +1,105 @@
1
+ import { AzureCliCredential, AzurePowerShellCredential, ChainedTokenCredential, InteractiveBrowserCredential, AzureDeveloperCliCredential, } from "@azure/identity";
2
+ import { SecretClient } from "@azure/keyvault-secrets";
3
+ import { CredentialProvider } from "./CredentialProvider";
4
+ import { log } from "../utils";
5
+ /**
6
+ * Azure KeyVault credential provider
7
+ * Retrieves passwords or certificates from Azure KeyVault
8
+ */
9
+ export class AzureKeyVaultProvider extends CredentialProvider {
10
+ constructor(config) {
11
+ super(config);
12
+ this.client = null;
13
+ this.credential = null;
14
+ this.validateConfig();
15
+ }
16
+ getProviderName() {
17
+ return "Azure KeyVault";
18
+ }
19
+ validateConfig() {
20
+ const config = this.config;
21
+ if (!config.keyVaultEndpoint) {
22
+ throw new Error("KeyVault endpoint is required");
23
+ }
24
+ if (!config.secretName) {
25
+ throw new Error("Secret name is required");
26
+ }
27
+ try {
28
+ new URL(config.keyVaultEndpoint);
29
+ }
30
+ catch {
31
+ throw new Error(`Invalid KeyVault endpoint URL: ${config.keyVaultEndpoint}`);
32
+ }
33
+ }
34
+ getTokenCredential() {
35
+ if (!this.credential) {
36
+ const credentials = [
37
+ new AzureCliCredential(),
38
+ new AzurePowerShellCredential(),
39
+ new AzureDeveloperCliCredential(),
40
+ ];
41
+ // Only add interactive browser credential if not in CI/CD
42
+ if (!process.env.TF_BUILD && !process.env.CI) {
43
+ credentials.push(new InteractiveBrowserCredential({
44
+ redirectUri: "http://localhost:8080/",
45
+ }));
46
+ }
47
+ this.credential = new ChainedTokenCredential(...credentials);
48
+ }
49
+ return this.credential;
50
+ }
51
+ getClient() {
52
+ if (!this.client) {
53
+ const config = this.config;
54
+ this.client = new SecretClient(config.keyVaultEndpoint, this.getTokenCredential());
55
+ }
56
+ return this.client;
57
+ }
58
+ async getCredential() {
59
+ const config = this.config;
60
+ log(`[AzureKeyVaultProvider] Retrieving secret '${config.secretName}' from '${config.keyVaultEndpoint}'`);
61
+ const client = this.getClient();
62
+ const secret = await client.getSecret(config.secretName, {
63
+ version: config.secretVersion,
64
+ });
65
+ if (!secret.value) {
66
+ throw new Error(`Unable to retrieve secret '${config.secretName}' from KeyVault. ` +
67
+ `Please check permissions and ensure the secret exists.`);
68
+ }
69
+ const { expiresOn, notBefore, enabled, contentType } = secret.properties;
70
+ log(`[AzureKeyVaultProvider] Secret metadata: ` +
71
+ `enabled=${enabled ?? "unknown"}, ` +
72
+ `notBefore=${notBefore?.toISOString() ?? "none"}, ` +
73
+ `expiresOn=${expiresOn?.toISOString() ?? "none"}, ` +
74
+ `contentType=${contentType ?? "unknown"}`);
75
+ // Validate secret properties
76
+ if (!enabled) {
77
+ throw new Error(`Secret '${config.secretName}' is disabled`);
78
+ }
79
+ if (expiresOn && expiresOn.getTime() < Date.now()) {
80
+ throw new Error(`Secret '${config.secretName}' expired on ${expiresOn.toISOString()}`);
81
+ }
82
+ if (notBefore && notBefore.getTime() > Date.now()) {
83
+ throw new Error(`Secret '${config.secretName}' is not valid before ${notBefore.toISOString()}`);
84
+ }
85
+ // Determine credential type based on content type
86
+ if (contentType === "application/x-pkcs12") {
87
+ // Certificate (PFX format, base64 encoded)
88
+ const certificate = Buffer.from(secret.value, "base64");
89
+ log(`[AzureKeyVaultProvider] Retrieved certificate (${certificate.byteLength} bytes)`);
90
+ return {
91
+ type: "certificate",
92
+ value: certificate,
93
+ };
94
+ }
95
+ else {
96
+ // Password (plain text)
97
+ log(`[AzureKeyVaultProvider] Retrieved password (${secret.value.length} characters)`);
98
+ return {
99
+ type: "password",
100
+ value: secret.value,
101
+ };
102
+ }
103
+ }
104
+ }
105
+ //# sourceMappingURL=AzureKeyVaultProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AzureKeyVaultProvider.js","sourceRoot":"","sources":["../../src/providers/AzureKeyVaultProvider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { CredentialResult, ProviderConfig } from "../types";
2
+ /**
3
+ * Abstract base class for credential providers
4
+ * Implements Factory pattern for extensibility
5
+ */
6
+ export declare abstract class CredentialProvider {
7
+ protected config: ProviderConfig;
8
+ constructor(config: ProviderConfig);
9
+ /**
10
+ * Retrieve the credential from the provider
11
+ * @returns Promise resolving to the credential
12
+ */
13
+ abstract getCredential(): Promise<CredentialResult>;
14
+ /**
15
+ * Validate the provider configuration
16
+ * @throws Error if configuration is invalid
17
+ */
18
+ abstract validateConfig(): void;
19
+ /**
20
+ * Get a human-readable name for logging
21
+ */
22
+ abstract getProviderName(): string;
23
+ }
24
+ //# sourceMappingURL=CredentialProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CredentialProvider.d.ts","sourceRoot":"","sources":["../../src/providers/CredentialProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAEjE;;;GAGG;AACH,8BAAsB,kBAAkB;IAC1B,SAAS,CAAC,MAAM,EAAE,cAAc;gBAAtB,MAAM,EAAE,cAAc;IAE5C;;;OAGG;IACH,QAAQ,CAAC,aAAa,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAEnD;;;OAGG;IACH,QAAQ,CAAC,cAAc,IAAI,IAAI;IAE/B;;OAEG;IACH,QAAQ,CAAC,eAAe,IAAI,MAAM;CACnC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Abstract base class for credential providers
3
+ * Implements Factory pattern for extensibility
4
+ */
5
+ export class CredentialProvider {
6
+ constructor(config) {
7
+ this.config = config;
8
+ }
9
+ }
10
+ //# sourceMappingURL=CredentialProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CredentialProvider.js","sourceRoot":"","sources":["../../src/providers/CredentialProvider.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,OAAgB,kBAAkB;IACtC,YAAsB,MAAsB;QAAtB,WAAM,GAAN,MAAM,CAAgB;IAAG,CAAC;CAkBjD"}
@@ -0,0 +1,20 @@
1
+ import { CredentialProvider } from "./CredentialProvider";
2
+ import type { CredentialProviderType, ProviderConfig } from "../types";
3
+ /**
4
+ * Factory for creating credential providers
5
+ * Implements Abstract Factory pattern for extensibility
6
+ */
7
+ export declare class CredentialProviderFactory {
8
+ /**
9
+ * Create a credential provider based on type and configuration
10
+ * @param type Provider type
11
+ * @param config Provider-specific configuration
12
+ * @returns CredentialProvider instance
13
+ */
14
+ static createProvider(type: CredentialProviderType, config: ProviderConfig): CredentialProvider;
15
+ /**
16
+ * Get list of supported provider types
17
+ */
18
+ static getSupportedProviders(): CredentialProviderType[];
19
+ }
20
+ //# sourceMappingURL=CredentialProviderFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CredentialProviderFactory.d.ts","sourceRoot":"","sources":["../../src/providers/CredentialProviderFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAK1D,OAAO,KAAK,EACV,sBAAsB,EACtB,cAAc,EAKf,MAAM,UAAU,CAAC;AAElB;;;GAGG;AACH,qBAAa,yBAAyB;IACpC;;;;;OAKG;IACH,MAAM,CAAC,cAAc,CACnB,IAAI,EAAE,sBAAsB,EAC5B,MAAM,EAAE,cAAc,GACrB,kBAAkB;IAmBrB;;OAEG;IACH,MAAM,CAAC,qBAAqB,IAAI,sBAAsB,EAAE;CAGzD"}
@@ -0,0 +1,37 @@
1
+ import { AzureKeyVaultProvider } from "./AzureKeyVaultProvider";
2
+ import { LocalFileProvider } from "./LocalFileProvider";
3
+ import { EnvironmentProvider } from "./EnvironmentProvider";
4
+ import { GitHubSecretsProvider } from "./GitHubSecretsProvider";
5
+ /**
6
+ * Factory for creating credential providers
7
+ * Implements Abstract Factory pattern for extensibility
8
+ */
9
+ export class CredentialProviderFactory {
10
+ /**
11
+ * Create a credential provider based on type and configuration
12
+ * @param type Provider type
13
+ * @param config Provider-specific configuration
14
+ * @returns CredentialProvider instance
15
+ */
16
+ static createProvider(type, config) {
17
+ switch (type) {
18
+ case "azure-keyvault":
19
+ return new AzureKeyVaultProvider(config);
20
+ case "local-file":
21
+ return new LocalFileProvider(config);
22
+ case "environment":
23
+ return new EnvironmentProvider(config);
24
+ case "github-secrets":
25
+ return new GitHubSecretsProvider(config);
26
+ default:
27
+ throw new Error(`Unsupported credential provider type: ${type}`);
28
+ }
29
+ }
30
+ /**
31
+ * Get list of supported provider types
32
+ */
33
+ static getSupportedProviders() {
34
+ return ["azure-keyvault", "local-file", "environment", "github-secrets"];
35
+ }
36
+ }
37
+ //# sourceMappingURL=CredentialProviderFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CredentialProviderFactory.js","sourceRoot":"","sources":["../../src/providers/CredentialProviderFactory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAUhE;;;GAGG;AACH,MAAM,OAAO,yBAAyB;IACpC;;;;;OAKG;IACH,MAAM,CAAC,cAAc,CACnB,IAA4B,EAC5B,MAAsB;QAEtB,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,gBAAgB;gBACnB,OAAO,IAAI,qBAAqB,CAAC,MAA6B,CAAC,CAAC;YAElE,KAAK,YAAY;gBACf,OAAO,IAAI,iBAAiB,CAAC,MAAyB,CAAC,CAAC;YAE1D,KAAK,aAAa;gBAChB,OAAO,IAAI,mBAAmB,CAAC,MAA2B,CAAC,CAAC;YAE9D,KAAK,gBAAgB;gBACnB,OAAO,IAAI,qBAAqB,CAAC,MAA6B,CAAC,CAAC;YAElE;gBACE,MAAM,IAAI,KAAK,CAAC,yCAAyC,IAAI,EAAE,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,qBAAqB;QAC1B,OAAO,CAAC,gBAAgB,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,CAAC,CAAC;IAC3E,CAAC;CACF"}
@@ -0,0 +1,13 @@
1
+ import { CredentialProvider } from "./CredentialProvider";
2
+ import type { EnvironmentConfig, CredentialResult } from "../types";
3
+ /**
4
+ * Environment variable credential provider
5
+ * Retrieves passwords or certificates from environment variables
6
+ */
7
+ export declare class EnvironmentProvider extends CredentialProvider {
8
+ constructor(config: EnvironmentConfig);
9
+ getProviderName(): string;
10
+ validateConfig(): void;
11
+ getCredential(): Promise<CredentialResult>;
12
+ }
13
+ //# sourceMappingURL=EnvironmentProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EnvironmentProvider.d.ts","sourceRoot":"","sources":["../../src/providers/EnvironmentProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAGpE;;;GAGG;AACH,qBAAa,mBAAoB,SAAQ,kBAAkB;gBAC7C,MAAM,EAAE,iBAAiB;IAKrC,eAAe,IAAI,MAAM;IAIzB,cAAc,IAAI,IAAI;IAOhB,aAAa,IAAI,OAAO,CAAC,gBAAgB,CAAC;CAwCjD"}
@@ -0,0 +1,52 @@
1
+ import { CredentialProvider } from "./CredentialProvider";
2
+ import { log } from "../utils";
3
+ /**
4
+ * Environment variable credential provider
5
+ * Retrieves passwords or certificates from environment variables
6
+ */
7
+ export class EnvironmentProvider extends CredentialProvider {
8
+ constructor(config) {
9
+ super(config);
10
+ this.validateConfig();
11
+ }
12
+ getProviderName() {
13
+ return "Environment Variable";
14
+ }
15
+ validateConfig() {
16
+ const config = this.config;
17
+ if (!config.variableName) {
18
+ throw new Error("Environment variable name is required");
19
+ }
20
+ }
21
+ async getCredential() {
22
+ const config = this.config;
23
+ log(`[EnvironmentProvider] Reading credential from environment variable '${config.variableName}'`);
24
+ const value = process.env[config.variableName];
25
+ if (!value) {
26
+ throw new Error(`Environment variable '${config.variableName}' is not set or empty. ` +
27
+ `Please set this variable with the credential value.`);
28
+ }
29
+ // Try to detect if it's a base64 encoded certificate
30
+ try {
31
+ const decoded = Buffer.from(value, "base64");
32
+ // Check if it's a valid DER/PFX certificate (starts with 0x30)
33
+ if (decoded.length > 100 && decoded[0] === 0x30) {
34
+ log(`[EnvironmentProvider] Retrieved base64-encoded certificate (${decoded.byteLength} bytes)`);
35
+ return {
36
+ type: "certificate",
37
+ value: decoded,
38
+ };
39
+ }
40
+ }
41
+ catch {
42
+ // Not base64 or not a certificate
43
+ }
44
+ // Default to password
45
+ log(`[EnvironmentProvider] Retrieved password (${value.length} characters)`);
46
+ return {
47
+ type: "password",
48
+ value: value,
49
+ };
50
+ }
51
+ }
52
+ //# sourceMappingURL=EnvironmentProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EnvironmentProvider.js","sourceRoot":"","sources":["../../src/providers/EnvironmentProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B;;;GAGG;AACH,MAAM,OAAO,mBAAoB,SAAQ,kBAAkB;IACzD,YAAY,MAAyB;QACnC,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;IAED,eAAe;QACb,OAAO,sBAAsB,CAAC;IAChC,CAAC;IAED,cAAc;QACZ,MAAM,MAAM,GAAG,IAAI,CAAC,MAA2B,CAAC;QAChD,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,MAAM,MAAM,GAAG,IAAI,CAAC,MAA2B,CAAC;QAChD,GAAG,CACD,uEAAuE,MAAM,CAAC,YAAY,GAAG,CAC9F,CAAC;QAEF,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC/C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CACb,yBAAyB,MAAM,CAAC,YAAY,yBAAyB;gBACnE,qDAAqD,CACxD,CAAC;QACJ,CAAC;QAED,qDAAqD;QACrD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAC7C,+DAA+D;YAC/D,IAAI,OAAO,CAAC,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBAChD,GAAG,CACD,+DAA+D,OAAO,CAAC,UAAU,SAAS,CAC3F,CAAC;gBACF,OAAO;oBACL,IAAI,EAAE,aAAa;oBACnB,KAAK,EAAE,OAAO;iBACf,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,kCAAkC;QACpC,CAAC;QAED,sBAAsB;QACtB,GAAG,CACD,6CAA6C,KAAK,CAAC,MAAM,cAAc,CACxE,CAAC;QACF,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,KAAK;SACb,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,13 @@
1
+ import { CredentialProvider } from "./CredentialProvider";
2
+ import type { GitHubSecretsConfig, CredentialResult } from "../types";
3
+ /**
4
+ * GitHub Secrets credential provider
5
+ * Placeholder for future implementation
6
+ */
7
+ export declare class GitHubSecretsProvider extends CredentialProvider {
8
+ constructor(config: GitHubSecretsConfig);
9
+ getProviderName(): string;
10
+ validateConfig(): void;
11
+ getCredential(): Promise<CredentialResult>;
12
+ }
13
+ //# sourceMappingURL=GitHubSecretsProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GitHubSecretsProvider.d.ts","sourceRoot":"","sources":["../../src/providers/GitHubSecretsProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAGtE;;;GAGG;AACH,qBAAa,qBAAsB,SAAQ,kBAAkB;gBAC/C,MAAM,EAAE,mBAAmB;IAKvC,eAAe,IAAI,MAAM;IAIzB,cAAc,IAAI,IAAI;IAUhB,aAAa,IAAI,OAAO,CAAC,gBAAgB,CAAC;CA8CjD"}
@@ -0,0 +1,59 @@
1
+ import { CredentialProvider } from "./CredentialProvider";
2
+ import { log } from "../utils";
3
+ /**
4
+ * GitHub Secrets credential provider
5
+ * Placeholder for future implementation
6
+ */
7
+ export class GitHubSecretsProvider extends CredentialProvider {
8
+ constructor(config) {
9
+ super(config);
10
+ this.validateConfig();
11
+ }
12
+ getProviderName() {
13
+ return "GitHub Secrets";
14
+ }
15
+ validateConfig() {
16
+ const config = this.config;
17
+ if (!config.repository) {
18
+ throw new Error("GitHub repository is required (format: owner/repo)");
19
+ }
20
+ if (!config.secretName) {
21
+ throw new Error("GitHub secret name is required");
22
+ }
23
+ }
24
+ async getCredential() {
25
+ // This is a placeholder for future GitHub Secrets API integration
26
+ // For now, we'll check if the secret is available via environment variable
27
+ // (GitHub Actions automatically exposes secrets as env vars)
28
+ const config = this.config;
29
+ const envVarName = config.secretName
30
+ .toUpperCase()
31
+ .replace(/[^A-Z0-9_]/g, "_");
32
+ log(`[GitHubSecretsProvider] Looking for secret '${config.secretName}' in environment`);
33
+ const value = process.env[envVarName];
34
+ if (!value) {
35
+ throw new Error(`GitHub secret '${config.secretName}' not found in environment. ` +
36
+ `In GitHub Actions, secrets are exposed as environment variables.`);
37
+ }
38
+ // Try to detect if it's a base64 encoded certificate
39
+ try {
40
+ const decoded = Buffer.from(value, "base64");
41
+ if (decoded.length > 100 && decoded[0] === 0x30) {
42
+ log(`[GitHubSecretsProvider] Retrieved certificate (${decoded.byteLength} bytes)`);
43
+ return {
44
+ type: "certificate",
45
+ value: decoded,
46
+ };
47
+ }
48
+ }
49
+ catch {
50
+ // Not base64
51
+ }
52
+ log(`[GitHubSecretsProvider] Retrieved password (${value.length} characters)`);
53
+ return {
54
+ type: "password",
55
+ value: value,
56
+ };
57
+ }
58
+ }
59
+ //# sourceMappingURL=GitHubSecretsProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GitHubSecretsProvider.js","sourceRoot":"","sources":["../../src/providers/GitHubSecretsProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B;;;GAGG;AACH,MAAM,OAAO,qBAAsB,SAAQ,kBAAkB;IAC3D,YAAY,MAA2B;QACrC,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;IAED,eAAe;QACb,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED,cAAc;QACZ,MAAM,MAAM,GAAG,IAAI,CAAC,MAA6B,CAAC;QAClD,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACxE,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,kEAAkE;QAClE,2EAA2E;QAC3E,6DAA6D;QAE7D,MAAM,MAAM,GAAG,IAAI,CAAC,MAA6B,CAAC;QAClD,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU;aACjC,WAAW,EAAE;aACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;QAE/B,GAAG,CACD,+CAA+C,MAAM,CAAC,UAAU,kBAAkB,CACnF,CAAC;QAEF,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CACb,kBAAkB,MAAM,CAAC,UAAU,8BAA8B;gBAC/D,kEAAkE,CACrE,CAAC;QACJ,CAAC;QAED,qDAAqD;QACrD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAC7C,IAAI,OAAO,CAAC,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBAChD,GAAG,CACD,kDAAkD,OAAO,CAAC,UAAU,SAAS,CAC9E,CAAC;gBACF,OAAO;oBACL,IAAI,EAAE,aAAa;oBACnB,KAAK,EAAE,OAAO;iBACf,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,aAAa;QACf,CAAC;QAED,GAAG,CACD,+CAA+C,KAAK,CAAC,MAAM,cAAc,CAC1E,CAAC;QACF,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,KAAK;SACb,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,13 @@
1
+ import { CredentialProvider } from "./CredentialProvider";
2
+ import type { LocalFileConfig, CredentialResult } from "../types";
3
+ /**
4
+ * Local file credential provider
5
+ * Retrieves passwords or certificates from local file system
6
+ */
7
+ export declare class LocalFileProvider extends CredentialProvider {
8
+ constructor(config: LocalFileConfig);
9
+ getProviderName(): string;
10
+ validateConfig(): void;
11
+ getCredential(): Promise<CredentialResult>;
12
+ }
13
+ //# sourceMappingURL=LocalFileProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LocalFileProvider.d.ts","sourceRoot":"","sources":["../../src/providers/LocalFileProvider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAGlE;;;GAGG;AACH,qBAAa,iBAAkB,SAAQ,kBAAkB;gBAC3C,MAAM,EAAE,eAAe;IAKnC,eAAe,IAAI,MAAM;IAIzB,cAAc,IAAI,IAAI;IAOhB,aAAa,IAAI,OAAO,CAAC,gBAAgB,CAAC;CAmEjD"}
@@ -0,0 +1,77 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import { CredentialProvider } from "./CredentialProvider";
3
+ import { log } from "../utils";
4
+ /**
5
+ * Local file credential provider
6
+ * Retrieves passwords or certificates from local file system
7
+ */
8
+ export class LocalFileProvider extends CredentialProvider {
9
+ constructor(config) {
10
+ super(config);
11
+ this.validateConfig();
12
+ }
13
+ getProviderName() {
14
+ return "Local File";
15
+ }
16
+ validateConfig() {
17
+ const config = this.config;
18
+ if (!config.filePath) {
19
+ throw new Error("File path is required for local file provider");
20
+ }
21
+ }
22
+ async getCredential() {
23
+ const config = this.config;
24
+ log(`[LocalFileProvider] Reading credential from '${config.filePath}'`);
25
+ try {
26
+ const fileContent = await readFile(config.filePath);
27
+ // Detect file type based on extension or content
28
+ const isTextFile = config.filePath.match(/\.(txt|pwd|password)$/i);
29
+ const isCertFile = config.filePath.match(/\.(pfx|p12|cer|crt|pem)$/i);
30
+ if (isTextFile) {
31
+ // Text file containing password
32
+ const password = fileContent.toString("utf-8").trim();
33
+ log(`[LocalFileProvider] Retrieved password (${password.length} characters)`);
34
+ return {
35
+ type: "password",
36
+ value: password,
37
+ };
38
+ }
39
+ else if (isCertFile || fileContent[0] === 0x30) {
40
+ // Certificate file (PFX/P12) or binary content starting with 0x30 (DER encoded)
41
+ log(`[LocalFileProvider] Retrieved certificate (${fileContent.byteLength} bytes)`);
42
+ return {
43
+ type: "certificate",
44
+ value: fileContent,
45
+ };
46
+ }
47
+ else {
48
+ // Try to detect if it's base64 encoded certificate
49
+ try {
50
+ const decoded = Buffer.from(fileContent.toString("utf-8").trim(), "base64");
51
+ if (decoded.length > 0 && decoded[0] === 0x30) {
52
+ log(`[LocalFileProvider] Retrieved base64-encoded certificate (${decoded.byteLength} bytes)`);
53
+ return {
54
+ type: "certificate",
55
+ value: decoded,
56
+ };
57
+ }
58
+ }
59
+ catch {
60
+ // Not base64
61
+ }
62
+ // Default to password
63
+ const password = fileContent.toString("utf-8").trim();
64
+ log(`[LocalFileProvider] Retrieved password (${password.length} characters)`);
65
+ return {
66
+ type: "password",
67
+ value: password,
68
+ };
69
+ }
70
+ }
71
+ catch (error) {
72
+ const message = error instanceof Error ? error.message : String(error);
73
+ throw new Error(`Failed to read credential file '${config.filePath}': ${message}`);
74
+ }
75
+ }
76
+ }
77
+ //# sourceMappingURL=LocalFileProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LocalFileProvider.js","sourceRoot":"","sources":["../../src/providers/LocalFileProvider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export * from "./CredentialProvider";
2
+ export * from "./CredentialProviderFactory";
3
+ export * from "./AzureKeyVaultProvider";
4
+ export * from "./LocalFileProvider";
5
+ export * from "./EnvironmentProvider";
6
+ export * from "./GitHubSecretsProvider";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC"}
@@ -0,0 +1,7 @@
1
+ export * from "./CredentialProvider";
2
+ export * from "./CredentialProviderFactory";
3
+ export * from "./AzureKeyVaultProvider";
4
+ export * from "./LocalFileProvider";
5
+ export * from "./EnvironmentProvider";
6
+ export * from "./GitHubSecretsProvider";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC"}