@milaboratories/pl-tree 1.8.34 → 1.8.35

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/dist/accessors.cjs +23 -23
  2. package/dist/accessors.cjs.map +1 -1
  3. package/dist/accessors.d.ts +10 -10
  4. package/dist/accessors.d.ts.map +1 -1
  5. package/dist/accessors.js +23 -23
  6. package/dist/accessors.js.map +1 -1
  7. package/dist/dump.cjs.map +1 -1
  8. package/dist/dump.d.ts +1 -1
  9. package/dist/dump.js.map +1 -1
  10. package/dist/index.d.ts +9 -9
  11. package/dist/snapshot.cjs +3 -3
  12. package/dist/snapshot.cjs.map +1 -1
  13. package/dist/snapshot.d.ts +12 -12
  14. package/dist/snapshot.js +3 -3
  15. package/dist/snapshot.js.map +1 -1
  16. package/dist/state.cjs +33 -33
  17. package/dist/state.cjs.map +1 -1
  18. package/dist/state.d.ts +10 -10
  19. package/dist/state.d.ts.map +1 -1
  20. package/dist/state.js +33 -33
  21. package/dist/state.js.map +1 -1
  22. package/dist/sync.cjs +1 -1
  23. package/dist/sync.cjs.map +1 -1
  24. package/dist/sync.d.ts +2 -2
  25. package/dist/sync.d.ts.map +1 -1
  26. package/dist/sync.js +1 -1
  27. package/dist/sync.js.map +1 -1
  28. package/dist/synchronized_tree.cjs +11 -11
  29. package/dist/synchronized_tree.cjs.map +1 -1
  30. package/dist/synchronized_tree.d.ts +6 -6
  31. package/dist/synchronized_tree.d.ts.map +1 -1
  32. package/dist/synchronized_tree.js +11 -11
  33. package/dist/synchronized_tree.js.map +1 -1
  34. package/dist/test_utils.d.ts +12 -12
  35. package/dist/test_utils.d.ts.map +1 -1
  36. package/dist/traversal_ops.d.ts +1 -1
  37. package/dist/value_or_error.d.ts.map +1 -1
  38. package/package.json +23 -22
  39. package/src/accessors.ts +44 -43
  40. package/src/dump.ts +1 -1
  41. package/src/index.ts +9 -9
  42. package/src/snapshot.test.ts +29 -29
  43. package/src/snapshot.ts +26 -26
  44. package/src/state.test.ts +88 -85
  45. package/src/state.ts +123 -71
  46. package/src/sync.test.ts +31 -31
  47. package/src/sync.ts +6 -8
  48. package/src/synchronized_tree.test.ts +60 -60
  49. package/src/synchronized_tree.ts +41 -38
  50. package/src/test_utils.ts +33 -35
  51. package/src/traversal_ops.ts +1 -1
  52. package/src/value_or_error.ts +6 -6
@@ -12,25 +12,25 @@ class PlError extends Error {
12
12
  }
13
13
  }
14
14
  function isPlTreeEntry(obj) {
15
- return (typeof obj === 'object'
16
- && obj !== null
17
- && obj['__pl_tree_type_marker__'] === 'PlTreeEntry');
15
+ return (typeof obj === "object" &&
16
+ obj !== null &&
17
+ obj["__pl_tree_type_marker__"] === "PlTreeEntry");
18
18
  }
19
19
  function isPlTreeEntryAccessor(obj) {
20
- return (typeof obj === 'object'
21
- && obj !== null
22
- && obj['__pl_tree_type_marker__'] === 'PlTreeEntryAccessor');
20
+ return (typeof obj === "object" &&
21
+ obj !== null &&
22
+ obj["__pl_tree_type_marker__"] === "PlTreeEntryAccessor");
23
23
  }
24
24
  function isPlTreeNodeAccessor(obj) {
25
- return (typeof obj === 'object'
26
- && obj !== null
27
- && obj['__pl_tree_type_marker__'] === 'PlTreeNodeAccessor');
25
+ return (typeof obj === "object" &&
26
+ obj !== null &&
27
+ obj["__pl_tree_type_marker__"] === "PlTreeNodeAccessor");
28
28
  }
29
29
  /** Main entry point for using PlTree in reactive setting */
30
30
  class PlTreeEntry {
31
31
  accessorData;
32
32
  rid;
33
- __pl_tree_type_marker__ = 'PlTreeEntry';
33
+ __pl_tree_type_marker__ = "PlTreeEntry";
34
34
  constructor(accessorData, rid) {
35
35
  this.accessorData = accessorData;
36
36
  this.rid = rid;
@@ -55,8 +55,8 @@ function getResourceFromTree(accessorData, tree, instanceData, rid, ops) {
55
55
  if (err !== undefined)
56
56
  throw plErrors.parsePlError(tsHelpers.notEmpty(err.getDataAsString()), acc.id, acc.resourceType);
57
57
  }
58
- if (ops.assertResourceType !== undefined
59
- && (Array.isArray(ops.assertResourceType)
58
+ if (ops.assertResourceType !== undefined &&
59
+ (Array.isArray(ops.assertResourceType)
60
60
  ? ops.assertResourceType.findIndex((rt) => plClient.resourceTypesEqual(rt, acc.resourceType)) === -1
61
61
  : !plClient.resourceTypesEqual(ops.assertResourceType, acc.resourceType)))
62
62
  throw new Error(
@@ -69,7 +69,7 @@ class PlTreeEntryAccessor {
69
69
  tree;
70
70
  rid;
71
71
  instanceData;
72
- __pl_tree_type_marker__ = 'PlTreeEntryAccessor';
72
+ __pl_tree_type_marker__ = "PlTreeEntryAccessor";
73
73
  constructor(accessorData, tree, rid, instanceData) {
74
74
  this.accessorData = accessorData;
75
75
  this.tree = tree;
@@ -105,7 +105,7 @@ class PlTreeNodeAccessor {
105
105
  tree;
106
106
  resource;
107
107
  instanceData;
108
- __pl_tree_type_marker__ = 'PlTreeNodeAccessor';
108
+ __pl_tree_type_marker__ = "PlTreeNodeAccessor";
109
109
  constructor(accessorData, tree, resource, instanceData) {
110
110
  this.accessorData = accessorData;
111
111
  this.tree = tree;
@@ -148,7 +148,7 @@ class PlTreeNodeAccessor {
148
148
  // eslint-disable-next-line @typescript-eslint/no-this-alias
149
149
  let current = this;
150
150
  for (const _step of steps) {
151
- const step = typeof _step === 'string'
151
+ const step = typeof _step === "string"
152
152
  ? {
153
153
  ...commonOptions,
154
154
  field: _step,
@@ -172,7 +172,7 @@ class PlTreeNodeAccessor {
172
172
  error: new Error(`field have no assigned value ${step.field} of ${plClient.resourceIdToString(current.id)}`),
173
173
  };
174
174
  // existing but unpopulated field is unstable because it must be resolved at some point
175
- this.onUnstableLambda('unpopulated_field:' + step.field);
175
+ this.onUnstableLambda("unpopulated_field:" + step.field);
176
176
  return undefined;
177
177
  }
178
178
  current = next.value;
@@ -184,7 +184,7 @@ class PlTreeNodeAccessor {
184
184
  };
185
185
  getField(_step) {
186
186
  this.instanceData.guard();
187
- const step = typeof _step === 'string' ? { field: _step } : _step;
187
+ const step = typeof _step === "string" ? { field: _step } : _step;
188
188
  const ve = this.resource.getField(this.instanceData.ctx.watcher, step, this.onUnstableLambda);
189
189
  if (ve === undefined)
190
190
  return undefined;
@@ -194,21 +194,21 @@ class PlTreeNodeAccessor {
194
194
  this.instanceData.guard();
195
195
  const result = this.resource.getInputsLocked(this.instanceData.ctx.watcher);
196
196
  if (!result)
197
- this.instanceData.ctx.markUnstable('inputs_unlocked:' + this.resourceType.name);
197
+ this.instanceData.ctx.markUnstable("inputs_unlocked:" + this.resourceType.name);
198
198
  return result;
199
199
  }
200
200
  getOutputsLocked() {
201
201
  this.instanceData.guard();
202
202
  const result = this.resource.getOutputsLocked(this.instanceData.ctx.watcher);
203
203
  if (!result)
204
- this.instanceData.ctx.markUnstable('outputs_unlocked:' + this.resourceType.name);
204
+ this.instanceData.ctx.markUnstable("outputs_unlocked:" + this.resourceType.name);
205
205
  return result;
206
206
  }
207
207
  getIsReadyOrError() {
208
208
  this.instanceData.guard();
209
209
  const result = this.resource.getIsReadyOrError(this.instanceData.ctx.watcher);
210
210
  if (!result)
211
- this.instanceData.ctx.markUnstable('not_ready:' + this.resourceType.name);
211
+ this.instanceData.ctx.markUnstable("not_ready:" + this.resourceType.name);
212
212
  return result;
213
213
  }
214
214
  getIsFinal() {
@@ -250,7 +250,7 @@ class PlTreeNodeAccessor {
250
250
  this.instanceData.guard();
251
251
  const result = this.resource.getKeyValue(this.instanceData.ctx.watcher, key);
252
252
  if (result === undefined && unstableIfNotFound)
253
- this.instanceData.ctx.markUnstable('key_not_found_b:' + key);
253
+ this.instanceData.ctx.markUnstable("key_not_found_b:" + key);
254
254
  return result;
255
255
  }
256
256
  /** @deprecated */
@@ -261,14 +261,14 @@ class PlTreeNodeAccessor {
261
261
  this.instanceData.guard();
262
262
  const result = this.resource.getKeyValueString(this.instanceData.ctx.watcher, key);
263
263
  if (result === undefined && unstableIfNotFound)
264
- this.instanceData.ctx.markUnstable('key_not_found_s:' + key);
264
+ this.instanceData.ctx.markUnstable("key_not_found_s:" + key);
265
265
  return result;
266
266
  }
267
267
  getKeyValueAsJson(key, unstableIfNotFound = false) {
268
268
  const result = this.resource.getKeyValueAsJson(this.instanceData.ctx.watcher, key);
269
269
  if (result === undefined) {
270
270
  if (unstableIfNotFound)
271
- this.instanceData.ctx.markUnstable('key_not_found_j:' + key);
271
+ this.instanceData.ctx.markUnstable("key_not_found_j:" + key);
272
272
  return undefined;
273
273
  }
274
274
  return result;
@@ -1 +1 @@
1
- {"version":3,"file":"accessors.cjs","sources":["../src/accessors.ts"],"sourcesContent":["import type { PlTreeResource, PlTreeState } from './state';\nimport type {\n AccessorProvider,\n ComputableCtx,\n ComputableHooks,\n UsageGuard,\n} from '@milaboratories/computable';\nimport type {\n ResourceId,\n ResourceType,\n OptionalResourceId } from '@milaboratories/pl-client';\nimport {\n resourceIdToString,\n resourceTypesEqual,\n resourceTypeToString,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n NullResourceId,\n} from '@milaboratories/pl-client';\nimport type { ValueAndError } from './value_and_error';\nimport { mapValueAndError } from './value_and_error';\nimport type {\n CommonFieldTraverseOps,\n FieldTraversalStep,\n GetFieldStep,\n ResourceTraversalOps,\n} from './traversal_ops';\nimport type { ValueOrError } from './value_or_error';\nimport { parsePlError } from '@milaboratories/pl-errors';\nimport { notEmpty } from '@milaboratories/ts-helpers';\n/** Error encountered during traversal in field or resource. */\nexport class PlError extends Error {\n constructor(message: string) {\n super(message);\n }\n}\n\nexport type TreeAccessorData = {\n readonly treeProvider: () => PlTreeState;\n readonly hooks?: ComputableHooks;\n};\n\nexport type TreeAccessorInstanceData = {\n readonly guard: UsageGuard;\n readonly ctx: ComputableCtx;\n};\n\nexport function isPlTreeEntry(obj: unknown): obj is PlTreeEntry {\n return (\n typeof obj === 'object'\n && obj !== null\n && (obj as any)['__pl_tree_type_marker__'] === 'PlTreeEntry'\n );\n}\n\nexport function isPlTreeEntryAccessor(obj: unknown): obj is PlTreeEntryAccessor {\n return (\n typeof obj === 'object'\n && obj !== null\n && (obj as any)['__pl_tree_type_marker__'] === 'PlTreeEntryAccessor'\n );\n}\n\nexport function isPlTreeNodeAccessor(obj: unknown): obj is PlTreeNodeAccessor {\n return (\n typeof obj === 'object'\n && obj !== null\n && (obj as any)['__pl_tree_type_marker__'] === 'PlTreeNodeAccessor'\n );\n}\n\n/** Main entry point for using PlTree in reactive setting */\nexport class PlTreeEntry implements AccessorProvider<PlTreeEntryAccessor> {\n private readonly __pl_tree_type_marker__ = 'PlTreeEntry';\n\n constructor(\n private readonly accessorData: TreeAccessorData,\n public readonly rid: ResourceId,\n ) {}\n\n public createAccessor(ctx: ComputableCtx, guard: UsageGuard): PlTreeEntryAccessor {\n return new PlTreeEntryAccessor(this.accessorData, this.accessorData.treeProvider(), this.rid, {\n ctx,\n guard,\n });\n }\n\n public toJSON(): string {\n return this.toString();\n }\n\n public toString(): string {\n return `[ENTRY:${resourceIdToString(this.rid)}]`;\n }\n}\n\nfunction getResourceFromTree(\n accessorData: TreeAccessorData,\n tree: PlTreeState,\n instanceData: TreeAccessorInstanceData,\n rid: ResourceId,\n ops: ResourceTraversalOps,\n): PlTreeNodeAccessor {\n const acc = new PlTreeNodeAccessor(\n accessorData,\n tree,\n tree.get(instanceData.ctx.watcher, rid),\n instanceData,\n );\n\n if (!ops.ignoreError) {\n const err = acc.getError();\n if (err !== undefined)\n throw parsePlError(notEmpty(err.getDataAsString()), acc.id, acc.resourceType);\n }\n\n if (\n ops.assertResourceType !== undefined\n && (Array.isArray(ops.assertResourceType)\n ? ops.assertResourceType.findIndex((rt) => resourceTypesEqual(rt, acc.resourceType)) === -1\n : !resourceTypesEqual(ops.assertResourceType, acc.resourceType))\n )\n throw new Error(\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n `wrong resource type ${resourceTypeToString(acc.resourceType)} but expected ${ops.assertResourceType}`,\n );\n\n return acc;\n}\n\nexport class PlTreeEntryAccessor {\n private readonly __pl_tree_type_marker__ = 'PlTreeEntryAccessor';\n\n constructor(\n private readonly accessorData: TreeAccessorData,\n private readonly tree: PlTreeState,\n private readonly rid: ResourceId,\n private readonly instanceData: TreeAccessorInstanceData,\n ) {}\n\n node(ops: ResourceTraversalOps = {}): PlTreeNodeAccessor {\n this.instanceData.guard();\n\n // this is the only entry point to acquire a PlTreeNodeAccessor,\n // so this is the only point where we should attach the hooks\n if (this.accessorData.hooks !== undefined)\n this.instanceData.ctx.attacheHooks(this.accessorData.hooks);\n\n return getResourceFromTree(this.accessorData, this.tree, this.instanceData, this.rid, ops);\n }\n}\n\n/**\n * Helper type to simplify implementation of APIs requiring type information.\n * */\nexport type ResourceInfo = {\n readonly id: ResourceId;\n readonly type: ResourceType;\n};\n\n/**\n * Can be called only when a ctx is provided, because pl tree entry is a computable entity.\n * @deprecated\n * */\nexport function treeEntryToResourceInfo(res: PlTreeEntry | ResourceInfo, ctx: ComputableCtx) {\n if (res instanceof PlTreeEntry) return ctx.accessor(res).node().resourceInfo;\n\n return res;\n}\n\n/**\n * API contracts:\n * - API never return {@link NullResourceId}, absence of link is always modeled as `undefined`\n *\n * Important: never store instances of this class, always get fresh instance from {@link PlTreeState} accessor.\n * */\nexport class PlTreeNodeAccessor {\n private readonly __pl_tree_type_marker__ = 'PlTreeNodeAccessor';\n\n constructor(\n private readonly accessorData: TreeAccessorData,\n private readonly tree: PlTreeState,\n private readonly resource: PlTreeResource,\n private readonly instanceData: TreeAccessorInstanceData,\n ) {}\n\n public get id(): ResourceId {\n this.instanceData.guard();\n return this.resource.id;\n }\n\n public get originalId(): OptionalResourceId {\n this.instanceData.guard();\n return this.resource.originalResourceId;\n }\n\n public get resourceType(): ResourceType {\n this.instanceData.guard();\n return this.resource.type;\n }\n\n public get resourceInfo(): ResourceInfo {\n return { id: this.id, type: this.resourceType };\n }\n\n private getResourceFromTree(rid: ResourceId, ops: ResourceTraversalOps): PlTreeNodeAccessor {\n return getResourceFromTree(this.accessorData, this.tree, this.instanceData, rid, ops);\n }\n\n public traverse(\n ...steps: [\n Omit<FieldTraversalStep, 'errorIfFieldNotSet'> & {\n errorIfFieldNotSet: true;\n },\n ]\n ): PlTreeNodeAccessor;\n public traverse(...steps: (FieldTraversalStep | string)[]): PlTreeNodeAccessor | undefined;\n public traverse(...steps: (FieldTraversalStep | string)[]): PlTreeNodeAccessor | undefined {\n return this.traverseWithCommon({}, ...steps);\n }\n\n public traverseOrError(\n ...steps: [\n Omit<FieldTraversalStep, 'errorIfFieldNotSet'> & {\n errorIfFieldNotSet: true;\n },\n ]\n ): ValueOrError<PlTreeNodeAccessor, Error>;\n public traverseOrError(\n ...steps: (FieldTraversalStep | string)[]\n ): ValueOrError<PlTreeNodeAccessor, Error> | undefined;\n public traverseOrError(\n ...steps: (FieldTraversalStep | string)[]\n ): ValueOrError<PlTreeNodeAccessor, Error> | undefined {\n return this.traverseOrErrorWithCommon({}, ...steps);\n }\n\n public traverseWithCommon(\n commonOptions: CommonFieldTraverseOps,\n ...steps: (FieldTraversalStep | string)[]\n ): PlTreeNodeAccessor | undefined {\n const result = this.traverseOrErrorWithCommon(commonOptions, ...steps);\n if (result === undefined) return undefined;\n\n if (!result.ok) throw result.error;\n return result.value;\n }\n\n public traverseOrErrorWithCommon(\n commonOptions: CommonFieldTraverseOps,\n ...steps: (FieldTraversalStep | string)[]\n ): ValueOrError<PlTreeNodeAccessor, Error> | undefined {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let current: PlTreeNodeAccessor = this;\n\n for (const _step of steps) {\n const step: FieldTraversalStep\n = typeof _step === 'string'\n ? {\n ...commonOptions,\n field: _step,\n }\n : { ...commonOptions, ..._step };\n\n const next = current.getField(_step);\n\n if (next === undefined) return undefined;\n\n if (step.pureFieldErrorToUndefined && next.value === undefined && next.error !== undefined)\n return undefined;\n\n if ((!step.ignoreError || next.value === undefined) && next.error !== undefined)\n return {\n ok: false,\n\n // FIXME: in next tickets we'll allow Errors to be thrown.\n error: parsePlError(\n notEmpty(next.error.getDataAsString()),\n current.id, current.resourceType, step.field,\n ),\n };\n\n if (next.value === undefined) {\n if (step.errorIfFieldNotSet)\n return {\n ok: false,\n error: new Error(`field have no assigned value ${step.field} of ${resourceIdToString(current.id)}`),\n };\n // existing but unpopulated field is unstable because it must be resolved at some point\n this.onUnstableLambda('unpopulated_field:' + step.field);\n return undefined;\n }\n\n current = next.value;\n }\n return { ok: true, value: current };\n }\n\n private readonly onUnstableLambda = (marker: string) => {\n this.instanceData.ctx.markUnstable(marker);\n };\n\n public getField(\n _step:\n | (Omit<GetFieldStep, 'errorIfFieldNotFound'> & { errorIfFieldNotFound: true })\n | (Omit<GetFieldStep, 'errorIfFieldNotSet'> & { errorIfFieldNotSet: true })\n ): ValueAndError<PlTreeNodeAccessor>;\n public getField(_step: GetFieldStep | string): ValueAndError<PlTreeNodeAccessor> | undefined;\n public getField(_step: GetFieldStep | string): ValueAndError<PlTreeNodeAccessor> | undefined {\n this.instanceData.guard();\n const step: GetFieldStep = typeof _step === 'string' ? { field: _step } : _step;\n\n const ve = this.resource.getField(this.instanceData.ctx.watcher, step, this.onUnstableLambda);\n\n if (ve === undefined) return undefined;\n\n return mapValueAndError(ve, (rid) => this.getResourceFromTree(rid, { ignoreError: true }));\n }\n\n public getInputsLocked(): boolean {\n this.instanceData.guard();\n const result = this.resource.getInputsLocked(this.instanceData.ctx.watcher);\n if (!result) this.instanceData.ctx.markUnstable('inputs_unlocked:' + this.resourceType.name);\n return result;\n }\n\n public getOutputsLocked(): boolean {\n this.instanceData.guard();\n const result = this.resource.getOutputsLocked(this.instanceData.ctx.watcher);\n if (!result) this.instanceData.ctx.markUnstable('outputs_unlocked:' + this.resourceType.name);\n return result;\n }\n\n public getIsReadyOrError(): boolean {\n this.instanceData.guard();\n const result = this.resource.getIsReadyOrError(this.instanceData.ctx.watcher);\n if (!result) this.instanceData.ctx.markUnstable('not_ready:' + this.resourceType.name);\n return result;\n }\n\n public getIsFinal() {\n this.instanceData.guard();\n return this.resource.getIsFinal(this.instanceData.ctx.watcher);\n }\n\n public getError(): PlTreeNodeAccessor | undefined {\n this.instanceData.guard();\n const rid = this.resource.getError(this.instanceData.ctx.watcher);\n if (rid === undefined)\n // absence of error always considered as stable\n return undefined;\n return this.getResourceFromTree(rid, {});\n }\n\n public getData(): Uint8Array | undefined {\n return this.resource.data;\n }\n\n public getDataAsString(): string | undefined {\n return this.resource.getDataAsString();\n }\n\n public getDataAsJson<T = unknown>(): T | undefined {\n return this.resource.getDataAsJson<T>();\n }\n\n public listInputFields(): string[] {\n this.instanceData.guard();\n this.getInputsLocked(); // will set unstable if not locked\n return this.resource.listInputFields(this.instanceData.ctx.watcher);\n }\n\n public listOutputFields(): string[] {\n this.instanceData.guard();\n this.getOutputsLocked(); // will set unstable if not locked\n return this.resource.listOutputFields(this.instanceData.ctx.watcher);\n }\n\n public listDynamicFields(): string[] {\n this.instanceData.guard();\n return this.resource.listDynamicFields(this.instanceData.ctx.watcher);\n }\n\n public getKeyValue(key: string, unstableIfNotFound: boolean = false): Uint8Array | undefined {\n this.instanceData.guard();\n const result = this.resource.getKeyValue(this.instanceData.ctx.watcher, key);\n if (result === undefined && unstableIfNotFound)\n this.instanceData.ctx.markUnstable('key_not_found_b:' + key);\n return result;\n }\n\n /** @deprecated */\n public getKeyValueString(key: string): string | undefined {\n return this.getKeyValueAsString(key);\n }\n\n public getKeyValueAsString(key: string, unstableIfNotFound: boolean = false): string | undefined {\n this.instanceData.guard();\n const result = this.resource.getKeyValueString(this.instanceData.ctx.watcher, key);\n if (result === undefined && unstableIfNotFound)\n this.instanceData.ctx.markUnstable('key_not_found_s:' + key);\n return result;\n }\n\n public getKeyValueAsJson<T = unknown>(\n key: string,\n unstableIfNotFound: boolean = false,\n ): T | undefined {\n const result = this.resource.getKeyValueAsJson<T>(this.instanceData.ctx.watcher, key);\n if (result === undefined) {\n if (unstableIfNotFound) this.instanceData.ctx.markUnstable('key_not_found_j:' + key);\n return undefined;\n }\n return result;\n }\n\n /**\n * Can be used to pass a higher level accessor that will wrap the resource and throw its\n * errors on node resolution.\n * */\n public toEntryAccessor(): PlTreeEntryAccessor {\n return new PlTreeEntryAccessor(this.accessorData, this.tree, this.id, this.instanceData);\n }\n\n /** Can be passed to nested computable. */\n public persist(): PlTreeEntry {\n return new PlTreeEntry(this.accessorData, this.resource.id);\n }\n}\n"],"names":["resourceIdToString","parsePlError","notEmpty","resourceTypesEqual","resourceTypeToString","mapValueAndError"],"mappings":"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"}
1
+ {"version":3,"file":"accessors.cjs","sources":["../src/accessors.ts"],"sourcesContent":["import type { PlTreeResource, PlTreeState } from \"./state\";\nimport type {\n AccessorProvider,\n ComputableCtx,\n ComputableHooks,\n UsageGuard,\n} from \"@milaboratories/computable\";\nimport type { ResourceId, ResourceType, OptionalResourceId } from \"@milaboratories/pl-client\";\nimport {\n resourceIdToString,\n resourceTypesEqual,\n resourceTypeToString,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n NullResourceId,\n} from \"@milaboratories/pl-client\";\nimport type { ValueAndError } from \"./value_and_error\";\nimport { mapValueAndError } from \"./value_and_error\";\nimport type {\n CommonFieldTraverseOps,\n FieldTraversalStep,\n GetFieldStep,\n ResourceTraversalOps,\n} from \"./traversal_ops\";\nimport type { ValueOrError } from \"./value_or_error\";\nimport { parsePlError } from \"@milaboratories/pl-errors\";\nimport { notEmpty } from \"@milaboratories/ts-helpers\";\n/** Error encountered during traversal in field or resource. */\nexport class PlError extends Error {\n constructor(message: string) {\n super(message);\n }\n}\n\nexport type TreeAccessorData = {\n readonly treeProvider: () => PlTreeState;\n readonly hooks?: ComputableHooks;\n};\n\nexport type TreeAccessorInstanceData = {\n readonly guard: UsageGuard;\n readonly ctx: ComputableCtx;\n};\n\nexport function isPlTreeEntry(obj: unknown): obj is PlTreeEntry {\n return (\n typeof obj === \"object\" &&\n obj !== null &&\n (obj as any)[\"__pl_tree_type_marker__\"] === \"PlTreeEntry\"\n );\n}\n\nexport function isPlTreeEntryAccessor(obj: unknown): obj is PlTreeEntryAccessor {\n return (\n typeof obj === \"object\" &&\n obj !== null &&\n (obj as any)[\"__pl_tree_type_marker__\"] === \"PlTreeEntryAccessor\"\n );\n}\n\nexport function isPlTreeNodeAccessor(obj: unknown): obj is PlTreeNodeAccessor {\n return (\n typeof obj === \"object\" &&\n obj !== null &&\n (obj as any)[\"__pl_tree_type_marker__\"] === \"PlTreeNodeAccessor\"\n );\n}\n\n/** Main entry point for using PlTree in reactive setting */\nexport class PlTreeEntry implements AccessorProvider<PlTreeEntryAccessor> {\n private readonly __pl_tree_type_marker__ = \"PlTreeEntry\";\n\n constructor(\n private readonly accessorData: TreeAccessorData,\n public readonly rid: ResourceId,\n ) {}\n\n public createAccessor(ctx: ComputableCtx, guard: UsageGuard): PlTreeEntryAccessor {\n return new PlTreeEntryAccessor(this.accessorData, this.accessorData.treeProvider(), this.rid, {\n ctx,\n guard,\n });\n }\n\n public toJSON(): string {\n return this.toString();\n }\n\n public toString(): string {\n return `[ENTRY:${resourceIdToString(this.rid)}]`;\n }\n}\n\nfunction getResourceFromTree(\n accessorData: TreeAccessorData,\n tree: PlTreeState,\n instanceData: TreeAccessorInstanceData,\n rid: ResourceId,\n ops: ResourceTraversalOps,\n): PlTreeNodeAccessor {\n const acc = new PlTreeNodeAccessor(\n accessorData,\n tree,\n tree.get(instanceData.ctx.watcher, rid),\n instanceData,\n );\n\n if (!ops.ignoreError) {\n const err = acc.getError();\n if (err !== undefined)\n throw parsePlError(notEmpty(err.getDataAsString()), acc.id, acc.resourceType);\n }\n\n if (\n ops.assertResourceType !== undefined &&\n (Array.isArray(ops.assertResourceType)\n ? ops.assertResourceType.findIndex((rt) => resourceTypesEqual(rt, acc.resourceType)) === -1\n : !resourceTypesEqual(ops.assertResourceType, acc.resourceType))\n )\n throw new Error(\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n `wrong resource type ${resourceTypeToString(acc.resourceType)} but expected ${ops.assertResourceType}`,\n );\n\n return acc;\n}\n\nexport class PlTreeEntryAccessor {\n private readonly __pl_tree_type_marker__ = \"PlTreeEntryAccessor\";\n\n constructor(\n private readonly accessorData: TreeAccessorData,\n private readonly tree: PlTreeState,\n private readonly rid: ResourceId,\n private readonly instanceData: TreeAccessorInstanceData,\n ) {}\n\n node(ops: ResourceTraversalOps = {}): PlTreeNodeAccessor {\n this.instanceData.guard();\n\n // this is the only entry point to acquire a PlTreeNodeAccessor,\n // so this is the only point where we should attach the hooks\n if (this.accessorData.hooks !== undefined)\n this.instanceData.ctx.attacheHooks(this.accessorData.hooks);\n\n return getResourceFromTree(this.accessorData, this.tree, this.instanceData, this.rid, ops);\n }\n}\n\n/**\n * Helper type to simplify implementation of APIs requiring type information.\n * */\nexport type ResourceInfo = {\n readonly id: ResourceId;\n readonly type: ResourceType;\n};\n\n/**\n * Can be called only when a ctx is provided, because pl tree entry is a computable entity.\n * @deprecated\n * */\nexport function treeEntryToResourceInfo(res: PlTreeEntry | ResourceInfo, ctx: ComputableCtx) {\n if (res instanceof PlTreeEntry) return ctx.accessor(res).node().resourceInfo;\n\n return res;\n}\n\n/**\n * API contracts:\n * - API never return {@link NullResourceId}, absence of link is always modeled as `undefined`\n *\n * Important: never store instances of this class, always get fresh instance from {@link PlTreeState} accessor.\n * */\nexport class PlTreeNodeAccessor {\n private readonly __pl_tree_type_marker__ = \"PlTreeNodeAccessor\";\n\n constructor(\n private readonly accessorData: TreeAccessorData,\n private readonly tree: PlTreeState,\n private readonly resource: PlTreeResource,\n private readonly instanceData: TreeAccessorInstanceData,\n ) {}\n\n public get id(): ResourceId {\n this.instanceData.guard();\n return this.resource.id;\n }\n\n public get originalId(): OptionalResourceId {\n this.instanceData.guard();\n return this.resource.originalResourceId;\n }\n\n public get resourceType(): ResourceType {\n this.instanceData.guard();\n return this.resource.type;\n }\n\n public get resourceInfo(): ResourceInfo {\n return { id: this.id, type: this.resourceType };\n }\n\n private getResourceFromTree(rid: ResourceId, ops: ResourceTraversalOps): PlTreeNodeAccessor {\n return getResourceFromTree(this.accessorData, this.tree, this.instanceData, rid, ops);\n }\n\n public traverse(\n ...steps: [\n Omit<FieldTraversalStep, \"errorIfFieldNotSet\"> & {\n errorIfFieldNotSet: true;\n },\n ]\n ): PlTreeNodeAccessor;\n public traverse(...steps: (FieldTraversalStep | string)[]): PlTreeNodeAccessor | undefined;\n public traverse(...steps: (FieldTraversalStep | string)[]): PlTreeNodeAccessor | undefined {\n return this.traverseWithCommon({}, ...steps);\n }\n\n public traverseOrError(\n ...steps: [\n Omit<FieldTraversalStep, \"errorIfFieldNotSet\"> & {\n errorIfFieldNotSet: true;\n },\n ]\n ): ValueOrError<PlTreeNodeAccessor, Error>;\n public traverseOrError(\n ...steps: (FieldTraversalStep | string)[]\n ): ValueOrError<PlTreeNodeAccessor, Error> | undefined;\n public traverseOrError(\n ...steps: (FieldTraversalStep | string)[]\n ): ValueOrError<PlTreeNodeAccessor, Error> | undefined {\n return this.traverseOrErrorWithCommon({}, ...steps);\n }\n\n public traverseWithCommon(\n commonOptions: CommonFieldTraverseOps,\n ...steps: (FieldTraversalStep | string)[]\n ): PlTreeNodeAccessor | undefined {\n const result = this.traverseOrErrorWithCommon(commonOptions, ...steps);\n if (result === undefined) return undefined;\n\n if (!result.ok) throw result.error;\n return result.value;\n }\n\n public traverseOrErrorWithCommon(\n commonOptions: CommonFieldTraverseOps,\n ...steps: (FieldTraversalStep | string)[]\n ): ValueOrError<PlTreeNodeAccessor, Error> | undefined {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let current: PlTreeNodeAccessor = this;\n\n for (const _step of steps) {\n const step: FieldTraversalStep =\n typeof _step === \"string\"\n ? {\n ...commonOptions,\n field: _step,\n }\n : { ...commonOptions, ..._step };\n\n const next = current.getField(_step);\n\n if (next === undefined) return undefined;\n\n if (step.pureFieldErrorToUndefined && next.value === undefined && next.error !== undefined)\n return undefined;\n\n if ((!step.ignoreError || next.value === undefined) && next.error !== undefined)\n return {\n ok: false,\n\n // FIXME: in next tickets we'll allow Errors to be thrown.\n error: parsePlError(\n notEmpty(next.error.getDataAsString()),\n current.id,\n current.resourceType,\n step.field,\n ),\n };\n\n if (next.value === undefined) {\n if (step.errorIfFieldNotSet)\n return {\n ok: false,\n error: new Error(\n `field have no assigned value ${step.field} of ${resourceIdToString(current.id)}`,\n ),\n };\n // existing but unpopulated field is unstable because it must be resolved at some point\n this.onUnstableLambda(\"unpopulated_field:\" + step.field);\n return undefined;\n }\n\n current = next.value;\n }\n return { ok: true, value: current };\n }\n\n private readonly onUnstableLambda = (marker: string) => {\n this.instanceData.ctx.markUnstable(marker);\n };\n\n public getField(\n _step:\n | (Omit<GetFieldStep, \"errorIfFieldNotFound\"> & { errorIfFieldNotFound: true })\n | (Omit<GetFieldStep, \"errorIfFieldNotSet\"> & { errorIfFieldNotSet: true }),\n ): ValueAndError<PlTreeNodeAccessor>;\n public getField(_step: GetFieldStep | string): ValueAndError<PlTreeNodeAccessor> | undefined;\n public getField(_step: GetFieldStep | string): ValueAndError<PlTreeNodeAccessor> | undefined {\n this.instanceData.guard();\n const step: GetFieldStep = typeof _step === \"string\" ? { field: _step } : _step;\n\n const ve = this.resource.getField(this.instanceData.ctx.watcher, step, this.onUnstableLambda);\n\n if (ve === undefined) return undefined;\n\n return mapValueAndError(ve, (rid) => this.getResourceFromTree(rid, { ignoreError: true }));\n }\n\n public getInputsLocked(): boolean {\n this.instanceData.guard();\n const result = this.resource.getInputsLocked(this.instanceData.ctx.watcher);\n if (!result) this.instanceData.ctx.markUnstable(\"inputs_unlocked:\" + this.resourceType.name);\n return result;\n }\n\n public getOutputsLocked(): boolean {\n this.instanceData.guard();\n const result = this.resource.getOutputsLocked(this.instanceData.ctx.watcher);\n if (!result) this.instanceData.ctx.markUnstable(\"outputs_unlocked:\" + this.resourceType.name);\n return result;\n }\n\n public getIsReadyOrError(): boolean {\n this.instanceData.guard();\n const result = this.resource.getIsReadyOrError(this.instanceData.ctx.watcher);\n if (!result) this.instanceData.ctx.markUnstable(\"not_ready:\" + this.resourceType.name);\n return result;\n }\n\n public getIsFinal() {\n this.instanceData.guard();\n return this.resource.getIsFinal(this.instanceData.ctx.watcher);\n }\n\n public getError(): PlTreeNodeAccessor | undefined {\n this.instanceData.guard();\n const rid = this.resource.getError(this.instanceData.ctx.watcher);\n if (rid === undefined)\n // absence of error always considered as stable\n return undefined;\n return this.getResourceFromTree(rid, {});\n }\n\n public getData(): Uint8Array | undefined {\n return this.resource.data;\n }\n\n public getDataAsString(): string | undefined {\n return this.resource.getDataAsString();\n }\n\n public getDataAsJson<T = unknown>(): T | undefined {\n return this.resource.getDataAsJson<T>();\n }\n\n public listInputFields(): string[] {\n this.instanceData.guard();\n this.getInputsLocked(); // will set unstable if not locked\n return this.resource.listInputFields(this.instanceData.ctx.watcher);\n }\n\n public listOutputFields(): string[] {\n this.instanceData.guard();\n this.getOutputsLocked(); // will set unstable if not locked\n return this.resource.listOutputFields(this.instanceData.ctx.watcher);\n }\n\n public listDynamicFields(): string[] {\n this.instanceData.guard();\n return this.resource.listDynamicFields(this.instanceData.ctx.watcher);\n }\n\n public getKeyValue(key: string, unstableIfNotFound: boolean = false): Uint8Array | undefined {\n this.instanceData.guard();\n const result = this.resource.getKeyValue(this.instanceData.ctx.watcher, key);\n if (result === undefined && unstableIfNotFound)\n this.instanceData.ctx.markUnstable(\"key_not_found_b:\" + key);\n return result;\n }\n\n /** @deprecated */\n public getKeyValueString(key: string): string | undefined {\n return this.getKeyValueAsString(key);\n }\n\n public getKeyValueAsString(key: string, unstableIfNotFound: boolean = false): string | undefined {\n this.instanceData.guard();\n const result = this.resource.getKeyValueString(this.instanceData.ctx.watcher, key);\n if (result === undefined && unstableIfNotFound)\n this.instanceData.ctx.markUnstable(\"key_not_found_s:\" + key);\n return result;\n }\n\n public getKeyValueAsJson<T = unknown>(\n key: string,\n unstableIfNotFound: boolean = false,\n ): T | undefined {\n const result = this.resource.getKeyValueAsJson<T>(this.instanceData.ctx.watcher, key);\n if (result === undefined) {\n if (unstableIfNotFound) this.instanceData.ctx.markUnstable(\"key_not_found_j:\" + key);\n return undefined;\n }\n return result;\n }\n\n /**\n * Can be used to pass a higher level accessor that will wrap the resource and throw its\n * errors on node resolution.\n * */\n public toEntryAccessor(): PlTreeEntryAccessor {\n return new PlTreeEntryAccessor(this.accessorData, this.tree, this.id, this.instanceData);\n }\n\n /** Can be passed to nested computable. */\n public persist(): PlTreeEntry {\n return new PlTreeEntry(this.accessorData, this.resource.id);\n }\n}\n"],"names":["resourceIdToString","parsePlError","notEmpty","resourceTypesEqual","resourceTypeToString","mapValueAndError"],"mappings":";;;;;;;AA0BA;AACM,MAAO,OAAQ,SAAQ,KAAK,CAAA;AAChC,IAAA,WAAA,CAAY,OAAe,EAAA;QACzB,KAAK,CAAC,OAAO,CAAC;IAChB;AACD;AAYK,SAAU,aAAa,CAAC,GAAY,EAAA;AACxC,IAAA,QACE,OAAO,GAAG,KAAK,QAAQ;AACvB,QAAA,GAAG,KAAK,IAAI;AACX,QAAA,GAAW,CAAC,yBAAyB,CAAC,KAAK,aAAa;AAE7D;AAEM,SAAU,qBAAqB,CAAC,GAAY,EAAA;AAChD,IAAA,QACE,OAAO,GAAG,KAAK,QAAQ;AACvB,QAAA,GAAG,KAAK,IAAI;AACX,QAAA,GAAW,CAAC,yBAAyB,CAAC,KAAK,qBAAqB;AAErE;AAEM,SAAU,oBAAoB,CAAC,GAAY,EAAA;AAC/C,IAAA,QACE,OAAO,GAAG,KAAK,QAAQ;AACvB,QAAA,GAAG,KAAK,IAAI;AACX,QAAA,GAAW,CAAC,yBAAyB,CAAC,KAAK,oBAAoB;AAEpE;AAEA;MACa,WAAW,CAAA;AAIH,IAAA,YAAA;AACD,IAAA,GAAA;IAJD,uBAAuB,GAAG,aAAa;IAExD,WAAA,CACmB,YAA8B,EAC/B,GAAe,EAAA;QADd,IAAA,CAAA,YAAY,GAAZ,YAAY;QACb,IAAA,CAAA,GAAG,GAAH,GAAG;IAClB;IAEI,cAAc,CAAC,GAAkB,EAAE,KAAiB,EAAA;AACzD,QAAA,OAAO,IAAI,mBAAmB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE;YAC5F,GAAG;YACH,KAAK;AACN,SAAA,CAAC;IACJ;IAEO,MAAM,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE;IACxB;IAEO,QAAQ,GAAA;QACb,OAAO,CAAA,OAAA,EAAUA,2BAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;IAClD;AACD;AAED,SAAS,mBAAmB,CAC1B,YAA8B,EAC9B,IAAiB,EACjB,YAAsC,EACtC,GAAe,EACf,GAAyB,EAAA;IAEzB,MAAM,GAAG,GAAG,IAAI,kBAAkB,CAChC,YAAY,EACZ,IAAI,EACJ,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,EACvC,YAAY,CACb;AAED,IAAA,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE;AACpB,QAAA,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,EAAE;QAC1B,IAAI,GAAG,KAAK,SAAS;AACnB,YAAA,MAAMC,qBAAY,CAACC,kBAAQ,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,YAAY,CAAC;IACjF;AAEA,IAAA,IACE,GAAG,CAAC,kBAAkB,KAAK,SAAS;AACpC,SAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB;cACjC,GAAG,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,EAAE,KAAKC,2BAAkB,CAAC,EAAE,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,KAAK;AACzF,cAAE,CAACA,2BAAkB,CAAC,GAAG,CAAC,kBAAkB,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;AAElE,QAAA,MAAM,IAAI,KAAK;;AAEb,QAAA,CAAA,oBAAA,EAAuBC,6BAAoB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA,cAAA,EAAiB,GAAG,CAAC,kBAAkB,CAAA,CAAE,CACvG;AAEH,IAAA,OAAO,GAAG;AACZ;MAEa,mBAAmB,CAAA;AAIX,IAAA,YAAA;AACA,IAAA,IAAA;AACA,IAAA,GAAA;AACA,IAAA,YAAA;IANF,uBAAuB,GAAG,qBAAqB;AAEhE,IAAA,WAAA,CACmB,YAA8B,EAC9B,IAAiB,EACjB,GAAe,EACf,YAAsC,EAAA;QAHtC,IAAA,CAAA,YAAY,GAAZ,YAAY;QACZ,IAAA,CAAA,IAAI,GAAJ,IAAI;QACJ,IAAA,CAAA,GAAG,GAAH,GAAG;QACH,IAAA,CAAA,YAAY,GAAZ,YAAY;IAC5B;IAEH,IAAI,CAAC,MAA4B,EAAE,EAAA;AACjC,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;;;AAIzB,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,KAAK,SAAS;AACvC,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;QAE7D,OAAO,mBAAmB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC;IAC5F;AACD;AAUD;;;AAGK;AACC,SAAU,uBAAuB,CAAC,GAA+B,EAAE,GAAkB,EAAA;IACzF,IAAI,GAAG,YAAY,WAAW;QAAE,OAAO,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,YAAY;AAE5E,IAAA,OAAO,GAAG;AACZ;AAEA;;;;;AAKK;MACQ,kBAAkB,CAAA;AAIV,IAAA,YAAA;AACA,IAAA,IAAA;AACA,IAAA,QAAA;AACA,IAAA,YAAA;IANF,uBAAuB,GAAG,oBAAoB;AAE/D,IAAA,WAAA,CACmB,YAA8B,EAC9B,IAAiB,EACjB,QAAwB,EACxB,YAAsC,EAAA;QAHtC,IAAA,CAAA,YAAY,GAAZ,YAAY;QACZ,IAAA,CAAA,IAAI,GAAJ,IAAI;QACJ,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,YAAY,GAAZ,YAAY;IAC5B;AAEH,IAAA,IAAW,EAAE,GAAA;AACX,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;AACzB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE;IACzB;AAEA,IAAA,IAAW,UAAU,GAAA;AACnB,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;AACzB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,kBAAkB;IACzC;AAEA,IAAA,IAAW,YAAY,GAAA;AACrB,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;AACzB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI;IAC3B;AAEA,IAAA,IAAW,YAAY,GAAA;AACrB,QAAA,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE;IACjD;IAEQ,mBAAmB,CAAC,GAAe,EAAE,GAAyB,EAAA;AACpE,QAAA,OAAO,mBAAmB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE,GAAG,CAAC;IACvF;IAUO,QAAQ,CAAC,GAAG,KAAsC,EAAA;QACvD,OAAO,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC;IAC9C;IAYO,eAAe,CACpB,GAAG,KAAsC,EAAA;QAEzC,OAAO,IAAI,CAAC,yBAAyB,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC;IACrD;AAEO,IAAA,kBAAkB,CACvB,aAAqC,EACrC,GAAG,KAAsC,EAAA;QAEzC,MAAM,MAAM,GAAG,IAAI,CAAC,yBAAyB,CAAC,aAAa,EAAE,GAAG,KAAK,CAAC;QACtE,IAAI,MAAM,KAAK,SAAS;AAAE,YAAA,OAAO,SAAS;QAE1C,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,MAAM,MAAM,CAAC,KAAK;QAClC,OAAO,MAAM,CAAC,KAAK;IACrB;AAEO,IAAA,yBAAyB,CAC9B,aAAqC,EACrC,GAAG,KAAsC,EAAA;;QAGzC,IAAI,OAAO,GAAuB,IAAI;AAEtC,QAAA,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE;AACzB,YAAA,MAAM,IAAI,GACR,OAAO,KAAK,KAAK;AACf,kBAAE;AACE,oBAAA,GAAG,aAAa;AAChB,oBAAA,KAAK,EAAE,KAAK;AACb;kBACD,EAAE,GAAG,aAAa,EAAE,GAAG,KAAK,EAAE;YAEpC,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;YAEpC,IAAI,IAAI,KAAK,SAAS;AAAE,gBAAA,OAAO,SAAS;AAExC,YAAA,IAAI,IAAI,CAAC,yBAAyB,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;AACxF,gBAAA,OAAO,SAAS;AAElB,YAAA,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,KAAK,IAAI,CAAC,KAAK,KAAK,SAAS;gBAC7E,OAAO;AACL,oBAAA,EAAE,EAAE,KAAK;;oBAGT,KAAK,EAAEH,qBAAY,CACjBC,kBAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,EACtC,OAAO,CAAC,EAAE,EACV,OAAO,CAAC,YAAY,EACpB,IAAI,CAAC,KAAK,CACX;iBACF;AAEH,YAAA,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE;gBAC5B,IAAI,IAAI,CAAC,kBAAkB;oBACzB,OAAO;AACL,wBAAA,EAAE,EAAE,KAAK;AACT,wBAAA,KAAK,EAAE,IAAI,KAAK,CACd,CAAA,6BAAA,EAAgC,IAAI,CAAC,KAAK,CAAA,IAAA,EAAOF,2BAAkB,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAClF;qBACF;;gBAEH,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC;AACxD,gBAAA,OAAO,SAAS;YAClB;AAEA,YAAA,OAAO,GAAG,IAAI,CAAC,KAAK;QACtB;QACA,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE;IACrC;AAEiB,IAAA,gBAAgB,GAAG,CAAC,MAAc,KAAI;QACrD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC;AAC5C,IAAA,CAAC;AAQM,IAAA,QAAQ,CAAC,KAA4B,EAAA;AAC1C,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;AACzB,QAAA,MAAM,IAAI,GAAiB,OAAO,KAAK,KAAK,QAAQ,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,KAAK;QAE/E,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC;QAE7F,IAAI,EAAE,KAAK,SAAS;AAAE,YAAA,OAAO,SAAS;QAEtC,OAAOK,gCAAgB,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5F;IAEO,eAAe,GAAA;AACpB,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;AACzB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC;AAC3E,QAAA,IAAI,CAAC,MAAM;AAAE,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,kBAAkB,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AAC5F,QAAA,OAAO,MAAM;IACf;IAEO,gBAAgB,GAAA;AACrB,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;AACzB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC;AAC5E,QAAA,IAAI,CAAC,MAAM;AAAE,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,mBAAmB,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AAC7F,QAAA,OAAO,MAAM;IACf;IAEO,iBAAiB,GAAA;AACtB,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;AACzB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC;AAC7E,QAAA,IAAI,CAAC,MAAM;AAAE,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AACtF,QAAA,OAAO,MAAM;IACf;IAEO,UAAU,GAAA;AACf,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;AACzB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC;IAChE;IAEO,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;AACzB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC;QACjE,IAAI,GAAG,KAAK,SAAS;;AAEnB,YAAA,OAAO,SAAS;QAClB,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,EAAE,CAAC;IAC1C;IAEO,OAAO,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI;IAC3B;IAEO,eAAe,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE;IACxC;IAEO,aAAa,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAK;IACzC;IAEO,eAAe,GAAA;AACpB,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;AACzB,QAAA,IAAI,CAAC,eAAe,EAAE,CAAC;AACvB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC;IACrE;IAEO,gBAAgB,GAAA;AACrB,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;AACzB,QAAA,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACxB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC;IACtE;IAEO,iBAAiB,GAAA;AACtB,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;AACzB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC;IACvE;AAEO,IAAA,WAAW,CAAC,GAAW,EAAE,kBAAA,GAA8B,KAAK,EAAA;AACjE,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;AACzB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC;AAC5E,QAAA,IAAI,MAAM,KAAK,SAAS,IAAI,kBAAkB;YAC5C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,kBAAkB,GAAG,GAAG,CAAC;AAC9D,QAAA,OAAO,MAAM;IACf;;AAGO,IAAA,iBAAiB,CAAC,GAAW,EAAA;AAClC,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC;IACtC;AAEO,IAAA,mBAAmB,CAAC,GAAW,EAAE,kBAAA,GAA8B,KAAK,EAAA;AACzE,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;AACzB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC;AAClF,QAAA,IAAI,MAAM,KAAK,SAAS,IAAI,kBAAkB;YAC5C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,kBAAkB,GAAG,GAAG,CAAC;AAC9D,QAAA,OAAO,MAAM;IACf;AAEO,IAAA,iBAAiB,CACtB,GAAW,EACX,kBAAA,GAA8B,KAAK,EAAA;AAEnC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC;AACrF,QAAA,IAAI,MAAM,KAAK,SAAS,EAAE;AACxB,YAAA,IAAI,kBAAkB;gBAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,kBAAkB,GAAG,GAAG,CAAC;AACpF,YAAA,OAAO,SAAS;QAClB;AACA,QAAA,OAAO,MAAM;IACf;AAEA;;;AAGK;IACE,eAAe,GAAA;AACpB,QAAA,OAAO,IAAI,mBAAmB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC;IAC1F;;IAGO,OAAO,GAAA;AACZ,QAAA,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC7D;AACD;;;;;;;;;;;"}
@@ -1,9 +1,9 @@
1
- import type { PlTreeResource, PlTreeState } from './state';
2
- import type { AccessorProvider, ComputableCtx, ComputableHooks, UsageGuard } from '@milaboratories/computable';
3
- import type { ResourceId, ResourceType, OptionalResourceId } from '@milaboratories/pl-client';
4
- import type { ValueAndError } from './value_and_error';
5
- import type { CommonFieldTraverseOps, FieldTraversalStep, GetFieldStep, ResourceTraversalOps } from './traversal_ops';
6
- import type { ValueOrError } from './value_or_error';
1
+ import type { PlTreeResource, PlTreeState } from "./state";
2
+ import type { AccessorProvider, ComputableCtx, ComputableHooks, UsageGuard } from "@milaboratories/computable";
3
+ import type { ResourceId, ResourceType, OptionalResourceId } from "@milaboratories/pl-client";
4
+ import type { ValueAndError } from "./value_and_error";
5
+ import type { CommonFieldTraverseOps, FieldTraversalStep, GetFieldStep, ResourceTraversalOps } from "./traversal_ops";
6
+ import type { ValueOrError } from "./value_or_error";
7
7
  /** Error encountered during traversal in field or resource. */
8
8
  export declare class PlError extends Error {
9
9
  constructor(message: string);
@@ -69,13 +69,13 @@ export declare class PlTreeNodeAccessor {
69
69
  get resourceInfo(): ResourceInfo;
70
70
  private getResourceFromTree;
71
71
  traverse(...steps: [
72
- Omit<FieldTraversalStep, 'errorIfFieldNotSet'> & {
72
+ Omit<FieldTraversalStep, "errorIfFieldNotSet"> & {
73
73
  errorIfFieldNotSet: true;
74
74
  }
75
75
  ]): PlTreeNodeAccessor;
76
76
  traverse(...steps: (FieldTraversalStep | string)[]): PlTreeNodeAccessor | undefined;
77
77
  traverseOrError(...steps: [
78
- Omit<FieldTraversalStep, 'errorIfFieldNotSet'> & {
78
+ Omit<FieldTraversalStep, "errorIfFieldNotSet"> & {
79
79
  errorIfFieldNotSet: true;
80
80
  }
81
81
  ]): ValueOrError<PlTreeNodeAccessor, Error>;
@@ -83,9 +83,9 @@ export declare class PlTreeNodeAccessor {
83
83
  traverseWithCommon(commonOptions: CommonFieldTraverseOps, ...steps: (FieldTraversalStep | string)[]): PlTreeNodeAccessor | undefined;
84
84
  traverseOrErrorWithCommon(commonOptions: CommonFieldTraverseOps, ...steps: (FieldTraversalStep | string)[]): ValueOrError<PlTreeNodeAccessor, Error> | undefined;
85
85
  private readonly onUnstableLambda;
86
- getField(_step: (Omit<GetFieldStep, 'errorIfFieldNotFound'> & {
86
+ getField(_step: (Omit<GetFieldStep, "errorIfFieldNotFound"> & {
87
87
  errorIfFieldNotFound: true;
88
- }) | (Omit<GetFieldStep, 'errorIfFieldNotSet'> & {
88
+ }) | (Omit<GetFieldStep, "errorIfFieldNotSet"> & {
89
89
  errorIfFieldNotSet: true;
90
90
  })): ValueAndError<PlTreeNodeAccessor>;
91
91
  getField(_step: GetFieldStep | string): ValueAndError<PlTreeNodeAccessor> | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"accessors.d.ts","sourceRoot":"","sources":["../src/accessors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"accessors.d.ts","sourceRoot":"","sources":["../src/accessors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3D,OAAO,KAAK,EACV,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,UAAU,EACX,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAQ9F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,KAAK,EACV,sBAAsB,EACtB,kBAAkB,EAClB,YAAY,EACZ,oBAAoB,EACrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGrD,+DAA+D;AAC/D,qBAAa,OAAQ,SAAQ,KAAK;gBACpB,OAAO,EAAE,MAAM;CAG5B;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,WAAW,CAAC;IACzC,QAAQ,CAAC,KAAK,CAAC,EAAE,eAAe,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC;CAC7B,CAAC;AAEF,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,WAAW,CAM9D;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,mBAAmB,CAM9E;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,kBAAkB,CAM5E;AAED,4DAA4D;AAC5D,qBAAa,WAAY,YAAW,gBAAgB,CAAC,mBAAmB,CAAC;IAIrE,OAAO,CAAC,QAAQ,CAAC,YAAY;aACb,GAAG,EAAE,UAAU;IAJjC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAiB;gBAGtC,YAAY,EAAE,gBAAgB,EAC/B,GAAG,EAAE,UAAU;IAG1B,cAAc,CAAC,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,GAAG,mBAAmB;IAO1E,MAAM,IAAI,MAAM;IAIhB,QAAQ,IAAI,MAAM;CAG1B;AAoCD,qBAAa,mBAAmB;IAI5B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAN/B,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAyB;gBAG9C,YAAY,EAAE,gBAAgB,EAC9B,IAAI,EAAE,WAAW,EACjB,GAAG,EAAE,UAAU,EACf,YAAY,EAAE,wBAAwB;IAGzD,IAAI,CAAC,GAAG,GAAE,oBAAyB,GAAG,kBAAkB;CAUzD;AAED;;KAEK;AACL,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;CAC7B,CAAC;AAEF;;;KAGK;AACL,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,WAAW,GAAG,YAAY,EAAE,GAAG,EAAE,aAAa,gBAI1F;AAED;;;;;KAKK;AACL,qBAAa,kBAAkB;IAI3B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAN/B,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAwB;gBAG7C,YAAY,EAAE,gBAAgB,EAC9B,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,cAAc,EACxB,YAAY,EAAE,wBAAwB;IAGzD,IAAW,EAAE,IAAI,UAAU,CAG1B;IAED,IAAW,UAAU,IAAI,kBAAkB,CAG1C;IAED,IAAW,YAAY,IAAI,YAAY,CAGtC;IAED,IAAW,YAAY,IAAI,YAAY,CAEtC;IAED,OAAO,CAAC,mBAAmB;IAIpB,QAAQ,CACb,GAAG,KAAK,EAAE;QACR,IAAI,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,GAAG;YAC/C,kBAAkB,EAAE,IAAI,CAAC;SAC1B;KACF,GACA,kBAAkB;IACd,QAAQ,CAAC,GAAG,KAAK,EAAE,CAAC,kBAAkB,GAAG,MAAM,CAAC,EAAE,GAAG,kBAAkB,GAAG,SAAS;IAKnF,eAAe,CACpB,GAAG,KAAK,EAAE;QACR,IAAI,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,GAAG;YAC/C,kBAAkB,EAAE,IAAI,CAAC;SAC1B;KACF,GACA,YAAY,CAAC,kBAAkB,EAAE,KAAK,CAAC;IACnC,eAAe,CACpB,GAAG,KAAK,EAAE,CAAC,kBAAkB,GAAG,MAAM,CAAC,EAAE,GACxC,YAAY,CAAC,kBAAkB,EAAE,KAAK,CAAC,GAAG,SAAS;IAO/C,kBAAkB,CACvB,aAAa,EAAE,sBAAsB,EACrC,GAAG,KAAK,EAAE,CAAC,kBAAkB,GAAG,MAAM,CAAC,EAAE,GACxC,kBAAkB,GAAG,SAAS;IAQ1B,yBAAyB,CAC9B,aAAa,EAAE,sBAAsB,EACrC,GAAG,KAAK,EAAE,CAAC,kBAAkB,GAAG,MAAM,CAAC,EAAE,GACxC,YAAY,CAAC,kBAAkB,EAAE,KAAK,CAAC,GAAG,SAAS;IAmDtD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAE/B;IAEK,QAAQ,CACb,KAAK,EACD,CAAC,IAAI,CAAC,YAAY,EAAE,sBAAsB,CAAC,GAAG;QAAE,oBAAoB,EAAE,IAAI,CAAA;KAAE,CAAC,GAC7E,CAAC,IAAI,CAAC,YAAY,EAAE,oBAAoB,CAAC,GAAG;QAAE,kBAAkB,EAAE,IAAI,CAAA;KAAE,CAAC,GAC5E,aAAa,CAAC,kBAAkB,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,GAAG,aAAa,CAAC,kBAAkB,CAAC,GAAG,SAAS;IAYrF,eAAe,IAAI,OAAO;IAO1B,gBAAgB,IAAI,OAAO;IAO3B,iBAAiB,IAAI,OAAO;IAO5B,UAAU;IAKV,QAAQ,IAAI,kBAAkB,GAAG,SAAS;IAS1C,OAAO,IAAI,UAAU,GAAG,SAAS;IAIjC,eAAe,IAAI,MAAM,GAAG,SAAS;IAIrC,aAAa,CAAC,CAAC,GAAG,OAAO,KAAK,CAAC,GAAG,SAAS;IAI3C,eAAe,IAAI,MAAM,EAAE;IAM3B,gBAAgB,IAAI,MAAM,EAAE;IAM5B,iBAAiB,IAAI,MAAM,EAAE;IAK7B,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,kBAAkB,GAAE,OAAe,GAAG,UAAU,GAAG,SAAS;IAQ5F,kBAAkB;IACX,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIlD,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,kBAAkB,GAAE,OAAe,GAAG,MAAM,GAAG,SAAS;IAQzF,iBAAiB,CAAC,CAAC,GAAG,OAAO,EAClC,GAAG,EAAE,MAAM,EACX,kBAAkB,GAAE,OAAe,GAClC,CAAC,GAAG,SAAS;IAShB;;;SAGK;IACE,eAAe,IAAI,mBAAmB;IAI7C,0CAA0C;IACnC,OAAO,IAAI,WAAW;CAG9B"}
package/dist/accessors.js CHANGED
@@ -10,25 +10,25 @@ class PlError extends Error {
10
10
  }
11
11
  }
12
12
  function isPlTreeEntry(obj) {
13
- return (typeof obj === 'object'
14
- && obj !== null
15
- && obj['__pl_tree_type_marker__'] === 'PlTreeEntry');
13
+ return (typeof obj === "object" &&
14
+ obj !== null &&
15
+ obj["__pl_tree_type_marker__"] === "PlTreeEntry");
16
16
  }
17
17
  function isPlTreeEntryAccessor(obj) {
18
- return (typeof obj === 'object'
19
- && obj !== null
20
- && obj['__pl_tree_type_marker__'] === 'PlTreeEntryAccessor');
18
+ return (typeof obj === "object" &&
19
+ obj !== null &&
20
+ obj["__pl_tree_type_marker__"] === "PlTreeEntryAccessor");
21
21
  }
22
22
  function isPlTreeNodeAccessor(obj) {
23
- return (typeof obj === 'object'
24
- && obj !== null
25
- && obj['__pl_tree_type_marker__'] === 'PlTreeNodeAccessor');
23
+ return (typeof obj === "object" &&
24
+ obj !== null &&
25
+ obj["__pl_tree_type_marker__"] === "PlTreeNodeAccessor");
26
26
  }
27
27
  /** Main entry point for using PlTree in reactive setting */
28
28
  class PlTreeEntry {
29
29
  accessorData;
30
30
  rid;
31
- __pl_tree_type_marker__ = 'PlTreeEntry';
31
+ __pl_tree_type_marker__ = "PlTreeEntry";
32
32
  constructor(accessorData, rid) {
33
33
  this.accessorData = accessorData;
34
34
  this.rid = rid;
@@ -53,8 +53,8 @@ function getResourceFromTree(accessorData, tree, instanceData, rid, ops) {
53
53
  if (err !== undefined)
54
54
  throw parsePlError(notEmpty(err.getDataAsString()), acc.id, acc.resourceType);
55
55
  }
56
- if (ops.assertResourceType !== undefined
57
- && (Array.isArray(ops.assertResourceType)
56
+ if (ops.assertResourceType !== undefined &&
57
+ (Array.isArray(ops.assertResourceType)
58
58
  ? ops.assertResourceType.findIndex((rt) => resourceTypesEqual(rt, acc.resourceType)) === -1
59
59
  : !resourceTypesEqual(ops.assertResourceType, acc.resourceType)))
60
60
  throw new Error(
@@ -67,7 +67,7 @@ class PlTreeEntryAccessor {
67
67
  tree;
68
68
  rid;
69
69
  instanceData;
70
- __pl_tree_type_marker__ = 'PlTreeEntryAccessor';
70
+ __pl_tree_type_marker__ = "PlTreeEntryAccessor";
71
71
  constructor(accessorData, tree, rid, instanceData) {
72
72
  this.accessorData = accessorData;
73
73
  this.tree = tree;
@@ -103,7 +103,7 @@ class PlTreeNodeAccessor {
103
103
  tree;
104
104
  resource;
105
105
  instanceData;
106
- __pl_tree_type_marker__ = 'PlTreeNodeAccessor';
106
+ __pl_tree_type_marker__ = "PlTreeNodeAccessor";
107
107
  constructor(accessorData, tree, resource, instanceData) {
108
108
  this.accessorData = accessorData;
109
109
  this.tree = tree;
@@ -146,7 +146,7 @@ class PlTreeNodeAccessor {
146
146
  // eslint-disable-next-line @typescript-eslint/no-this-alias
147
147
  let current = this;
148
148
  for (const _step of steps) {
149
- const step = typeof _step === 'string'
149
+ const step = typeof _step === "string"
150
150
  ? {
151
151
  ...commonOptions,
152
152
  field: _step,
@@ -170,7 +170,7 @@ class PlTreeNodeAccessor {
170
170
  error: new Error(`field have no assigned value ${step.field} of ${resourceIdToString(current.id)}`),
171
171
  };
172
172
  // existing but unpopulated field is unstable because it must be resolved at some point
173
- this.onUnstableLambda('unpopulated_field:' + step.field);
173
+ this.onUnstableLambda("unpopulated_field:" + step.field);
174
174
  return undefined;
175
175
  }
176
176
  current = next.value;
@@ -182,7 +182,7 @@ class PlTreeNodeAccessor {
182
182
  };
183
183
  getField(_step) {
184
184
  this.instanceData.guard();
185
- const step = typeof _step === 'string' ? { field: _step } : _step;
185
+ const step = typeof _step === "string" ? { field: _step } : _step;
186
186
  const ve = this.resource.getField(this.instanceData.ctx.watcher, step, this.onUnstableLambda);
187
187
  if (ve === undefined)
188
188
  return undefined;
@@ -192,21 +192,21 @@ class PlTreeNodeAccessor {
192
192
  this.instanceData.guard();
193
193
  const result = this.resource.getInputsLocked(this.instanceData.ctx.watcher);
194
194
  if (!result)
195
- this.instanceData.ctx.markUnstable('inputs_unlocked:' + this.resourceType.name);
195
+ this.instanceData.ctx.markUnstable("inputs_unlocked:" + this.resourceType.name);
196
196
  return result;
197
197
  }
198
198
  getOutputsLocked() {
199
199
  this.instanceData.guard();
200
200
  const result = this.resource.getOutputsLocked(this.instanceData.ctx.watcher);
201
201
  if (!result)
202
- this.instanceData.ctx.markUnstable('outputs_unlocked:' + this.resourceType.name);
202
+ this.instanceData.ctx.markUnstable("outputs_unlocked:" + this.resourceType.name);
203
203
  return result;
204
204
  }
205
205
  getIsReadyOrError() {
206
206
  this.instanceData.guard();
207
207
  const result = this.resource.getIsReadyOrError(this.instanceData.ctx.watcher);
208
208
  if (!result)
209
- this.instanceData.ctx.markUnstable('not_ready:' + this.resourceType.name);
209
+ this.instanceData.ctx.markUnstable("not_ready:" + this.resourceType.name);
210
210
  return result;
211
211
  }
212
212
  getIsFinal() {
@@ -248,7 +248,7 @@ class PlTreeNodeAccessor {
248
248
  this.instanceData.guard();
249
249
  const result = this.resource.getKeyValue(this.instanceData.ctx.watcher, key);
250
250
  if (result === undefined && unstableIfNotFound)
251
- this.instanceData.ctx.markUnstable('key_not_found_b:' + key);
251
+ this.instanceData.ctx.markUnstable("key_not_found_b:" + key);
252
252
  return result;
253
253
  }
254
254
  /** @deprecated */
@@ -259,14 +259,14 @@ class PlTreeNodeAccessor {
259
259
  this.instanceData.guard();
260
260
  const result = this.resource.getKeyValueString(this.instanceData.ctx.watcher, key);
261
261
  if (result === undefined && unstableIfNotFound)
262
- this.instanceData.ctx.markUnstable('key_not_found_s:' + key);
262
+ this.instanceData.ctx.markUnstable("key_not_found_s:" + key);
263
263
  return result;
264
264
  }
265
265
  getKeyValueAsJson(key, unstableIfNotFound = false) {
266
266
  const result = this.resource.getKeyValueAsJson(this.instanceData.ctx.watcher, key);
267
267
  if (result === undefined) {
268
268
  if (unstableIfNotFound)
269
- this.instanceData.ctx.markUnstable('key_not_found_j:' + key);
269
+ this.instanceData.ctx.markUnstable("key_not_found_j:" + key);
270
270
  return undefined;
271
271
  }
272
272
  return result;
@@ -1 +1 @@
1
- {"version":3,"file":"accessors.js","sources":["../src/accessors.ts"],"sourcesContent":["import type { PlTreeResource, PlTreeState } from './state';\nimport type {\n AccessorProvider,\n ComputableCtx,\n ComputableHooks,\n UsageGuard,\n} from '@milaboratories/computable';\nimport type {\n ResourceId,\n ResourceType,\n OptionalResourceId } from '@milaboratories/pl-client';\nimport {\n resourceIdToString,\n resourceTypesEqual,\n resourceTypeToString,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n NullResourceId,\n} from '@milaboratories/pl-client';\nimport type { ValueAndError } from './value_and_error';\nimport { mapValueAndError } from './value_and_error';\nimport type {\n CommonFieldTraverseOps,\n FieldTraversalStep,\n GetFieldStep,\n ResourceTraversalOps,\n} from './traversal_ops';\nimport type { ValueOrError } from './value_or_error';\nimport { parsePlError } from '@milaboratories/pl-errors';\nimport { notEmpty } from '@milaboratories/ts-helpers';\n/** Error encountered during traversal in field or resource. */\nexport class PlError extends Error {\n constructor(message: string) {\n super(message);\n }\n}\n\nexport type TreeAccessorData = {\n readonly treeProvider: () => PlTreeState;\n readonly hooks?: ComputableHooks;\n};\n\nexport type TreeAccessorInstanceData = {\n readonly guard: UsageGuard;\n readonly ctx: ComputableCtx;\n};\n\nexport function isPlTreeEntry(obj: unknown): obj is PlTreeEntry {\n return (\n typeof obj === 'object'\n && obj !== null\n && (obj as any)['__pl_tree_type_marker__'] === 'PlTreeEntry'\n );\n}\n\nexport function isPlTreeEntryAccessor(obj: unknown): obj is PlTreeEntryAccessor {\n return (\n typeof obj === 'object'\n && obj !== null\n && (obj as any)['__pl_tree_type_marker__'] === 'PlTreeEntryAccessor'\n );\n}\n\nexport function isPlTreeNodeAccessor(obj: unknown): obj is PlTreeNodeAccessor {\n return (\n typeof obj === 'object'\n && obj !== null\n && (obj as any)['__pl_tree_type_marker__'] === 'PlTreeNodeAccessor'\n );\n}\n\n/** Main entry point for using PlTree in reactive setting */\nexport class PlTreeEntry implements AccessorProvider<PlTreeEntryAccessor> {\n private readonly __pl_tree_type_marker__ = 'PlTreeEntry';\n\n constructor(\n private readonly accessorData: TreeAccessorData,\n public readonly rid: ResourceId,\n ) {}\n\n public createAccessor(ctx: ComputableCtx, guard: UsageGuard): PlTreeEntryAccessor {\n return new PlTreeEntryAccessor(this.accessorData, this.accessorData.treeProvider(), this.rid, {\n ctx,\n guard,\n });\n }\n\n public toJSON(): string {\n return this.toString();\n }\n\n public toString(): string {\n return `[ENTRY:${resourceIdToString(this.rid)}]`;\n }\n}\n\nfunction getResourceFromTree(\n accessorData: TreeAccessorData,\n tree: PlTreeState,\n instanceData: TreeAccessorInstanceData,\n rid: ResourceId,\n ops: ResourceTraversalOps,\n): PlTreeNodeAccessor {\n const acc = new PlTreeNodeAccessor(\n accessorData,\n tree,\n tree.get(instanceData.ctx.watcher, rid),\n instanceData,\n );\n\n if (!ops.ignoreError) {\n const err = acc.getError();\n if (err !== undefined)\n throw parsePlError(notEmpty(err.getDataAsString()), acc.id, acc.resourceType);\n }\n\n if (\n ops.assertResourceType !== undefined\n && (Array.isArray(ops.assertResourceType)\n ? ops.assertResourceType.findIndex((rt) => resourceTypesEqual(rt, acc.resourceType)) === -1\n : !resourceTypesEqual(ops.assertResourceType, acc.resourceType))\n )\n throw new Error(\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n `wrong resource type ${resourceTypeToString(acc.resourceType)} but expected ${ops.assertResourceType}`,\n );\n\n return acc;\n}\n\nexport class PlTreeEntryAccessor {\n private readonly __pl_tree_type_marker__ = 'PlTreeEntryAccessor';\n\n constructor(\n private readonly accessorData: TreeAccessorData,\n private readonly tree: PlTreeState,\n private readonly rid: ResourceId,\n private readonly instanceData: TreeAccessorInstanceData,\n ) {}\n\n node(ops: ResourceTraversalOps = {}): PlTreeNodeAccessor {\n this.instanceData.guard();\n\n // this is the only entry point to acquire a PlTreeNodeAccessor,\n // so this is the only point where we should attach the hooks\n if (this.accessorData.hooks !== undefined)\n this.instanceData.ctx.attacheHooks(this.accessorData.hooks);\n\n return getResourceFromTree(this.accessorData, this.tree, this.instanceData, this.rid, ops);\n }\n}\n\n/**\n * Helper type to simplify implementation of APIs requiring type information.\n * */\nexport type ResourceInfo = {\n readonly id: ResourceId;\n readonly type: ResourceType;\n};\n\n/**\n * Can be called only when a ctx is provided, because pl tree entry is a computable entity.\n * @deprecated\n * */\nexport function treeEntryToResourceInfo(res: PlTreeEntry | ResourceInfo, ctx: ComputableCtx) {\n if (res instanceof PlTreeEntry) return ctx.accessor(res).node().resourceInfo;\n\n return res;\n}\n\n/**\n * API contracts:\n * - API never return {@link NullResourceId}, absence of link is always modeled as `undefined`\n *\n * Important: never store instances of this class, always get fresh instance from {@link PlTreeState} accessor.\n * */\nexport class PlTreeNodeAccessor {\n private readonly __pl_tree_type_marker__ = 'PlTreeNodeAccessor';\n\n constructor(\n private readonly accessorData: TreeAccessorData,\n private readonly tree: PlTreeState,\n private readonly resource: PlTreeResource,\n private readonly instanceData: TreeAccessorInstanceData,\n ) {}\n\n public get id(): ResourceId {\n this.instanceData.guard();\n return this.resource.id;\n }\n\n public get originalId(): OptionalResourceId {\n this.instanceData.guard();\n return this.resource.originalResourceId;\n }\n\n public get resourceType(): ResourceType {\n this.instanceData.guard();\n return this.resource.type;\n }\n\n public get resourceInfo(): ResourceInfo {\n return { id: this.id, type: this.resourceType };\n }\n\n private getResourceFromTree(rid: ResourceId, ops: ResourceTraversalOps): PlTreeNodeAccessor {\n return getResourceFromTree(this.accessorData, this.tree, this.instanceData, rid, ops);\n }\n\n public traverse(\n ...steps: [\n Omit<FieldTraversalStep, 'errorIfFieldNotSet'> & {\n errorIfFieldNotSet: true;\n },\n ]\n ): PlTreeNodeAccessor;\n public traverse(...steps: (FieldTraversalStep | string)[]): PlTreeNodeAccessor | undefined;\n public traverse(...steps: (FieldTraversalStep | string)[]): PlTreeNodeAccessor | undefined {\n return this.traverseWithCommon({}, ...steps);\n }\n\n public traverseOrError(\n ...steps: [\n Omit<FieldTraversalStep, 'errorIfFieldNotSet'> & {\n errorIfFieldNotSet: true;\n },\n ]\n ): ValueOrError<PlTreeNodeAccessor, Error>;\n public traverseOrError(\n ...steps: (FieldTraversalStep | string)[]\n ): ValueOrError<PlTreeNodeAccessor, Error> | undefined;\n public traverseOrError(\n ...steps: (FieldTraversalStep | string)[]\n ): ValueOrError<PlTreeNodeAccessor, Error> | undefined {\n return this.traverseOrErrorWithCommon({}, ...steps);\n }\n\n public traverseWithCommon(\n commonOptions: CommonFieldTraverseOps,\n ...steps: (FieldTraversalStep | string)[]\n ): PlTreeNodeAccessor | undefined {\n const result = this.traverseOrErrorWithCommon(commonOptions, ...steps);\n if (result === undefined) return undefined;\n\n if (!result.ok) throw result.error;\n return result.value;\n }\n\n public traverseOrErrorWithCommon(\n commonOptions: CommonFieldTraverseOps,\n ...steps: (FieldTraversalStep | string)[]\n ): ValueOrError<PlTreeNodeAccessor, Error> | undefined {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let current: PlTreeNodeAccessor = this;\n\n for (const _step of steps) {\n const step: FieldTraversalStep\n = typeof _step === 'string'\n ? {\n ...commonOptions,\n field: _step,\n }\n : { ...commonOptions, ..._step };\n\n const next = current.getField(_step);\n\n if (next === undefined) return undefined;\n\n if (step.pureFieldErrorToUndefined && next.value === undefined && next.error !== undefined)\n return undefined;\n\n if ((!step.ignoreError || next.value === undefined) && next.error !== undefined)\n return {\n ok: false,\n\n // FIXME: in next tickets we'll allow Errors to be thrown.\n error: parsePlError(\n notEmpty(next.error.getDataAsString()),\n current.id, current.resourceType, step.field,\n ),\n };\n\n if (next.value === undefined) {\n if (step.errorIfFieldNotSet)\n return {\n ok: false,\n error: new Error(`field have no assigned value ${step.field} of ${resourceIdToString(current.id)}`),\n };\n // existing but unpopulated field is unstable because it must be resolved at some point\n this.onUnstableLambda('unpopulated_field:' + step.field);\n return undefined;\n }\n\n current = next.value;\n }\n return { ok: true, value: current };\n }\n\n private readonly onUnstableLambda = (marker: string) => {\n this.instanceData.ctx.markUnstable(marker);\n };\n\n public getField(\n _step:\n | (Omit<GetFieldStep, 'errorIfFieldNotFound'> & { errorIfFieldNotFound: true })\n | (Omit<GetFieldStep, 'errorIfFieldNotSet'> & { errorIfFieldNotSet: true })\n ): ValueAndError<PlTreeNodeAccessor>;\n public getField(_step: GetFieldStep | string): ValueAndError<PlTreeNodeAccessor> | undefined;\n public getField(_step: GetFieldStep | string): ValueAndError<PlTreeNodeAccessor> | undefined {\n this.instanceData.guard();\n const step: GetFieldStep = typeof _step === 'string' ? { field: _step } : _step;\n\n const ve = this.resource.getField(this.instanceData.ctx.watcher, step, this.onUnstableLambda);\n\n if (ve === undefined) return undefined;\n\n return mapValueAndError(ve, (rid) => this.getResourceFromTree(rid, { ignoreError: true }));\n }\n\n public getInputsLocked(): boolean {\n this.instanceData.guard();\n const result = this.resource.getInputsLocked(this.instanceData.ctx.watcher);\n if (!result) this.instanceData.ctx.markUnstable('inputs_unlocked:' + this.resourceType.name);\n return result;\n }\n\n public getOutputsLocked(): boolean {\n this.instanceData.guard();\n const result = this.resource.getOutputsLocked(this.instanceData.ctx.watcher);\n if (!result) this.instanceData.ctx.markUnstable('outputs_unlocked:' + this.resourceType.name);\n return result;\n }\n\n public getIsReadyOrError(): boolean {\n this.instanceData.guard();\n const result = this.resource.getIsReadyOrError(this.instanceData.ctx.watcher);\n if (!result) this.instanceData.ctx.markUnstable('not_ready:' + this.resourceType.name);\n return result;\n }\n\n public getIsFinal() {\n this.instanceData.guard();\n return this.resource.getIsFinal(this.instanceData.ctx.watcher);\n }\n\n public getError(): PlTreeNodeAccessor | undefined {\n this.instanceData.guard();\n const rid = this.resource.getError(this.instanceData.ctx.watcher);\n if (rid === undefined)\n // absence of error always considered as stable\n return undefined;\n return this.getResourceFromTree(rid, {});\n }\n\n public getData(): Uint8Array | undefined {\n return this.resource.data;\n }\n\n public getDataAsString(): string | undefined {\n return this.resource.getDataAsString();\n }\n\n public getDataAsJson<T = unknown>(): T | undefined {\n return this.resource.getDataAsJson<T>();\n }\n\n public listInputFields(): string[] {\n this.instanceData.guard();\n this.getInputsLocked(); // will set unstable if not locked\n return this.resource.listInputFields(this.instanceData.ctx.watcher);\n }\n\n public listOutputFields(): string[] {\n this.instanceData.guard();\n this.getOutputsLocked(); // will set unstable if not locked\n return this.resource.listOutputFields(this.instanceData.ctx.watcher);\n }\n\n public listDynamicFields(): string[] {\n this.instanceData.guard();\n return this.resource.listDynamicFields(this.instanceData.ctx.watcher);\n }\n\n public getKeyValue(key: string, unstableIfNotFound: boolean = false): Uint8Array | undefined {\n this.instanceData.guard();\n const result = this.resource.getKeyValue(this.instanceData.ctx.watcher, key);\n if (result === undefined && unstableIfNotFound)\n this.instanceData.ctx.markUnstable('key_not_found_b:' + key);\n return result;\n }\n\n /** @deprecated */\n public getKeyValueString(key: string): string | undefined {\n return this.getKeyValueAsString(key);\n }\n\n public getKeyValueAsString(key: string, unstableIfNotFound: boolean = false): string | undefined {\n this.instanceData.guard();\n const result = this.resource.getKeyValueString(this.instanceData.ctx.watcher, key);\n if (result === undefined && unstableIfNotFound)\n this.instanceData.ctx.markUnstable('key_not_found_s:' + key);\n return result;\n }\n\n public getKeyValueAsJson<T = unknown>(\n key: string,\n unstableIfNotFound: boolean = false,\n ): T | undefined {\n const result = this.resource.getKeyValueAsJson<T>(this.instanceData.ctx.watcher, key);\n if (result === undefined) {\n if (unstableIfNotFound) this.instanceData.ctx.markUnstable('key_not_found_j:' + key);\n return undefined;\n }\n return result;\n }\n\n /**\n * Can be used to pass a higher level accessor that will wrap the resource and throw its\n * errors on node resolution.\n * */\n public toEntryAccessor(): PlTreeEntryAccessor {\n return new PlTreeEntryAccessor(this.accessorData, this.tree, this.id, this.instanceData);\n }\n\n /** Can be passed to nested computable. */\n public persist(): PlTreeEntry {\n return new PlTreeEntry(this.accessorData, this.resource.id);\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"accessors.js","sources":["../src/accessors.ts"],"sourcesContent":["import type { PlTreeResource, PlTreeState } from \"./state\";\nimport type {\n AccessorProvider,\n ComputableCtx,\n ComputableHooks,\n UsageGuard,\n} from \"@milaboratories/computable\";\nimport type { ResourceId, ResourceType, OptionalResourceId } from \"@milaboratories/pl-client\";\nimport {\n resourceIdToString,\n resourceTypesEqual,\n resourceTypeToString,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n NullResourceId,\n} from \"@milaboratories/pl-client\";\nimport type { ValueAndError } from \"./value_and_error\";\nimport { mapValueAndError } from \"./value_and_error\";\nimport type {\n CommonFieldTraverseOps,\n FieldTraversalStep,\n GetFieldStep,\n ResourceTraversalOps,\n} from \"./traversal_ops\";\nimport type { ValueOrError } from \"./value_or_error\";\nimport { parsePlError } from \"@milaboratories/pl-errors\";\nimport { notEmpty } from \"@milaboratories/ts-helpers\";\n/** Error encountered during traversal in field or resource. */\nexport class PlError extends Error {\n constructor(message: string) {\n super(message);\n }\n}\n\nexport type TreeAccessorData = {\n readonly treeProvider: () => PlTreeState;\n readonly hooks?: ComputableHooks;\n};\n\nexport type TreeAccessorInstanceData = {\n readonly guard: UsageGuard;\n readonly ctx: ComputableCtx;\n};\n\nexport function isPlTreeEntry(obj: unknown): obj is PlTreeEntry {\n return (\n typeof obj === \"object\" &&\n obj !== null &&\n (obj as any)[\"__pl_tree_type_marker__\"] === \"PlTreeEntry\"\n );\n}\n\nexport function isPlTreeEntryAccessor(obj: unknown): obj is PlTreeEntryAccessor {\n return (\n typeof obj === \"object\" &&\n obj !== null &&\n (obj as any)[\"__pl_tree_type_marker__\"] === \"PlTreeEntryAccessor\"\n );\n}\n\nexport function isPlTreeNodeAccessor(obj: unknown): obj is PlTreeNodeAccessor {\n return (\n typeof obj === \"object\" &&\n obj !== null &&\n (obj as any)[\"__pl_tree_type_marker__\"] === \"PlTreeNodeAccessor\"\n );\n}\n\n/** Main entry point for using PlTree in reactive setting */\nexport class PlTreeEntry implements AccessorProvider<PlTreeEntryAccessor> {\n private readonly __pl_tree_type_marker__ = \"PlTreeEntry\";\n\n constructor(\n private readonly accessorData: TreeAccessorData,\n public readonly rid: ResourceId,\n ) {}\n\n public createAccessor(ctx: ComputableCtx, guard: UsageGuard): PlTreeEntryAccessor {\n return new PlTreeEntryAccessor(this.accessorData, this.accessorData.treeProvider(), this.rid, {\n ctx,\n guard,\n });\n }\n\n public toJSON(): string {\n return this.toString();\n }\n\n public toString(): string {\n return `[ENTRY:${resourceIdToString(this.rid)}]`;\n }\n}\n\nfunction getResourceFromTree(\n accessorData: TreeAccessorData,\n tree: PlTreeState,\n instanceData: TreeAccessorInstanceData,\n rid: ResourceId,\n ops: ResourceTraversalOps,\n): PlTreeNodeAccessor {\n const acc = new PlTreeNodeAccessor(\n accessorData,\n tree,\n tree.get(instanceData.ctx.watcher, rid),\n instanceData,\n );\n\n if (!ops.ignoreError) {\n const err = acc.getError();\n if (err !== undefined)\n throw parsePlError(notEmpty(err.getDataAsString()), acc.id, acc.resourceType);\n }\n\n if (\n ops.assertResourceType !== undefined &&\n (Array.isArray(ops.assertResourceType)\n ? ops.assertResourceType.findIndex((rt) => resourceTypesEqual(rt, acc.resourceType)) === -1\n : !resourceTypesEqual(ops.assertResourceType, acc.resourceType))\n )\n throw new Error(\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n `wrong resource type ${resourceTypeToString(acc.resourceType)} but expected ${ops.assertResourceType}`,\n );\n\n return acc;\n}\n\nexport class PlTreeEntryAccessor {\n private readonly __pl_tree_type_marker__ = \"PlTreeEntryAccessor\";\n\n constructor(\n private readonly accessorData: TreeAccessorData,\n private readonly tree: PlTreeState,\n private readonly rid: ResourceId,\n private readonly instanceData: TreeAccessorInstanceData,\n ) {}\n\n node(ops: ResourceTraversalOps = {}): PlTreeNodeAccessor {\n this.instanceData.guard();\n\n // this is the only entry point to acquire a PlTreeNodeAccessor,\n // so this is the only point where we should attach the hooks\n if (this.accessorData.hooks !== undefined)\n this.instanceData.ctx.attacheHooks(this.accessorData.hooks);\n\n return getResourceFromTree(this.accessorData, this.tree, this.instanceData, this.rid, ops);\n }\n}\n\n/**\n * Helper type to simplify implementation of APIs requiring type information.\n * */\nexport type ResourceInfo = {\n readonly id: ResourceId;\n readonly type: ResourceType;\n};\n\n/**\n * Can be called only when a ctx is provided, because pl tree entry is a computable entity.\n * @deprecated\n * */\nexport function treeEntryToResourceInfo(res: PlTreeEntry | ResourceInfo, ctx: ComputableCtx) {\n if (res instanceof PlTreeEntry) return ctx.accessor(res).node().resourceInfo;\n\n return res;\n}\n\n/**\n * API contracts:\n * - API never return {@link NullResourceId}, absence of link is always modeled as `undefined`\n *\n * Important: never store instances of this class, always get fresh instance from {@link PlTreeState} accessor.\n * */\nexport class PlTreeNodeAccessor {\n private readonly __pl_tree_type_marker__ = \"PlTreeNodeAccessor\";\n\n constructor(\n private readonly accessorData: TreeAccessorData,\n private readonly tree: PlTreeState,\n private readonly resource: PlTreeResource,\n private readonly instanceData: TreeAccessorInstanceData,\n ) {}\n\n public get id(): ResourceId {\n this.instanceData.guard();\n return this.resource.id;\n }\n\n public get originalId(): OptionalResourceId {\n this.instanceData.guard();\n return this.resource.originalResourceId;\n }\n\n public get resourceType(): ResourceType {\n this.instanceData.guard();\n return this.resource.type;\n }\n\n public get resourceInfo(): ResourceInfo {\n return { id: this.id, type: this.resourceType };\n }\n\n private getResourceFromTree(rid: ResourceId, ops: ResourceTraversalOps): PlTreeNodeAccessor {\n return getResourceFromTree(this.accessorData, this.tree, this.instanceData, rid, ops);\n }\n\n public traverse(\n ...steps: [\n Omit<FieldTraversalStep, \"errorIfFieldNotSet\"> & {\n errorIfFieldNotSet: true;\n },\n ]\n ): PlTreeNodeAccessor;\n public traverse(...steps: (FieldTraversalStep | string)[]): PlTreeNodeAccessor | undefined;\n public traverse(...steps: (FieldTraversalStep | string)[]): PlTreeNodeAccessor | undefined {\n return this.traverseWithCommon({}, ...steps);\n }\n\n public traverseOrError(\n ...steps: [\n Omit<FieldTraversalStep, \"errorIfFieldNotSet\"> & {\n errorIfFieldNotSet: true;\n },\n ]\n ): ValueOrError<PlTreeNodeAccessor, Error>;\n public traverseOrError(\n ...steps: (FieldTraversalStep | string)[]\n ): ValueOrError<PlTreeNodeAccessor, Error> | undefined;\n public traverseOrError(\n ...steps: (FieldTraversalStep | string)[]\n ): ValueOrError<PlTreeNodeAccessor, Error> | undefined {\n return this.traverseOrErrorWithCommon({}, ...steps);\n }\n\n public traverseWithCommon(\n commonOptions: CommonFieldTraverseOps,\n ...steps: (FieldTraversalStep | string)[]\n ): PlTreeNodeAccessor | undefined {\n const result = this.traverseOrErrorWithCommon(commonOptions, ...steps);\n if (result === undefined) return undefined;\n\n if (!result.ok) throw result.error;\n return result.value;\n }\n\n public traverseOrErrorWithCommon(\n commonOptions: CommonFieldTraverseOps,\n ...steps: (FieldTraversalStep | string)[]\n ): ValueOrError<PlTreeNodeAccessor, Error> | undefined {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let current: PlTreeNodeAccessor = this;\n\n for (const _step of steps) {\n const step: FieldTraversalStep =\n typeof _step === \"string\"\n ? {\n ...commonOptions,\n field: _step,\n }\n : { ...commonOptions, ..._step };\n\n const next = current.getField(_step);\n\n if (next === undefined) return undefined;\n\n if (step.pureFieldErrorToUndefined && next.value === undefined && next.error !== undefined)\n return undefined;\n\n if ((!step.ignoreError || next.value === undefined) && next.error !== undefined)\n return {\n ok: false,\n\n // FIXME: in next tickets we'll allow Errors to be thrown.\n error: parsePlError(\n notEmpty(next.error.getDataAsString()),\n current.id,\n current.resourceType,\n step.field,\n ),\n };\n\n if (next.value === undefined) {\n if (step.errorIfFieldNotSet)\n return {\n ok: false,\n error: new Error(\n `field have no assigned value ${step.field} of ${resourceIdToString(current.id)}`,\n ),\n };\n // existing but unpopulated field is unstable because it must be resolved at some point\n this.onUnstableLambda(\"unpopulated_field:\" + step.field);\n return undefined;\n }\n\n current = next.value;\n }\n return { ok: true, value: current };\n }\n\n private readonly onUnstableLambda = (marker: string) => {\n this.instanceData.ctx.markUnstable(marker);\n };\n\n public getField(\n _step:\n | (Omit<GetFieldStep, \"errorIfFieldNotFound\"> & { errorIfFieldNotFound: true })\n | (Omit<GetFieldStep, \"errorIfFieldNotSet\"> & { errorIfFieldNotSet: true }),\n ): ValueAndError<PlTreeNodeAccessor>;\n public getField(_step: GetFieldStep | string): ValueAndError<PlTreeNodeAccessor> | undefined;\n public getField(_step: GetFieldStep | string): ValueAndError<PlTreeNodeAccessor> | undefined {\n this.instanceData.guard();\n const step: GetFieldStep = typeof _step === \"string\" ? { field: _step } : _step;\n\n const ve = this.resource.getField(this.instanceData.ctx.watcher, step, this.onUnstableLambda);\n\n if (ve === undefined) return undefined;\n\n return mapValueAndError(ve, (rid) => this.getResourceFromTree(rid, { ignoreError: true }));\n }\n\n public getInputsLocked(): boolean {\n this.instanceData.guard();\n const result = this.resource.getInputsLocked(this.instanceData.ctx.watcher);\n if (!result) this.instanceData.ctx.markUnstable(\"inputs_unlocked:\" + this.resourceType.name);\n return result;\n }\n\n public getOutputsLocked(): boolean {\n this.instanceData.guard();\n const result = this.resource.getOutputsLocked(this.instanceData.ctx.watcher);\n if (!result) this.instanceData.ctx.markUnstable(\"outputs_unlocked:\" + this.resourceType.name);\n return result;\n }\n\n public getIsReadyOrError(): boolean {\n this.instanceData.guard();\n const result = this.resource.getIsReadyOrError(this.instanceData.ctx.watcher);\n if (!result) this.instanceData.ctx.markUnstable(\"not_ready:\" + this.resourceType.name);\n return result;\n }\n\n public getIsFinal() {\n this.instanceData.guard();\n return this.resource.getIsFinal(this.instanceData.ctx.watcher);\n }\n\n public getError(): PlTreeNodeAccessor | undefined {\n this.instanceData.guard();\n const rid = this.resource.getError(this.instanceData.ctx.watcher);\n if (rid === undefined)\n // absence of error always considered as stable\n return undefined;\n return this.getResourceFromTree(rid, {});\n }\n\n public getData(): Uint8Array | undefined {\n return this.resource.data;\n }\n\n public getDataAsString(): string | undefined {\n return this.resource.getDataAsString();\n }\n\n public getDataAsJson<T = unknown>(): T | undefined {\n return this.resource.getDataAsJson<T>();\n }\n\n public listInputFields(): string[] {\n this.instanceData.guard();\n this.getInputsLocked(); // will set unstable if not locked\n return this.resource.listInputFields(this.instanceData.ctx.watcher);\n }\n\n public listOutputFields(): string[] {\n this.instanceData.guard();\n this.getOutputsLocked(); // will set unstable if not locked\n return this.resource.listOutputFields(this.instanceData.ctx.watcher);\n }\n\n public listDynamicFields(): string[] {\n this.instanceData.guard();\n return this.resource.listDynamicFields(this.instanceData.ctx.watcher);\n }\n\n public getKeyValue(key: string, unstableIfNotFound: boolean = false): Uint8Array | undefined {\n this.instanceData.guard();\n const result = this.resource.getKeyValue(this.instanceData.ctx.watcher, key);\n if (result === undefined && unstableIfNotFound)\n this.instanceData.ctx.markUnstable(\"key_not_found_b:\" + key);\n return result;\n }\n\n /** @deprecated */\n public getKeyValueString(key: string): string | undefined {\n return this.getKeyValueAsString(key);\n }\n\n public getKeyValueAsString(key: string, unstableIfNotFound: boolean = false): string | undefined {\n this.instanceData.guard();\n const result = this.resource.getKeyValueString(this.instanceData.ctx.watcher, key);\n if (result === undefined && unstableIfNotFound)\n this.instanceData.ctx.markUnstable(\"key_not_found_s:\" + key);\n return result;\n }\n\n public getKeyValueAsJson<T = unknown>(\n key: string,\n unstableIfNotFound: boolean = false,\n ): T | undefined {\n const result = this.resource.getKeyValueAsJson<T>(this.instanceData.ctx.watcher, key);\n if (result === undefined) {\n if (unstableIfNotFound) this.instanceData.ctx.markUnstable(\"key_not_found_j:\" + key);\n return undefined;\n }\n return result;\n }\n\n /**\n * Can be used to pass a higher level accessor that will wrap the resource and throw its\n * errors on node resolution.\n * */\n public toEntryAccessor(): PlTreeEntryAccessor {\n return new PlTreeEntryAccessor(this.accessorData, this.tree, this.id, this.instanceData);\n }\n\n /** Can be passed to nested computable. */\n public persist(): PlTreeEntry {\n return new PlTreeEntry(this.accessorData, this.resource.id);\n }\n}\n"],"names":[],"mappings":";;;;;AA0BA;AACM,MAAO,OAAQ,SAAQ,KAAK,CAAA;AAChC,IAAA,WAAA,CAAY,OAAe,EAAA;QACzB,KAAK,CAAC,OAAO,CAAC;IAChB;AACD;AAYK,SAAU,aAAa,CAAC,GAAY,EAAA;AACxC,IAAA,QACE,OAAO,GAAG,KAAK,QAAQ;AACvB,QAAA,GAAG,KAAK,IAAI;AACX,QAAA,GAAW,CAAC,yBAAyB,CAAC,KAAK,aAAa;AAE7D;AAEM,SAAU,qBAAqB,CAAC,GAAY,EAAA;AAChD,IAAA,QACE,OAAO,GAAG,KAAK,QAAQ;AACvB,QAAA,GAAG,KAAK,IAAI;AACX,QAAA,GAAW,CAAC,yBAAyB,CAAC,KAAK,qBAAqB;AAErE;AAEM,SAAU,oBAAoB,CAAC,GAAY,EAAA;AAC/C,IAAA,QACE,OAAO,GAAG,KAAK,QAAQ;AACvB,QAAA,GAAG,KAAK,IAAI;AACX,QAAA,GAAW,CAAC,yBAAyB,CAAC,KAAK,oBAAoB;AAEpE;AAEA;MACa,WAAW,CAAA;AAIH,IAAA,YAAA;AACD,IAAA,GAAA;IAJD,uBAAuB,GAAG,aAAa;IAExD,WAAA,CACmB,YAA8B,EAC/B,GAAe,EAAA;QADd,IAAA,CAAA,YAAY,GAAZ,YAAY;QACb,IAAA,CAAA,GAAG,GAAH,GAAG;IAClB;IAEI,cAAc,CAAC,GAAkB,EAAE,KAAiB,EAAA;AACzD,QAAA,OAAO,IAAI,mBAAmB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE;YAC5F,GAAG;YACH,KAAK;AACN,SAAA,CAAC;IACJ;IAEO,MAAM,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE;IACxB;IAEO,QAAQ,GAAA;QACb,OAAO,CAAA,OAAA,EAAU,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;IAClD;AACD;AAED,SAAS,mBAAmB,CAC1B,YAA8B,EAC9B,IAAiB,EACjB,YAAsC,EACtC,GAAe,EACf,GAAyB,EAAA;IAEzB,MAAM,GAAG,GAAG,IAAI,kBAAkB,CAChC,YAAY,EACZ,IAAI,EACJ,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,EACvC,YAAY,CACb;AAED,IAAA,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE;AACpB,QAAA,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,EAAE;QAC1B,IAAI,GAAG,KAAK,SAAS;AACnB,YAAA,MAAM,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,YAAY,CAAC;IACjF;AAEA,IAAA,IACE,GAAG,CAAC,kBAAkB,KAAK,SAAS;AACpC,SAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB;cACjC,GAAG,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,kBAAkB,CAAC,EAAE,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,KAAK;AACzF,cAAE,CAAC,kBAAkB,CAAC,GAAG,CAAC,kBAAkB,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;AAElE,QAAA,MAAM,IAAI,KAAK;;AAEb,QAAA,CAAA,oBAAA,EAAuB,oBAAoB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA,cAAA,EAAiB,GAAG,CAAC,kBAAkB,CAAA,CAAE,CACvG;AAEH,IAAA,OAAO,GAAG;AACZ;MAEa,mBAAmB,CAAA;AAIX,IAAA,YAAA;AACA,IAAA,IAAA;AACA,IAAA,GAAA;AACA,IAAA,YAAA;IANF,uBAAuB,GAAG,qBAAqB;AAEhE,IAAA,WAAA,CACmB,YAA8B,EAC9B,IAAiB,EACjB,GAAe,EACf,YAAsC,EAAA;QAHtC,IAAA,CAAA,YAAY,GAAZ,YAAY;QACZ,IAAA,CAAA,IAAI,GAAJ,IAAI;QACJ,IAAA,CAAA,GAAG,GAAH,GAAG;QACH,IAAA,CAAA,YAAY,GAAZ,YAAY;IAC5B;IAEH,IAAI,CAAC,MAA4B,EAAE,EAAA;AACjC,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;;;AAIzB,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,KAAK,SAAS;AACvC,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;QAE7D,OAAO,mBAAmB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC;IAC5F;AACD;AAUD;;;AAGK;AACC,SAAU,uBAAuB,CAAC,GAA+B,EAAE,GAAkB,EAAA;IACzF,IAAI,GAAG,YAAY,WAAW;QAAE,OAAO,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,YAAY;AAE5E,IAAA,OAAO,GAAG;AACZ;AAEA;;;;;AAKK;MACQ,kBAAkB,CAAA;AAIV,IAAA,YAAA;AACA,IAAA,IAAA;AACA,IAAA,QAAA;AACA,IAAA,YAAA;IANF,uBAAuB,GAAG,oBAAoB;AAE/D,IAAA,WAAA,CACmB,YAA8B,EAC9B,IAAiB,EACjB,QAAwB,EACxB,YAAsC,EAAA;QAHtC,IAAA,CAAA,YAAY,GAAZ,YAAY;QACZ,IAAA,CAAA,IAAI,GAAJ,IAAI;QACJ,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,YAAY,GAAZ,YAAY;IAC5B;AAEH,IAAA,IAAW,EAAE,GAAA;AACX,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;AACzB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE;IACzB;AAEA,IAAA,IAAW,UAAU,GAAA;AACnB,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;AACzB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,kBAAkB;IACzC;AAEA,IAAA,IAAW,YAAY,GAAA;AACrB,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;AACzB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI;IAC3B;AAEA,IAAA,IAAW,YAAY,GAAA;AACrB,QAAA,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE;IACjD;IAEQ,mBAAmB,CAAC,GAAe,EAAE,GAAyB,EAAA;AACpE,QAAA,OAAO,mBAAmB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE,GAAG,CAAC;IACvF;IAUO,QAAQ,CAAC,GAAG,KAAsC,EAAA;QACvD,OAAO,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC;IAC9C;IAYO,eAAe,CACpB,GAAG,KAAsC,EAAA;QAEzC,OAAO,IAAI,CAAC,yBAAyB,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC;IACrD;AAEO,IAAA,kBAAkB,CACvB,aAAqC,EACrC,GAAG,KAAsC,EAAA;QAEzC,MAAM,MAAM,GAAG,IAAI,CAAC,yBAAyB,CAAC,aAAa,EAAE,GAAG,KAAK,CAAC;QACtE,IAAI,MAAM,KAAK,SAAS;AAAE,YAAA,OAAO,SAAS;QAE1C,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,MAAM,MAAM,CAAC,KAAK;QAClC,OAAO,MAAM,CAAC,KAAK;IACrB;AAEO,IAAA,yBAAyB,CAC9B,aAAqC,EACrC,GAAG,KAAsC,EAAA;;QAGzC,IAAI,OAAO,GAAuB,IAAI;AAEtC,QAAA,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE;AACzB,YAAA,MAAM,IAAI,GACR,OAAO,KAAK,KAAK;AACf,kBAAE;AACE,oBAAA,GAAG,aAAa;AAChB,oBAAA,KAAK,EAAE,KAAK;AACb;kBACD,EAAE,GAAG,aAAa,EAAE,GAAG,KAAK,EAAE;YAEpC,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;YAEpC,IAAI,IAAI,KAAK,SAAS;AAAE,gBAAA,OAAO,SAAS;AAExC,YAAA,IAAI,IAAI,CAAC,yBAAyB,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;AACxF,gBAAA,OAAO,SAAS;AAElB,YAAA,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,KAAK,IAAI,CAAC,KAAK,KAAK,SAAS;gBAC7E,OAAO;AACL,oBAAA,EAAE,EAAE,KAAK;;oBAGT,KAAK,EAAE,YAAY,CACjB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,EACtC,OAAO,CAAC,EAAE,EACV,OAAO,CAAC,YAAY,EACpB,IAAI,CAAC,KAAK,CACX;iBACF;AAEH,YAAA,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE;gBAC5B,IAAI,IAAI,CAAC,kBAAkB;oBACzB,OAAO;AACL,wBAAA,EAAE,EAAE,KAAK;AACT,wBAAA,KAAK,EAAE,IAAI,KAAK,CACd,CAAA,6BAAA,EAAgC,IAAI,CAAC,KAAK,CAAA,IAAA,EAAO,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAClF;qBACF;;gBAEH,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC;AACxD,gBAAA,OAAO,SAAS;YAClB;AAEA,YAAA,OAAO,GAAG,IAAI,CAAC,KAAK;QACtB;QACA,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE;IACrC;AAEiB,IAAA,gBAAgB,GAAG,CAAC,MAAc,KAAI;QACrD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC;AAC5C,IAAA,CAAC;AAQM,IAAA,QAAQ,CAAC,KAA4B,EAAA;AAC1C,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;AACzB,QAAA,MAAM,IAAI,GAAiB,OAAO,KAAK,KAAK,QAAQ,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,KAAK;QAE/E,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC;QAE7F,IAAI,EAAE,KAAK,SAAS;AAAE,YAAA,OAAO,SAAS;QAEtC,OAAO,gBAAgB,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5F;IAEO,eAAe,GAAA;AACpB,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;AACzB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC;AAC3E,QAAA,IAAI,CAAC,MAAM;AAAE,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,kBAAkB,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AAC5F,QAAA,OAAO,MAAM;IACf;IAEO,gBAAgB,GAAA;AACrB,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;AACzB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC;AAC5E,QAAA,IAAI,CAAC,MAAM;AAAE,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,mBAAmB,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AAC7F,QAAA,OAAO,MAAM;IACf;IAEO,iBAAiB,GAAA;AACtB,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;AACzB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC;AAC7E,QAAA,IAAI,CAAC,MAAM;AAAE,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AACtF,QAAA,OAAO,MAAM;IACf;IAEO,UAAU,GAAA;AACf,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;AACzB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC;IAChE;IAEO,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;AACzB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC;QACjE,IAAI,GAAG,KAAK,SAAS;;AAEnB,YAAA,OAAO,SAAS;QAClB,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,EAAE,CAAC;IAC1C;IAEO,OAAO,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI;IAC3B;IAEO,eAAe,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE;IACxC;IAEO,aAAa,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAK;IACzC;IAEO,eAAe,GAAA;AACpB,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;AACzB,QAAA,IAAI,CAAC,eAAe,EAAE,CAAC;AACvB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC;IACrE;IAEO,gBAAgB,GAAA;AACrB,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;AACzB,QAAA,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACxB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC;IACtE;IAEO,iBAAiB,GAAA;AACtB,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;AACzB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC;IACvE;AAEO,IAAA,WAAW,CAAC,GAAW,EAAE,kBAAA,GAA8B,KAAK,EAAA;AACjE,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;AACzB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC;AAC5E,QAAA,IAAI,MAAM,KAAK,SAAS,IAAI,kBAAkB;YAC5C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,kBAAkB,GAAG,GAAG,CAAC;AAC9D,QAAA,OAAO,MAAM;IACf;;AAGO,IAAA,iBAAiB,CAAC,GAAW,EAAA;AAClC,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC;IACtC;AAEO,IAAA,mBAAmB,CAAC,GAAW,EAAE,kBAAA,GAA8B,KAAK,EAAA;AACzE,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;AACzB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC;AAClF,QAAA,IAAI,MAAM,KAAK,SAAS,IAAI,kBAAkB;YAC5C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,kBAAkB,GAAG,GAAG,CAAC;AAC9D,QAAA,OAAO,MAAM;IACf;AAEO,IAAA,iBAAiB,CACtB,GAAW,EACX,kBAAA,GAA8B,KAAK,EAAA;AAEnC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC;AACrF,QAAA,IAAI,MAAM,KAAK,SAAS,EAAE;AACxB,YAAA,IAAI,kBAAkB;gBAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,kBAAkB,GAAG,GAAG,CAAC;AACpF,YAAA,OAAO,SAAS;QAClB;AACA,QAAA,OAAO,MAAM;IACf;AAEA;;;AAGK;IACE,eAAe,GAAA;AACpB,QAAA,OAAO,IAAI,mBAAmB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC;IAC1F;;IAGO,OAAO,GAAA;AACZ,QAAA,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC7D;AACD;;;;"}
package/dist/dump.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"dump.cjs","sources":["../src/dump.ts"],"sourcesContent":["import type { ExtendedResourceData } from './state';\n\nexport type ResourceStats = {\n /** Number of resources of this type */\n count: number;\n /** Total number of bytes in the field names of all resources of this type */\n fieldNameBytes: number;\n /** Total number of fields in all resources of this type */\n fieldsCount: number;\n /** Total number of bytes in the data of all resources of this type */\n dataBytes: number;\n /** Total number of key-value records in all resources of this type */\n kvCount: number;\n /** Total number of bytes in the key-value records of all resources of this type */\n kvBytes: number;\n};\n\n/**\n * A map of resource type statistics, keyed by the resource type name and version.\n *\n * @type {Record<string, ResourceStats>}\n */\nexport type TreeDumpStats = {\n total: ResourceStats;\n byResourceType: Record<`${string}/${string}`, ResourceStats>;\n};\n\n/**\n * Analyzes a collection of resources and generates statistics grouped by resource type.\n *\n * This function processes an array of ExtendedResourceData and calculates various metrics\n * for each unique resource type, including:\n * - Count of resources\n * - Total bytes in field names\n * - Total number of fields\n * - Total bytes in resource data\n * - Total number of key-value records\n * - Total bytes in key-value records\n *\n * The statistics are organized by resource type using a key in the format \"typeName/version\".\n *\n * @param dumpStats - Array of ExtendedResourceData objects to analyze\n * @returns A DumpStats object containing statistics for each resource type\n * @example\n * ```typescript\n * const resources = [...]; // Array of ExtendedResourceData\n * const stats = treeDumpStats(resources);\n * // stats = {\n * // \"MyResource/1\": {\n * // count: 5,\n * // fieldNameBytes: 150,\n * // fieldsCount: 10,\n * // dataBytes: 1024,\n * // kvCount: 3,\n * // kvBytes: 256\n * // },\n * // ...\n * // }\n * ```\n */\nexport function treeDumpStats(dumpStats: ExtendedResourceData[]): TreeDumpStats {\n const stats: TreeDumpStats = {\n total: {\n count: 0,\n fieldNameBytes: 0,\n fieldsCount: 0,\n dataBytes: 0,\n kvCount: 0,\n kvBytes: 0,\n },\n byResourceType: {},\n };\n\n for (const resource of dumpStats) {\n const typeKey = `${resource.type.name}/${resource.type.version}` as const;\n if (!stats.byResourceType[typeKey]) {\n stats.byResourceType[typeKey] = {\n count: 0,\n fieldNameBytes: 0,\n fieldsCount: 0,\n dataBytes: 0,\n kvCount: 0,\n kvBytes: 0,\n };\n }\n\n const typeStats = stats.byResourceType[typeKey];\n typeStats.count++;\n stats.total.count++;\n\n for (const field of resource.fields) {\n typeStats.fieldNameBytes += field.name.length;\n typeStats.fieldsCount++;\n stats.total.fieldNameBytes += field.name.length;\n stats.total.fieldsCount++;\n }\n\n if (resource.data) {\n const dataLength = resource.data?.length ?? 0;\n typeStats.dataBytes += dataLength;\n stats.total.dataBytes += dataLength;\n }\n\n typeStats.kvCount += resource.kv.length;\n stats.total.kvCount += resource.kv.length;\n\n for (const kv of resource.kv) {\n const kvLength = kv.key.length + kv.value.length;\n typeStats.kvBytes += kvLength;\n stats.total.kvBytes += kvLength;\n }\n }\n\n return stats;\n}\n"],"names":[],"mappings":";;AA2BA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCG;AACG,SAAU,aAAa,CAAC,SAAiC,EAAA;AAC7D,IAAA,MAAM,KAAK,GAAkB;AAC3B,QAAA,KAAK,EAAE;AACL,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,cAAc,EAAE,CAAC;AACjB,YAAA,WAAW,EAAE,CAAC;AACd,YAAA,SAAS,EAAE,CAAC;AACZ,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,OAAO,EAAE,CAAC;AACX,SAAA;AACD,QAAA,cAAc,EAAE,EAAE;KACnB;AAED,IAAA,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;AAChC,QAAA,MAAM,OAAO,GAAG,CAAA,EAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAA,CAAA,EAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAW;QACzE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;AAClC,YAAA,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG;AAC9B,gBAAA,KAAK,EAAE,CAAC;AACR,gBAAA,cAAc,EAAE,CAAC;AACjB,gBAAA,WAAW,EAAE,CAAC;AACd,gBAAA,SAAS,EAAE,CAAC;AACZ,gBAAA,OAAO,EAAE,CAAC;AACV,gBAAA,OAAO,EAAE,CAAC;aACX;QACH;QAEA,MAAM,SAAS,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC;QAC/C,SAAS,CAAC,KAAK,EAAE;AACjB,QAAA,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE;AAEnB,QAAA,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE;YACnC,SAAS,CAAC,cAAc,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM;YAC7C,SAAS,CAAC,WAAW,EAAE;YACvB,KAAK,CAAC,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM;AAC/C,YAAA,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE;QAC3B;AAEA,QAAA,IAAI,QAAQ,CAAC,IAAI,EAAE;YACjB,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC;AAC7C,YAAA,SAAS,CAAC,SAAS,IAAI,UAAU;AACjC,YAAA,KAAK,CAAC,KAAK,CAAC,SAAS,IAAI,UAAU;QACrC;QAEA,SAAS,CAAC,OAAO,IAAI,QAAQ,CAAC,EAAE,CAAC,MAAM;QACvC,KAAK,CAAC,KAAK,CAAC,OAAO,IAAI,QAAQ,CAAC,EAAE,CAAC,MAAM;AAEzC,QAAA,KAAK,MAAM,EAAE,IAAI,QAAQ,CAAC,EAAE,EAAE;AAC5B,YAAA,MAAM,QAAQ,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM;AAChD,YAAA,SAAS,CAAC,OAAO,IAAI,QAAQ;AAC7B,YAAA,KAAK,CAAC,KAAK,CAAC,OAAO,IAAI,QAAQ;QACjC;IACF;AAEA,IAAA,OAAO,KAAK;AACd;;;;"}
1
+ {"version":3,"file":"dump.cjs","sources":["../src/dump.ts"],"sourcesContent":["import type { ExtendedResourceData } from \"./state\";\n\nexport type ResourceStats = {\n /** Number of resources of this type */\n count: number;\n /** Total number of bytes in the field names of all resources of this type */\n fieldNameBytes: number;\n /** Total number of fields in all resources of this type */\n fieldsCount: number;\n /** Total number of bytes in the data of all resources of this type */\n dataBytes: number;\n /** Total number of key-value records in all resources of this type */\n kvCount: number;\n /** Total number of bytes in the key-value records of all resources of this type */\n kvBytes: number;\n};\n\n/**\n * A map of resource type statistics, keyed by the resource type name and version.\n *\n * @type {Record<string, ResourceStats>}\n */\nexport type TreeDumpStats = {\n total: ResourceStats;\n byResourceType: Record<`${string}/${string}`, ResourceStats>;\n};\n\n/**\n * Analyzes a collection of resources and generates statistics grouped by resource type.\n *\n * This function processes an array of ExtendedResourceData and calculates various metrics\n * for each unique resource type, including:\n * - Count of resources\n * - Total bytes in field names\n * - Total number of fields\n * - Total bytes in resource data\n * - Total number of key-value records\n * - Total bytes in key-value records\n *\n * The statistics are organized by resource type using a key in the format \"typeName/version\".\n *\n * @param dumpStats - Array of ExtendedResourceData objects to analyze\n * @returns A DumpStats object containing statistics for each resource type\n * @example\n * ```typescript\n * const resources = [...]; // Array of ExtendedResourceData\n * const stats = treeDumpStats(resources);\n * // stats = {\n * // \"MyResource/1\": {\n * // count: 5,\n * // fieldNameBytes: 150,\n * // fieldsCount: 10,\n * // dataBytes: 1024,\n * // kvCount: 3,\n * // kvBytes: 256\n * // },\n * // ...\n * // }\n * ```\n */\nexport function treeDumpStats(dumpStats: ExtendedResourceData[]): TreeDumpStats {\n const stats: TreeDumpStats = {\n total: {\n count: 0,\n fieldNameBytes: 0,\n fieldsCount: 0,\n dataBytes: 0,\n kvCount: 0,\n kvBytes: 0,\n },\n byResourceType: {},\n };\n\n for (const resource of dumpStats) {\n const typeKey = `${resource.type.name}/${resource.type.version}` as const;\n if (!stats.byResourceType[typeKey]) {\n stats.byResourceType[typeKey] = {\n count: 0,\n fieldNameBytes: 0,\n fieldsCount: 0,\n dataBytes: 0,\n kvCount: 0,\n kvBytes: 0,\n };\n }\n\n const typeStats = stats.byResourceType[typeKey];\n typeStats.count++;\n stats.total.count++;\n\n for (const field of resource.fields) {\n typeStats.fieldNameBytes += field.name.length;\n typeStats.fieldsCount++;\n stats.total.fieldNameBytes += field.name.length;\n stats.total.fieldsCount++;\n }\n\n if (resource.data) {\n const dataLength = resource.data?.length ?? 0;\n typeStats.dataBytes += dataLength;\n stats.total.dataBytes += dataLength;\n }\n\n typeStats.kvCount += resource.kv.length;\n stats.total.kvCount += resource.kv.length;\n\n for (const kv of resource.kv) {\n const kvLength = kv.key.length + kv.value.length;\n typeStats.kvBytes += kvLength;\n stats.total.kvBytes += kvLength;\n }\n }\n\n return stats;\n}\n"],"names":[],"mappings":";;AA2BA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCG;AACG,SAAU,aAAa,CAAC,SAAiC,EAAA;AAC7D,IAAA,MAAM,KAAK,GAAkB;AAC3B,QAAA,KAAK,EAAE;AACL,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,cAAc,EAAE,CAAC;AACjB,YAAA,WAAW,EAAE,CAAC;AACd,YAAA,SAAS,EAAE,CAAC;AACZ,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,OAAO,EAAE,CAAC;AACX,SAAA;AACD,QAAA,cAAc,EAAE,EAAE;KACnB;AAED,IAAA,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;AAChC,QAAA,MAAM,OAAO,GAAG,CAAA,EAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAA,CAAA,EAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAW;QACzE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;AAClC,YAAA,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG;AAC9B,gBAAA,KAAK,EAAE,CAAC;AACR,gBAAA,cAAc,EAAE,CAAC;AACjB,gBAAA,WAAW,EAAE,CAAC;AACd,gBAAA,SAAS,EAAE,CAAC;AACZ,gBAAA,OAAO,EAAE,CAAC;AACV,gBAAA,OAAO,EAAE,CAAC;aACX;QACH;QAEA,MAAM,SAAS,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC;QAC/C,SAAS,CAAC,KAAK,EAAE;AACjB,QAAA,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE;AAEnB,QAAA,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE;YACnC,SAAS,CAAC,cAAc,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM;YAC7C,SAAS,CAAC,WAAW,EAAE;YACvB,KAAK,CAAC,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM;AAC/C,YAAA,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE;QAC3B;AAEA,QAAA,IAAI,QAAQ,CAAC,IAAI,EAAE;YACjB,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC;AAC7C,YAAA,SAAS,CAAC,SAAS,IAAI,UAAU;AACjC,YAAA,KAAK,CAAC,KAAK,CAAC,SAAS,IAAI,UAAU;QACrC;QAEA,SAAS,CAAC,OAAO,IAAI,QAAQ,CAAC,EAAE,CAAC,MAAM;QACvC,KAAK,CAAC,KAAK,CAAC,OAAO,IAAI,QAAQ,CAAC,EAAE,CAAC,MAAM;AAEzC,QAAA,KAAK,MAAM,EAAE,IAAI,QAAQ,CAAC,EAAE,EAAE;AAC5B,YAAA,MAAM,QAAQ,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM;AAChD,YAAA,SAAS,CAAC,OAAO,IAAI,QAAQ;AAC7B,YAAA,KAAK,CAAC,KAAK,CAAC,OAAO,IAAI,QAAQ;QACjC;IACF;AAEA,IAAA,OAAO,KAAK;AACd;;;;"}
package/dist/dump.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { ExtendedResourceData } from './state';
1
+ import type { ExtendedResourceData } from "./state";
2
2
  export type ResourceStats = {
3
3
  /** Number of resources of this type */
4
4
  count: number;