@ms-cloudpack/remote-cache 0.1.15 → 0.1.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/authentication/KeyRingLocalTokenCache.d.ts +4 -3
- package/lib/authentication/KeyRingLocalTokenCache.d.ts.map +1 -1
- package/lib/authentication/KeyRingLocalTokenCache.js +22 -11
- package/lib/authentication/KeyRingLocalTokenCache.js.map +1 -1
- package/lib/authentication/getAuthenticatedConnectionString.d.ts.map +1 -1
- package/lib/authentication/getAuthenticatedConnectionString.js +5 -2
- package/lib/authentication/getAuthenticatedConnectionString.js.map +1 -1
- package/lib/tsdoc-metadata.json +1 -1
- package/lib/types/LocalTokenCacheProvider.d.ts +1 -0
- package/lib/types/LocalTokenCacheProvider.d.ts.map +1 -1
- package/lib/types/LocalTokenCacheProvider.js.map +1 -1
- package/package.json +5 -4
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import type { LocalTokenCacheProvider } from '../types/LocalTokenCacheProvider.js';
|
|
2
|
-
import type { ConnectionStringOptions } from '../types/ConnectionStringOptions.js';
|
|
3
2
|
/**
|
|
4
3
|
* This class is responsible to read and store tokens in a key ring provided by operating system.
|
|
5
4
|
*/
|
|
6
5
|
export declare class KeyRingLocalTokenCache implements LocalTokenCacheProvider {
|
|
6
|
+
private readonly service;
|
|
7
|
+
private readonly key;
|
|
7
8
|
private readonly entry;
|
|
8
|
-
|
|
9
|
-
constructor(options: ConnectionStringOptions);
|
|
9
|
+
constructor(service: string, key: string);
|
|
10
10
|
get(): string | undefined;
|
|
11
11
|
set(value: string): void;
|
|
12
|
+
delete(): void;
|
|
12
13
|
}
|
|
13
14
|
//# sourceMappingURL=KeyRingLocalTokenCache.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KeyRingLocalTokenCache.d.ts","sourceRoot":"","sources":["../../src/authentication/KeyRingLocalTokenCache.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"KeyRingLocalTokenCache.d.ts","sourceRoot":"","sources":["../../src/authentication/KeyRingLocalTokenCache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAGnF;;GAEG;AACH,qBAAa,sBAAuB,YAAW,uBAAuB;IAIlE,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,GAAG;IAJtB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;gBAGX,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM;IAK9B,GAAG;IAiBH,GAAG,CAAC,KAAK,EAAE,MAAM;IAIjB,MAAM;CAOP"}
|
|
@@ -1,26 +1,37 @@
|
|
|
1
|
-
import { ContainerSASPermissions } from '@azure/storage-blob';
|
|
2
1
|
import { Entry } from '@napi-rs/keyring';
|
|
3
2
|
/**
|
|
4
3
|
* This class is responsible to read and store tokens in a key ring provided by operating system.
|
|
5
4
|
*/
|
|
6
5
|
export class KeyRingLocalTokenCache {
|
|
7
|
-
constructor(
|
|
8
|
-
this.
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
};
|
|
12
|
-
this.entry = new Entry(this.entryOptions.service, this.entryOptions.username);
|
|
6
|
+
constructor(service, key) {
|
|
7
|
+
this.service = service;
|
|
8
|
+
this.key = key;
|
|
9
|
+
this.entry = new Entry(service, key);
|
|
13
10
|
}
|
|
14
11
|
get() {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
12
|
+
try {
|
|
13
|
+
const result = this.entry.getPassword();
|
|
14
|
+
console.debug(`KeyRingLocalTokenCache.get service:${this.service} key:${this.key} result:${result}`);
|
|
15
|
+
if (!result) {
|
|
16
|
+
return undefined;
|
|
17
|
+
}
|
|
18
|
+
return result;
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
// If the entry does not exist getPassword might throw an error, return undefined.
|
|
18
22
|
return undefined;
|
|
19
23
|
}
|
|
20
|
-
return result;
|
|
21
24
|
}
|
|
22
25
|
set(value) {
|
|
23
26
|
this.entry.setPassword(value);
|
|
24
27
|
}
|
|
28
|
+
delete() {
|
|
29
|
+
try {
|
|
30
|
+
this.entry.deletePassword();
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
// If the entry does not exist deletePassword might throw an error, do nothing.
|
|
34
|
+
}
|
|
35
|
+
}
|
|
25
36
|
}
|
|
26
37
|
//# sourceMappingURL=KeyRingLocalTokenCache.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KeyRingLocalTokenCache.js","sourceRoot":"","sources":["../../src/authentication/KeyRingLocalTokenCache.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"KeyRingLocalTokenCache.js","sourceRoot":"","sources":["../../src/authentication/KeyRingLocalTokenCache.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC;;GAEG;AACH,MAAM,OAAO,sBAAsB;IAGjC,YACmB,OAAe,EACf,GAAW;QADX,YAAO,GAAP,OAAO,CAAQ;QACf,QAAG,GAAH,GAAG,CAAQ;QAE5B,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACvC,CAAC;IAED,GAAG;QACD,IAAI;YACF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YAExC,OAAO,CAAC,KAAK,CAAC,sCAAsC,IAAI,CAAC,OAAO,QAAQ,IAAI,CAAC,GAAG,WAAW,MAAM,EAAE,CAAC,CAAC;YAErG,IAAI,CAAC,MAAM,EAAE;gBACX,OAAO,SAAS,CAAC;aAClB;YAED,OAAO,MAAM,CAAC;SACf;QAAC,MAAM;YACN,kFAAkF;YAClF,OAAO,SAAS,CAAC;SAClB;IACH,CAAC;IAED,GAAG,CAAC,KAAa;QACf,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,MAAM;QACJ,IAAI;YACF,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;SAC7B;QAAC,MAAM;YACN,+EAA+E;SAChF;IACH,CAAC;CACF","sourcesContent":["import type { LocalTokenCacheProvider } from '../types/LocalTokenCacheProvider.js';\nimport { Entry } from '@napi-rs/keyring';\n\n/**\n * This class is responsible to read and store tokens in a key ring provided by operating system.\n */\nexport class KeyRingLocalTokenCache implements LocalTokenCacheProvider {\n private readonly entry: Entry;\n\n constructor(\n private readonly service: string,\n private readonly key: string,\n ) {\n this.entry = new Entry(service, key);\n }\n\n get() {\n try {\n const result = this.entry.getPassword();\n\n console.debug(`KeyRingLocalTokenCache.get service:${this.service} key:${this.key} result:${result}`);\n\n if (!result) {\n return undefined;\n }\n\n return result;\n } catch {\n // If the entry does not exist getPassword might throw an error, return undefined.\n return undefined;\n }\n }\n\n set(value: string) {\n this.entry.setPassword(value);\n }\n\n delete() {\n try {\n this.entry.deletePassword();\n } catch {\n // If the entry does not exist deletePassword might throw an error, do nothing.\n }\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getAuthenticatedConnectionString.d.ts","sourceRoot":"","sources":["../../src/authentication/getAuthenticatedConnectionString.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"getAuthenticatedConnectionString.d.ts","sourceRoot":"","sources":["../../src/authentication/getAuthenticatedConnectionString.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAenF,wBAAsB,gCAAgC,CAAC,uBAAuB,EAAE,uBAAuB,mBAUtG"}
|
|
@@ -2,9 +2,12 @@ import { createBlobStorageUrl } from './createBlobStorageUrl.js';
|
|
|
2
2
|
import { getSasToken } from './getSasToken.js';
|
|
3
3
|
import { acquireSasToken } from './acquireSasToken.js';
|
|
4
4
|
import { isExpired } from './isExpired.js';
|
|
5
|
-
|
|
5
|
+
import { ContainerSASPermissions } from '@azure/storage-blob';
|
|
6
|
+
async function createLocalTokenCacheLazy({ storageAccount, container, permissions }) {
|
|
6
7
|
const { KeyRingLocalTokenCache } = await import('./KeyRingLocalTokenCache.js');
|
|
7
|
-
|
|
8
|
+
const service = `cloudpack-cache-${storageAccount}`;
|
|
9
|
+
const key = `container:${container};permission:${ContainerSASPermissions.from(permissions).toString()}`;
|
|
10
|
+
return new KeyRingLocalTokenCache(service, key);
|
|
8
11
|
}
|
|
9
12
|
export async function getAuthenticatedConnectionString(connectionStringOptions) {
|
|
10
13
|
// No need to cache tokens if the user is NOT running in interactive mode.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getAuthenticatedConnectionString.js","sourceRoot":"","sources":["../../src/authentication/getAuthenticatedConnectionString.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"getAuthenticatedConnectionString.js","sourceRoot":"","sources":["../../src/authentication/getAuthenticatedConnectionString.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,KAAK,UAAU,yBAAyB,CAAC,EAAE,cAAc,EAAE,SAAS,EAAE,WAAW,EAA2B;IAC1G,MAAM,EAAE,sBAAsB,EAAE,GAAG,MAAM,MAAM,CAAC,6BAA6B,CAAC,CAAC;IAE/E,MAAM,OAAO,GAAG,mBAAmB,cAAc,EAAE,CAAC;IACpD,MAAM,GAAG,GAAG,aAAa,SAAS,eAAe,uBAAuB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC;IAExG,OAAO,IAAI,sBAAsB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gCAAgC,CAAC,uBAAgD;IACrG,0EAA0E;IAC1E,MAAM,UAAU,GAAG,uBAAuB,CAAC,kBAAkB;QAC3D,CAAC,CAAC,MAAM,yBAAyB,CAAC,uBAAuB,CAAC;QAC1D,CAAC,CAAC,SAAS,CAAC;IAEd,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,EAAE,uBAAuB,EAAE,EAAE,EAAE,UAAU,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC,CAAC;IAE5G,MAAM,EAAE,cAAc,EAAE,GAAG,uBAAuB,CAAC;IACnD,OAAO,gBAAgB,oBAAoB,CAAC,cAAc,CAAC,0BAA0B,QAAQ,EAAE,CAAC;AAClG,CAAC","sourcesContent":["import { createBlobStorageUrl } from './createBlobStorageUrl.js';\nimport type { ConnectionStringOptions } from '../types/ConnectionStringOptions.js';\nimport { getSasToken } from './getSasToken.js';\nimport { acquireSasToken } from './acquireSasToken.js';\nimport { isExpired } from './isExpired.js';\nimport { ContainerSASPermissions } from '@azure/storage-blob';\n\nasync function createLocalTokenCacheLazy({ storageAccount, container, permissions }: ConnectionStringOptions) {\n const { KeyRingLocalTokenCache } = await import('./KeyRingLocalTokenCache.js');\n\n const service = `cloudpack-cache-${storageAccount}`;\n const key = `container:${container};permission:${ContainerSASPermissions.from(permissions).toString()}`;\n\n return new KeyRingLocalTokenCache(service, key);\n}\n\nexport async function getAuthenticatedConnectionString(connectionStringOptions: ConnectionStringOptions) {\n // No need to cache tokens if the user is NOT running in interactive mode.\n const tokenCache = connectionStringOptions.isInteractiveLogin\n ? await createLocalTokenCacheLazy(connectionStringOptions)\n : undefined;\n\n const sasToken = await getSasToken({ connectionStringOptions }, { tokenCache, acquireSasToken, isExpired });\n\n const { storageAccount } = connectionStringOptions;\n return `BlobEndpoint=${createBlobStorageUrl(storageAccount)};SharedAccessSignature=${sasToken}`;\n}\n"]}
|
package/lib/tsdoc-metadata.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LocalTokenCacheProvider.d.ts","sourceRoot":"","sources":["../../src/types/LocalTokenCacheProvider.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,uBAAuB;IACtC,GAAG,IAAI,MAAM,GAAG,SAAS,CAAC;IAC1B,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"LocalTokenCacheProvider.d.ts","sourceRoot":"","sources":["../../src/types/LocalTokenCacheProvider.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,uBAAuB;IACtC,GAAG,IAAI,MAAM,GAAG,SAAS,CAAC;IAC1B,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,IAAI,IAAI,CAAC;CAChB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LocalTokenCacheProvider.js","sourceRoot":"","sources":["../../src/types/LocalTokenCacheProvider.ts"],"names":[],"mappings":"","sourcesContent":["export interface LocalTokenCacheProvider {\n get(): string | undefined;\n set(value: string): void;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"LocalTokenCacheProvider.js","sourceRoot":"","sources":["../../src/types/LocalTokenCacheProvider.ts"],"names":[],"mappings":"","sourcesContent":["export interface LocalTokenCacheProvider {\n get(): string | undefined;\n set(value: string): void;\n delete(): void;\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ms-cloudpack/remote-cache",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.17",
|
|
4
4
|
"description": "Manages syncing the local Cloudpack cached assets to/from a remote storage service.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -15,7 +15,8 @@
|
|
|
15
15
|
},
|
|
16
16
|
"devDependencies": {
|
|
17
17
|
"@ms-cloudpack/eslint-plugin-internal": "*",
|
|
18
|
-
"@ms-cloudpack/scripts": "*"
|
|
18
|
+
"@ms-cloudpack/scripts": "*",
|
|
19
|
+
"uuid": "^9.0.0"
|
|
19
20
|
},
|
|
20
21
|
"scripts": {
|
|
21
22
|
"api": "cloudpack-scripts api",
|
|
@@ -30,8 +31,8 @@
|
|
|
30
31
|
"lib/**/!(*.test.*)"
|
|
31
32
|
],
|
|
32
33
|
"dependencies": {
|
|
33
|
-
"@ms-cloudpack/task-reporter": "^0.10.
|
|
34
|
-
"@azure/identity": "^3.
|
|
34
|
+
"@ms-cloudpack/task-reporter": "^0.10.1",
|
|
35
|
+
"@azure/identity": "^3.4.0",
|
|
35
36
|
"@azure/storage-blob": "^12.15.0",
|
|
36
37
|
"@napi-rs/keyring": "^1.1.3",
|
|
37
38
|
"backfill": "^6.2.1",
|