@milaboratories/pl-client 2.17.12 → 2.18.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.
@@ -1,4 +1,6 @@
1
+ const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
1
2
  const require_types = require('./types.cjs');
3
+ let _milaboratories_pl_model_common = require("@milaboratories/pl-model-common");
2
4
 
3
5
  //#region src/core/final.ts
4
6
  function readyOrDuplicateOrError(r) {
@@ -15,51 +17,51 @@ const unknownResourceTypeNames = /* @__PURE__ */ new Set();
15
17
  /** Default implementation, defining behaviour for built-in resource types. */
16
18
  const DefaultFinalResourceDataPredicate = (r) => {
17
19
  switch (r.type.name) {
18
- case "StreamManager": {
20
+ case _milaboratories_pl_model_common.ResourceTypeName.StreamManager: {
19
21
  if (!readyOrDuplicateOrError(r)) return false;
20
22
  if (r.fields === void 0) return true;
21
23
  if (require_types.isNotNullResourceId(r.error)) return true;
22
24
  const downloadable = require_types.getField(r, "downloadable");
23
25
  return require_types.getField(r, "stream").value === downloadable.value;
24
26
  }
25
- case "StdMap":
26
- case "std/map":
27
- case "EphStdMap":
28
- case "PFrame":
29
- case "ParquetChunk":
30
- case "BContext":
31
- case "BlockPackCustom":
32
- case "BinaryMap":
33
- case "BinaryValue":
34
- case "BlobMap":
35
- case "BResolveSingle":
36
- case "BResolveSingleNoResult":
37
- case "BQueryResult":
38
- case "TengoTemplate":
39
- case "TengoLib":
40
- case "SoftwareInfo":
41
- case "Dummy": return readyOrDuplicateOrError(r);
42
- case "json/resourceError": return r.type.version === "1";
43
- case "json/object":
44
- case "json-gz/object":
45
- case "json/string":
46
- case "json/array":
47
- case "json/number":
48
- case "BContextEnd":
49
- case "Frontend/FromUrl":
50
- case "Frontend/FromFolder":
51
- case "BObjectSpec":
52
- case "Blob":
53
- case "Null":
54
- case "binary":
55
- case "LSProvider": return true;
56
- case "UserProject":
57
- case "Projects":
58
- case "ClientRoot": return false;
59
- default: if (r.type.name.startsWith("Blob/")) return true;
60
- else if (r.type.name.startsWith("BlobUpload/") || r.type.name.startsWith("BlobIndex/")) return readyAndHasAllOutputsFilled(r);
61
- else if (r.type.name.startsWith("PColumnData/")) return readyOrDuplicateOrError(r);
62
- else if (r.type.name.startsWith("StreamWorkdir/")) return readyOrDuplicateOrError(r);
27
+ case _milaboratories_pl_model_common.ResourceTypeName.StdMap:
28
+ case _milaboratories_pl_model_common.ResourceTypeName.StdMapSlash:
29
+ case _milaboratories_pl_model_common.ResourceTypeName.EphStdMap:
30
+ case _milaboratories_pl_model_common.ResourceTypeName.PFrame:
31
+ case _milaboratories_pl_model_common.ResourceTypeName.ParquetChunk:
32
+ case _milaboratories_pl_model_common.ResourceTypeName.BContext:
33
+ case _milaboratories_pl_model_common.ResourceTypeName.BlockPackCustom:
34
+ case _milaboratories_pl_model_common.ResourceTypeName.BinaryMap:
35
+ case _milaboratories_pl_model_common.ResourceTypeName.BinaryValue:
36
+ case _milaboratories_pl_model_common.ResourceTypeName.BlobMap:
37
+ case _milaboratories_pl_model_common.ResourceTypeName.BResolveSingle:
38
+ case _milaboratories_pl_model_common.ResourceTypeName.BResolveSingleNoResult:
39
+ case _milaboratories_pl_model_common.ResourceTypeName.BQueryResult:
40
+ case _milaboratories_pl_model_common.ResourceTypeName.TengoTemplate:
41
+ case _milaboratories_pl_model_common.ResourceTypeName.TengoLib:
42
+ case _milaboratories_pl_model_common.ResourceTypeName.SoftwareInfo:
43
+ case _milaboratories_pl_model_common.ResourceTypeName.Dummy: return readyOrDuplicateOrError(r);
44
+ case _milaboratories_pl_model_common.ResourceTypeName.JsonResourceError: return r.type.version === "1";
45
+ case _milaboratories_pl_model_common.ResourceTypeName.JsonObject:
46
+ case _milaboratories_pl_model_common.ResourceTypeName.JsonGzObject:
47
+ case _milaboratories_pl_model_common.ResourceTypeName.JsonString:
48
+ case _milaboratories_pl_model_common.ResourceTypeName.JsonArray:
49
+ case _milaboratories_pl_model_common.ResourceTypeName.JsonNumber:
50
+ case _milaboratories_pl_model_common.ResourceTypeName.BContextEnd:
51
+ case _milaboratories_pl_model_common.ResourceTypeName.FrontendFromUrl:
52
+ case _milaboratories_pl_model_common.ResourceTypeName.FrontendFromFolder:
53
+ case _milaboratories_pl_model_common.ResourceTypeName.BObjectSpec:
54
+ case _milaboratories_pl_model_common.ResourceTypeName.Blob:
55
+ case _milaboratories_pl_model_common.ResourceTypeName.Null:
56
+ case _milaboratories_pl_model_common.ResourceTypeName.Binary:
57
+ case _milaboratories_pl_model_common.ResourceTypeName.LSProvider: return true;
58
+ case _milaboratories_pl_model_common.ResourceTypeName.UserProject:
59
+ case _milaboratories_pl_model_common.ResourceTypeName.Projects:
60
+ case _milaboratories_pl_model_common.ResourceTypeName.ClientRoot: return false;
61
+ default: if (r.type.name.startsWith(_milaboratories_pl_model_common.ResourceTypePrefix.Blob)) return true;
62
+ else if (r.type.name.startsWith(_milaboratories_pl_model_common.ResourceTypePrefix.BlobUpload) || r.type.name.startsWith(_milaboratories_pl_model_common.ResourceTypePrefix.BlobIndex)) return readyAndHasAllOutputsFilled(r);
63
+ else if (r.type.name.startsWith(_milaboratories_pl_model_common.ResourceTypePrefix.PColumnData)) return readyOrDuplicateOrError(r);
64
+ else if (r.type.name.startsWith(_milaboratories_pl_model_common.ResourceTypePrefix.StreamWorkdir)) return readyOrDuplicateOrError(r);
63
65
  else if (!unknownResourceTypeNames.has(r.type.name)) {
64
66
  console.log("UNKNOWN RESOURCE TYPE: " + r.type.name);
65
67
  unknownResourceTypeNames.add(r.type.name);
@@ -1 +1 @@
1
- {"version":3,"file":"final.cjs","names":["isNotNullResourceId","isNullResourceId","getField"],"sources":["../../src/core/final.ts"],"sourcesContent":["import type { Optional } from \"utility-types\";\nimport type { BasicResourceData, ResourceData } from \"./types\";\nimport { getField, isNotNullResourceId, isNullResourceId } from \"./types\";\n\n/**\n * Function is used to guide multiple layers of caching in pl-client and derived pl-tree.\n *\n * This function defines expected resource-specific state mutation behaviour,\n * if it returns true, system will expect that this data will never change as long as resource exist.\n *\n * If resource data contain information about fields, if should be taken into account, fields are undefined,\n * \"final\" state should be calculated for \"basic\" part of resource data only.\n */\nexport type FinalResourceDataPredicate = (\n resourceData: Optional<ResourceData, \"fields\">,\n) => boolean;\n\nfunction readyOrDuplicateOrError(r: ResourceData | BasicResourceData): boolean {\n return (\n r.resourceReady || isNotNullResourceId(r.originalResourceId) || isNotNullResourceId(r.error)\n );\n}\n\nfunction readyAndHasAllOutputsFilled(r: Optional<ResourceData, \"fields\">): boolean {\n if (!readyOrDuplicateOrError(r)) return false;\n if (!r.outputsLocked) return false;\n if (r.fields === undefined) return true; // if fields are not provided basic resource state is not expected to change in the future\n for (const f of r.fields)\n if (isNullResourceId(f.error) && (isNullResourceId(f.value) || !f.valueIsFinal)) return false;\n return true;\n}\n\n// solely for logging\nconst unknownResourceTypeNames = new Set<string>();\n\n/** Default implementation, defining behaviour for built-in resource types. */\nexport const DefaultFinalResourceDataPredicate: FinalResourceDataPredicate = (r): boolean => {\n switch (r.type.name) {\n case \"StreamManager\": {\n if (!readyOrDuplicateOrError(r)) return false;\n if (r.fields === undefined) return true; // if fields are not provided basic resource state is not expected to change in the future\n if (isNotNullResourceId(r.error)) return true;\n const downloadable = getField(r as ResourceData, \"downloadable\");\n const stream = getField(r as ResourceData, \"stream\");\n return stream.value === downloadable.value;\n }\n case \"StdMap\":\n case \"std/map\":\n case \"EphStdMap\":\n case \"PFrame\":\n case \"ParquetChunk\":\n case \"BContext\":\n case \"BlockPackCustom\":\n case \"BinaryMap\":\n case \"BinaryValue\":\n case \"BlobMap\":\n case \"BResolveSingle\":\n case \"BResolveSingleNoResult\":\n case \"BQueryResult\":\n case \"TengoTemplate\":\n case \"TengoLib\":\n case \"SoftwareInfo\":\n case \"Dummy\":\n return readyOrDuplicateOrError(r);\n case \"json/resourceError\":\n return r.type.version === \"1\";\n case \"json/object\":\n case \"json-gz/object\":\n case \"json/string\":\n case \"json/array\":\n case \"json/number\":\n case \"BContextEnd\":\n case \"Frontend/FromUrl\":\n case \"Frontend/FromFolder\":\n case \"BObjectSpec\":\n case \"Blob\":\n case \"Null\":\n case \"binary\":\n case \"LSProvider\":\n return true;\n case \"UserProject\":\n case \"Projects\":\n case \"ClientRoot\":\n return false;\n default:\n if (r.type.name.startsWith(\"Blob/\")) return true;\n else if (r.type.name.startsWith(\"BlobUpload/\") || r.type.name.startsWith(\"BlobIndex/\")) {\n return readyAndHasAllOutputsFilled(r);\n } else if (r.type.name.startsWith(\"PColumnData/\")) {\n return readyOrDuplicateOrError(r);\n } else if (r.type.name.startsWith(\"StreamWorkdir/\")) {\n return readyOrDuplicateOrError(r);\n } else {\n // Unknown resource type detected\n // Set used to log this message only once\n if (!unknownResourceTypeNames.has(r.type.name)) {\n console.log(\"UNKNOWN RESOURCE TYPE: \" + r.type.name);\n unknownResourceTypeNames.add(r.type.name);\n }\n }\n }\n return false;\n};\n"],"mappings":";;;AAiBA,SAAS,wBAAwB,GAA8C;AAC7E,QACE,EAAE,iBAAiBA,kCAAoB,EAAE,mBAAmB,IAAIA,kCAAoB,EAAE,MAAM;;AAIhG,SAAS,4BAA4B,GAA8C;AACjF,KAAI,CAAC,wBAAwB,EAAE,CAAE,QAAO;AACxC,KAAI,CAAC,EAAE,cAAe,QAAO;AAC7B,KAAI,EAAE,WAAW,OAAW,QAAO;AACnC,MAAK,MAAM,KAAK,EAAE,OAChB,KAAIC,+BAAiB,EAAE,MAAM,KAAKA,+BAAiB,EAAE,MAAM,IAAI,CAAC,EAAE,cAAe,QAAO;AAC1F,QAAO;;AAIT,MAAM,2CAA2B,IAAI,KAAa;;AAGlD,MAAa,qCAAiE,MAAe;AAC3F,SAAQ,EAAE,KAAK,MAAf;EACE,KAAK,iBAAiB;AACpB,OAAI,CAAC,wBAAwB,EAAE,CAAE,QAAO;AACxC,OAAI,EAAE,WAAW,OAAW,QAAO;AACnC,OAAID,kCAAoB,EAAE,MAAM,CAAE,QAAO;GACzC,MAAM,eAAeE,uBAAS,GAAmB,eAAe;AAEhE,UADeA,uBAAS,GAAmB,SAAS,CACtC,UAAU,aAAa;;EAEvC,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK,QACH,QAAO,wBAAwB,EAAE;EACnC,KAAK,qBACH,QAAO,EAAE,KAAK,YAAY;EAC5B,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK,aACH,QAAO;EACT,KAAK;EACL,KAAK;EACL,KAAK,aACH,QAAO;EACT,QACE,KAAI,EAAE,KAAK,KAAK,WAAW,QAAQ,CAAE,QAAO;WACnC,EAAE,KAAK,KAAK,WAAW,cAAc,IAAI,EAAE,KAAK,KAAK,WAAW,aAAa,CACpF,QAAO,4BAA4B,EAAE;WAC5B,EAAE,KAAK,KAAK,WAAW,eAAe,CAC/C,QAAO,wBAAwB,EAAE;WACxB,EAAE,KAAK,KAAK,WAAW,iBAAiB,CACjD,QAAO,wBAAwB,EAAE;WAI7B,CAAC,yBAAyB,IAAI,EAAE,KAAK,KAAK,EAAE;AAC9C,WAAQ,IAAI,4BAA4B,EAAE,KAAK,KAAK;AACpD,4BAAyB,IAAI,EAAE,KAAK,KAAK;;;AAIjD,QAAO"}
1
+ {"version":3,"file":"final.cjs","names":["isNotNullResourceId","isNullResourceId","ResourceTypeName","getField","ResourceTypePrefix"],"sources":["../../src/core/final.ts"],"sourcesContent":["import type { Optional } from \"utility-types\";\nimport type { BasicResourceData, ResourceData } from \"./types\";\nimport { getField, isNotNullResourceId, isNullResourceId } from \"./types\";\nimport { ResourceTypeName, ResourceTypePrefix } from \"@milaboratories/pl-model-common\";\nexport { ResourceTypeName, ResourceTypePrefix };\n\n/**\n * Function is used to guide multiple layers of caching in pl-client and derived pl-tree.\n *\n * This function defines expected resource-specific state mutation behaviour,\n * if it returns true, system will expect that this data will never change as long as resource exist.\n *\n * If resource data contain information about fields, if should be taken into account, fields are undefined,\n * \"final\" state should be calculated for \"basic\" part of resource data only.\n */\nexport type FinalResourceDataPredicate = (\n resourceData: Optional<ResourceData, \"fields\">,\n) => boolean;\n\nfunction readyOrDuplicateOrError(r: ResourceData | BasicResourceData): boolean {\n return (\n r.resourceReady || isNotNullResourceId(r.originalResourceId) || isNotNullResourceId(r.error)\n );\n}\n\nfunction readyAndHasAllOutputsFilled(r: Optional<ResourceData, \"fields\">): boolean {\n if (!readyOrDuplicateOrError(r)) return false;\n if (!r.outputsLocked) return false;\n if (r.fields === undefined) return true; // if fields are not provided basic resource state is not expected to change in the future\n for (const f of r.fields)\n if (isNullResourceId(f.error) && (isNullResourceId(f.value) || !f.valueIsFinal)) return false;\n return true;\n}\n\n// solely for logging\nconst unknownResourceTypeNames = new Set<string>();\n\n/** Default implementation, defining behaviour for built-in resource types. */\nexport const DefaultFinalResourceDataPredicate: FinalResourceDataPredicate = (r): boolean => {\n switch (r.type.name) {\n case ResourceTypeName.StreamManager: {\n if (!readyOrDuplicateOrError(r)) return false;\n if (r.fields === undefined) return true; // if fields are not provided basic resource state is not expected to change in the future\n if (isNotNullResourceId(r.error)) return true;\n const downloadable = getField(r as ResourceData, \"downloadable\");\n const stream = getField(r as ResourceData, \"stream\");\n return stream.value === downloadable.value;\n }\n case ResourceTypeName.StdMap:\n case ResourceTypeName.StdMapSlash:\n case ResourceTypeName.EphStdMap:\n case ResourceTypeName.PFrame:\n case ResourceTypeName.ParquetChunk:\n case ResourceTypeName.BContext:\n case ResourceTypeName.BlockPackCustom:\n case ResourceTypeName.BinaryMap:\n case ResourceTypeName.BinaryValue:\n case ResourceTypeName.BlobMap:\n case ResourceTypeName.BResolveSingle:\n case ResourceTypeName.BResolveSingleNoResult:\n case ResourceTypeName.BQueryResult:\n case ResourceTypeName.TengoTemplate:\n case ResourceTypeName.TengoLib:\n case ResourceTypeName.SoftwareInfo:\n case ResourceTypeName.Dummy:\n return readyOrDuplicateOrError(r);\n case ResourceTypeName.JsonResourceError:\n return r.type.version === \"1\";\n case ResourceTypeName.JsonObject:\n case ResourceTypeName.JsonGzObject:\n case ResourceTypeName.JsonString:\n case ResourceTypeName.JsonArray:\n case ResourceTypeName.JsonNumber:\n case ResourceTypeName.BContextEnd:\n case ResourceTypeName.FrontendFromUrl:\n case ResourceTypeName.FrontendFromFolder:\n case ResourceTypeName.BObjectSpec:\n case ResourceTypeName.Blob:\n case ResourceTypeName.Null:\n case ResourceTypeName.Binary:\n case ResourceTypeName.LSProvider:\n return true;\n case ResourceTypeName.UserProject:\n case ResourceTypeName.Projects:\n case ResourceTypeName.ClientRoot:\n return false;\n default:\n if (r.type.name.startsWith(ResourceTypePrefix.Blob)) return true;\n else if (\n r.type.name.startsWith(ResourceTypePrefix.BlobUpload) ||\n r.type.name.startsWith(ResourceTypePrefix.BlobIndex)\n ) {\n return readyAndHasAllOutputsFilled(r);\n } else if (r.type.name.startsWith(ResourceTypePrefix.PColumnData)) {\n return readyOrDuplicateOrError(r);\n } else if (r.type.name.startsWith(ResourceTypePrefix.StreamWorkdir)) {\n return readyOrDuplicateOrError(r);\n } else {\n // Unknown resource type detected\n // Set used to log this message only once\n if (!unknownResourceTypeNames.has(r.type.name)) {\n console.log(\"UNKNOWN RESOURCE TYPE: \" + r.type.name);\n unknownResourceTypeNames.add(r.type.name);\n }\n }\n }\n return false;\n};\n"],"mappings":";;;;;AAmBA,SAAS,wBAAwB,GAA8C;AAC7E,QACE,EAAE,iBAAiBA,kCAAoB,EAAE,mBAAmB,IAAIA,kCAAoB,EAAE,MAAM;;AAIhG,SAAS,4BAA4B,GAA8C;AACjF,KAAI,CAAC,wBAAwB,EAAE,CAAE,QAAO;AACxC,KAAI,CAAC,EAAE,cAAe,QAAO;AAC7B,KAAI,EAAE,WAAW,OAAW,QAAO;AACnC,MAAK,MAAM,KAAK,EAAE,OAChB,KAAIC,+BAAiB,EAAE,MAAM,KAAKA,+BAAiB,EAAE,MAAM,IAAI,CAAC,EAAE,cAAe,QAAO;AAC1F,QAAO;;AAIT,MAAM,2CAA2B,IAAI,KAAa;;AAGlD,MAAa,qCAAiE,MAAe;AAC3F,SAAQ,EAAE,KAAK,MAAf;EACE,KAAKC,iDAAiB,eAAe;AACnC,OAAI,CAAC,wBAAwB,EAAE,CAAE,QAAO;AACxC,OAAI,EAAE,WAAW,OAAW,QAAO;AACnC,OAAIF,kCAAoB,EAAE,MAAM,CAAE,QAAO;GACzC,MAAM,eAAeG,uBAAS,GAAmB,eAAe;AAEhE,UADeA,uBAAS,GAAmB,SAAS,CACtC,UAAU,aAAa;;EAEvC,KAAKD,iDAAiB;EACtB,KAAKA,iDAAiB;EACtB,KAAKA,iDAAiB;EACtB,KAAKA,iDAAiB;EACtB,KAAKA,iDAAiB;EACtB,KAAKA,iDAAiB;EACtB,KAAKA,iDAAiB;EACtB,KAAKA,iDAAiB;EACtB,KAAKA,iDAAiB;EACtB,KAAKA,iDAAiB;EACtB,KAAKA,iDAAiB;EACtB,KAAKA,iDAAiB;EACtB,KAAKA,iDAAiB;EACtB,KAAKA,iDAAiB;EACtB,KAAKA,iDAAiB;EACtB,KAAKA,iDAAiB;EACtB,KAAKA,iDAAiB,MACpB,QAAO,wBAAwB,EAAE;EACnC,KAAKA,iDAAiB,kBACpB,QAAO,EAAE,KAAK,YAAY;EAC5B,KAAKA,iDAAiB;EACtB,KAAKA,iDAAiB;EACtB,KAAKA,iDAAiB;EACtB,KAAKA,iDAAiB;EACtB,KAAKA,iDAAiB;EACtB,KAAKA,iDAAiB;EACtB,KAAKA,iDAAiB;EACtB,KAAKA,iDAAiB;EACtB,KAAKA,iDAAiB;EACtB,KAAKA,iDAAiB;EACtB,KAAKA,iDAAiB;EACtB,KAAKA,iDAAiB;EACtB,KAAKA,iDAAiB,WACpB,QAAO;EACT,KAAKA,iDAAiB;EACtB,KAAKA,iDAAiB;EACtB,KAAKA,iDAAiB,WACpB,QAAO;EACT,QACE,KAAI,EAAE,KAAK,KAAK,WAAWE,mDAAmB,KAAK,CAAE,QAAO;WAE1D,EAAE,KAAK,KAAK,WAAWA,mDAAmB,WAAW,IACrD,EAAE,KAAK,KAAK,WAAWA,mDAAmB,UAAU,CAEpD,QAAO,4BAA4B,EAAE;WAC5B,EAAE,KAAK,KAAK,WAAWA,mDAAmB,YAAY,CAC/D,QAAO,wBAAwB,EAAE;WACxB,EAAE,KAAK,KAAK,WAAWA,mDAAmB,cAAc,CACjE,QAAO,wBAAwB,EAAE;WAI7B,CAAC,yBAAyB,IAAI,EAAE,KAAK,KAAK,EAAE;AAC9C,WAAQ,IAAI,4BAA4B,EAAE,KAAK,KAAK;AACpD,4BAAyB,IAAI,EAAE,KAAK,KAAK;;;AAIjD,QAAO"}
@@ -1,4 +1,5 @@
1
1
  import { ResourceData } from "./types.js";
2
+ import { ResourceTypeName, ResourceTypePrefix } from "@milaboratories/pl-model-common";
2
3
  import { Optional } from "utility-types";
3
4
 
4
5
  //#region src/core/final.d.ts
@@ -15,5 +16,5 @@ type FinalResourceDataPredicate = (resourceData: Optional<ResourceData, "fields"
15
16
  /** Default implementation, defining behaviour for built-in resource types. */
16
17
  declare const DefaultFinalResourceDataPredicate: FinalResourceDataPredicate;
17
18
  //#endregion
18
- export { DefaultFinalResourceDataPredicate, FinalResourceDataPredicate };
19
+ export { DefaultFinalResourceDataPredicate, FinalResourceDataPredicate, ResourceTypeName, ResourceTypePrefix };
19
20
  //# sourceMappingURL=final.d.ts.map
@@ -1,4 +1,5 @@
1
1
  import { getField, isNotNullResourceId, isNullResourceId } from "./types.js";
2
+ import { ResourceTypeName, ResourceTypePrefix } from "@milaboratories/pl-model-common";
2
3
 
3
4
  //#region src/core/final.ts
4
5
  function readyOrDuplicateOrError(r) {
@@ -15,51 +16,51 @@ const unknownResourceTypeNames = /* @__PURE__ */ new Set();
15
16
  /** Default implementation, defining behaviour for built-in resource types. */
16
17
  const DefaultFinalResourceDataPredicate = (r) => {
17
18
  switch (r.type.name) {
18
- case "StreamManager": {
19
+ case ResourceTypeName.StreamManager: {
19
20
  if (!readyOrDuplicateOrError(r)) return false;
20
21
  if (r.fields === void 0) return true;
21
22
  if (isNotNullResourceId(r.error)) return true;
22
23
  const downloadable = getField(r, "downloadable");
23
24
  return getField(r, "stream").value === downloadable.value;
24
25
  }
25
- case "StdMap":
26
- case "std/map":
27
- case "EphStdMap":
28
- case "PFrame":
29
- case "ParquetChunk":
30
- case "BContext":
31
- case "BlockPackCustom":
32
- case "BinaryMap":
33
- case "BinaryValue":
34
- case "BlobMap":
35
- case "BResolveSingle":
36
- case "BResolveSingleNoResult":
37
- case "BQueryResult":
38
- case "TengoTemplate":
39
- case "TengoLib":
40
- case "SoftwareInfo":
41
- case "Dummy": return readyOrDuplicateOrError(r);
42
- case "json/resourceError": return r.type.version === "1";
43
- case "json/object":
44
- case "json-gz/object":
45
- case "json/string":
46
- case "json/array":
47
- case "json/number":
48
- case "BContextEnd":
49
- case "Frontend/FromUrl":
50
- case "Frontend/FromFolder":
51
- case "BObjectSpec":
52
- case "Blob":
53
- case "Null":
54
- case "binary":
55
- case "LSProvider": return true;
56
- case "UserProject":
57
- case "Projects":
58
- case "ClientRoot": return false;
59
- default: if (r.type.name.startsWith("Blob/")) return true;
60
- else if (r.type.name.startsWith("BlobUpload/") || r.type.name.startsWith("BlobIndex/")) return readyAndHasAllOutputsFilled(r);
61
- else if (r.type.name.startsWith("PColumnData/")) return readyOrDuplicateOrError(r);
62
- else if (r.type.name.startsWith("StreamWorkdir/")) return readyOrDuplicateOrError(r);
26
+ case ResourceTypeName.StdMap:
27
+ case ResourceTypeName.StdMapSlash:
28
+ case ResourceTypeName.EphStdMap:
29
+ case ResourceTypeName.PFrame:
30
+ case ResourceTypeName.ParquetChunk:
31
+ case ResourceTypeName.BContext:
32
+ case ResourceTypeName.BlockPackCustom:
33
+ case ResourceTypeName.BinaryMap:
34
+ case ResourceTypeName.BinaryValue:
35
+ case ResourceTypeName.BlobMap:
36
+ case ResourceTypeName.BResolveSingle:
37
+ case ResourceTypeName.BResolveSingleNoResult:
38
+ case ResourceTypeName.BQueryResult:
39
+ case ResourceTypeName.TengoTemplate:
40
+ case ResourceTypeName.TengoLib:
41
+ case ResourceTypeName.SoftwareInfo:
42
+ case ResourceTypeName.Dummy: return readyOrDuplicateOrError(r);
43
+ case ResourceTypeName.JsonResourceError: return r.type.version === "1";
44
+ case ResourceTypeName.JsonObject:
45
+ case ResourceTypeName.JsonGzObject:
46
+ case ResourceTypeName.JsonString:
47
+ case ResourceTypeName.JsonArray:
48
+ case ResourceTypeName.JsonNumber:
49
+ case ResourceTypeName.BContextEnd:
50
+ case ResourceTypeName.FrontendFromUrl:
51
+ case ResourceTypeName.FrontendFromFolder:
52
+ case ResourceTypeName.BObjectSpec:
53
+ case ResourceTypeName.Blob:
54
+ case ResourceTypeName.Null:
55
+ case ResourceTypeName.Binary:
56
+ case ResourceTypeName.LSProvider: return true;
57
+ case ResourceTypeName.UserProject:
58
+ case ResourceTypeName.Projects:
59
+ case ResourceTypeName.ClientRoot: return false;
60
+ default: if (r.type.name.startsWith(ResourceTypePrefix.Blob)) return true;
61
+ else if (r.type.name.startsWith(ResourceTypePrefix.BlobUpload) || r.type.name.startsWith(ResourceTypePrefix.BlobIndex)) return readyAndHasAllOutputsFilled(r);
62
+ else if (r.type.name.startsWith(ResourceTypePrefix.PColumnData)) return readyOrDuplicateOrError(r);
63
+ else if (r.type.name.startsWith(ResourceTypePrefix.StreamWorkdir)) return readyOrDuplicateOrError(r);
63
64
  else if (!unknownResourceTypeNames.has(r.type.name)) {
64
65
  console.log("UNKNOWN RESOURCE TYPE: " + r.type.name);
65
66
  unknownResourceTypeNames.add(r.type.name);
@@ -69,5 +70,5 @@ const DefaultFinalResourceDataPredicate = (r) => {
69
70
  };
70
71
 
71
72
  //#endregion
72
- export { DefaultFinalResourceDataPredicate };
73
+ export { DefaultFinalResourceDataPredicate, ResourceTypeName, ResourceTypePrefix };
73
74
  //# sourceMappingURL=final.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"final.js","names":[],"sources":["../../src/core/final.ts"],"sourcesContent":["import type { Optional } from \"utility-types\";\nimport type { BasicResourceData, ResourceData } from \"./types\";\nimport { getField, isNotNullResourceId, isNullResourceId } from \"./types\";\n\n/**\n * Function is used to guide multiple layers of caching in pl-client and derived pl-tree.\n *\n * This function defines expected resource-specific state mutation behaviour,\n * if it returns true, system will expect that this data will never change as long as resource exist.\n *\n * If resource data contain information about fields, if should be taken into account, fields are undefined,\n * \"final\" state should be calculated for \"basic\" part of resource data only.\n */\nexport type FinalResourceDataPredicate = (\n resourceData: Optional<ResourceData, \"fields\">,\n) => boolean;\n\nfunction readyOrDuplicateOrError(r: ResourceData | BasicResourceData): boolean {\n return (\n r.resourceReady || isNotNullResourceId(r.originalResourceId) || isNotNullResourceId(r.error)\n );\n}\n\nfunction readyAndHasAllOutputsFilled(r: Optional<ResourceData, \"fields\">): boolean {\n if (!readyOrDuplicateOrError(r)) return false;\n if (!r.outputsLocked) return false;\n if (r.fields === undefined) return true; // if fields are not provided basic resource state is not expected to change in the future\n for (const f of r.fields)\n if (isNullResourceId(f.error) && (isNullResourceId(f.value) || !f.valueIsFinal)) return false;\n return true;\n}\n\n// solely for logging\nconst unknownResourceTypeNames = new Set<string>();\n\n/** Default implementation, defining behaviour for built-in resource types. */\nexport const DefaultFinalResourceDataPredicate: FinalResourceDataPredicate = (r): boolean => {\n switch (r.type.name) {\n case \"StreamManager\": {\n if (!readyOrDuplicateOrError(r)) return false;\n if (r.fields === undefined) return true; // if fields are not provided basic resource state is not expected to change in the future\n if (isNotNullResourceId(r.error)) return true;\n const downloadable = getField(r as ResourceData, \"downloadable\");\n const stream = getField(r as ResourceData, \"stream\");\n return stream.value === downloadable.value;\n }\n case \"StdMap\":\n case \"std/map\":\n case \"EphStdMap\":\n case \"PFrame\":\n case \"ParquetChunk\":\n case \"BContext\":\n case \"BlockPackCustom\":\n case \"BinaryMap\":\n case \"BinaryValue\":\n case \"BlobMap\":\n case \"BResolveSingle\":\n case \"BResolveSingleNoResult\":\n case \"BQueryResult\":\n case \"TengoTemplate\":\n case \"TengoLib\":\n case \"SoftwareInfo\":\n case \"Dummy\":\n return readyOrDuplicateOrError(r);\n case \"json/resourceError\":\n return r.type.version === \"1\";\n case \"json/object\":\n case \"json-gz/object\":\n case \"json/string\":\n case \"json/array\":\n case \"json/number\":\n case \"BContextEnd\":\n case \"Frontend/FromUrl\":\n case \"Frontend/FromFolder\":\n case \"BObjectSpec\":\n case \"Blob\":\n case \"Null\":\n case \"binary\":\n case \"LSProvider\":\n return true;\n case \"UserProject\":\n case \"Projects\":\n case \"ClientRoot\":\n return false;\n default:\n if (r.type.name.startsWith(\"Blob/\")) return true;\n else if (r.type.name.startsWith(\"BlobUpload/\") || r.type.name.startsWith(\"BlobIndex/\")) {\n return readyAndHasAllOutputsFilled(r);\n } else if (r.type.name.startsWith(\"PColumnData/\")) {\n return readyOrDuplicateOrError(r);\n } else if (r.type.name.startsWith(\"StreamWorkdir/\")) {\n return readyOrDuplicateOrError(r);\n } else {\n // Unknown resource type detected\n // Set used to log this message only once\n if (!unknownResourceTypeNames.has(r.type.name)) {\n console.log(\"UNKNOWN RESOURCE TYPE: \" + r.type.name);\n unknownResourceTypeNames.add(r.type.name);\n }\n }\n }\n return false;\n};\n"],"mappings":";;;AAiBA,SAAS,wBAAwB,GAA8C;AAC7E,QACE,EAAE,iBAAiB,oBAAoB,EAAE,mBAAmB,IAAI,oBAAoB,EAAE,MAAM;;AAIhG,SAAS,4BAA4B,GAA8C;AACjF,KAAI,CAAC,wBAAwB,EAAE,CAAE,QAAO;AACxC,KAAI,CAAC,EAAE,cAAe,QAAO;AAC7B,KAAI,EAAE,WAAW,OAAW,QAAO;AACnC,MAAK,MAAM,KAAK,EAAE,OAChB,KAAI,iBAAiB,EAAE,MAAM,KAAK,iBAAiB,EAAE,MAAM,IAAI,CAAC,EAAE,cAAe,QAAO;AAC1F,QAAO;;AAIT,MAAM,2CAA2B,IAAI,KAAa;;AAGlD,MAAa,qCAAiE,MAAe;AAC3F,SAAQ,EAAE,KAAK,MAAf;EACE,KAAK,iBAAiB;AACpB,OAAI,CAAC,wBAAwB,EAAE,CAAE,QAAO;AACxC,OAAI,EAAE,WAAW,OAAW,QAAO;AACnC,OAAI,oBAAoB,EAAE,MAAM,CAAE,QAAO;GACzC,MAAM,eAAe,SAAS,GAAmB,eAAe;AAEhE,UADe,SAAS,GAAmB,SAAS,CACtC,UAAU,aAAa;;EAEvC,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK,QACH,QAAO,wBAAwB,EAAE;EACnC,KAAK,qBACH,QAAO,EAAE,KAAK,YAAY;EAC5B,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK,aACH,QAAO;EACT,KAAK;EACL,KAAK;EACL,KAAK,aACH,QAAO;EACT,QACE,KAAI,EAAE,KAAK,KAAK,WAAW,QAAQ,CAAE,QAAO;WACnC,EAAE,KAAK,KAAK,WAAW,cAAc,IAAI,EAAE,KAAK,KAAK,WAAW,aAAa,CACpF,QAAO,4BAA4B,EAAE;WAC5B,EAAE,KAAK,KAAK,WAAW,eAAe,CAC/C,QAAO,wBAAwB,EAAE;WACxB,EAAE,KAAK,KAAK,WAAW,iBAAiB,CACjD,QAAO,wBAAwB,EAAE;WAI7B,CAAC,yBAAyB,IAAI,EAAE,KAAK,KAAK,EAAE;AAC9C,WAAQ,IAAI,4BAA4B,EAAE,KAAK,KAAK;AACpD,4BAAyB,IAAI,EAAE,KAAK,KAAK;;;AAIjD,QAAO"}
1
+ {"version":3,"file":"final.js","names":[],"sources":["../../src/core/final.ts"],"sourcesContent":["import type { Optional } from \"utility-types\";\nimport type { BasicResourceData, ResourceData } from \"./types\";\nimport { getField, isNotNullResourceId, isNullResourceId } from \"./types\";\nimport { ResourceTypeName, ResourceTypePrefix } from \"@milaboratories/pl-model-common\";\nexport { ResourceTypeName, ResourceTypePrefix };\n\n/**\n * Function is used to guide multiple layers of caching in pl-client and derived pl-tree.\n *\n * This function defines expected resource-specific state mutation behaviour,\n * if it returns true, system will expect that this data will never change as long as resource exist.\n *\n * If resource data contain information about fields, if should be taken into account, fields are undefined,\n * \"final\" state should be calculated for \"basic\" part of resource data only.\n */\nexport type FinalResourceDataPredicate = (\n resourceData: Optional<ResourceData, \"fields\">,\n) => boolean;\n\nfunction readyOrDuplicateOrError(r: ResourceData | BasicResourceData): boolean {\n return (\n r.resourceReady || isNotNullResourceId(r.originalResourceId) || isNotNullResourceId(r.error)\n );\n}\n\nfunction readyAndHasAllOutputsFilled(r: Optional<ResourceData, \"fields\">): boolean {\n if (!readyOrDuplicateOrError(r)) return false;\n if (!r.outputsLocked) return false;\n if (r.fields === undefined) return true; // if fields are not provided basic resource state is not expected to change in the future\n for (const f of r.fields)\n if (isNullResourceId(f.error) && (isNullResourceId(f.value) || !f.valueIsFinal)) return false;\n return true;\n}\n\n// solely for logging\nconst unknownResourceTypeNames = new Set<string>();\n\n/** Default implementation, defining behaviour for built-in resource types. */\nexport const DefaultFinalResourceDataPredicate: FinalResourceDataPredicate = (r): boolean => {\n switch (r.type.name) {\n case ResourceTypeName.StreamManager: {\n if (!readyOrDuplicateOrError(r)) return false;\n if (r.fields === undefined) return true; // if fields are not provided basic resource state is not expected to change in the future\n if (isNotNullResourceId(r.error)) return true;\n const downloadable = getField(r as ResourceData, \"downloadable\");\n const stream = getField(r as ResourceData, \"stream\");\n return stream.value === downloadable.value;\n }\n case ResourceTypeName.StdMap:\n case ResourceTypeName.StdMapSlash:\n case ResourceTypeName.EphStdMap:\n case ResourceTypeName.PFrame:\n case ResourceTypeName.ParquetChunk:\n case ResourceTypeName.BContext:\n case ResourceTypeName.BlockPackCustom:\n case ResourceTypeName.BinaryMap:\n case ResourceTypeName.BinaryValue:\n case ResourceTypeName.BlobMap:\n case ResourceTypeName.BResolveSingle:\n case ResourceTypeName.BResolveSingleNoResult:\n case ResourceTypeName.BQueryResult:\n case ResourceTypeName.TengoTemplate:\n case ResourceTypeName.TengoLib:\n case ResourceTypeName.SoftwareInfo:\n case ResourceTypeName.Dummy:\n return readyOrDuplicateOrError(r);\n case ResourceTypeName.JsonResourceError:\n return r.type.version === \"1\";\n case ResourceTypeName.JsonObject:\n case ResourceTypeName.JsonGzObject:\n case ResourceTypeName.JsonString:\n case ResourceTypeName.JsonArray:\n case ResourceTypeName.JsonNumber:\n case ResourceTypeName.BContextEnd:\n case ResourceTypeName.FrontendFromUrl:\n case ResourceTypeName.FrontendFromFolder:\n case ResourceTypeName.BObjectSpec:\n case ResourceTypeName.Blob:\n case ResourceTypeName.Null:\n case ResourceTypeName.Binary:\n case ResourceTypeName.LSProvider:\n return true;\n case ResourceTypeName.UserProject:\n case ResourceTypeName.Projects:\n case ResourceTypeName.ClientRoot:\n return false;\n default:\n if (r.type.name.startsWith(ResourceTypePrefix.Blob)) return true;\n else if (\n r.type.name.startsWith(ResourceTypePrefix.BlobUpload) ||\n r.type.name.startsWith(ResourceTypePrefix.BlobIndex)\n ) {\n return readyAndHasAllOutputsFilled(r);\n } else if (r.type.name.startsWith(ResourceTypePrefix.PColumnData)) {\n return readyOrDuplicateOrError(r);\n } else if (r.type.name.startsWith(ResourceTypePrefix.StreamWorkdir)) {\n return readyOrDuplicateOrError(r);\n } else {\n // Unknown resource type detected\n // Set used to log this message only once\n if (!unknownResourceTypeNames.has(r.type.name)) {\n console.log(\"UNKNOWN RESOURCE TYPE: \" + r.type.name);\n unknownResourceTypeNames.add(r.type.name);\n }\n }\n }\n return false;\n};\n"],"mappings":";;;;AAmBA,SAAS,wBAAwB,GAA8C;AAC7E,QACE,EAAE,iBAAiB,oBAAoB,EAAE,mBAAmB,IAAI,oBAAoB,EAAE,MAAM;;AAIhG,SAAS,4BAA4B,GAA8C;AACjF,KAAI,CAAC,wBAAwB,EAAE,CAAE,QAAO;AACxC,KAAI,CAAC,EAAE,cAAe,QAAO;AAC7B,KAAI,EAAE,WAAW,OAAW,QAAO;AACnC,MAAK,MAAM,KAAK,EAAE,OAChB,KAAI,iBAAiB,EAAE,MAAM,KAAK,iBAAiB,EAAE,MAAM,IAAI,CAAC,EAAE,cAAe,QAAO;AAC1F,QAAO;;AAIT,MAAM,2CAA2B,IAAI,KAAa;;AAGlD,MAAa,qCAAiE,MAAe;AAC3F,SAAQ,EAAE,KAAK,MAAf;EACE,KAAK,iBAAiB,eAAe;AACnC,OAAI,CAAC,wBAAwB,EAAE,CAAE,QAAO;AACxC,OAAI,EAAE,WAAW,OAAW,QAAO;AACnC,OAAI,oBAAoB,EAAE,MAAM,CAAE,QAAO;GACzC,MAAM,eAAe,SAAS,GAAmB,eAAe;AAEhE,UADe,SAAS,GAAmB,SAAS,CACtC,UAAU,aAAa;;EAEvC,KAAK,iBAAiB;EACtB,KAAK,iBAAiB;EACtB,KAAK,iBAAiB;EACtB,KAAK,iBAAiB;EACtB,KAAK,iBAAiB;EACtB,KAAK,iBAAiB;EACtB,KAAK,iBAAiB;EACtB,KAAK,iBAAiB;EACtB,KAAK,iBAAiB;EACtB,KAAK,iBAAiB;EACtB,KAAK,iBAAiB;EACtB,KAAK,iBAAiB;EACtB,KAAK,iBAAiB;EACtB,KAAK,iBAAiB;EACtB,KAAK,iBAAiB;EACtB,KAAK,iBAAiB;EACtB,KAAK,iBAAiB,MACpB,QAAO,wBAAwB,EAAE;EACnC,KAAK,iBAAiB,kBACpB,QAAO,EAAE,KAAK,YAAY;EAC5B,KAAK,iBAAiB;EACtB,KAAK,iBAAiB;EACtB,KAAK,iBAAiB;EACtB,KAAK,iBAAiB;EACtB,KAAK,iBAAiB;EACtB,KAAK,iBAAiB;EACtB,KAAK,iBAAiB;EACtB,KAAK,iBAAiB;EACtB,KAAK,iBAAiB;EACtB,KAAK,iBAAiB;EACtB,KAAK,iBAAiB;EACtB,KAAK,iBAAiB;EACtB,KAAK,iBAAiB,WACpB,QAAO;EACT,KAAK,iBAAiB;EACtB,KAAK,iBAAiB;EACtB,KAAK,iBAAiB,WACpB,QAAO;EACT,QACE,KAAI,EAAE,KAAK,KAAK,WAAW,mBAAmB,KAAK,CAAE,QAAO;WAE1D,EAAE,KAAK,KAAK,WAAW,mBAAmB,WAAW,IACrD,EAAE,KAAK,KAAK,WAAW,mBAAmB,UAAU,CAEpD,QAAO,4BAA4B,EAAE;WAC5B,EAAE,KAAK,KAAK,WAAW,mBAAmB,YAAY,CAC/D,QAAO,wBAAwB,EAAE;WACxB,EAAE,KAAK,KAAK,WAAW,mBAAmB,cAAc,CACjE,QAAO,wBAAwB,EAAE;WAI7B,CAAC,yBAAyB,IAAI,EAAE,KAAK,KAAK,EAAE;AAC9C,WAAQ,IAAI,4BAA4B,EAAE,KAAK,KAAK;AACpD,4BAAyB,IAAI,EAAE,KAAK,KAAK;;;AAIjD,QAAO"}
package/dist/index.cjs CHANGED
@@ -1,4 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+ const require_runtime = require('./_virtual/_rolldown/runtime.cjs');
2
3
  const require_types = require('./core/types.cjs');
3
4
  const require_errors = require('./core/errors.cjs');
4
5
  const require_transaction = require('./core/transaction.cjs');
@@ -14,6 +15,7 @@ const require_default_client = require('./core/default_client.cjs');
14
15
  const require_tx_helpers = require('./helpers/tx_helpers.cjs');
15
16
  const require_poll = require('./helpers/poll.cjs');
16
17
  const require_test_config = require('./test/test_config.cjs');
18
+ let _milaboratories_pl_model_common = require("@milaboratories/pl-model-common");
17
19
 
18
20
  exports.AnonymousAuthInformation = require_config.AnonymousAuthInformation;
19
21
  exports.ContinuePolling = require_poll.ContinuePolling;
@@ -50,6 +52,8 @@ exports.PollResourceAccessor = require_poll.PollResourceAccessor;
50
52
  exports.PollTxAccessor = require_poll.PollTxAccessor;
51
53
  exports.RESTError = require_errors.RESTError;
52
54
  exports.RecoverablePlError = require_errors.RecoverablePlError;
55
+ exports.ResourceTypeName = _milaboratories_pl_model_common.ResourceTypeName;
56
+ exports.ResourceTypePrefix = _milaboratories_pl_model_common.ResourceTypePrefix;
53
57
  Object.defineProperty(exports, 'RestAPI', {
54
58
  enumerable: true,
55
59
  get: function () {
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { AnyResourceId, BasicResourceData, FieldData, FieldStatus, FieldType, FutureFieldType, LocalResourceId, MaxLocalId, MaxTxId, NullResourceId, OptionalAnyResourceId, OptionalResourceId, ResourceData, ResourceId, ResourceKind, ResourceType, bigintToResourceId, checkLocalityOfResourceId, createGlobalResourceId, createLocalResourceId, ensureResourceIdNotNull, extractBasicResourceData, extractTxId, getField, isAnyResourceId, isLocalResourceId, isNotNullResourceId, isNullResourceId, isRootResourceId, jsonToData, resDataToJson, resourceIdFromString, resourceIdToString, resourceType, resourceTypeToString, resourceTypesEqual, stringifyWithResourceId } from "./core/types.js";
2
- import { DefaultFinalResourceDataPredicate, FinalResourceDataPredicate } from "./core/final.js";
2
+ import { DefaultFinalResourceDataPredicate, FinalResourceDataPredicate, ResourceTypeName, ResourceTypePrefix } from "./core/final.js";
3
3
  import { AnyFieldId, AnyFieldRef, AnyRef, AnyResourceRef, FieldId, FieldRef, KeyValue, KeyValueString, LocalFieldId, PlTransaction, ResourceRef, TxCommitConflict, field, isField, isFieldRef, isResource, isResourceId, isResourceRef, toFieldId, toGlobalFieldId, toGlobalResourceId, toResourceId } from "./core/transaction.js";
4
4
  import { pl_d_exports } from "./helpers/pl.js";
5
5
  import { AnonymousAuthInformation, AuthInformation, AuthOps, DEFAULT_AUTH_MAX_REFRESH, DEFAULT_MAX_CACHE_BYTES, DEFAULT_REQUEST_TIMEOUT, DEFAULT_RETRY_BACKOFF_ALGORITHM, DEFAULT_RETRY_EXPONENTIAL_BACKOFF_MULTIPLIER, DEFAULT_RETRY_INITIAL_DELAY, DEFAULT_RETRY_JITTER, DEFAULT_RETRY_LINEAR_BACKOFF_STEP, DEFAULT_RETRY_MAX_ATTEMPTS, DEFAULT_RO_TX_TIMEOUT, DEFAULT_RW_TX_TIMEOUT, DEFAULT_TOKEN_TTL_SECONDS, DefaultRetryOptions, PlClientConfig, PlConnectionStatus, PlConnectionStatusListener, SUPPORTED_WIRE_PROTOCOLS, plAddressToConfig, wireProtocol } from "./core/config.js";
@@ -14,4 +14,4 @@ import { expirationFromAuthInformation, inferAuthRefreshTime } from "./core/auth
14
14
  import { ValErr, valErr } from "./helpers/tx_helpers.js";
15
15
  import { ContinuePolling, DefaultPollingRetryOptions, PollFieldTraverseOps, PollResourceAccessor, PollTxAccessor, poll } from "./helpers/poll.js";
16
16
  import { test_config_d_exports } from "./test/test_config.js";
17
- export { AnonymousAuthInformation, AnyFieldId, AnyFieldRef, AnyRef, AnyResourceId, AnyResourceRef, AuthInformation, AuthOps, BasicResourceData, ContinuePolling, DEFAULT_AUTH_MAX_REFRESH, DEFAULT_MAX_CACHE_BYTES, DEFAULT_REQUEST_TIMEOUT, DEFAULT_RETRY_BACKOFF_ALGORITHM, DEFAULT_RETRY_EXPONENTIAL_BACKOFF_MULTIPLIER, DEFAULT_RETRY_INITIAL_DELAY, DEFAULT_RETRY_JITTER, DEFAULT_RETRY_LINEAR_BACKOFF_STEP, DEFAULT_RETRY_MAX_ATTEMPTS, DEFAULT_RO_TX_TIMEOUT, DEFAULT_RW_TX_TIMEOUT, DEFAULT_TOKEN_TTL_SECONDS, DefaultFinalResourceDataPredicate, DefaultPollingRetryOptions, DefaultRetryOptions, DisconnectedError, FieldData, FieldId, FieldRef, FieldStatus, FieldType, FinalResourceDataPredicate, FutureFieldType, GrpcConnection, KeyValue, KeyValueString, LocalFieldId, LocalResourceId, MaxLocalId, MaxTxId, NullResourceId, OptionalAnyResourceId, OptionalResourceId, pl_d_exports as Pl, PlClient, PlClientConfig, PlConnectionStatus, PlConnectionStatusListener, PlDriver, PlDriverDefinition, PlError, PlErrorCodeNotFound, PlTransaction, PollFieldTraverseOps, PollResourceAccessor, PollTxAccessor, RESTError, RecoverablePlError, ResourceData, ResourceId, ResourceKind, ResourceRef, ResourceType, index_d_exports as RestAPI, RestConnection, SUPPORTED_WIRE_PROTOCOLS, test_config_d_exports as TestHelpers, TxCommitConflict, TxOps, UnauthenticatedError, UnauthenticatedPlClient, UnrecoverablePlError, ValErr, WireClientProvider, WireClientProviderFactory, WireConnection, addRTypeToMetadata, bigintToResourceId, checkLocalityOfResourceId, createGlobalResourceId, createLocalResourceId, createRTypeRoutingHeader, defaultPlClient, ensureResourceIdNotNull, expirationFromAuthInformation, extractBasicResourceData, extractTxId, field, getField, inferAuthRefreshTime, isAbortedError, isAnyResourceId, isCancelError, isConnectionProblem, isField, isFieldRef, isLocalResourceId, isNotFoundError, isNotNullResourceId, isNullResourceId, isResource, isResourceId, isResourceRef, isRootResourceId, isTimeoutError, isTimeoutOrCancelError, isUnauthenticated, jsonToData, plAddressToConfig, poll, resDataToJson, resourceIdFromString, resourceIdToString, resourceType, resourceTypeToString, resourceTypesEqual, rethrowMeaningfulError, stringifyWithResourceId, throwPlNotFoundError, toFieldId, toGlobalFieldId, toGlobalResourceId, toResourceId, tryGetFileConfig, valErr, wireProtocol };
17
+ export { AnonymousAuthInformation, AnyFieldId, AnyFieldRef, AnyRef, AnyResourceId, AnyResourceRef, AuthInformation, AuthOps, BasicResourceData, ContinuePolling, DEFAULT_AUTH_MAX_REFRESH, DEFAULT_MAX_CACHE_BYTES, DEFAULT_REQUEST_TIMEOUT, DEFAULT_RETRY_BACKOFF_ALGORITHM, DEFAULT_RETRY_EXPONENTIAL_BACKOFF_MULTIPLIER, DEFAULT_RETRY_INITIAL_DELAY, DEFAULT_RETRY_JITTER, DEFAULT_RETRY_LINEAR_BACKOFF_STEP, DEFAULT_RETRY_MAX_ATTEMPTS, DEFAULT_RO_TX_TIMEOUT, DEFAULT_RW_TX_TIMEOUT, DEFAULT_TOKEN_TTL_SECONDS, DefaultFinalResourceDataPredicate, DefaultPollingRetryOptions, DefaultRetryOptions, DisconnectedError, FieldData, FieldId, FieldRef, FieldStatus, FieldType, FinalResourceDataPredicate, FutureFieldType, GrpcConnection, KeyValue, KeyValueString, LocalFieldId, LocalResourceId, MaxLocalId, MaxTxId, NullResourceId, OptionalAnyResourceId, OptionalResourceId, pl_d_exports as Pl, PlClient, PlClientConfig, PlConnectionStatus, PlConnectionStatusListener, PlDriver, PlDriverDefinition, PlError, PlErrorCodeNotFound, PlTransaction, PollFieldTraverseOps, PollResourceAccessor, PollTxAccessor, RESTError, RecoverablePlError, ResourceData, ResourceId, ResourceKind, ResourceRef, ResourceType, ResourceTypeName, ResourceTypePrefix, index_d_exports as RestAPI, RestConnection, SUPPORTED_WIRE_PROTOCOLS, test_config_d_exports as TestHelpers, TxCommitConflict, TxOps, UnauthenticatedError, UnauthenticatedPlClient, UnrecoverablePlError, ValErr, WireClientProvider, WireClientProviderFactory, WireConnection, addRTypeToMetadata, bigintToResourceId, checkLocalityOfResourceId, createGlobalResourceId, createLocalResourceId, createRTypeRoutingHeader, defaultPlClient, ensureResourceIdNotNull, expirationFromAuthInformation, extractBasicResourceData, extractTxId, field, getField, inferAuthRefreshTime, isAbortedError, isAnyResourceId, isCancelError, isConnectionProblem, isField, isFieldRef, isLocalResourceId, isNotFoundError, isNotNullResourceId, isNullResourceId, isResource, isResourceId, isResourceRef, isRootResourceId, isTimeoutError, isTimeoutOrCancelError, isUnauthenticated, jsonToData, plAddressToConfig, poll, resDataToJson, resourceIdFromString, resourceIdToString, resourceType, resourceTypeToString, resourceTypesEqual, rethrowMeaningfulError, stringifyWithResourceId, throwPlNotFoundError, toFieldId, toGlobalFieldId, toGlobalResourceId, toResourceId, tryGetFileConfig, valErr, wireProtocol };
package/dist/index.js CHANGED
@@ -5,7 +5,7 @@ import { pl_exports } from "./helpers/pl.js";
5
5
  import { AnonymousAuthInformation, DEFAULT_AUTH_MAX_REFRESH, DEFAULT_MAX_CACHE_BYTES, DEFAULT_REQUEST_TIMEOUT, DEFAULT_RETRY_BACKOFF_ALGORITHM, DEFAULT_RETRY_EXPONENTIAL_BACKOFF_MULTIPLIER, DEFAULT_RETRY_INITIAL_DELAY, DEFAULT_RETRY_JITTER, DEFAULT_RETRY_LINEAR_BACKOFF_STEP, DEFAULT_RETRY_MAX_ATTEMPTS, DEFAULT_RO_TX_TIMEOUT, DEFAULT_RW_TX_TIMEOUT, DEFAULT_TOKEN_TTL_SECONDS, DefaultRetryOptions, SUPPORTED_WIRE_PROTOCOLS, plAddressToConfig } from "./core/config.js";
6
6
  import { expirationFromAuthInformation, inferAuthRefreshTime } from "./core/auth.js";
7
7
  import { proto_rest_exports } from "./proto-rest/index.js";
8
- import { DefaultFinalResourceDataPredicate } from "./core/final.js";
8
+ import { DefaultFinalResourceDataPredicate, ResourceTypeName, ResourceTypePrefix } from "./core/final.js";
9
9
  import { PlClient } from "./core/client.js";
10
10
  import { addRTypeToMetadata, createRTypeRoutingHeader } from "./core/driver.js";
11
11
  import { UnauthenticatedPlClient } from "./core/unauth_client.js";
@@ -14,4 +14,4 @@ import { valErr } from "./helpers/tx_helpers.js";
14
14
  import { ContinuePolling, DefaultPollingRetryOptions, PollResourceAccessor, PollTxAccessor, poll } from "./helpers/poll.js";
15
15
  import { test_config_exports } from "./test/test_config.js";
16
16
 
17
- export { AnonymousAuthInformation, ContinuePolling, DEFAULT_AUTH_MAX_REFRESH, DEFAULT_MAX_CACHE_BYTES, DEFAULT_REQUEST_TIMEOUT, DEFAULT_RETRY_BACKOFF_ALGORITHM, DEFAULT_RETRY_EXPONENTIAL_BACKOFF_MULTIPLIER, DEFAULT_RETRY_INITIAL_DELAY, DEFAULT_RETRY_JITTER, DEFAULT_RETRY_LINEAR_BACKOFF_STEP, DEFAULT_RETRY_MAX_ATTEMPTS, DEFAULT_RO_TX_TIMEOUT, DEFAULT_RW_TX_TIMEOUT, DEFAULT_TOKEN_TTL_SECONDS, DefaultFinalResourceDataPredicate, DefaultPollingRetryOptions, DefaultRetryOptions, DisconnectedError, MaxLocalId, MaxTxId, NullResourceId, pl_exports as Pl, PlClient, PlError, PlErrorCodeNotFound, PlTransaction, PollResourceAccessor, PollTxAccessor, RESTError, RecoverablePlError, proto_rest_exports as RestAPI, SUPPORTED_WIRE_PROTOCOLS, test_config_exports as TestHelpers, TxCommitConflict, UnauthenticatedError, UnauthenticatedPlClient, UnrecoverablePlError, addRTypeToMetadata, bigintToResourceId, checkLocalityOfResourceId, createGlobalResourceId, createLocalResourceId, createRTypeRoutingHeader, defaultPlClient, ensureResourceIdNotNull, expirationFromAuthInformation, extractBasicResourceData, extractTxId, field, getField, inferAuthRefreshTime, isAbortedError, isAnyResourceId, isCancelError, isConnectionProblem, isField, isFieldRef, isLocalResourceId, isNotFoundError, isNotNullResourceId, isNullResourceId, isResource, isResourceId, isResourceRef, isRootResourceId, isTimeoutError, isTimeoutOrCancelError, isUnauthenticated, jsonToData, plAddressToConfig, poll, resDataToJson, resourceIdFromString, resourceIdToString, resourceType, resourceTypeToString, resourceTypesEqual, rethrowMeaningfulError, stringifyWithResourceId, throwPlNotFoundError, toFieldId, toGlobalFieldId, toGlobalResourceId, toResourceId, tryGetFileConfig, valErr };
17
+ export { AnonymousAuthInformation, ContinuePolling, DEFAULT_AUTH_MAX_REFRESH, DEFAULT_MAX_CACHE_BYTES, DEFAULT_REQUEST_TIMEOUT, DEFAULT_RETRY_BACKOFF_ALGORITHM, DEFAULT_RETRY_EXPONENTIAL_BACKOFF_MULTIPLIER, DEFAULT_RETRY_INITIAL_DELAY, DEFAULT_RETRY_JITTER, DEFAULT_RETRY_LINEAR_BACKOFF_STEP, DEFAULT_RETRY_MAX_ATTEMPTS, DEFAULT_RO_TX_TIMEOUT, DEFAULT_RW_TX_TIMEOUT, DEFAULT_TOKEN_TTL_SECONDS, DefaultFinalResourceDataPredicate, DefaultPollingRetryOptions, DefaultRetryOptions, DisconnectedError, MaxLocalId, MaxTxId, NullResourceId, pl_exports as Pl, PlClient, PlError, PlErrorCodeNotFound, PlTransaction, PollResourceAccessor, PollTxAccessor, RESTError, RecoverablePlError, ResourceTypeName, ResourceTypePrefix, proto_rest_exports as RestAPI, SUPPORTED_WIRE_PROTOCOLS, test_config_exports as TestHelpers, TxCommitConflict, UnauthenticatedError, UnauthenticatedPlClient, UnrecoverablePlError, addRTypeToMetadata, bigintToResourceId, checkLocalityOfResourceId, createGlobalResourceId, createLocalResourceId, createRTypeRoutingHeader, defaultPlClient, ensureResourceIdNotNull, expirationFromAuthInformation, extractBasicResourceData, extractTxId, field, getField, inferAuthRefreshTime, isAbortedError, isAnyResourceId, isCancelError, isConnectionProblem, isField, isFieldRef, isLocalResourceId, isNotFoundError, isNotNullResourceId, isNullResourceId, isResource, isResourceId, isResourceRef, isRootResourceId, isTimeoutError, isTimeoutOrCancelError, isUnauthenticated, jsonToData, plAddressToConfig, poll, resDataToJson, resourceIdFromString, resourceIdToString, resourceType, resourceTypeToString, resourceTypesEqual, rethrowMeaningfulError, stringifyWithResourceId, throwPlNotFoundError, toFieldId, toGlobalFieldId, toGlobalResourceId, toResourceId, tryGetFileConfig, valErr };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@milaboratories/pl-client",
3
- "version": "2.17.12",
3
+ "version": "2.18.1",
4
4
  "description": "New TS/JS client for Platform API",
5
5
  "files": [
6
6
  "./dist/**/*",
@@ -30,9 +30,9 @@
30
30
  "undici": "~7.16.0",
31
31
  "utility-types": "^3.11.0",
32
32
  "yaml": "^2.8.0",
33
+ "@milaboratories/ts-helpers": "1.7.3",
33
34
  "@milaboratories/pl-http": "1.2.4",
34
- "@milaboratories/pl-model-common": "1.26.1",
35
- "@milaboratories/ts-helpers": "1.7.3"
35
+ "@milaboratories/pl-model-common": "1.28.0"
36
36
  },
37
37
  "devDependencies": {
38
38
  "@protobuf-ts/plugin": "2.11.1",
@@ -42,8 +42,8 @@
42
42
  "typescript": "~5.9.3",
43
43
  "vitest": "^4.0.18",
44
44
  "@milaboratories/build-configs": "1.5.2",
45
- "@milaboratories/ts-configs": "1.2.2",
46
- "@milaboratories/ts-builder": "1.3.0"
45
+ "@milaboratories/ts-builder": "1.3.0",
46
+ "@milaboratories/ts-configs": "1.2.2"
47
47
  },
48
48
  "engines": {
49
49
  "node": ">=22.19.0"
package/src/core/final.ts CHANGED
@@ -1,6 +1,8 @@
1
1
  import type { Optional } from "utility-types";
2
2
  import type { BasicResourceData, ResourceData } from "./types";
3
3
  import { getField, isNotNullResourceId, isNullResourceId } from "./types";
4
+ import { ResourceTypeName, ResourceTypePrefix } from "@milaboratories/pl-model-common";
5
+ export { ResourceTypeName, ResourceTypePrefix };
4
6
 
5
7
  /**
6
8
  * Function is used to guide multiple layers of caching in pl-client and derived pl-tree.
@@ -36,7 +38,7 @@ const unknownResourceTypeNames = new Set<string>();
36
38
  /** Default implementation, defining behaviour for built-in resource types. */
37
39
  export const DefaultFinalResourceDataPredicate: FinalResourceDataPredicate = (r): boolean => {
38
40
  switch (r.type.name) {
39
- case "StreamManager": {
41
+ case ResourceTypeName.StreamManager: {
40
42
  if (!readyOrDuplicateOrError(r)) return false;
41
43
  if (r.fields === undefined) return true; // if fields are not provided basic resource state is not expected to change in the future
42
44
  if (isNotNullResourceId(r.error)) return true;
@@ -44,51 +46,54 @@ export const DefaultFinalResourceDataPredicate: FinalResourceDataPredicate = (r)
44
46
  const stream = getField(r as ResourceData, "stream");
45
47
  return stream.value === downloadable.value;
46
48
  }
47
- case "StdMap":
48
- case "std/map":
49
- case "EphStdMap":
50
- case "PFrame":
51
- case "ParquetChunk":
52
- case "BContext":
53
- case "BlockPackCustom":
54
- case "BinaryMap":
55
- case "BinaryValue":
56
- case "BlobMap":
57
- case "BResolveSingle":
58
- case "BResolveSingleNoResult":
59
- case "BQueryResult":
60
- case "TengoTemplate":
61
- case "TengoLib":
62
- case "SoftwareInfo":
63
- case "Dummy":
49
+ case ResourceTypeName.StdMap:
50
+ case ResourceTypeName.StdMapSlash:
51
+ case ResourceTypeName.EphStdMap:
52
+ case ResourceTypeName.PFrame:
53
+ case ResourceTypeName.ParquetChunk:
54
+ case ResourceTypeName.BContext:
55
+ case ResourceTypeName.BlockPackCustom:
56
+ case ResourceTypeName.BinaryMap:
57
+ case ResourceTypeName.BinaryValue:
58
+ case ResourceTypeName.BlobMap:
59
+ case ResourceTypeName.BResolveSingle:
60
+ case ResourceTypeName.BResolveSingleNoResult:
61
+ case ResourceTypeName.BQueryResult:
62
+ case ResourceTypeName.TengoTemplate:
63
+ case ResourceTypeName.TengoLib:
64
+ case ResourceTypeName.SoftwareInfo:
65
+ case ResourceTypeName.Dummy:
64
66
  return readyOrDuplicateOrError(r);
65
- case "json/resourceError":
67
+ case ResourceTypeName.JsonResourceError:
66
68
  return r.type.version === "1";
67
- case "json/object":
68
- case "json-gz/object":
69
- case "json/string":
70
- case "json/array":
71
- case "json/number":
72
- case "BContextEnd":
73
- case "Frontend/FromUrl":
74
- case "Frontend/FromFolder":
75
- case "BObjectSpec":
76
- case "Blob":
77
- case "Null":
78
- case "binary":
79
- case "LSProvider":
69
+ case ResourceTypeName.JsonObject:
70
+ case ResourceTypeName.JsonGzObject:
71
+ case ResourceTypeName.JsonString:
72
+ case ResourceTypeName.JsonArray:
73
+ case ResourceTypeName.JsonNumber:
74
+ case ResourceTypeName.BContextEnd:
75
+ case ResourceTypeName.FrontendFromUrl:
76
+ case ResourceTypeName.FrontendFromFolder:
77
+ case ResourceTypeName.BObjectSpec:
78
+ case ResourceTypeName.Blob:
79
+ case ResourceTypeName.Null:
80
+ case ResourceTypeName.Binary:
81
+ case ResourceTypeName.LSProvider:
80
82
  return true;
81
- case "UserProject":
82
- case "Projects":
83
- case "ClientRoot":
83
+ case ResourceTypeName.UserProject:
84
+ case ResourceTypeName.Projects:
85
+ case ResourceTypeName.ClientRoot:
84
86
  return false;
85
87
  default:
86
- if (r.type.name.startsWith("Blob/")) return true;
87
- else if (r.type.name.startsWith("BlobUpload/") || r.type.name.startsWith("BlobIndex/")) {
88
+ if (r.type.name.startsWith(ResourceTypePrefix.Blob)) return true;
89
+ else if (
90
+ r.type.name.startsWith(ResourceTypePrefix.BlobUpload) ||
91
+ r.type.name.startsWith(ResourceTypePrefix.BlobIndex)
92
+ ) {
88
93
  return readyAndHasAllOutputsFilled(r);
89
- } else if (r.type.name.startsWith("PColumnData/")) {
94
+ } else if (r.type.name.startsWith(ResourceTypePrefix.PColumnData)) {
90
95
  return readyOrDuplicateOrError(r);
91
- } else if (r.type.name.startsWith("StreamWorkdir/")) {
96
+ } else if (r.type.name.startsWith(ResourceTypePrefix.StreamWorkdir)) {
92
97
  return readyOrDuplicateOrError(r);
93
98
  } else {
94
99
  // Unknown resource type detected