@milaboratories/pl-drivers 1.14.7 → 1.14.8

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.
@@ -42,7 +42,7 @@ function parseRemoteStorageHandle(handle) {
42
42
  isRemote: true,
43
43
  storageId,
44
44
  resourceType: (0, _milaboratories_pl_client.parseResourceType)(decodeURIComponent(encodedRType)),
45
- resourceId: decodeURIComponent(encodedRId)
45
+ resourceId: (0, _milaboratories_pl_client.asSignedResourceId)(decodeURIComponent(encodedRId))
46
46
  };
47
47
  }
48
48
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"ls_storage_entry.cjs","names":[],"sources":["../../../src/drivers/helpers/ls_storage_entry.ts"],"sourcesContent":["import type * as sdk from \"@milaboratories/pl-model-common\";\nimport type { ResourceType, SignedResourceId, StorageInfo } from \"@milaboratories/pl-client\";\nimport { resourceTypeToString, parseResourceType } from \"@milaboratories/pl-client\";\nimport { assertNever } from \"@milaboratories/ts-helpers\";\n\nexport type StorageHandleData = RemoteStorageHandleData | LocalStorageHandleData;\n\n/**\n * Gets a storage handle and gives an underlying data from it.\n */\nexport function parseStorageHandle(handle: sdk.StorageHandle): StorageHandleData {\n if (isRemoteStorageHandle(handle)) {\n return parseRemoteStorageHandle(handle);\n } else if (isLocalStorageHandle(handle)) {\n return parseLocalStorageHandle(handle);\n }\n\n assertNever(handle);\n}\n\n//\n// Local storage:\n//\n\nexport type LocalStorageHandleData = {\n isRemote: false;\n name: string;\n rootPath: string;\n};\n\nconst localHandleRegex = /^local:\\/\\/(?<name>.*)\\/(?<path>.*)$/;\n\nexport function isLocalStorageHandle(handle: sdk.StorageHandle): handle is sdk.StorageHandleLocal {\n return localHandleRegex.test(handle);\n}\n\nexport function createLocalStorageHandle(name: string, path: string): sdk.StorageHandleLocal {\n return `local://${name}/${encodeURIComponent(path)}`;\n}\n\nfunction parseLocalStorageHandle(handle: string): LocalStorageHandleData {\n const parsed = handle.match(localHandleRegex);\n if (parsed == null) throw new Error(`Local list handle wasn't parsed: ${handle}`);\n\n const { name, path } = parsed.groups!;\n\n return {\n isRemote: false,\n rootPath: decodeURIComponent(path),\n name,\n };\n}\n\n//\n// Remote storage:\n//\n\nexport type RemoteStorageHandleData = {\n isRemote: true;\n storageId: string;\n resourceType: ResourceType;\n resourceId: SignedResourceId;\n};\n\nconst remoteHandleRegex = /^remote:\\/\\/(?<storageId>.*)\\/(?<resourceType>.*)\\/(?<resourceId>.*)$/;\n\nexport function isRemoteStorageHandle(\n handle: sdk.StorageHandle,\n): handle is sdk.StorageHandleRemote {\n return remoteHandleRegex.test(handle);\n}\n\nexport function createRemoteStorageHandle(info: StorageInfo): sdk.StorageHandleRemote {\n return `remote://${info.storageId}/${encodeURIComponent(resourceTypeToString(info.resourceType))}/${encodeURIComponent(info.resourceId)}`;\n}\n\nfunction parseRemoteStorageHandle(handle: string): RemoteStorageHandleData {\n const parsed = handle.match(remoteHandleRegex);\n if (parsed == null) throw new Error(`Remote list handle wasn't parsed: ${handle}`);\n const { storageId, resourceType: encodedRType, resourceId: encodedRId } = parsed.groups!;\n\n const resourceType = parseResourceType(decodeURIComponent(encodedRType));\n const resourceId = decodeURIComponent(encodedRId) as SignedResourceId; // lint-allow-cast\n return {\n isRemote: true,\n storageId,\n resourceType: resourceType,\n resourceId: resourceId,\n };\n}\n"],"mappings":";;;;;;;AAUA,SAAgB,mBAAmB,QAA8C;AAC/E,KAAI,sBAAsB,OAAO,CAC/B,QAAO,yBAAyB,OAAO;UAC9B,qBAAqB,OAAO,CACrC,QAAO,wBAAwB,OAAO;AAGxC,EAAA,GAAA,2BAAA,aAAY,OAAO;;AAarB,MAAM,mBAAmB;AAEzB,SAAgB,qBAAqB,QAA6D;AAChG,QAAO,iBAAiB,KAAK,OAAO;;AAGtC,SAAgB,yBAAyB,MAAc,MAAsC;AAC3F,QAAO,WAAW,KAAK,GAAG,mBAAmB,KAAK;;AAGpD,SAAS,wBAAwB,QAAwC;CACvE,MAAM,SAAS,OAAO,MAAM,iBAAiB;AAC7C,KAAI,UAAU,KAAM,OAAM,IAAI,MAAM,oCAAoC,SAAS;CAEjF,MAAM,EAAE,MAAM,SAAS,OAAO;AAE9B,QAAO;EACL,UAAU;EACV,UAAU,mBAAmB,KAAK;EAClC;EACD;;AAcH,MAAM,oBAAoB;AAE1B,SAAgB,sBACd,QACmC;AACnC,QAAO,kBAAkB,KAAK,OAAO;;AAGvC,SAAgB,0BAA0B,MAA4C;AACpF,QAAO,YAAY,KAAK,UAAU,GAAG,oBAAA,GAAA,0BAAA,sBAAwC,KAAK,aAAa,CAAC,CAAC,GAAG,mBAAmB,KAAK,WAAW;;AAGzI,SAAS,yBAAyB,QAAyC;CACzE,MAAM,SAAS,OAAO,MAAM,kBAAkB;AAC9C,KAAI,UAAU,KAAM,OAAM,IAAI,MAAM,qCAAqC,SAAS;CAClF,MAAM,EAAE,WAAW,cAAc,cAAc,YAAY,eAAe,OAAO;AAIjF,QAAO;EACL,UAAU;EACV;EACA,eAAA,GAAA,0BAAA,mBALqC,mBAAmB,aAAa,CAAC;EAMtE,YALiB,mBAAmB,WAAW;EAMhD"}
1
+ {"version":3,"file":"ls_storage_entry.cjs","names":[],"sources":["../../../src/drivers/helpers/ls_storage_entry.ts"],"sourcesContent":["import type * as sdk from \"@milaboratories/pl-model-common\";\nimport type { ResourceType, SignedResourceId, StorageInfo } from \"@milaboratories/pl-client\";\nimport {\n resourceTypeToString,\n parseResourceType,\n asSignedResourceId,\n} from \"@milaboratories/pl-client\";\nimport { assertNever } from \"@milaboratories/ts-helpers\";\n\nexport type StorageHandleData = RemoteStorageHandleData | LocalStorageHandleData;\n\n/**\n * Gets a storage handle and gives an underlying data from it.\n */\nexport function parseStorageHandle(handle: sdk.StorageHandle): StorageHandleData {\n if (isRemoteStorageHandle(handle)) {\n return parseRemoteStorageHandle(handle);\n } else if (isLocalStorageHandle(handle)) {\n return parseLocalStorageHandle(handle);\n }\n\n assertNever(handle);\n}\n\n//\n// Local storage:\n//\n\nexport type LocalStorageHandleData = {\n isRemote: false;\n name: string;\n rootPath: string;\n};\n\nconst localHandleRegex = /^local:\\/\\/(?<name>.*)\\/(?<path>.*)$/;\n\nexport function isLocalStorageHandle(handle: sdk.StorageHandle): handle is sdk.StorageHandleLocal {\n return localHandleRegex.test(handle);\n}\n\nexport function createLocalStorageHandle(name: string, path: string): sdk.StorageHandleLocal {\n return `local://${name}/${encodeURIComponent(path)}`;\n}\n\nfunction parseLocalStorageHandle(handle: string): LocalStorageHandleData {\n const parsed = handle.match(localHandleRegex);\n if (parsed == null) throw new Error(`Local list handle wasn't parsed: ${handle}`);\n\n const { name, path } = parsed.groups!;\n\n return {\n isRemote: false,\n rootPath: decodeURIComponent(path),\n name,\n };\n}\n\n//\n// Remote storage:\n//\n\nexport type RemoteStorageHandleData = {\n isRemote: true;\n storageId: string;\n resourceType: ResourceType;\n resourceId: SignedResourceId;\n};\n\nconst remoteHandleRegex = /^remote:\\/\\/(?<storageId>.*)\\/(?<resourceType>.*)\\/(?<resourceId>.*)$/;\n\nexport function isRemoteStorageHandle(\n handle: sdk.StorageHandle,\n): handle is sdk.StorageHandleRemote {\n return remoteHandleRegex.test(handle);\n}\n\nexport function createRemoteStorageHandle(info: StorageInfo): sdk.StorageHandleRemote {\n return `remote://${info.storageId}/${encodeURIComponent(resourceTypeToString(info.resourceType))}/${encodeURIComponent(info.resourceId)}`;\n}\n\nfunction parseRemoteStorageHandle(handle: string): RemoteStorageHandleData {\n const parsed = handle.match(remoteHandleRegex);\n if (parsed == null) throw new Error(`Remote list handle wasn't parsed: ${handle}`);\n const { storageId, resourceType: encodedRType, resourceId: encodedRId } = parsed.groups!;\n\n const resourceType = parseResourceType(decodeURIComponent(encodedRType));\n const resourceId = asSignedResourceId(decodeURIComponent(encodedRId));\n return {\n isRemote: true,\n storageId,\n resourceType: resourceType,\n resourceId: resourceId,\n };\n}\n"],"mappings":";;;;;;;AAcA,SAAgB,mBAAmB,QAA8C;AAC/E,KAAI,sBAAsB,OAAO,CAC/B,QAAO,yBAAyB,OAAO;UAC9B,qBAAqB,OAAO,CACrC,QAAO,wBAAwB,OAAO;AAGxC,EAAA,GAAA,2BAAA,aAAY,OAAO;;AAarB,MAAM,mBAAmB;AAEzB,SAAgB,qBAAqB,QAA6D;AAChG,QAAO,iBAAiB,KAAK,OAAO;;AAGtC,SAAgB,yBAAyB,MAAc,MAAsC;AAC3F,QAAO,WAAW,KAAK,GAAG,mBAAmB,KAAK;;AAGpD,SAAS,wBAAwB,QAAwC;CACvE,MAAM,SAAS,OAAO,MAAM,iBAAiB;AAC7C,KAAI,UAAU,KAAM,OAAM,IAAI,MAAM,oCAAoC,SAAS;CAEjF,MAAM,EAAE,MAAM,SAAS,OAAO;AAE9B,QAAO;EACL,UAAU;EACV,UAAU,mBAAmB,KAAK;EAClC;EACD;;AAcH,MAAM,oBAAoB;AAE1B,SAAgB,sBACd,QACmC;AACnC,QAAO,kBAAkB,KAAK,OAAO;;AAGvC,SAAgB,0BAA0B,MAA4C;AACpF,QAAO,YAAY,KAAK,UAAU,GAAG,oBAAA,GAAA,0BAAA,sBAAwC,KAAK,aAAa,CAAC,CAAC,GAAG,mBAAmB,KAAK,WAAW;;AAGzI,SAAS,yBAAyB,QAAyC;CACzE,MAAM,SAAS,OAAO,MAAM,kBAAkB;AAC9C,KAAI,UAAU,KAAM,OAAM,IAAI,MAAM,qCAAqC,SAAS;CAClF,MAAM,EAAE,WAAW,cAAc,cAAc,YAAY,eAAe,OAAO;AAIjF,QAAO;EACL,UAAU;EACV;EACA,eAAA,GAAA,0BAAA,mBALqC,mBAAmB,aAAa,CAAC;EAMtE,aAAA,GAAA,0BAAA,oBALoC,mBAAmB,WAAW,CAAC;EAMpE"}
@@ -1,4 +1,4 @@
1
- import { parseResourceType, resourceTypeToString } from "@milaboratories/pl-client";
1
+ import { asSignedResourceId, parseResourceType, resourceTypeToString } from "@milaboratories/pl-client";
2
2
  import { assertNever } from "@milaboratories/ts-helpers";
3
3
  //#region src/drivers/helpers/ls_storage_entry.ts
4
4
  /**
@@ -41,7 +41,7 @@ function parseRemoteStorageHandle(handle) {
41
41
  isRemote: true,
42
42
  storageId,
43
43
  resourceType: parseResourceType(decodeURIComponent(encodedRType)),
44
- resourceId: decodeURIComponent(encodedRId)
44
+ resourceId: asSignedResourceId(decodeURIComponent(encodedRId))
45
45
  };
46
46
  }
47
47
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"ls_storage_entry.js","names":[],"sources":["../../../src/drivers/helpers/ls_storage_entry.ts"],"sourcesContent":["import type * as sdk from \"@milaboratories/pl-model-common\";\nimport type { ResourceType, SignedResourceId, StorageInfo } from \"@milaboratories/pl-client\";\nimport { resourceTypeToString, parseResourceType } from \"@milaboratories/pl-client\";\nimport { assertNever } from \"@milaboratories/ts-helpers\";\n\nexport type StorageHandleData = RemoteStorageHandleData | LocalStorageHandleData;\n\n/**\n * Gets a storage handle and gives an underlying data from it.\n */\nexport function parseStorageHandle(handle: sdk.StorageHandle): StorageHandleData {\n if (isRemoteStorageHandle(handle)) {\n return parseRemoteStorageHandle(handle);\n } else if (isLocalStorageHandle(handle)) {\n return parseLocalStorageHandle(handle);\n }\n\n assertNever(handle);\n}\n\n//\n// Local storage:\n//\n\nexport type LocalStorageHandleData = {\n isRemote: false;\n name: string;\n rootPath: string;\n};\n\nconst localHandleRegex = /^local:\\/\\/(?<name>.*)\\/(?<path>.*)$/;\n\nexport function isLocalStorageHandle(handle: sdk.StorageHandle): handle is sdk.StorageHandleLocal {\n return localHandleRegex.test(handle);\n}\n\nexport function createLocalStorageHandle(name: string, path: string): sdk.StorageHandleLocal {\n return `local://${name}/${encodeURIComponent(path)}`;\n}\n\nfunction parseLocalStorageHandle(handle: string): LocalStorageHandleData {\n const parsed = handle.match(localHandleRegex);\n if (parsed == null) throw new Error(`Local list handle wasn't parsed: ${handle}`);\n\n const { name, path } = parsed.groups!;\n\n return {\n isRemote: false,\n rootPath: decodeURIComponent(path),\n name,\n };\n}\n\n//\n// Remote storage:\n//\n\nexport type RemoteStorageHandleData = {\n isRemote: true;\n storageId: string;\n resourceType: ResourceType;\n resourceId: SignedResourceId;\n};\n\nconst remoteHandleRegex = /^remote:\\/\\/(?<storageId>.*)\\/(?<resourceType>.*)\\/(?<resourceId>.*)$/;\n\nexport function isRemoteStorageHandle(\n handle: sdk.StorageHandle,\n): handle is sdk.StorageHandleRemote {\n return remoteHandleRegex.test(handle);\n}\n\nexport function createRemoteStorageHandle(info: StorageInfo): sdk.StorageHandleRemote {\n return `remote://${info.storageId}/${encodeURIComponent(resourceTypeToString(info.resourceType))}/${encodeURIComponent(info.resourceId)}`;\n}\n\nfunction parseRemoteStorageHandle(handle: string): RemoteStorageHandleData {\n const parsed = handle.match(remoteHandleRegex);\n if (parsed == null) throw new Error(`Remote list handle wasn't parsed: ${handle}`);\n const { storageId, resourceType: encodedRType, resourceId: encodedRId } = parsed.groups!;\n\n const resourceType = parseResourceType(decodeURIComponent(encodedRType));\n const resourceId = decodeURIComponent(encodedRId) as SignedResourceId; // lint-allow-cast\n return {\n isRemote: true,\n storageId,\n resourceType: resourceType,\n resourceId: resourceId,\n };\n}\n"],"mappings":";;;;;;AAUA,SAAgB,mBAAmB,QAA8C;AAC/E,KAAI,sBAAsB,OAAO,CAC/B,QAAO,yBAAyB,OAAO;UAC9B,qBAAqB,OAAO,CACrC,QAAO,wBAAwB,OAAO;AAGxC,aAAY,OAAO;;AAarB,MAAM,mBAAmB;AAEzB,SAAgB,qBAAqB,QAA6D;AAChG,QAAO,iBAAiB,KAAK,OAAO;;AAGtC,SAAgB,yBAAyB,MAAc,MAAsC;AAC3F,QAAO,WAAW,KAAK,GAAG,mBAAmB,KAAK;;AAGpD,SAAS,wBAAwB,QAAwC;CACvE,MAAM,SAAS,OAAO,MAAM,iBAAiB;AAC7C,KAAI,UAAU,KAAM,OAAM,IAAI,MAAM,oCAAoC,SAAS;CAEjF,MAAM,EAAE,MAAM,SAAS,OAAO;AAE9B,QAAO;EACL,UAAU;EACV,UAAU,mBAAmB,KAAK;EAClC;EACD;;AAcH,MAAM,oBAAoB;AAE1B,SAAgB,sBACd,QACmC;AACnC,QAAO,kBAAkB,KAAK,OAAO;;AAGvC,SAAgB,0BAA0B,MAA4C;AACpF,QAAO,YAAY,KAAK,UAAU,GAAG,mBAAmB,qBAAqB,KAAK,aAAa,CAAC,CAAC,GAAG,mBAAmB,KAAK,WAAW;;AAGzI,SAAS,yBAAyB,QAAyC;CACzE,MAAM,SAAS,OAAO,MAAM,kBAAkB;AAC9C,KAAI,UAAU,KAAM,OAAM,IAAI,MAAM,qCAAqC,SAAS;CAClF,MAAM,EAAE,WAAW,cAAc,cAAc,YAAY,eAAe,OAAO;AAIjF,QAAO;EACL,UAAU;EACV;EACA,cALmB,kBAAkB,mBAAmB,aAAa,CAAC;EAMtE,YALiB,mBAAmB,WAAW;EAMhD"}
1
+ {"version":3,"file":"ls_storage_entry.js","names":[],"sources":["../../../src/drivers/helpers/ls_storage_entry.ts"],"sourcesContent":["import type * as sdk from \"@milaboratories/pl-model-common\";\nimport type { ResourceType, SignedResourceId, StorageInfo } from \"@milaboratories/pl-client\";\nimport {\n resourceTypeToString,\n parseResourceType,\n asSignedResourceId,\n} from \"@milaboratories/pl-client\";\nimport { assertNever } from \"@milaboratories/ts-helpers\";\n\nexport type StorageHandleData = RemoteStorageHandleData | LocalStorageHandleData;\n\n/**\n * Gets a storage handle and gives an underlying data from it.\n */\nexport function parseStorageHandle(handle: sdk.StorageHandle): StorageHandleData {\n if (isRemoteStorageHandle(handle)) {\n return parseRemoteStorageHandle(handle);\n } else if (isLocalStorageHandle(handle)) {\n return parseLocalStorageHandle(handle);\n }\n\n assertNever(handle);\n}\n\n//\n// Local storage:\n//\n\nexport type LocalStorageHandleData = {\n isRemote: false;\n name: string;\n rootPath: string;\n};\n\nconst localHandleRegex = /^local:\\/\\/(?<name>.*)\\/(?<path>.*)$/;\n\nexport function isLocalStorageHandle(handle: sdk.StorageHandle): handle is sdk.StorageHandleLocal {\n return localHandleRegex.test(handle);\n}\n\nexport function createLocalStorageHandle(name: string, path: string): sdk.StorageHandleLocal {\n return `local://${name}/${encodeURIComponent(path)}`;\n}\n\nfunction parseLocalStorageHandle(handle: string): LocalStorageHandleData {\n const parsed = handle.match(localHandleRegex);\n if (parsed == null) throw new Error(`Local list handle wasn't parsed: ${handle}`);\n\n const { name, path } = parsed.groups!;\n\n return {\n isRemote: false,\n rootPath: decodeURIComponent(path),\n name,\n };\n}\n\n//\n// Remote storage:\n//\n\nexport type RemoteStorageHandleData = {\n isRemote: true;\n storageId: string;\n resourceType: ResourceType;\n resourceId: SignedResourceId;\n};\n\nconst remoteHandleRegex = /^remote:\\/\\/(?<storageId>.*)\\/(?<resourceType>.*)\\/(?<resourceId>.*)$/;\n\nexport function isRemoteStorageHandle(\n handle: sdk.StorageHandle,\n): handle is sdk.StorageHandleRemote {\n return remoteHandleRegex.test(handle);\n}\n\nexport function createRemoteStorageHandle(info: StorageInfo): sdk.StorageHandleRemote {\n return `remote://${info.storageId}/${encodeURIComponent(resourceTypeToString(info.resourceType))}/${encodeURIComponent(info.resourceId)}`;\n}\n\nfunction parseRemoteStorageHandle(handle: string): RemoteStorageHandleData {\n const parsed = handle.match(remoteHandleRegex);\n if (parsed == null) throw new Error(`Remote list handle wasn't parsed: ${handle}`);\n const { storageId, resourceType: encodedRType, resourceId: encodedRId } = parsed.groups!;\n\n const resourceType = parseResourceType(decodeURIComponent(encodedRType));\n const resourceId = asSignedResourceId(decodeURIComponent(encodedRId));\n return {\n isRemote: true,\n storageId,\n resourceType: resourceType,\n resourceId: resourceId,\n };\n}\n"],"mappings":";;;;;;AAcA,SAAgB,mBAAmB,QAA8C;AAC/E,KAAI,sBAAsB,OAAO,CAC/B,QAAO,yBAAyB,OAAO;UAC9B,qBAAqB,OAAO,CACrC,QAAO,wBAAwB,OAAO;AAGxC,aAAY,OAAO;;AAarB,MAAM,mBAAmB;AAEzB,SAAgB,qBAAqB,QAA6D;AAChG,QAAO,iBAAiB,KAAK,OAAO;;AAGtC,SAAgB,yBAAyB,MAAc,MAAsC;AAC3F,QAAO,WAAW,KAAK,GAAG,mBAAmB,KAAK;;AAGpD,SAAS,wBAAwB,QAAwC;CACvE,MAAM,SAAS,OAAO,MAAM,iBAAiB;AAC7C,KAAI,UAAU,KAAM,OAAM,IAAI,MAAM,oCAAoC,SAAS;CAEjF,MAAM,EAAE,MAAM,SAAS,OAAO;AAE9B,QAAO;EACL,UAAU;EACV,UAAU,mBAAmB,KAAK;EAClC;EACD;;AAcH,MAAM,oBAAoB;AAE1B,SAAgB,sBACd,QACmC;AACnC,QAAO,kBAAkB,KAAK,OAAO;;AAGvC,SAAgB,0BAA0B,MAA4C;AACpF,QAAO,YAAY,KAAK,UAAU,GAAG,mBAAmB,qBAAqB,KAAK,aAAa,CAAC,CAAC,GAAG,mBAAmB,KAAK,WAAW;;AAGzI,SAAS,yBAAyB,QAAyC;CACzE,MAAM,SAAS,OAAO,MAAM,kBAAkB;AAC9C,KAAI,UAAU,KAAM,OAAM,IAAI,MAAM,qCAAqC,SAAS;CAClF,MAAM,EAAE,WAAW,cAAc,cAAc,YAAY,eAAe,OAAO;AAIjF,QAAO;EACL,UAAU;EACV;EACA,cALmB,kBAAkB,mBAAmB,aAAa,CAAC;EAMtE,YALiB,mBAAmB,mBAAmB,WAAW,CAAC;EAMpE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@milaboratories/pl-drivers",
3
- "version": "1.14.7",
3
+ "version": "1.14.8",
4
4
  "description": "Drivers and a low-level clients for log streaming, downloading and uploading files from and to pl",
5
5
  "files": [
6
6
  "dist/**/*",
@@ -28,12 +28,12 @@
28
28
  "tar-fs": "^3.0.9",
29
29
  "undici": "~7.16.0",
30
30
  "zod": "~3.25.76",
31
- "@milaboratories/pl-client": "3.5.0",
31
+ "@milaboratories/pl-client": "3.6.0",
32
+ "@milaboratories/computable": "2.9.4",
32
33
  "@milaboratories/pl-model-common": "1.42.0",
33
- "@milaboratories/ts-helpers": "1.8.2",
34
34
  "@milaboratories/helpers": "1.14.2",
35
- "@milaboratories/pl-tree": "1.11.0",
36
- "@milaboratories/computable": "2.9.4"
35
+ "@milaboratories/ts-helpers": "1.8.2",
36
+ "@milaboratories/pl-tree": "1.11.1"
37
37
  },
38
38
  "devDependencies": {
39
39
  "@types/decompress": "^4.2.7",
@@ -44,7 +44,7 @@
44
44
  "typescript": "~5.9.3",
45
45
  "vitest": "^4.1.3",
46
46
  "@milaboratories/build-configs": "2.0.0",
47
- "@milaboratories/ts-builder": "1.4.0",
47
+ "@milaboratories/ts-builder": "1.5.0",
48
48
  "@milaboratories/test-helpers": "1.2.2",
49
49
  "@milaboratories/ts-configs": "1.2.3"
50
50
  },
@@ -1,6 +1,10 @@
1
1
  import type * as sdk from "@milaboratories/pl-model-common";
2
2
  import type { ResourceType, SignedResourceId, StorageInfo } from "@milaboratories/pl-client";
3
- import { resourceTypeToString, parseResourceType } from "@milaboratories/pl-client";
3
+ import {
4
+ resourceTypeToString,
5
+ parseResourceType,
6
+ asSignedResourceId,
7
+ } from "@milaboratories/pl-client";
4
8
  import { assertNever } from "@milaboratories/ts-helpers";
5
9
 
6
10
  export type StorageHandleData = RemoteStorageHandleData | LocalStorageHandleData;
@@ -80,7 +84,7 @@ function parseRemoteStorageHandle(handle: string): RemoteStorageHandleData {
80
84
  const { storageId, resourceType: encodedRType, resourceId: encodedRId } = parsed.groups!;
81
85
 
82
86
  const resourceType = parseResourceType(decodeURIComponent(encodedRType));
83
- const resourceId = decodeURIComponent(encodedRId) as SignedResourceId; // lint-allow-cast
87
+ const resourceId = asSignedResourceId(decodeURIComponent(encodedRId));
84
88
  return {
85
89
  isRemote: true,
86
90
  storageId,
@@ -184,23 +184,21 @@ test("upload lots of duplicate blobs concurrently", async () => {
184
184
  const handles = await Promise.all(uploadIds.map((id) => getSnapshot(client, id)));
185
185
  const computables = handles.map((handle) => uploader.getProgressId(handle));
186
186
 
187
- for (const c of computables) {
187
+ const waitDone = async (c: (typeof computables)[number]) => {
188
188
  while (true) {
189
189
  const p = await c.getValue();
190
-
191
- if (p.done) {
192
- expect(p.isUploadSignMatch).toBeTruthy();
193
- expect(p.lastError).toBeUndefined();
194
- expect(p.status?.bytesProcessed).toBe(25);
195
- expect(p.status?.bytesTotal).toBe(25);
196
- return;
197
- }
198
-
190
+ if (p.done) return p;
199
191
  await c.awaitChange();
200
192
  }
201
- }
193
+ };
202
194
 
203
- await uploader.releaseAll();
195
+ const p = await Promise.race(computables.map(waitDone));
196
+ expect(p.isUploadSignMatch).toBeTruthy();
197
+ expect(p.lastError).toBeUndefined();
198
+ expect(p.status?.bytesProcessed).toBe(25);
199
+ expect(p.status?.bytesTotal).toBe(25);
200
+
201
+ // await uploader.releaseAll();
204
202
  });
205
203
  });
206
204