pict-section-form 1.0.163 → 1.0.164

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pict-section-form",
3
- "version": "1.0.163",
3
+ "version": "1.0.164",
4
4
  "description": "Pict dynamic form sections",
5
5
  "main": "source/Pict-Section-Form.js",
6
6
  "directories": {
@@ -13,6 +13,7 @@ const READY_TO_FINALIZE_TYPE = 'ReadyToFinalize';
13
13
 
14
14
  /**
15
15
  * @typedef {(a: any, b: any) => number} SortFunction
16
+ * @typedef {import('manyfest').ManifestDescriptor} ManifestDescriptor
16
17
  */
17
18
 
18
19
  /**
@@ -291,7 +292,6 @@ class PictFormMetacontroller extends libPictViewClass
291
292
  createDistinctManifest(pManifest, pUUID)
292
293
  {
293
294
  const tmpDescriptorHashes = Object.keys(pManifest?.Descriptors || {});
294
- const tmpDescriptorHashSet = new Set(tmpDescriptorHashes);
295
295
  const tmpUUID = pUUID != null ? pUUID : this.pict.getUUID().replace(/-/g, '');
296
296
  const tmpManifest = JSON.parse(JSON.stringify(pManifest));
297
297
  for (const tmpSection of tmpManifest.Sections || [])
@@ -304,8 +304,11 @@ class PictFormMetacontroller extends libPictViewClass
304
304
  tmpGroup.Hash = `${tmpGroup.Hash}_${tmpUUID}`;
305
305
  }
306
306
  }
307
+ /** @type {Record<string, ManifestDescriptor>} */
308
+ const tmpDescriptors = tmpManifest.Descriptors || {};
309
+ /** @type {Record<string, ManifestDescriptor>} */
307
310
  const tmpNewDescriptors = {};
308
- for (const [ tmpKey, tmpDescriptor ] of Object.entries(tmpManifest.Descriptors || {}))
311
+ for (const [ tmpKey, tmpDescriptor ] of Object.entries(tmpDescriptors))
309
312
  {
310
313
  if (!tmpDescriptor.DataAddress)
311
314
  {
@@ -313,31 +316,15 @@ class PictFormMetacontroller extends libPictViewClass
313
316
  }
314
317
  tmpDescriptor.OriginalDataAddress = tmpDescriptor.DataAddress;
315
318
  // we only make distinct top level properties to keep things as tidy as possible so do a split to isoloate that
316
- //TODO: if we have .. dereferences (for example) in the data address, this will not work properly
319
+ //TODO: if we have .. dereferences (for example) in the data address, this may not work properly
317
320
 
318
- let tmpArrayIndex = tmpDescriptor.DataAddress.indexOf('[');
319
- let tmpDotIndex = tmpDescriptor.DataAddress.indexOf('.');
320
- if (tmpDotIndex >= 0 && (tmpDotIndex < tmpArrayIndex || tmpArrayIndex < 0))
321
- {
322
- const tmpPrefixPart = tmpDescriptor.DataAddress.substring(0, tmpDotIndex);
323
- const tmpPostfixPart = tmpDescriptor.DataAddress.substring(tmpDotIndex);
324
- tmpDescriptor.DataAddress = `${tmpPrefixPart}_${tmpUUID}${tmpPostfixPart}`;
325
- }
326
- else if (tmpArrayIndex >= 0 && (tmpArrayIndex < tmpDotIndex || tmpDotIndex < 0))
327
- {
328
- const tmpArrayPart = tmpDescriptor.DataAddress.substring(0, tmpArrayIndex);
329
- const tmpPostfixPart = tmpDescriptor.DataAddress.substring(tmpArrayIndex);
330
- tmpDescriptor.DataAddress = `${tmpArrayPart}_${tmpUUID}${tmpPostfixPart}`;
331
- }
332
- else
333
- {
334
- //FIXME: do we want to allow prefixing the data address? (ex. nesting it under a parent object) - caller can still do this themselves.
335
- tmpDescriptor.DataAddress = `${tmpDescriptor.OriginalDataAddress}_${tmpUUID}`;
336
- }
321
+ // nest the data addresses inside a container that is unique to this injection
322
+ tmpDescriptor.DataAddress = `${tmpUUID}.${tmpDescriptor.OriginalDataAddress}`;
337
323
  if (tmpDescriptor.Address != null)
338
324
  {
339
325
  tmpDescriptor.Address = tmpDescriptor.DataAddress;
340
326
  }
327
+ // nesting doesn't work for hashes, so we append instead for input, section and group hashes
341
328
  if (tmpDescriptor.Hash)
342
329
  {
343
330
  tmpDescriptor.OriginalHash = tmpDescriptor.Hash;
@@ -357,7 +344,9 @@ class PictFormMetacontroller extends libPictViewClass
357
344
  tmpNewDescriptors[tmpDescriptor.DataAddress] = tmpDescriptor;
358
345
  }
359
346
  tmpManifest.Descriptors = tmpNewDescriptors;
347
+ /** @type {Record<string, string>} */
360
348
  const tmpAddressTranslation = {};
349
+ /** @type {Record<string, string>} */
361
350
  const tmpHashTranslation = {};
362
351
  for (const tmpDescriptor of Object.values(tmpManifest?.Descriptors || {}))
363
352
  {
@@ -370,6 +359,15 @@ class PictFormMetacontroller extends libPictViewClass
370
359
  tmpHashTranslation[tmpDescriptor.OriginalHash] = tmpDescriptor.Hash;
371
360
  }
372
361
  }
362
+ const escapeRegExp =
363
+ /**
364
+ * @param {string} str - the string to match
365
+ * @return {string} - the escaped string
366
+ */
367
+ (str) =>
368
+ {
369
+ return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
370
+ }
373
371
  for (const [ tmpOriginalAddress, tmpUpdatedAddress ] of Object.entries(tmpAddressTranslation))
374
372
  {
375
373
  for (const tmpIterAddress of Object.keys(tmpAddressTranslation))
@@ -378,10 +376,10 @@ class PictFormMetacontroller extends libPictViewClass
378
376
  {
379
377
  continue;
380
378
  }
381
- const tmpTranslatedAddress = tmpAddressTranslation[tmpIterAddress].replace(new RegExp(`^${tmpOriginalAddress}\\b`, 'g'), tmpUpdatedAddress);
379
+ const tmpTranslatedAddress = tmpAddressTranslation[tmpIterAddress].replace(new RegExp(`^${escapeRegExp(tmpOriginalAddress)}\\b`, 'g'), tmpUpdatedAddress);
382
380
  if (tmpTranslatedAddress !== tmpAddressTranslation[tmpIterAddress])
383
381
  {
384
- //this.pict.log.info(`DocumentDynamicSectionManager._addTestSections: Updated address translation for "${tmpIterAddress}" from "${tmpAddressTranslation[tmpIterAddress]}" to "${tmpTranslatedAddress}".`);
382
+ this.pict.log.info(`DocumentDynamicSectionManager.createDistinctManifest: Updated address translation for "${tmpIterAddress}" from "${tmpAddressTranslation[tmpIterAddress]}" to "${tmpTranslatedAddress}".`);
385
383
  tmpAddressTranslation[tmpIterAddress] = tmpTranslatedAddress;
386
384
  const [ tmpCurrentKey, tmpOriginalDescriptor ] = Object.entries(tmpManifest.Descriptors).find(([ pKey, pDescriptor ]) => pDescriptor.OriginalDataAddress === tmpIterAddress);
387
385
  tmpManifest.Descriptors[tmpCurrentKey].DataAddress = tmpTranslatedAddress;
@@ -399,17 +397,15 @@ class PictFormMetacontroller extends libPictViewClass
399
397
  tmpAddressMappings.sort((a, b) => b.From.length - a.From.length);
400
398
  const tmpHashMappings = Object.entries(tmpHashTranslation).map(([ pOldHash, pNewHash ]) => ({ From: pOldHash, To: pNewHash }));
401
399
  tmpHashMappings.sort((a, b) => b.From.length - a.From.length);
402
- const escapeRegExp = (string) =>
403
- {
404
- return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
405
- }
406
400
  for (const tmpSection of tmpManifest.Sections || [])
407
401
  {
408
402
  if (Array.isArray(tmpSection.Solvers) && tmpSection.Solvers.length > 0)
409
403
  {
410
404
  for (let i = 0; i < tmpSection.Solvers.length; i++)
411
405
  {
406
+ /** @type {Record<string, any>|string} */
412
407
  const tmpSolver = tmpSection.Solvers[i];
408
+ /** @type {string} */
413
409
  const tmpSolverExpression = typeof tmpSolver === 'string' ? tmpSolver : tmpSolver.Expression;
414
410
  if (!tmpSolverExpression)
415
411
  {
@@ -419,15 +415,28 @@ class PictFormMetacontroller extends libPictViewClass
419
415
  //FIXME: what if there is a collision in a suffix-part and we replace too much?
420
416
  for (const tmpMapping of tmpAddressMappings)
421
417
  {
422
- tmpUpdatedSolver = tmpUpdatedSolver.replace(new RegExp(`\\b${escapeRegExp(tmpMapping.From)}\\b`, 'g'), tmpMapping.To);
418
+ const tmpUpdatedSolverIter = tmpUpdatedSolver.replace(new RegExp(`\\b${escapeRegExp(tmpMapping.From)}\\b`, 'g'), tmpMapping.To);
419
+ if (tmpUpdatedSolverIter !== tmpUpdatedSolver)
420
+ {
421
+ //this.pict.log.info(`DocumentDynamicSectionManager.createDistinctManifest: Iteratively updated section solver reference ${i} address from "${tmpUpdatedSolver}" to "${tmpUpdatedSolverIter}".`, tmpMapping);
422
+ }
423
+ tmpUpdatedSolver = tmpUpdatedSolverIter;
423
424
  }
424
425
  for (const tmpMapping of tmpHashMappings)
425
426
  {
426
- tmpUpdatedSolver = tmpUpdatedSolver.replace(new RegExp(`\\b${escapeRegExp(tmpMapping.From)}\\b`, 'g'), tmpMapping.To);
427
+ const tmpUpdatedSolverIter = tmpUpdatedSolver.replace(new RegExp(`\\b${escapeRegExp(tmpMapping.From)}\\b`, 'g'), tmpMapping.To);
428
+ if (tmpUpdatedSolverIter !== tmpUpdatedSolver)
429
+ {
430
+ //this.pict.log.info(`DocumentDynamicSectionManager.createDistinctManifest: Iteratively updated section solver reference ${i} hash from "${tmpUpdatedSolver}" to "${tmpUpdatedSolverIter}".`, tmpMapping);
431
+ }
432
+ tmpUpdatedSolver = tmpUpdatedSolverIter;
427
433
  }
428
- if (tmpUpdatedSolver !== tmpSolver)
434
+ if (tmpUpdatedSolver !== tmpSolverExpression)
429
435
  {
430
- //this.pict.log.info(`DocumentDynamicSectionManager._addTestSections: Updated section solver reference ${i} from "${tmpSolverExpression}" to "${tmpUpdatedSolver}".`);
436
+ //FIXME: hack to remove duplicated tmpUUID prefixes
437
+ const tmpPrefix = `${tmpUUID}.`;
438
+ tmpUpdatedSolver = tmpUpdatedSolver.replace(new RegExp(`(${escapeRegExp(tmpPrefix)})+`), tmpPrefix);
439
+ this.pict.log.info(`DocumentDynamicSectionManager.createDistinctManifest: Updated section solver reference ${i} from "${tmpSolverExpression}" to "${tmpUpdatedSolver}".`);
431
440
  if (typeof tmpSolver === 'string')
432
441
  {
433
442
  tmpSection.Solvers[i] = tmpUpdatedSolver;
@@ -443,38 +452,8 @@ class PictFormMetacontroller extends libPictViewClass
443
452
  {
444
453
  if (tmpGroup.RecordSetAddress)
445
454
  {
446
- let tmpRecordSetAddress = tmpGroup.RecordSetAddress;
447
- for (const tmpMapping of tmpAddressMappings)
448
- {
449
- tmpRecordSetAddress = tmpRecordSetAddress.replace(new RegExp(`^${escapeRegExp(tmpMapping.From)}\\b`, 'g'), tmpMapping.To);
450
- }
451
- if (tmpRecordSetAddress !== tmpGroup.RecordSetAddress)
452
- {
453
- //this.pict.log.info(`DocumentDynamicSectionManager._addTestSections: Updated group record set address from "${tmpGroup.RecordSetAddress}" to "${tmpRecordSetAddress}".`);
454
- }
455
- else
456
- {
457
- let tmpArrayIndex = tmpRecordSetAddress.indexOf('[');
458
- let tmpDotIndex = tmpRecordSetAddress.indexOf('.');
459
- if (tmpDotIndex >= 0 && (tmpDotIndex < tmpArrayIndex || tmpArrayIndex < 0))
460
- {
461
- const tmpPrefixPart = tmpRecordSetAddress.substring(0, tmpDotIndex);
462
- const tmpPostfixPart = tmpRecordSetAddress.substring(tmpDotIndex);
463
- tmpRecordSetAddress = `${tmpPrefixPart}_${tmpUUID}${tmpPostfixPart}`;
464
- }
465
- else if (tmpArrayIndex >= 0 && (tmpArrayIndex < tmpDotIndex || tmpDotIndex < 0))
466
- {
467
- const tmpArrayPart = tmpRecordSetAddress.substring(0, tmpArrayIndex);
468
- const tmpPostfixPart = tmpRecordSetAddress.substring(tmpArrayIndex);
469
- tmpRecordSetAddress = `${tmpArrayPart}_${tmpUUID}${tmpPostfixPart}`;
470
- }
471
- else
472
- {
473
- //FIXME: do we want to allow prefixing the data address? (ex. nesting it under a parent object) - caller can still do this themselves.
474
- tmpRecordSetAddress = `${tmpGroup.RecordSetAddress}_${tmpUUID}`;
475
- }
476
- }
477
- //TODO: does this need to go into the mappings if it isn't there?
455
+ let tmpRecordSetAddress = `${tmpUUID}.${tmpGroup.RecordSetAddress}`;
456
+ this.pict.log.info(`DocumentDynamicSectionManager.createDistinctManifest: Updated group record set address from "${tmpGroup.RecordSetAddress}" to "${tmpRecordSetAddress}".`);
478
457
  tmpGroup.RecordSetAddress = tmpRecordSetAddress;
479
458
 
480
459
  }
@@ -482,6 +461,7 @@ class PictFormMetacontroller extends libPictViewClass
482
461
  {
483
462
  for (let i = 0; i < tmpGroup.RecordSetSolvers.length; i++)
484
463
  {
464
+ /** @type {Record<string, any>|string} */
485
465
  const tmpSolver = tmpGroup.RecordSetSolvers[i];
486
466
  const tmpSolverExpression = typeof tmpSolver === 'string' ? tmpSolver : tmpSolver.Expression;
487
467
  if (!tmpSolverExpression)
@@ -492,15 +472,28 @@ class PictFormMetacontroller extends libPictViewClass
492
472
  //FIXME: what if there is a collision in a suffix-part and we replace too much?
493
473
  for (const tmpMapping of tmpAddressMappings)
494
474
  {
495
- tmpUpdatedSolver = tmpUpdatedSolver.replace(new RegExp(`\\b${escapeRegExp(tmpMapping.From)}\\b`, 'g'), tmpMapping.To);
475
+ const tmpUpdatedSolverIter = tmpUpdatedSolver.replace(new RegExp(`\\b${escapeRegExp(tmpMapping.From)}\\b`, 'g'), tmpMapping.To);
476
+ if (tmpUpdatedSolverIter !== tmpUpdatedSolver)
477
+ {
478
+ //this.pict.log.info(`DocumentDynamicSectionManager.createDistinctManifest: Updated group solver reference ${i} address from "${tmpUpdatedSolver}" to "${tmpUpdatedSolverIter}".`);
479
+ }
480
+ tmpUpdatedSolver = tmpUpdatedSolverIter;
496
481
  }
497
482
  for (const tmpMapping of tmpHashMappings)
498
483
  {
499
- tmpUpdatedSolver = tmpUpdatedSolver.replace(new RegExp(`\\b${escapeRegExp(tmpMapping.From)}\\b`, 'g'), tmpMapping.To);
484
+ const tmpUpdatedSolverIter = tmpUpdatedSolver.replace(new RegExp(`\\b${escapeRegExp(tmpMapping.From)}\\b`, 'g'), tmpMapping.To);
485
+ if (tmpUpdatedSolverIter !== tmpUpdatedSolver)
486
+ {
487
+ //this.pict.log.info(`DocumentDynamicSectionManager.createDistinctManifest: Updated group solver reference ${i} hash from "${tmpUpdatedSolver}" to "${tmpUpdatedSolverIter}".`);
488
+ }
489
+ tmpUpdatedSolver = tmpUpdatedSolverIter;
500
490
  }
501
- if (tmpUpdatedSolver !== tmpSolver)
491
+ if (tmpUpdatedSolver !== tmpSolverExpression)
502
492
  {
503
- //this.pict.log.info(`DocumentDynamicSectionManager._addTestSections: Updated group solver reference ${i} from "${tmpSolver}" to "${tmpUpdatedSolver}".`);
493
+ //FIXME: hack to remove duplicated tmpUUID prefixes
494
+ const tmpPrefix = `${tmpUUID}.`;
495
+ tmpUpdatedSolver = tmpUpdatedSolver.replace(new RegExp(`(${escapeRegExp(tmpPrefix)})+`), tmpPrefix);
496
+ this.pict.log.info(`DocumentDynamicSectionManager.createDistinctManifest: Updated group solver reference ${i} from "${tmpSolverExpression}" to "${tmpUpdatedSolver}".`);
504
497
  if (typeof tmpSolver === 'string')
505
498
  {
506
499
  tmpGroup.RecordSetSolvers[i] = tmpUpdatedSolver;
@@ -322,8 +322,8 @@ suite
322
322
  try
323
323
  {
324
324
  _Pict.log.info(`AppData after`, { AppData: _Pict.AppData, tmpHashedAggregateValue, tmpHashedAggregateValue2 });
325
- Expect(_Pict.AppData[tmpHashedAggregateValue]).to.equal('15', 'AggregateValue should equal 15 (SUM of ValueArray via hash)');
326
- Expect(_Pict.AppData[tmpHashedAggregateValue2]).to.equal('15', 'AggregateValue should equal 15 (SUM of ValueArray via address)');
325
+ Expect(_Pict.manifest.getValueByHash(_Pict.AppData, tmpHashedAggregateValue)).to.equal('15', 'AggregateValue should equal 15 (SUM of ValueArray via hash)');
326
+ Expect(_Pict.manifest.getValueByHash(_Pict.AppData, tmpHashedAggregateValue2)).to.equal('15', 'AggregateValue should equal 15 (SUM of ValueArray via address)');
327
327
  }
328
328
  catch (pError)
329
329
  {
@@ -479,8 +479,8 @@ suite
479
479
  try
480
480
  {
481
481
  _Pict.log.info(`AppData after`, { AppData: _Pict.AppData, tmpHashedAggregateValue, tmpHashedAggregateValue2 });
482
- Expect(_Pict.AppData[tmpHashedAggregateValue]).to.equal('15', 'AggregateValue should equal 15 (SUM of ValueArray via hash)');
483
- Expect(_Pict.AppData[tmpHashedAggregateValue2]).to.equal('15', 'AggregateValue should equal 15 (SUM of ValueArray via address)');
482
+ Expect(_Pict.manifest.getValueByHash(_Pict.AppData, tmpHashedAggregateValue)).to.equal('15', 'AggregateValue should equal 15 (SUM of ValueArray via hash)');
483
+ Expect(_Pict.manifest.getValueByHash(_Pict.AppData, tmpHashedAggregateValue2)).to.equal('15', 'AggregateValue should equal 15 (SUM of ValueArray via address)');
484
484
  }
485
485
  catch (pError)
486
486
  {
@@ -634,7 +634,7 @@ suite
634
634
  const tmpUUID = _Pict.getUUID().substring(0, 8);
635
635
  const tmpDistinctManifest = _Pict.views.PictFormMetacontroller.createDistinctManifest(tmpManifest, tmpUUID);
636
636
  _Pict.log.info('Distinct Manifest:', tmpDistinctManifest);
637
- Expect(tmpDistinctManifest.Sections[0].Groups[0].RecordSetAddress).to.equal(`LevelOfIndirection_${tmpUUID}.DataTableAddress`, 'Group RecordSetAddress should be preserved in distinct manifest.');
637
+ Expect(tmpDistinctManifest.Sections[0].Groups[0].RecordSetAddress).to.equal(`${tmpUUID}.LevelOfIndirection.DataTableAddress`, 'Group RecordSetAddress should be preserved in distinct manifest.');
638
638
  tmpHashedAggregateValue = Object.entries(tmpDistinctManifest.Descriptors).find(([pKey, pValue]) => pValue.OriginalHash == 'AggregateValue')[0];
639
639
  tmpHashedAggregateValue2 = Object.entries(tmpDistinctManifest.Descriptors).find(([pKey, pValue]) => pValue.OriginalHash == 'AggregateValue2')[0];
640
640
  tmpHashedAggregateValue3 = Object.entries(tmpDistinctManifest.Descriptors).find(([pKey, pValue]) => pValue.OriginalHash == 'IndirectAggregateValue')[0];
@@ -658,8 +658,8 @@ suite
658
658
  try
659
659
  {
660
660
  _Pict.log.info(`AppData after`, { AppData: _Pict.AppData, tmpHashedAggregateValue, tmpHashedAggregateValue2, tmpHashedAggregateValue3 });
661
- Expect(_Pict.AppData[tmpHashedAggregateValue]).to.equal('15', 'AggregateValue should equal 15 (SUM of ValueArray via hash)');
662
- Expect(_Pict.AppData[tmpHashedAggregateValue2]).to.equal('15', 'AggregateValue should equal 15 (SUM of ValueArray via address)');
661
+ Expect(_Pict.manifest.getValueByHash(_Pict.AppData, tmpHashedAggregateValue)).to.equal('15', 'AggregateValue should equal 15 (SUM of ValueArray via hash)');
662
+ Expect(_Pict.manifest.getValueByHash(_Pict.AppData, tmpHashedAggregateValue2)).to.equal('15', 'AggregateValue should equal 15 (SUM of ValueArray via address)');
663
663
  Expect(_Pict.manifest.getValueByHash(_Pict.AppData, tmpHashedAggregateValue3)).to.equal('15', 'IndirectAggregateValue should equal 15 (via indirection) using manifest method');
664
664
  }
665
665
  catch (pError)
@@ -823,7 +823,7 @@ suite
823
823
  const tmpUUID = _Pict.getUUID().substring(0, 8);
824
824
  const tmpDistinctManifest = _Pict.views.PictFormMetacontroller.createDistinctManifest(tmpManifest, tmpUUID);
825
825
  _Pict.log.info('Distinct Manifest:', tmpDistinctManifest);
826
- Expect(tmpDistinctManifest.Sections[0].Groups[0].RecordSetAddress).to.equal(`LevelOfIndirection_${tmpUUID}.DataTableAddress`, 'Group RecordSetAddress should be preserved in distinct manifest.');
826
+ Expect(tmpDistinctManifest.Sections[0].Groups[0].RecordSetAddress).to.equal(`${tmpUUID}.LevelOfIndirection.DataTableAddress`, 'Group RecordSetAddress should be preserved in distinct manifest.');
827
827
  tmpHashedAggregateValue = Object.entries(tmpDistinctManifest.Descriptors).find(([pKey, pValue]) => pValue.OriginalHash == 'AggregateValue')[0];
828
828
  tmpHashedAggregateValue2 = Object.entries(tmpDistinctManifest.Descriptors).find(([pKey, pValue]) => pValue.OriginalHash == 'AggregateValue2')[0];
829
829
  tmpHashedAggregateValue3 = Object.entries(tmpDistinctManifest.Descriptors).find(([pKey, pValue]) => pValue.OriginalHash == 'IndirectAggregateValue')[0];
@@ -847,8 +847,8 @@ suite
847
847
  try
848
848
  {
849
849
  _Pict.log.info(`AppData after`, { AppData: _Pict.AppData, tmpHashedAggregateValue, tmpHashedAggregateValue2, tmpHashedAggregateValue3 });
850
- Expect(_Pict.AppData[tmpHashedAggregateValue]).to.equal('15', 'AggregateValue should equal 15 (SUM of ValueArray via hash)');
851
- Expect(_Pict.AppData[tmpHashedAggregateValue2]).to.equal('15', 'AggregateValue should equal 15 (SUM of ValueArray via address)');
850
+ Expect(_Pict.manifest.getValueByHash(_Pict.AppData, tmpHashedAggregateValue)).to.equal('15', 'AggregateValue should equal 15 (SUM of ValueArray via hash)');
851
+ Expect(_Pict.manifest.getValueByHash(_Pict.AppData, tmpHashedAggregateValue2)).to.equal('15', 'AggregateValue should equal 15 (SUM of ValueArray via address)');
852
852
  Expect(_Pict.manifest.getValueByHash(_Pict.AppData, tmpHashedAggregateValue3)).to.equal('15', 'IndirectAggregateValue should equal 15 (via indirection) using manifest method');
853
853
  }
854
854
  catch (pError)
@@ -1 +1 @@
1
- {"version":3,"file":"Pict-Provider-DynamicTabularData.d.ts","sourceRoot":"","sources":["../../../source/providers/Pict-Provider-DynamicTabularData.js"],"names":[],"mappings":";AAaA;;;GAGG;AAEH;;GAEG;AACH;IAEC;;;;;;OAMG;IACH,oBAJW,MAAM,YACN,MAAM,gBACN,MAAM,EAahB;IANA,kBAAkB;IAClB,SADW,GAAG,CACF;IACZ,6BAA6B;IAC7B,MADW,OAAO,MAAM,CAAC,CAChB;IAKV;;;;;;OAMG;IACH,6CAHW,MAAM,GACJ,cAAa,OAAO,CAehC;IAED;;;;;;;OAOG;IACH,+CAJW,MAAM,eACN,MAAM,GACJ,iBAAiB,GAAC,OAAO,CAiBrC;IAED;;;;;;;OAOG;IACH,oDAJW,MAAM,cACN,MAAM,GACJ,iBAAiB,GAAC,OAAO,CA+BrC;IAED;;;;;;;OAOG;IACH,8CAJW,MAAM,kBACN,MAAM,GACJ,OAAO,MAAO,CAkD1B;IAED;;;;;OAKG;IACH,+CAFW,MAAM,QA0DhB;IAGD;;;;;OAKG;IACH,4DAFW,MAAM,QA2BhB;IAED;;;;;;;;OAQG;IACH,iDALW,MAAM,aACN,MAAM,GAAC,MAAM,gBACb,MAAM,GACJ,OAAO,CA4BnB;IAED;;;;;;;OAOG;IACH,iDAJW,MAAM,aACN,MAAM,GAAC,MAAM,GACX,OAAO,CA2BnB;IAED;;;;;;;OAOG;IACH,+CAJW,MAAM,aACN,MAAM,GAAC,MAAM,GACX,OAAO,CAgCnB;IAGD;;;;;;;OAOG;IACH,+CAJW,MAAM,aACN,MAAM,GAAC,MAAM,GACX,OAAO,CA6DnB;CACD;;;;;AAhdD,kCAAkC;AAClC,6CADW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAS3B;;;;;UAIW,MAAM"}
1
+ {"version":3,"file":"Pict-Provider-DynamicTabularData.d.ts","sourceRoot":"","sources":["../../../source/providers/Pict-Provider-DynamicTabularData.js"],"names":[],"mappings":";AAaA;;;GAGG;AAEH;;GAEG;AACH;IAEC;;;;;;OAMG;IACH,oBAJW,MAAM,YACN,MAAM,gBACN,MAAM,EAahB;IANA,kBAAkB;IAClB,SADW,GAAG,CACF;IACZ,6BAA6B;IAC7B,MADW,OAAO,MAAM,CAAC,CAChB;IAKV;;;;;;OAMG;IACH,6CAHW,MAAM,GACJ,cAAa,OAAO,CAehC;IAED;;;;;;;OAOG;IACH,+CAJW,MAAM,eACN,MAAM,GACJ,iBAAiB,GAAC,OAAO,CAiBrC;IAED;;;;;;;OAOG;IACH,oDAJW,MAAM,cACN,MAAM,GACJ,iBAAiB,GAAC,OAAO,CA+BrC;IAED;;;;;;;OAOG;IACH,8CAJW,MAAM,kBACN,MAAM,GACJ,OAAO,MAAO,CAkD1B;IAED;;;;;OAKG;IACH,+CAFW,MAAM,QA2DhB;IAGD;;;;;OAKG;IACH,4DAFW,MAAM,QA2BhB;IAED;;;;;;;;OAQG;IACH,iDALW,MAAM,aACN,MAAM,GAAC,MAAM,gBACb,MAAM,GACJ,OAAO,CA4BnB;IAED;;;;;;;OAOG;IACH,iDAJW,MAAM,aACN,MAAM,GAAC,MAAM,GACX,OAAO,CA2BnB;IAED;;;;;;;OAOG;IACH,+CAJW,MAAM,aACN,MAAM,GAAC,MAAM,GACX,OAAO,CAgCnB;IAGD;;;;;;;OAOG;IACH,+CAJW,MAAM,aACN,MAAM,GAAC,MAAM,GACX,OAAO,CA2DnB;CACD;;;;;AA/cD,kCAAkC;AAClC,6CADW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAS3B;;;;;UAIW,MAAM"}
@@ -1,6 +1,7 @@
1
1
  export = PictFormMetacontroller;
2
2
  /**
3
3
  * @typedef {(a: any, b: any) => number} SortFunction
4
+ * @typedef {import('manyfest').ManifestDescriptor} ManifestDescriptor
4
5
  */
5
6
  /**
6
7
  * Class representing a PictFormMetacontroller.
@@ -221,9 +222,10 @@ declare class PictFormMetacontroller extends libPictViewClass {
221
222
  get isPictMetacontroller(): boolean;
222
223
  }
223
224
  declare namespace PictFormMetacontroller {
224
- export { default_configuration, SortFunction };
225
+ export { default_configuration, SortFunction, ManifestDescriptor };
225
226
  }
226
227
  import libPictViewClass = require("pict-view");
227
228
  declare const default_configuration: Record<string, any>;
228
229
  type SortFunction = (a: any, b: any) => number;
230
+ type ManifestDescriptor = import("manyfest").ManifestDescriptor;
229
231
  //# sourceMappingURL=Pict-View-Form-Metacontroller.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Pict-View-Form-Metacontroller.d.ts","sourceRoot":"","sources":["../../../source/views/Pict-View-Form-Metacontroller.js"],"names":[],"mappings":";AAaA;;GAEG;AAEH;;;;;;GAMG;AACH;IAEC,2DAyBC;IAjBA,yBAA2B;IAE3B,wBAAsF;IAEtF,cAAkC;IAElC,gCAAkC;IAClC,8BAAiC;IAEjC;;;;;;MAOE;IAQH,wCAGC;IARD,kCAGC;IAOD;;;;OAIG;IACH,qBAFa,GAAG,CAaf;IAED;;;;OAIG;IACH,mBAFa,GAAG,CAaf;IAED,yCAYC;IAED;;;;;OAKG;IACH,kCAHW,aAAa,GACX,IAAI,CAsBhB;IA8BD;;;;OAIG;IACH,WAFa,GAAG,CAMf;IAED,gDAGC;IAED,gDAGC;IAED,+CAGC;IAED;;;;OAIG;IACH,2DAJW,MAAM,GAEL,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAW9B;IAED;;;;;;OAMG;IACH,mCANW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,sBACnB,MAAM,UACN,MAAM,GAEL,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC,CAwBtD;IAED;;;;;OAKG;IACH,0BALW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,sBACnB,MAAM,GAEL,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC,CAgCtD;IAED;;;;;;;;;OASG;IACH,kCALW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,UACnB,MAAM,GAEL,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAqO9B;IAED;;;;OAIG;IACH,uCAJW,KAAK,CAAC,MAAM,CAAC,sBACb,MAAM,UACN,MAAM,QAuBhB;IAED;;;OAGG;IACH,6CAHW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,sBACnB,MAAM,SAehB;IAED;;;;;;;;OAQG;IACH,wDAHW,YAAY,SAoHtB;IAED;;;;;;;OAOG;IACH,4CAHW,MAAM,GACJ,IAAI,CAShB;IAED;;;;OAIG;IACH,6BAFa,IAAI,CAQhB;IAED;;;;;;;OAOG;IACH,+DAFW,YAAY,QAatB;IAED;;;;;;;OAOG;IACH,gEAFW,YAAY,QAatB;IAED;;;;;OAKG;IACH,8EAFW,YAAY,QAmBtB;IAED;;;;;;OAMG;IACH,oEAHW,YAAY,GACV,IAAI,CAkDhB;IAED;;;;;;;OAOG;IACH,uEAJW,YAAY,GAEX,IAAI,CAsFf;IAED;;;;;OAKG;IACH,qCAHW,MAAM,GACJ,MAAM,GAAC,OAAO,CA2C1B;IAED,+CAeC;IAED;;;;;;;OAOG;IACH,kFAJW,MAAM,GAEJ,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAoLtC;IA5JC,gCAA0D;IAC1D,yBAAiD;IA6JnD;;;;OAIG;IACH,gCAHW,MAAM,qBACN,MAAM,QA0BhB;IAED;;;OAGG;IACH,yDAHW,MAAM,uBACN,MAAM,QAKhB;IAED;;;;;OAKG;IACH,yDALW,MAAM,uBACN,MAAM,GAEL,OAAO,CAoDlB;IAED;;;;OAIG;IACH,sCAJW,MAAM,GAEL,OAAO,CA0ClB;IAED;;;OAGG;IACH,wDAHW,MAAM,6BAuBhB;IAED,oCAgBC;IAED;;;;OAIG;IACH,4BAFa,OAAO,CAKnB;CACD;;;;;qCAGU,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;oBAn2CjB,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,KAAK,MAAM"}
1
+ {"version":3,"file":"Pict-View-Form-Metacontroller.d.ts","sourceRoot":"","sources":["../../../source/views/Pict-View-Form-Metacontroller.js"],"names":[],"mappings":";AAaA;;;GAGG;AAEH;;;;;;GAMG;AACH;IAEC,2DAyBC;IAjBA,yBAA2B;IAE3B,wBAAsF;IAEtF,cAAkC;IAElC,gCAAkC;IAClC,8BAAiC;IAEjC;;;;;;MAOE;IAQH,wCAGC;IARD,kCAGC;IAOD;;;;OAIG;IACH,qBAFa,GAAG,CAaf;IAED;;;;OAIG;IACH,mBAFa,GAAG,CAaf;IAED,yCAYC;IAED;;;;;OAKG;IACH,kCAHW,aAAa,GACX,IAAI,CAsBhB;IA8BD;;;;OAIG;IACH,WAFa,GAAG,CAMf;IAED,gDAGC;IAED,gDAGC;IAED,+CAGC;IAED;;;;OAIG;IACH,2DAJW,MAAM,GAEL,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAW9B;IAED;;;;;;OAMG;IACH,mCANW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,sBACnB,MAAM,UACN,MAAM,GAEL,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC,CAwBtD;IAED;;;;;OAKG;IACH,0BALW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,sBACnB,MAAM,GAEL,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC,CAgCtD;IAED;;;;;;;;;OASG;IACH,kCALW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,UACnB,MAAM,GAEL,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CA6N9B;IAED;;;;OAIG;IACH,uCAJW,KAAK,CAAC,MAAM,CAAC,sBACb,MAAM,UACN,MAAM,QAuBhB;IAED;;;OAGG;IACH,6CAHW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,sBACnB,MAAM,SAehB;IAED;;;;;;;;OAQG;IACH,wDAHW,YAAY,SAoHtB;IAED;;;;;;;OAOG;IACH,4CAHW,MAAM,GACJ,IAAI,CAShB;IAED;;;;OAIG;IACH,6BAFa,IAAI,CAQhB;IAED;;;;;;;OAOG;IACH,+DAFW,YAAY,QAatB;IAED;;;;;;;OAOG;IACH,gEAFW,YAAY,QAatB;IAED;;;;;OAKG;IACH,8EAFW,YAAY,QAmBtB;IAED;;;;;;OAMG;IACH,oEAHW,YAAY,GACV,IAAI,CAkDhB;IAED;;;;;;;OAOG;IACH,uEAJW,YAAY,GAEX,IAAI,CAsFf;IAED;;;;;OAKG;IACH,qCAHW,MAAM,GACJ,MAAM,GAAC,OAAO,CA2C1B;IAED,+CAeC;IAED;;;;;;;OAOG;IACH,kFAJW,MAAM,GAEJ,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAoLtC;IA5JC,gCAA0D;IAC1D,yBAAiD;IA6JnD;;;;OAIG;IACH,gCAHW,MAAM,qBACN,MAAM,QA0BhB;IAED;;;OAGG;IACH,yDAHW,MAAM,uBACN,MAAM,QAKhB;IAED;;;;;OAKG;IACH,yDALW,MAAM,uBACN,MAAM,GAEL,OAAO,CAoDlB;IAED;;;;OAIG;IACH,sCAJW,MAAM,GAEL,OAAO,CA0ClB;IAED;;;OAGG;IACH,wDAHW,MAAM,6BAuBhB;IAED,oCAgBC;IAED;;;;OAIG;IACH,4BAFa,OAAO,CAKnB;CACD;;;;;qCAGU,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;oBA51CjB,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,KAAK,MAAM;0BAC1B,OAAO,UAAU,EAAE,kBAAkB"}