@milaboratories/pl-client 2.12.1 → 2.12.2

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.
@@ -37,6 +37,7 @@ const DefaultFinalResourceDataPredicate = (r) => {
37
37
  case 'std/map':
38
38
  case 'EphStdMap':
39
39
  case 'PFrame':
40
+ case 'ParquetChunk':
40
41
  case 'BContext':
41
42
  case 'BlockPackCustom':
42
43
  case 'BinaryMap':
@@ -83,7 +84,7 @@ const DefaultFinalResourceDataPredicate = (r) => {
83
84
  return readyOrDuplicateOrError(r);
84
85
  }
85
86
  else {
86
- // Unknonw resource type detected
87
+ // Unknown resource type detected
87
88
  // Set used to log this message only once
88
89
  if (!unknownResourceTypeNames.has(r.type.name)) {
89
90
  console.log('UNKNOWN RESOURCE TYPE: ' + r.type.name);
@@ -1 +1 @@
1
- {"version":3,"file":"final.cjs","sources":["../../src/core/final.ts"],"sourcesContent":["import type { Optional } from 'utility-types';\nimport type {\n BasicResourceData,\n ResourceData,\n} from './types';\nimport {\n getField,\n isNotNullResourceId,\n isNullResourceId,\n} 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 '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 // Unknonw 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"],"names":["isNotNullResourceId","isNullResourceId","getField"],"mappings":"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"}
1
+ {"version":3,"file":"final.cjs","sources":["../../src/core/final.ts"],"sourcesContent":["import type { Optional } from 'utility-types';\nimport type {\n BasicResourceData,\n ResourceData,\n} from './types';\nimport {\n getField,\n isNotNullResourceId,\n isNullResourceId,\n} 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"],"names":["isNotNullResourceId","isNullResourceId","getField"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"final.d.ts","sourceRoot":"","sources":["../../src/core/final.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAEV,YAAY,EACb,MAAM,SAAS,CAAC;AAOjB;;;;;;;;GAQG;AACH,MAAM,MAAM,0BAA0B,GAAG,CACvC,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,KAC3C,OAAO,CAAC;AAoBb,8EAA8E;AAC9E,eAAO,MAAM,iCAAiC,EAAE,0BAiE/C,CAAC"}
1
+ {"version":3,"file":"final.d.ts","sourceRoot":"","sources":["../../src/core/final.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAEV,YAAY,EACb,MAAM,SAAS,CAAC;AAOjB;;;;;;;;GAQG;AACH,MAAM,MAAM,0BAA0B,GAAG,CACvC,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,KAC3C,OAAO,CAAC;AAoBb,8EAA8E;AAC9E,eAAO,MAAM,iCAAiC,EAAE,0BAkE/C,CAAC"}
@@ -35,6 +35,7 @@ const DefaultFinalResourceDataPredicate = (r) => {
35
35
  case 'std/map':
36
36
  case 'EphStdMap':
37
37
  case 'PFrame':
38
+ case 'ParquetChunk':
38
39
  case 'BContext':
39
40
  case 'BlockPackCustom':
40
41
  case 'BinaryMap':
@@ -81,7 +82,7 @@ const DefaultFinalResourceDataPredicate = (r) => {
81
82
  return readyOrDuplicateOrError(r);
82
83
  }
83
84
  else {
84
- // Unknonw resource type detected
85
+ // Unknown resource type detected
85
86
  // Set used to log this message only once
86
87
  if (!unknownResourceTypeNames.has(r.type.name)) {
87
88
  console.log('UNKNOWN RESOURCE TYPE: ' + r.type.name);
@@ -1 +1 @@
1
- {"version":3,"file":"final.js","sources":["../../src/core/final.ts"],"sourcesContent":["import type { Optional } from 'utility-types';\nimport type {\n BasicResourceData,\n ResourceData,\n} from './types';\nimport {\n getField,\n isNotNullResourceId,\n isNullResourceId,\n} 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 '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 // Unknonw 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"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"final.js","sources":["../../src/core/final.ts"],"sourcesContent":["import type { Optional } from 'utility-types';\nimport type {\n BasicResourceData,\n ResourceData,\n} from './types';\nimport {\n getField,\n isNotNullResourceId,\n isNullResourceId,\n} 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"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@milaboratories/pl-client",
3
- "version": "2.12.1",
3
+ "version": "2.12.2",
4
4
  "engines": {
5
5
  "node": ">=20.3.0"
6
6
  },
@@ -45,8 +45,8 @@
45
45
  "jest": "^29.7.0",
46
46
  "@jest/globals": "^29.7.0",
47
47
  "ts-jest": "^29.2.6",
48
- "@milaboratories/ts-builder": "1.0.5",
49
48
  "@milaboratories/ts-configs": "1.0.6",
49
+ "@milaboratories/ts-builder": "1.0.5",
50
50
  "@milaboratories/build-configs": "1.0.8"
51
51
  },
52
52
  "scripts": {
package/src/core/final.ts CHANGED
@@ -55,6 +55,7 @@ export const DefaultFinalResourceDataPredicate: FinalResourceDataPredicate = (r)
55
55
  case 'std/map':
56
56
  case 'EphStdMap':
57
57
  case 'PFrame':
58
+ case 'ParquetChunk':
58
59
  case 'BContext':
59
60
  case 'BlockPackCustom':
60
61
  case 'BinaryMap':
@@ -97,7 +98,7 @@ export const DefaultFinalResourceDataPredicate: FinalResourceDataPredicate = (r)
97
98
  } else if (r.type.name.startsWith('StreamWorkdir/')) {
98
99
  return readyOrDuplicateOrError(r);
99
100
  } else {
100
- // Unknonw resource type detected
101
+ // Unknown resource type detected
101
102
  // Set used to log this message only once
102
103
  if (!unknownResourceTypeNames.has(r.type.name)) {
103
104
  console.log('UNKNOWN RESOURCE TYPE: ' + r.type.name);