ghostos 0.1.14 → 0.1.16

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 (118) hide show
  1. package/README.dev.md +5 -0
  2. package/README.md +6 -0
  3. package/lib/api/leafio/core.d.ts +301 -0
  4. package/lib/api/leafio/leafgql.d.ts +30 -0
  5. package/lib/api/leafio/leaflake.d.ts +100 -0
  6. package/lib/api/leafio/leaflake.unit.test.d.ts +1 -0
  7. package/lib/api/metamodel.d.ts +179 -0
  8. package/lib/api/parser/breezyforest.d.ts +1 -0
  9. package/lib/api/parser/elements/schema/directus.d.ts +72 -0
  10. package/lib/api/parser/elements/schema/index.d.ts +2 -0
  11. package/lib/api/parser/eta.d.ts +55 -0
  12. package/lib/api/parser/eta.spec.d.ts +1 -0
  13. package/lib/api/parser/etatreeforest.d.ts +37 -0
  14. package/lib/api/parser/leaf.d.ts +56 -0
  15. package/lib/api/parser/leafgraph-testbed.browser.test.d.ts +1 -0
  16. package/lib/api/parser/leafgraph-tests.browser.test.d.ts +1 -0
  17. package/lib/api/parser/leaflisp/plispdist/index.d.ts +210 -0
  18. package/lib/api/parser/leaflisp/plispstdlib/index.d.ts +396 -0
  19. package/lib/api/parser/leaflisp/test.d.mts +1 -0
  20. package/lib/api/parser/leaflisp/test.d.ts +1 -0
  21. package/lib/api/parser/leaflisp.d.ts +2 -0
  22. package/lib/api/parser/nodelogic/abstraction/index.d.ts +7 -0
  23. package/lib/api/parser/nodelogic/abstraction/leafanchor.d.ts +4 -0
  24. package/lib/api/parser/nodelogic/abstraction/leafgraph.d.ts +6 -0
  25. package/lib/api/parser/nodelogic/abstraction/leaflambdagraph.d.ts +4 -0
  26. package/lib/api/parser/nodelogic/abstraction/leafloopyspell.d.ts +4 -0
  27. package/lib/api/parser/nodelogic/abstraction/leafloopyspell.spec.d.ts +1 -0
  28. package/lib/api/parser/nodelogic/abstraction/leafspell.d.ts +9 -0
  29. package/lib/api/parser/nodelogic/abstraction/leafspell.spec.d.ts +1 -0
  30. package/lib/api/parser/nodelogic/abstraction/leafspelldef.d.ts +5 -0
  31. package/lib/api/parser/nodelogic/common.d.ts +5 -0
  32. package/lib/api/parser/nodelogic/dataflow/index.d.ts +4 -0
  33. package/lib/api/parser/nodelogic/dataflow/leafchronosflow.d.ts +4 -0
  34. package/lib/api/parser/nodelogic/dataflow/leafgateflow.d.ts +10 -0
  35. package/lib/api/parser/nodelogic/dataflow/leafmixflow.d.ts +4 -0
  36. package/lib/api/parser/nodelogic/dataflow/leafmixflow.spec.d.ts +1 -0
  37. package/lib/api/parser/nodelogic/datautils/bottling.browser.test.d.ts +1 -0
  38. package/lib/api/parser/nodelogic/datautils/bottling.d.ts +11 -0
  39. package/lib/api/parser/nodelogic/datautils/index.d.ts +7 -0
  40. package/lib/api/parser/nodelogic/datautils/leafbottle.d.ts +12 -0
  41. package/lib/api/parser/nodelogic/datautils/leafconfig.d.ts +12 -0
  42. package/lib/api/parser/nodelogic/datautils/leafcrate.d.ts +7 -0
  43. package/lib/api/parser/nodelogic/datautils/leafdelabel.d.ts +7 -0
  44. package/lib/api/parser/nodelogic/datautils/leaflabel.d.ts +15 -0
  45. package/lib/api/parser/nodelogic/datautils/leafunbottle.d.ts +12 -0
  46. package/lib/api/parser/nodelogic/elements/index.d.ts +8 -0
  47. package/lib/api/parser/nodelogic/elements/leafdeckclub.d.ts +10 -0
  48. package/lib/api/parser/nodelogic/elements/leafdeckdiamond.d.ts +10 -0
  49. package/lib/api/parser/nodelogic/elements/leafdeckheart.d.ts +10 -0
  50. package/lib/api/parser/nodelogic/elements/leafdeckspade.d.ts +10 -0
  51. package/lib/api/parser/nodelogic/elements/leafelement.d.ts +21 -0
  52. package/lib/api/parser/nodelogic/elements/leafelement.spec.d.ts +1 -0
  53. package/lib/api/parser/nodelogic/elements/leafgnav.d.ts +4 -0
  54. package/lib/api/parser/nodelogic/elements/leafpopupview.d.ts +4 -0
  55. package/lib/api/parser/nodelogic/elements/library/directus.d.ts +13 -0
  56. package/lib/api/parser/nodelogic/elements/library/editor.d.ts +17 -0
  57. package/lib/api/parser/nodelogic/elements/library/form.d.ts +17 -0
  58. package/lib/api/parser/nodelogic/elements/library/gnav.d.ts +17 -0
  59. package/lib/api/parser/nodelogic/elements/library/href.d.ts +14 -0
  60. package/lib/api/parser/nodelogic/elements/library/html.d.ts +17 -0
  61. package/lib/api/parser/nodelogic/elements/library/http.d.ts +17 -0
  62. package/lib/api/parser/nodelogic/elements/library/image.d.ts +13 -0
  63. package/lib/api/parser/nodelogic/elements/library/index.d.ts +25 -0
  64. package/lib/api/parser/nodelogic/elements/library/mediainput.d.ts +14 -0
  65. package/lib/api/parser/nodelogic/elements/library/mediaplayer.d.ts +20 -0
  66. package/lib/api/parser/nodelogic/elements/library/midi.d.ts +17 -0
  67. package/lib/api/parser/nodelogic/elements/library/openai.d.ts +17 -0
  68. package/lib/api/parser/nodelogic/elements/library/popup.d.ts +14 -0
  69. package/lib/api/parser/nodelogic/elements/library/prompt.d.ts +17 -0
  70. package/lib/api/parser/nodelogic/elements/library/rancher.d.ts +13 -0
  71. package/lib/api/parser/nodelogic/elements/library/sound.d.ts +17 -0
  72. package/lib/api/parser/nodelogic/elements/library/sound_lib.d.ts +10 -0
  73. package/lib/api/parser/nodelogic/elements/library/text.d.ts +13 -0
  74. package/lib/api/parser/nodelogic/elements/library/wizardryelements.d.ts +4 -0
  75. package/lib/api/parser/nodelogic/io/index.d.ts +5 -0
  76. package/lib/api/parser/nodelogic/io/leafinflowport.d.ts +10 -0
  77. package/lib/api/parser/nodelogic/io/leafinflowport.spec.d.ts +1 -0
  78. package/lib/api/parser/nodelogic/io/leafmemoryio.d.ts +53 -0
  79. package/lib/api/parser/nodelogic/io/leafmemoryio.spec.d.ts +1 -0
  80. package/lib/api/parser/nodelogic/io/leafoutflowport.d.ts +10 -0
  81. package/lib/api/parser/nodelogic/io/leafoutflowport.spec.d.ts +1 -0
  82. package/lib/api/parser/nodelogic/io/leafradioRX.d.ts +4 -0
  83. package/lib/api/parser/nodelogic/io/leafradioTX.d.ts +4 -0
  84. package/lib/api/parser/nodelogic/io/leafscreenio.d.ts +10 -0
  85. package/lib/api/parser/nodelogic/wizardry/index.d.ts +2 -0
  86. package/lib/api/parser/nodelogic/wizardry/leaflisp.d.ts +19 -0
  87. package/lib/api/parser/nodelogic/wizardry/leaflisp.unit.test.d.ts +1 -0
  88. package/lib/api/parser/nodelogic/wizardry/leaflisp2.unit.test.d.ts +1 -0
  89. package/lib/api/parser/nodelogic/wizardry/leaflisphelp.d.ts +1 -0
  90. package/lib/api/parser/predicates.d.ts +15 -0
  91. package/lib/api/parser/runtime-flow-testbed.browser.test.d.ts +1 -0
  92. package/lib/api/parser/runtime-flow.browser.test.d.ts +1 -0
  93. package/lib/api/utils/crypto.browser.test.d.ts +1 -0
  94. package/lib/api/utils/crypto.d.ts +6 -0
  95. package/lib/api/utils/fetchnodedata.browser.test.d.ts +1 -0
  96. package/lib/api/utils/fetchnodedata.d.ts +2 -0
  97. package/lib/api/utils/leafbase64.browser.test.d.ts +1 -0
  98. package/lib/api/utils/leafbase64.d.ts +2 -0
  99. package/lib/api/utils/leafdataflow.d.ts +23 -0
  100. package/lib/api/utils/leafdataflow.spec.d.ts +1 -0
  101. package/lib/graphql/client.d.ts +13 -0
  102. package/lib/graphql/events.d.ts +5 -0
  103. package/lib/graphql/utils.d.ts +3 -0
  104. package/lib/index.browser.d.ts +41 -0
  105. package/lib/index.cjs +21830 -0
  106. package/lib/index.core.d.ts +41 -0
  107. package/lib/index.core.js +3 -0
  108. package/lib/index.core.js.LICENSE.txt +16 -0
  109. package/lib/index.core.js.map +1 -0
  110. package/lib/index.d.ts +1 -0
  111. package/lib/index.esm.js +1 -1
  112. package/lib/index.esm.js.map +1 -1
  113. package/lib/microservices/persistentio.d.ts +1 -0
  114. package/lib/microservices/screenio.d.ts +1 -0
  115. package/lib/microservices/volatileio.d.ts +1 -0
  116. package/lib/models/dataflow.d.ts +1 -0
  117. package/lib/utils/connectedComponents.d.ts +1 -0
  118. package/package.json +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.core.js","mappings":"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","sources":["webpack://ghostos/webpack/bootstrap","webpack://ghostos/webpack/runtime/define property getters","webpack://ghostos/webpack/runtime/hasOwnProperty shorthand","webpack://ghostos/webpack/runtime/make namespace object","webpack://ghostos/external commonjs \"rxjs/operators\"","webpack://ghostos/external commonjs \"rxjs\"","webpack://ghostos/./src/api/metamodel.js","webpack://ghostos/external commonjs \"graphology\"","webpack://ghostos/./src/utils/connectedComponents.js","webpack://ghostos/./src/api/parser/predicates.js","webpack://ghostos/external commonjs \"buffer\"","webpack://ghostos/external commonjs \"uuid\"","webpack://ghostos/./src/api/utils/leafdataflow.js","webpack://ghostos/external commonjs \"lodash\"","webpack://ghostos/./src/api/parser/nodelogic/io/leafinflowport.js","webpack://ghostos/./src/api/parser/nodelogic/io/leafoutflowport.js","webpack://ghostos/./src/api/parser/nodelogic/datautils/bottling.js","webpack://ghostos/./src/api/parser/nodelogic/io/leafscreenio.js","webpack://ghostos/./src/api/utils/fetchnodedata.js","webpack://ghostos/external commonjs \"fast-safe-stringify\"","webpack://ghostos/./src/api/utils/crypto.js","webpack://ghostos/./src/api/parser/etatreeforest.js","webpack://ghostos/./src/api/parser/nodelogic/io/leafmemoryio.js","webpack://ghostos/../node_modules/tslib/tslib.es6.js","webpack://ghostos/../../src/dataTypes/Token.ts","webpack://ghostos/../../src/dataTypes/SnippetPosition.ts","webpack://ghostos/../../src/scanner.ts","webpack://ghostos/../../src/dataTypes/Literal.ts","webpack://ghostos/../../src/dataTypes/RuntimeError.ts","webpack://ghostos/../../src/utils/fn.ts","webpack://ghostos/../../src/utils/defaultLiterals.ts","webpack://ghostos/../../src/parser.ts","webpack://ghostos/../../src/utils/constants.ts","webpack://ghostos/../../src/dataTypes/PLFunction.ts","webpack://ghostos/../../src/core/const.ts","webpack://ghostos/../../src/core/def.ts","webpack://ghostos/../../src/core/defn.ts","webpack://ghostos/../../src/core/if.ts","webpack://ghostos/../../src/core/case.ts","webpack://ghostos/../../src/dataTypes/Environment.ts","webpack://ghostos/../../src/core/fn.ts","webpack://ghostos/../../src/core/do.ts","webpack://ghostos/../../src/core/side-effect.ts","webpack://ghostos/../../src/interpreter.ts","webpack://ghostos/../../src/index.ts","webpack://ghostos/../../src/utils/string.ts","webpack://ghostos/./src/api/parser/leaflisp/plispstdlib/index.js","webpack://ghostos/./src/api/utils/leafbase64.js","webpack://ghostos/./src/api/parser/nodelogic/common.js","webpack://ghostos/./src/api/parser/nodelogic/wizardry/leaflisp.js","webpack://ghostos/./src/api/parser/nodelogic/dataflow/leafchronosflow.js","webpack://ghostos/./src/api/parser/nodelogic/dataflow/leafmixflow.js","webpack://ghostos/./src/api/parser/nodelogic/dataflow/leafgateflow.js","webpack://ghostos/./src/api/parser/nodelogic/datautils/leaflabel.js","webpack://ghostos/./src/api/parser/nodelogic/datautils/leafdelabel.js","webpack://ghostos/./src/api/parser/nodelogic/datautils/leafbottle.js","webpack://ghostos/./src/api/parser/nodelogic/datautils/leafunbottle.js","webpack://ghostos/./src/api/parser/nodelogic/datautils/leafcrate.js","webpack://ghostos/./src/api/parser/nodelogic/datautils/leafconfig.js","webpack://ghostos/./src/api/parser/nodelogic/elements/leafdeckspade.js","webpack://ghostos/./src/api/parser/nodelogic/elements/leafdeckheart.js","webpack://ghostos/./src/api/parser/nodelogic/elements/leafdeckdiamond.js","webpack://ghostos/./src/api/parser/nodelogic/elements/leafdeckclub.js","webpack://ghostos/./src/api/parser/nodelogic/elements/leafgnav.js","webpack://ghostos/./src/api/parser/nodelogic/elements/leafpopupview.js","webpack://ghostos/external commonjs \"axios\"","webpack://ghostos/./src/api/parser/nodelogic/elements/library/mediaplayer.js","webpack://ghostos/./src/api/parser/nodelogic/elements/library/prompt.js","webpack://ghostos/./src/api/parser/nodelogic/elements/library/popup.js","webpack://ghostos/./src/api/parser/nodelogic/elements/library/editor.js","webpack://ghostos/./src/api/parser/nodelogic/elements/library/mediainput.js","webpack://ghostos/./src/api/parser/nodelogic/elements/library/midi.js","webpack://ghostos/external commonjs \"jzz\"","webpack://ghostos/external commonjs \"tone\"","webpack://ghostos/external commonjs \"tone/build/esm/instrument/Synth.js\"","webpack://ghostos/external commonjs \"tone/build/esm/instrument/AMSynth.js\"","webpack://ghostos/external commonjs \"tone/build/esm/instrument/DuoSynth.js\"","webpack://ghostos/external commonjs \"tone/build/esm/instrument/FMSynth.js\"","webpack://ghostos/external commonjs \"tone/build/esm/instrument/MembraneSynth.js\"","webpack://ghostos/external commonjs \"tone/build/esm/instrument/MetalSynth.js\"","webpack://ghostos/external commonjs \"tone/build/esm/instrument/MonoSynth.js\"","webpack://ghostos/external commonjs \"tone/build/esm/instrument/NoiseSynth.js\"","webpack://ghostos/external commonjs \"tone/build/esm/instrument/PluckSynth.js\"","webpack://ghostos/external commonjs \"tone/build/esm/instrument/PolySynth.js\"","webpack://ghostos/external commonjs \"tone/build/esm/instrument/Sampler.js\"","webpack://ghostos/./src/api/parser/nodelogic/elements/library/sound_lib.js","webpack://ghostos/./src/api/parser/nodelogic/elements/library/sound.js","webpack://ghostos/./src/api/parser/nodelogic/elements/library/gnav.js","webpack://ghostos/./src/api/parser/nodelogic/elements/library/http.js","webpack://ghostos/./src/api/parser/nodelogic/elements/library/href.js","webpack://ghostos/external commonjs \"handlebars\"","webpack://ghostos/./src/api/parser/nodelogic/elements/library/directus.js","webpack://ghostos/./src/api/parser/nodelogic/elements/library/index.js","webpack://ghostos/./src/api/parser/nodelogic/elements/library/html.js","webpack://ghostos/./src/api/parser/nodelogic/elements/library/image.js","webpack://ghostos/./src/api/parser/nodelogic/elements/library/text.js","webpack://ghostos/./src/api/parser/nodelogic/elements/library/form.js","webpack://ghostos/./src/api/parser/nodelogic/elements/leafelement.js","webpack://ghostos/./src/api/parser/breezyforest.js","webpack://ghostos/./src/api/parser/eta.js","webpack://ghostos/./src/api/parser/nodelogic/abstraction/leaflambdagraph.js","webpack://ghostos/./src/api/parser/nodelogic/abstraction/leafspell.js","webpack://ghostos/./src/api/parser/nodelogic/abstraction/leafspelldef.js","webpack://ghostos/./src/api/parser/nodelogic/abstraction/leafloopyspell.js","webpack://ghostos/./src/api/parser/nodelogic/abstraction/leafgraph.js","webpack://ghostos/./src/api/parser/nodelogic/abstraction/leafanchor.js","webpack://ghostos/./src/api/parser/leaf.js","webpack://ghostos/external commonjs \"graphql/language/index.mjs\"","webpack://ghostos/./src/graphql/utils.js","webpack://ghostos/./src/graphql/client.js","webpack://ghostos/./src/graphql/events.js","webpack://ghostos/./src/api/leafio/leaflake.js","webpack://ghostos/external commonjs \"react\"","webpack://ghostos/./src/api/leafio/core.js","webpack://ghostos/./src/api/leafio/leafgql.js"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"rxjs/operators\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"rxjs\");","/************************************\n *\n * author: spark@leautomaton.com\n * date: 5th Nov 2021\n *\n ************************************/\n\nimport { map } from \"rxjs/operators\";\n\n// LEAF IO message metamodel and its type definition\n// {\n// \"control\": {\n// \"provenance\": {\n// \"stateObjInstanceID\": UUID_Type,\n// \"dataOrigin\": OriginType\n// }\n// },\n// \"data\": {nodes: [], edges: []}\n// }\n// test GQL URIs\nconst endpoint_subs = process.env.LEAFGON_ENDPOINT_SUBS; //\"http://localhost:10001/sgraphql\";\nconst websocket_subs = process.env.LEAFGON_WEBSOCKET_SUBS; //\"ws://localhost:10001/sgraphql\";\nconst endpoint_qm = process.env.LEAFGON_ENDPOINT_QM; // \"http://localhost:10001/qmgraphql\";\n// production GQL URIs\n//const endpoint_subs = \"https://www.leafgon.com:10001/sgraphql\",\n//const websocket_subs = \"ws://www.leafgon.com:10001/sgraphql\",\n//const endpoint_qm = \"https://www.leafgon.com:10001/qmgraphql\",\n\nconst LEAFIOmetamodel = {\n breezyforest: {\n _version: \"1.0\",\n _nickname: \"breezyforest\",\n scaffold: {\n map: {\n leaf: {\n logic: {\n type: \"\",\n args: {},\n },\n provenance: {\n api: \"breezyforest\",\n uuid: \"\", // id of an element (either node or edge), a member of one or many graphs\n graph: {\n // information on the graph used to provision this data spark_dev_note: this field may need to be stored elsewhere, not as part of each and every node, as it may vary query to query\n appuuid: \"\", // aka graph uuid\n name: \"\",\n version: \"\",\n },\n },\n appdata: {\n // spark_dev_note: need to sort out the domain of appdata here\n // whether it should refer to the leafeditor as versus to the leafapp used in returning the graph\n // or maybe both\n // leafeditor should be able to store/retrieve a 2d coordinate point for each node defined/declared in leaf, for instance.\n },\n },\n },\n directory: {\n api: [\"leaf\", \"api\"],\n logic: [\"leaf\", \"logic\"],\n type: [\"leaf\", \"logic\", \"type\"],\n args: [\"leaf\", \"logic\", \"args\"],\n provenance: [\"leaf\", \"provenance\"],\n uuid: [\"leaf\", \"provenance\", \"uuid\"],\n leafapp: [\"leaf\", \"provenance\", \"leafapp\"],\n appdata: [\"leaf\", \"appdata\"],\n },\n fetch: (n_e, crawlkey) => {\n // crawlkey can be either an array or a string\n const fetchDive = (x, y) => {\n const car = y[0]; // a lispian pun I guess...\n const cdr = y.slice(1);\n if (cdr.length === 0) return x[car];\n\n // a coding style attempted for tail-call-optimization\n // For explanation, pls refer to https://2ality.com/2015/06/tail-call-optimization.html\n return fetchDive(x[car], cdr);\n };\n try {\n return fetchDive(\n n_e,\n Array.isArray(crawlkey)\n ? crawlkey\n : LEAFIOmetamodel.breezyforest.scaffold.directory[crawlkey],\n );\n } catch {\n // a catch-all scenario in case things didn't work including crawlkey failing to match\n return null;\n }\n },\n },\n originType: { FRONTEND: 1, BACKEND: 2, SCREEN: 4 },\n subsDirectory: {\n readmefirst: {},\n leaflake: {\n bridges: {\n gql: \"clientconfig_full\",\n },\n },\n appintent: {},\n appmodel: {},\n appview: {},\n osview: {},\n osview2: {},\n dataflowplane: {},\n appcache: {},\n },\n IOAccessPermission: {\n // to be used with bitwise operators\n Owner: 0x1,\n Observer: 0x2,\n Contributor: 0x4,\n All: 0x7,\n },\n IOStateGroundZero: {\n // to provide a scaffold of memory structures for LEAF app states\n dirOfSubjects: {}, // stores keyed instances of observable subjects (rxjs BehaviorSubject) (one key, one subject)\n subsCache: {}, // stores keyed instances of up-to-date observed messages of subjects subscribed (one key, one cache per subject)\n subscriptions: {}, // stores keyed instance of subscriptions (One key, one subscription per subject)\n callbacks: {}, // stores keyed callbacks to be called upon the arrival of subscribed messages (One key, one callback per subject)\n // spark_dev_note: The V1.0 implementation of LEAFIOmetamodel (i.e. leafio) allows non-contributing observers to attach\n // any callbacks as desired.\n // However, callbacks inducing mutations in any states may end up (undesirably) affecting the global scope of the app state.\n // Take a closer look at API usage scenarios to better understand any security implications of having this allowed.\n permissions: {}, // stores keyed permissions to read and/or write about subjects. (One key, one permission per subject)\n },\n GQLParameters: {\n clientconfig_full: {\n keepGQLConnected: true,\n dburi_subs: endpoint_subs,\n dburi_subs_ws: websocket_subs,\n dburi_qm: endpoint_qm,\n },\n clientconfig_sub: {\n keepGQLConnected: true,\n dburi_subs: endpoint_subs,\n dburi_subs_ws: websocket_subs,\n },\n clientconfig_qm: {\n dburi_qm: endpoint_qm,\n },\n masterquery: `\n {\n domain\n appid\n nodes {\n uuid\n out_edges {uuid source {uuid} target {uuid} data}\n data\n }\n update {\n added {uuid out_edges {uuid source {uuid} target {uuid} data} data} \n removed {uuid}\n }\n }\n `.replace(/\\s+/g, \" \"), // remove all redundant white spaces in string prior to use, allowing more readable query code to be recorded here\n },\n LEAFdictionary: {\n map: map,\n },\n },\n};\n\n// leafstdlib dataflow js api\nconst _leafstdlib_dataflow_api = (type) => {\n const _breezyforestapi = {\n leafradioRX: {\n // as in lambdactrl.user.leaf\n leaf: {\n logic: {\n type: \"leafradioRX\",\n args: {\n keyname: \"\",\n },\n },\n },\n editorconfig: {\n nodetype: \"circularnamednode\",\n namedatakey: [\"keyname\"],\n bannednames: [\"Lambda\"],\n banduplicatename: true,\n banmultiplenode: false,\n svgicon: {\n unicode: undefined,\n url: \"leafradioRX.svg\",\n width: 40,\n height: 30,\n bgColor: \"rgba(235,255,35,0.2)\",\n jsx: undefined,\n },\n },\n lambdaports: {\n input: undefined,\n output: undefined,\n },\n dataflow: {\n input: undefined,\n output: {\n _leafradiokey: {\n keyname: \"\",\n subsDirectory: Object,\n },\n _leafradiorx: {\n txkey: \"\",\n payload: Object,\n },\n },\n },\n },\n leafradioTX: {\n // as in lambdactrl.user.leaf\n leaf: {\n logic: {\n type: \"leafradioTX\",\n args: {\n keyname: \"\",\n },\n },\n },\n editorconfig: {\n nodetype: \"circularnamednode\",\n namedatakey: [\"keyname\"],\n bannednames: [\"Lambda\"],\n banduplicatename: false,\n banmultiplenode: false,\n svgicon: {\n unicode: undefined,\n url: \"leafradioTX.svg\",\n width: 40,\n height: 30,\n bgColor: \"rgba(135,255,135,0.2)\",\n jsx: undefined,\n },\n },\n lambdaports: {\n input: undefined,\n output: undefined,\n },\n dataflow: {\n input: {\n _leafradiokey: {\n keyname: \"\",\n subsDirectory: Object,\n },\n _leafradiotx: {\n txkey: \"\",\n payload: Object,\n },\n },\n output: undefined,\n },\n },\n leafoutflowport: {\n // as in lambdactrl.user.leaf\n leaf: {\n logic: {\n type: \"leafoutflowport\",\n args: {},\n },\n },\n editorconfig: {\n nodetype: \"tinynode\",\n // namedatakey: ['keyname'],\n //allowmultiplenode: true,\n svgicon: {\n unicode: \"\\u2296\", // minus sign in circle /// '\\u2A2E', // plus sign in right half circle ⨮\n url: undefined,\n jsx: undefined,\n fgColor: \"rgba(255,255,255,1)\",\n bgColor: \"rgba(22,22,55,1)\",\n },\n },\n lambdaports: {\n input: undefined,\n output: undefined,\n },\n dataflow: {\n input: Object,\n output: undefined,\n },\n },\n leafinflowport: {\n // as in lambdactrl.user.leaf\n leaf: {\n logic: {\n type: \"leafinflowport\",\n args: {},\n },\n },\n editorconfig: {\n nodetype: \"tinynode\",\n // namedatakey: ['keyname'],\n //allowmultiplenode: true,\n svgicon: {\n unicode: \"\\u2295\", // circled plus //// '\\u2A2D', // plus sign in left half circle ⨭\n url: undefined,\n jsx: undefined,\n fgColor: \"rgba(255,255,255,1)\",\n bgColor: \"rgba(55,22,22,1)\",\n },\n },\n lambdaports: {\n input: undefined,\n output: undefined,\n },\n dataflow: {\n input: undefined,\n output: Object,\n },\n },\n leafmemoryio: {\n // as in lambdactrl.user.leaf\n leaf: {\n logic: {\n type: \"leafmemoryio\",\n args: {\n //elementname: 'leafdeckheart',\n elementconfig: {\n leafnodename: \"\",\n },\n // persistencyref is disregarded for local memoryio, as its use is only for global scoped memoryio.\n persistencyref: {\n // a uuid4 written up in the cloud upon the relevant global memory being written\n updateref: \"\", // changing updateref would trigger graphql data to be updated in gql clients\n dbref: \"\", // dbref is then used as a reference to query the relevant database for the persistent data.\n },\n },\n },\n },\n editorconfig: {\n nodetype: \"circularnamednode\",\n namedatakey: [\"elementconfig\", \"leafnodename\"],\n banduplicatename: false,\n banmultiplenode: false,\n svgicon: {\n iconname: \"memory io\",\n unicode: undefined,\n url: \"leafmemoryio.svg\",\n jsx: undefined,\n width: 40,\n height: 40,\n bgColor: \"rgba(255,255,255,0.6)\",\n },\n },\n lambdaports: {\n input: Object,\n output: Object,\n },\n dataflow: {\n input: {\n _leafdeckdiamond: Object,\n _leafdeckclub: Object,\n },\n output: {\n _leafdeckheart: Object,\n },\n },\n },\n leafscreenio: {\n // as in lambdactrl.user.leaf\n leaf: {\n logic: {\n type: \"leafscreenio\",\n args: {\n lispexpression: \"\",\n //lispnodename: 'leaflisp'\n },\n },\n },\n editorconfig: {\n nodetype: \"circularnode\",\n //namedatakey: ['lispnodename'],\n banduplicatename: false,\n banmultiplenode: false,\n svgicon: {\n iconname: \"screen io\",\n unicode: undefined,\n url: \"leafscreenio.svg\",\n jsx: undefined,\n width: 40,\n height: 40,\n bgColor: \"rgba(205,155,215,0.6)\",\n },\n },\n lambdaports: {\n input: Object,\n output: Object,\n },\n dataflow: {\n input: {\n _leaflisp_in: Object,\n },\n output: {\n _leaflisp_out: Object,\n },\n },\n },\n // leaf elements\n leafdeckspade: {\n // as in lambdactrl.user.leaf\n leaf: {\n logic: {\n type: \"leafdeckspade\",\n args: {\n //elementname: 'leafdeckspade',\n elementconfig: {\n leafnodename: \"\",\n },\n },\n },\n },\n editorconfig: {\n nodetype: \"circularnode\",\n namedatakey: [\"elementconfig\", \"leafnodename\"],\n //allowmultiplenode: false,\n banmultiplenode: true,\n //svgicon: {\n // unicode: undefined,\n // url: undefined,\n // jsx:\n // <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"#f8f\" className=\"bi bi-suit-spade-fill\" viewBox=\"0 0 16 16\">\n // <path d=\"M7.184 11.246A3.5 3.5 0 0 1 1 9c0-1.602 1.14-2.633 2.66-4.008C4.986 3.792 6.602 2.33 8 0c1.398 2.33 3.014 3.792 4.34 4.992C13.86 6.367 15 7.398 15 9a3.5 3.5 0 0 1-6.184 2.246 19.92 19.92 0 0 0 1.582 2.907c.231.35-.02.847-.438.847H6.04c-.419 0-.67-.497-.438-.847a19.919 19.919 0 0 0 1.582-2.907z\"/>\n // </svg>\n //},\n svgicon: {\n unicode: undefined,\n url: \"leafspade.svg\",\n jsx: undefined,\n },\n },\n lambdaports: {\n input: Object, //undefined,\n output: Object,\n },\n dataflow: {\n input: {\n _leafdeckdiamond: Object,\n _leafdeckclub: Object,\n },\n output: {\n _leafdeckspade: Object,\n },\n },\n },\n leafdeckheart: {\n // as in lambdactrl.user.leaf\n leaf: {\n logic: {\n type: \"leafdeckheart\",\n args: {\n //elementname: 'leafdeckheart',\n elementconfig: {\n leafnodename: \"\",\n },\n },\n },\n },\n editorconfig: {\n nodetype: \"circularnamednode\",\n namedatakey: [\"elementconfig\", \"leafnodename\"],\n banduplicatename: true,\n banmultiplenode: false,\n //svgicon: {unicode: undefined,\n // url: undefined,\n // jsx:\n // <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"#f8f\" className=\"bi bi-suit-spade-fill\" viewBox=\"0 0 16 16\">\n // <path d=\"M4 1c2.21 0 4 1.755 4 3.92C8 2.755 9.79 1 12 1s4 1.755 4 3.92c0 3.263-3.234 4.414-7.608 9.608a.513.513 0 0 1-.784 0C3.234 9.334 0 8.183 0 4.92 0 2.755 1.79 1 4 1z\"/>\n // </svg>\n //},\n svgicon: {\n unicode: undefined,\n url: \"leafheart.svg\",\n jsx: undefined,\n },\n },\n lambdaports: {\n input: Object,\n output: Object,\n },\n dataflow: {\n input: {\n _leafdeckdiamond: Object,\n _leafdeckclub: Object,\n },\n output: {\n _leafdeckheart: Object,\n },\n },\n },\n leafdeckdiamond: {\n // as in lambdactrl.user.leaf\n leaf: {\n logic: {\n type: \"leafdeckdiamond\",\n args: {\n //elementname: 'leafdeckdiamond',\n elementconfig: {\n leafnodename: \"\",\n },\n },\n },\n },\n editorconfig: {\n nodetype: \"circularnamednode\",\n namedatakey: [\"elementconfig\", \"leafnodename\"],\n svgicon: { unicode: undefined, url: \"diamond2.svg\", jsx: undefined },\n },\n lambdaports: {\n input: Object,\n output: Object,\n },\n dataflow: {\n input: {\n _leafdeckclub: Object,\n },\n output: {\n _leafdeckdiamond: Object,\n },\n },\n },\n leafdeckclub: {\n // as in lambdactrl.user.leaf\n leaf: {\n logic: {\n type: \"leafdeckclub\",\n args: {\n //elementname: 'leafdeckclub',\n elementconfig: {\n leafnodename: \"\",\n },\n },\n },\n },\n editorconfig: {\n nodetype: \"circularnamednode\",\n namedatakey: [\"elementconfig\", \"leafnodename\"],\n svgicon: { unicode: undefined, url: \"club3.svg\", jsx: undefined },\n },\n lambdaports: {\n input: Object,\n output: Object,\n },\n dataflow: {\n input: {\n _leafdeckclubinit: Object,\n },\n output: {\n _leafdeckclub: Object,\n },\n },\n },\n leafelement: {\n // as in lambdactrl.user.leaf\n leaf: {\n logic: {\n type: \"leafelement\",\n args: {\n elementname: \"\",\n svgicon: { unicode: undefined, url: \"\", jsx: Object },\n elementconfig: \"\",\n },\n },\n },\n editorconfig: {\n nodetype: \"circularnamednode\",\n is_committable: true,\n namedatakey: [\"elementname\"],\n //bannednames: ['Lambda'],\n allowednames: [\n \"gnav\",\n \"popup\",\n \"editor\",\n \"text\",\n \"prompt\",\n \"http\",\n \"href\",\n \"mediaplayer\",\n \"image\",\n \"mediainput\",\n \"midi\",\n \"sound\",\n \"html\",\n \"form\",\n \"directus\",\n \"openai\",\n \"rancher\",\n ],\n banduplicatename: false,\n banmultiplenode: false,\n svgicon: {\n unicode: undefined,\n url: \"leafelement.svg\", // squaredcircle.svg\n width: 40,\n height: 40,\n bgColor: \"rgba(35,5,15,0.7)\",\n fgColor: \"rgba(255,255,255,1)\",\n jsx: undefined,\n },\n },\n lambdaports: {\n input: Object,\n output: Object,\n },\n dataflow: {\n input: Object,\n output: Object,\n },\n }, // shall support a growing list of element types and their UX definitions such as leafgnav, leafpopup, leafeditor, leafimage, leafvideo, leafaudio, leaftext, leafd3, leafgraphics etc.\n // leaf abstraction\n leafgraph: {\n // as in lambdactrl.user.leaf\n leaf: {\n logic: {\n type: \"leafgraph\",\n args: {\n graphuuid: \"\",\n domain: \"\",\n appid: \"\",\n graphaddrstr: \"\",\n },\n },\n },\n editorconfig: {\n nodetype: \"circularnamednode\",\n namedatakey: [\"graphaddrstr\"],\n svgicon: {\n unicode: \"\\u2735\", // pinwheel_star symbol ✵\n url: undefined, //'leafgraph.svg',\n jsx: undefined,\n fgColor: \"rgba(255,255,255,1.0)\",\n bgColor: \"rgba(220,02,100, 0.5)\",\n },\n },\n lambdaports: {\n input: Object,\n output: Object,\n },\n dataflow: {\n input: Object,\n output: Object,\n },\n }, // completed 5 feb 2022, changed the name from _leafapp to _leafgraph on 9 Mar 2022\n leaflambdagraph: {\n // as in lambdactrl.user.leaf\n leaf: {\n logic: {\n type: \"leaflambdagraph\",\n args: {\n //lambdanodename: 'lambda graph'\n },\n },\n },\n editorconfig: {\n nodetype: \"circularnode\",\n //namedatakey: ['lambdanodename'],\n svgicon: {\n iconname: \"contextual lambda\",\n unicode: \"\\u03BB\",\n url: undefined,\n jsx: undefined,\n fgColor: \"rgba(255,255,255,1.0)\",\n bgColor: \"rgba(0,0,0,0.5)\",\n },\n },\n lambdaports: {\n input: Object,\n output: Object,\n },\n dataflow: {\n input: Object,\n output: Object,\n },\n }, // completed 20 jan 2022\n leafanchor: {\n // as in lambdactrl.user.leaf\n leaf: {\n logic: {\n type: \"leafanchor\",\n args: {},\n },\n },\n editorconfig: {\n nodetype: \"tinynode\",\n svgicon: {\n unicode: undefined, //'\\u2646', // anchor_symbol ♆\n url: \"trident_white.svg\",\n width: 15,\n height: 15,\n jsx: undefined,\n fgColor: \"rgba(255,255,255,1)\",\n bgColor: \"rgba(102, 102, 255, 1)\",\n },\n },\n lambdaports: {\n input: undefined,\n output: undefined,\n },\n dataflow: {\n input: undefined,\n output: undefined,\n },\n },\n leafspelldef: {\n // as in lambdactrl.user.leaf\n leaf: {\n logic: {\n type: \"leafspelldef\",\n args: {\n spellname: \"\",\n svgicon: { unicode: undefined, url: \"\", jsx: Object },\n },\n },\n },\n editorconfig: {\n //nodetype: 'circularnamednode',\n nodetype: \"rectangularnamednode\",\n namedatakey: [\"spellname\"],\n banduplicatename: true,\n svgicon: {\n iconname: \"spelldef\",\n unicode: undefined,\n url: \"leafspell.svg\",\n jsx: undefined,\n bgColor: \"rgba(80,80,135,0.8)\",\n fgColor: \"rgba(250,250,250,1.0)\",\n width: 40,\n height: 30,\n },\n },\n lambdaports: {\n input: Object,\n output: undefined,\n },\n dataflow: {\n input: undefined,\n output: undefined,\n },\n }, // changed the name from _leafoperator to _leafspelldef and _leafspell on 9 Mar 2022\n leafspell: {\n // as in lambdactrl.user.leaf\n leaf: {\n logic: {\n type: \"leafspell\",\n args: {\n spellname: \"\",\n },\n },\n },\n editorconfig: {\n //nodetype: 'rectangularnamednode',\n nodetype: \"circularnamednode\",\n namedatakey: [\"spellname\"],\n svgicon: {\n unicode: undefined,\n //url: 'leafspell.svg',\n url: \"leafloopyspell.svg\",\n jsx: undefined,\n //bgColor: 'rgba(80,80,135,0.8)',\n //fgColor: 'rgba(250,250,250,1.0)',\n bgColor: \"rgba(80,180,135,0.8)\",\n fgColor: \"rgba(250,250,250,1.0)\",\n width: 40,\n height: 30,\n },\n },\n lambdaports: {\n input: Object,\n output: Object,\n },\n dataflow: {\n input: Object,\n output: Object,\n },\n }, // parsing this type is taken care of separately in three parsing steps involving leaf standard spells, leaf curated spells and user-defined spells\n leafloopyspell: {\n // as in lambdactrl.user.leaf\n leaf: {\n logic: {\n type: \"leafloopyspell\",\n args: {\n //spellname: '',\n },\n },\n },\n editorconfig: {\n nodetype: \"rectangularnode\",\n //namedatakey: ['spellname'],\n banduplicatename: true,\n svgicon: {\n iconname: \"loopy spell\",\n unicode: undefined,\n url: \"leafloopyspell.svg\",\n jsx: undefined,\n bgColor: \"rgba(80,180,135,0.8)\",\n fgColor: \"rgba(250,250,250,1.0)\",\n width: 40,\n height: 30,\n },\n },\n lambdaports: {\n input: Object,\n output: Object,\n },\n dataflow: {\n input: Object,\n output: Object,\n },\n }, // a new concept consolidating the likes of 'map' among reactive operators, but in a themetically more compatible fashion.\n // leaf dataflow utils\n leafsyncflow: {\n // as in lambdactrl.user.leaf\n leaf: {\n logic: {\n type: \"leafsyncflow\",\n args: {\n //clockname: 'sync'\n },\n },\n },\n // as in lambdactrl.gos.leaf.fconfig\n fconfig: {\n inputsync: {\n combineOperator: \"combine\", // as defined in leaf.js combineOpDictionary, a choice of merge, combine, combineLatest, concat, or race\n },\n },\n editorconfig: {\n nodetype: \"circularnode\",\n //namedatakey: ['clockname'],\n svgicon: {\n unicode: undefined,\n iconname: \"sync\",\n url: \"leafsyncflow.svg\",\n jsx: undefined,\n bgColor: \"rgba(80,200,255,1.0)\",\n width: 40,\n height: 40,\n },\n },\n lambdaports: {\n input: Object,\n output: Object,\n },\n dataflow: {\n input: Object,\n output: Object,\n },\n },\n leafchronosflow: {\n // as in lambdactrl.user.leaf\n leaf: {\n logic: {\n type: \"leafchronosflow\",\n args: {\n //clockname: 'sync'\n },\n },\n },\n // as in lambdactrl.gos.leaf.fconfig\n fconfig: {\n inputsync: {\n combineOperator: \"combine\", // as defined in leaf.js combineOpDictionary, a choice of merge, combine, combineLatest, concat, or race\n },\n },\n editorconfig: {\n nodetype: \"circularnode\",\n //namedatakey: ['clockname'],\n svgicon: {\n unicode: undefined,\n iconname: \"Chronos\",\n url: \"leafsyncflow.svg\",\n jsx: undefined,\n bgColor: \"rgba(80,200,255,1.0)\",\n width: 40,\n height: 40,\n },\n },\n lambdaports: {\n input: Object,\n output: Object,\n },\n dataflow: {\n input: Object,\n output: Object,\n },\n },\n leafasyncflow: {\n // as in lambdactrl.user.leaf\n leaf: {\n logic: {\n type: \"leafasyncflow\",\n args: {\n //clockname: 'sync'\n },\n },\n },\n // as in lambdactrl.gos.leaf.fconfig\n fconfig: {\n inputsync: {\n combineOperator: \"combine\", // as defined in leaf.js combineOpDictionary, a choice of merge, combine, combineLatest, concat, or race\n },\n },\n editorconfig: {\n nodetype: \"circularnode\",\n //namedatakey: ['clockname'],\n svgicon: {\n unicode: undefined,\n iconname: \"async\",\n url: \"leafsyncflow.svg\",\n jsx: undefined,\n bgColor: \"rgba(80,200,255,1.0)\",\n width: 40,\n height: 40,\n },\n },\n lambdaports: {\n input: Object,\n output: Object,\n },\n dataflow: {\n input: Object,\n output: Object,\n },\n },\n leafmixflow: {\n // as in lambdactrl.user.leaf\n leaf: {\n logic: {\n type: \"leafmixflow\",\n args: {\n mixOperator: \"merge\", // mixing data as in array.zip or .concat\n //mixnodename: 'mix',\n },\n },\n },\n // as in lambdactrl.gos.leaf.fconfig\n fconfig: {\n inputsync: undefined,\n },\n editorconfig: {\n nodetype: \"circularnode\",\n //namedatakey: ['mixnodename'],\n svgicon: {\n iconname: \"mix\",\n unicode: undefined,\n url: \"leafmixflow.svg\",\n jsx: undefined,\n bgColor: \"rgba(80,150,255,0.8)\",\n width: 40,\n height: 40,\n },\n },\n lambdaports: {\n input: Object, // do the mixing if lambdaFunc evaluates true\n output: Object,\n },\n dataflow: {\n input: Object,\n output: Object,\n },\n },\n leafgateflow: {\n // as in lambdactrl.user.leaf\n leaf: {\n logic: {\n type: \"leafgateflow\",\n args: {\n keyname: \"\",\n notgatetoggle: false, // true: it is a NOT gate, false: it is a normal gate\n },\n },\n },\n // as in lambdactrl.gos.leaf.fconfig\n fconfig: {\n inputsync: {\n combineOperator: \"merge\", // as defined in leaf.js combineOpDictionary, a choice of merge, zip, zipLatest, concat, or race\n },\n },\n editorconfig: {\n nodetype: \"circularnamedboolnode\",\n namedatakey: [\"keyname\"],\n toggledatakey: [\"notgatetoggle\"],\n svgicon: {\n unicode: undefined,\n //url: 'leafgateflow.svg',\n url: \"leafgate.svg\",\n jsx: undefined,\n width: 40,\n height: 30,\n bgColor0: \"rgba(135,55,135,0.2)\",\n bgColor1: \"rgba(35,255,135,0.2)\",\n toggleSymbol0: \"\\u229c\", // equality symbol\n toggleSymbol1: \"\\u2260\", // inequality symbol\n },\n },\n lambdaports: {\n input: Object, // do the gating if lambdaFunc evaluates true\n output: Object,\n },\n dataflow: {\n input: Object,\n output: Object,\n },\n },\n leaflabel: {\n // as in lambdactrl.user.leaf\n leaf: {\n logic: {\n type: \"leaflabel\",\n args: {\n labelstr: \"\",\n },\n },\n },\n editorconfig: {\n nodetype: \"circularnamednode\",\n namedatakey: [\"labelstr\"],\n svgicon: {\n unicode: undefined,\n url: \"leaflabel.svg\",\n jsx: undefined,\n width: 40,\n height: 30,\n bgColor: \"rgba(165,55,185,0.7)\",\n },\n },\n lambdaports: {\n input: Object, // do the label in the lambda graph scope\n output: Object,\n },\n dataflow: {\n input: Object,\n output: Object,\n },\n }, // completed 5 feb 2022\n leafdelabel: {\n // as in lambdactrl.user.leaf\n leaf: {\n logic: {\n type: \"leafdelabel\",\n args: {\n labelstr: \"\",\n },\n },\n },\n editorconfig: {\n nodetype: \"circularnamednode\",\n namedatakey: [\"labelstr\"],\n svgicon: {\n unicode: undefined,\n url: \"leafdelabel.svg\",\n jsx: undefined,\n width: 40,\n height: 30,\n bgColor: \"rgba(235,55,135,0.7)\",\n },\n },\n lambdaports: {\n input: Object, // do the delabel in the lambda graph scope\n output: Object,\n },\n dataflow: {\n input: Object,\n output: Object,\n },\n }, // completed 5 feb 2022\n // // use bottle/unbottle to support structuring/destructuring of json objects,\n //'leafbottle2json': {\n // input: {\n\n // },\n // output: {\n\n // }\n //}, //(spark_dev_note: (11 Mar 2022) use this bottle 2 json converter prior to consumption by leaflisp)\n //'leafjson2bottle': {\n // input: {\n\n // },\n // output: {\n\n // }\n //}, //(spark_dev_note: (11 Mar 2022) use this json 2 bottle converter prior to data consumption by any leaf constructs downstream of leaflisp)\n // spark_dev_note: implement these two converters built into _leaflisp\n leafbottle: {\n // as in lambdactrl.user.leaf\n leaf: {\n logic: {\n type: \"leafbottle\",\n args: {\n bottlekey: \"\",\n },\n },\n },\n editorconfig: {\n nodetype: \"circularnamednode\",\n namedatakey: [\"bottlekey\"],\n banduplicatename: false,\n banmultiplenode: false,\n svgicon: {\n unicode: undefined,\n url: \"leafbottle.svg\",\n jsx: undefined,\n width: 40,\n height: 30,\n bgColor: \"rgba(135,255,135,0.2)\",\n },\n },\n lambdaports: {\n input: Object,\n output: Object,\n },\n dataflow: {\n input: Object,\n output: Object,\n },\n }, // completed 5 feb 2022\n leafunbottle: {\n // as in lambdactrl.user.leaf\n leaf: {\n logic: {\n type: \"leafunbottle\",\n args: {\n bottlekey: \"\",\n },\n },\n },\n editorconfig: {\n nodetype: \"circularnamednode\",\n namedatakey: [\"bottlekey\"],\n banduplicatename: false,\n banmultiplenode: false,\n svgicon: {\n unicode: undefined,\n url: \"leafunbottle.svg\",\n jsx: undefined,\n width: 40,\n height: 30,\n bgColor: \"rgba(255,155,215,0.4)\",\n },\n },\n lambdaports: {\n input: undefined,\n output: Object,\n },\n dataflow: {\n input: Object,\n output: Object,\n },\n }, // completed 5 feb 2022\n //'leafbottlecheck': _leafbottlecheck,\n leafcrate: {\n // as in lambdactrl.user.leaf\n leaf: {\n logic: {\n type: \"leafcrate\",\n args: {},\n },\n },\n editorconfig: {\n nodetype: \"circularnode\",\n svgicon: {\n iconname: \"{crate}\",\n unicode: undefined,\n url: \"leafcrate.svg\",\n jsx: undefined,\n width: 40,\n height: 40,\n bgColor: \"rgba(155,205,85,0.7)\",\n },\n },\n lambdaports: {\n input: Object,\n output: Object,\n },\n dataflow: {\n input: Object,\n output: Object,\n },\n },\n leafconfig: {\n // as in lambdactrl.user.leaf\n leaf: {\n logic: {\n type: \"leafconfig\",\n args: {},\n },\n },\n editorconfig: {\n nodetype: \"rectangularnode\",\n banmultiplenode: true,\n svgicon: {\n iconname: \"config\",\n unicode: undefined,\n url: \"leafconfig.svg\",\n jsx: undefined,\n width: 40,\n height: 40,\n //bgColor: 'rgba(255,205,85,0.7)',\n bgColor: \"rgba(255,205,85,1.0)\",\n },\n },\n lambdaports: {\n input: Object,\n output: Object,\n },\n dataflow: {\n input: Object,\n output: Object,\n },\n },\n // leaf arcane wizardry\n leaflisp: {\n // as in lambdactrl.user.leaf\n leaf: {\n logic: {\n type: \"leaflisp\",\n args: {\n lispexpression: \"\",\n //lispnodename: 'leaflisp'\n },\n },\n },\n editorconfig: {\n nodetype: \"circularnode\",\n //namedatakey: ['lispexpression'],\n svgicon: {\n iconname: \"leaflisp\",\n unicode: undefined,\n url: \"leaflisp.svg\",\n jsx: undefined,\n width: 40,\n height: 40,\n bgColor: \"rgba(205,255,215,0.7)\",\n },\n },\n lambdaports: {\n input: Object,\n output: Object,\n },\n dataflow: {\n input: {\n _leaflisp_in: Object,\n },\n output: {\n _leaflisp_out: Object,\n },\n },\n }, // completed 20 jan 2022\n //'leafmap': _leafmap,\n };\n\n if (type === undefined) return _breezyforestapi;\n else if (type in _breezyforestapi) return _breezyforestapi[type];\n else return undefined; // exclude any non-standard types and any spells\n};\n\nconst _breezyforeststdlib_name = {\n outport: \"leafoutflowport\",\n inport: \"leafinflowport\",\n screenio: \"leafscreenio\",\n memoryio: \"leafmemoryio\",\n spade: \"leafdeckspade\",\n heart: \"leafdeckheart\",\n diamond: \"leafdeckdiamond\",\n club: \"leafdeckclub\",\n element: \"leafelement\",\n anchor: \"leafanchor\",\n leafgraph: \"leafgraph\",\n lambda: \"leaflambdagraph\",\n spelldef: \"leafspelldef\",\n spell: \"leafspell\",\n loopyspell: \"leafloopyspell\",\n label: \"leaflabel\",\n delabel: \"leafdelabel\",\n bottle: \"leafbottle\",\n unbottle: \"leafunbottle\",\n crate: \"leafcrate\",\n config: \"leafconfig\",\n chronos: \"leafchronosflow\",\n async: \"leafasyncflow\",\n sync: \"leafsyncflow\",\n mix: \"leafmixflow\",\n gate: \"leafgateflow\",\n leaflisp: \"leaflisp\",\n};\nconst _breezyforeststdlib_hierarchy = {\n /* ********************* LEAF standard library ********************* */\n //'leaftracker': _leaftracker, // deprecated on 9 Mar 2022, as its function can be supported by leafgraph that allows users to refer to the leafdeckspade of any chosen graph allowable.\n // leaf io\n io: [\n \"leafradioRX\",\n \"leafradioTX\",\n \"leafoutflowport\",\n \"leafinflowport\",\n \"leafscreenio\",\n \"leafmemoryio\",\n ],\n // leaf elements\n // (11 Mar 2022) refactor and migrate and consolidate the management of all elements to leafelement\n elements: [\n \"leafdeckspade\",\n \"leafdeckheart\",\n \"leafdeckdiamond\",\n \"leafdeckclub\",\n \"leafelement\", // shall support a growing list of element types and their UX definitions of leafgnav, leafpopup, leafeditor, leafimage, leafvideo, leafaudio, leaftext, leafd3, leafgraphics etc.\n ],\n // leaf abstraction\n abstraction: [\n \"leafgraph\", // completed 5 feb 2022, changed the name from _leafapp to _leafgraph on 9 Mar 2022\n \"leaflambdagraph\", // completed 20 jan 2022\n \"leafspelldef\", // changed the name from _leafoperator to _leafspelldef and _leafspell on 9 Mar 2022\n \"leafspell\", // parsing this type is taken care of separately in three parsing steps involving leaf standard spells, leaf curated spells and user-defined spells\n \"leafloopyspell\", // a new concept consolidating the likes of 'map' among reactive operators, but in a themetically more compatible fashion.\n ],\n // leaf dataflow utils\n dataflow: [\n ////'leafsyncflow': _leafsyncflow,\n \"leaflabel\", // completed 5 feb 2022\n \"leafdelabel\", // completed 5 feb 2022\n // // use bottle/unbottle to support structuring/destructuring of json objects,\n //'leafbottle2json': _leafbottle2json, //(spark_dev_note: (11 Mar 2022) use this bottle 2 json converter prior to consumption by leaflisp)\n //'leafjson2bottle': _leafjson2bottle, //(spark_dev_note: (11 Mar 2022) use this json 2 bottle converter prior to data consumption by any leaf constructs downstream of leaflisp)\n // spark_dev_note: implement these two converters built into _leaflisp\n \"leafbottle\", // completed 5 feb 2022\n \"leafunbottle\", // completed 5 feb 2022\n //'leafbottlecheck': _leafbottlecheck,\n \"leafcrate\",\n ],\n // leaf arcane wizardry\n arcane: [\n \"leaflisp\", // completed 20 jan 2022\n ],\n //'leafmap': _leafmap,\n};\n\nconst _edge_handle_dict = {\n leaflambdaedge: { sourceHandle: \"out_aux\", targetHandle: \"in_aux\" },\n leafanchoredge: { sourceHandle: \"out_anchor\", targetHandle: \"in_anchor\" },\n leafdataedge: { sourceHandle: \"out_a\", targetHandle: \"in_a\" },\n};\nconst _edge_style_dict = {\n leaflambdaedge: { stroke: \"#fff\", fillOpacity: 0 },\n leafanchoredge: { stroke: \"#88f\", fillOpacity: 0 },\n leafdataedge: { stroke: \"#fff\", fillOpacity: 0 },\n};\n\nexport {\n LEAFIOmetamodel,\n _leafstdlib_dataflow_api,\n _breezyforeststdlib_hierarchy,\n _edge_handle_dict,\n _edge_style_dict,\n _breezyforeststdlib_name,\n};\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"graphology\");","// This is extracted from an npm package \"graphology-components\"\n// as the npm package only supports CommonJS, not ESM.\n// This copy provides an ESM alternative of the same functionalities, in particular \"connectedComponents\"\n\n// Minimal isGraph utility (from graphology-utils/is-graph)\nfunction isGraph(value) {\n return (\n value !== null &&\n typeof value === \"object\" &&\n typeof value.addUndirectedEdgeWithKey === \"function\" &&\n typeof value.dropNode === \"function\" &&\n typeof value.multi === \"boolean\"\n );\n}\n\n// Minimal DFSStack (from graphology-indices/dfs-stack)\nclass DFSStack {\n constructor(graph) {\n this.graph = graph;\n this.stack = new Array(graph.order);\n this.seen = new Set();\n this.size = 0;\n }\n hasAlreadySeenEverything() {\n return this.seen.size === this.graph.order;\n }\n countUnseenNodes() {\n return this.graph.order - this.seen.size;\n }\n forEachNodeYetUnseen(callback) {\n const seen = this.seen;\n const graph = this.graph;\n graph.someNode(function (node, attr) {\n if (seen.size === graph.order) return true;\n if (seen.has(node)) return false;\n const shouldBreak = callback(node, attr);\n if (shouldBreak) return true;\n return false;\n });\n }\n has(node) {\n return this.seen.has(node);\n }\n push(node) {\n const seenSizeBefore = this.seen.size;\n this.seen.add(node);\n if (seenSizeBefore === this.seen.size) return false;\n this.stack[this.size++] = node;\n return true;\n }\n pop() {\n if (this.size === 0) return;\n return this.stack[--this.size];\n }\n}\n\n// The actual connectedComponents function\nexport function connectedComponents(graph) {\n if (!isGraph(graph))\n throw new Error(\"connectedComponents: the given graph is not a valid graphology instance.\");\n\n if (!graph.order) return [];\n\n const stack = new DFSStack(graph);\n const push = stack.push.bind(stack);\n\n const components = [];\n\n stack.forEachNodeYetUnseen(function (node) {\n const component = [];\n stack.push(node);\n let source;\n while (stack.size !== 0) {\n source = stack.pop();\n component.push(source);\n graph.forEachNeighbor(source, push);\n }\n components.push(component);\n });\n\n return components;\n}\n","// a bunch of component predicates defined\n\n/*\n * @component: is a list of uuids for the nodes comprising the component\n * @leafgraph: an object returned by reconstructLEAFGraph() in leaf.js, structured in the following format,\n * providing information just enough to parse any LEAF logical constructs in the given leaf graph:\n * {\n * graph: {lambda: lambdagraph, dataflow: dataflowgraph},\n * spelldefs: spelldefnodes,\n * edges: {\n * data: {sources: datasources, targets: datatargets},\n * lambda: {sources: lambdasources, targets: lambdatargets, sourcelut: lambdasourcelut},\n * anchor: {targets: anchortargets}\n * }\n * }\n * Some examples of logical analysis done by this predicate module:\n * a LEAF component is a runtime LEAF component if none of its nodes is part of lambdasources.\n * a LEAF component is a lambda LEAF component if any of its nodes is part of lambdasources.\n * a LEAF component is an anchored LEAF component if any of its nodes is part of anchortargets.\n */\nconst isAnchoredComponent = (component, leafgraph) => {\n return component.some((nodeuuid) => {\n const isanchored = leafgraph.edges.anchor.targets.has(nodeuuid);\n if (!isanchored) {\n const leafnode = leafgraph.graph.lambda.getNodeAttributes(nodeuuid).leafnode;\n const isanchornode = \"leafanchor\" === leafnode.data.leaf.logic.type;\n return isanchornode;\n }\n return isanchored;\n });\n};\nconst isRuntimeComponent = (component, leafgraph) => {\n return (\n component.every((nodeuuid) => {\n // all nodes in the component not be a lambda source\n return !leafgraph.edges.lambda.sources.has(nodeuuid);\n }) &&\n component.every((nodeuuid) => {\n // all nodes in the component either a dataflow source or a dataflow target\n return (\n leafgraph.edges.data.sources.has(nodeuuid) || leafgraph.edges.data.targets.has(nodeuuid)\n );\n })\n );\n};\nconst isLambdaComponent = (component, leafgraph) => {\n // [1, 2, 3].some(function(el) {\n //console.log(el);\n // return el === 2;\n //});\n return component.some((nodeuuid) => {\n if (nodeuuid.slice(0, 4) === \"36cd\") console.log(nodeuuid);\n return leafgraph.edges.lambda.sources.has(nodeuuid);\n });\n};\n\n/*\n * a graph (component) g_c is defined to be lambda-plane-scoped with respect to a lambda target,\n * if it is a lambda component and its single member node, that is a source of a lambda edge,\n * is NOT connected to any dataflow ports within g_c.\n */\nconst isLambdaPlaneScoped = (component, leafgraph) => {\n return (\n component.length === 1 &&\n component.every((nodeuuid) => {\n const leafnode = leafgraph.graph.lambda.getNodeAttributes(nodeuuid).leafnode;\n return ![\"leafinflowport\", \"leafoutflowport\"].includes(leafnode.data.leaf.logic.type);\n })\n );\n};\n\n/*\n * a graph (component) g_c is defined to be dataflow-plane-scoped with respect to a lambda target,\n * if it is a lambda component and at least one of its member nodes, that is a source of a lambda edge\n * to the target, is connected to either leafinflowport or leafoutflowport via dataflow edges within the\n * lambda graph component of interest (g_c).\n */\nconst isDataflowPlaneScoped = (component, leafgraph) => {\n return component.length > 1;\n //return component.some((nodeuuid) => {\n // const leafnode = leafgraph.graph.lambda.getNodeAttributes(nodeuuid).leafnode;\n // return (['leafinflowport', 'leafoutflowport'].includes(leafnode.data.leaf.logic.type));\n //});\n};\n\n/*\n * true if any member node is of type 'leaflambdagraph'\n */\nconst hasLambdaGraphNode = (component, leafgraph) => {};\n\nconst isSpellDefComponent = (component, leafgraph) => {\n const spelldefnode = component.filter((nodeuuid) => {\n const leafnode = leafgraph.graph.lambda.getNodeAttributes(nodeuuid).leafnode;\n return leafnode.data.leaf.logic.type === \"leafspelldef\";\n });\n\n //const thespadeuuid = leafgraph.thespade.uuid;\n //return (leafnode.data.leaf.logic.type === 'leafspellnode' && leafgraph.graph.lambda.neighbors(leafnode.uuid).includes(thespadeuuid));\n return spelldefnode.length > 0;\n};\n\nconst isLEAFConfigComponent = (component, leafgraph) => {\n const leafconfignode = component.filter((nodeuuid) => {\n const leafnode = leafgraph.graph.lambda.getNodeAttributes(nodeuuid).leafnode;\n return leafnode.data.leaf.logic.type === \"leafconfig\";\n });\n\n //const thespadeuuid = leafgraph.thespade.uuid;\n //return (leafnode.data.leaf.logic.type === 'leafspellnode' && leafgraph.graph.lambda.neighbors(leafnode.uuid).includes(thespadeuuid));\n return leafconfignode.length > 0;\n};\n\n// spark_dev_note: isBottle should check if _data is a bottle, not a crate.\n// a bottle is an object, with a specific set of data entries including _value, _label\nconst isBottle = (_data) =>\n typeof _data === \"object\" && !Array.isArray(_data) && _data !== null && \"_bname\" in _data; // _bname can be ''\nconst isCrate = (_data) =>\n typeof _data === \"object\" && !Array.isArray(_data) && _data !== null && \"_crate\" in _data; // _cmeta is optional\n\nconst isEmptyBottle = (_data) =>\n isBottle(_data) &&\n ((_data._bname === \"empty_bottle\" && _data._content === \"empty_data\") ||\n _data._content === undefined); // _bname can be ''\nconst isErrorBottle = (_data) => isBottle(_data) && _data._bname === \"error\"; // _bname can be ''\n\n// as per https://www.geeksforgeeks.org/how-to-check-if-the-value-is-primitive-or-not-in-javascript/\nconst isPrimitiveType = (val) => {\n if (val === Object(val)) {\n console.log(false);\n } else {\n console.log(true);\n }\n};\n\nconst isPositiveWholeNumberStr = (value) => {\n return /^\\d+$/.test(value);\n};\n\nconst isWholeNumberStr = (value) => {\n return /^-?\\d+$/.test(value);\n};\n\nexport {\n isSpellDefComponent,\n isLEAFConfigComponent,\n hasLambdaGraphNode,\n isDataflowPlaneScoped,\n isLambdaPlaneScoped,\n isLambdaComponent,\n isRuntimeComponent,\n isAnchoredComponent,\n isBottle,\n isEmptyBottle,\n isErrorBottle,\n isCrate,\n isPrimitiveType,\n isPositiveWholeNumberStr,\n isWholeNumberStr,\n};\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"buffer\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"uuid\");","import {\n race,\n delay,\n skip,\n bufferTime,\n take,\n interval,\n of,\n zip,\n map,\n merge,\n mergeAll,\n switchAll,\n combineLatest,\n withLatestFrom,\n concatAll,\n BehaviorSubject,\n concatMap,\n Subject,\n switchMap,\n} from \"rxjs\";\nimport { isBottle, isCrate } from \"../parser/predicates.js\";\nimport { v4 as uuid4 } from \"uuid\";\n\nconst LEAFBufferTimeSpan = 200; // ms\nconst LEAFBufferCreationInterval = 100; // ms\nconst LEAFNodeInflowBufferSize = 100;\n\n// as per https://quickref.me/zip-multiple-arrays\n// zipMultipleArrs(['a', 'b', 'c', 'd', 'e'], [1, 2, 3, 4, 5]); // [['a', 1], ['b', 2], ['c', 3], ['d', 4], ['e', 5]]\n/*\nDoes it look like a zipper?\n a 1\n b 2\n c 3\n d 4\n e 5\n*/\nconst zipMultipleArrs = (...arr) =>\n Array.from({ length: Math.max(...arr.map((a) => a.length)) }, (_, i) => arr.map((a) => a[i]));\n\nconst isArrayOfArrays = (a) => {\n return a.every((x) => Array.isArray(x));\n};\n\nconst flattenArray = (x) => (Array.isArray(x) ? x.flatMap((_x) => _x) : x);\n\nconst exitDataBus = ({ _bus, _cond = (_) => true, _flatten = false } = {}) => {\n if (_flatten)\n return Array.isArray(_bus)\n ? _bus\n .map((_b) => (isBottle(_b) && _b._bname === \"_databus\" && _cond(_b) ? _b._content : _b))\n .flat()\n .filter((_) => _)\n : isBottle(_bus) && _bus._bname === \"_databus\" && _cond(_bus)\n ? _bus._content\n : _bus;\n return Array.isArray(_bus)\n ? _bus\n .map((_b) => (isBottle(_b) && _b._bname === \"_databus\" && _cond(_b) ? _b._content : _b))\n .filter((_) => _)\n : isBottle(_bus) && _bus._bname === \"_databus\" && _cond(_bus)\n ? _bus._content\n : _bus;\n};\n\nconst pickMainStream = (flow$Arr, mainlabel = \"main\") => {\n let mainstream$obj, auxstream$Arr;\n // pick mainstream$\n if (mainlabel) {\n const mainidx = flow$Arr.findIndex((element) => mainlabel in element);\n\n if (mainidx > -1) {\n mainstream$obj = flow$Arr[mainidx];\n auxstream$Arr = flow$Arr.filter((element, idx) => idx !== mainidx);\n } else {\n mainstream$obj = flow$Arr[0];\n auxstream$Arr = flow$Arr.slice(1);\n }\n } else {\n mainstream$obj = flow$Arr[0];\n auxstream$Arr = flow$Arr.slice(1);\n }\n\n return { mainstream$obj, auxstream$Arr };\n};\n\n// make sure to let the lossy nature of this mode of mixing clearly known as it may make\n// leaf debugging real difficult if a lossy mixing isn't wielded well.\nconst zipDataflows = (\n nodeuuid,\n flow$Arr,\n mainlabel = undefined,\n pairLatestAux = true,\n flowUnpairedAux = false,\n) => {\n const filtered$Arr = flow$Arr.filter((x) => x);\n if (filtered$Arr.length > 1) {\n // zip requires a minimum of two streams\n // https://stackoverflow.com/questions/46602541/rxjs-lossy-form-of-zip-operator <- rubbish\n //const zipped_stream$ = zip(...filtered$Arr.map(_x=>_x.pipe(take(1)))).pipe(repeat());\n // pick mainstream$\n const { mainstream$obj, auxstream$Arr } = pickMainStream(filtered$Arr, mainlabel);\n\n let cursubs = undefined;\n const mainsubject$ = new BehaviorSubject().pipe(skip(1)); // skip the default value\n\n const auxstream$obj = {\n _stream: combineLatest(auxstream$Arr.map((x) => x._stream)).pipe(\n //bufferTime(LEAFBufferTimeSpan), //, LEAFBufferCreationInterval, LEAFNodeInflowBufferSize,\n map((x) => x.flat().flat()),\n //map(x => { // get the latest (ie the last array element) from the buffer\n // if (x && x.length > 0)\n // return x[x.length -1];\n // else\n // return x;\n //}),\n ),\n };\n //const auxstream$obj = combineDataflows(auxstream$Arr);\n // test\n\n //mainstream$obj._stream.subscribe({\n // next: x => {\n // console.log(x);\n // return x;\n // }\n //})\n //auxstream$obj._stream.subscribe({\n // next: x => {\n // console.log(x);\n // return x;\n // }\n //})\n\n // end of test\n\n if (pairLatestAux) {\n const mainstream$ = mainstream$obj._stream; //.pipe(multicast(mainsubject$)); // refCount()\n const preoutput$ = mainstream$\n .pipe(\n delay(LEAFBufferTimeSpan),\n map((x) => {\n console.log(nodeuuid);\n return x;\n }),\n // bufferTime(LEAFBufferTimeSpan),\n map((x) => {\n // get the latest (ie the last array element) from the buffer\n return x.length > 0 ? [x[x.length - 1]] : [x];\n }),\n )\n .pipe(\n withLatestFrom(\n race(\n auxstream$obj._stream,\n //...auxstream$Arr.map(aux=>aux._stream.pipe(\n // bufferTime(LEAFBufferTimeSpan),\n //// map(x => { // get the latest (ie the last array element) from the buffer\n //// return ((x.length > 0) ? x[x.length -1] : x);\n //// }),\n //)),\n of([]).pipe(delay(LEAFBufferTimeSpan)), // default in case the above didn't return for some reason\n //of([]) // default in case the above didn't return for some reason\n ),\n ),\n )\n .pipe(\n map((x) => {\n //console.log('yeah:', x);\n if (isArrayOfArrays(x)) {\n const filteredx = x\n .flat()\n .filter((x) => x)\n .map((x) => [x]); // remove [undefined] in x\n const zippedArrs = zipMultipleArrs(...filteredx);\n //console.log('zippedArrs: ', JSON.stringify(zippedArrs));\n return zippedArrs; //.flat();\n } else {\n if (x) return Array.isArray(x) ? x : [x];\n }\n }),\n );\n\n //const processedoutput$ = (new BehaviorSubject()).pipe(skip(1))\n //let latestAux = undefined; // a local cache\n\n //preoutput$.subscribe({\n // next: (x) => {\n // const curaux = x[1];\n // if (curaux.length > 0) {\n // latestAux = curaux;\n // }\n // processedoutput$.next([x[0]].concat(latestAux)); // relay processed flows\n // },\n // error: (x) => {\n // console.log(x);\n // },\n // complete: (x) => {\n // console.log(x);\n // }\n //});\n return { _stream: preoutput$ }; //.pipe(filter(x=>x));\n } else {\n // this auxstream$obj subscription block makes mainsubject$ flow solo until auxstream$ gets available\n // at which point the zipped data of mainsubject and auxstream get emitted together\n const subshandle = auxstream$obj._stream.subscribe({\n next: (x) => {\n if (!cursubs && x.length === 0) {\n // [] in aux flow and no innerloop subs (ie initial boundary condition)\n //const innerloop$ = interval(1000);\n cursubs = mainstream$obj._stream.subscribe({\n next: (_x) => {\n mainsubject$.next(_x);\n },\n complete: () => {\n cursubs.unsubscribe();\n },\n });\n } else if (x.length > 0) {\n // upon hitting non-empty aux input flow\n //const innerloop$ = interval(1000);\n if (cursubs) {\n cursubs.unsubscribe(); // clear previous round's innerloop subscription\n }\n cursubs = mainstream$obj._stream.subscribe({\n next: (_x) => {\n mainsubject$.next([_x, x].flat()); // start emitting zipped tuples\n },\n complete: () => {\n if (cursubs) cursubs.unsubscribe();\n },\n });\n }\n },\n complete: () => {\n if (subshandle) subshandle.unsubscribe();\n },\n });\n let output$;\n if (flowUnpairedAux) {\n // this option allows flowing thru the aux streams before the main stream takes place\n // to use switchAll() as per https://indepth.dev/posts/1114/learn-to-combine-rxjs-sequences-with-super-intuitive-interactive-diagrams\n const h = interval(100).pipe(\n take(2),\n map((i) => [auxstream$obj._stream, mainsubject$][i]),\n );\n output$ = h.pipe(\n //mergeMap(x => {})\n switchAll(), // this allows auxstream$ to go through once before mainstream$ becomes ready\n map((x) => {\n console.log(\"yeah:\", x);\n if (isArrayOfArrays(x)) {\n const filteredx = x\n .flat()\n .filter((x) => x)\n .map((x) => [x]); // remove [undefined] in x\n const zippedArrs = zipMultipleArrs(...filteredx);\n console.log(\"zippedArrs: \", JSON.stringify(zippedArrs));\n return zippedArrs;\n } else {\n if (x) return [x];\n }\n }),\n );\n } else {\n // this option makes aux streams wait for the main stream to occur before they both can flow\n output$ = mainsubject$.pipe(\n //mergeMap(x => {})\n map((x) => {\n console.log(\"yeah:\", x);\n if (isArrayOfArrays(x)) {\n const filteredx = x\n .flat()\n .filter((x) => x)\n .map((x) => [x]); // remove [undefined] in x\n const zippedArrs = zipMultipleArrs(...filteredx);\n console.log(\"zippedArrs: \", JSON.stringify(zippedArrs));\n return zippedArrs;\n } else {\n if (x) return [x];\n }\n }),\n );\n }\n return { _stream: output$ }; //.pipe(filter(x=>x));\n }\n } else if (filtered$Arr.length > 0) {\n return filtered$Arr[0];\n }\n};\n\nconst naiveZipDataflows = (flow$Arr) => {\n const filtered$Arr = flow$Arr.filter((x) => x);\n if (filtered$Arr.length > 0) {\n const zipflow$ = zip(\n ...filtered$Arr.map((x) =>\n x._stream.pipe(\n bufferTime(LEAFBufferTimeSpan, LEAFBufferCreationInterval, LEAFNodeInflowBufferSize),\n map((x) => flattenArray(x)), // buffering adds additional array layer that needs to be stripped away.\n map((x) => {\n console.log(\"data being zipped:\", x);\n return x;\n }),\n ),\n ),\n );\n\n const output$ = zipflow$.pipe(\n //mergeMap(x => {})\n map((x) => {\n console.log(\"yeah:\", x);\n if (x.length > 1) {\n const zippedArrs = zipMultipleArrs(...x);\n console.log(\"zippedArrs: \", JSON.stringify(zippedArrs));\n return zippedArrs;\n } else {\n return x;\n }\n }),\n );\n return { _stream: output$ };\n }\n //else if (filtered$Arr.length === 1)\n //{\n // const output$ = filtered$Arr[0]._stream.pipe(x => {\n // console.log(x);\n // return x;\n // });\n // return {_stream: output$};\n\n // //return filtered$Arr[0];\n //}\n};\n\nconst combineDataflows = (\n nodeuuid,\n flow$Arr,\n isflatten = false,\n iscomposite = false,\n exitbus = false,\n context = {},\n) => {\n if (!(\"etaTree\" in context)) console.log(\"start debugging\");\n\n //console.log('entering combineDataflows()', context, context?.etaTree?.leafgraph.graph.dataflow.getNodeAttributes(nodeuuid)?.leafnode.data);\n const filtered$Arr = flow$Arr.filter((x) => x);\n if (filtered$Arr.length > 1) {\n // zip requires a minimum of two streams\n //console.log('entering combineDataflows()', context, context?.etaTree?.leafgraph.graph.dataflow.getNodeAttributes(nodeuuid)?.leafnode.data);\n const combinedflow$obj = {\n _stream: of(\"ctrl_nudge\").pipe(\n concatMap((_ctrl_in) => {\n return combineLatest(flow$Arr.map((x) => x._stream)).pipe(\n map((_) => {\n //const resolved_ = await Promise.resolve(_); // as per the discussion in https://stackoverflow.com/questions/27746304/how-do-i-tell-if-an-object-is-a-promise\n if (nodeuuid?.slice(0, 4) === \"9857\")\n console.log(\"combineDataflows() stream content:\", _, isflatten);\n\n const _combined_data = exitbus ? exitDataBus({ _bus: _, _flatten: isflatten }) : _;\n const combined_data =\n !exitbus && isflatten && Array.isArray(_combined_data)\n ? _combined_data.filter((_) => _).flat()\n : _combined_data;\n\n return combined_data;\n //if (isflatten)\n // return resolved_.flat();\n //else\n // return resolved_;\n }),\n );\n }),\n ),\n }; // default to zipping multiple streams\n if (iscomposite) {\n combinedflow$obj._control = {\n _stream: of(\"ctrl_nudge\").pipe(\n concatMap((_ctrl_in) => {\n return combineLatest(flow$Arr.map((x) => x?._control?._stream).filter((_) => _)).pipe(\n map((_) => {\n // spark_dev_note: (23/Mar/2023)\n // #ctrl_accio\n // always flatten control signal, check if this should be an intact accio bottle with 'ctrl_accio'?\n return Array.isArray(_) ? _.flat() : _;\n }),\n );\n }),\n ),\n };\n }\n\n return combinedflow$obj;\n //// https://stackoverflow.com/questions/46602541/rxjs-lossy-form-of-zip-operator <- rubbish\n ////const zipped_stream$ = zip(...filtered$Arr.map(_x=>_x.pipe(take(1)))).pipe(repeat());\n //// pick mainstream$\n //const {mainstream$obj, auxstream$Arr} = pickMainStream(filtered$Arr);\n\n //const combined_stream$ = mainstream$obj._stream.pipe(\n // bufferTime(LEAFBufferTimeSpan, LEAFBufferCreationInterval, LEAFNodeInflowBufferSize),\n // map(x=>flattenArray(x)),\n // combineLatestWith(...auxstream$Arr.map(x=>x._stream.pipe(\n // bufferTime(LEAFBufferTimeSpan, LEAFBufferCreationInterval, LEAFNodeInflowBufferSize),\n // map(x=>flattenArray(x))\n // )))\n //); //combineLatest(...filtered$Arr);\n\n //const output$ = combined_stream$.pipe(\n // //mergeMap(x => {})\n // map(x => {\n // console.log('yeah:', x);\n // if (isArrayOfArrays(x)) {\n // const zippedArrs = zipMultipleArrs(...x);\n // console.log('zippedArrs: ', JSON.stringify(zippedArrs));\n // return zippedArrs;\n // }\n // else {\n // return [x];\n // }\n // })\n //);\n //return {_stream: output$.pipe(filter(x=>x))};\n } else if (filtered$Arr.length > 0) {\n // spark_dev_note: (22/Mar/2023)\n // currently no check is done wrt the \"iscomposite\" flag from the argument for single flows,\n // hence any composite flow would be returned as a composite regardless of how the flag is set.\n // have yet to run into edge cases where this may cause issues. till then... ciao\n return {\n ...filtered$Arr[0],\n _stream: filtered$Arr[0]._stream.pipe(\n map((_data) => {\n if (nodeuuid?.slice(0, 4) === \"9857\")\n console.log(\"combineDataflows() stream content:\", _data, isflatten);\n\n return _data;\n }),\n ),\n };\n } else {\n return undefined;\n }\n};\n\nconst substituteDataflows = (flowinput$Arr, dictionary_keys) => {\n const dictflow$Arr = flowinput$Arr.filter((x) => dictionary_keys.some((_key) => _key in x));\n const dataflow$Arr = flowinput$Arr.filter((x) => dictionary_keys.every((_key) => !(_key in x)));\n const stringFormat = (_str, _dict) => {\n return _str.replace(/\\{([\\w\\s]+)\\}/g, function (_, key) {\n return _dict[key];\n });\n };\n const substituteUnitdataByDict = (_unitdata, _dictionary) => {\n if (isBottle(_unitdata)) {\n return { ..._unitdata, _content: substituteUnitdataByDict(_unitdata._content, _dictionary) };\n } else if (isCrate(_unitdata)) {\n return {\n ..._unitdata,\n _crate: _unitdata._crate.map((x) => substituteUnitdataByDict(x, _dictionary)),\n };\n } else if (Array.isArray(_unitdata)) {\n return _unitdata.map((x) => substituteUnitdataByDict(x, _dictionary));\n } else if (typeof _unitdata === \"object\") {\n //const substitutionList = Object.entries(_unitdata).map((([_key, _val]) => {\n // const keyval_obj = {};\n // keyval_obj[_key] = substituteUnitdataByDict(_val, _dictionary);\n // return keyval_obj;\n //}));\n const substituteobj = Object.assign(\n {},\n ...Object.entries(_unitdata).map(([_key, _val]) => {\n return { [_key]: substituteUnitdataByDict(_val, _dictionary) };\n }),\n );\n return substituteobj;\n } else if (typeof _unitdata === \"string\") {\n const formatted_data = stringFormat(_unitdata, _dictionary);\n console.log(\"inter:\", JSON.stringify(formatted_data));\n return formatted_data;\n } else {\n // any other primitive js types such as Number, Boolean, Undefined, Symbol, or BigInt\n return _unitdata; // return untouched\n }\n };\n //let merged_dict = {}\n //dictflow$Arr.map(flow$obj => {\n // flow$obj._stream.pipe(\n // map(x => {\n // merged_dict = {...merged_dict, ...x};\n // })\n // );\n //});\n //const merged_dict$obj = mergeDataflows(dictflow$Arr);\n const merged_data$obj = mergeDataflows(dataflow$Arr);\n const zipped_stream$ = merged_data$obj._stream.pipe(\n bufferTime(LEAFBufferTimeSpan, LEAFBufferCreationInterval, LEAFNodeInflowBufferSize),\n map((x) => {\n console.log(x);\n return x;\n }),\n map((x) => flattenArray(x)),\n withLatestFrom(\n ...dictflow$Arr.map((x) =>\n x._stream.pipe(\n bufferTime(LEAFBufferTimeSpan, LEAFBufferCreationInterval, LEAFNodeInflowBufferSize),\n map((x) => flattenArray(x)),\n ),\n ),\n ),\n map((x) => {\n console.log(x);\n return x;\n }),\n ); //combineLatest(...filtered$Arr);\n const substitutedflow$obj = {\n _stream: zipped_stream$.pipe(\n //map(x=>flattenArray(x)),\n map((_zipped_data) => {\n console.log(_zipped_data);\n const _data = flattenArray(_zipped_data[0]);\n const _dictlist = flattenArray(_zipped_data.slice(1)).filter(\n (x) => !Array.isArray(x) && typeof x === \"object\",\n );\n const _dict = Object.assign({}, ..._dictlist); // https://dev.to/devtronic/javascript-map-an-array-of-objects-to-a-dictionary-3f42\n const substituted = substituteUnitdataByDict(_data, _dict);\n console.log(substituted);\n return substituted;\n }),\n ),\n };\n return substitutedflow$obj;\n};\n\nconst concatDataflows = (flow$Arr) => {\n const filtered$Arr = flow$Arr.filter((x) => x);\n if (filtered$Arr.length > 1) {\n const concat_stream$ = filtered$Arr\n .map(\n (x) => x._stream, //.pipe(\n // bufferTime(LEAFBufferTimeSpan, LEAFBufferCreationInterval, LEAFNodeInflowBufferSize),\n // map(x=>flattenArray(x))\n //)\n )\n .pipe(concatAll());\n\n return { _stream: concat_stream$ };\n } else if (filtered$Arr.length > 0) {\n return filtered$Arr[0];\n }\n};\n\nconst TIMEOUTBEHAVIOR_BESTEFFORT = 0; //\"besteffort\";\nconst TIMEOUTBEHAVIOR_ALLORNOTHING = 1; //\"allornothing\";\nconst CHRONOSTYPE_SYNC = 0;\nconst CHRONOSTYPE_ASYNC = 1;\nconst LEAFDataflowTimeout = -1; // -1 for disabling timeout, 0 or greater for specifing timeout in milliseconds\n// spark_dev_note: 18/Jul/2023\n// #chronos\n// chronosDataflow is a function that takes as input a ctrl$ stream and an array flow$Arr, of size >= 0, of data streams.\n// it applies and enforces various rules that govern data events in flow streams, taking place with respect to certain chronological patterns.\n// Chronological patterns to underpin the regulation of flow events in LEAF can be defined in terms of chronostype and gates.\n// chronostype is used to specify whether a flow stream is synchronized with any other flows or not, hence bears the binary\n// value of either CHRONOSTYPE_SYNC (0) or CHRONOSTYPE_ASYNC (1).\n// gates is used to specify any flow gating conditions in terms of time, count, bottle-signal and/or lambda-signal, each of which\n// can be defined as follows:\n// * time gate is of integer type, -1 or a value >= 0.\n// * count gate is of integer type, -1 or a value >= 0.\n// * bottle gate is of LEAF bottle type, a json of {_bname, _content, _labels}\n// * lambda gate is of LEAF lambda function, a placeholder for future implementation, left undefined atm\n//\n// other misc setups to consider\n// * time gating timeout behavior\n// - TIMEOUTBEHAVIOR_BESTEFFORT: wait for all streams to resolve either by timeout or by data instance. the resolved data array slice from multiple flow streams may carry timeout error bottles in place of data instances.\n// - TIMEOUTBEHAVIOR_ALLORNOTHING: stop waiting for data resolution as soon as the first timeout occurrs.\n//\n// metadata: for passing information used for internal js level debugging\n// metactrl$: for experimenting with meta control signaling, I don't have specific use for this pipe as yet.\n// it has some use in the process of understanding how to make rx.js work as intended, as an alternate way to probe signals being sent through pipes.\nconst chronosDataflow = (\n ctrl$,\n flow$Arr,\n passctrl = false,\n chronostype = CHRONOSTYPE_SYNC,\n gates = { time: LEAFDataflowTimeout, count: -1, bottle: undefined, lambda: undefined },\n timeoutBehavior = TIMEOUTBEHAVIOR_BESTEFFORT,\n metadata = {},\n metactrl$ = undefined,\n traceon = false,\n) => {\n //flow$Arr is assumed to be without any undefined flow streams, like so obtainable using flow$Arr.filter(x=>x);\n const _pipe_cache = {\n curpipe$Arr: [],\n pipesub$Arr: [],\n data_in: [],\n ctrl_in: undefined,\n floodgates: [],\n isready: true,\n synccount: 0,\n };\n\n const numflows = flow$Arr.length;\n // initialize pipes\n flow$Arr.map((_nextflow$, _curidx) => {\n _pipe_cache.curpipe$Arr.push(_nextflow$);\n _pipe_cache.pipesub$Arr.push(new Subject());\n //_pipe_cache.pipesub$Arr.push(new BehaviorSubject(raceConditionError));\n _pipe_cache.floodgates.push(0);\n });\n\n //const doCountGate = (_data, _count) => {\n // if (_count > -1 && _pipe_cache.floodgates[_curidx] === _count) {\n // console.log(\"midflow rxTimeoutStream: out of scope:\", _curidx, _resolved); return undefined;\n // }\n\n // if (_data._bname !== \"error\") {\n // _pipe_cache.floodgates[_curidx] = 1;\n // console.log(\"midflow rxTimeoutStream: timed in.\", _curidx, _resolved);\n // clearTimeout(_timerarr[_curidx]);\n // return _resolved;\n // }\n // else {\n // _pipe_cache.floodgates[_curidx] = 1;\n // console.log(\"midflow rxTimeoutStream: timed out.\", _curidx, _resolved, Date.now());\n // return {_bname: \"error\", _content: \"error_bottle\", _labels: {_curidx}};\n // }\n //};\n\n const _do_switchMap = (_ctrl$, _flow$Arr, _timerarr) => {\n if (_pipe_cache.ctrl_in._bname === \"error\") {\n console.error(\"_ctrl_in has error, start debugging\");\n if (metadata.endnodes?.includes(\"d3553691-cdc9-4cc1-815f-e629a94899cd\")) {\n console.log(\"_ctrl_in has error, start debugging\");\n }\n }\n console.log(\"processing idx: \", _pipe_cache.ctrl_in, metadata, Date.now());\n\n if (metadata.refnode === \"df28627c-9d48-4be4-bc67-05813c32dce1\") console.log(\"start debugging\");\n if (metadata.refnode === \"19ec3d65-7361-4a37-95be-c0f30ecedd3f\") console.log(\"start debugging\");\n const datain$arr =\n gates.time >= 0\n ? _flow$Arr.map((_nextflow$, _curidx) => {\n if (_timerarr[_curidx]?.timerref) {\n console.log(\"start debugging\");\n clearTimeout(_timerarr[_curidx].timerref);\n }\n _timerarr[_curidx] = {\n timeruuid: uuid4(),\n timerref: setTimeout(() => {\n //const _rt_cache = {_ctrl_in, metadata};\n console.log(\"timeout timer went off\", _curidx, metadata);\n _pipe_cache.pipesub$Arr[_curidx].next({\n _bname: \"error\",\n _content: \"error_bottle\",\n _labels: { ...metadata, flowidx: _curidx },\n });\n }, gates.time),\n };\n console.log(\n \"setTimeout():\",\n Date.now(),\n _curidx,\n _timerarr[_curidx].timeruuid,\n _timerarr[_curidx].timerref,\n );\n //_nextflow$.next(\"test\");\n\n const merged$ = merge(\n _nextflow$, // data in from the node flow\n _pipe_cache.pipesub$Arr[_curidx], // time out error\n );\n return merged$.pipe(\n map((_resolved) => {\n if (gates.count > -1 && _pipe_cache.floodgates[_curidx] === gates.count) {\n console.log(\"midflow rxTimeoutStream: out of scope:\", _curidx, _resolved);\n return undefined;\n }\n\n if (_resolved._bname !== \"error\") {\n if (gates.count > -1) {\n _pipe_cache.floodgates[_curidx] = 1;\n }\n console.log(\"midflow rxTimeoutStream: timed in.\", _curidx, _resolved, metadata);\n if (!_timerarr[_curidx]) console.log(\"start debugging\");\n if (_timerarr[_curidx]?.timerref) {\n clearTimeout(_timerarr[_curidx].timerref);\n delete _timerarr[_curidx];\n }\n return _resolved;\n } else {\n if (gates.count > -1) {\n _pipe_cache.floodgates[_curidx] = 1;\n }\n console.log(\n \"midflow rxTimeoutStream: timed out.\",\n _curidx,\n _resolved,\n Date.now(),\n _pipe_cache.ctrl_in,\n metadata,\n );\n return { _bname: \"error\", _content: \"error_bottle\", _labels: { _curidx } };\n }\n }),\n //filter(_data_in=>_data_in)\n );\n })\n : _flow$Arr.map((_nextflow$, _curidx) => {\n // case of indeifinitely awaiting all the data flow streams to resolve into an array of data instances at time t.\n return _nextflow$.pipe(\n map((_resolved) => {\n return _resolved;\n }),\n //filter(_data_in=>_data_in)\n );\n });\n\n return datain$arr.length === 1\n ? datain$arr[0]\n : chronostype === CHRONOSTYPE_SYNC\n ? //_ctrl$.pipe(\n // map(_ctrl_in=> {\n // console.log(\"_ctrl_in:\", _ctrl_in);\n // return _ctrl_in;\n // }),\n // withLatestFrom(...datain$arr),\n // map(_combined_in=>{\n // if (_combined_in?.length === 2)\n // return _combined_in[1];\n // else\n // return _combined_in.slice(1)\n // })\n //) :\n combineLatest(datain$arr)\n : merge(...datain$arr);\n };\n\n // spark_dev_note: 31/July/2023\n // this note explains how synced_pipe$ is created and operated, along with its significance in achieving\n // temporal synchronicity among multiple streams.\n // ctrl$ is is the main stream pipe used to carry ctrl data. An instance of ctrl data is a special LEAF bottle\n // called \"accio_ctrl\" carrying data and metadata about the nature of the current data being passed, including but not limited to,\n // origin, data travel traces, invocation index/order and leafnode uuid among others.\n // chronosDataflow() synchronizes multiple data streams using ctrl cues (ctrl_accio bottles) as a frame of reference.\n // In other words, the incidence of a ctrl_accio bottle in the ctrl pipe is used as a temporal event\n // with which the materialization of data-flow events in respective data stream pipes is regulated or gated.\n // how synced_pipe$ is initially created depends on few parameters such as passctrl and numflows.\n // Somewhat repetitive a coding structure below, differentiating four different options offerred by the permutation of these parameters\n // is deliberately designed to be so, for the purpose of runtime efficiency that minimizes conditional branches\n // when data flow takes place.\n const _empty_bottle = {\n _bname: \"empty\",\n _content: \"empty_data\",\n _labels: { codebase: \"leafdataflow.js chronosDataflow\", ...metadata },\n };\n const _timerarr = {};\n const bridge_ctrl$ = new BehaviorSubject(undefined);\n const synced_pipe$ = passctrl\n ? numflows > 0\n ? ctrl$.pipe(\n switchMap((_ctrl_in) => {\n _pipe_cache.ctrl_in = _ctrl_in;\n Object.values(_timerarr).map((_timerref) => {\n if (!_timerref) console.log(\"start debugging\");\n clearTimeout(_timerref.timerref);\n });\n //return _ctrl_in;\n //return _do_switchMap(_pipe_cache.curpipe$Arr.slice(1), _timerarr);\n bridge_ctrl$.next(_ctrl_in); // relay signal to the bridge\n return _do_switchMap(bridge_ctrl$, _pipe_cache.curpipe$Arr, _timerarr);\n }),\n //withLatestFrom(_do_switchMap(_pipe_cache.curpipe$Arr.slice(1), _timerarr)),\n //switchMap(_ctrl_in => {\n // _sync_pipe_cache._ctrl_in = _ctrl_in;\n // Object.values(_timerarr).map(_timerref=>{\n // if (metadata.refnode === \"19ec3d65-7361-4a37-95be-c0f30ecedd3f\")\n // console.log(\"start debugging\");\n // if(!_timerref)\n // console.log(\"start debugging\")\n // clearTimeout(_timerref.timerref);\n // });\n // return _do_switchMap(_ctrl_in, _pipe_cache.curpipe$Arr.slice(1), _timerarr);\n //}),\n map((_data_in) => {\n if (metadata.refnode === \"19ec3d65-7361-4a37-95be-c0f30ecedd3f\")\n console.log(\"start debugging\");\n console.log(\"processing idx after timeout retrieval: \", _data_in, Date.now());\n if (!_data_in) console.error(\"error _data_in null\");\n if (_data_in._bname === \"error\") console.log(\"error_bottle in, start debugging\");\n return Array.isArray(_data_in)\n ? [_pipe_cache.ctrl_in, ..._data_in]\n : [_pipe_cache.ctrl_in, _data_in];\n //return _data_in;\n }),\n )\n : ctrl$.pipe(\n map((_ctrl_in) => {\n console.log(\"processing idx after timeout retrieval: \", _ctrl_in, Date.now());\n if (_ctrl_in._bname === \"error\") console.log(\"error_bottle in, start debugging\");\n return Array.isArray(_ctrl_in)\n ? [_ctrl_in[0], _empty_bottle]\n : [_ctrl_in, _empty_bottle];\n }),\n )\n : numflows > 0\n ? ctrl$.pipe(\n switchMap((_ctrl_in) => {\n _pipe_cache.ctrl_in = _ctrl_in;\n if (_pipe_cache.ctrl_in === undefined)\n console.error(\"_ctrl_in undefined, start debugging\");\n Object.values(_timerarr).map((_timerref) => {\n if (!_timerref) console.log(\"start debugging\");\n clearTimeout(_timerref.timerref);\n });\n //return _do_switchMap(_pipe_cache.curpipe$Arr.slice(1), _timerarr);\n bridge_ctrl$.next(_ctrl_in); // relay signal to the bridge\n return _do_switchMap(bridge_ctrl$, _pipe_cache.curpipe$Arr, _timerarr);\n }),\n //withLatestFrom(_do_switchMap(_pipe_cache.curpipe$Arr.slice(1), _timerarr)),\n //switchMap(_ctrl_in => {\n // Object.values(_timerarr).map(_timerref=>{\n // if(!_timerref)\n // console.log(\"start debugging\")\n // clearTimeout(_timerref.timerref);\n // });\n // return _do_switchMap(_ctrl_in, _pipe_cache.curpipe$Arr.slice(1), _timerarr);\n //}),\n map((_data_in) => {\n if (Array.isArray(_data_in) && _data_in._bname === \"error\")\n console.log(\"error bottle detected, start debugging\", _data_in);\n console.log(\"processing idx after timeout retrieval: \", _data_in, Date.now());\n //if (_data_in._bname === \"error\")\n // console.log(\"error_bottle in, start debugging\");\n return Array.isArray(_data_in) && _data_in.length === 1 ? _data_in[0] : _data_in;\n }),\n )\n : ctrl$.pipe(\n map((_ctrl_in) => {\n console.log(\"processing idx after timeout retrieval: \", _ctrl_in, Date.now());\n //if (_ctrl_in._bname === \"error\")\n // console.log(\"error_bottle in, start debugging\");\n return _empty_bottle;\n }),\n );\n\n if (metactrl$) {\n const metactrl_sink$ = metactrl$.pipe(\n map((_meta_ctrl) => {\n console.log(\"metactrl$: isready : \", _meta_ctrl);\n\n _pipe_cache.isready = _meta_ctrl._content;\n //_pipe_cache.synccount = 0;\n _pipe_cache.floodgates = _pipe_cache.floodgates.map((_gate) => 0); // reset floodgates to 0\n return _meta_ctrl;\n }),\n );\n const ctrl_sink$ = ctrl$.pipe(\n concatMap((_ctrl) => {\n console.log(\"ctrl$ in : \", _ctrl);\n //return syncDataflows(of(_ctrl), input$arr, LEAFDataflowTimeout, \"besteffort\", {});\n return of(_ctrl);\n }),\n );\n //const synced_pipe$ = _pipe_cache.curpipe$Arr[numflows]; //.pop(); // faster\n\n return merge(synced_pipe$, metactrl_sink$, ctrl_sink$);\n //return synced_pipe$;\n } else {\n //return _pipe_cache.curpipe$Arr[numflows]; //.pop(); // faster\n return synced_pipe$;\n }\n};\n\n// spark_dev_note: 12/July/2023\n// #sync #async\n// leaf nodes, by default, wait for all incoming flows to provide input data\n// from which output data are produced as per their own functions\n// combineDataflows rely on rx.js combineLatest() to enforce this synchronous dataflow in multiple input streams\n// However, combineLatest() has a quirky behaviour, rather a feature than a bug, where\n// once multiple input data streams are synchronously combined and returned,\n// implementation involving mergeAll as per https://indepth.dev/posts/1114/learn-to-combine-rxjs-sequences-with-super-intuitive-interactive-diagrams\n// this function is specifically useful when some of multiple streams in the dataflow\n// skip as in the case of leafgateflow.js, where the unskiped streams get salvaged here for\n// any downstream operations.\nconst mergeObservableDataflows = (refnode, flow$Arr, isflatten = true) => {\n const filtered$Arr = flow$Arr.filter((x) => x);\n const arrayLen = filtered$Arr.length;\n if (!refnode) {\n console.log(\"start debugging\");\n }\n if (refnode && refnode.slice(0, 4) == \"90ad\") console.log(\"start debugging\");\n if (arrayLen > 1) {\n const merged_stream$ = interval(1)\n .pipe(\n take(arrayLen),\n map((i) => filtered$Arr[i]._stream),\n )\n .pipe(mergeAll())\n .pipe((x) => {\n // peep hole\n console.log(refnode);\n return x.pipe(\n map((_x) => {\n console.log(_x);\n if (isflatten && Array.isArray(_x)) return _x.flat();\n else return _x;\n }),\n );\n });\n //const merged_stream$ = merge(...filtered$Arr.map(x=>x._stream.pipe(\n // x => { // peep hole\n // console.log(x);\n // return x.pipe(map(_x => {\n // console.log(_x);\n // return _x;\n // }))\n // }\n //)\n //.pipe(\n // bufferTime(LEAFBufferTimeSpan, LEAFBufferCreationInterval, LEAFNodeInflowBufferSize),\n // map(x=>flattenArray(x))\n //)\n //));\n\n return { _stream: merged_stream$ };\n } else if (filtered$Arr.length > 0) {\n return filtered$Arr[0];\n }\n};\n\nconst mergeDataflows = (flow$Arr) => {\n const filtered$Arr = flow$Arr.filter((x) => x);\n if (filtered$Arr.length > 1) {\n const merged_stream$ = merge(\n ...filtered$Arr.map(\n (x) =>\n x._stream.pipe(\n map((_x) => {\n // peep hole\n console.log(_x);\n return _x;\n //return _x.pipe(map(__x => {\n // console.log(__x);\n // return __x;\n //}))\n }),\n ),\n //.pipe(\n // bufferTime(LEAFBufferTimeSpan, LEAFBufferCreationInterval, LEAFNodeInflowBufferSize),\n // map(x=>flattenArray(x))\n //)\n ),\n );\n\n return { _stream: merged_stream$ };\n } else if (filtered$Arr.length > 0) {\n return filtered$Arr[0];\n }\n};\n\nfunction debounce(fn, ms) {\n let timer;\n return (_) => {\n clearTimeout(timer);\n timer = setTimeout((_) => {\n timer = null;\n fn.apply(this, arguments);\n }, ms);\n };\n}\n\nexport {\n naiveZipDataflows,\n zipDataflows,\n mergeDataflows,\n chronosDataflow,\n TIMEOUTBEHAVIOR_ALLORNOTHING,\n TIMEOUTBEHAVIOR_BESTEFFORT,\n CHRONOSTYPE_SYNC,\n CHRONOSTYPE_ASYNC,\n combineDataflows,\n mergeObservableDataflows,\n concatDataflows,\n substituteDataflows,\n flattenArray,\n debounce,\n};\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"lodash\");","//import { etaReduceLambdaGraphs, etaReduceDataflowComponent, wrapInputStreamArrayHandler, runtimeEtaTree } from '../../eta';\nimport { map, withLatestFrom, share } from \"rxjs/operators\";\nimport { combineDataflows } from \"../../../utils/leafdataflow.js\";\nimport { driveDataflowByCtrlflow } from \"../../leaf.js\";\nimport { Subject } from \"rxjs\";\n\n/*\n * _leafinflowport() is a dataflow-plane-scoped function for the LEAF node of logic type 'leafinflowport'.\n * it is used to mark the dataflow input port of a dataflow-scoped leaf component graph.\n */\nconst _leafinflowport = {\n dataflow:\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n // space for node type specific init prior to use\n //const _leafnode = contextuallambda; // derivative leafnode\n //const _leafnode_logic = contextuallambda.uuid;\n\n // get the refnode w.r.t. the current leaf node\n //const refnode = refnodepath[0]; //leafgraph.graph.lambda.outNeighbors(contextuallambda[0])[0];\n //const refnode_logic = runtimeEtaTree.leafgraph.graph.dataflow.getNodeAttributes(refnode).leafnode.data.leaf.logic;\n //const contextual_lut = refnode ? parseLambdaLUT(contextuallambda, _refnode, _refnode_logic) : undefined;\n // get the refnode w.r.t. the contextuallambda nodes\n // check for parsing error conditions\n //if (!contextuallambda) {\n // throw `LEAF error: the logical construct built using the ${refnodedata.leaf.logic.type} node `+\n // `(${refnode}) called with args (${JSON.stringify(refnodedata.leaf.logic.args)}).`;\n //}\n //if (!('_default' in contextual_lut)) {\n // throw `LEAF error: the logical construct built using the ${_refnode_logic.type} node `+\n // `(${_refnode}) called with args (${JSON.stringify(_refnode_logic.args)}) has no `+\n // `default defined for its lambda, while being referenced by the leaflambdagraph node (${leafnode}). `+\n // 'A default lambda construct is required by the leaflambdagraph node.';\n //}\n\n // for the derivative nodelambda, look up the list of lambda leaf nodes connected to the defualt lambda entry node.\n // for the derivative contextuallambda, use current node's nodelambda.\n //const _nodelambda = leafgraph.edges.lambda.sourcelut[contextual_lut._default.uuid];\n\n //const thecorelogic = await etaReduceLambdaGraphs(contextual_lut._default.uuid, _nodelambda, _contextuallambda, leafgraph, graphcomponents);\n //const thecorelogic = await etaReduceLambdaGraphs({nodelambda: contextuallambda, contextuallambda: nodelambda});\n //const reduced_lambda_obj = await etaReduceLambdaGraphs({refnode, nodelambda: contextuallambda, contextuallambda: nodelambda});\n const node_context = {\n codebase: \"leafinflowport.js\",\n refnode,\n leafnode:\n lambdactrl.gos.etaTree.leafgraph.graph.dataflow.getNodeAttributes(refnode).leafnode.data,\n };\n return (input$objArr, controlflow$obj) => {\n // identify function\n const preprocessfunc = (_data_in) => {\n //const _data_out = doUnbottle(undefined, _data_in); // unbottle all bottles\n //flowinterface.data_in.next(_data_in);\n if (node_context.refnode === \"9c55bbea-7980-4e71-b722-a0d32d332633\")\n console.log(\"start debugging\");\n const _data_out = _data_in; // do nothing\n return _data_out;\n };\n\n const _nodeflowfunc = (_input$objArr, _controlflow$obj) => {\n console.log(\"start debugging\");\n const _outflow_data$ = new Subject(); //BehaviorSubject(raceConditionError);\n\n const _outflow_ctrl$ = _controlflow$obj._stream.pipe(\n //switchMap(_ctrl_in=> {\n // //flowinterface.ctrl_in.next(_ctrl_in);\n // return combineLatest([of(_ctrl_in), ..._input$objArr.map(_=>_._stream)]);\n //}),\n withLatestFrom(..._input$objArr.map((_) => _._stream)),\n map((_combined_in) => {\n // spark_dev_note: 19/Jun/2023\n // #databus\n //const _next_data = _combined_in.slice(1).filter(_data=>\n // (_data!==undefined && !(isBottle(_data) && _data._bname === \"_databus\" && _data._label._type !== \"memoryio\")));\n //const _next_data = _combined_in.slice(1).filter(_data=>\n // (_data!==undefined));\n\n //if (_next_data.length === 1) {\n // _outflow_data$.next(_next_data[0]); // publish the next available post-processed data via the data flow subject channel\n //}\n //else if (_next_data.length > 1) {\n // _outflow_data$.next(_next_data); // publish the next available post-processed data via the data flow subject channel\n //}\n //else { // out only, no input data\n // console.log(\"LEAF error: leafoutflowport has no input\")\n // _outflow_data$.next(doBottle(\"error\", \"leafoutflowport has no input\", {...node_context})); // publish the next available post-processed data via the data flow subject channel\n //}\n _outflow_data$.next(_combined_in[1]);\n return _combined_in[0]; // only pass the ctrl data in the flow;\n }),\n share(),\n );\n return {\n _stream: _outflow_data$,\n _control: { ..._controlflow$obj, _stream: _outflow_ctrl$ },\n };\n };\n\n //const consolidated_input$objArr = [{\n // _stream: chronosDataflow(\n // controlflow$obj._stream.pipe(map(_peep_in=>{\n // return _peep_in;\n // })),\n // input$objArr.map(_$obj=>_$obj._stream.pipe(map(_peep_in=>{\n // return _peep_in;\n // }))),\n // false, CHRONOSTYPE_SYNC, {time: 10000}\n // )\n //}];\n\n //const consolidated_input$objArr = [combineDataflows(refnode, input$objArr)];\n //const consolidated_input$objArr = [{\n // _stream:\n //}];\n const output$obj = driveDataflowByCtrlflow(\n controlflow$obj,\n input$objArr,\n undefined,\n { ...node_context, metastep: \"leaf inflow\" },\n {\n leaflogic: _nodeflowfunc,\n datalogic: { pre: preprocessfunc },\n },\n );\n\n return output$obj;\n //else\n // console.log(refnode);\n //// end of debug\n //if (input$objArr.length > 0) {\n //\n // //const flowinput$obj = combineDataflows(refnode, flowinput$Arr);// default to merging multiple streams\n // const flowinput$obj = combineDataflows(refnode, input$objArr, false, false, false, {provenance: \"leafinflowport.js\", refnode, etaTree: lambdactrl.gos.etaTree});// default to merging multiple streams\n\n // const flowoutput$ = flowinput$obj._stream.pipe(\n // map(_unitdata => { // debug window\n // //// debug\n // const refnodestr = refnode.slice(0,4);\n // if (refnodestr === 'dc3f') {\n // console.log('debug',refnode);\n // }\n // //console.log(\"_leafinflowport():\", _unitdata);\n // return _unitdata;\n // })\n // )\n // return {_stream: flowoutput$, _control: controlflow$obj}; // controlflow@obj pass thru\n //}\n };\n },\n lambda:\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n // space for node type specific init prior to use\n // note the cross over in the roles of nodelambda and contextuallambda\n console.error(\n `LEAF error: the logical construct built using the ${refnodedata.leaf.logic.type} node ` +\n `(${refnode}) called with args (${JSON.stringify(refnodedata.leaf.logic.args)}) cannot ` +\n \"be defined as a lambda-scoped node.\",\n );\n return (input$objArr, controlflow$obj) => {\n // identify function\n const flowinput$obj = combineDataflows(refnode, input$objArr); // default to merging multiple streams\n return { ...flowinput$obj, _control: controlflow$obj };\n };\n },\n};\n\nexport { _leafinflowport };\n","//import { etaReduceLambdaGraphs, etaReduceDataflowComponent, wrapInputStreamArrayHandler, runtimeEtaTree } from '../../eta';\nimport { Subject } from \"rxjs\";\nimport { map, withLatestFrom, share } from \"rxjs/operators\";\nimport { mergeDataflows } from \"../../../utils/leafdataflow.js\";\nimport { driveDataflowByCtrlflow } from \"../../leaf.js\";\n\n/*\n * _leafoutflowport() is a dataflow-plane-scoped function for the LEAF node of logic type 'leafoutflowport'.\n * it is used to mark the dataflow output port of a dataflow-scoped leaf component graph.\n */\nconst _leafoutflowport = {\n dataflow:\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n // space for node type specific init prior to use\n //const _leafnode = contextuallambda; // derivative leafnode\n //const _leafnode_logic = contextuallambda.uuid;\n\n // get the refnode w.r.t. the current leaf node\n //const refnode = refnodepath[0]; //leafgraph.graph.lambda.outNeighbors(contextuallambda[0])[0];\n //const refnode_logic = runtimeEtaTree.leafgraph.graph.dataflow.getNodeAttributes(refnode).leafnode.data.leaf.logic;\n //const contextual_lut = refnode ? parseLambdaLUT(contextuallambda, _refnode, _refnode_logic) : undefined;\n // get the refnode w.r.t. the contextuallambda nodes\n // check for parsing error conditions\n //if (!contextuallambda) {\n // throw `LEAF error: the logical construct built using the ${refnodedata.leaf.logic.type} node `+\n // `(${refnode}) called with args (${JSON.stringify(refnodedata.leaf.logic.args)}).`;\n //}\n //if (!('_default' in contextual_lut)) {\n // throw `LEAF error: the logical construct built using the ${_refnode_logic.type} node `+\n // `(${_refnode}) called with args (${JSON.stringify(_refnode_logic.args)}) has no `+\n // `default defined for its lambda, while being referenced by the leaflambdagraph node (${leafnode}). `+\n // 'A default lambda construct is required by the leaflambdagraph node.';\n //}\n\n // for the derivative nodelambda, look up the list of lambda leaf nodes connected to the defualt lambda entry node.\n // for the derivative contextuallambda, use current node's nodelambda.\n //const _nodelambda = leafgraph.edges.lambda.sourcelut[contextual_lut._default.uuid];\n\n //const thecorelogic = await etaReduceLambdaGraphs(contextual_lut._default.uuid, _nodelambda, _contextuallambda, leafgraph, graphcomponents);\n //const thecorelogic = await etaReduceLambdaGraphs({nodelambda: contextuallambda, contextuallambda: nodelambda});\n //const reduced_lambda_obj = await etaReduceLambdaGraphs({refnode, nodelambda: contextuallambda, contextuallambda: nodelambda});\n const node_context = {\n codebase: \"leafoutflowport.js\",\n refnode,\n leafnode:\n lambdactrl.gos.etaTree.leafgraph.graph.dataflow.getNodeAttributes(refnode).leafnode.data,\n };\n return (input$objArr, controlflow$obj) => {\n // identify function\n\n const preprocessfunc = (_data_in) => {\n //const _data_out = doUnbottle(undefined, _data_in); // unbottle all bottles\n //flowinterface.data_in.next(_data_in);\n const _data_out = _data_in; // do nothing\n return _data_out;\n };\n const _nodeflowfunc = (_input$objArr, _controlflow$obj) => {\n console.log(\"start debugging\");\n //const _outflow_data$ = new BehaviorSubject(raceConditionError);\n const _outflow_data$ = new Subject();\n\n const _outflow_ctrl$ = _controlflow$obj._stream.pipe(\n //switchMap(_ctrl_in=> {\n // //flowinterface.ctrl_in.next(_ctrl_in);\n // return combineLatest([of(_ctrl_in), ..._input$objArr.map(_=>_._stream)]);\n //}),\n map((_ctrl_in) => {\n return _ctrl_in;\n }),\n withLatestFrom(..._input$objArr.map((_) => _._stream)),\n map((_combined_in) => {\n // spark_dev_note: 19/Jun/2023\n // #databus\n //const _next_data = _combined_in.slice(1).filter(_data=>\n // (_data!==undefined && !(isBottle(_data) && _data._bname === \"_databus\" && _data._label._type !== \"memoryio\")));\n //const _next_data = _combined_in.slice(1).filter(_data=>\n // (_data!==undefined));\n\n //if (_next_data.length === 1) {\n // _outflow_data$.next(_next_data[0]); // publish the next available post-processed data via the data flow subject channel\n //}\n //else if (_next_data.length > 1) {\n // _outflow_data$.next(_next_data); // publish the next available post-processed data via the data flow subject channel\n //}\n //else { // out only, no input data\n // console.log(\"LEAF error: leafoutflowport has no input\")\n // _outflow_data$.next(doBottle(\"error\", \"leafoutflowport has no input\", {...node_context})); // publish the next available post-processed data via the data flow subject channel\n //}\n _outflow_data$.next(_combined_in[1]);\n return _combined_in[0]; // only pass the ctrl data in the flow;\n }),\n share(),\n );\n return {\n _stream: _outflow_data$,\n _control: { ..._controlflow$obj, _stream: _outflow_ctrl$ },\n };\n };\n\n //const consolidated_input$objArr = [combineDataflows(refnode, input$objArr)];\n //const consolidated_input$objArr = [{_stream: chronosDataflow(controlflow$obj._stream, input$objArr.map(_$obj=>_$obj._stream), false, CHRONOSTYPE_SYNC, {time: 10000})}];\n //const consolidated_input$objArr = [{\n // _stream: chronosDataflow(\n // controlflow$obj._stream.pipe(map(_peep_in=>{\n // return _peep_in;\n // })),\n // input$objArr.map(_$obj=>_$obj._stream.pipe(map(_peep_in=>{\n // return _peep_in;\n // }))),\n // false, CHRONOSTYPE_SYNC, {time: 10000}\n // )\n //}];\n const output$obj = driveDataflowByCtrlflow(\n controlflow$obj,\n input$objArr,\n undefined,\n { ...node_context, metastep: \"leaf outflow\" },\n {\n leaflogic: _nodeflowfunc,\n datalogic: { pre: preprocessfunc },\n },\n );\n\n return output$obj;\n //if (flowinput$Arr.length > 0) {\n // const flowinput$obj = combineDataflows(refnode, flowinput$Arr, false, false, false, {provenance: \"leafoutflowport.js\", refnode, etaTree: lambdactrl.gos.etaTree});// default to merging multiple streams\n // //const flowinput$ = combineLatest(flowinput$Arr.map(_=>_._stream));// default to combining multiple streams\n // if (flowinput$obj) {\n // const flowoutput$ = flowinput$obj._stream.pipe(\n // map(_unitdata => { // debug window\n // console.log(`_leafoutflowport(): ${refnode}`, _unitdata);\n // return _unitdata; //.flat();\n // })\n // )\n // return {_stream: flowoutput$, _control: controlflow$obj};\n // }\n //}\n };\n },\n lambda:\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n // space for node type specific init prior to use\n // note the cross over in the roles of nodelambda and contextuallambda\n console.error(\n `LEAF error: the logical construct built using the ${refnodedata.leaf.logic.type} node ` +\n `(${refnode}) called with args (${JSON.stringify(refnodedata.leaf.logic.args)}) cannot ` +\n \"be defined as a lambda-scoped node.\",\n );\n return (flowinput$Arr, controlflow$obj) => {\n // identify function\n const flowoutput$obj = mergeDataflows(flowinput$Arr);\n return { ...flowoutput$obj, _control: controlflow$obj };\n };\n },\n};\n\nexport { _leafoutflowport };\n","import { isBottle } from \"../../predicates.js\";\n\nconst doBottle = (key, data, blabel = {}) => {\n return { _bname: key, _content: data, _label: blabel };\n};\n\nconst doUnbottle = (key, data, blabel = {}) => {\n return isBottle(data) && (key !== undefined ? key.includes(data._bname) || key === \"*\" : true)\n ? data._content\n : undefined; // {_bname: key, _content: data, _label: blabel}\n};\n\nconst EmptyBottle = doBottle(\"empty_bottle\", \"empty_data\");\n\nexport { doBottle, doUnbottle, EmptyBottle };\n","import { etaReduceLambdaGraphs } from \"../../eta.js\";\nimport { withLatestFrom, switchMap, share } from \"rxjs/operators\";\nimport { driveDataflowByCtrlflow } from \"../../leaf.js\";\nimport { doBottle, doUnbottle } from \"../datautils/bottling.js\";\nimport { Subject, of } from \"rxjs\";\nimport { mergeDataflows } from \"../../../utils/leafdataflow.js\";\n\nconst getIOChannel = (dict) => {\n if (!dict) return \"appview\"; // defaults to 'appview' channel\n const osview = Object.keys(dict).filter((x) => x === \"osview\" || x === \"osview2\");\n if (osview.length > 0)\n return osview[0]; // osview channel passed in\n else return \"appview\";\n};\n\n/*\n * _leafscreenio() is a dataflow-plane-scoped function for the LEAF node of logic type 'leafscreenio'.\n * it is used to declare a screen io object in a dataflow-scoped leaf component graph.\n */\nconst _leafscreenio = {\n dataflow:\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n // space for node type specific init prior to use\n //const _leafnode = contextuallambda; // derivative leafnode\n //const _leafnode_logic = contextuallambda.uuid;\n\n // get the refnode w.r.t. the current leaf node\n //const refnode = refnodepath[0]; //leafgraph.graph.lambda.outNeighbors(contextuallambda[0])[0];\n //const refnode_logic = runtimeEtaTree.leafgraph.graph.dataflow.getNodeAttributes(refnode).leafnode.data.leaf.logic;\n //const contextual_lut = refnode ? parseLambdaLUT(contextuallambda, _refnode, _refnode_logic) : undefined;\n // get the refnode w.r.t. the contextuallambda nodes\n // check for parsing error conditions\n //if (!contextuallambda) {\n // throw `LEAF error: the logical construct built using the ${refnodedata.leaf.logic.type} node `+\n // `(${refnode}) called with args (${JSON.stringify(refnodedata.leaf.logic.args)}).`;\n //}\n //if (!('_default' in contextual_lut)) {\n // throw `LEAF error: the logical construct built using the ${_refnode_logic.type} node `+\n // `(${_refnode}) called with args (${JSON.stringify(_refnode_logic.args)}) has no `+\n // `default defined for its lambda, while being referenced by the leaflambdagraph node (${leafnode}). `+\n // 'A default lambda construct is required by the leaflambdagraph node.';\n //}\n\n // for the derivative nodelambda, look up the list of lambda leaf nodes connected to the defualt lambda entry node.\n // for the derivative contextuallambda, use current node's nodelambda.\n //const _nodelambda = leafgraph.edges.lambda.sourcelut[contextual_lut._default.uuid];\n\n //const thecorelogic = await etaReduceLambdaGraphs(contextual_lut._default.uuid, _nodelambda, _contextuallambda, leafgraph, graphcomponents);\n //const thecorelogic = await etaReduceLambdaGraphs({nodelambda: contextuallambda, contextuallambda: nodelambda});\n //const reduced_lambda_obj = await etaReduceLambdaGraphs({refnode, nodelambda: contextuallambda, contextuallambda: nodelambda});\n\n // allow lambda for fudging around with different modes of actions of leafscreenio only in the os domain of breezyforest\n // spark_dev_note: 11/May/2023\n // #emailinglist-lib #thirdpartydomain\n // the following (commented line of code) imposed restriction on non-breezyforest domain app logics\n // by forcing them to write only to appview.\n // it was introduced as a security measure without fully understanding\n // the balance between \"ease of use yet vulnerable\" vs \"cumbersome yet secure\".\n // the trouble was seen when a breezyforest app used a library (emailinglist-lib) from\n // a third-party domain (spark), which writes to osview2 but was forced to \"appview\" channel\n // without complaining about the restriction, and caused a heck of a lot debugging the funky\n // aftereffect.\n // the restriction is lifted for now until a wider-scope reasoning is done on the matter.\n //const reduced_lambda_obj = (lambdactrl.gos.etaTree.domain === 'breezyforest') ? await etaReduceLambdaGraphs({refnode, nodelambda, contextuallambda, etaTree: lambdactrl.gos.etaTree}) : {};\n const reduced_lambda_obj = await etaReduceLambdaGraphs({\n refnode,\n nodelambda,\n contextuallambda,\n etaTree: lambdactrl.gos.etaTree,\n });\n const channelname = getIOChannel(reduced_lambda_obj);\n\n const node_context = {\n codebase: \"leafscreenio.js\",\n refnode,\n leafnode:\n lambdactrl.gos.etaTree.leafgraph.graph.dataflow.getNodeAttributes(refnode).leafnode.data,\n };\n\n return (input$objArr, controlflow$obj) => {\n // identify function\n\n const _leafscreenio_postprocessfunc = (_data_in) => {\n //const _data_out = doUnbottle(undefined, _data_in); // unbottle all bottles\n //flowinterface.data_in.next(_data_in);\n\n // spark_dev_note:\n // leafio addressed to osview and osview2 gets heard by callbackOnLEAFIOosView & callbackOnLEAFIOosView2 in App.js\n // and the data expected by the two callback functions is array, so if the data is not in array\n // put it into an array and send.\n const _data_in_arr = Array.isArray(_data_in) ? _data_in : [_data_in];\n // spark_dev_note: 19/Jun/2023\n // #databus\n //const _payload = _data_in_arr.map(_in => {\n // return doUnbottle(\"screenio\", exitDataBus({_bus: _in, _flatten:true}));\n //}).filter(_=>_);\n const _payload = _data_in_arr\n .map((_in) => {\n return doUnbottle(\"screenio\", _in);\n })\n .filter((_) => _);\n // spark_dev_note: 31/July/2023\n // visual elements written to screenio in LEAF gets sent to App.js via leafio as in the following.\n // when previously written visual elements get closed (by user), via the LEAF coding pattern of\n // erasing any memory of visual elements using \"amnesia\", the \"amnesia\" memoryio would output\n // \"null\" data that eventually gets passed down here as [null] through LEAF edge connectivity.\n // The above line of unbottling followed by filter(_=>_) would leave an empty array (ie [])\n // This empty array still needs to be written to the designated leafio channel, as a way to\n // notify the relevant LEAFVisualElements object about the nulling event so it can react to\n // the user action.\n //debounce(() => {\n console.log(\"screenio:\", _payload);\n if (_payload !== undefined) {\n lambdactrl.gos.leafio.getMasterSubsDir()[channelname].main.doWrite({\n //\"control\": {\"provenance\": {\"stateObjInstanceID\": 'doineedthis', \"dataOrigin\": 'andthis'}},\n //\"data\": {graph_data: graph_data}\n control: {},\n data: _payload,\n });\n }\n // },\n // 20\n //)();\n\n const _data_out = doBottle(\"screenio\", \"written\"); // do nothing\n return _data_out;\n };\n\n const _nodeflowfunc = (_input$objArr, _controlflow$obj) => {\n console.log(\"start debugging\");\n //const _outflow_data$ = new ReplaySubject(1);\n const _outflow_data$ = new Subject(); // new ReplaySubject(1);\n\n const _outflow_ctrl$ = _controlflow$obj._stream.pipe(\n //switchMap(_ctrl_in=> {\n // //flowinterface.ctrl_in.next(_ctrl_in);\n // return combineLatest([of(_ctrl_in), ..._input$objArr.map(_=>_._stream)]);\n //}),\n withLatestFrom(..._input$objArr.map((_) => _._stream)),\n switchMap((_combined_in) => {\n const _next_data = _combined_in.slice(1).filter((_data) => _data !== undefined);\n if (_next_data.length === 1) {\n // in and out, presence of input data indicates the intention of memory write\n _outflow_data$.next(_next_data[0]); // publish the next available post-processed data via the data flow subject channel\n } else if (_next_data.length > 1) _outflow_data$.next(_next_data);\n //else { // out only, no input data indicates the intention of memory retrieval\n // //const memorybottle = domemoryio(undefined);\n // _outflow_data$.next(memorybottle); // publish the next available post-processed data via the data flow subject channel\n //}\n return of(_combined_in[0]); // only pass the ctrl data in the flow;\n }),\n share(),\n );\n return {\n _stream: _outflow_data$,\n _control: { ..._controlflow$obj, _stream: _outflow_ctrl$ },\n };\n };\n //const consolidated_input$objArr = [combineDataflows(refnode, input$objArr)];\n //const consolidated_input$objArr = [{_stream: chronosDataflow(controlflow$obj._stream, input$objArr.map(_$obj=>_$obj._stream), false, CHRONOSTYPE_SYNC, {time: 10000})}];\n const output$obj = driveDataflowByCtrlflow(\n controlflow$obj,\n input$objArr,\n undefined,\n { ...node_context, metastep: \"invoking screenio\" },\n {\n leaflogic: _nodeflowfunc,\n datalogic: { post: _leafscreenio_postprocessfunc },\n },\n );\n\n return output$obj;\n\n ////const mergedflow$obj = combineDataflows(refnode, flowinput$Arr);\n //const mergedflow$obj = combineDataflows(refnode, flowinput$Arr, false, false, false, {provenance: \"leafdeckclub.js\", refnode, etaTree: lambdactrl.gos.etaTree});// default to merging multiple streams\n\n //if (mergedflow$obj) {\n // const mock_navnodeedges = [];\n // //const mock_navnodeedges2 = [\n // //// spark_dev_note: determine where the provenance of navnodeedges would be provided. in the bottle? or nowhere?\n // //// the following structure is what's used in the leaf graph either for a node or for an edge\n // //// provenance: {\n // //// graph: {domain: 'storm', appid: 'leafeditor'} // about the graph that initiated the creation of this edge\n // //// },\n // //// for now (21 Feb 2022), we're sticking to the following structure for testing purposes\n // // {\n // // //label: '',\n // // source: {uuid: '308bd84f-3af2-478e-ae35-b2842a9bd3a2'},\n // // target: {uuid: '308bd84f-3af2-478e-ae35-b2842a9bd3a3'},\n // // uuid: 'aca6bb1e-44c6-41ff-94e6-742888cd8ff2', // an edge id unique in the domain\n // // },\n // //];\n //\n // // spark_dev_note:\n // // leafio addressed to osview and osview2 gets heard by callbackOnLEAFIOosView & callbackOnLEAFIOosView2 in App.js\n // // and the data expected by the two callback functions is array, so if the data is not in array\n // // put it into an array and send.\n // const outflow$ = mergedflow$obj._stream.pipe(\n // map(\n // _data => {\n // debounce(() => {\n // const _payload = exitDataBus({_bus:_data, _flatten:true});\n // console.log(\"screenio:\", _payload);\n // if (_payload !== undefined) {\n // lambdactrl.gos.leafio.getMasterSubsDir()[channelname].main.doWrite(\n // {\n // //\"control\": {\"provenance\": {\"stateObjInstanceID\": 'doineedthis', \"dataOrigin\": 'andthis'}},\n // //\"data\": {graph_data: graph_data}\n // \"control\": {},\n // \"data\": Array.isArray(_payload) ? _payload : [_payload]\n // }\n // );\n // }\n // },\n // 20\n // )();\n\n // return _data;\n // //return _data.map(\n // // x => {\n // // // {element: {gnav: {nodeuuid, componentloader}}}\n // // // spark_dev_note: currently x, as a result of leafmixflow, is an array,\n // // // otherwise any non-array data are wrapped in an array here as a makeshift solution\n // // // make sure to confirm if this is normal and intended a leaf behavior.\n // // // also, this is where leafscreenio dispatches various kinds of screen io\n // // // including gnav and popupwindow. the current code base only supports gnav\n // // // and this is done without checking the destination element. refactor it to\n // // // support multiple element destinations.\n // // //const graph_data = {\"nodes\": Array.isArray(x) ? x : [x], \"edges\": mock_navnodeedges};\n // // //const graph_data = {\"nodes\": [], \"edges\": []};\n // // //sending a message down on the 'appview' channel\n // // lambdactrl.gos.leafio.getMasterSubsDir()['appview'].main.doWrite(\n // // {\n // // //\"control\": {\"provenance\": {\"stateObjInstanceID\": 'doineedthis', \"dataOrigin\": 'andthis'}},\n // // //\"data\": {graph_data: graph_data}\n // // \"control\": {},\n // // \"data\": x\n // // }\n // // );\n // // return x;\n // // }\n // //)\n // //return _data;\n // }\n // )\n // )\n\n // return {_stream: outflow$, _control: controlflow$obj};\n //}\n };\n },\n lambda:\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n // space for node type specific init prior to use\n // note the cross over in the roles of nodelambda and contextuallambda\n console.error(\n `LEAF error: the logical construct built using the ${refnodedata.leaf.logic.type} node ` +\n `(${refnode}) called with args (${JSON.stringify(refnodedata.leaf.logic.args)}) cannot ` +\n \"be defined as a lambda-scoped node.\",\n );\n return (flowinput$Arr, controlflow$obj) => {\n // identify function\n return { ...mergeDataflows(flowinput$Arr), _control: controlflow$obj };\n };\n },\n};\n\nexport { _leafscreenio };\n","const fetchMultiKeyedData = (keylist, dataobj) => {\n if (keylist.length > 0 && keylist[0] in dataobj) {\n if (keylist.length === 1)\n return dataobj[keylist[0]]; // (keylist.length > 1)\n else return fetchMultiKeyedData(keylist.slice(1), dataobj[keylist[0]]);\n }\n};\n\nconst setMultiKeyedData = (keylist, dataobj, value) => {\n if (keylist.length > 0 && keylist[0] in dataobj) {\n if (keylist.length === 1)\n dataobj[keylist[0]] = value; // (keylist.length > 1)\n else setMultiKeyedData(keylist.slice(1), dataobj[keylist[0]], value);\n }\n};\n\nexport { fetchMultiKeyedData, setMultiKeyedData };\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"fast-safe-stringify\");","/**\n * Secure Hash Algorithm (SHA1)\n * http://www.webtoolkit.info/\n * as per https://coursesweb.net/javascript/sha1-encrypt-data_cs\n **/\nfunction SHA1(msg) {\n function rotate_left(n, s) {\n var t4 = (n << s) | (n >>> (32 - s));\n return t4;\n }\n function cvt_hex(val) {\n var str = \"\";\n var i;\n var v;\n for (i = 7; i >= 0; i--) {\n v = (val >>> (i * 4)) & 0x0f;\n str += v.toString(16);\n }\n return str;\n }\n function Utf8Encode(string) {\n string = string.replace(/\\r\\n/g, \"\\n\");\n var utftext = \"\";\n for (var n = 0; n < string.length; n++) {\n var c = string.charCodeAt(n);\n if (c < 128) {\n utftext += String.fromCharCode(c);\n } else if (c > 127 && c < 2048) {\n utftext += String.fromCharCode((c >> 6) | 192);\n utftext += String.fromCharCode((c & 63) | 128);\n } else {\n utftext += String.fromCharCode((c >> 12) | 224);\n utftext += String.fromCharCode(((c >> 6) & 63) | 128);\n utftext += String.fromCharCode((c & 63) | 128);\n }\n }\n return utftext;\n }\n var blockstart;\n var i, j;\n var W = [];\n W.length = 80;\n var H0 = 0x67452301;\n var H1 = 0xefcdab89;\n var H2 = 0x98badcfe;\n var H3 = 0x10325476;\n var H4 = 0xc3d2e1f0;\n var A, B, C, D, E;\n var temp;\n msg = Utf8Encode(msg);\n var msg_len = msg.length;\n var word_array = [];\n for (i = 0; i < msg_len - 3; i += 4) {\n j =\n (msg.charCodeAt(i) << 24) |\n (msg.charCodeAt(i + 1) << 16) |\n (msg.charCodeAt(i + 2) << 8) |\n msg.charCodeAt(i + 3);\n word_array.push(j);\n }\n switch (msg_len % 4) {\n case 0:\n i = 0x080000000;\n break;\n case 1:\n i = (msg.charCodeAt(msg_len - 1) << 24) | 0x0800000;\n break;\n case 2:\n i = (msg.charCodeAt(msg_len - 2) << 24) | (msg.charCodeAt(msg_len - 1) << 16) | 0x08000;\n break;\n case 3:\n i =\n (msg.charCodeAt(msg_len - 3) << 24) |\n (msg.charCodeAt(msg_len - 2) << 16) |\n (msg.charCodeAt(msg_len - 1) << 8) |\n 0x80;\n break;\n }\n word_array.push(i);\n while (word_array.length % 16 != 14) word_array.push(0);\n word_array.push(msg_len >>> 29);\n word_array.push((msg_len << 3) & 0x0ffffffff);\n for (blockstart = 0; blockstart < word_array.length; blockstart += 16) {\n for (i = 0; i < 16; i++) W[i] = word_array[blockstart + i];\n for (i = 16; i <= 79; i++) W[i] = rotate_left(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n A = H0;\n B = H1;\n C = H2;\n D = H3;\n E = H4;\n for (i = 0; i <= 19; i++) {\n temp = (rotate_left(A, 5) + ((B & C) | (~B & D)) + E + W[i] + 0x5a827999) & 0x0ffffffff;\n E = D;\n D = C;\n C = rotate_left(B, 30);\n B = A;\n A = temp;\n }\n for (i = 20; i <= 39; i++) {\n temp = (rotate_left(A, 5) + (B ^ C ^ D) + E + W[i] + 0x6ed9eba1) & 0x0ffffffff;\n E = D;\n D = C;\n C = rotate_left(B, 30);\n B = A;\n A = temp;\n }\n for (i = 40; i <= 59; i++) {\n temp =\n (rotate_left(A, 5) + ((B & C) | (B & D) | (C & D)) + E + W[i] + 0x8f1bbcdc) & 0x0ffffffff;\n E = D;\n D = C;\n C = rotate_left(B, 30);\n B = A;\n A = temp;\n }\n for (i = 60; i <= 79; i++) {\n temp = (rotate_left(A, 5) + (B ^ C ^ D) + E + W[i] + 0xca62c1d6) & 0x0ffffffff;\n E = D;\n D = C;\n C = rotate_left(B, 30);\n B = A;\n A = temp;\n }\n H0 = (H0 + A) & 0x0ffffffff;\n H1 = (H1 + B) & 0x0ffffffff;\n H2 = (H2 + C) & 0x0ffffffff;\n H3 = (H3 + D) & 0x0ffffffff;\n H4 = (H4 + E) & 0x0ffffffff;\n }\n var digest = cvt_hex(H0) + cvt_hex(H1) + cvt_hex(H2) + cvt_hex(H3) + cvt_hex(H4);\n\n return digest.toLowerCase();\n}\n\nexport { SHA1 };\n","import { runtimeEtaTree } from \"./eta.js\";\nimport { reconstructLEAFGraph, analyzeLEAFGraph } from \"./leaf.js\";\nimport { v5 as uuid5 } from \"uuid\";\n\nconst DEFAULT_GITHUB_REF = \"main\";\nconst GITHUB_DOMAIN = \"github\";\n\nconst redactQueryValues = (graphRef) => {\n if (typeof graphRef !== \"string\") {\n return graphRef;\n }\n const queryIndex = graphRef.indexOf(\"?\");\n if (queryIndex === -1) {\n return graphRef;\n }\n const refPath = graphRef.slice(0, queryIndex);\n const refQuery = graphRef.slice(queryIndex + 1);\n if (refQuery.length === 0) {\n return `${refPath}?`;\n }\n const redactedQuery = refQuery\n .split(\"&\")\n .map((entry) => {\n if (!entry) {\n return entry;\n }\n const [key] = entry.split(\"=\");\n return key ? `${key}=REDACTED` : \"REDACTED\";\n })\n .join(\"&\");\n return `${refPath}?${redactedQuery}`;\n};\n\nconst redactGraphCoordinate = (graphdomain, graphappid) =>\n `${graphdomain}/${redactQueryValues(graphappid)}`;\n\nconst normalizeGraphNodesPayload = (payload) => {\n if (!payload) {\n return [];\n }\n if (payload.graph?.nodes) {\n return payload.graph.nodes;\n }\n if (payload.data?.graph?.nodes) {\n return payload.data.graph.nodes;\n }\n if (payload.nodes) {\n return payload.nodes;\n }\n return [];\n};\n\nconst parseGithubGraphRef = (graphappid) => {\n const [appid_path, appid_query] = graphappid.split(\"?\");\n const parts = appid_path.split(\"/\");\n if (parts[0]?.toLowerCase() === GITHUB_DOMAIN) {\n parts.shift();\n }\n if (parts.length < 3) {\n return null;\n }\n const user = parts.shift();\n const repo_part = parts.shift();\n if (!user || !repo_part) {\n return null;\n }\n const repo_segments = repo_part.split(\"@\");\n const repo = repo_segments[0];\n const ref = repo_segments[1] || DEFAULT_GITHUB_REF;\n let path = parts.join(\"/\");\n if (!repo || !path) {\n return null;\n }\n if (!path.endsWith(\".json\")) {\n path = `${path}.json`;\n }\n return { user, repo, ref, path, query: appid_query };\n};\n\nconst isGithubGraphRef = (graphdomain, graphappid) => {\n if (typeof graphdomain === \"string\" && graphdomain.toLowerCase() === GITHUB_DOMAIN) {\n return true;\n }\n if (typeof graphappid !== \"string\") {\n return false;\n }\n const graphappidLower = graphappid.toLowerCase();\n return graphappidLower.startsWith(`${GITHUB_DOMAIN}/`) && graphappidLower.includes(\"/\");\n};\n\nconst fetchGithubGraph = async (graphdomain, graphappid) => {\n const graph_ref = parseGithubGraphRef(graphappid);\n if (!graph_ref) {\n throw new Error(`Invalid GitHub graph reference: ${redactQueryValues(graphappid)}`);\n }\n if (!globalThis.fetch) {\n throw new Error(\"GitHub graph fetch requires global fetch.\");\n }\n const { user, repo, ref, path, query } = graph_ref;\n const url = `https://raw.githubusercontent.com/${user}/${repo}/refs/heads/${ref}/${path}${query ? `?${query}` : \"\"}`;\n const response = await globalThis.fetch(url);\n if (!response.ok) {\n throw new Error(\n `Failed to fetch GitHub graph ${redactGraphCoordinate(graphdomain, graphappid)}: ${response.status}`,\n );\n }\n const payload = await response.json();\n const nodes = normalizeGraphNodesPayload(payload);\n return { graph: { nodes } };\n};\n\n/*\n * etaTreeForest is a memory instance managing a bag of etatrees and information on their hierarchical relationships\n * to be stored in the master mnemosyne storage instance held by App.js, under the memory key \"_etaTreeForest\".\n * prefixing a memory key name with underscore would provide a mechanism for stopping user-level access to the memory\n * via the menomsyne leafnode. As of 14 May 2022, menosyne leafnode needs refactoring to disallow user-level access\n * for any underscore prefixed memory names.\n */\nconst etaTreeForest = (refEtaTree) => {\n const retrieveMasterEtaTree = (_etatree) => {\n if (!_etatree.hostEtaTree) return _etatree;\n return retrieveMasterEtaTree(_etatree.hostEtaTree);\n };\n\n //{\n // setEtaTree: (treename, etaTree, parentname) => {\n // masterEtaTree.mnemosyne.current[_etatreeforest_key][treename] = {tree: etaTree, parent: parentname};\n // return data;\n // //lambdactrl.gos.etaTree.mnemosyne.current = {...lambdactrl.gos.etaTree.mnemosyne.current, [memorykey]: data};\n // // TBD: ponder about the best approach to mutating the master mnemosyne\n // // lambdactrl.gos.etaTree.mnemosyne.current[memorykey] = data;\n // // or to use the \"pure\" approach of store = {...store, [key]: val}\n // },\n // getEtaTree: (treename) => {\n // return masterEtaTree.mnemosyne.current[_etatreeforest][treename].tree;\n // }\n //},\n const rootEtaTree = retrieveMasterEtaTree(refEtaTree);\n const { appmode, domain, appid } = rootEtaTree;\n // spark_dev_note: below memory uri is only for systematically generating uuids based on graph's domain and appid\n // the uri does not correspond to a physical address serving any data.\n const etatreeforest_memory_uri = `https://www.leafgon.com/${domain}/${appid}/_etaTreeForest`; //${memoryname}`;\n const _etatreeforest_key = uuid5(etatreeforest_memory_uri, uuid5.URL); // uuid deterministically generated based on domain and appid\n const etaTreeLUT = rootEtaTree.mnemosyne.current[_etatreeforest_key];\n const etaTreeForestObj = {\n initEtaTreeForest: () => {\n if (!(_etatreeforest_key in rootEtaTree.mnemosyne.current))\n rootEtaTree.mnemosyne.current[_etatreeforest_key] = {};\n else\n console.error(\n \"LEAF Error: an attempt to initialize an already initialized instance of etaTreeForest detected. This is likely due to a bug in eta tree handling.\",\n );\n },\n getEtaTree: async (graphdomain, graphappid) => {\n const etatreekey = graphdomain + \"/\" + graphappid;\n if (etatreekey in etaTreeLUT) {\n return rootEtaTree.mnemosyne.current[_etatreeforest_key][etatreekey].tree; // {tree, parent} per etaTree reference\n } else {\n // need to reconstruct the relevant etaTree by parsing the graph from scratch\n const etatree = await etaTreeForestObj.parseGraphEtaTree(graphdomain, graphappid);\n return etatree;\n }\n },\n setEtaTree: (graphdomain, graphappid, etaTree, parentname) => {\n const etatreekey = graphdomain + \"/\" + graphappid;\n rootEtaTree.mnemosyne.current[_etatreeforest_key][etatreekey] = {\n tree: etaTree,\n parent: parentname,\n }; // {tree, parent} per etaTree reference\n },\n removeEtaBush: (graphdomain, graphappid) => {\n // now remove etaTree associated to graphdomain/graphappid and any other etaTrees\n // registered in the forest with graphdomain/graphappid as parent\n const etatreekey = graphdomain + \"/\" + graphappid;\n const _etaTreeLUT = Object.entries(etaTreeLUT)\n .filter(([key, val]) => key !== etatreekey && val.parent !== etatreekey)\n .reduce((lut, entry) => {\n lut[entry[0]] = entry[1];\n return lut;\n }, {});\n rootEtaTree.mnemosyne.current[_etatreeforest_key] = _etaTreeLUT;\n },\n parseGraphEtaTree: async (graphdomain, graphappid) => {\n const host_domain = domain;\n const host_appid = appid;\n const safeGraphCoord = redactGraphCoordinate(graphdomain, graphappid);\n // {_appmode, _hostdomain, _hostappid, _domain, _appid, filter='{}', variables}\n console.log(\"parseGraphEtaTree(): \", safeGraphCoord, \"parsing...\");\n if (globalThis?.DEBUG) {\n const tracecoord = safeGraphCoord;\n if (globalThis.trace[tracecoord]) {\n globalThis.trace[tracecoord].push(\"parsing\");\n } else {\n globalThis.trace[tracecoord] = [\"parsing\"];\n }\n }\n const graph_data = isGithubGraphRef(graphdomain, graphappid)\n ? await fetchGithubGraph(graphdomain, graphappid)\n : await rootEtaTree.leaflakeio.qm_methods.queryGraph({\n _appmode: appmode,\n _hostdomain: domain,\n _hostappid: appid,\n _domain: graphdomain,\n _appid: graphappid,\n });\n //runtimeLEAFGraphFuncLUTPromise = graphRefUpdateHandler(lambdactrl, host_domain, host_appid, graph_domain, graph_appid, lambdactrl.gos.leafio, lambdactrl.gos.etaTree.mnemosyne, lambdactrl.gos.etaTree, contextuallambda)(graph_data);\n if (graph_data == { graph: null }) console.error(\"start debugging\");\n //console.log(\"parseGraphEtaTree() graph queried: \", graphdomain, graphappid, graph_data);\n\n const { nodes } = graph_data.graph ? graph_data.graph : { nodes: [] };\n\n const leafgraph = reconstructLEAFGraph(nodes);\n const leafcomponents = analyzeLEAFGraph(leafgraph);\n\n // TBD: currently no mechanism is in place to support multiple runtimeEtaTrees.\n // refactor eta.js to make runtimeEtaTree an object that can be encapsulated and instantiated.\n // initialize leaf compiler\n //runtimeEtaTree.initTree(leafgraph, leafcomponents, masterSubsDirectory);\n const hostEtaTree = rootEtaTree;\n // spark_dev_note: here the sub etatree returned by runtimeEtaTree() inherits the appmode of the hostEtaTree (ie rootEtaTree)\n // this usage scenario would work in the mean time but some thought experiment needs to be done\n // to see if this inheritance is valid universally or not.\n // the rootEtaTree is initialized in App.js under handleGraphUpdate()\n const etaTree = runtimeEtaTree(\n appmode,\n host_domain,\n host_appid,\n graphdomain,\n graphappid,\n leafgraph,\n leafcomponents,\n hostEtaTree.leafio,\n hostEtaTree.leaflakeio,\n hostEtaTree.mnemosyne,\n hostEtaTree,\n );\n // set etaTree in the main mnemosyne's memory space with the key name '_etaTreeForest' using the treename\n //const treename = graph_domain+\"/\"+graph_appid;\n const parentname = hostEtaTree ? host_domain + \"/\" + host_appid : undefined;\n etaTreeForestObj.setEtaTree(graphdomain, graphappid, etaTree, parentname); // setEtaTree of etatreeforest.js accessed via the formalities of _leafmemoryio methods\n\n console.log(\"parseGraphEtaTree(): \", safeGraphCoord, \"parsed\");\n if (globalThis?.DEBUG) {\n const tracecoord = safeGraphCoord;\n if (globalThis.trace[tracecoord]) {\n globalThis.trace[tracecoord].push(\"parsed\");\n } else {\n globalThis.trace[tracecoord] = [\"parsed\"];\n }\n }\n return etaTree;\n },\n };\n\n return etaTreeForestObj;\n};\n\nexport { etaTreeForest };\n","import { etaReduceLambdaGraphs } from \"../../eta.js\";\nimport { map, withLatestFrom, share } from \"rxjs/operators\";\nimport { _leafstdlib_dataflow_api } from \"../../../metamodel.js\";\nimport { fetchMultiKeyedData } from \"../../../utils/fetchnodedata.js\";\nimport { Subject } from \"rxjs\";\nimport safeStringify from \"fast-safe-stringify\";\nimport { v5 as uuid5 } from \"uuid\";\nimport { SHA1 } from \"../../../utils/crypto.js\";\nimport { etaTreeForest } from \"../../etatreeforest.js\";\nimport { isBottle } from \"../../predicates.js\";\nimport { driveDataflowByCtrlflow } from \"../../leaf.js\";\nimport { doBottle } from \"../datautils/bottling.js\";\nconst leaf_apidef = _leafstdlib_dataflow_api(\"leafmemoryio\");\n\nconst isPersistentMemory = (_name, _uri, _lambdaobj, _spade_lambda) => {\n //const thespadeuuid = _lambdactrl.gos.etaTree.leafgraph.thespade.uuid;\n //_lambdactrl.gos.etaTree.lookupRuntimeLambdaLUT(\"breezyforest\", \"main\", thespadeuuid, [], []);\n // https://medium.com/@alvaro.saburido/set-theory-for-arrays-in-es6-eb2f20a61848\n //const _spade_labels = Object.keys(_spade_lambda);\n //const intersection = Object.keys(_lambdaobj).filter(x => _spade_labels.includes(x));\n const isvalidmemoryref = Object.keys(_spade_lambda).includes(_name);\n //console.log(isvalidmemoryref);\n\n if (isvalidmemoryref) return true;\n else return false;\n};\n\n/*\n * _leafscreenio() is a dataflow-plane-scoped function for the LEAF node of logic type 'leafscreenio'.\n * it is used to declare a screen io object in a dataflow-scoped leaf component graph.\n */\nconst _leafmemoryio = {\n dataflow:\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n // space for node type specific init prior to use\n\n const reduced_lambda_obj = await etaReduceLambdaGraphs({\n refnode,\n nodelambda,\n contextuallambda,\n etaTree: lambdactrl.gos.etaTree,\n });\n\n const { args } = refnodedata.leaf.logic;\n const memoryname = fetchMultiKeyedData(leaf_apidef.editorconfig.namedatakey, args);\n\n const { domain, appid } = lambdactrl.gos.etaTree;\n const leafspade_uri = `www.leafgon.com/mnemosyne/${domain}/${appid}/${memoryname}`;\n const memorykey = uuid5(leafspade_uri, uuid5.URL); // uuid deterministically generated based on domain and appid\n\n const ismarkedglobal = \"global\" in reduced_lambda_obj ? true : false;\n const is_on_tap = \"on-tap\" in reduced_lambda_obj ? true : false;\n const is_proxy = \"proxy\" in reduced_lambda_obj ? true : false;\n\n const thespadeuuid = lambdactrl.gos.etaTree.leafgraph.thespade?.uuid;\n const spade_lambda =\n thespadeuuid && ismarkedglobal\n ? await lambdactrl.gos.etaTree.lookupRuntimeLambdaLUT(\n \"breezyforest\",\n \"main\",\n thespadeuuid,\n lambdactrl.gos.etaTree.leafgraph.edges.lambda.sourcelut[thespadeuuid],\n [],\n )\n : undefined;\n if (refnode.slice(0, 4) === \"4d34\") console.log(\"start debugging\");\n if (ismarkedglobal) {\n isPersistentMemory(memoryname, leafspade_uri, reduced_lambda_obj, spade_lambda);\n }\n const node_context = {\n codebase: \"leafmemoryio.js\",\n refnode,\n leafnode:\n refnode !== \"jest\" &&\n lambdactrl.gos.etaTree.leafgraph.graph.dataflow.getNodeAttributes(refnode)?.leafnode.data,\n };\n\n return (input$objArr, controlflow$obj) => {\n // identify function\n if (memoryname === \"userinput1\") console.log(memoryname);\n if (memoryname === \"details\") console.log(memorykey);\n\n const preprocessfunc = (_data_in) => {\n //const _data_out = doUnbottle(undefined, _data_in); // unbottle all bottles\n //flowinterface.data_in.next(_data_in);\n const _data_out = _data_in; // do nothing\n return _data_out;\n };\n\n // spark_dev_note: 19/Jun/2023\n // #databus\n //const isamnesia = (_signal) => {\n // return (isBottle(_signal) && _signal._bname === \"_databus\" &&\n // _signal._label._type === \"memoryio\" && _signal._label._command === \"forget\");\n //};\n const isamnesia = (_signal) => {\n return (\n isBottle(_signal) &&\n _signal._bname !== undefined &&\n _signal._label._type === \"memoryio\" &&\n _signal._label._command === \"forget\"\n );\n };\n\n const isEmptyBottle = (_data) => {\n return isBottle(_data)\n ? _data._bname === \"empty_bottle\" || _data._bname === \"nothing\"\n : false;\n };\n const domemoryio = (_data, _proxy_memkey = undefined) => {\n //if (memoryname === 'csrf_token')\n // console.log(memorykey);\n const cur_memkey = _proxy_memkey ? _proxy_memkey : memorykey;\n if (_data !== undefined && !isEmptyBottle(_data)) {\n //const resolved_data = await Promise.resolve(_data); // as per the discussion in https://stackoverflow.com/questions/27746304/how-do-i-tell-if-an-object-is-a-promise\n\n if (memoryname === \"captionwin\") console.log(memoryname);\n if (memoryname === \"main\" && refnode.slice(0, 4) === \"188d\") console.log(memoryname);\n\n if (isamnesia(_data)) {\n //if (lambdactrl.gos.etaTree.mnemosyne.current.hasOwnProperty(memorykey))\n // delete lambdactrl.gos.etaTree.mnemosyne.current[memorykey];\n //return {..._data,\n // _label: {..._data.label,\n // _memoryname: memoryname, _refnode: refnode,\n // _nodelocation: {domain: lambdactrl.gos.etaTree.domain, appid: lambdactrl.gos.etaTree.appid}\n // }\n //};\n const _payload = is_on_tap\n ? doBottle(\"nothing\", null, {\n _type: \"memoryio\",\n _command: \"io\",\n _memoryname: memoryname,\n _refnode: refnode,\n _nodelocation: {\n domain: lambdactrl.gos.etaTree.domain,\n appid: lambdactrl.gos.etaTree.appid,\n },\n })\n : null;\n const serialized_data = safeStringify(_payload);\n const mnemosyne_data = {\n signature: SHA1(serialized_data),\n payload: serialized_data,\n raw: _payload,\n };\n lambdactrl.gos.etaTree.mnemosyne.current = {\n ...lambdactrl.gos.etaTree.mnemosyne.current,\n [cur_memkey]: mnemosyne_data,\n }; // store in the local main mnemosyne.\n\n // spark_dev_note: 19/Jun/2023\n // #databus\n //return enterDataBus(_payload,\n // {\n // _type: \"memoryio\",\n // _command: \"io\",\n // _memoryname: memoryname, _refnode: refnode,\n // _nodelocation: {domain: lambdactrl.gos.etaTree.domain, appid: lambdactrl.gos.etaTree.appid}\n // }\n //);\n return is_on_tap\n ? _payload\n : doBottle(memoryname, _payload, {\n _type: \"memoryio\",\n _command: \"io\",\n _memoryname: memoryname,\n _refnode: refnode,\n _nodelocation: {\n domain: lambdactrl.gos.etaTree.domain,\n appid: lambdactrl.gos.etaTree.appid,\n },\n });\n } else {\n //const _payload = exitDataBus({_bus:_data});\n const _payload = _data;\n const serialized_data = safeStringify(_payload);\n const mnemosyne_data = {\n signature: SHA1(serialized_data),\n payload: serialized_data,\n raw: _payload,\n };\n lambdactrl.gos.etaTree.mnemosyne.current = {\n ...lambdactrl.gos.etaTree.mnemosyne.current,\n [cur_memkey]: mnemosyne_data,\n }; // store in the local main mnemosyne.\n\n // spark_dev_note: 19/Jun/2023\n // #databus\n //return enterDataBus(_payload,\n // {\n // _type: \"memoryio\",\n // _command: \"io\",\n // _memoryname: memoryname, _refnode: refnode,\n // _nodelocation: {domain: lambdactrl.gos.etaTree.domain, appid: lambdactrl.gos.etaTree.appid}\n // }\n //);\n return is_on_tap\n ? _payload\n : doBottle(memoryname, _payload, {\n _type: \"memoryio\",\n _command: \"io\",\n _memoryname: memoryname,\n _refnode: refnode,\n _nodelocation: {\n domain: lambdactrl.gos.etaTree.domain,\n appid: lambdactrl.gos.etaTree.appid,\n },\n });\n }\n } else {\n if (memoryname === \"backdrop\") console.log(\"start debugging\");\n if (cur_memkey in lambdactrl.gos.etaTree.mnemosyne.current) {\n const mnemosyne_data = lambdactrl.gos.etaTree.mnemosyne.current[cur_memkey];\n\n // spark_dev_note: 19/Jun/2023\n // #databus\n //return enterDataBus(mnemosyne_data.raw,\n // {\n // _type: \"memoryio\",\n // _command: \"o\",\n // _memoryname: memoryname, _refnode: refnode,\n // _nodelocation: {domain: lambdactrl.gos.etaTree.domain, appid: lambdactrl.gos.etaTree.appid}\n // }\n //);\n return is_on_tap\n ? mnemosyne_data.raw\n : doBottle(memoryname, mnemosyne_data.raw, {\n _type: \"memoryio\",\n _command: \"o\",\n _memoryname: memoryname,\n _refnode: refnode,\n _nodelocation: {\n domain: lambdactrl.gos.etaTree.domain,\n appid: lambdactrl.gos.etaTree.appid,\n },\n });\n } else {\n // spark_dev_note: 19/Jun/2023\n // #databus\n //return enterDataBus(undefined,\n // {\n // _type: \"memoryio\",\n // _command: \"forget\",\n // _memoryname: memoryname, _refnode: refnode,\n // _nodelocation: {domain: lambdactrl.gos.etaTree.domain, appid: lambdactrl.gos.etaTree.appid}\n // }\n //);\n const _payload = is_on_tap\n ? doBottle(\"nothing\", null, {\n _type: \"memoryio\",\n _command: \"forget\",\n _memoryname: memoryname,\n _refnode: refnode,\n _nodelocation: {\n domain: lambdactrl.gos.etaTree.domain,\n appid: lambdactrl.gos.etaTree.appid,\n },\n })\n : null;\n return is_on_tap\n ? _payload\n : doBottle(memoryname, _payload, {\n _type: \"memoryio\",\n _command: \"forget\",\n _memoryname: memoryname,\n _refnode: refnode,\n _nodelocation: {\n domain: lambdactrl.gos.etaTree.domain,\n appid: lambdactrl.gos.etaTree.appid,\n },\n });\n }\n }\n };\n\n const _nodeflowfunc = (_input$objArr, _controlflow$obj) => {\n console.log(\"start debugging\");\n const _outflow_data$ = new Subject(); //BehaviorSubject(raceConditionError);\n\n const _outflow_ctrl$ = _controlflow$obj._stream.pipe(\n //concatMap(_ctrl_in=> {\n // //flowinterface.ctrl_in.next(_ctrl_in);\n // return combineLatest([of(_ctrl_in), ..._input$objArr.map(_=>_._stream)]);\n //}),\n withLatestFrom(..._input$objArr.map((_) => _._stream)),\n map((_combined_in) => {\n // spark_dev_note: 19/Jun/2023\n // #databus\n //const _next_data = _combined_in.slice(1).filter(_data=>\n // (_data!==undefined && !(isBottle(_data) && _data._bname === \"_databus\" && _data._label._type !== \"memoryio\")));\n //const _next_data = _combined_in.slice(1).filter(_data=>\n // (_data!==undefined));\n\n //if (_next_data.length === 1) {\n // const memorybottle = domemoryio(_next_data[0]);\n // _outflow_data$.next(memorybottle); // publish the next available post-processed data via the data flow subject channel\n //}\n //else if (_next_data.length > 1) { // in and out, presence of input data indicates the intention of memory write\n // const memorybottle = domemoryio(_next_data);\n // _outflow_data$.next(memorybottle); // publish the next available post-processed data via the data flow subject channel\n //}\n //else { // out only, no input data indicates the intention of memory retrieval\n // const memorybottle = domemoryio(undefined);\n // _outflow_data$.next(memorybottle); // publish the next available post-processed data via the data flow subject channel\n //}\n //return new BehaviorSubject(_combined_in[0]); // only pass the ctrl data in the flow;\n\n if (is_proxy) {\n const cur_sid = _combined_in[0].sid.slice(-1).pop(); // current sid\n const proxymemkey_uri = `www.leafgon.com/mnemosyne/${domain}/${appid}/${memoryname}/${cur_sid}`;\n const proxy_memkey = uuid5(proxymemkey_uri, uuid5.URL); // uuid deterministically generated based on domain and appid\n\n const memorybottle = domemoryio(_combined_in[1], proxy_memkey);\n _outflow_data$.next(memorybottle); // publish the next available post-processed data via the data flow subject channel\n } else {\n const memorybottle = domemoryio(_combined_in[1]);\n _outflow_data$.next(memorybottle); // publish the next available post-processed data via the data flow subject channel\n }\n\n return _combined_in[0];\n }),\n share(),\n );\n return {\n _stream: _outflow_data$,\n _control: { ..._controlflow$obj, _stream: _outflow_ctrl$ },\n };\n };\n\n //const consolidated_input$objArr = [combineDataflows(refnode, input$objArr)];\n //const consolidated_input$objArr = [{_stream: chronosDataflow(controlflow$obj._stream, input$objArr.map(_$obj=>_$obj._stream), false, CHRONOSTYPE_SYNC, {time: 10000})}];\n const output$obj = driveDataflowByCtrlflow(\n controlflow$obj,\n input$objArr,\n undefined,\n { ...node_context, metastep: \"memory io \" + memoryname },\n { leaflogic: _nodeflowfunc, datalogic: { pre: preprocessfunc } },\n );\n\n return output$obj;\n };\n },\n lambda:\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n // space for node type specific init prior to use\n const lambda_lut = {};\n\n // valid refnodes are leafmemoryio node instances defined as lambda with respect to the spade node\n const thespadeuuid = lambdactrl.gos.etaTree.leafgraph.thespade?.uuid;\n //const valid_refnodes = lambdactrl.gos.etaTree.leafgraph.edges.lambda.sourcelut[lambdactrl.gos.etaTree.leafgraph.thespade.uuid];\n const isvalid = thespadeuuid\n ? lambdactrl.gos.etaTree.leafgraph.edges.lambda.sourcelut[thespadeuuid].includes(refnode)\n : false;\n if (isvalid) {\n const { args } = refnodedata.leaf.logic;\n const memoryname = fetchMultiKeyedData(leaf_apidef.editorconfig.namedatakey, args);\n\n if (nodelambda.length > 0) {\n const reduced_lambda_obj = await etaReduceLambdaGraphs({\n refnode,\n nodelambda,\n contextuallambda,\n etaTree: lambdactrl.gos.etaTree,\n });\n lambda_lut[memoryname] = { ...reduced_lambda_obj }; // label the eta reduced obj\n } else {\n lambda_lut[memoryname] = {}; // label an empty object\n }\n //Object.entries(reduced_lambda_obj).map(([key, etafunc]) => {\n // lambda_lut[key] = (input$) => { // a dataflow-scoped func per key\n // const output$ = etafunc(input$);\n // return output$;\n // }\n //});\n return lambda_lut;\n } else {\n // space for node type specific init prior to use\n // note the cross over in the roles of nodelambda and contextuallambda\n console.error(\n `LEAF error: the logical construct built using the ${refnodedata.leaf.logic.type} node ` +\n `(${refnode}) called with args (${JSON.stringify(refnodedata.leaf.logic.args)}) cannot ` +\n \"be defined as a lambda-scoped node.\",\n );\n //return (flowinput$Arr, controlflow$obj) => { // identify function\n // return {...(mergeDataflows(flowinput$Arr)), _control: controlflow$obj};\n //};\n return lambda_lut; // {}\n }\n },\n\n methods:\n (lambdactrl) =>\n ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n const retrieveMasterEtaTree = (_etatree) => {\n if (!_etatree.hostEtaTree) return _etatree;\n return retrieveMasterEtaTree(_etatree.hostEtaTree);\n };\n const masterEtaTree = retrieveMasterEtaTree(lambdactrl.gos.etaTree);\n return {\n etatreeforest: etaTreeForest(masterEtaTree),\n //{\n // setEtaTree: (treename, etaTree, parentname) => {\n // masterEtaTree.mnemosyne.current[_etatreeforest_key][treename] = {tree: etaTree, parent: parentname};\n // return data;\n // //lambdactrl.gos.etaTree.mnemosyne.current = {...lambdactrl.gos.etaTree.mnemosyne.current, [memorykey]: data};\n // // TBD: ponder about the best approach to mutating the master mnemosyne\n // // lambdactrl.gos.etaTree.mnemosyne.current[memorykey] = data;\n // // or to use the \"pure\" approach of store = {...store, [key]: val}\n // },\n // getEtaTree: (treename) => {\n // return masterEtaTree.mnemosyne.current[_etatreeforest][treename].tree;\n // }\n //},\n general: {\n setMasterMemory: (memoryname, data) => {\n const { domain, appid } = lambdactrl.gos.etaTree;\n const memory_uri = `www.leafgon.com/mnemosyne/${domain}/${appid}/${memoryname}`;\n const memorykey = uuid5(memory_uri, uuid5.URL); // uuid deterministically generated based on domain and appid\n masterEtaTree.mnemosyne.current[memorykey] = data;\n return data;\n //lambdactrl.gos.etaTree.mnemosyne.current = {...lambdactrl.gos.etaTree.mnemosyne.current, [memorykey]: data};\n // TBD: ponder about the best approach to mutating the master mnemosyne\n // lambdactrl.gos.etaTree.mnemosyne.current[memorykey] = data;\n // or to use the \"pure\" approach of store = {...store, [key]: val}\n },\n getMasterMemory: (memoryname) => {\n const { domain, appid } = lambdactrl.gos.etaTree;\n const memory_uri = `www.leafgon.com/mnemosyne/${domain}/${appid}/${memoryname}`;\n const memorykey = uuid5(memory_uri, uuid5.URL); // uuid deterministically generated based on domain and appid\n return masterEtaTree.mnemosyne.current[memorykey];\n },\n },\n };\n },\n};\n\nexport { _leafmemoryio };\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"const constFn = (fn) => () => fn;\nvar baseFn = { const: constFn };\n\nclass StdRuntimeError extends Error {\n constructor(error) {\n if (typeof error === \"string\") {\n super(error);\n } else {\n super(error.message);\n this.stack = error.stack;\n }\n }\n}\n\nvar Ordering;\n(function (Ordering) {\n Ordering[(Ordering[\"Less\"] = 0)] = \"Less\";\n Ordering[(Ordering[\"Equal\"] = 1)] = \"Equal\";\n Ordering[(Ordering[\"Greater\"] = 2)] = \"Greater\";\n})(Ordering || (Ordering = {}));\n\nclass PLBool {\n constructor(_value) {\n this._value = _value;\n }\n static fromJS(value) {\n return new PLBool(value);\n }\n static fromStr(str) {\n switch (str.value) {\n case \"true\":\n return new PLBool(true);\n case \"false\":\n return new PLBool(false);\n default:\n throw new StdRuntimeError(`Invalid boolean: \"${str.value}\".`);\n }\n }\n get value() {\n return this._value;\n }\n not() {\n return new PLBool(!this._value);\n }\n and(other) {\n return new PLBool(this._value && other._value);\n }\n or(other) {\n return new PLBool(this._value || other._value);\n }\n equals(other) {\n return new PLBool(this._value === other._value);\n }\n partialCmp(other) {\n if (this.value === other.value) {\n return Ordering.Equal;\n } else if (this.value) {\n return Ordering.Greater;\n } else {\n return Ordering.Less;\n }\n }\n copy() {\n return new PLBool(this._value);\n }\n toString() {\n return this._value ? \"true\" : \"false\";\n }\n toJS() {\n return this._value;\n }\n toJSON() {\n return this.toJS();\n }\n debugTypeOf() {\n return plString(PLBool.kind);\n }\n}\nPLBool.kind = \"Bool\";\n///\n\nconst plBool = (value) => new PLBool(value);\nconst plBoolConstructor = (value) => {\n typeCheck(PLBool, value);\n return value;\n};\nconst parseBool = (value) => PLBool.fromStr(plString(value));\n\nclass PLString {\n constructor(_value) {\n this._value = _value;\n }\n static fromJS(value) {\n return new PLString(value);\n }\n static fromStr(value) {\n return value.copy();\n }\n get value() {\n return this._value;\n }\n add(other) {\n return new PLString(this._value + other.value);\n }\n index(idx) {\n var _a;\n if (Number.isInteger(idx.value)) {\n return new PLString((_a = this._value.charAt(idx.value)) !== null && _a !== void 0 ? _a : \"\");\n } else {\n return new PLString(\"\");\n }\n }\n slice(start, end) {\n return new PLString(this.value.slice(start.value, end.value));\n }\n equals(other) {\n return plBool(this._value === other.value);\n }\n partialCmp(other) {\n const ord = this._value.localeCompare(other.value);\n if (ord < 0) return Ordering.Less;\n if (ord === 0) return Ordering.Equal;\n return Ordering.Greater;\n }\n copy() {\n return new PLString(this._value);\n }\n toJS() {\n return this._value;\n }\n toJSON() {\n return this.toJS();\n }\n toString() {\n return `${this._value}`;\n }\n debugTypeOf() {\n return new PLString(PLString.kind);\n }\n contains(item) {\n return plBool(this.value.indexOf(item.value) > -1);\n }\n count() {\n return plNumber(this.value.length);\n }\n}\nPLString.kind = \"String\";\n\nconst plString = (value = \"\") => new PLString(value);\nconst plStringConstructor = (value) => {\n typeCheck(PLString, value);\n return value;\n};\n\nclass NothingClass {\n constructor() {\n this._value = null;\n }\n\n static fromStr(str) {\n switch (str.value) {\n case \"undefined\":\n case \"nil\":\n case \"null\":\n return new NothingClass();\n default:\n throw new StdRuntimeError(`Invalid Nothing literal: \"${str.value}\".`);\n }\n }\n get value() {\n return null;\n }\n equals(other) {\n return plBool(this._value == other._value);\n }\n not() {\n return plBool(true);\n }\n toJS() {\n return null;\n }\n toJSON() {\n return null;\n }\n toString() {\n return \"null\"; //`${this._value}`;\n }\n debugTypeOf() {\n return plString(NothingClass.kind);\n }\n}\nNothingClass.kind = \"null\";\nconst Nothing = new NothingClass();\n\nconst plNothing = (value) => new NothingClass(value);\nconst plNothingConstructor = (value) => {\n typeCheck(NothingClass, value);\n return value;\n};\nconst parseNothing = (value) => NothingClass.fromStr(plString(value));\n\n// https://stackoverflow.com/questions/596467/how-do-i-convert-a-float-number-to-a-whole-number-in-javascript\nconst toInt = (a) => ~~a;\nconst isNothing = (value) => value == undefined || value == null || value == Nothing;\n\n///\nconst assert = (val, msg) => {\n if (val) {\n throw new StdRuntimeError(msg);\n }\n return true;\n};\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nconst assertType = (a, b) =>\n assert(\n a.constructor !== b.constructor,\n `Type Error! Expected '${getObjectName(a)}', but got '${getObjectName(b)}'`,\n );\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nconst typeCheck = (type, value) => {\n var _a;\n return assert(\n type !== value.constructor,\n `Expected '${(_a = type.kind) !== null && _a !== void 0 ? _a : type.name}', but got '${getObjectName(value)}'.`,\n );\n};\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nconst assertImpl = (instance, method) =>\n assert(!instance[method], `\"${method.toString()}\" is not defined on ${instance}`);\nconst assertInteger = (val) =>\n assert(!Number.isInteger(val), `Expected integer number', but got '${val}'.`);\nconst assertNothing = (value, msg) => {\n assert(isNothing(value), msg);\n return value;\n};\nconst getObjectName = (obj) => {\n var _a, _b, _c, _d;\n return (_d =\n (_b =\n (_a = obj === null || obj === void 0 ? void 0 : obj.constructor) === null || _a === void 0\n ? void 0\n : _a.kind) !== null && _b !== void 0\n ? _b\n : (_c = obj === null || obj === void 0 ? void 0 : obj.constructor) === null || _c === void 0\n ? void 0\n : _c.name) !== null && _d !== void 0\n ? _d\n : \"unknown\";\n};\n\nfunction plNumber(value, decimals = 0) {\n if (typeof value === \"string\") {\n assertNumeric(value);\n const decimalObj = isScientific(value)\n ? parseScientificString(value)\n : parseDecimalString(value);\n return plNumber(decimalObj.intValue, decimalObj.decimals);\n } else if (Number.isInteger(value) || decimals !== 0) {\n assertInteger(value);\n assertInteger(decimals);\n return new PLNumber(value, decimals);\n } else {\n return plNumber(value.toString());\n }\n}\nfunction plIntegerConstructor(value) {\n typeCheck(PLNumber, value);\n assert(!value.isInteger().value, \"Expected integer, but got float number.\");\n return value;\n}\nfunction plFloatConstructor(value) {\n typeCheck(PLNumber, value);\n return value;\n}\nfunction assertNumeric(strValue) {\n return assert(strValue === \"\" || isNaN(Number(strValue)), `Invalid number: \"${strValue}\"`);\n}\nfunction isScientific(strValue) {\n if (strValue.startsWith(\"0\")) {\n return /^0[eE]0$/.test(strValue);\n } else {\n return /^[-+]?[1-9](\\.\\d+)?[eE][-+]?\\d+$/.test(strValue);\n }\n}\nfunction parseScientificString(strValue) {\n assert(!isScientific(strValue), `Input is not in scientific form: \"${strValue}\"`);\n const parts = strValue.split(/[eE]/);\n const decimalObject = parseDecimalString(parts[0]);\n const exponential = parseInt(parts[1]);\n if (decimalObject.decimals > exponential) {\n decimalObject.decimals -= exponential;\n } else {\n decimalObject.intValue *= Math.pow(10, exponential - decimalObject.decimals);\n decimalObject.decimals = 0;\n }\n return decimalObject;\n}\nfunction parseDecimalString(strValue) {\n var _a;\n assertNumeric(strValue);\n const [, fraction] = strValue.split(\".\");\n const decimals =\n (_a = fraction === null || fraction === void 0 ? void 0 : fraction.length) !== null &&\n _a !== void 0\n ? _a\n : 0;\n const intValue = parseInt(strValue.replace(\".\", \"\"));\n return { intValue, decimals };\n}\nfunction simplifyDecimal(intValueOld, decimalsOld) {\n if (intValueOld === 0) {\n return { intValue: 0, decimals: 0 };\n }\n while (intValueOld > Number.MAX_SAFE_INTEGER || (intValueOld % 10 === 0 && decimalsOld > 0)) {\n const str = intValueOld.toString();\n intValueOld = parseInt(str.substring(0, str.length - 1));\n decimalsOld -= 1;\n }\n return { intValue: intValueOld, decimals: decimalsOld };\n}\nfunction expandDecimals(d1, d2) {\n const maxDecimal = Math.max(d1.decimals, d2.decimals);\n const intValue1 = d1.intValue * Math.pow(10, maxDecimal - d1.decimals);\n const intValue2 = d2.intValue * Math.pow(10, maxDecimal - d2.decimals);\n return { maxDecimal, intValue1, intValue2 };\n}\nfunction getDecimalString(intValue, decimals) {\n return (intValue / Math.pow(10, decimals)).toFixed(decimals);\n}\nfunction modulo(dividend, divisor) {\n const num = dividend.value;\n const mod = divisor.value;\n assertInteger(num);\n assertInteger(mod);\n assert(mod < 1, `Modulo (${mod}) must be positive.`);\n assert(num < 0, `Number (${num}) cannot be negative.`);\n const remainder = num % mod;\n return plNumber(remainder);\n}\nvar numFn = {\n modulo,\n};\n\n/**\n * Greatest common divisor - Euclid's algorithm\n */\nconst gcd = (a, b) => {\n return a === b || !a ? b : !b ? a : gcd(b, a % b);\n};\nconst isBelowEpsilon = (x) => {\n return Math.abs(x) <= Number.EPSILON;\n};\nconst floatEq = (a, b) => {\n return isBelowEpsilon(a - b);\n};\n\n//import { expandDecimals, getDecimalString, simplifyDecimal, DecimalResult } from './numberFn'\nconst MAX_DECIMALS = 12;\nclass PLNumber {\n constructor(intValue, decimals = 0) {\n const decimalObj = simplifyDecimal(intValue, decimals);\n this._decimals = decimalObj.decimals;\n this._intValue = decimalObj.intValue;\n }\n get intValue() {\n return this._intValue;\n }\n get decimals() {\n return this._decimals;\n }\n get value() {\n return this._intValue * Math.pow(10, -this._decimals);\n }\n equals(d) {\n return plBool(floatEq(this.value, d.value));\n }\n negate() {\n return new PLNumber(-this.intValue, this.decimals);\n }\n add(d) {\n const decimalObj = expandDecimals(this, d);\n const totalIntValue = decimalObj.intValue1 + decimalObj.intValue2;\n return new PLNumber(totalIntValue, decimalObj.maxDecimal);\n }\n subtract(d) {\n const decimalObj = expandDecimals(this, d);\n const totalIntValue = decimalObj.intValue1 - decimalObj.intValue2;\n return new PLNumber(totalIntValue, decimalObj.maxDecimal);\n }\n multiply(d) {\n return new PLNumber(this.intValue * d.intValue, this.decimals + d.decimals);\n }\n divide(d) {\n if (d.intValue === 0) {\n throw new StdRuntimeError(\"Cannot divide by zero!\");\n }\n const decimalObj = expandDecimals(this, d);\n const divideIntValue = Math.round(\n (decimalObj.intValue1 / decimalObj.intValue2) * Math.pow(10, MAX_DECIMALS),\n );\n return new PLNumber(divideIntValue, MAX_DECIMALS);\n }\n partialCmp(other) {\n const decimalObj = expandDecimals(this, other);\n if (decimalObj.intValue1 < decimalObj.intValue2) return Ordering.Less;\n if (decimalObj.intValue1 > decimalObj.intValue2) return Ordering.Greater;\n return Ordering.Equal;\n }\n toJS() {\n return this.intValue / Math.pow(10, this.decimals);\n }\n toString() {\n return `${getDecimalString(this.intValue, this.decimals)}`;\n }\n copy() {\n return new PLNumber(this.intValue, this.decimals);\n }\n debugTypeOf() {\n return plString(PLNumber.kind);\n }\n isInteger() {\n return plBool(this.decimals === 0);\n }\n //public toJSON(): DecimalResult {\n // return {\n // intValue: this._intValue,\n // decimals: this._decimals,\n // }\n //}\n toJSON() {\n return this.toString(); // spark_dev_note: TBD: check if this would be the best resolution to js <-> leaflisp data conversion\n }\n}\nPLNumber.kind = \"Number\";\n\nconst plNumFn1 = (fn) => (x) => {\n typeCheck(PLNumber, x);\n try {\n return plNumber(fn(x.value));\n } catch (error) {\n throw new StdRuntimeError(`Invalid argument for ${fn.name}: ${x.value}`);\n }\n};\nconst plNumFn2 = (fn) => (x, y) => {\n typeCheck(PLNumber, x);\n typeCheck(PLNumber, y);\n return plNumber(fn(x.value, y.value));\n};\n//const plNumListFn1 = (fn: (x: number[]) => number) => (x: PLVector<any>) => {\n// typeCheck(PLVector, x)\n// try {\n// return plNumber(fn(x.toJSON()))\n// } catch (error) {\n// throw new StdRuntimeError(`Invalid argument for ${fn.name}: ${x.value}`)\n// }\n//}\n/// constants\nconst E = plNumber(Math.E);\nconst LN2 = plNumber(Math.LN2);\nconst LN10 = plNumber(Math.LN10);\nconst LOG2E = plNumber(Math.LOG2E);\nconst LOG10E = plNumber(Math.LOG10E);\nconst PI = plNumber(Math.PI);\nconst SQRT1_2 = plNumber(Math.SQRT1_2);\nconst SQRT2 = plNumber(Math.SQRT2);\n/// base\nconst abs = plNumFn1(Math.abs);\nconst sign = plNumFn1(Math.sign);\nconst min = plNumFn2((a, b) => Math.min(a, b));\nconst max = plNumFn2((a, b) => Math.max(a, b));\n//export const min = plNumListFn1((x: number[]) => Math.min(...x))\n//export const max = plNumListFn1((x: number[]) => Math.max(...x))\nconst floor = plNumFn1(Math.floor);\nconst round = plNumFn1(Math.round);\nconst ceil = plNumFn1(Math.ceil);\nconst trunc = plNumFn1(Math.trunc);\n/// arithmetic\nconst cbrt = plNumFn1(Math.cbrt);\nconst sqrt = plNumFn1(Math.sqrt);\nconst exp = plNumFn1(Math.exp);\nconst pow = plNumFn2(Math.pow);\nconst log = plNumFn1(Math.log);\nconst log2 = plNumFn1(Math.log2);\nconst log10 = plNumFn1(Math.log10);\n/// trigonometry\nconst DEG_TO_RAD = Math.PI / 180;\nconst deg2rad = (x) => x.multiply(plNumber(DEG_TO_RAD));\nconst rad2deg = (x) => x.divide(plNumber(DEG_TO_RAD));\nconst sin = plNumFn1((val) => {\n const rem = val % Math.PI;\n return isBelowEpsilon(rem) || isBelowEpsilon(rem - Math.PI) ? 0 : Math.sin(val);\n});\nconst asin = plNumFn1(Math.asin);\nconst asinh = plNumFn1(Math.asinh);\nconst cos = plNumFn1(Math.cos);\nconst acos = plNumFn1(Math.acos);\nconst acosh = plNumFn1(Math.acosh);\nconst tan = plNumFn1(Math.tan);\nconst atan = plNumFn1(Math.atan);\nconst atan2 = plNumFn2(Math.atan2);\nconst atanh = plNumFn1(Math.atanh);\n\nvar math = /*#__PURE__*/ Object.freeze({\n __proto__: null,\n E: E,\n LN2: LN2,\n LN10: LN10,\n LOG2E: LOG2E,\n LOG10E: LOG10E,\n PI: PI,\n SQRT1_2: SQRT1_2,\n SQRT2: SQRT2,\n abs: abs,\n sign: sign,\n min: min,\n max: max,\n floor: floor,\n round: round,\n ceil: ceil,\n trunc: trunc,\n cbrt: cbrt,\n sqrt: sqrt,\n exp: exp,\n pow: pow,\n log: log,\n log2: log2,\n log10: log10,\n deg2rad: deg2rad,\n rad2deg: rad2deg,\n sin: sin,\n asin: asin,\n asinh: asinh,\n cos: cos,\n acos: acos,\n acosh: acosh,\n tan: tan,\n atan: atan,\n atan2: atan2,\n atanh: atanh,\n});\n\nconst str = (value) => plString(value.toString());\nconst toJSON = (value) => {\n let js = null;\n if (typeof value.toJSON === \"function\") {\n js = value.toJSON();\n } else if (typeof value.toJS === \"function\") {\n js = value.toJS();\n }\n return plString(JSON.stringify(js));\n};\n//\nconst debugTypeOf = (v) => {\n const result = v[\"debugTypeOf\"] ? v.debugTypeOf() : plString(\"<unknown>\");\n return result instanceof String ? plString(result) : result;\n};\n//\nconst copy = (item) => {\n assertImpl(item, \"copy\");\n return item.copy();\n};\nconst deepCopy = (item) => {\n var _a;\n assertImpl(item, \"copy\");\n if (item.deepCopy) {\n return (_a = item.deepCopy) === null || _a === void 0 ? void 0 : _a.call(item);\n } else {\n return copy(item);\n }\n};\nvar typeClassBaseFn = {\n typeof: debugTypeOf,\n copy,\n \"deep-copy\": deepCopy,\n str,\n \"to-json\": toJSON,\n};\n\nconst equals = (a, b) => {\n if (a.constructor !== b.constructor) return plBool(false);\n //assertType(a, b);\n return a.equals(b);\n};\nconst notEquals = (a, b) => {\n return equals(a, b).not();\n};\n///\nconst lessThen = (a, b) => {\n assertType(a, b);\n const lt = a.lt;\n return typeof lt === \"function\" ? lt(b) : plBool(a.partialCmp(b) === Ordering.Less);\n};\nconst lessOrEqual = (a, b) => {\n return plBool(equals(a, b).value || lessThen(a, b).value);\n};\nconst greaterThen = (a, b) => {\n assertType(a, b);\n const gt = a.gt;\n return typeof gt === \"function\" ? gt(b) : plBool(a.partialCmp(b) === Ordering.Greater);\n};\nconst greaterOrEqual = (a, b) => {\n return plBool(equals(a, b).value || greaterThen(a, b).value);\n};\nvar typeClassCmpFn = {\n \"==\": equals,\n \"!=\": notEquals,\n \"<\": lessThen,\n \"<=\": lessOrEqual,\n \">\": greaterThen,\n \">=\": greaterOrEqual,\n};\n\nconst count = (collection) => {\n return collection.count();\n};\nfunction contains(item, collection) {\n return collection.contains(item);\n}\nfunction slice$1(start, end, container) {\n return container.slice(start, end);\n}\nfunction map(fn, f) {\n return f.map((x) => this.evalFn(fn, [x]));\n}\nfunction filter(fn, f) {\n return f.filter((x) => this.evalFn(fn, [x]));\n}\nfunction reduce(init, fn, f) {\n return f.reduce(init, (accumulator, item) => this.evalFn(fn, [accumulator, item]));\n}\nvar typeClassIter = {\n count,\n contains,\n map,\n filter,\n reduce,\n slice: slice$1,\n};\n\nconst not = (a) => {\n return a.not();\n};\n//\nconst and = (a, b) => {\n return a.and(b);\n};\n//\nconst or = (a, b) => {\n return a.or(b);\n};\n//\nconst negate = (a) => {\n return a.negate();\n};\n//\nconst add = (a, b) => {\n assertType(a, b);\n return a.add(b);\n};\nconst subtract = (a, b) => {\n assertType(a, b);\n return a.subtract(b);\n};\n//\nconst multiply = (a, b) => {\n assertType(a, b);\n return a.multiply(b);\n};\n//\nconst divide = (a, b) => {\n assertType(a, b);\n return a.divide(b);\n};\n//\nconst get = (data, idx) => {\n return data.index(idx);\n};\n//\nvar typeClassOps = {\n negate,\n not,\n and,\n or,\n \"+\": add,\n \"-\": subtract,\n \"*\": multiply,\n \"/\": divide,\n get,\n};\n\nclass PLVector {\n constructor(value) {\n value.map((item) => assertType(value[0], item));\n this._value = value;\n }\n get value() {\n return this._value;\n }\n contains(item) {\n return plBool(this.value.find((el) => equals(el, item).value) !== undefined);\n }\n add(a) {\n return new PLVector(this._value.concat(a.value));\n }\n count() {\n var _a;\n return new PLNumber((_a = this._value.length) !== null && _a !== void 0 ? _a : 0);\n }\n map(fn) {\n return new PLVector(this.value.map((item) => fn(item)));\n }\n filter(fn) {\n return new PLVector(this.value.filter((item) => fn(item).toJS()));\n }\n reverse() {\n return new PLVector(this.value.reverse());\n }\n reduce(init, fn) {\n return this.value.reduce(fn, init);\n }\n intersperse(elem) {\n const lastIdx = this.value.length - 1;\n return new PLVector(\n this.value.reduce((res, item, idx) => {\n res.push(item);\n if (idx < lastIdx) {\n res.push(elem);\n }\n return res;\n }, []),\n );\n }\n toJS() {\n return this.value.map((i) => i.toJS());\n }\n toJSON() {\n return this.value.map((i) => i.toJSON());\n }\n toString() {\n return `[${this._value.map((i) => i.toString()).join(\",\")}]`;\n }\n // spark_dev_note: the initial implementation throws an error\n // upon hitting a non-existent item index.\n // the desired behaviour in leaf & gos is to return undefined type\n // so the useful concept of the lack of a keyed item could be\n // used in building a leaf logic.\n // the following code was refactored to reflect this change.\n index(idx) {\n typeCheck(PLNumber, idx);\n const value = assertNothing(\n this.value[idx.value],\n `Vector index ${idx.toString()} is not defined`,\n );\n return value;\n }\n slice(start, end) {\n typeCheck(PLNumber, start);\n typeCheck(PLNumber, end);\n return new PLVector(this.value.slice(start.value, end.value));\n }\n copy() {\n return new PLVector([...this._value]);\n }\n deepCopy() {\n return new PLVector(this._value.map((i) => copy(i)));\n }\n debugTypeOf() {\n return plString(PLVector.kind);\n }\n}\nPLVector.kind = \"Vector\";\n\n//import { Nothing } from '../maybe/Nothing'\nfunction plVector(...value) {\n return new PLVector(value);\n}\nconst sum = (list) => {\n typeCheck(PLVector, list);\n return list.reduce(plNumber(0), add);\n};\nconst prod = (list) => {\n typeCheck(PLVector, list);\n return list.reduce(plNumber(1), multiply);\n};\nconst intersperse = (separator, list) => {\n typeCheck(PLVector, list);\n return list.intersperse(separator);\n};\nconst join = (list) => {\n typeCheck(PLVector, list);\n return list.reduce(plString(\"\"), add);\n};\nconst joinWith = (separator, list) => {\n typeCheck(PLVector, list);\n return list.intersperse(separator).reduce(plString(\"\"), add);\n};\nconst numList = (separator, list) => {\n typeCheck(PLVector, list);\n return list\n .map((x) => plString(x.toString()))\n .intersperse(separator)\n .reduce(plString(\"\"), add);\n};\n// spark_dev_note: try catch block for returning Nothing upon hitting non-existent data\n// typescript type checking is picky about return types\n// making returning Nothing a potentially messy solution\n// so reverted back and decided to introduce try catch block upstream\nconst head = (list) => {\n typeCheck(PLVector, list);\n const value = assertNothing(list.value[0], \"Vector is empty\");\n //value = list.value[0];\n return value;\n};\n// spark_dev_note: try catch block for returning Nothing upon hitting non-existent data\nconst tail = (list) => {\n typeCheck(PLVector, list);\n assertNothing(list.value.length, \"Vector is not defined correctly\");\n const value = plVector(...list.value.slice(1));\n return value;\n};\nconst reverse = (list) => {\n typeCheck(PLVector, list);\n return plVector(...list.value.reverse());\n};\n// spark_dev_note: other vector keymap retrieval operators\n// including head, tail, index were refactored to return Nothing\n// upon unsuccessful retrieval, except slice here as\n// it would make more sense to get error raised for its use.\n// at least for now. (17 Mar 2022)\nconst slice = (list, start, end) => {\n typeCheck(PLVector, list);\n typeCheck(PLNumber, end);\n typeCheck(PLNumber, start);\n assertNothing(list.value.length, \"Vector is not defined correctly\");\n return plVector(...list.value.slice(start.value, end.value));\n};\nvar vectorFn = {\n sum,\n prod,\n intersperse,\n join,\n \"join-with\": joinWith,\n \"num-list\": numList,\n head,\n reverse,\n slice,\n tail,\n};\n\nconst rand = Math.random;\n/**\n * Return the next random floating point number in the range [0.0, 1.0).\n */\nconst random = () => plNumber(rand());\n/**\n * Return a random integer N such that a <= N <= b.\n */\nconst randomInt = (a, b) => {\n const ai = toInt(a.value);\n const bi = toInt(b.value);\n return plNumber(toInt(ai + rand() * (bi - ai)));\n};\n/**\n * Shuffle vector\n */\nconst shuffle = (v) => {\n const vv = [...v.value];\n // based on: https://stackoverflow.com/questions/6274339/how-can-i-shuffle-an-array\n let j, x, i;\n for (i = vv.length - 1; i > 0; i--) {\n j = Math.floor(Math.random() * (i + 1));\n x = vv[i];\n vv[i] = vv[j];\n vv[j] = x;\n }\n return plVector(...vv);\n};\n\nconst range = (start, len, step) => {\n const from = start.value;\n const d = step.value;\n const length = toInt(len.value);\n let x = from;\n const arr = [];\n for (let i = 0; i < length; i++) {\n arr.push(plNumber(x));\n x += d;\n }\n return plVector(...arr);\n};\nconst range0 = (len) => {\n const length = toInt(len.value);\n return plVector(...Array.from({ length }, (_v, idx) => plNumber(idx)));\n};\n\nvar modules = /*#__PURE__*/ Object.freeze({\n __proto__: null,\n random: random,\n randomInt: randomInt,\n shuffle: shuffle,\n range: range,\n range0: range0,\n});\n\nclass Just {\n constructor(_value) {\n this._value = _value;\n }\n get value() {\n return this._value;\n }\n toJS() {\n var _a, _b;\n return (_b = (_a = this._value) === null || _a === void 0 ? void 0 : _a.toJS) === null ||\n _b === void 0\n ? void 0\n : _b.call(_a);\n }\n toJSON() {\n return this.toJS();\n }\n toString() {\n return `Just(${this._value.toString()})`;\n }\n debugTypeOf() {\n return plString(Just.kind);\n }\n}\nJust.kind = \"Just\";\n\nconst maybe = (value) => {\n if (isNothing(value)) {\n return Nothing;\n } else {\n return new Just(value);\n }\n};\n\nconst chunk = (ary, chunkSize = 2) => {\n const newAry = [];\n const end = ary.length;\n for (let i = 0; i < end; i += chunkSize) {\n newAry.push(ary.slice(i, i + chunkSize));\n }\n return newAry;\n};\n\nclass PLHashMap {\n constructor(list = []) {\n if (list.length % 2 !== 0) {\n throw new StdRuntimeError(\n \"Invalid hash map definition.\\nDefinition must contains key value pairs\",\n );\n }\n const entries = chunk(list).map(([key, value]) => {\n if (PLString !== key.constructor) {\n throw new StdRuntimeError(\n \"Invalid hash map definition.\\n Keys are must be string or keyword\",\n );\n }\n return [key.value, value];\n });\n this._value = new Map(entries);\n }\n get value() {\n return this._value;\n }\n toJS() {\n return new Map(\n Array.from(this._value.entries()).map(([k, v]) => [\n k,\n v instanceof PLNumber ? v.toString() : v.toJS(),\n ]),\n );\n }\n toJSON() {\n return Array.from(this._value.entries()).reduce((obj, [k, v]) => {\n obj[k] = v.toJSON();\n return obj;\n }, {});\n }\n toString() {\n return `{${Array.from(this._value.entries())\n .map(([k, v]) => `${k.toString()} -> ${v.toString()}`)\n .join(\", \")}}`;\n }\n debugTypeOf() {\n return plString(PLHashMap.kind);\n }\n // spark_dev_note: the initial implementation throws an error\n // upon hitting a non-existent item index.\n // the desired behaviour in leaf & gos is to return undefined type\n // so the useful concept of the lack of a keyed item could be\n // used in building a leaf logic.\n // the following code was refactored to reflect this change.\n index(idx) {\n typeCheck(PLString, idx);\n //const item = assertNothing(this._value.get(idx.value), `HashMap key ${idx.toString()} not defined`);\n try {\n const item = this._value.get(idx.value);\n return isNothing(item) ? new NothingClass() : item;\n } catch (error) {\n return new NothingClass();\n }\n }\n}\nPLHashMap.kind = \"HashMap\";\n\nconst plHashMap = (...list) => new PLHashMap(list);\nconst keys = (map) => {\n typeCheck(PLHashMap, map);\n return plVector(...Array.from(map.value.keys()).map((k) => plString(k)));\n};\nconst values = (map) => {\n typeCheck(PLHashMap, map);\n return plVector(...Array.from(map.value.values()));\n};\nvar hashMapFn = {\n keys,\n values,\n \"hash-map\": plHashMap,\n};\n\nclass PLSet {\n constructor(list) {\n const arr = list.value;\n arr.map((item) => assertType(arr[0], item));\n // Filter out identical items\n this._value = arr.reduce((list, item) => {\n if (!list.find((el) => equals(el, item).value)) {\n list.push(item);\n }\n return list;\n }, []);\n }\n get value() {\n return this._value;\n }\n contains(item) {\n return plBool(this.value.find((el) => equals(el, item).value) !== undefined);\n }\n union(a) {\n return new PLSet(plVector(...this._value.concat(a.value)));\n }\n difference(a) {\n return new PLSet(plVector(...this.value.filter((item) => !a.contains(item).value)));\n }\n intersection(a) {\n return new PLSet(\n plVector(\n ...this.value\n .concat(a.value)\n .filter((el) => a.contains(el).value && this.contains(el).value),\n ),\n );\n }\n symmetricDifference(a) {\n return new PLSet(\n plVector(\n ...this.value\n .concat(a.value)\n .filter((el) => !(a.contains(el).value && this.contains(el).value)),\n ),\n );\n }\n count() {\n var _a;\n return new PLNumber((_a = this._value.length) !== null && _a !== void 0 ? _a : 0);\n }\n map(fn) {\n return new PLSet(plVector(...this.value.map(fn)));\n }\n filter(fn) {\n return new PLSet(plVector(...this.value.filter((item) => fn(item).toJS())));\n }\n reduce(init, fn) {\n return this.value.reduce(fn, init);\n }\n toJS() {\n return this.value.map((i) => i.toJS());\n }\n toJSON() {\n return this.value.map((i) => i.toJSON());\n }\n toString() {\n return `[${this.value.map((i) => i.toString()).join(\",\")}]`;\n }\n copy() {\n return new PLSet(plVector(...this.value));\n }\n deepCopy() {\n return new PLSet(plVector(...this.value.map((i) => copy(i))));\n }\n debugTypeOf() {\n return plString(PLSet.kind);\n }\n}\nPLSet.kind = \"Set\";\n\nconst plSet = (value) => new PLSet(value);\nfunction set2list(set) {\n return plVector(...set.value);\n}\nfunction union(a, b) {\n return a.union(b);\n}\nfunction difference(a, b) {\n return a.difference(b);\n}\nfunction intersection(a, b) {\n return a.intersection(b);\n}\nfunction symmetricDifference(a, b) {\n return a.symmetricDifference(b);\n}\nvar setFn = {\n Set: plSet,\n \"set-2-list\": set2list,\n \"set-union\": union,\n \"set-diff\": difference,\n \"set-intersection\": intersection,\n \"set-symmetric-difference\": symmetricDifference,\n};\n\nconst isValid = (n, d) => {\n return Number.isInteger(n) && Number.isInteger(d) && d !== 0;\n};\n\nclass PLFractionNumber {\n constructor(numerator, denominator) {\n if (!isValid(numerator, denominator)) {\n throw new StdRuntimeError(\"Invalid fraction number parameters!\");\n }\n if (denominator < 0) {\n numerator *= -1;\n denominator *= -1;\n }\n const divisor = gcd(Math.abs(numerator), Math.abs(denominator));\n this._n = numerator / divisor;\n this._d = denominator / divisor;\n }\n get numerator() {\n return this._n;\n }\n get denominator() {\n return this._d;\n }\n equals(a) {\n return plBool(this.numerator === a.numerator && this.denominator === a.denominator);\n }\n negate() {\n return new PLFractionNumber(-this._n, this._d);\n }\n add(a) {\n const numerator = this.numerator * a.denominator + this.denominator * a.numerator;\n const denominator = this.denominator * a.denominator;\n return new PLFractionNumber(numerator, denominator);\n }\n subtract(a) {\n const numerator = this.numerator * a.denominator - this.denominator * a.numerator;\n const denominator = this.denominator * a.denominator;\n return new PLFractionNumber(numerator, denominator);\n }\n multiply(a) {\n const numerator = this.numerator * a.numerator;\n const denominator = this.denominator * a.denominator;\n return new PLFractionNumber(numerator, denominator);\n }\n divide(a) {\n const numerator = this.numerator * a.denominator;\n const denominator = this.denominator * a.numerator;\n return new PLFractionNumber(numerator, denominator);\n }\n partialCmp(other) {\n const lcm = (this._d * other._d) / gcd(this._d, other._d);\n const a = (this._n * lcm) / this._d;\n const b = (other._n * lcm) / other._d;\n if (a < b) return Ordering.Less;\n if (a > b) return Ordering.Greater;\n return Ordering.Equal;\n }\n toJS() {\n return {\n numerator: this._n,\n denominator: this._d,\n };\n }\n //public toJSON(): FractionNumberRecord {\n // return this.toJS()\n //}\n toJSON() {\n return this.toString();\n }\n toString() {\n return `${this._n}/${this._d}`;\n }\n copy() {\n return new PLFractionNumber(this._n, this._d);\n }\n debugTypeOf() {\n return plString(PLFractionNumber.kind);\n }\n}\nPLFractionNumber.kind = \"Fraction\";\n\nconst plFractionNumber = (n, d) => {\n return new PLFractionNumber(n, d);\n};\nconst plFractionNumberConstructor = (n, d) => {\n assert(!n.isInteger().value, \"Numerator must be integer\");\n assert(!d.isInteger().value, \"Denominator must be integer\");\n return new PLFractionNumber(n.toJS(), d.toJS());\n};\nconst str2plFractionNumber = (str) => {\n const [n, d] = str.split(\"/\").map(parseFloat);\n if (isValid(n, d)) {\n return new PLFractionNumber(n, d);\n } else {\n throw new StdRuntimeError(`Invalid fraction number: ${str}.`);\n }\n};\nconst reciprocal = (fn) => {\n typeCheck(PLFractionNumber, fn);\n return plFractionNumber(fn.denominator, fn.numerator);\n};\nconst number2fraction = (accuracy, number) => {\n const acc = accuracy.value;\n assert(\n acc < 1 || !Number.isInteger(acc),\n `Accuracy must be a positive integer number instead of ${acc}`,\n );\n const base = number.value;\n const denominator = Math.pow(10, acc);\n return plFractionNumber(Math.round(base * denominator), denominator);\n};\nconst fraction2number = (number) => {\n return plNumber(number.numerator).divide(plNumber(number.denominator));\n};\nvar fractionNumberFn = {\n [\"number-2-fraction\"]: number2fraction,\n [\"fraction-2-number\"]: fraction2number,\n reciprocal,\n};\n\nconst unboxing = (x) => x.toJS();\n\nconst identity = (x) => x;\nconst literals = {\n Bool: {\n parser: parseBool,\n factory: plBoolConstructor,\n },\n Nothing: {\n parser: parseNothing,\n factory: plNothingConstructor,\n },\n Int: {\n parser: plNumber,\n factory: plIntegerConstructor,\n },\n Float: {\n parser: plNumber,\n factory: plFloatConstructor,\n },\n FractionNumber: {\n parser: str2plFractionNumber,\n factory: plFractionNumberConstructor,\n },\n String: {\n parser: plString,\n factory: plStringConstructor,\n },\n Vector: {\n parser: identity,\n factory: plVector,\n },\n HashMap: {\n parser: identity,\n factory: plHashMap,\n },\n};\nconst runtime = Object.assign(\n Object.assign(\n Object.assign(\n Object.assign(\n Object.assign(\n Object.assign(\n Object.assign(\n Object.assign(\n Object.assign(\n Object.assign(\n Object.assign(\n Object.assign(Object.assign({}, typeClassBaseFn), typeClassCmpFn),\n typeClassIter,\n ),\n typeClassOps,\n ),\n baseFn,\n ),\n math,\n ),\n numFn,\n ),\n fractionNumberFn,\n ),\n vectorFn,\n ),\n hashMapFn,\n ),\n setFn,\n ),\n modules,\n ),\n { maybe, Nothing },\n);\nconst utils = {\n unboxing,\n};\n\nexport {\n Ordering,\n PLBool,\n NothingClass,\n PLFractionNumber,\n PLHashMap,\n PLNumber,\n PLString,\n PLVector,\n StdRuntimeError,\n add,\n and,\n assert,\n assertNumeric,\n contains,\n copy,\n count,\n debugTypeOf,\n deepCopy,\n divide,\n equals,\n filter,\n get,\n greaterOrEqual,\n greaterThen,\n identity,\n isScientific,\n lessOrEqual,\n lessThen,\n literals,\n map,\n multiply,\n negate,\n not,\n notEquals,\n or,\n parseDecimalString,\n parseScientificString,\n plBool,\n plFractionNumber,\n plHashMap,\n plNumber,\n plString,\n plVector,\n reduce,\n runtime,\n slice$1 as slice,\n str,\n subtract,\n toJSON,\n utils,\n};\n","// as per https://attacomsian.com/blog/javascript-base64-encode-decode\n\nconst hasBtoa = typeof globalThis !== \"undefined\" && typeof globalThis.btoa === \"function\";\nconst hasAtob = typeof globalThis !== \"undefined\" && typeof globalThis.atob === \"function\";\nconst btoaImpl = hasBtoa\n ? globalThis.btoa.bind(globalThis)\n : (data) => globalThis.Buffer.from(data, \"binary\").toString(\"base64\");\nconst atobImpl = hasAtob\n ? globalThis.atob.bind(globalThis)\n : (data) => globalThis.Buffer.from(data, \"base64\").toString(\"binary\");\n\nfunction encodeUnicode(str) {\n // first we use encodeURIComponent to get percent-encoded UTF-8,\n // then we convert the percent encodings into raw bytes which\n // can be fed into btoa.\n return btoaImpl(\n encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, function toSolidBytes(match, p1) {\n return String.fromCharCode(\"0x\" + p1);\n }),\n );\n}\n\n// encodeUnicode('JavaScript is fun 🎉'); // SmF2YVNjcmlwdCBpcyBmdW4g8J+OiQ==\n// encodeUnicode('🔥💡'); // 8J+UpfCfkqE=\n\nfunction decodeUnicode(str) {\n // Going backwards: from bytestream, to percent-encoding, to original string.\n return decodeURIComponent(\n atobImpl(str)\n .split(\"\")\n .map(function (c) {\n return \"%\" + (\"00\" + c.charCodeAt(0).toString(16)).slice(-2);\n })\n .join(\"\"),\n );\n}\n\n// decodeUnicode('SmF2YVNjcmlwdCBpcyBmdW4g8J+OiQ=='); // JavaScript is fun 🎉\n// decodeUnicode('8J+UpfCfkqE='); // 🔥💡\n\nexport { encodeUnicode, decodeUnicode };\n","/*\n * The reference js implementation of the LEAF language specification, codenamed breezyforest\n * This library is a part of the reference js implementation of ghostos\n * to define various common methods that can be programmatically envokable\n * at runtime with respect to each leaf node.\n *\n * author: spark@leautomaton.com\n * date: 8 Jan 2023\n *\n * copyright: LE Automaton Ltd\n *\n *\n */\n\nconst _common_methods =\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n return {\n version: \"breezyforest\",\n nodequery: (flowinput$obj) => {\n return flowinput$obj;\n },\n nodemethod: (flowinput$obj) => {\n return {};\n },\n };\n };\n\nexport { _common_methods };\n","//import { processLEAFlisp } from '../../leaflisp';\nimport { map, withLatestFrom, filter, share, switchMap } from \"rxjs/operators\";\nimport { BehaviorSubject, Subject, combineLatest } from \"rxjs\";\nimport { combineDataflows } from \"../../../utils/leafdataflow.js\";\nimport { v4 as uuid4, v5 as uuid5 } from \"uuid\";\n\nimport { PocketLisp } from \"../../../parser/leaflisp/plispdist/index.js\"; //'../../../parser/leaflisp/pocket-lisp'; //\nimport {\n literals,\n runtime,\n utils,\n plHashMap,\n plVector,\n plString,\n plBool,\n plNumber,\n PLHashMap,\n PLVector,\n PLString,\n assertNumeric,\n isScientific,\n parseDecimalString,\n parseScientificString,\n StdRuntimeError,\n} from \"../../../parser/leaflisp/plispstdlib/index.js\";\nimport { encodeUnicode } from \"../../../utils/leafbase64.js\";\n//import { result } from 'lodash';\nimport { etaReduceLambdaGraphs } from \"../../eta.js\";\n//import { _leafLISPHelpText } from './leaflisphelp';\nimport { driveDataflowByCtrlflow, executeLEAFLogic, parseAddressableGraph } from \"../../leaf.js\";\nimport { _leafgraph } from \"../abstraction/index.js\";\nimport { _common_methods } from \"../common.js\";\n//import { memoize } from 'lodash';\nimport _ from \"lodash\";\nimport { isBottle } from \"../../predicates.js\";\nimport { doBottle, doUnbottle } from \"../datautils/bottling.js\";\n\nconst leafgon_env_type = process.env.LEAFGON_ENV_TYPE;\n// a predicate to test if object has _datatype, making it one of labelled base data types\n\n// convert json into leaflisp\nconst _indentstr = \" \"; // 2 whitespaces\nconst generateIndentsByDepth = (depth) => {\n return depth > 0 ? _indentstr.repeat(depth) : \"\";\n};\n\nconst getObjectName = (obj) => obj?.constructor?.kind ?? obj?.constructor?.name ?? \"unknown\";\n\nconst debuggerGlobal = {\n trace: [],\n probe: [],\n};\n\n// leaflisp textual representation is generated using a pretty formatter logic\nconst parseJsonToLEAFlisp = (x, depth = 0, isdictval = false) => {\n const inputtype = typeof x; // type of the value\n //console.log('input type: ', inputtype);\n //const previndentstr = generateIndentsByDepth(depth-1);\n const curindentstr = generateIndentsByDepth(depth);\n const nextindentstr = generateIndentsByDepth(depth + 1);\n return (\n // for string types, escape \\ and \"\n inputtype === \"string\"\n ? (isdictval ? \"\" : curindentstr) + `\"${x.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, '\\\\\"')}\"\\n`\n : inputtype === \"object\"\n ? Array.isArray(x)\n ? (isdictval ? \"\" : curindentstr) +\n (depth == 0 ? \"[\\n\" : \"[\\n\") +\n `${x.map((value) => parseJsonToLEAFlisp(value, depth + 1)).join(\"\")}` +\n curindentstr +\n (depth == 0 ? \"]\\n\" : \"]\\n\")\n : [null, undefined].includes(x)\n ? (isdictval ? \"\" : curindentstr) + \"null\\n\"\n : (isdictval ? \"\" : curindentstr) +\n (depth == 0 ? \"{\\n\" : \"{\\n\") +\n `${Object.entries(x)\n .map(\n ([key, value]) =>\n nextindentstr + \":\" + key + \" \" + parseJsonToLEAFlisp(value, depth + 1, true),\n )\n .join(\"\")}` +\n curindentstr +\n (depth == 0 ? \"}\\n\" : \"}\\n\")\n : inputtype === \"boolean\"\n ? (isdictval ? \"\" : curindentstr) + (x ? \"true\\n\" : \"false\\n\")\n : inputtype === \"number\"\n ? (isdictval ? \"\" : curindentstr) + String(x) + \"\\n\"\n : (isdictval ? \"\" : curindentstr) + \"null\\n\" // a catch-all js to leaflisp conversion including undefined types\n );\n // (\n // (x != undefined) ?\n // :\n // (isdictval ? '' : curindentstr)+'null\\n');\n};\n\n//https://stackoverflow.com/questions/1685680/how-to-avoid-scientific-notation-for-large-numbers-in-javascript\n/******************************************************************\n * Converts e-Notation Numbers to Plain Numbers\n ******************************************************************\n * @function eToNumber(number)\n * @version 1.00\n * @param {e nottation Number} valid Number in exponent format.\n * pass number as a string for very large 'e' numbers or with large fractions\n * (none 'e' number returned as is).\n * @return {string} a decimal number string.\n * @author Mohsen Alyafei\n * @date 17 Jan 2020\n * Note: No check is made for NaN or undefined input numbers.\n *\n *****************************************************************/\nfunction eToNumber(num) {\n let sign = \"\";\n if ((num += \"\").charAt(0) == \"-\") {\n num = num.substring(1);\n sign = \"-\";\n }\n let arr = num.split(/[e]/gi);\n if (arr.length < 2) return sign + num;\n let dot = (0.1).toLocaleString().substr(1, 1),\n n = arr[0],\n exp = +arr[1],\n w = (n = n.replace(/^0+/, \"\")).replace(dot, \"\"),\n pos = n.split(dot)[1] ? n.indexOf(dot) + exp : w.length + exp,\n L = pos - w.length,\n s = \"\" + BigInt(w);\n w =\n exp >= 0\n ? L >= 0\n ? s + \"0\".repeat(L)\n : r()\n : pos <= 0\n ? \"0\" + dot + \"0\".repeat(Math.abs(pos)) + s\n : r();\n L = w.split(dot);\n if ((L[0] == 0 && L[1] == 0) || (+w == 0 && +s == 0)) w = 0; //** added 9/10/2021\n return sign + w;\n function r() {\n return w.replace(new RegExp(`^(.{${pos}})(.)`), `$1${dot}$2`);\n }\n}\n\nconst parseJsonToLEAFlispObj = (x, isfirst = true) => {\n if (x == undefined) {\n //return runtime.null;\n return runtime.Nothing;\n }\n const inputtype = typeof x; // type of the value\n //console.log('input type: ', inputtype);\n return inputtype === \"string\"\n ? plString(x)\n : inputtype === \"object\"\n ? Array.isArray(x)\n ? plVector(...x.filter((_) => _).map((value) => parseJsonToLEAFlispObj(value, false)))\n : [null, undefined].includes(x)\n ? runtime.Nothing\n : plHashMap(\n ...Object.entries(x)\n .map(([key, value]) => [plString(key), parseJsonToLEAFlispObj(value, false)])\n .flat(),\n )\n : inputtype === \"boolean\"\n ? plBool(x)\n : inputtype === \"number\"\n ? plNumber(x.toString().includes(\"e\") ? eToNumber(x) : x)\n : runtime.Nothing; // a catch-all js to leaflisp conversion including undefined types\n //plString(\"undefined\")\n};\n\n//const parseLEAFlispObjToJson = (x) => {\n// const inputtype = typeof(x);\n// return (\n// (inputtype !== 'object' ?\n// x : // base js type\n// (!(x instanceof PLBase) ?\n// (x) : // a non-PLBase js object type\n// ((x instanceof PLHashMap) ?\n// (\n// //parseLEAFlispObjToJson(x.toJSON())\n// x.toJSON()\n// ) :\n// (\n// isPLNumberTypeInstance(x) ?\n// (x.toJS()) :\n// ()\n// )\n// )\n// )\n// )\n// );\n//}\n\nconst leafLISPStdLib = ({ _probefunc, _tracefunc } = {}) => {\n return {\n return: (val) => {\n return val;\n },\n outport: (val) => {\n return val;\n },\n undefined: runtime.Nothing,\n nil: runtime.Nothing,\n null: runtime.Nothing,\n trace: (trace) => {\n const _trace = trace.toJSON();\n try {\n if (_tracefunc) {\n _tracefunc(_trace);\n }\n //console.error(\"debugging trace, trace temporarily disabled\")\n } catch (error) {\n console.log(error);\n //return plNumber(-1);\n return trace;\n }\n //return plNumber(0);\n return trace;\n },\n probe: (trace) => {\n const _trace = trace.toJSON();\n try {\n if (_probefunc) {\n _probefunc(_trace);\n }\n } catch (error) {\n console.log(error);\n return trace;\n }\n return trace;\n },\n format: (_string, _data) => {\n const jsdata = _data.toJSON();\n const jsfstr = _string.toJS();\n\n const var_re = /\\$\\{([^{}]*)\\}/gm;\n const formatted_str = jsfstr.replace(var_re, (m0, m1) => {\n const m1_trimmed = m1.replace(/\\s*/g, \"\"); // remove whitespaces\n return `\\${this.${m1_trimmed}}`; // add this. to the var name\n });\n\n // Wrap in proxy to stringify objects\n const fillTemplate = function (templateString, templateVars) {\n const proxy = new Proxy(templateVars, {\n get: (target, prop) => {\n const value = target[prop];\n if (typeof value === \"object\" && value !== null) {\n // Stringify and escape all double quotes\n return JSON.stringify(value).replace(/\"/g, '\\\\\"');\n }\n return value;\n },\n });\n return new Function(\"return `\" + templateString + \"`;\").call(proxy);\n };\n\n return plString(fillTemplate(formatted_str.replace(/\"/g, '\\\\\"'), jsdata));\n },\n isnil: (_nil) => {\n const _n = _nil; //.toJSON();\n return plBool(_nil == \"null\" || _n.constructor == runtime.Nothing.constructor);\n },\n isbottle: (_bottle) => {\n const _b = _bottle.toJSON();\n return plBool(isBottle(_b));\n },\n islist: (_list) => {\n const _l = _list.toJSON();\n return plBool(Array.isArray(_l));\n },\n flatten: (_list) => {\n const _l = _list.toJSON();\n return parseJsonToLEAFlispObj(\n _l.flat().filter((_) => _),\n false,\n );\n },\n join: (_list, _joinch) => {\n const _l = _list.toJSON();\n return plString(_l.join(_joinch));\n },\n bottle: (bkey, bdata) => {\n if (bkey.constructor !== PLString)\n throw new StdRuntimeError(\n `Expected '${PLString.kind ?? PLString.name}', but got '${getObjectName(bkey.value)}'.`,\n );\n const _bkey = bkey.toJSON();\n const _bdata = bdata.toJSON();\n\n const bottled_data =\n typeof _bdata === \"object\" &&\n !Array.isArray(_bdata) &&\n \"_content\" in _bdata &&\n \"_label\" in _bdata\n ? { _bname: _bkey, _content: _bdata._content, _label: _bdata._label }\n : { _bname: _bkey, _content: _bdata, _label: {} };\n return parseJsonToLEAFlispObj(bottled_data);\n },\n getbottle: (bottlelist, bkey) => {\n if (bottlelist.constructor !== PLVector)\n throw new StdRuntimeError(\n `Expected '${PLVector.kind ?? PLVector.name}', but got '${getObjectName(bottlelist.value)}'.`,\n );\n //const _bottlelist = bottlelist.value.map(x => x.value);\n //const _thebottle = _bottlelist.filter(_bottle => (_bottle?.get(\"_bname\"))?._value === bkey._value);\n const _thebottle = bottlelist.value.filter(\n (_b) => _b.value.get(\"_bname\").value === bkey.value,\n );\n if (_thebottle.length === 1) return _thebottle[0];\n else if (_thebottle.length > 1) return _thebottle;\n else return undefined;\n },\n unbottle: (bottle) => {\n if (bottle.constructor !== PLHashMap)\n throw new StdRuntimeError(\n `Expected '${PLHashMap.kind ?? PLHashMap.name}', but got '${getObjectName(bottle.value)}'.`,\n );\n return bottle.value.get(\"_content\");\n },\n regexp: (targetstr, expstr) => {\n const flag_re = /\\/(.*)\\/(.*)/;\n const restr = expstr.toJSON().match(flag_re);\n const re = new RegExp(restr[1], restr[2]);\n const jsoned_targetstr = targetstr.toJSON();\n const datatype = typeof jsoned_targetstr;\n const re_match = datatype === \"string\" ? jsoned_targetstr.match(re) : [];\n //return re_match;\n const parsed_result = parseJsonToLEAFlispObj(re_match ? re_match : []);\n //console.log(parsed_result);\n return parsed_result;\n },\n min: (numlist) => {\n if (numlist.constructor !== PLVector)\n throw new StdRuntimeError(\n `Expected '${PLVector.kind ?? PLVector.name}', but got '${getObjectName(numlist.value)}'.`,\n );\n const _numlist = numlist.value.map((x) => x.value);\n const min_x = Math.min(..._numlist);\n return plNumber(min_x);\n },\n max: (numlist) => {\n if (numlist.constructor !== PLVector)\n throw new StdRuntimeError(\n `Expected '${PLVector.kind ?? PLVector.name}', but got '${getObjectName(numlist.value)}'.`,\n );\n const _numlist = numlist.value.map((x) => x.value);\n const max_x = Math.max(..._numlist);\n return plNumber(max_x);\n },\n parse: (_str) => {\n //const num_re = /(^(\\d*)((e(\\d+)){0,1}$|$)|^(\\d*)\\.(\\d*))$/;\n const target_str = _str.toJSON();\n //const re_match = (typeof target_str === \"string\") ? target_str.match(num_re) : undefined;\n //if (re_match) {\n // if (re_match.length === 3) // integer\n // return plNumber(parseInt(target_str));\n // else if (re_match.length === 4) // float\n // return plFractionNumber(parseFloat(target_str));\n // else if (re_match.length === 5) // scientific notation\n // return plFractionNumber()\n //}\n assertNumeric(target_str);\n let parsednum;\n if (isScientific(target_str)) parsednum = parseScientificString(target_str);\n else parsednum = parseDecimalString(target_str);\n if (parsednum.decimals === 0) return plNumber(parsednum.intValue);\n else return plNumber(parsednum.intValue, parsednum.decimals);\n },\n \"merge-dict\": (hashmap1, hashmap2) => {\n if (hashmap1.constructor !== PLHashMap)\n throw new StdRuntimeError(\n `Expected '${PLHashMap.kind ?? PLHashMap.name}', but got '${getObjectName(hashmap1.value)}'.`,\n );\n if (hashmap2.constructor !== PLHashMap)\n throw new StdRuntimeError(\n `Expected '${PLHashMap.kind ?? PLHashMap.name}', but got '${getObjectName(hashmap2.value)}'.`,\n );\n const _dict1 = hashmap1.toJSON();\n const _dict2 = hashmap2.toJSON();\n const _merged_dict = { ..._dict1, ..._dict2 };\n return parseJsonToLEAFlispObj(_merged_dict);\n },\n \"make-dict\": (keys, values) => {\n if (keys.constructor !== PLVector)\n throw new StdRuntimeError(\n `Expected '${PLVector.kind ?? PLVector.name}', but got '${getObjectName(keys.value)}'.`,\n );\n if (values.constructor !== PLVector)\n throw new StdRuntimeError(\n `Expected '${PLVector.kind ?? PLVector.name}', but got '${getObjectName(values.value)}'.`,\n );\n const _keys = keys.toJSON();\n const _values = values.toJSON();\n const _new_dict = [...Array(_keys.length).keys()].reduce((acc, idx) => {\n return { ...acc, [_keys[idx]]: _values[idx] };\n }, {});\n return parseJsonToLEAFlispObj(_new_dict);\n },\n concat: (list1, list2) => {\n if (list1.constructor !== PLVector)\n throw new StdRuntimeError(\n `Expected '${PLVector.kind ?? PLVector.name}', but got '${getObjectName(list1.value)}'.`,\n );\n if (list2.constructor !== PLVector)\n throw new StdRuntimeError(\n `Expected '${PLVector.kind ?? PLVector.name}', but got '${getObjectName(list2.value)}'.`,\n );\n console.log(list1, list2);\n return plVector(...list1.value.concat(list2.value));\n },\n uuid4: () => {\n return plString(uuid4());\n },\n uuid5: (uri) => {\n const uuid_val = uuid5(uri.toString(), uuid5.URL); // uuid deterministically generated based on domain and appid\n //console.log(uuid_val);\n return plString(uuid_val);\n },\n \"*\": (arg1, arg2) => {\n return plNumber(arg1 * arg2);\n },\n \"/\": (arg1, arg2) => {\n return plNumber(arg1 / arg2);\n },\n \"+\": (arg1, arg2) => {\n //console.log(arg1);\n return isNaN(arg1.value) || isNaN(arg2.value)\n ? arg1.add(arg2)\n : plNumber(arg1.value + arg2.value);\n //const a_result = arg1+arg2;\n //return isNaN(a_result) ? plString(a_result) : plNumber(a_result);\n },\n \"-\": (arg1, arg2) => {\n return plNumber(arg1 - arg2);\n },\n tofixed: (arg1, arg2) => {\n return plString(Number(arg1).toFixed(arg2));\n //const target_str = arg1.toJSON();\n //const target_str = Number(arg1).toFixed(arg2);\n //assertNumeric(target_str);\n //let parsednum;\n //if (isScientific(target_str))\n // parsednum = parseScientificString(target_str);\n //else\n // parsednum = parseDecimalString(target_str);\n //if (parsednum.decimals === 0)\n // return plNumber(parsednum.intValue);\n //else\n // return plNumber(parsednum.intValue, parsednum.decimals)\n },\n };\n};\n// a function to initialize a globally-scoped runtimeLEAFlisp instance,\n// App.js runs this and handles the global instance reference as soon as the master etaTree is initialized.\nconst init_gRuntimeLEAFlisp = (_etaTree, accio_bottles) => {\n const cheatTextPromise = async () => {\n const lambdactrl = {\n gos: {\n standardSpellbook: {},\n curatedSpellbook: {},\n stdlambdalut: {},\n curatedlambdalut: {},\n leafio: _etaTree.leafio,\n etaTree: _etaTree, // a bit redundant way of passing down information, refactor to be reduced to pass down only what's needed down the road\n },\n user: {\n spellbook: _etaTree.graphcomponents.spelldefs,\n lambdalut: _etaTree.leafgraph.edges.lambda.sourcelut,\n },\n };\n const leafgraph_args = {\n graphuuid: \"\",\n domain: \"breezyforest\",\n appid: \"leaflisp-help\",\n graphaddrstr: \"breezyforest/leaflisp-help\",\n };\n const getLEAFGraph = _leafgraph.lambda(lambdactrl)({\n refnode: \"leaflisp_runtime\",\n refnodedata: { leaf: { logic: { args: leafgraph_args } } },\n nodelambda: [],\n contextuallambda: [],\n });\n const leafgraph = await getLEAFGraph; //.then((response) => {}) // async call to get leafgraph\n\n const cheatsheet = leafgraph?.cheatsheet\n ? await executeLEAFLogic(leafgraph.cheatsheet._default, accio_bottles.data, {})\n : [];\n //return plString(cheatsheet);\n //console.log(cheatsheet);\n return cheatsheet;\n };\n const helptext = {};\n cheatTextPromise().then((_helpdict) => {\n helptext.cheatsheet = _helpdict;\n });\n const leafLISPREPLStdLib = {\n cheat: () => {\n const _helptext = {};\n _helptext[\"help\"] =\n \"-LEAFlisp help text----------------------------------------------\\n--------------------------------------------------------------------------\\n\";\n Object.keys(helptext.cheatsheet).map((_cmd) => {\n _helptext[_cmd] =\n _cmd in helptext.cheatsheet\n ? helptext.cheatsheet[_cmd]\n : `LEAFlisp error: no help is available for an unknown command ${_cmd}.`;\n });\n return parseJsonToLEAFlispObj(_helptext);\n //return parseJsonToLEAFlispObj(helptext.cheatsheet.cheatsheet);\n },\n help: (commands) => {\n const _helptext = {};\n const _commands = commands.toJSON();\n\n //const testhashmap = plHashMap(plString(\":hello\"), plString(\"world\"));\n if (_commands.length > 0) {\n _helptext[\"help\"] =\n \"-LEAFlisp help text----------------------------------------------\\n--------------------------------------------------------------------------\\n\";\n _commands.map((_cmd) => {\n _helptext[_cmd] =\n _cmd in helptext.cheatsheet\n ? helptext.cheatsheet[_cmd]\n : `LEAFlisp error: no help is available for an unknown command ${_cmd}.`;\n });\n return parseJsonToLEAFlispObj(_helptext);\n } else {\n //return parseJsonToLEAFlispObj(helptext.cheatsheet.cheatsheet);\n _helptext[\"help\"] =\n \"-LEAFlisp help text----------------------------------------------\\n--------------------------------------------------------------------------\\n\";\n Object.keys(helptext.cheatsheet).map((_cmd) => {\n _helptext[_cmd] =\n _cmd in helptext.cheatsheet\n ? helptext.cheatsheet[_cmd]\n : `LEAFlisp error: no help is available for an unknown command ${_cmd}.`;\n });\n return parseJsonToLEAFlispObj(_helptext);\n }\n //return plString(_leafLISPHelpText);\n },\n };\n const plisp_instance = new PocketLisp(\n {\n globals: {\n ...runtime,\n ...leafLISPStdLib({}),\n ...leafLISPREPLStdLib,\n //stdout: value => {lispstdout = value;},\n //'help': () => {\n // return plString(_leafLISPHelpText);\n //},\n },\n utils,\n },\n literals,\n );\n return plisp_instance;\n};\n\nconst runLEAFlispcode = (_lispcode, refnode, _runtimeLEAFlisp, _leafaddress, _preamble_len = 0) => {\n try {\n if (refnode?.slice(0, 4) === \"1f5b\") console.log(\"start debugging\");\n const result = _runtimeLEAFlisp.insituexecute(_lispcode);\n //return result;\n //if (result instanceof PLHashMap || result instanceof PLVector || result instanceof PLBool ||\n // result instanceof PLFractionNumber || result instanceof PLNumber || result instanceof PLString)\n try {\n // return (result instanceof PLHashMap) ? result.toJSON() : result.toJS();\n const jsonized_result = result.toJSON();\n //lisp_assert(jsonized_result == undefined);\n return [0, jsonized_result];\n } catch {\n //lisp_assert(result != undefined);\n //return [0, \"LEAFlisp error: result undefined\"];\n return [0, null]; // null is JSON compliant, undefined isn't\n }\n } catch (e) {\n let errlist = [];\n if (\"errors\" in e) {\n for (let err of e.errors) {\n const msg =\n e.type === \"Parser\"\n ? `line: ${err.line - _preamble_len} - ${err.message}`\n : `line: ${err.position?.line - _preamble_len} - ${err.message}`;\n const leaflisp_errmsg = `LEAFlisp error: {refnode: ${refnode}}: ${msg}`;\n console.error(leaflisp_errmsg);\n\n errlist.push(\n doBottle(\"error\", {\n address: _leafaddress,\n refnode: refnode,\n message: leaflisp_errmsg,\n }),\n );\n }\n } else {\n errlist.push(\n `LEAFlisp error: ${refnode}: unidentified execution failure. please check your leaflisp code for anomalies. exception: ${e.message}`,\n );\n }\n return [-1, errlist];\n }\n};\n\nconst hijackTestURL = (_lispcode) => {\n const lispcode_url_hijacker_re_global =\n /((https?):\\/\\/(www\\.)?([-a-zA-Z0-9@:%._+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6})\\b([-a-zA-Z0-9()@:%_+.~#?&//=]*))/g;\n const lispcode_url_hijacker_re =\n /(.*)(https?):\\/\\/(www\\.)?([-a-zA-Z0-9@:%._+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6})\\b([-a-zA-Z0-9()@:%_+.~#?&//=]*)(.*)/;\n\n const re_match = _lispcode.match(lispcode_url_hijacker_re_global);\n //console.log(re_match);\n //[\n // '(+ \"https://www.leafgon.com/auth/public/self-service/login/flows?id=\" inport)',\n // '(+ \"',\n // 'https',\n // 'www.',\n // 'leafgon.com',\n // '/auth/public/self-service/login/flows?id=',\n // '\" inport)',\n // index: 0,\n // input: '(+ \"https://www.leafgon.com/auth/public/self-service/login/flows?id=\" inport)',\n // groups: undefined\n //]\n\n const _processed_lispcode = re_match\n ? re_match.reduce((acc, a_url) => {\n // now re on each url found\n const url_match = a_url.match(lispcode_url_hijacker_re);\n let hijacked_url = a_url;\n if (url_match && url_match[4] === \"leafgon.com\") {\n //console.log(url_match);\n //const kratos_path = matchKratosURLPath(url_match[5]);\n //hijacked_url = kratos_path ?\n // (url_match[1] + \"http://localhost:4433\" + kratos_path + url_match[6]) :\n // (url_match[1] + \"http://localhost:3880\" + url_match[5] + url_match[6]);\n hijacked_url = url_match[1] + \"http://localhost\" + url_match[5] + url_match[6];\n\n //console.log(hijacked_url);\n }\n\n return acc.replaceAll(a_url, hijacked_url);\n }, _lispcode)\n : _lispcode;\n\n return _processed_lispcode;\n};\n\n/*\n * _leaflisp() is a runtime function for the LEAFgraph node of logic type 'leaflisp'\n * @lispexpression: a LEAFlisp expression in a string\n * @lambdaFunc: currently, the lambda function connected to the current node is always expected to be null\n * as the node-level lambdaFunc is not permitted for this type of node yet.\n * @graphContextual: is NOT to be used for this node type either, hence is always expected to be null.\n */\n//const _leaflisp = ({lispexpression=''}={}, lambdaFunc, graphContextual) => {}\nlet is_interactive_lut = {};\nconst _leaflisp = {\n dataflow:\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n //(inputargs) => {}\n //const {\n // lambdactrl, //: {gos: {subsDirectory}, user: {lispexpression=''}},\n // lambdadata //: {lambdaFunc=x=>x, graphContextual}\n //}=inputargs;\n // spark_dev_note: The game plan down the road, possibly part of breezyforest, is to add support\n // for lambdaFunc in LEAFlisp expressions. Need to work on potential usage scenarios first.\n\n //const refnode_logic = runtimeEtaTree.leafgraph.graph.dataflow.getNodeAttributes(refnode).leafnode.data.leaf.logic;\n //const runtimeLEAFlisp = processLEAFlisp(refnodedata.leaf.logic.args.lispexpression);\n let runtimeLEAFlisp;\n let spawnVIMEditor = undefined;\n\n const probeGraph = _.memoize(async () => {\n const graphaddrstr = \"breezyforest/probe\";\n const _probegraph = await parseAddressableGraph(\n graphaddrstr,\n lambdactrl.gos.etaTree,\n \"leaflisp\",\n );\n\n return _probegraph;\n });\n const cur_address = lambdactrl.gos.etaTree.domain + \"/\" + lambdactrl.gos.etaTree.appid;\n const popupDebuggerTraceWindow = (_tracedata, _refnode = refnode, tracemax = 0) => {\n probeGraph().then((_probegraph) => {\n if (Object.entries(_probegraph).length > 0) {\n if (tracemax > 0 && debuggerGlobal.trace.length === tracemax) {\n debuggerGlobal.trace.shift();\n }\n debuggerGlobal.trace.push({\n timestamp: Date.now(),\n address: cur_address,\n refnode: refnode,\n trace: _tracedata,\n });\n executeLEAFLogic(_probegraph.probe._default, debuggerGlobal.trace, {}, _refnode).then(\n (_ret) => {\n //debuggerGlobal.trace = doUnbottle(\"screenio\", _ret);\n console.log(\"LEAFlisp debug: a debugger probe launched with traces: \", _ret);\n },\n );\n } else {\n // spark_dev_note: 4/July/2023\n // #todo\n // consolidate all LEAF error messages to a single location from which to refer to a specific message as follows.\n console.error(\n \"LEAFlisp error: a debugger probe graph unavailable or not parsed successfully, error traces would not be shown: \",\n );\n }\n });\n };\n\n const popupDebuggerProbeWindow = (_tracedata, _refnode = refnode, probemax = 1) => {\n probeGraph().then((_probegraph) => {\n if (Object.entries(_probegraph).length > 0) {\n if (probemax > 0 && debuggerGlobal.probe.length === probemax) {\n debuggerGlobal.probe.shift();\n }\n debuggerGlobal.probe.push({\n timestamp: Date.now(),\n address: cur_address,\n refnode: refnode,\n trace: _tracedata,\n });\n executeLEAFLogic(_probegraph.probe._default, debuggerGlobal.probe, {}, _refnode).then(\n (_ret) => {\n //debuggerGlobal.trace = doUnbottle(\"screenio\", _ret);\n console.log(\"LEAFlisp debug: a debugger probe launched with traces: \", _ret);\n },\n );\n } else {\n // spark_dev_note: 4/July/2023\n // #todo\n // consolidate all LEAF error messages to a single location from which to refer to a specific message as follows.\n console.error(\n \"LEAFlisp error: a debugger probe graph unavailable or not parsed successfully, error traces would not be shown: \",\n );\n }\n });\n };\n\n const reduced_lambda_obj = await etaReduceLambdaGraphs({\n refnode,\n nodelambda,\n contextuallambda,\n etaTree: lambdactrl.gos.etaTree,\n });\n //lambdactrl.etaTree.leafnodemethods[refnode].setLispCode(lispcode);\n // spark_dev_note: it is \"inevitable\" to use hard-coded leafgon.com uri as part of\n // building leaflisp breezyforest system ui constructs such as login, registration, etc\n // and this interferes with using localhost uris during testing.\n // the following snippet of code does search and replace during testing.\n // example '(+ \"https://www.leafgon.com/auth/public/self-service/login/flows?id=\" inport)'\n // the url re as per https://stackoverflow.com/questions/3809401/what-is-a-good-regular-expression-to-match-a-url\n //const lispcode = hijackTestURL(refnodedata.leaf.logic.args.lispexpression);\n is_interactive_lut[refnode] = \"interactive\" in reduced_lambda_obj ? true : false;\n const is_interactive = is_interactive_lut[refnode];\n\n const lispcode =\n leafgon_env_type === \"development\"\n ? hijackTestURL(refnodedata.leaf.logic.args.lispexpression)\n : refnodedata.leaf.logic.args.lispexpression;\n\n if (\"global\" in reduced_lambda_obj) {\n runtimeLEAFlisp = lambdactrl.gos.etaTree.gRuntimeLEAFlisp;\n } else {\n // runtime env is local in scope (i.e. an isolated env instance per leaflisp node)\n runtimeLEAFlisp = new PocketLisp(\n {\n globals: {\n ...runtime,\n //stdout: value => {lispstdout = value;},\n ...leafLISPStdLib({\n _probefunc: popupDebuggerProbeWindow,\n _tracefunc: popupDebuggerTraceWindow,\n }),\n },\n utils,\n },\n literals,\n );\n }\n\n const is_rewritable = \"rewrite\" in reduced_lambda_obj;\n const is_bottlemode = \"bottle\" in reduced_lambda_obj; // bottle mode pre-empts rewrite mode\n\n if (refnode.slice(0, 4) == \"59fe\") {\n console.log(\"start debugging.\");\n }\n\n const node_context = {\n codebase: \"leaflisp.js\",\n refnode,\n leafnode:\n lambdactrl.gos.etaTree.leafgraph.graph.dataflow.getNodeAttributes(refnode).leafnode.data,\n leafaddress: lambdactrl.gos.etaTree.domain + \"/\" + lambdactrl.gos.etaTree.appid,\n };\n\n const leafnodeioInput$ = new Subject();\n if (is_interactive) {\n // register the dataflow message handle in the etaTree under its elementio lut\n lambdactrl.gos.etaTree.leafio.elementioLUT[refnode] = leafnodeioInput$;\n\n // retrieve and parse breezyforest/leaflisp for interactive invocation of the \"vim\" spell\n const _leafgraph_args = {\n graphuuid: \"\",\n domain: \"breezyforest\",\n appid: \"leaflisp\",\n graphaddrstr: \"breezyforest/leaflisp\",\n };\n const getLEAFLispInteractiveGraph = _leafgraph.lambda(lambdactrl)({\n refnode: \"leaflisp_runtime_interactive\",\n refnodedata: { leaf: { logic: { args: _leafgraph_args } } },\n nodelambda: [],\n contextuallambda: [],\n });\n const _leaflispgraph = await getLEAFLispInteractiveGraph; //.then((response) => {}) // async call to get leafgraph\n\n // calling the following function will invoke the vim spell defined in breezyforest/leaflisp\n // the effect of which is to spawn a vim editor window\n spawnVIMEditor = () => {\n const _inputbottle = doBottle(\n \"dataevent\",\n {\n //_type: \"touchio\",\n //_command: \"i\",\n //_targetid: e.target.id,\n _refnode: refnode,\n _provenance: {\n domain: lambdactrl.gos.etaTree.domain,\n appid: lambdactrl.gos.etaTree.appid,\n refnodedata: node_context.leafnode,\n codebase: \"leaflisp.js\",\n },\n },\n {},\n );\n executeLEAFLogic(_leaflispgraph.vim._default, _inputbottle, {});\n };\n }\n\n return (input$objArr, controlflow$obj) => {\n if (refnode.slice(0, 4) == \"59fe\") {\n console.log(\"start debugging.\");\n }\n const loopidx = controlflow$obj?._config?.loopidx;\n const clubrefnode = controlflow$obj?._config?.clubrefnode;\n\n const preprocessfunc = (_data_in) => {\n //const _data_out = doUnbottle(undefined, _data_in); // unbottle all bottles\n //flowinterface.data_in.next(_data_in);\n if (refnode === \"5e6f52db-0af5-4e04-84ce-3e9af504a3d3\") console.log(\"start debugging\");\n const _data_out = _data_in; // do nothing\n return _data_out;\n };\n\n const doleaflisp = (node_input, _lispcode = lispcode) => {\n // node_input is expected to be an array, the calling function, parseLEAFNode (leaf.js) ensures this\n //const lispinput = parseJsonToLEAFlisp(JSON.parse(node_input));\n //const lispinput = parseJsonToLEAFlisp(typeof node_input === 'string' ? JSON.parse(node_input) : node_input);\n if (refnode.slice(0, 4) == \"6212\") {\n console.log(\"start debugging.\");\n }\n // spark_dev_note: 19/Jun/2023\n // #databus\n //const _payload = node_input !== undefined ? exitDataBus({_bus: node_input}) : undefined;\n //const _payload = node_input !== undefined ? doUnbottle(\"*\", node_input) : undefined;\n const _payload = node_input;\n\n // spark_dev_note:\n // #bugreport: (22/Mar/2023) #mar2023bug1\n // a bug was found when amnesia memoryio or initial blank memory referring\n // returns undefined. undefined gets translated to 'nil' in leaflisp\n // which causes the gnav element to crash.\n // this entirely prevents the leaf editor from displaying the code to apply\n // fixes at the leaflisp level.\n // a temporary fix is to convert all undefined payloads into []\n // once leaflisp code changes is applied, make sure to revert back undefined:nil conversion\n //\n //const lispinput = parseJsonToLEAFlisp(_payload);\n const lispinput = parseJsonToLEAFlisp(_payload == undefined ? [] : _payload);\n //const wiredlispcode = `(def stdin ${lispinput})${lispcode}`;\n //console.log(controlflow$obj);\n let wiredlispcode = `(def inport ${lispinput})`;\n if (loopidx >= 0) wiredlispcode += `(def loopyindex ${loopidx})`;\n if (clubrefnode) wiredlispcode += `(def clubref \"${clubrefnode}\")`;\n const preamble_len = wiredlispcode.split(/\\r\\n|\\r|\\n/).length; // count the length of lines in string\n wiredlispcode += `${_lispcode}`;\n\n try {\n const [errcode, lispresult] = runLEAFlispcode(\n wiredlispcode,\n refnode,\n runtimeLEAFlisp,\n node_context.leafaddress,\n preamble_len,\n );\n\n if (errcode === -1) {\n // spark_dev_note: 4/July/2023\n // add a function to popup a probe/inspection window here\n console.log(\"LEAFlisp execution:\", lispresult[0]);\n popupDebuggerProbeWindow(lispresult, refnode);\n }\n return lispresult;\n } catch (error) {\n throw new StdRuntimeError(`LEAFlisp Error: ${error}`);\n }\n };\n\n const _nodeflowfunc = (_input$objArr, _controlflow$obj) => {\n //console.log(\"start debugging\");\n const _outflow_data$ = new Subject(); //new BehaviorSubject(raceConditionError);\n\n let traffic_semaphore = false;\n const _outflow_ctrl$ = is_rewritable\n ? _controlflow$obj._stream.pipe(\n map((_ctrl_in) => {\n return _ctrl_in;\n }),\n withLatestFrom(..._input$objArr.map((_) => _._stream)),\n map((_combined_in) => {\n //const _next_data = _combined_in.slice(1).filter(_data=>_data!==undefined);\n let _next_data = _combined_in[1];\n\n //const _next_data = _combined_in.slice(1).map(_unitdata=>{return exitDataBus({_bus:_unitdata});}).filter(_data=>_data!==undefined);\n //const _flat_data = [...(new Set(_next_data.flat()))]; // flatten and remove duplicates\n if (isBottle(_next_data) && _next_data._bname === \"rewrite\") {\n const _rewrite_data = doUnbottle(\"*\", _next_data);\n // now rewrite\n // now do the saving up in the lake\n const node_data = {\n ...refnodedata,\n };\n //delete node_data.leaduuid; // must remove any data that are locally added and only consumed by leafeditor\n //console.log(lambdactrl);\n\n // keypath = ['lispexpression'] for leaflisp\n\n const lispinput = parseJsonToLEAFlisp(\n _rewrite_data == undefined ? [] : _rewrite_data,\n );\n node_data.leaf.logic.args.lispexpression = lispinput;\n refnodedata.leaf.logic.args.lispexpression = lispinput;\n //setMultiKeyedData(editorconfig.current.keypath, node_data.leaf.logic.args, editortext.current);\n //mutateUpdateNode({variables: {uuid: editorconfig.current.node_data.leaduuid, data: encodeUnicode(JSON.stringify(node_data))}});\n lambdactrl.gos.etaTree.leaflakeio.qm_methods.updateNode({\n variables: { uuid: refnode, data: encodeUnicode(JSON.stringify(node_data)) },\n });\n\n _next_data = undefined;\n }\n\n if (_next_data != undefined) {\n traffic_semaphore = true;\n const dolispresult = doleaflisp(_next_data);\n _outflow_data$.next(dolispresult); // publish the next available post-processed data via the data flow subject channel\n\n //if (_next_data.length > 1) {\n // const dolispresult = doleaflisp(_next_data, _lispcode);\n // _outflow_data$.next(dolispresult); // publish the next available post-processed data via the data flow subject channel\n //}\n //else if (_next_data.length === 1) {\n // const dolispresult = doleaflisp(_next_data[0], _lispcode);\n // _outflow_data$.next(dolispresult); // publish the next available post-processed data via the data flow subject channel\n //}\n //else { // out only, no input data indicates the intention of memory retrieval of a constant\n // const dolispresult = doleaflisp(undefined, _lispcode);\n // _outflow_data$.next(dolispresult); // publish the next available post-processed data via the data flow subject channel\n //}\n return _combined_in[0]; // only pass the ctrl data in the flow;\n }\n\n return undefined;\n }),\n filter((_) => _ !== undefined),\n share(),\n )\n : is_bottlemode\n ? _controlflow$obj._stream.pipe(\n map((_ctrl_in) => {\n return _ctrl_in;\n }),\n withLatestFrom(..._input$objArr.map((_) => _._stream)),\n map((_combined_in) => {\n //const _next_data = _combined_in.slice(1).filter(_data=>_data!==undefined);\n const _next_data = _combined_in[1];\n\n if (isBottle(_next_data) && _next_data._bname === \"codebottle\") {\n const _codebottle = doUnbottle(\"*\", _next_data);\n //const _next_data = _combined_in.slice(1).map(_unitdata=>{return exitDataBus({_bus:_unitdata});}).filter(_data=>_data!==undefined);\n //const _flat_data = [...(new Set([_next_data].flat()))]; // flatten and remove duplicates\n\n traffic_semaphore = true;\n const _bottle_data = _codebottle[\"data\"];\n const _bottle_code = _codebottle[\"code\"];\n const dolispresult = doleaflisp(_bottle_data, _bottle_code);\n _outflow_data$.next(dolispresult); // publish the next available post-processed data via the data flow subject channel\n //if (_next_data.length > 1) {\n // const dolispresult = doleaflisp(_next_data);\n // _outflow_data$.next(dolispresult); // publish the next available post-processed data via the data flow subject channel\n //}\n //else if (_next_data.length === 1) {\n // const dolispresult = doleaflisp(_next_data[0]);\n // _outflow_data$.next(dolispresult); // publish the next available post-processed data via the data flow subject channel\n //}\n //else { // out only, no input data indicates the intention of memory retrieval of a constant\n // const dolispresult = doleaflisp(undefined);\n // _outflow_data$.next(dolispresult); // publish the next available post-processed data via the data flow subject channel\n //}\n return _combined_in[0]; // only pass the ctrl data in the flow;\n }\n return undefined;\n }),\n filter((_) => _ !== undefined),\n share(),\n )\n : _controlflow$obj._stream.pipe(\n map((_ctrl_in) => {\n return _ctrl_in;\n }),\n withLatestFrom(..._input$objArr.map((_) => _._stream)),\n map((_combined_in) => {\n //const _next_data = _combined_in.slice(1).filter(_data=>_data!==undefined);\n const _next_data = _combined_in[1];\n\n //const _next_data = _combined_in.slice(1).map(_unitdata=>{return exitDataBus({_bus:_unitdata});}).filter(_data=>_data!==undefined);\n //const _flat_data = [...(new Set([_next_data].flat()))]; // flatten and remove duplicates\n\n if (\n refnode === \"f71edebb-85b4-452b-b39a-99ecf3c50ca3\" ||\n refnode === \"1f5b9eaa-cabd-4059-9574-3f0bda95a2ad\"\n )\n console.log(\"start debugging\");\n traffic_semaphore = true;\n const dolispresult = doleaflisp(_next_data);\n _outflow_data$.next(dolispresult); // publish the next available post-processed data via the data flow subject channel\n //if (_next_data.length > 1) {\n // const dolispresult = doleaflisp(_next_data);\n // _outflow_data$.next(dolispresult); // publish the next available post-processed data via the data flow subject channel\n //}\n //else if (_next_data.length === 1) {\n // const dolispresult = doleaflisp(_next_data[0]);\n // _outflow_data$.next(dolispresult); // publish the next available post-processed data via the data flow subject channel\n //}\n //else { // out only, no input data indicates the intention of memory retrieval of a constant\n // const dolispresult = doleaflisp(undefined);\n // _outflow_data$.next(dolispresult); // publish the next available post-processed data via the data flow subject channel\n //}\n return _combined_in[0]; // only pass the ctrl data in the flow;\n }),\n share(),\n );\n return {\n _stream: _outflow_data$.pipe(\n filter((_data_out) => traffic_semaphore),\n map((_data_out) => {\n console.log(_data_out);\n return _data_out;\n }),\n share(),\n ),\n _control: { ..._controlflow$obj, _stream: _outflow_ctrl$ },\n };\n };\n\n const _nodeflowfunc_interactive = (_input$objArr, _controlflow$obj) => {\n //console.log(\"start debugging\");\n const _outflow_data$ = new Subject(); //new BehaviorSubject(raceConditionError);\n\n let traffic_semaphore = false;\n const _outflow_ctrl$ = _controlflow$obj._stream.pipe(\n map((_ctrl_in) => {\n if (spawnVIMEditor) spawnVIMEditor();\n return _ctrl_in;\n }),\n withLatestFrom(..._input$objArr.map((_) => _._stream)),\n switchMap((_combined_in) => {\n const relay_ctrl$ = new BehaviorSubject(_combined_in[0]);\n //const relay_data$ = new BehaviorSubject(_combined_in[1]);\n return combineLatest(relay_ctrl$, leafnodeioInput$);\n }),\n map((_combined_in) => {\n const _next_data = _combined_in[1];\n\n traffic_semaphore = true;\n\n _outflow_data$.next(_next_data); // publish the next available post-processed data via the data flow subject channel\n return _combined_in[0]; // only pass the ctrl data in the flow;\n }),\n share(),\n );\n return {\n _stream: _outflow_data$.pipe(\n filter((_data_out) => traffic_semaphore),\n map((_data_out) => {\n console.log(_data_out);\n return _data_out;\n }),\n share(),\n ),\n _control: { ..._controlflow$obj, _stream: _outflow_ctrl$ },\n };\n };\n\n if (refnode === \"a3f0a480-0054-40f3-888c-8910c0230900\") console.log(\"start debugging\");\n // spark_dev_note: 12/July/2023\n // #sync #async\n // leaf nodes, by default, wait for all incoming flows to provide input data\n // from which output data are produced as per their own functions\n // combineDataflows rely on rx.js combineLatest() to enforce this synchronous dataflow in multiple input streams\n // However, combineLatest() has a quirky behaviour, rather a feature than a bug, where\n // once multiple input data streams are synchronously combined and returned,\n // any subsequent dataflow multiples would fire each time any singole input data stream provides an instance of input data.\n // this behaviour is in fact not compatible with the intended data stream combining behaviour of LEAF nodes.\n // an alternative implementation strategy will be taken for enforcing this synchronous dataflow.\n // that is to skewer each stream in series.\n //const consolidated_input$objArr = [{\n // _stream: chronosDataflow(\n // controlflow$obj._stream.pipe(map(_peep_in=>{\n // return _peep_in;\n // })),\n // input$objArr.map(_$obj=>_$obj._stream.pipe(map(_peep_in=>{\n // return _peep_in;\n // }))),\n // false, CHRONOSTYPE_SYNC, {time: 10000}\n // )\n //}];\n //const consolidated_input$objArr = [combineDataflows(refnode, input$objArr)];\n const output$obj = driveDataflowByCtrlflow(\n controlflow$obj,\n input$objArr,\n undefined,\n { ...node_context, metastep: \"invoking leaflisp\" },\n {\n leaflogic: is_interactive ? _nodeflowfunc_interactive : _nodeflowfunc,\n datalogic: { pre: preprocessfunc },\n },\n );\n\n return output$obj;\n\n ////const flowinput$obj = combineDataflows(refnode, flowinput$Arr);\n //const flowinput$obj = combineDataflows(refnode, flowinput$Arr, false, false, false, {provenance: \"leaflisp.js\", refnode, etaTree: lambdactrl.gos.etaTree});// default to merging multiple streams\n ////const flowinput$ = combineLatest(flowinput$Arr.map(_=>_._stream)).pipe(map(_=>_.flat()));\n ////const flowoutput$ = graphContextual(flowinput$);\n ////return flowoutput$;\n //const loopidx = controlflow$obj?._config?.loopidx;\n //const clubrefnode = controlflow$obj?._config?.clubrefnode;\n //if (refnode.slice(0,4) == \"59fe\") {\n // console.log(\"start debugging.\");\n //}\n //if (flowinput$obj) {\n // const flowoutput$ = flowinput$obj._stream.pipe(\n // map(node_input=>{ // node_input is expected to be an array, the calling function, parseLEAFNode (leaf.js) ensures this\n // //return node_input.map((_input) => {\n // // //console.log('input$ ' + JSON.stringify(input$));\n // // console.log('a leaflisp processed for node with expression: ' + refnodedata.leaf.logic.args.lispexpression + ', flowinput: ' + node_input);\n // // // execute node level logic and optionally set node_output here\n\n // // //return filter(predicate)(flowinput);\n // // //return isValuedObj(_input) ? {..._input, _value: runtimeLEAFlisp(_input._value)} : runtimeLEAFlisp(_input);\n // // const inputdata = isValuedObj(_input) ? {..._input, _value: _input._value} : _input;\n // // const lispinput = parseJsonToLEAFlisp(inputdata);\n // // const wiredlispcode = `(def stdin ${lispinput})${lispcode}`;\n // // const lispresult = run(wiredlispcode);\n // // return lispresult;\n // //})\n // //const lispinput = parseJsonToLEAFlisp(JSON.parse(node_input));\n // //const lispinput = parseJsonToLEAFlisp(typeof node_input === 'string' ? JSON.parse(node_input) : node_input);\n // if (refnode.slice(0,4) == \"6212\") {\n // console.log(\"start debugging.\");\n // }\n // const _payload = exitDataBus({_bus: node_input});\n\n // // spark_dev_note:\n // // #bugreport: (22/Mar/2023) #mar2023bug1\n // // a bug was found when amnesia memoryio or initial blank memory referring\n // // returns undefined. undefined gets translated to 'nil' in leaflisp\n // // which causes the gnav element to crash.\n // // this entirely prevents the leaf editor from displaying the code to apply\n // // fixes at the leaflisp level.\n // // a temporary fix is to convert all undefined payloads into []\n // // once leaflisp code changes is applied, make sure to revert back undefined:nil conversion\n // //\n // //const lispinput = parseJsonToLEAFlisp(_payload);\n // const lispinput = parseJsonToLEAFlisp((_payload === undefined) ? [] : _payload);\n // //const wiredlispcode = `(def stdin ${lispinput})${lispcode}`;\n // console.log(controlflow$obj);\n // let wiredlispcode = `(def inport ${lispinput})`;\n // if (loopidx >= 0)\n // wiredlispcode += `(def loopyindex ${loopidx})`;\n // if (clubrefnode)\n // wiredlispcode += `(def clubref \"${clubrefnode}\")`;\n // wiredlispcode += `${lispcode}`;\n // const [errcode, lispresult] = runLEAFlispcode(wiredlispcode, refnode, runtimeLEAFlisp);\n\n // if (errcode === -1)\n // console.log(\"LEAFlisp execution:\", lispresult[0]);\n // return lispresult;\n // })\n // );\n // return {_stream: flowoutput$, _control: controlflow$obj};\n //}\n //else { // if in-flow is undefined then the lisp expression functions as a constant\n // // do run lisp expression with zero input\n // //runtimeLEAFlisp();\n // // test lisp expression\n // //const runtimeLEAFlisp2 = processLEAFlisp(\"(list 912)\");\n // //const runtimeLEAFlisp2 = processLEAFlisp(\"(list {:a (quote hello) :description (quote cool beanz) :c 3} {:a (quote world) :description (quote world2) :c 3})\");\n // if (refnode.slice(0,4) == \"59fe\") {\n // console.log(\"start debugging.\");\n // }\n // const flowoutput$ = controlflow$obj._stream.pipe(\n // map(ctrl_input => {\n // if (refnode.slice(0,4) == \"59fe\") {\n // console.log(\"start debugging.\");\n // }\n // let configuredlispcode = \"\";\n // if (loopidx >= 0)\n // configuredlispcode += `(def loopyindex ${loopidx})`;\n // if (clubrefnode)\n // configuredlispcode += `(def clubref \"${clubrefnode}\")`;\n // configuredlispcode += `${lispcode}`;\n // const [errcode, lispresult] = runLEAFlispcode(configuredlispcode, refnode, runtimeLEAFlisp);\n\n // if (errcode === -1)\n // console.log(\"LEAFlisp execution:\", lispresult[0]);\n // return lispresult;\n // })\n // );\n\n // return {_stream: flowoutput$, _control: controlflow$obj};\n //}\n };\n },\n lambda:\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n //const refnode_logic = runtimeEtaTree.leafgraph.graph.dataflow.getNodeAttributes(refnode).leafnode.data.leaf.logic;\n console.error(\n `LEAF error: the logical construct built using the ${refnodedata.leaf.logic.type} node ` +\n `(${refnode}) called with args (${JSON.stringify(refnodedata.leaf.logic.args)}) cannot ` +\n \"be defined as a lambda-scoped node.\",\n );\n return (input$Arr, controlflow$obj) => {\n //const input$obj = combineDataflows(refnode, input$Arr);\n const input$obj = combineDataflows(refnode, input$Arr, false, false, false, {\n provenance: \"leaflisp.js lambda\",\n refnode,\n etaTree: lambdactrl.gos.etaTree,\n }); // default to merging multiple streams\n return { ...input$obj, _control: controlflow$obj };\n };\n },\n methods:\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n const runtimestate = { lispcode: \"\" };\n const commonmethods = _common_methods(lambdactrl)({\n refnode,\n refnodedata,\n nodelambda,\n contextuallambda,\n });\n //const reduced_lambda_obj = lambdactrl.gos.etaTree.etaReduceLEAFNode({nodeuuid: refnode, contextuallambda: contextuallambda});\n //const lambdafuncLUTPromise = lambdactrl.gos.etaTree.lookupRuntimeLambdaLUT(graphdomain, graphappid, refnode, nodelambda, contextuallambda);\n //const reduced_lambda_obj = await etaReduceLambdaGraphs({refnode, nodelambda, contextuallambda, etaTree: lambdactrl.gos.etaTree});\n //const is_interactive = (\"interactive\" in reduced_lambda_obj ? true : false);\n const is_interactive = is_interactive_lut[refnode];\n\n if (refnode === \"4c73462c-724e-4e77-9a94-596709ab62f0\") console.log(\"start debugging\");\n return {\n ...commonmethods,\n isinteractive: is_interactive,\n texteditor: {\n setTextSource: (lispcode) => {\n runtimestate.lispcode = lispcode;\n\n // now do the saving up in the lake\n const node_data = {\n ...refnodedata,\n };\n //delete node_data.leaduuid; // must remove any data that are locally added and only consumed by leafeditor\n //console.log(lambdactrl);\n\n // keypath = ['lispexpression'] for leaflisp\n node_data.leaf.logic.args.lispexpression = lispcode;\n //setMultiKeyedData(editorconfig.current.keypath, node_data.leaf.logic.args, editortext.current);\n //mutateUpdateNode({variables: {uuid: editorconfig.current.node_data.leaduuid, data: encodeUnicode(JSON.stringify(node_data))}});\n if (!is_interactive)\n lambdactrl.gos.etaTree.leaflakeio.qm_methods.updateNode({\n variables: { uuid: refnode, data: encodeUnicode(JSON.stringify(node_data)) },\n });\n },\n getTextSource: () => {\n //console.log(refnodedata);\n //return runtimestate.lispcode;\n return refnodedata.leaf.logic.args.lispexpression;\n },\n },\n general: {\n getNodeData: () => {\n return refnodedata;\n },\n },\n };\n },\n};\n\nexport { _leaflisp, parseJsonToLEAFlisp, runLEAFlispcode, init_gRuntimeLEAFlisp };\n","import { etaReduceLambdaGraphs } from \"../../eta.js\";\nimport { map, withLatestFrom, share } from \"rxjs/operators\";\nimport {\n mergeDataflows,\n combineDataflows,\n substituteDataflows,\n concatDataflows,\n} from \"../../../utils/leafdataflow.js\";\nimport { Subject, merge } from \"rxjs\";\nimport { driveDataflowByCtrlflow } from \"../../leaf.js\";\n//import { syncDataflows } from '../../../utils/leafdataflow';\n\n/*\n * _leafchronosflow() is a runtime function for the LEAF node of logic type 'leafchronosflow'.\n * it is used to define rules on how to synchronize/asynchronize multiple dataflows wired into the node's input.\n * @lambdaFunc: is a function defined in the context of the calling LEAF graph. It accepts flowinput$ as\n * input and returns as output a stream carrying a string or a list of strings.\n * The output of which, if defined, is used preemptively in lieu of @label.\n * @graphContextual: n/a\n */\nconst _leafchronosflow = {\n dataflow:\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n // space for node type specific init prior to use\n //const _leafnode = contextuallambda; // derivative leafnode\n //const _leafnode_logic = contextuallambda.uuid;\n\n // get the refnode w.r.t. the current leaf node\n //const refnode = refnodepath[0]; //leafgraph.graph.lambda.outNeighbors(contextuallambda[0])[0];\n //const refnode_logic = runtimeEtaTree.leafgraph.graph.dataflow.getNodeAttributes(refnode).leafnode.data.leaf.logic;\n //const contextual_lut = refnode ? parseLambdaLUT(contextuallambda, _refnode, _refnode_logic) : undefined;\n // get the refnode w.r.t. the contextuallambda nodes\n // check for parsing error conditions\n if (!contextuallambda) {\n throw (\n `LEAF error: the logical construct built using the ${refnodedata.leaf.logic.type} node ` +\n `(${refnode}) called with args (${JSON.stringify(refnodedata.leaf.logic.args)}).`\n );\n }\n //if (!('_default' in contextual_lut)) {\n // throw `LEAF error: the logical construct built using the ${_refnode_logic.type} node `+\n // `(${_refnode}) called with args (${JSON.stringify(_refnode_logic.args)}) has no `+\n // `default defined for its lambda, while being referenced by the leaflambdagraph node (${leafnode}). `+\n // 'A default lambda construct is required by the leaflambdagraph node.';\n //}\n\n // for the derivative nodelambda, look up the list of lambda leaf nodes connected to the defualt lambda entry node.\n // for the derivative contextuallambda, use current node's nodelambda.\n //const _nodelambda = leafgraph.edges.lambda.sourcelut[contextual_lut._default.uuid];\n\n //const thecorelogic = await etaReduceLambdaGraphs(contextual_lut._default.uuid, _nodelambda, _contextuallambda, leafgraph, graphcomponents);\n //const thecorelogic = await etaReduceLambdaGraphs({nodelambda: contextuallambda, contextuallambda: nodelambda});\n //const reduced_lambda_obj = await etaReduceLambdaGraphs({refnode, nodelambda: contextuallambda, contextuallambda: nodelambda, etaTree: lambdactrl.gos.etaTree});\n const reduced_lambda_obj = await etaReduceLambdaGraphs({\n refnode,\n nodelambda,\n contextuallambda,\n etaTree: lambdactrl.gos.etaTree,\n });\n\n const node_context = {\n codebase: \"leafchronosflow.js\",\n refnode,\n leafnode:\n refnode &&\n lambdactrl.gos.etaTree.leafgraph.graph.dataflow.getNodeAttributes(refnode).leafnode.data,\n };\n\n const _defaultLambda =\n \"_default\" in reduced_lambda_obj\n ? (_input$objArr, _controlflow$obj) => {\n //const mixflowctrlflow$obj = {..._controlflow$obj};\n\n const _output$obj = reduced_lambda_obj._default(_input$objArr, _controlflow$obj);\n return _output$obj;\n }\n : (_input$objArr, _controlflow$obj) => {\n const _outflow_data$ = new Subject(); // BehaviorSubject(raceConditionError);\n //const merged_data_in$ = _input$objArr[0]._stream; // merge operation already done under weaveDataflow in eta.js\n const merged_data_in$ = _input$objArr[0]._stream;\n\n const _outflow_ctrl$ = _controlflow$obj._stream.pipe(\n map((_ctrl_in) => {\n return _ctrl_in;\n }),\n withLatestFrom(merged_data_in$),\n //concatMap(_ctrl_in=> {\n // return combineLatest([of(_ctrl_in), ..._input$objArr.map(_obj=>_obj._stream)]);\n //}),\n map((_combined_in) => {\n //const isbottled = ('bottle' in reduced_lambda_obj) ? true : false; // is output bottled?\n //const isparfait = ('parfait' in reduced_lambda_obj) ? true : false; // is output an array (parfait), plural or singular data array without explicit text labels?\n //const iscrate = ('crate' in reduced_lambda_obj) ? true : false; // is output a bottle array (crate), a crate here is a parfait without unbottling incoming bottles\n //const isdict = ('dictionary' in reduced_lambda_obj) ? true : false; // is output a bottle array (crate), a crate here is a parfait without unbottling incoming bottles\n //const israw = ('raw' in reduced_lambda_obj) ? true : false; // is output an array (parfait), plural or singular data array without explicit text labels?\n\n //const _next_data = _combined_in[1];\n //_outflow_data$.next(isbottled ? doBottle(\"mix\", _next_data) : _next_data); // publish the next available post-processed data via the data flow subject channel\n //.map(_unitdata => { // filter incoming bottles\n // // mix require bottled input\n // return isBottle(_unitdata) ? _unitdata : undefined;\n //})\n //const _next_data = [_combined_in[1]].flat().filter(_unitdata => { // filter out undefined or \"empty_data\"\n // //return (_unitdata !== undefined && !isEmptyBottle(_unitdata));\n // return (_unitdata !== undefined);\n //});\n ////if (!israw)\n //// _next_data = [...(new Set(_next_data.flat()))]; // flatten and remove duplicates\n\n //if (_next_data.includes(undefined))\n // console.log(\"start debugging\")\n //if (_next_data.length > 1)\n // _outflow_data$.next(_next_data); // publish the next available post-processed data via the data flow subject channel\n //else if (_next_data.length === 1)\n // _outflow_data$.next(_next_data[0]); // publish the next available post-processed data via the data flow subject channel\n\n //return new BehaviorSubject(_combined_in[0]); // only pass the ctrl data in the main flow;\n _outflow_data$.next(_combined_in[1]);\n return _combined_in[0];\n }),\n share(),\n );\n return {\n _stream: _outflow_data$.pipe(\n map((x) => {\n //const _rt_cache = {...node_context};\n return x;\n }),\n share(),\n ),\n _control: {\n ..._controlflow$obj,\n _stream: _outflow_ctrl$.pipe(\n map((_in) => {\n return _in;\n }),\n share(),\n ),\n },\n };\n };\n\n return (input$objArr, controlflow$obj) => {\n //const outflow_data$ = new ReplaySubject(1);\n if (input$objArr.length > 1) {\n const merged_data_in$ = merge(\n ...input$objArr.map((_$obj, idx) => {\n return _$obj._stream.pipe(\n map((_data_in) => {\n return _data_in;\n }),\n share(),\n );\n }),\n );\n\n // determine mode of action\n if (\"concat\" in reduced_lambda_obj) {\n // look for a concat label\n const concatflow$obj = concatDataflows(input$objArr);\n return { ...concatflow$obj, _control: controlflow$obj };\n } else if (\"merge\" in reduced_lambda_obj) {\n const mergeflow$obj = mergeDataflows(input$objArr);\n return { ...mergeflow$obj, _control: controlflow$obj };\n }\n //else if (\"zip\" in reduced_lambda_obj) { // zip is the default mix mode\n // const zippedflow$obj = zipDataflows(refnode, flowinput$Arr, 'main', 'latest' in reduced_lambda_obj, !('wait' in reduced_lambda_obj));// default to zipping multiple streams\n // //return {_stream: zippedflow$obj._stream.pipe(map(\n // // x => {\n // // console.log(x);\n // // return x;\n // // }\n // //))};\n // // test\n // //zippedflow$obj._stream.subscribe({\n // // next: x => {\n // // console.log(x);\n // // }\n // //})\n // // end of test\n // return {...zippedflow$obj, _control: controlflow$obj};\n //}\n else if (\"combine\" in reduced_lambda_obj) {\n // zip is the default mix mode\n const combinedflow$obj = combineDataflows(refnode, input$objArr); // default to zipping multiple streams\n //const combinedflow$obj = {_stream: combineLatest(flowinput$Arr.map(x=>x._stream)).pipe(map(_=>_.flat()))};// default to zipping multiple streams\n return { ...combinedflow$obj, _control: controlflow$obj };\n } else if (\"substitute\" in reduced_lambda_obj) {\n const dictionary_keys = Object.keys(reduced_lambda_obj.substitute);\n\n return {\n ...substituteDataflows(input$objArr, dictionary_keys),\n _control: controlflow$obj,\n };\n } else {\n // naive zip is the default mix mode\n const blankprefunc = (_data_in) => {\n //const _data_out = doUnbottle(undefined, _data_in);\n const _data_out = _data_in;\n return _data_out;\n };\n\n const nodectrl$ = controlflow$obj._stream.pipe(\n map((_ctrl_in) => {\n return _ctrl_in;\n }),\n );\n //const nodectrl$ = controlflow$obj._stream.pipe(\n // concatMap(_ctrl_in=> {\n // ctrl_in_cache = _ctrl_in;\n // return [of(_ctrl_in), lambdakey$obj._stream];\n // }),\n // map( ([_ctrl_in, _lambdakey]) => {\n // bottle_label = _lambdakey;\n // return _ctrl_in;\n // })\n //);\n //const _merged_input$objArr = input$objArr.length > 1 ?\n //[{\n // _stream: merge(...input$objArr.map(_in$obj =>_in$obj._stream)).pipe(\n // map(_data_in => {\n // return _data_in;\n // })\n // )\n //}] :\n //input$objArr;\n\n //const _merged_input$objArr = input$objArr.length > 1 ?\n // [{_stream: chronosDataflow(nodectrl$, input$objArr.map(_$obj=>_$obj._stream), false, CHRONOSTYPE_ASYNC, {time: -1}, TIMEOUTBEHAVIOR_BESTEFFORT, {codebase: 'leafchronosflow'})}] :\n // input$objArr;\n\n const output$obj = driveDataflowByCtrlflow(\n { _stream: nodectrl$ },\n [{ _stream: merged_data_in$ }],\n undefined,\n { ...node_context, metastep: \"executing leafchronosflow \" },\n {\n leaflogic: _defaultLambda,\n datalogic: { pre: blankprefunc },\n },\n );\n return output$obj;\n //const zippedflow$obj = naiveZipDataflows(flowinput$Arr);// default to zipping multiple streams\n //const zippedflow$obj = zipDataflows(refnode, flowinput$Arr, 'main', 'latest' in reduced_lambda_obj, !('wait' in reduced_lambda_obj));// default to zipping multiple streams\n //return {...zippedflow$obj, _control: controlflow$obj};\n\n // spark_dev_note: (22/Mar/2023)\n // #bugreport #mar2023bug1\n //const combinedflow$obj = combineDataflows(refnode, flowinput$Arr, true, false, true);// default to zipping multiple streams\n //const outflow_ctrl$ = controlflow$obj._stream.pipe(\n // concatMap(_ctrl_in=> {\n // //const combinedflow$obj = combineDataflows(refnode, [of(_ctrl_in),...flowinput$Arr], false, false, false, {provenance: \"leafmixflow.js\", refnode, etaTree: lambdactrl.gos.etaTree});// default to merging multiple streams\n // const combinedflow$ = combineLatest([of(_ctrl_in),...flowinput$Arr.map(_in$obj=>_in$obj._stream)]);\n // return combinedflow$;\n // }),\n // map(_combined_in=> {\n // outflow_data$.next(_combined_in.slice(1)); // pass the data without ctrl\n // return _combined_in[0]; // only pass the ctrl data in the flow;\n // })\n //);\n //const outflow$obj = driveDataflowByCtrlflow(controlflow$obj, input$objArr, undefined, node_context);\n //const outflow_data$ = outflow$obj._stream;\n //const outflow_ctrl$ = outflow$obj._control._stream;\n ////const combinedflow$obj = {_stream: combineLatest(flowinput$Arr.map(x=>x._stream)).pipe(\n //// map(_=> {\n //// if (refnode.slice(0,4) === \"9168\")\n //// console.log(\"start debugging\");\n //// return _;\n //// }),\n //// map(_=>_.flat())\n ////)};// default to zipping multiple streams\n //return {_stream: outflow_data$, _control: {_stream: outflow_ctrl$}};\n }\n\n // spark_dev_note: based on the user-define sync rule, the sync behavior is taken care of by its calling function parseLEAFNode()\n //if (refnodedata.leaf.logic.args.syncrule || 'syncrule' in reduced_lambda_obj) { // a non-empty rule or lambdaFunc argument\n // //const lambdalabels$ = lambdadata.lambdaFunc ? lambdadata.lambdaFunc(flowinput$) : of([lambdactrl.user.leaf.logic.args.label]);\n //\n // const flowoutput$ = flowinput$.pipe(\n // //withLatestFrom(lambdalabels$), // transforms input stream into tuples of [unitdata, _lambdalabel]\n // map((_data) => {\n // console.log(_data);\n // return _data;\n // }),\n // //filter(([unitdata, _lambdalabel]) => (unitdata.every(x=>(isBottle(x)||(isCrate(x) && x._crate.every(isBottle)))))), // filter out any non-bottle or non-crate data\n // filter(_entry => _entry) // filter out any null entries\n // );\n\n // // debug\n // flowoutput$.pipe(\n // map((_entry) => {\n // console.log(_entry);\n // })\n // )\n\n // return flowoutput$;\n //}\n //else { // no label to label anything with, just return input as output unchanged\n // return flowinput$;\n //}\n } else if (input$objArr.length === 1) {\n // spark_dev_note: (22/Mar/2023)\n // #bugreport #mar2023bug1 #spuriouscombo\n // A critical bug found in the way eta.js weaveDataflows handles multiple inflows\n // by consolidating them into a single inflow upon feeding to the receiving node\n // this invalides the above code block executed when flowinput$Arr.length > 1\n // fix it with highest priority.\n return { ...input$objArr[0], _control: controlflow$obj };\n }\n };\n },\n lambda:\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n // space for node type specific init prior to use\n // note the cross over in the roles of nodelambda and contextuallambda\n const reduced_lambda_obj = await etaReduceLambdaGraphs({\n refnode,\n nodelambda: contextuallambda,\n contextuallambda: nodelambda,\n etaTree: lambdactrl.gos.etaTree,\n });\n const lambda_lut = {};\n Object.entries(reduced_lambda_obj).map(([key, etafunc]) => {\n lambda_lut[key] = (input$Arr, controlflow$obj) => {\n // a dataflow-scoped func per key\n const output$obj = etafunc(input$Arr);\n return { ...output$obj, _control: controlflow$obj };\n };\n });\n return lambda_lut;\n },\n};\n\nexport { _leafchronosflow };\n","import { etaReduceLambdaGraphs } from \"../../eta.js\";\nimport { map, withLatestFrom, share, switchMap } from \"rxjs/operators\";\nimport {\n mergeDataflows,\n combineDataflows,\n substituteDataflows,\n concatDataflows,\n} from \"../../../utils/leafdataflow.js\";\nimport { of, Subject } from \"rxjs\";\nimport { isBottle, isEmptyBottle } from \"../../predicates.js\";\nimport { driveDataflowByCtrlflow } from \"../../leaf.js\";\nimport { doBottle, doUnbottle } from \"../datautils/bottling.js\";\n/*\n * _leafmixflow() is a runtime function for the LEAF node of logic type 'leafmixflow'.\n * it is used to define rules on how to mix the data contents of multiple dataflows wired into the node's input.\n * @lambdaFunc: is a function defined in the context of the calling LEAF graph. It accepts flowinput$ as\n * input and returns as output a stream carrying a string or a list of strings.\n * The output of which, if defined, is used preemptively in lieu of @label.\n * @graphContextual: n/a\n */\nconst _leafmixflow = {\n dataflow:\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n // space for node type specific init prior to use\n //const _leafnode = contextuallambda; // derivative leafnode\n //const _leafnode_logic = contextuallambda.uuid;\n\n // get the refnode w.r.t. the current leaf node\n //const refnode = refnodepath[0]; //leafgraph.graph.lambda.outNeighbors(contextuallambda[0])[0];\n //const refnode_logic = runtimeEtaTree.leafgraph.graph.dataflow.getNodeAttributes(refnode).leafnode.data.leaf.logic;\n //const contextual_lut = refnode ? parseLambdaLUT(contextuallambda, _refnode, _refnode_logic) : undefined;\n // get the refnode w.r.t. the contextuallambda nodes\n // check for parsing error conditions\n if (!contextuallambda) {\n throw (\n `LEAF error: the logical construct built using the ${refnodedata.leaf.logic.type} node ` +\n `(${refnode}) called with args (${JSON.stringify(refnodedata.leaf.logic.args)}).`\n );\n }\n //if (!('_default' in contextual_lut)) {\n // throw `LEAF error: the logical construct built using the ${_refnode_logic.type} node `+\n // `(${_refnode}) called with args (${JSON.stringify(_refnode_logic.args)}) has no `+\n // `default defined for its lambda, while being referenced by the leaflambdagraph node (${leafnode}). `+\n // 'A default lambda construct is required by the leaflambdagraph node.';\n //}\n\n // for the derivative nodelambda, look up the list of lambda leaf nodes connected to the defualt lambda entry node.\n // for the derivative contextuallambda, use current node's nodelambda.\n //const _nodelambda = leafgraph.edges.lambda.sourcelut[contextual_lut._default.uuid];\n\n //const thecorelogic = await etaReduceLambdaGraphs(contextual_lut._default.uuid, _nodelambda, _contextuallambda, leafgraph, graphcomponents);\n //const thecorelogic = await etaReduceLambdaGraphs({nodelambda: contextuallambda, contextuallambda: nodelambda});\n const reduced_lambda_obj = await etaReduceLambdaGraphs({\n refnode,\n nodelambda,\n contextuallambda,\n etaTree: lambdactrl.gos.etaTree,\n });\n\n const node_context = {\n codebase: \"leafmixflow.js\",\n refnode,\n leafnode:\n refnode &&\n lambdactrl.gos.etaTree.leafgraph.graph.dataflow.getNodeAttributes(refnode).leafnode.data,\n };\n\n const _defaultLambda =\n \"_default\" in reduced_lambda_obj\n ? (_input$objArr, _controlflow$obj) => {\n //const mixflowctrlflow$obj = {..._controlflow$obj};\n const _output$obj = reduced_lambda_obj._default(_input$objArr, _controlflow$obj);\n return _output$obj;\n }\n : (_input$objArr, _controlflow$obj) => {\n console.log(\"start debugging\");\n const _outflow_data$ = new Subject(); //new BehaviorSubject(raceConditionError);\n\n const _outflow_ctrl$ = _controlflow$obj._stream.pipe(\n //switchMap(_ctrl_in=> {\n // if (refnode === \"090333ee-93f9-4eab-9ae2-2495bef8f388\")\n // console.log(\"start debugging, #racecondition\");\n // return combineLatest([of(_ctrl_in), ..._input$objArr.map(_obj=>_obj._stream)]);\n //}),\n withLatestFrom(..._input$objArr.map((_obj) => _obj._stream)),\n switchMap((_combined_in) => {\n const isbottled = \"bottle\" in reduced_lambda_obj ? true : false; // is output bottled?\n const isflatten = \"flatten\" in reduced_lambda_obj ? true : false; // is output an array (parfait), plural or singular data array without explicit text labels?\n const isparfait = \"parfait\" in reduced_lambda_obj ? true : false; // is output an array (parfait), plural or singular data array without explicit text labels?\n const iscrate = \"crate\" in reduced_lambda_obj ? true : false; // is output a bottle array (crate), a crate here is a parfait without unbottling incoming bottles\n const isdict = \"dictionary\" in reduced_lambda_obj ? true : false; // is output a bottle array (crate), a crate here is a parfait without unbottling incoming bottles\n const israw = \"raw\" in reduced_lambda_obj ? true : false; // is output an array (parfait), plural or singular data array without explicit text labels?\n\n if (refnode === \"5bf0fb01-3c2c-4d85-bfea-4ebef3e8ab3b\")\n console.log(\"start debugging\");\n let _next_data = undefined;\n if (isflatten) {\n _next_data = Array.isArray(_combined_in[1])\n ? _combined_in[1].flat()\n : _combined_in[1];\n _outflow_data$.next(isbottled ? doBottle(\"mix\", _next_data) : _next_data); // publish the next available post-processed data via the data flow subject channel\n } else if (isparfait && !isdict) {\n // spark_dev_note: 18/Jun/2023\n // #databus\n // leafmixflow now passes bottles whose contents are not undefined\n //const _next_data = _combined_in.slice(1).map(_unitdata=>{return exitDataBus({_bus:_unitdata});}).filter(_data=>_data!==undefined);\n // _combined_in is supposed to be of length 2, where idx 0 carries the _ctrl_in and\n // idx 1 carries the consolidated input data stream (ie consolidated_input$objArr)\n _next_data = [_combined_in[1]]\n .flat()\n .map((_unitdata) => {\n // unbottle all (\"*\") incoming bottles\n // mix require bottled input\n return isBottle(_unitdata) ? doUnbottle(\"*\", _unitdata) : undefined;\n })\n .filter((_unitdata) => {\n // filter out undefined, null or \"empty_data\"\n return _unitdata && _unitdata !== \"empty_data\";\n });\n if (!israw) _next_data = [...new Set(_next_data.flat())]; // flatten and remove duplicates\n\n //if (_next_data.length === 1)\n // _outflow_data$.next(isbottled ? doBottle(\"mix\", _next_data[0]) : _next_data[0]); // publish the next available post-processed data via the data flow subject channel\n //else // #racecondition this else clause would transfer downstream [] or an empty data array as well, in order to prevent race condition error.\n // _outflow_data$.next(isbottled ? doBottle(\"mix\", _next_data) : _next_data); // publish the next available post-processed data via the data flow subject channel\n _outflow_data$.next(isbottled ? doBottle(\"mix\", _next_data) : _next_data); // publish the next available post-processed data via the data flow subject channel\n } else if (iscrate && !isdict) {\n _next_data = [_combined_in[1]]\n .flat()\n .map((_unitdata) => {\n // filter incoming bottles\n // mix require bottled input\n return isBottle(_unitdata) ? _unitdata : undefined;\n })\n .filter((_unitdata) => {\n // filter out undefined or \"empty_data\"\n return _unitdata !== undefined && !isEmptyBottle(_unitdata);\n });\n if (!israw) _next_data = [...new Set(_next_data.flat())]; // flatten and remove duplicates\n\n if (_next_data.length === 1)\n _outflow_data$.next(\n isbottled ? doBottle(\"mix\", _next_data[0]) : _next_data[0],\n );\n // publish the next available post-processed data via the data flow subject channel\n // #racecondition this else clause would transfer downstream [] or an empty data array as well, in order to prevent race condition error.\n else _outflow_data$.next(isbottled ? doBottle(\"mix\", _next_data) : _next_data); // publish the next available post-processed data via the data flow subject channel\n } else {\n // if not a parfait nor a crate, then a dictionary\n _next_data = {};\n [_combined_in[1]]\n .flat()\n .filter((_unitdata) => {\n // filter out non-bottle data or \"empty_data\"\n return isBottle(_unitdata) && !isEmptyBottle(_unitdata);\n })\n .map((_unitdata) => {\n // unbottle all (\"*\") incoming bottles\n const bottle2dict = (_bottle, _dict = {}) => {\n const _bname = _bottle._bname;\n return { ..._dict, [_bname]: doUnbottle(\"*\", _unitdata) };\n };\n // mix require bottled input\n //return isBottle(_unitdata) ? doUnbottle(\"*\", _unitdata) : undefined;\n if (isBottle(_unitdata)) {\n _next_data = bottle2dict(_unitdata, _next_data);\n return _unitdata;\n }\n return undefined;\n });\n\n // spark_dev_note: 31/July/2023\n // conditional downstream data transfer (resulting in ctrl signal without data signal)\n // would cause a race condition error downstream, hence the fix below to transfer\n // data even if it may be empty. (consider it as a nudging data flow)\n _outflow_data$.next(isbottled ? doBottle(\"mix\", _next_data) : _next_data); // publish the next available post-processed data via the data flow subject channel\n //if (!israw) {\n // //if (Object.keys(_next_data).length > 0) // filter empty dictionaries\n // //else\n // // console.log(\"start debugging, potentially causing a race condition error\");\n //}\n //else { // if \"raw\" flag is on, send dictionaries in the data flow, whether empty or not.\n // _outflow_data$.next(isbottled ? doBottle(\"mix\", _next_data) : _next_data); // publish the next available post-processed data via the data flow subject channel\n //}\n }\n return of(_combined_in[0]); // only pass the ctrl data in the main flow;\n }),\n share(),\n );\n return {\n _stream: _outflow_data$.pipe(\n //skipUntil(_outflow_ctrl$),\n map((x) => x),\n share(),\n ),\n _control: { ..._controlflow$obj, _stream: _outflow_ctrl$ },\n };\n };\n\n //const zipMultipleArr = (...arr) => Array.from({ length: Math.max(...arr.map(a => a.length)) }, (_, i) => arr.map(a => a[i]));\n\n //const _re = /[\\w\\s]*\\{([\\w]+)\\}[\\w]*/g;\n //const teststr1 = 'hello{idx}wh';\n //console.log(stringFormat(teststr1, {idx: 'WHAT'}));\n\n return (input$objArr, controlflow$obj) => {\n //const outflow_data$ = new ReplaySubject(1);\n if (input$objArr.length > 1) {\n // determine mode of action\n if (\"concat\" in reduced_lambda_obj) {\n // look for a concat label\n const concatflow$obj = concatDataflows(input$objArr);\n return { ...concatflow$obj, _control: controlflow$obj };\n } else if (\"merge\" in reduced_lambda_obj) {\n const mergeflow$obj = mergeDataflows(input$objArr);\n return { ...mergeflow$obj, _control: controlflow$obj };\n }\n //else if (\"zip\" in reduced_lambda_obj) { // zip is the default mix mode\n // const zippedflow$obj = zipDataflows(refnode, flowinput$Arr, 'main', 'latest' in reduced_lambda_obj, !('wait' in reduced_lambda_obj));// default to zipping multiple streams\n // //return {_stream: zippedflow$obj._stream.pipe(map(\n // // x => {\n // // console.log(x);\n // // return x;\n // // }\n // //))};\n // // test\n // //zippedflow$obj._stream.subscribe({\n // // next: x => {\n // // console.log(x);\n // // }\n // //})\n // // end of test\n // return {...zippedflow$obj, _control: controlflow$obj};\n //}\n else if (\"combine\" in reduced_lambda_obj) {\n // zip is the default mix mode\n const combinedflow$obj = combineDataflows(refnode, input$objArr); // default to zipping multiple streams\n //const combinedflow$obj = {_stream: combineLatest(flowinput$Arr.map(x=>x._stream)).pipe(map(_=>_.flat()))};// default to zipping multiple streams\n return { ...combinedflow$obj, _control: controlflow$obj };\n } else if (\"substitute\" in reduced_lambda_obj) {\n const dictionary_keys = Object.keys(reduced_lambda_obj.substitute);\n\n return {\n ...substituteDataflows(input$objArr, dictionary_keys),\n _control: controlflow$obj,\n };\n } else {\n // naive zip is the default mix mode\n const unbottlefunc = (_data_in) => {\n //const _data_out = doUnbottle(undefined, _data_in);\n const _data_out = _data_in;\n return _data_out;\n };\n\n const nodectrl$ = controlflow$obj._stream;\n //const nodectrl$ = controlflow$obj._stream.pipe(\n // concatMap(_ctrl_in=> {\n // ctrl_in_cache = _ctrl_in;\n // return [of(_ctrl_in), lambdakey$obj._stream];\n // }),\n // map( ([_ctrl_in, _lambdakey]) => {\n // bottle_label = _lambdakey;\n // return _ctrl_in;\n // })\n //);\n\n //const consolidated_input$objArr = [combineDataflows(refnode, input$objArr)];\n //chronosDataflow(_flowfunc_output$obj._control._stream, [_flowfunc_output$obj._control._stream, _flowfunc_output$obj._stream], CHRONOSTYPE_SYNC, {time: 10000})\n //const consolidated_input$objArr = [{_stream: chronosDataflow(controlflow$obj._stream, input$objArr.map(_$obj=>_$obj._stream), false, CHRONOSTYPE_SYNC, {time: 10000})}];\n const output$obj = driveDataflowByCtrlflow(\n { _stream: nodectrl$ },\n input$objArr,\n undefined,\n { ...node_context, metastep: \"executing leafmixflow \" },\n {\n leaflogic: _defaultLambda,\n datalogic: { pre: unbottlefunc },\n },\n );\n return output$obj;\n //const zippedflow$obj = naiveZipDataflows(flowinput$Arr);// default to zipping multiple streams\n //const zippedflow$obj = zipDataflows(refnode, flowinput$Arr, 'main', 'latest' in reduced_lambda_obj, !('wait' in reduced_lambda_obj));// default to zipping multiple streams\n //return {...zippedflow$obj, _control: controlflow$obj};\n\n // spark_dev_note: (22/Mar/2023)\n // #bugreport #mar2023bug1\n //const combinedflow$obj = combineDataflows(refnode, flowinput$Arr, true, false, true);// default to zipping multiple streams\n //const outflow_ctrl$ = controlflow$obj._stream.pipe(\n // concatMap(_ctrl_in=> {\n // //const combinedflow$obj = combineDataflows(refnode, [of(_ctrl_in),...flowinput$Arr], false, false, false, {provenance: \"leafmixflow.js\", refnode, etaTree: lambdactrl.gos.etaTree});// default to merging multiple streams\n // const combinedflow$ = combineLatest([of(_ctrl_in),...flowinput$Arr.map(_in$obj=>_in$obj._stream)]);\n // return combinedflow$;\n // }),\n // map(_combined_in=> {\n // outflow_data$.next(_combined_in.slice(1)); // pass the data without ctrl\n // return _combined_in[0]; // only pass the ctrl data in the flow;\n // })\n //);\n //const outflow$obj = driveDataflowByCtrlflow(controlflow$obj, input$objArr, undefined, node_context);\n //const outflow_data$ = outflow$obj._stream;\n //const outflow_ctrl$ = outflow$obj._control._stream;\n ////const combinedflow$obj = {_stream: combineLatest(flowinput$Arr.map(x=>x._stream)).pipe(\n //// map(_=> {\n //// if (refnode.slice(0,4) === \"9168\")\n //// console.log(\"start debugging\");\n //// return _;\n //// }),\n //// map(_=>_.flat())\n ////)};// default to zipping multiple streams\n //return {_stream: outflow_data$, _control: {_stream: outflow_ctrl$}};\n }\n\n // spark_dev_note: based on the user-define sync rule, the sync behavior is taken care of by its calling function parseLEAFNode()\n //if (refnodedata.leaf.logic.args.syncrule || 'syncrule' in reduced_lambda_obj) { // a non-empty rule or lambdaFunc argument\n // //const lambdalabels$ = lambdadata.lambdaFunc ? lambdadata.lambdaFunc(flowinput$) : of([lambdactrl.user.leaf.logic.args.label]);\n //\n // const flowoutput$ = flowinput$.pipe(\n // //withLatestFrom(lambdalabels$), // transforms input stream into tuples of [unitdata, _lambdalabel]\n // map((_data) => {\n // console.log(_data);\n // return _data;\n // }),\n // //filter(([unitdata, _lambdalabel]) => (unitdata.every(x=>(isBottle(x)||(isCrate(x) && x._crate.every(isBottle)))))), // filter out any non-bottle or non-crate data\n // filter(_entry => _entry) // filter out any null entries\n // );\n\n // // debug\n // flowoutput$.pipe(\n // map((_entry) => {\n // console.log(_entry);\n // })\n // )\n\n // return flowoutput$;\n //}\n //else { // no label to label anything with, just return input as output unchanged\n // return flowinput$;\n //}\n } else if (input$objArr.length === 1) {\n // spark_dev_note: (22/Mar/2023)\n // #bugreport #mar2023bug1 #spuriouscombo\n // A critical bug found in the way eta.js weaveDataflows handles multiple inflows\n // by consolidating them into a single inflow upon feeding to the receiving node\n // this invalides the above code block executed when flowinput$Arr.length > 1\n // fix it with highest priority.\n const preflowfunc = (_data_in) => {\n //const _rt_cache = {idxcache, loopydata_cache};\n //const _data_out = doUnbottle(undefined, _data_in);\n const _data_out = _data_in;\n return _data_out;\n };\n const nodectrl$ = controlflow$obj._stream;\n const output$obj = driveDataflowByCtrlflow(\n { _stream: nodectrl$ },\n input$objArr,\n undefined,\n { ...node_context, metastep: \"executing leafmixflow \" },\n {\n leaflogic: _defaultLambda,\n datalogic: { pre: preflowfunc },\n },\n );\n return output$obj;\n //return {...input$objArr[0], _control: controlflow$obj};\n }\n };\n },\n lambda:\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n // space for node type specific init prior to use\n // note the cross over in the roles of nodelambda and contextuallambda\n const reduced_lambda_obj = await etaReduceLambdaGraphs({\n refnode,\n nodelambda: contextuallambda,\n contextuallambda: nodelambda,\n etaTree: lambdactrl.gos.etaTree,\n });\n const lambda_lut = {};\n Object.entries(reduced_lambda_obj).map(([key, etafunc]) => {\n lambda_lut[key] = (input$Arr, controlflow$obj) => {\n // a dataflow-scoped func per key\n const output$obj = etafunc(input$Arr);\n return { ...output$obj, _control: controlflow$obj };\n };\n });\n return lambda_lut;\n },\n};\n//(inputargs={}) => {\n// const {\n// lambdactrl,\n// lambdadata\n// } = inputargs;\n// //{lambdactrl: {gos: {subsDirectory}, user: {label=''}}, lambdadata: {lambdaFunc=x=>x, graphContextual}}\n//\n// return (flowinput$) => {\n// // spark_dev_note: based on the user-define sync rule, the sync behavior is taken care of by its calling function parseLEAFNode()\n// if (lambdactrl.user.leaf.logic.args.syncrule || lambdadata.lambdaFunc) { // a non-empty rule or lambdaFunc argument\n// //const lambdalabels$ = lambdadata.lambdaFunc ? lambdadata.lambdaFunc(flowinput$) : of([lambdactrl.user.leaf.logic.args.label]);\n//\n// const flowoutput$ = flowinput$.pipe(\n// //withLatestFrom(lambdalabels$), // transforms input stream into tuples of [unitdata, _lambdalabel]\n// map((_data) => {\n// console.log(_data);\n// return _data;\n// }),\n// //filter(([unitdata, _lambdalabel]) => (unitdata.every(x=>(isBottle(x)||(isCrate(x) && x._crate.every(isBottle)))))), // filter out any non-bottle or non-crate data\n// filter(_entry => _entry) // filter out any null entries\n// );\n//\n// // debug\n// flowoutput$.pipe(\n// map((_entry) => {\n// console.log(_entry);\n// })\n// )\n//\n// return flowoutput$;\n// }\n// else { // no label to label anything with, just return input as output unchanged\n// return flowinput$;\n// }\n// };\n//};\n\nexport { _leafmixflow };\n","import { etaReduceLambdaGraphs } from \"../../eta.js\";\nimport { map, withLatestFrom, filter, share } from \"rxjs/operators\";\nimport { isBottle } from \"../../predicates.js\";\nimport { _leafstdlib_dataflow_api } from \"../../../metamodel.js\";\nimport { fetchMultiKeyedData } from \"../../../utils/fetchnodedata.js\";\nimport { Subject } from \"rxjs\";\n//import cloneDeep from 'lodash/cloneDeep';\nimport { driveDataflowByCtrlflow } from \"../../leaf.js\";\n\nconst apidef = _leafstdlib_dataflow_api(\"leafgateflow\");\n/*\n * _leafgateflow() is a runtime function for the LEAF node of logic type 'leafgateflow'.\n * it is used to decide the criteria for passing bottles through or not.\n * @lambdaFunc: is a function defined in the context of the calling LEAF graph. It accepts flowinput$ as\n * input and returns as output a stream carrying a string or a list of strings.\n * The output of which, if defined, is used preemptively in lieu of @label.\n * @graphContextual: n/a\n */\nconst _leafgateflow = {\n dataflow:\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n // space for node type specific init prior to use\n //const _leafnode = contextuallambda; // derivative leafnode\n //const _leafnode_logic = contextuallambda.uuid;\n\n // get the refnode w.r.t. the current leaf node\n //const refnode = refnodepath[0]; //leafgraph.graph.lambda.outNeighbors(contextuallambda[0])[0];\n //const refnode_logic = runtimeEtaTree.leafgraph.graph.dataflow.getNodeAttributes(refnode).leafnode.data.leaf.logic;\n //const contextual_lut = refnode ? parseLambdaLUT(contextuallambda, _refnode, _refnode_logic) : undefined;\n // get the refnode w.r.t. the contextuallambda nodes\n // check for parsing error conditions\n if (!contextuallambda) {\n throw (\n `LEAF error: the logical construct built using the ${refnodedata.leaf.logic.type} node ` +\n `(${refnode}) called with args (${JSON.stringify(refnodedata.leaf.logic.args)}).`\n );\n }\n //if (!('_default' in contextual_lut)) {\n // throw `LEAF error: the logical construct built using the ${_refnode_logic.type} node `+\n // `(${_refnode}) called with args (${JSON.stringify(_refnode_logic.args)}) has no `+\n // `default defined for its lambda, while being referenced by the leaflambdagraph node (${leafnode}). `+\n // 'A default lambda construct is required by the leaflambdagraph node.';\n //}\n\n // for the derivative nodelambda, look up the list of lambda leaf nodes connected to the defualt lambda entry node.\n // for the derivative contextuallambda, use current node's nodelambda.\n //const _nodelambda = leafgraph.edges.lambda.sourcelut[contextual_lut._default.uuid];\n\n //const thecorelogic = await etaReduceLambdaGraphs(contextual_lut._default.uuid, _nodelambda, _contextuallambda, leafgraph, graphcomponents);\n //const thecorelogic = await etaReduceLambdaGraphs({nodelambda: contextuallambda, contextuallambda: nodelambda});\n //const reduced_lambda_obj = await etaReduceLambdaGraphs({refnode, nodelambda: contextuallambda, contextuallambda: nodelambda, etaTree: lambdactrl.gos.etaTree});\n const reduced_lambda_obj = await etaReduceLambdaGraphs({\n refnode,\n nodelambda,\n contextuallambda,\n etaTree: lambdactrl.gos.etaTree,\n });\n\n const { args } = refnodedata.leaf.logic;\n const gatekey = fetchMultiKeyedData(apidef.editorconfig.namedatakey, args).toLowerCase();\n const toggledatakey = fetchMultiKeyedData(apidef.editorconfig.toggledatakey, args);\n\n const getGateTagLabelText = () => {\n const _candidates = Object.keys(reduced_lambda_obj).filter(\n (_key) => Object.keys(reduced_lambda_obj[_key]).length === 0,\n );\n return _candidates.length > 0 ? _candidates.sort().join(\";\") : undefined;\n };\n\n const _gate_tag = getGateTagLabelText();\n\n const node_context = {\n codebase: \"leafgateflow.js\",\n refnode,\n leafnode:\n lambdactrl.gos.etaTree.leafgraph.graph.dataflow.getNodeAttributes(refnode).leafnode.data,\n };\n\n return (input$objArr, controlflow$obj) => {\n //const flowinput$obj = combineDataflows(refnode, flowinput$Arr);\n //const flowinput$obj = combineDataflows(refnode, input$objArr, false, false, false, {provenance: \"leafgateflow.js\", refnode, etaTree: lambdactrl.gos.etaTree});// default to merging multiple streams\n const handleUnbottledData = (_unitdata, _isNOTgate) => {\n const querystrings = _unitdata\n ? Object.entries(_unitdata).map(\n (entry) =>\n entry[0] +\n \"=\" +\n (typeof entry[1] === \"object\" ? JSON.stringify(entry[1]) : entry[1]),\n )\n : [];\n if (_isNOTgate ? !querystrings.includes(gatekey) : querystrings.includes(gatekey))\n return _unitdata;\n // evaluate skip condition\n //if (_unitdata)\n // _unitdata._skip = true;\n //else\n // _unitdata = {_skip: true};\n //return _unitdata;\n return undefined;\n };\n\n const _nodeflowfunc = (_input$objArr, _controlflow$obj) => {\n console.log(\"start debugging\");\n const _outflow_data$ = new Subject(); //BehaviorSubject({...raceConditionError, _label: {...node_context}});\n\n const _outflow_ctrl$ = _controlflow$obj._stream.pipe(\n //switchMap(_ctrl_in=> {\n // //flowinterface.ctrl_in.next(_ctrl_in);\n // return combineLatest([of(_ctrl_in), ..._input$objArr.map(_=>_._stream)]);\n //}),\n withLatestFrom(..._input$objArr.map((_) => _._stream)),\n map((_combined_in) => {\n //const _next_data = _combined_in.slice(1).filter(_data=>_data!==undefined);\n\n //const unitdataArr = _next_data.length === 1 ? _next_data.flat() : _next_data;\n const _next_data = _combined_in[1];\n\n const do_gateflow = (unitdata) => {\n if (isBottle(unitdata)) {\n // toggledatakey === true for a NOT gate, toggledatakey === false for a normal gate\n if (\n (!toggledatakey && unitdata._bname?.toLowerCase() === gatekey) ||\n (toggledatakey && unitdata._bname?.toLowerCase() !== gatekey)\n )\n return unitdata;\n else {\n return undefined;\n }\n } else if (gatekey === \"{crate}\") {\n if (!toggledatakey && unitdata._cratelabel) {\n if (_gate_tag === \"uncrate\")\n return Object.keys(unitdata)\n .filter((_key) => _key !== \"_cratelabel\")\n .map((_key) => unitdata[_key])\n .flat();\n else return unitdata;\n } else if (toggledatakey && !unitdata._cratelabel) {\n return unitdata;\n }\n return undefined;\n } else {\n // else exclude the unitdata by returning EMPTY\n //return EMPTY; // returning this would stop any downstream rx.js stream flow\n //throw 'EMPTY';\n //unitdata._skip = true;\n //return unitdata;\n //console.log(unitdata);\n return handleUnbottledData(unitdata, toggledatakey);\n }\n };\n const is_array_input = Array.isArray(_next_data);\n const gateddata = is_array_input\n ? _next_data\n .map((_next_datum) => do_gateflow(_next_datum))\n .filter((_entry) => _entry !== undefined) // filter out any null entries\n : do_gateflow(_next_data);\n\n //let _ctrl_out = undefined;\n if (gateddata?.length > 0 || (!is_array_input && gateddata !== undefined)) {\n _outflow_data$.next(gateddata); // publish the next available post-processed data via the data flow subject channel\n return _combined_in[0]; // only pass the ctrl data in the flow;\n }\n //if (gateddata.length > 1) {\n // _outflow_data$.next(gateddata); // publish the next available post-processed data via the data flow subject channel\n // _ctrl_out = _combined_in[0]; // only pass the ctrl data in the flow;\n //}\n //else if (gateddata.length === 1) {\n // _outflow_data$.next(gateddata[0]); // publish the next available post-processed data via the data flow subject channel\n // _ctrl_out = _combined_in[0]; // only pass the ctrl data in the flow;\n //}\n //else {\n // console.log(\"LEAF log: leafgateflow _nodeflowfunc has a gating event in the data plane\", _combined_in);\n //}\n\n //return _ctrl_out;\n return undefined;\n }),\n filter((_) => _ !== undefined),\n share(),\n );\n return {\n _stream: _outflow_data$.pipe(\n map((_in) => {\n return _in;\n }),\n share(),\n ),\n _control: {\n ..._controlflow$obj,\n _stream: _outflow_ctrl$.pipe(\n map((_in) => {\n return _in;\n }),\n share(),\n ),\n },\n };\n };\n\n //const consolidated_input$objArr = [combineDataflows(refnode, input$objArr)];\n //const consolidated_input$objArr = [{_stream: chronosDataflow(controlflow$obj._stream, input$objArr.map(_$obj=>_$obj._stream), false, CHRONOSTYPE_SYNC, {time: 10000})}];\n const output$obj = driveDataflowByCtrlflow(\n controlflow$obj,\n input$objArr,\n undefined,\n {\n ...node_context,\n metastep: \"gateflow \" + (toggledatakey ? \"NOT gate, \" : \"normal gate, \") + gatekey,\n },\n {\n leaflogic: _nodeflowfunc,\n datalogic: {\n post: (_data_out) => {\n return _data_out;\n },\n },\n },\n );\n\n return output$obj;\n\n //if (flowinput$obj) {\n // //let isgateopen = false;\n // const gatedoutput$ = flowinput$obj._stream.pipe(\n // mergeMap(_unitdata => {\n // const unitdataArr = cloneDeep(Array.isArray(_unitdata) ? _unitdata : [_unitdata]);\n\n // if (toggledatakey) { // a NOT gate\n // return unitdataArr.map(\n // unitdata => {\n // if (isBottle(unitdata)) {\n // if (unitdata._bname.toLowerCase() !== gatekey)\n // return unitdata;\n // else {\n // if (unitdata)\n // unitdata._skip = true;\n // else\n // unitdata = {_skip: true};\n\n // return unitdata;\n // }\n // }\n // else {// else exclude the unitdata by returning EMPTY\n // //return EMPTY; // returning this would stop any downstream rx.js stream flow\n // //throw 'EMPTY';\n // //unitdata._skip = true;\n // //return unitdata;\n // //console.log(unitdata);\n // return handleUnbottledData(unitdata, toggledatakey);\n // }\n // }\n // ).filter(_entry => _entry); // filter out any null entries\n // }\n // else { // a normal gate\n // return unitdataArr.map(\n // unitdata => {\n // if (isBottle(unitdata)) {\n // if (unitdata._bname.toLowerCase() === gatekey)\n // return unitdata;\n // else {\n // if (unitdata)\n // unitdata._skip = true;\n // else\n // unitdata = {_skip: true};\n\n // return unitdata;\n // }\n // }\n // else {\n // //return EMPTY; // returning this would stop any downstream rx.js stream flow\n // //throw 'EMPTY';\n // //const querystrings = unitdata ? Object.entries(unitdata).map((entry)=>entry[0]+'='+(typeof entry[1] === 'object' ? JSON.stringify(entry[1]) : entry[1])) : [];\n // //if (querystrings.includes(gatekey))\n // // return unitdata;\n // //// evaluate skip condition\n // //if (unitdata)\n // // unitdata._skip = true;\n // //return unitdata;\n // return handleUnbottledData(unitdata, toggledatakey);\n // }\n // }\n // ).filter(_entry => _entry); // filter out any null entries\n // }\n // }),\n // skipWhile(unitdata => ('_skip' in unitdata)), // spark_dev_note: for stopping the LEAF dataflow in the current stream without killing off other dataflow streams as part of the whole subscription flow.\n // //catchError(error => EMPTY),\n // filter(_=>_)\n // );\n\n // return {_stream: gatedoutput$, _control: controlflow$obj};\n // //if (isgateopen)\n // // return {_stream: gatedoutput$, _control: controlflow$obj};\n // //else\n // // return {_stream: undefined, _control: undefined};\n //}\n // spark_dev_note: based on the user-define sync rule, the sync behavior is taken care of by its calling function parseLEAFNode()\n //if (refnodedata.leaf.logic.args.syncrule || 'syncrule' in reduced_lambda_obj) { // a non-empty rule or lambdaFunc argument\n // //const lambdalabels$ = lambdadata.lambdaFunc ? lambdadata.lambdaFunc(flowinput$) : of([lambdactrl.user.leaf.logic.args.label]);\n //\n // const flowoutput$ = flowinput$.pipe(\n // //withLatestFrom(lambdalabels$), // transforms input stream into tuples of [unitdata, _lambdalabel]\n // map((_data) => {\n // console.log(_data);\n // return _data;\n // }),\n // //filter(([unitdata, _lambdalabel]) => (unitdata.every(x=>(isBottle(x)||(isCrate(x) && x._crate.every(isBottle)))))), // filter out any non-bottle or non-crate data\n // filter(_entry => _entry) // filter out any null entries\n // );\n\n // // debug\n // flowoutput$.pipe(\n // map((_entry) => {\n // console.log(_entry);\n // })\n // )\n\n // return flowoutput$;\n //}\n //else { // no label to label anything with, just return input as output unchanged\n // return flowinput$;\n //}\n };\n },\n lambda:\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n // space for node type specific init prior to use\n // note the cross over in the roles of nodelambda and contextuallambda\n const reduced_lambda_obj = await etaReduceLambdaGraphs({\n refnode,\n nodelambda: contextuallambda,\n contextuallambda: nodelambda,\n etaTree: lambdactrl.gos.etaTree,\n });\n const lambda_lut = {};\n Object.entries(reduced_lambda_obj).map(([key, etafunc]) => {\n lambda_lut[key] = (input$Arr, controlflow$obj) => {\n // a dataflow-scoped func per key\n const output$obj = etafunc(input$Arr);\n return { ...output$obj, _control: controlflow$obj };\n };\n });\n return lambda_lut;\n },\n};\n//(inputargs={}) => {\n// const {\n// lambdactrl,\n// lambdadata\n// } = inputargs;\n// //{lambdactrl: {gos: {subsDirectory}, user: {label=''}}, lambdadata: {lambdaFunc=x=>x, graphContextual}}\n//\n// return (flowinput$) => {\n// // spark_dev_note: based on the user-define sync rule, the sync behavior is taken care of by its calling function parseLEAFNode()\n// if (lambdactrl.user.leaf.logic.args.gaterule || lambdadata.lambdaFunc) { // a non-empty rule or lambdaFunc argument\n// //const lambdalabels$ = lambdadata.lambdaFunc ? lambdadata.lambdaFunc(flowinput$) : of([lambdactrl.user.leaf.logic.args.label]);\n//\n// const flowoutput$ = flowinput$.pipe(\n// //withLatestFrom(lambdalabels$), // transforms input stream into tuples of [unitdata, _lambdalabel]\n// map((_data) => {\n// console.log(_data);\n// return _data;\n// }),\n// //filter(([unitdata, _lambdalabel]) => (unitdata.every(x=>(isBottle(x)||(isCrate(x) && x._crate.every(isBottle)))))), // filter out any non-bottle or non-crate data\n// filter(_entry => _entry) // filter out any null entries\n// );\n//\n// // debug\n// flowoutput$.pipe(\n// map((_entry) => {\n// console.log(_entry);\n// })\n// )\n//\n// return flowoutput$;\n// }\n// else { // no label to label anything with, just return input as output unchanged\n// return flowinput$;\n// }\n// };\n//};\n\nexport { _leafgateflow };\n","import { etaReduceLambdaGraphs } from \"../../eta.js\";\nimport { map, filter, share, switchMap } from \"rxjs/operators\";\nimport { BehaviorSubject, of, combineLatest } from \"rxjs\";\nimport { driveDataflowByCtrlflow, executeLEAFLogic } from \"../../leaf.js\";\nimport { doBottle } from \"./bottling.js\";\n\nconst raceConditionError = doBottle(\n \"error\",\n {\n type: \"critical\",\n message: \"LEAF core error: race condition detected in leaflabel.js\",\n codebase: \"/src/ghostos/api/parser/nodelogic/datautils/leaflabel.js\",\n },\n {},\n);\n/*\n * _leaflabel() is a runtime function for the LEAFgraph node of logic type 'leafdatalabel'.\n * it is used to label a bottle, a list of bottles or a crate of bottles being passed to the leaf node\n * via its incoming data flow.\n * @label: a string label\n * @lambdaFunc: is a function defined in the context of the calling LEAF graph. It accepts flowinput$ as\n * input and returns as output a stream carrying a string or a list of strings.\n * The output of which, if defined, is used preemptively in lieu of @label.\n * @graphContextual: n/a\n */\n//const _leafdataLabel = ({label=''}={}, lambdaFunc=undefined, graphContextual) => {}\nconst _leaflabel = {\n dataflow:\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n // space for node type specific init prior to use\n //const _leafnode = contextuallambda; // derivative leafnode\n //const _leafnode_logic = contextuallambda.uuid;\n\n // get the refnode w.r.t. the current leaf node\n //const refnode = refnodepath[0]; //leafgraph.graph.lambda.outNeighbors(contextuallambda[0])[0];\n //const refnode_logic = runtimeEtaTree.leafgraph.graph.dataflow.getNodeAttributes(refnode).leafnode.data.leaf.logic;\n //const contextual_lut = refnode ? parseLambdaLUT(contextuallambda, _refnode, _refnode_logic) : undefined;\n // get the refnode w.r.t. the contextuallambda nodes\n // check for parsing error conditions\n if (!contextuallambda) {\n throw (\n `LEAF error: the logical construct built using the ${refnodedata.leaf.logic.type} node ` +\n `(${refnode}) called with args (${JSON.stringify(refnodedata.leaf.logic.args)}).`\n );\n }\n //if (!('_default' in contextual_lut)) {\n // throw `LEAF error: the logical construct built using the ${_refnode_logic.type} node `+\n // `(${_refnode}) called with args (${JSON.stringify(_refnode_logic.args)}) has no `+\n // `default defined for its lambda, while being referenced by the leaflambdagraph node (${leafnode}). `+\n // 'A default lambda construct is required by the leaflambdagraph node.';\n //}\n\n // for the derivative nodelambda, look up the list of lambda leaf nodes connected to the defualt lambda entry node.\n // for the derivative contextuallambda, use current node's nodelambda.\n //const _nodelambda = leafgraph.edges.lambda.sourcelut[contextual_lut._default.uuid];\n\n //const thecorelogic = await etaReduceLambdaGraphs(contextual_lut._default.uuid, _nodelambda, _contextuallambda, leafgraph, graphcomponents);\n //const thecorelogic = await etaReduceLambdaGraphs({nodelambda: contextuallambda, contextuallambda: nodelambda});\n const reduced_lambda_obj = await etaReduceLambdaGraphs({\n refnode,\n nodelambda: contextuallambda,\n contextuallambda: nodelambda,\n etaTree: lambdactrl.gos.etaTree,\n });\n\n //const checkDataflowType = enforceBooleanResults('in the leafdatalabel lambda');\n\n const handleSpecialLabelLogic = async (lut, labelstr = \"\") => {\n const backslash_re = /^\\\\(.*)$/;\n const queryparam_re = /^\\?([A-Za-z0-9-]*)$/;\n //const queryparam_re = /[(\\?|\\&)]([^=]+)\\=([^&#]+)/g;\n let re_match = labelstr.match(backslash_re); // parse the labelstr for backslash\n if (re_match) {\n //const outputsubject$ = ReplaySubject().pipe(take(1));\n const lut_name = re_match[1]; // TBD: i haven't tested this yet. try it on LEAFlisp\n if (lut_name in lut) {\n const _result = await executeLEAFLogic(lut(lut_name)._default, refnode);\n //.then((_result) => {\n // // logic resolved do something with the result\n // outputsubject$.next(_result);\n //})\n return _result;\n }\n return \"\";\n //return outputsubject$;\n }\n\n re_match = labelstr.match(queryparam_re); // parse the labelstr for backslash\n if (re_match) {\n //const outputsubject$ = ReplaySubject().pipe(take(1));\n const queryparam_name = re_match[1]; // TBD: i haven't tested this yet. try it on LEAFlisp\n\n // https://stackoverflow.com/questions/67749629/how-do-i-get-url-params-with-a-question-mark-in-react-js\n const qparams = window.location.search;\n //const params = qparams.length > 0 ? qparams.split(\"=\") : []; // spark_dev_note: qparams parsing here only supports a single param atm. fix it. (refactored to support multiple query string variables (6/Sept/2022)\n const params = new Proxy(new URLSearchParams(qparams), {\n get: (searchParams, prop) => searchParams.get(prop),\n }); // https://stackoverflow.com/questions/901115/how-can-i-get-query-string-values-in-javascript\n //const zip = (a, b) => a.map((k, i) => [k, b[i]]);\n //const keyvallistpair = params.reduce((obj, cur, idx) => {obj[idx % 2].push(cur); return obj;}, [[], []]);\n //const keyvallistpair2 = params.length > 0 ? [keyvallistpair[0].map(x=>x.slice(1)), keyvallistpair[1]] : [];\n //const qparam_dict = params.length > 0 ? Object.fromEntries(zip(...keyvallistpair2)) : {};\n const qparam_dict = {};\n if (params[queryparam_name]) qparam_dict[queryparam_name] = params[queryparam_name];\n //return outputsubject$;\n console.log(qparam_dict);\n\n //return qparam_dict[queryparam_name];\n return queryparam_name in qparam_dict ? qparam_dict : undefined; // return value only\n }\n\n // otherwise\n //return of([labelstr]);\n return labelstr;\n };\n\n const node_context = {\n codebase: \"leaflabel.js\",\n refnode,\n leafnode:\n lambdactrl.gos.etaTree.leafgraph.graph.dataflow.getNodeAttributes(refnode).leafnode.data,\n };\n\n return (input$objArr, controlflow$obj) => {\n const setupLabelDataplane = (_input$objArr) => {\n if (refnode === \"8b5b7162-5a06-40da-ba43-5c404986aa36\") {\n console.log(\"start debugging\");\n }\n const hasExplicitDataIn =\n lambdactrl.gos.etaTree.leafgraph.edges.data.targets.has(refnode); // explicit data in is the one connected in by user\n if (!hasExplicitDataIn) {\n // label being used as a simple constant string value\n if (refnodedata.leaf.logic.args.labelstr) {\n const labelPromise = handleSpecialLabelLogic(\n reduced_lambda_obj,\n refnodedata.leaf.logic.args.labelstr,\n );\n //const label$ = new ReplaySubject(1);\n //labelPromise.then((labelstr) => {\n // label$.next(labelstr);\n //});\n return [Promise.resolve(labelPromise)]; //, ..._input$objArr.map(_$obj=>_$obj._stream);\n } else {\n // no label to label anything with, just return input as output unchanged\n return _input$objArr.map((_$obj) => _$obj._stream);\n }\n } else {\n if (refnodedata.leaf.logic.args.labelstr) {\n // a non-empty label with data input greater than 0\n // label dataplane data flowing through this point with labelstr\n console.error(\"debug\");\n // To Be Implemented..\n return _input$objArr.map((_$obj) => _$obj._stream);\n } else {\n // no label to label anything with, just return input as output unchanged\n return _input$objArr.map((_$obj) => _$obj._stream);\n }\n }\n //else if (refnodedata.leaf.logic.args.labelstr || 'label' in reduced_lambda_obj) { // a non-empty label or lambdaFunc argument\n // console.error(\"debug\")\n // // To Be Implemented..\n // return _input$objArr.map(_$obj=>_$obj._stream);\n // //const lambdalabels$obj = reduced_lambda_obj.label ? reduced_lambda_obj.label(flowinput$Arr) : {_stream: of([refnodedata.leaf.logic.args.labelstr])};\n // //const output$ = handleSpecialLabelLogic(reduced_lambda_obj, refnodedata.leaf.logic.args.labelstr);\n //\n // //// labelling the stream\n // //const flowinput$obj = mergeDataflows(_input$objArr);\n // //flowinput$obj[refnodedata.leaf.logic.args.labelstr] = 1;\n // //return flowinput$obj.map(_$obj=> _$obj._stream);\n\n //}\n //else if (refnodedata.leaf.logic.args.labelstr && ) { // a non-empty label with data input greater than 0\n // // label dataplane data flowing through this point with labelstr\n // console.error(\"debug\")\n // // To Be Implemented..\n // return _input$objArr.map(_$obj=>_$obj._stream);\n //}\n //else { // no label to label anything with, just return input as output unchanged\n // return _input$objArr.map(_$obj=>_$obj._stream);\n //}\n };\n\n const _nodeflowfunc = (_input$objArr, _controlflow$obj) => {\n const _outflow_data$ = new BehaviorSubject({\n ...raceConditionError,\n _label: { ...node_context },\n });\n //ReplaySubject\n //const _outflow_data$ = new Subject(); //({...raceConditionError, _label: {...node_context}});\n const _dataplane = setupLabelDataplane(_input$objArr);\n\n console.log(input$objArr);\n //if (refnode === \"8b5b7162-5a06-40da-ba43-5c404986aa36\")\n //{\n // _input$objArr[0]._stream.subscribe({\n // next: _dat => {\n // console.log(_dat);\n // }\n // })\n //}\n const _outflow_ctrl$ =\n _input$objArr.length > 0\n ? _controlflow$obj._stream.pipe(\n switchMap((_ctrl_in) => {\n //flowinterface.ctrl_in.next(_ctrl_in);\n //return combineLatest([of(_ctrl_in), ..._input$objArr.map(_=>_._stream)]);\n console.log(_dataplane);\n return combineLatest([of(_ctrl_in), ..._dataplane]);\n }),\n //map(_ctrl_in=>{\n // console.log(_dataplane)\n // return _ctrl_in;\n //}),\n ////withLatestFrom(..._dataplane),\n //withLatestFrom(_dataplane[0]),\n map((_combined_in) => {\n console.log(_combined_in.slice(1));\n if (_combined_in.length == 2) _outflow_data$.next(_combined_in[1]);\n else _outflow_data$.next(_combined_in.slice(1));\n return _combined_in[0];\n }),\n filter((_) => _),\n share(),\n )\n : _controlflow$obj._stream;\n\n return {\n _stream: _outflow_data$,\n _control: { ..._controlflow$obj, _stream: _outflow_ctrl$ },\n };\n };\n\n //if (_input$objArr.length === 0) { // label being used as a simple constant string value\n // //const outputsubject$ = (new ReplaySubject(1)).pipe(take(1));\n // const outputsubject$ = new ReplaySubject(1);\n // if (refnodedata.leaf.logic.args.labelstr) {\n // const labelPromise = handleSpecialLabelLogic(reduced_lambda_obj, refnodedata.leaf.logic.args.labelstr);\n // Promise.resolve(labelPromise).then((labelstr) => {\n // outputsubject$.next(labelstr);\n // });\n // return {_stream: outputsubject$, _control: _controlflow$obj};\n // }\n // else { // no label to label anything with, just return input as output unchanged\n // return {...mergeDataflows(flowinput$Arr), _control: _controlflow$obj};\n // }\n //}\n //else if (refnodedata.leaf.logic.args.labelstr || 'label' in reduced_lambda_obj) { // a non-empty label or lambdaFunc argument\n // //const lambdalabels$obj = reduced_lambda_obj.label ? reduced_lambda_obj.label(flowinput$Arr) : {_stream: of([refnodedata.leaf.logic.args.labelstr])};\n // const output$ = handleSpecialLabelLogic(reduced_lambda_obj, refnodedata.leaf.logic.args.labelstr);\n //\n // // labelling the stream\n // const flowinput$obj = mergeDataflows(flowinput$Arr);\n // flowinput$obj[refnodedata.leaf.logic.args.labelstr] = 1;\n // return {...flowinput$obj, _control: controlflow$obj};\n\n // //{ // labelling bottles\n // // const flowoutput$ = flowinput$.pipe(\n // // withLatestFrom(lambdalabels$), // transforms input stream into tuples of [unitdata, _lambdalabel]\n // // // process data labelling\n // // map((_data) => {\n // // console.log(_data);\n // // return _data;\n // // }),\n // // filter(([unitdata, _lambdalabel]) => (unitdata.every(x=>(isBottle(x)||(isCrate(x) && x._crate.every(isBottle)))))), // filter out any non-bottle or non-crate data\n // // map(([unitdata, _lambdalabel] = []) => {\n // // // spark_dev_note:\n // // // unitdata and _lambdalabel are expected to be arrays. the calling function,\n // // // parseLEAFNode (leaf.js) ensures unitdata to be an array, while the above call to of([label])\n // // // makes _lambdalabel to be an array of a single string label.\n // // // lambdaFunc may return an array of a single string or multiple strings. In the latter case,\n // // // its array length should be equal to that of the array of unitdata.\n\n // // // sanity check\n // // // unitdata.length === _lambdalabel.length or _lambdalabel.length === 1\n // // const preprocessed_data = (_lambdalabel.length === 1) ? // if\n // // unitdata.map(_entry => [_entry, _lambdalabel[0]]) : // then\n // // ((unitdata.length === _lambdalabel.length) ? // else if\n // // unitdata.map((_entry, _idx) => [_entry, _lambdalabel[_idx]]) : // then\n // // []); // else\n\n // // //const preprocessed_data = unitdata.map((x, i) => [x, isincluded[i]]); // preprocessed_data is a list tuples [_dataentry, _isincluded]\n // // // used reduce instead of map so non-bottle data can be skipped\n // // const processed = preprocessed_data.reduce((_result, [_dataentry, _label] = []) => {\n // // if (isBottle(_dataentry))\n // // _result.push(addLabel(_label, _dataentry));\n // // else if (isCrate(_dataentry))\n // // _result.push({..._dataentry, _crate: _dataentry._crate.map(_bottle=>addLabel(_label, _bottle))});\n // // return _result;\n // // },[]);\n // // if (processed.length > 0)\n // // return processed;\n // // }),\n // // filter(_entry => _entry) // filter out any null entries\n // // );\n\n // // // debug\n // // flowoutput$.pipe(\n // // map((_entry) => {\n // // console.log(_entry);\n // // })\n // // )\n\n // // return flowoutput$;\n\n // //}\n //}\n //else { // no label to label anything with, just return input as output unchanged\n // return {...mergeDataflows(flowinput$Arr), _control: controlflow$obj};\n //}\n\n const output$obj = driveDataflowByCtrlflow(\n controlflow$obj,\n input$objArr,\n undefined,\n { ...node_context, metastep: \"leaflabel \" + refnode },\n { leaflogic: _nodeflowfunc, datalogic: {} },\n );\n\n return output$obj;\n };\n },\n lambda:\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n // space for node type specific init prior to use\n const lambda_lut = {};\n if (nodelambda.length > 0) {\n const reduced_lambda_obj = await etaReduceLambdaGraphs({\n refnode,\n nodelambda,\n contextuallambda,\n etaTree: lambdactrl.gos.etaTree,\n });\n lambda_lut[refnodedata.leaf.logic.args.labelstr] = { ...reduced_lambda_obj }; // label the eta reduced obj\n } else {\n lambda_lut[refnodedata.leaf.logic.args.labelstr] = {}; // label an empty object\n }\n return lambda_lut;\n },\n methods:\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n // space for node type specific init prior to use\n let reduced_lambda_obj;\n if (nodelambda.length > 0) {\n const reduced_defaultlambda_obj = await etaReduceLambdaGraphs({\n refnode,\n nodelambda,\n contextuallambda,\n etaTree: lambdactrl.gos.etaTree,\n });\n reduced_lambda_obj = { ...reduced_defaultlambda_obj }; // label the eta reduced obj\n } else {\n reduced_lambda_obj = {}; // label an empty object\n }\n return reduced_lambda_obj;\n },\n};\n\nexport { _leaflabel };\n","import { etaReduceLambdaGraphs } from \"../../eta.js\";\nimport { map, withLatestFrom, filter } from \"rxjs/operators\";\nimport { isBottle, isCrate } from \"../../predicates.js\";\nimport { of } from \"rxjs\";\nimport { mergeDataflows } from \"../../../utils/leafdataflow.js\";\n\n/*\n * _leafdelabel() is a runtime function for the LEAFgraph node of logic type 'leafdatadelabel'.\n * it is used to delabel any json data being passed to the leaf node via its incoming data flow.\n * @label: a string label to delabel\n * @lambdaFunc: is a function defined in the context of the calling LEAF graph. It accepts flowinput$ as\n * input and returns as output a stream carrying a string or a list of strings.\n * The output of which, if defined, is used preemptively in lieu of @label.\n * The node would return any bottle with a matching label after delabelling it.\n * @graphContextual: n/a\n */\n//const _leafdataDelabel = ({label=''}={}, lambdaFunc=undefined, graphContextual) => {}\nconst _leafdelabel = {\n dataflow:\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n // space for node type specific init prior to use\n // check for parsing error conditions\n if (!contextuallambda) {\n throw (\n `LEAF error: the logical construct built using the ${refnodedata.leaf.logic.type} node ` +\n `(${refnode}) called with args (${JSON.stringify(refnodedata.leaf.logic.args)}).`\n );\n }\n const reduced_lambda_obj = await etaReduceLambdaGraphs({\n refnode,\n nodelambda: contextuallambda,\n contextuallambda: nodelambda,\n etaTree: lambdactrl.gos.etaTree,\n });\n\n const removeLabel = (_label, _bottle) => {\n if (_label in _bottle._label) _bottle._label[_label] -= 1;\n if (_bottle._label[_label] === 0) delete _bottle._label[_label]; // runtime leafdata garbage collection :) pun intended of course...\n return _bottle;\n };\n\n //const checkDataflowType = enforceBooleanResults('in the leafdatadelabel lambda');\n return (flowinput$Arr, controlflow$obj) => {\n if (refnodedata.leaf.logic.args.label || \"label\" in reduced_lambda_obj) {\n // a non-empty label or lambdaFunc argument\n const lambdalabels$obj = reduced_lambda_obj.label\n ? reduced_lambda_obj.label(flowinput$Arr)\n : { _stream: of([refnodedata.leaf.logic.args.label]) };\n const flowinput$obj = mergeDataflows(flowinput$Arr);\n\n const flowoutput$ = flowinput$obj._stream.pipe(\n withLatestFrom(lambdalabels$obj._stream), // transforms input stream into tuples of [unitdata, _lambdalabel]\n // process data labelling\n map((_data) => {\n console.log(_data);\n return _data;\n }),\n filter(([unitdata, _lambdalabel]) =>\n unitdata.every((x) => isBottle(x) || (isCrate(x) && x._crate.every(isBottle))),\n ), // filter out any non-bottle or non-crate data\n map(([unitdata, _lambdalabel] = []) => {\n // both unitdata and _lambdalabel are arrays\n\n // sanity check\n // unitdata.length === _lambdalabel.length or _lambdalabel.length === 1\n const preprocessed_data =\n _lambdalabel.length === 1 // if\n ? unitdata.map((_entry) => [_entry, _lambdalabel[0]]) // then\n : unitdata.length === _lambdalabel.length // else if\n ? unitdata.map((_entry, _idx) => [_entry, _lambdalabel[_idx]]) // then\n : []; // else\n\n //const preprocessed_data = unitdata.map((x, i) => [x, isincluded[i]]); // preprocessed_data is a list tuples [_dataentry, _isincluded]\n // used reduce instead of map so non-bottle data can be skipped\n const copyBottle = (_bottle) => {\n return { ..._bottle, _label: { ..._bottle._label } };\n };\n const processed = preprocessed_data.reduce((_result, [_dataentry, _label] = []) => {\n if (isBottle(_dataentry)) _result.push(removeLabel(_label, copyBottle(_dataentry)));\n else if (isCrate(_dataentry))\n _result.push({\n ..._dataentry,\n _crate: _dataentry._crate.map((_bottle) =>\n removeLabel(_label, copyBottle(_bottle)),\n ),\n });\n return _result;\n }, []);\n if (processed.length > 0) return processed;\n }),\n filter((_entry) => _entry), // filter out any null entries\n );\n\n return { _stream: flowoutput$, _control: controlflow$obj };\n }\n // no label to delabel anything with, do NOT return anything\n const errorLocationStr = \"at _leafdataDelabel()\";\n throw \"LEAF Error: flow data cannot be labelled without a label, \" + errorLocationStr;\n };\n },\n lambda:\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n // space for node type specific init prior to use\n const reduced_lambda_obj = await etaReduceLambdaGraphs({\n refnode,\n nodelambda,\n contextuallambda,\n etaTree: lambdactrl.gos.etaTree,\n });\n const labelstr = refnodedata.leaf.logic.args.labelstr;\n if (reduced_lambda_obj && labelstr in reduced_lambda_obj)\n return { ...reduced_lambda_obj[labelstr] };\n else return {};\n },\n};\n//(inputargs={}) => {\n// const {\n// lambdactrl,\n// lambdadata\n// } = inputargs;\n// //{lambdactrl: {gos: {subsDirectory}, user: {label=''}}, lambdadata: {lambdaFunc=x=>x, graphContextual}}\n// const removeLabel = (_label, _bottle) => {\n// if (_label in _bottle._label)\n// _bottle._label[_label] -= 1;\n// if (_bottle._label[_label] === 0)\n// delete _bottle._label[_label]; // runtime leafdata garbage collection :) pun intended of course...\n// return _bottle;\n// };\n//\n// //const checkDataflowType = enforceBooleanResults('in the leafdatadelabel lambda');\n// return (flowinput$) => {\n// if (lambdactrl.user.leaf.logic.args.label || lambdactrl.lambdaFunc) { // a non-empty label or lambdaFunc argument\n// const lambdalabels$ = lambdactrl.lambdaFunc ? lambdactrl.lambdaFunc(flowinput$) : of([lambdactrl.user.leaf.logic.args.label]);\n//\n// const flowoutput$ = flowinput$.pipe(\n// withLatestFrom(lambdalabels$), // transforms input stream into tuples of [unitdata, _lambdalabel]\n// // process data labelling\n// map((_data) => {\n// console.log(_data);\n// return _data;\n// }),\n// filter(([unitdata, _lambdalabel]) => (unitdata.every(x=>(isBottle(x)||(isCrate(x) && x._crate.every(isBottle)))))), // filter out any non-bottle or non-crate data\n// map(([unitdata, _lambdalabel] = []) => { // both unitdata and _lambdalabel are arrays\n//\n// // sanity check\n// // unitdata.length === _lambdalabel.length or _lambdalabel.length === 1\n// const preprocessed_data = (_lambdalabel.length === 1) ? // if\n// unitdata.map(_entry => [_entry, _lambdalabel[0]]) : // then\n// ((unitdata.length === _lambdalabel.length) ? // else if\n// unitdata.map((_entry, _idx) => [_entry, _lambdalabel[_idx]]) : // then\n// []); // else\n//\n// //const preprocessed_data = unitdata.map((x, i) => [x, isincluded[i]]); // preprocessed_data is a list tuples [_dataentry, _isincluded]\n// // used reduce instead of map so non-bottle data can be skipped\n// const copyBottle = (_bottle) => {return {..._bottle, _label: {..._bottle._label}}};\n// const processed = preprocessed_data.reduce((_result, [_dataentry, _label] = []) => {\n// if (isBottle(_dataentry))\n// _result.push(removeLabel(_label, copyBottle(_dataentry)));\n// else if (isCrate(_dataentry))\n// _result.push({..._dataentry, _crate: _dataentry._crate.map(_bottle=>removeLabel(_label, copyBottle(_bottle)))});\n// return _result;\n// },[]);\n// if (processed.length > 0)\n// return processed;\n// }),\n// filter(_entry => _entry) // filter out any null entries\n// );\n//\n// return flowoutput$;\n// }\n// // no label to delabel anything with, do NOT return anything\n// const errorLocationStr = 'at _leafdataDelabel()';\n// throw 'LEAF Error: flow data cannot be labelled without a label, ' + errorLocationStr;\n// };\n//};\n\nexport { _leafdelabel };\n","import { etaReduceLambdaGraphs } from \"../../eta.js\";\nimport { map, concatMap } from \"rxjs/operators\";\nimport { of } from \"rxjs\";\nimport { combineDataflows } from \"../../../utils/leafdataflow.js\";\nimport { driveDataflowByCtrlflow } from \"../../leaf.js\";\nimport { doBottle } from \"./bottling.js\";\n\n/*\n * _leafbottle() is a runtime function for the LEAFgraph node of logic type 'leafdatabottle'.\n * it is used to bottle any data being passed to the leaf node via its incoming data flow.\n * @bottlekey: a string reference to be used for the new bottle\n * @lambdaFunc: is a function defined in the context of the calling LEAF graph. It accepts flowinput$ as\n * input and returns as output a stream carrying a string or a list of strings.\n * The output of which, if defined, is used preemptively in lieu of @bottlekey.\n * The node would return bottle(s) after bottling them.\n * @graphContextual: n/a\n */\n//const _leafdataBottle = ({bottlekey=''}={}, lambdaFunc=undefined, graphContextual) => {}\nconst _leafbottle = {\n dataflow:\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n // space for node type specific init prior to use\n // check for parsing error conditions\n if (!contextuallambda) {\n throw (\n `LEAF error: the logical construct built using the ${refnodedata.leaf.logic.type} node ` +\n `(${refnode}) called with args (${JSON.stringify(refnodedata.leaf.logic.args)}).`\n );\n }\n const reduced_lambda_obj = await etaReduceLambdaGraphs({\n refnode,\n nodelambda,\n contextuallambda,\n etaTree: lambdactrl.gos.etaTree,\n });\n\n const getBottleTagLabelText = () => {\n const _candidates = Object.keys(reduced_lambda_obj).filter(\n (_key) => Object.keys(reduced_lambda_obj[_key]).length === 0,\n );\n return _candidates.length > 0 ? _candidates.sort().join(\";\") : undefined;\n };\n\n const _tag_text = getBottleTagLabelText();\n\n //const checkDataflowType = enforceBooleanResults('in the leafdatadelabel lambda');\n const node_context = {\n codebase: \"leafbottle.js\",\n refnode,\n leafnode:\n refnode &&\n lambdactrl.gos.etaTree.leafgraph.graph.dataflow.getNodeAttributes(refnode).leafnode.data,\n };\n\n return (input$objArr, controlflow$obj) => {\n let ctrl_in_cache = undefined;\n let bottle_name = undefined;\n\n const lambdakey$obj = reduced_lambda_obj.name\n ? reduced_lambda_obj.name._default(input$objArr, controlflow$obj)\n : { _stream: of(refnodedata.leaf.logic.args.bottlekey), _control: controlflow$obj }; // initialize lambdakey$ data flow\n\n const bottlefunc = (_data_in) => {\n const _data_out =\n _tag_text === undefined\n ? doBottle(bottle_name, _data_in)\n : doBottle(bottle_name, _data_in, { tag: _tag_text }); // (isBottle(_data_in) && bottle_name.includes(_data_in._bname)) ? _data_in._content : undefined; // exitDataBus({_bus: _data_in});\n return _data_out;\n };\n\n const nodectrl$ = controlflow$obj._stream.pipe(\n concatMap((_ctrl_in) => {\n ctrl_in_cache = _ctrl_in;\n return lambdakey$obj._stream;\n }),\n map((_lambdakey) => {\n bottle_name = _lambdakey;\n return ctrl_in_cache;\n }),\n );\n\n //const consolidated_input$objArr = [combineDataflows(refnode, input$objArr)];\n //const consolidated_input$objArr = [{_stream: chronosDataflow(controlflow$obj._stream, input$objArr.map(_$obj=>_$obj._stream), false, CHRONOSTYPE_SYNC, {time: 10000})}];\n const output$obj = driveDataflowByCtrlflow(\n { _stream: nodectrl$ },\n input$objArr,\n undefined,\n { ...node_context, metastep: \"executing bottle with key \" + bottle_name },\n { datalogic: { pre: bottlefunc } },\n );\n\n return output$obj;\n\n ////const flowinput$obj = combineDataflows(refnode, flowinput$Arr);\n //const flowinput$obj = combineDataflows(refnode, flowinput$Arr, false, false, false, {provenance: \"leafbottle.js\", refnode, etaTree: lambdactrl.gos.etaTree});// default to merging multiple streams\n //if (flowinput$obj) {\n // if (refnodedata.leaf.logic.args.bottlekey || 'bottlekey' in reduced_lambda_obj) { // a non-empty label or lambdaFunc argument\n // const lambdakey$obj = reduced_lambda_obj.label ? reduced_lambda_obj.label(flowinput$Arr) : {_stream: of([refnodedata.leaf.logic.args.bottlekey])};\n //\n // const flowoutput$ = flowinput$obj._stream.pipe(\n // withLatestFrom(lambdakey$obj._stream), // transforms input stream into tuples of [unitdata, _lambdakey]\n // // process data labelling\n // map((_data) => { // a window for debugging\n // console.log(_data);\n // return _data;\n // }),\n // //filter(([unitdata, _lambdakey]) => (unitdata.every(x=>(isBottle(x)||(isCrate(x) && x._crate.every(isBottle)))))), // filter out any non-bottle or non-crate data\n // map(([unitdata, _lambdakey] = []) => { // both unitdata and _lambdakey are arrays\n\n // // sanity check\n // // unitdata.length === _lambdakey.length or _lambdakey.length === 1\n // //unitdata.map(_entry => [_entry, _lambdakey[0]]) : // then\n // const preprocessed_data = (_lambdakey.length > 0 && (unitdata.length !== _lambdakey.length || unitdata.length === 1)) ?\n // [[unitdata, _lambdakey[0]]] :\n // ((_lambdakey.length > 0 && unitdata.length === _lambdakey.length) ? // else if\n // unitdata.map((_entry, _idx) => [_entry, _lambdakey[_idx]]) : // then\n // []); // else then\n\n // //const preprocessed_data = unitdata.map((x, i) => [x, isincluded[i]]); // preprocessed_data is a list of tuples [_dataentry, _lambdakey]\n // // used reduce instead of map so non-bottle data can be skipped\n // //const copyBottle = (_bottle) => {return {..._bottle, _label: {..._bottle._label}}};\n // const processed = preprocessed_data.reduce((_result, [_dataentry, _key] = []) => {\n // //if (isBottle(_dataentry))\n // // _result.push(removeLabel(_label, copyBottle(_dataentry)));\n // //else if (isCrate(_dataentry))\n // // _result.push({..._dataentry, _crate: _dataentry._crate.map(_bottle=>removeLabel(_label, copyBottle(_bottle)))});\n // _result.push(doBottle(_key, _dataentry)); // bottle data up\n // return _result;\n // },[]); // _result initialized to [], prior to reduce()\n // if (processed.length === 1)\n // return processed[0];\n // else if (processed.length > 1)\n // return processed;\n // })\n // );\n\n // return {_stream: flowoutput$.pipe(filter(_entry=>_entry)), _control: controlflow$obj}; // filter out any null entries in the result array\n // }\n // // no name to bottle anything with, do NOT return anything\n // const errorLocationStr = 'at _leafdataBottle()';\n // console.error('LEAF Error: flow data cannot be bottled without a bottlekey, ' + errorLocationStr);\n // return undefined; // TBD: ponder about whether it is necessary to at least return the controlflow$obj pass thru here\n //}\n //else {\n // //return undefined; // nothing to bottle in the empty input flow.\n // const errorLocationStr = 'at _leafdataBottle()';\n // console.error('LEAF Error: bottling cannot be done without any input data stream , ' + errorLocationStr);\n // return undefined; // TBD: ponder about whether controlflow$obj should be passed thru here.\n //}\n };\n },\n lambda:\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n // space for node type specific init prior to use\n // note the cross over in the roles of nodelambda and contextuallambda\n const reduced_lambda_obj = await etaReduceLambdaGraphs({\n refnode,\n nodelambda: contextuallambda,\n contextuallambda: nodelambda,\n etaTree: lambdactrl.gos.etaTree,\n });\n const lambda_lut = {};\n Object.entries(reduced_lambda_obj).map(([key, etafunc]) => {\n lambda_lut[key] = (input$Arr, controlflow$obj) => {\n // a dataflow-scoped func per key\n const input$obj = combineDataflows(refnode, input$Arr);\n const output$obj = etafunc([input$obj], controlflow$obj);\n return { ...output$obj, _control: controlflow$obj };\n };\n });\n return lambda_lut;\n },\n};\n\nexport { _leafbottle, doBottle };\n","import { etaReduceLambdaGraphs } from \"../../eta.js\";\nimport { map, withLatestFrom, filter, share } from \"rxjs/operators\";\nimport { isBottle } from \"../../predicates.js\";\nimport { of, Subject } from \"rxjs\";\nimport { driveDataflowByCtrlflow } from \"../../leaf.js\";\nimport { doUnbottle } from \"./bottling.js\";\n//import { memoize } from 'lodash';\n\n/*\n * _leafunbottle() is a runtime function for the LEAFgraph node of logic type 'leafdataunbottle'.\n * it is used to unbottle any bottles either by themselves or in crates being passed to the leaf node\n * via the incoming data flow.\n * @bottlekey: a string reference (_bname) of the bottle to be unbottled\n * @lambdaFunc: is a function defined in the context of the calling LEAF graph. It accepts flowinput$ as\n * input and returns as output a stream carrying a string or a list of strings.\n * The output of which, if defined, is used preemptively in lieu of @bottlekey.\n * The node would return the content of bottles with matching _bname after unbottling them.\n * If multiple bottles are unbottled, a list carrying their contents is returned.\n * If multiple bottlekeys are given, all bottles with their _cname matching one of the bottlekeys\n * are unbottled.\n * @graphContextual: n/a\n */\n//const _leafdataUnbottle = ({bottlekey=''}={}, lambdaFunc=undefined, graphContextual) => {}\nconst _leafunbottle = {\n dataflow:\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n // space for node type specific init prior to use\n // check for parsing error conditions\n if (!contextuallambda) {\n throw (\n `LEAF error: the logical construct built using the ${refnodedata.leaf.logic.type} node ` +\n `(${refnode}) called with args (${JSON.stringify(refnodedata.leaf.logic.args)}).`\n );\n }\n const reduced_lambda_obj = await etaReduceLambdaGraphs({\n refnode,\n nodelambda,\n contextuallambda,\n etaTree: lambdactrl.gos.etaTree,\n });\n\n const node_context = {\n codebase: \"leafunbottle.js\",\n refnode,\n leafnode:\n refnode &&\n lambdactrl.gos.etaTree.leafgraph.graph.dataflow.getNodeAttributes(refnode).leafnode.data,\n };\n\n //const node_etafunc_resolver = (input$objArr, controlflow$obj) => JSON.stringify(refnode);\n\n return (input$objArr, controlflow$obj) => {\n //const flowinput$obj = mergeDataflows(flowinput$Arr);\n if (refnodedata.leaf.logic.args.bottlekey || \"bottlekey\" in reduced_lambda_obj) {\n // a non-empty label or lambdaFunc argument\n const lambdakey$obj = reduced_lambda_obj.label\n ? reduced_lambda_obj.label._default(input$objArr, controlflow$obj)\n : { _stream: of([refnodedata.leaf.logic.args.bottlekey]), _control: controlflow$obj }; // initialize lambdakey$ data flow\n\n let bottle_label = undefined;\n\n const nodectrl$ = controlflow$obj._stream.pipe(\n //switchMap(_ctrl_in=> {\n // ctrl_in_cache = _ctrl_in;\n // //return [of(_ctrl_in), lambdakey$obj._stream];\n // return lambdakey$obj._stream;\n //}),\n withLatestFrom(lambdakey$obj._stream),\n map((_composite_in) => {\n if (refnode === \"20421ab4-c222-4a0b-8d43-1f505a6193c9\")\n console.log(\"start debugging\");\n const _lambdakey = _composite_in[1];\n bottle_label = _lambdakey;\n return _composite_in[0];\n }),\n share(),\n );\n\n const _nodeflowfunc = (_input$objArr, _controlflow$obj) => {\n console.log(\"start debugging\");\n const _outflow_data$ = new Subject(); //BehaviorSubject({...raceConditionError, _label: {...node_context}});\n\n const _outflow_ctrl$ = _controlflow$obj._stream.pipe(\n //switchMap(_ctrl_in=> {\n // //flowinterface.ctrl_in.next(_ctrl_in);\n // return combineLatest([of(_ctrl_in), ..._input$objArr.map(_=>_._stream)]);\n //}),\n withLatestFrom(..._input$objArr.map((_) => _._stream)),\n map((_combined_in) => {\n //const _next_data = _combined_in.slice(1).filter(_data=>_data!==undefined);\n\n //const unitdataArr = _next_data.length === 1 ? _next_data.flat() : _next_data;\n const _next_data = _combined_in[1];\n\n const do_unbottlefunc = (_data_in) => {\n const _data_out = [_data_in]\n .flat()\n .map((_a_data) => {\n return isBottle(_a_data) && bottle_label.includes(_a_data._bname)\n ? _a_data._content\n : undefined;\n })\n .filter((_in) => _in); // exitDataBus({_bus: _data_in});\n //return (_data_out.length === 0 ? undefined : (_data_out.length === 1 ? _data_out[0] : _data_out));\n if (_data_out.length > 0) {\n return _data_out.length === 1 ? _data_out[0] : _data_out;\n }\n return undefined;\n };\n\n const is_array_input = Array.isArray(_next_data);\n const unbottleddata = is_array_input\n ? _next_data\n .map((_next_datum) => do_unbottlefunc(_next_datum))\n .filter((_entry) => _entry !== undefined) // filter out any null entries\n : do_unbottlefunc(_next_data);\n\n //let _ctrl_out = undefined;\n if (unbottleddata?.length > 0 || (!is_array_input && unbottleddata !== undefined)) {\n _outflow_data$.next(unbottleddata); // publish the next available post-processed data via the data flow subject channel\n return _combined_in[0]; // only pass the ctrl data in the flow;\n }\n return undefined;\n }),\n filter((_) => _ !== undefined),\n share(),\n );\n return {\n _stream: _outflow_data$.pipe(\n map((_in) => {\n return _in;\n }),\n share(),\n ),\n _control: {\n ..._controlflow$obj,\n _stream: _outflow_ctrl$.pipe(\n map((_in) => {\n return _in;\n }),\n share(),\n ),\n },\n };\n };\n\n //const consolidated_input$objArr = [combineDataflows(refnode, input$objArr)];\n //const consolidated_input$objArr = [{_stream: chronosDataflow(controlflow$obj._stream, input$objArr.map(_$obj=>_$obj._stream), false, CHRONOSTYPE_SYNC, {time: 10000})}];\n const output$obj = driveDataflowByCtrlflow(\n { _stream: nodectrl$ },\n input$objArr,\n undefined,\n { ...node_context, metastep: \"executing unbottle with key \" + bottle_label },\n {\n leaflogic: _nodeflowfunc,\n datalogic: {\n post: (_data_out) => {\n return _data_out;\n },\n },\n },\n );\n\n //const flowoutput$ = controlflow$obj._stream.pipe(\n\n // withLatestFrom(lambdakey$obj._stream), // transforms input stream into tuples of [unitdata, _lambdakey]\n // // process data labelling\n // map((_data) => { // a window for debugging\n // if ([\"a80b\", \"6945\"].includes(refnode?.slice(0,4)))\n // console.log(lambdactrl.gos.etaTree, \"refnode: \", refnode, _data);\n // //if (refnode && refnode.slice(0,4) === \"e1e1\")\n // // console.log(\"start debugging\");\n // return _data;\n // }),\n // filter(([unitdata, _lambdakey]) => {\n // const unitdata_array = Array.isArray(unitdata) ? unitdata : [unitdata];\n // return (unitdata_array.every(x=>(isBottle(x)||(isCrate(x) && x._crate.every(isBottle)))));\n // //return (isBottle(unitdata)||(isCrate(unitdata) && unitdata._crate.every(isBottle)));\n // }), // filter out any non-bottle or non-crate data\n // map(([unitdata, _lambdakey] = []) => { // both unitdata and _lambdakey are arrays\n\n // const unitdata_array = Array.isArray(unitdata) ? unitdata : [unitdata];\n // // sanity check\n // // unitdata.length === _lambdakey.length or _lambdakey.length === 1\n // //const preprocessed_data = (_lambdakey.length === 1) ? // if\n // // unitdata.map(_entry => [_entry, _lambdakey[0]]) : // then\n // // ((unitdata.length === _lambdakey.length) ? // else if\n // // unitdata.map((_entry, _idx) => [_entry, _lambdakey[_idx]]) : // then\n // // []); // else then\n\n // //const preprocessed_data = unitdata.map((x, i) => [x, isincluded[i]]); // preprocessed_data is a list of tuples [_dataentry, _lambdakey]\n // // used reduce instead of map so non-bottle data can be skipped\n // //const copyBottle = (_bottle) => {return {..._bottle, _label: {..._bottle._label}}};\n // const processed = unitdata_array.reduce((_result, _dataentry) => {\n // //if (isBottle(_dataentry))\n // // _result.push(removeLabel(_label, copyBottle(_dataentry)));\n // //else if (isCrate(_dataentry))\n // // _result.push({..._dataentry, _crate: _dataentry._crate.map(_bottle=>removeLabel(_label, copyBottle(_bottle)))});\n // if (isBottle(_dataentry) && _lambdakey.includes(_dataentry._bname))\n // _result.push(_dataentry._content); // unbottle\n // else if (isCrate(_dataentry)) {\n // _dataentry._crate.map(_bottle => {\n // if (_lambdakey.includes(_bottle._bname))\n // _result.push(_bottle._content); // unbottle\n // })\n // }\n\n // return flattenArray(_result);\n // },[]); // _result initialized to [], prior to reduce()\n\n // if (refnode && refnode.slice(0,4) === \"6a01\")\n // console.log(\"start debugging\");\n // //const processed = [];\n // //if (isBottle(unitdata) && _lambdakey.includes(unitdata._bname))\n // // processed.push(unitdata._content); // unbottle\n // //else if (isCrate(unitdata)) {\n // // unitdata._crate.map(_bottle => {\n // // if (_lambdakey.includes(_bottle._bname))\n // // processed.push(_bottle._content); // unbottle\n // // })\n // //}\n\n // //return flattenArray(_result);\n // //if (processed.length === 1)\n // // return processed[0];\n // if (processed.length > 0)\n // return processed;\n // })\n //);\n\n //return {_stream: flowoutput$.pipe(filter(_entry=>_entry)), _control: controlflow$obj}; // filter out any null entries in the result array\n return output$obj;\n }\n // no name to bottle anything with, do NOT return anything\n const errorLocationStr = \"at _leafdataUnbottle()\";\n throw \"LEAF Error: flow data cannot be unbottled without a bottlekey, \" + errorLocationStr;\n };\n },\n lambda:\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n // space for node type specific init prior to use\n // note the cross over in the roles of nodelambda and contextuallambda\n const reduced_lambda_obj = await etaReduceLambdaGraphs({\n refnode,\n nodelambda: contextuallambda,\n contextuallambda: nodelambda,\n etaTree: lambdactrl.gos.etaTree,\n });\n const lambda_lut = {};\n // TBD: check if the following repackaging of _dataflow and _control is redundant\n Object.entries(reduced_lambda_obj).map(([key, etafunc]) => {\n lambda_lut[key] = (input$Arr, controlflow$obj) => {\n // a dataflow-scoped func per key\n const output$obj = etafunc(input$Arr, controlflow$obj);\n return { ...output$obj, _control: controlflow$obj };\n };\n });\n return lambda_lut;\n },\n};\n\nexport { _leafunbottle, doUnbottle };\n","import { etaReduceLambdaGraphs } from \"../../eta.js\";\nimport { map, withLatestFrom, filter, share } from \"rxjs/operators\";\nimport { Subject } from \"rxjs\";\nimport { isBottle } from \"../../predicates.js\";\n\n/*\n * _leafcrate() is a runtime function for the LEAFgraph node of logic type 'leafdatacrate'.\n * it is used to put any bottles passed to the leaf node via its incoming data flow into a crate.\n * Any non-bottle data are discarded in the flow.\n * @nodeconfig: to carry any compile time configs for the LEAFgraph node (configs TBD, 29 Jan 2022)\n * @lambdaFunc: a predicate that evaluates incoming data flow for inclusion in the debottling.\n * The default is to return true for everything. The lambda may be overriden to have any non-default function\n * defined in the context of the calling LEAF graph.\n * @graphContextual: n/a\n */\n//const _leafcrate = ({nodeconfig={}}={}, lambdaFunc=x=>true, graphContextual) => {}\nconst _leafcrate = {\n dataflow:\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n // space for node type specific init prior to use\n // check for parsing error conditions\n if (!contextuallambda) {\n throw (\n `LEAF error: the logical construct built using the ${refnodedata.leaf.logic.type} node ` +\n `(${refnode}) called with args (${JSON.stringify(refnodedata.leaf.logic.args)}).`\n );\n }\n const reduced_lambda_obj = await etaReduceLambdaGraphs({\n refnode,\n nodelambda,\n contextuallambda,\n etaTree: lambdactrl.gos.etaTree,\n });\n\n const getCrateTagLabelText = () => {\n const _candidates = Object.keys(reduced_lambda_obj).filter(\n (_key) => Object.keys(reduced_lambda_obj[_key]).length === 0,\n );\n return _candidates.length > 0 ? _candidates.sort().join(\";\") : undefined;\n };\n\n const cratetag_text = getCrateTagLabelText();\n\n return (input$objArr, controlflow$obj) => {\n const _outflow_data$ = new Subject(); //new BehaviorSubject(raceConditionError);\n\n const _outflow_ctrl$ = controlflow$obj._stream.pipe(\n withLatestFrom(...input$objArr.map((_obj) => _obj._stream)),\n map((_combined_in) => {\n const combinedcrate = { _cratelabel: cratetag_text ? { tag: cratetag_text } : {} };\n const is_array_input = Array.isArray(_combined_in[1]);\n\n const _next_data = (is_array_input ? _combined_in[1] : [_combined_in[1]])\n .flat()\n .map((_unitdata) => {\n // filter incoming bottles\n // mix require bottled input\n return isBottle(_unitdata) &&\n _unitdata._label.tag &&\n typeof _unitdata._label.tag === \"string\"\n ? _unitdata\n : undefined;\n })\n .filter((_unitdata) => {\n // filter out undefined or \"empty_data\"\n return _unitdata !== undefined; //( isEmptyBottle(_unitdata));\n });\n\n _next_data.map((_btl) => {\n combinedcrate[_btl._bname] =\n _btl._bname in combinedcrate ? [...combinedcrate[_btl._bname], _btl] : [_btl];\n });\n\n if (Object.keys(combinedcrate).length > 1) {\n _outflow_data$.next(combinedcrate); // publish the next available post-processed data via the data flow subject channel\n\n return _combined_in[0]; // only pass the ctrl data in the main flow;\n }\n return undefined;\n }),\n filter((_) => _ !== undefined),\n share(),\n );\n return {\n _stream: _outflow_data$.pipe(\n map((x) => {\n return x;\n }),\n share(),\n ),\n _control: { ...controlflow$obj, _stream: _outflow_ctrl$ },\n };\n //const output$obj = driveDataflowByCtrlflow(\n // {_stream: _outflow_ctrl$}, [{_stream: _outflow_data$}], undefined,\n // {...node_context, metastep: \"driving leafcrate \"},\n // {\n // //leaflogic: _defaultLambda,\n // datalogic: {pre: (_data_in) => {\n // return _data_in;\n // }}\n // }\n //);\n //return output$obj;\n //const flowoutput$ = flowinput$.pipe(\n // // process crating bottles\n // map(([unitdata]) => { // unitdata is supposed to be an instance of an array of node inputs\n // // iterate over the crate\n // if (typeof unitdata === 'object' && unitdata !== null && !('_datatype' in unitdata)) { // a crate\n // Object.entries(unitdata).map(([bottle_key, bottle_content]) => { // for each bottle in the crate\n // if (bottle_key in combinedcrate) // if duplicate key exists in the crate\n // combinedcrate[bottle_key] = [].concat(combinedcrate[bottle_key], bottle_content); // merge them into an array\n // else\n // combinedcrate[bottle_key] = bottle_content;\n // });\n // }\n // })\n //);\n\n //return {...flowoutput$, _control: controlflow$obj};\n // no label to unbottle anything with, just return nothing\n };\n },\n lambda:\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n // space for node type specific init prior to use\n // note the cross over in the roles of nodelambda and contextuallambda\n const reduced_lambda_obj = await etaReduceLambdaGraphs({\n refnode,\n nodelambda: contextuallambda,\n contextuallambda: nodelambda,\n etaTree: lambdactrl.gos.etaTree,\n });\n const lambda_lut = {};\n Object.entries(reduced_lambda_obj).map(([key, etafunc]) => {\n lambda_lut[key] = (input$Arr, controlflow$obj) => {\n // a dataflow-scoped func per key\n const output$obj = etafunc(input$Arr, controlflow$obj);\n return { ...output$obj, _control: controlflow$obj };\n };\n });\n return lambda_lut;\n },\n};\n\nexport { _leafcrate };\n","import { map } from \"rxjs/operators\";\nimport { of } from \"rxjs\";\nimport { mergeDataflows } from \"../../../utils/leafdataflow.js\";\n//import { result } from 'lodash';\nimport { etaReduceLambdaGraphs } from \"../../eta.js\";\n//import { _leafLISPHelpText } from './leaflisphelp';\nimport { executeLEAFLogic } from \"../../leaf.js\";\n\n// convert json into leaflisp\n\n//const parseLEAFlispObjToJson = (x) => {\n// const inputtype = typeof(x);\n// return (\n// (inputtype !== 'object' ?\n// x : // base js type\n// (!(x instanceof PLBase) ?\n// (x) : // a non-PLBase js object type\n// ((x instanceof PLHashMap) ?\n// (\n// //parseLEAFlispObjToJson(x.toJSON())\n// x.toJSON()\n// ) :\n// (\n// isPLNumberTypeInstance(x) ?\n// (x.toJS()) :\n// ()\n// )\n// )\n// )\n// )\n// );\n//}\n\n/*\n * _leaflisp() is a runtime function for the LEAFgraph node of logic type 'leaflisp'\n * @lispexpression: a LEAFlisp expression in a string\n * @lambdaFunc: currently, the lambda function connected to the current node is always expected to be null\n * as the node-level lambdaFunc is not permitted for this type of node yet.\n * @graphContextual: is NOT to be used for this node type either, hence is always expected to be null.\n */\n//const _leaflisp = ({lispexpression=''}={}, lambdaFunc, graphContextual) => {}\nconst _leafconfig = {\n dataflow:\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n //(inputargs) => {}\n //const {\n // lambdactrl, //: {gos: {subsDirectory}, user: {lispexpression=''}},\n // lambdadata //: {lambdaFunc=x=>x, graphContextual}\n //}=inputargs;\n // spark_dev_note: The game plan down the road, possibly part of breezyforest, is to add support\n // for lambdaFunc in LEAFlisp expressions. Need to work on potential usage scenarios first.\n\n //const refnode_logic = runtimeEtaTree.leafgraph.graph.dataflow.getNodeAttributes(refnode).leafnode.data.leaf.logic;\n //const runtimeLEAFlisp = processLEAFlisp(refnodedata.leaf.logic.args.lispexpression);\n await etaReduceLambdaGraphs({\n refnode,\n nodelambda,\n contextuallambda,\n etaTree: lambdactrl.gos.etaTree,\n });\n\n return (flowinput$Arr, controlflow$obj) => {\n const flowinput$obj = mergeDataflows(flowinput$Arr);\n //const flowoutput$ = graphContextual(flowinput$);\n //return flowoutput$;\n if (flowinput$obj && \"_stream\" in flowinput$obj) {\n const flowoutput$ = flowinput$obj._stream.pipe(\n map((node_input) => {\n // node_input is expected to be an array, the calling function, parseLEAFNode (leaf.js) ensures this\n return node_input;\n }),\n );\n return { _stream: flowoutput$, _control: controlflow$obj };\n } else {\n // if in-flow is undefined then the lisp expression functions as a constant\n return { _stream: of([]), _control: controlflow$obj };\n }\n };\n },\n lambda:\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n // space for node type specific init prior to use\n const lambda_lut = {};\n if (nodelambda.length > 0) {\n const reduced_lambda_obj = await etaReduceLambdaGraphs({\n refnode,\n nodelambda,\n contextuallambda,\n etaTree: lambdactrl.gos.etaTree,\n });\n lambda_lut[refnodedata.leaf.logic.type] = { ...reduced_lambda_obj }; // label the eta reduced obj\n } else {\n lambda_lut[refnodedata.leaf.logic.type] = {}; // label an empty object\n }\n return lambda_lut;\n ////const refnode_logic = runtimeEtaTree.leafgraph.graph.dataflow.getNodeAttributes(refnode).leafnode.data.leaf.logic;\n //console.error(`LEAF error: the logical construct built using the ${refnodedata.leaf.logic.type} node `+\n // `(${refnode}) called with args (${JSON.stringify(refnodedata.leaf.logic.args)}) cannot `+\n // 'be defined as a lambda-scoped node.');\n //return (input$Arr, controlflow$obj) => {\n // const input$obj = mergeDataflows(input$Arr);\n // return {...input$obj, _control: controlflow$obj};\n //}\n },\n methods:\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n const reduced_lambda_obj = await etaReduceLambdaGraphs({\n refnode,\n nodelambda,\n contextuallambda,\n etaTree: lambdactrl.gos.etaTree,\n });\n return {\n config: {\n getConfigData: async () => {\n const configDataGen =\n \"_default\" in reduced_lambda_obj ? reduced_lambda_obj._default : undefined;\n const configData = configDataGen ? await executeLEAFLogic(configDataGen, [], {}) : {};\n\n return configData;\n },\n },\n };\n },\n};\n\nexport { _leafconfig };\n","import { etaReduceLambdaGraphs } from \"../../eta.js\";\nimport { fetchMultiKeyedData } from \"../../../utils/fetchnodedata.js\";\nimport { mergeDataflows } from \"../../../utils/leafdataflow.js\";\nimport { v4 as uuid4 } from \"uuid\";\nimport { driveDataflowByCtrlflow } from \"../../leaf.js\";\nimport { _leafstdlib_dataflow_api } from \"../../../metamodel.js\";\nimport { _leafmixflow } from \"../dataflow/index.js\";\nimport { doBottle, doUnbottle } from \"../datautils/bottling.js\";\n\nconst leaf_apidef = _leafstdlib_dataflow_api(\"leafdeckspade\");\n/*\n * _leafdeckspade() is a runtime function for the LEAFgraph node of logic type 'leafdeckspade'.\n * it is used to generate a navigable node of type spade upon any diamond bottled data being passed to the leaf node\n * via its incoming data flow.\n * (25 Feb 2022) How the dataflow plane input gets incorporated into the leaf node's output is yet to be determined.\n * @deckname: a string reference to be used for the new navigable node\n * @lambdaFunc: is a function defined in the context of the calling LEAF graph. It accepts flowinput$ as\n * input and returns as output a stream carrying data as defined by the lambda component in LEAF.\n * The lambdaFunc, if defined, represents the 'Model' of the MVI framework, where the user clicking on\n * the corresponding navigable node represents the 'Intent' of MVI. The outcome of executing the lambdaFunc\n * needs to be reflected back to the user somehow, usually by means of gnav.js, whose effect in turn constitutes\n * the View of MVI.\n *\n * Upon the leafdeckspade node logic executing, a gnav-compatible json object to represent\n * the leafdeckspade in the rhelm of gnav.js is expected to be returned.\n *\n * TBD:\n * @graphContextual: n/a\n * or\n * @graphContextual: a parsed runtime lambda function connected to the graph of which the current node is a member\n *\n * bottles the node look out for in the dataflow plane for filtering data of interest:\n * '_leafdeckdiamond'\n */\n//const _leafdeckspade = ({logictoggle=false, deckname=''}={}, lambdaFunc=x=>x, graphContextual) => {}\nconst _leafdeckspade = {\n dataflow:\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n // space for node type specific init prior to use\n // check for parsing error conditions\n if (!contextuallambda) {\n throw (\n `LEAF error: the logical construct built using the ${refnodedata.leaf.logic.type} node ` +\n `(${refnode}) called with args (${JSON.stringify(refnodedata.leaf.logic.args)}).`\n );\n }\n console.log(contextuallambda);\n const reduced_lambda_obj = await etaReduceLambdaGraphs({\n refnode,\n nodelambda,\n contextuallambda,\n etaTree: lambdactrl.gos.etaTree,\n });\n\n // spark_dev_note: I think _leafdataUnbottle currently only supports a single key, in the future it would be whole lot more useful\n // if it supported an array of keys to be unbottled in one go.\n //const filterDataOfInterest = await _leafunbottle.dataflow(lambdactrl)({refnodedata: {leaf: {logic: {args: {bottlekey:'_leafdeckdiamond'}}}}, nodelambda: [], contextuallambda});\n await _leafmixflow.dataflow(lambdactrl)({\n refnodedata: { leaf: { logic: { args: {} } } },\n nodelambda: [],\n contextuallambda,\n });\n // lambdactrl.user.leaf.logic.args.bottlekey || lambdadata.lambdaFunc\n //const bottleUp = await _leafbottle.dataflow(lambdactrl)({refnodedata: {leaf: {logic: {args: {bottlekey:'_leafdeckspade'}}}}, nodelambda, contextuallambda});\n\n //let default_spade_diamonds_and_clubs = [\n // {\n // type: 'leafdeckdiamond',\n // uuid: uuid4(),\n // name: 'somename',\n // svgicon: 'http://localhost:3000/icons/hardware/laptop_mac/materialicons/24px.svg',\n // description: 'some description',\n // lambdas: {\n // default: undefined, //'defaultLambda',\n // //defaultLambda: (input$Arr) => {}\n // },\n // clubs: [\n // ]\n // }\n //]\n\n // const leafgraph_args = {\n // graphuuid: \"\",\n // domain: \"breezyforest\",\n // appid: \"leafdeckspade\",\n // graphaddrstr: \"breezyforest/spade\",\n // };\n // const getLEAFGraph = _leafgraph.lambda(lambdactrl)({\n // refnodedata: { leaf: { logic: { args: leafgraph_args } } },\n // nodelambda: [],\n // contextuallambda: [],\n // });\n // const leafgraph = await getLEAFGraph; //.then((response) => { // async call to get leafgraph\n // do something with the response once the leafgraph is resolved\n //let default_spade_diamonds_and_clubs = []; //{diamonds: []};\n //if (leafgraph && 'menudata' in leafgraph && '_default' in leafgraph.menudata) {\n // const menudata = await executeLEAFLogic(leafgraph.menudata._default, []);\n // if (menudata.length > 0) {\n // default_spade_diamonds_and_clubs = menudata[0].diamonds;\n // console.log('the leaf standard lib for leafdeckspade has been loaded.', leafgraph);\n // }\n // else {\n // console.log('the leaf standard lib for leafdeckspade has been loaded with zero default menu entries.', leafgraph);\n // }\n //}\n //else {\n // console.error('the leaf standard lib for leafdeckspade could not be loaded.');\n //}\n\n const node_context = {\n codebase: \"leafdeckspade.js\",\n refnode,\n leafnode:\n refnode &&\n lambdactrl.gos.etaTree.leafgraph.graph.dataflow.getNodeAttributes(refnode).leafnode.data,\n };\n\n return (input$objArr, controlflow$obj) => {\n let bottle_label = [\"_leafdeckdiamond\"];\n\n const preprocessfunc = (_data_in) => {\n const _data_out = Array.isArray(_data_in)\n ? _data_in.map((_datum_in) => doUnbottle(bottle_label, _datum_in)).filter((_in) => _in)\n : doUnbottle(bottle_label, _data_in); //(isBottle(_data_in) && bottle_label.includes(_data_in._bname)) ? _data_in._content : undefined; // exitDataBus({_bus: _data_in});\n return _data_out;\n };\n\n const loopidx = controlflow$obj._config?.loopidx;\n const { args } = refnodedata.leaf.logic;\n const _defaultLambda =\n \"_default\" in reduced_lambda_obj\n ? (_input$objArr, _controlflow$obj) => {\n const diamondctrlflow$obj = { ..._controlflow$obj };\n if (loopidx >= 0)\n // add loopidx ctrl config data to whatever ctrl data being passed in normally via hammer action in sysmenu.js\n diamondctrlflow$obj._config.loopidx = loopidx;\n diamondctrlflow$obj._config.clubrefnode = refnode;\n const _output$obj = reduced_lambda_obj._default(_input$objArr, diamondctrlflow$obj);\n return _output$obj;\n }\n : (_input$objArr, _controlflow$obj) => {\n console.log(\"start debugging\");\n return { ...mergeDataflows(_input$objArr), _control: _controlflow$obj };\n };\n\n const postprocessfunc = (_data_in) => {\n const a_diamond_list = Array.isArray(_data_in) ? _data_in : [_data_in];\n const _data_out = {\n type: \"leafdeckspade\",\n uuid: uuid4(), // random uuid\n name: fetchMultiKeyedData(leaf_apidef.editorconfig.namedatakey, args), //'Park',\n description: \"{description}\", // refactor to have this set in LEAF\n lambdas: {\n // a dictionary of lambda functions belonging to the 1st tier node\n // refactor to have this set using the argument lambdaFunc\n default: \"defaultLambda\", // or undefined,\n defaultLambda: _defaultLambda,\n bro: (input$) => {\n return input$;\n }, // somehow break down lambdaFunc to have an arbitrary number of lambda functions destructured here\n },\n diamonds: a_diamond_list, // a list of diamond-level satellite entries of 1st-tier navigable nodes\n };\n\n console.log(\"node logic executed: \" + JSON.stringify(_data_out));\n\n return doBottle(\"screenio\", _data_out);\n };\n\n // wire in node-specific flow functions, if any\n const nodectrl$ = controlflow$obj._stream;\n //const nodectrl$ = controlflow$obj._stream.pipe(\n // concatMap(_ctrl_in=> {\n // ctrl_in_cache = _ctrl_in;\n // return [of(_ctrl_in), lambdakey$obj._stream];\n // }),\n // map( ([_ctrl_in, _lambdakey]) => { //\n // bottle_label = _lambdakey;\n // return _ctrl_in;\n // })\n //);\n\n //const consolidated_input$objArr = [combineDataflows(refnode, input$objArr)];\n //const consolidated_input$objArr = [{_stream: chronosDataflow(controlflow$obj._stream, input$objArr.map(_$obj=>_$obj._stream), false, CHRONOSTYPE_SYNC, {time: 10000})}];\n const output$obj = driveDataflowByCtrlflow(\n { _stream: nodectrl$ },\n input$objArr,\n undefined,\n { ...node_context, metastep: \"creating a leafdeckspade element\" },\n {\n //leaflogic: _leafdeckspade_leaflogic,\n datalogic: {\n pre: preprocessfunc,\n post: postprocessfunc,\n },\n },\n );\n\n //let flowoutput$;\n\n //// filter out any null entries in the result array\n //const output$Arr = [{_stream: flowoutput$.pipe(filter(_entry=>_entry))}];\n ////return {...(bottleUp(output$Arr, controlflow$obj)), _control: controlflow$obj};\n //return {_stream: flowoutput$.pipe(filter(_entry=>_entry)), _control: controlflow$obj};\n //// no output on no input\n return output$obj;\n };\n },\n lambda:\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n // space for node type specific init prior to use\n // note the cross over in the roles of nodelambda and contextuallambda\n const reduced_lambda_obj = await etaReduceLambdaGraphs({\n refnode,\n nodelambda: contextuallambda,\n contextuallambda: nodelambda,\n etaTree: lambdactrl.gos.etaTree,\n });\n const lambda_lut = {};\n Object.entries(reduced_lambda_obj).map(([key, etafunc]) => {\n lambda_lut[key] = (input$Arr, controlflow$obj) => {\n // a dataflow-scoped func per key\n const output$obj = etafunc(input$Arr, controlflow$obj);\n return { ...output$obj, _control: controlflow$obj };\n };\n });\n return lambda_lut;\n },\n};\n\nexport { _leafdeckspade };\n","import { etaReduceLambdaGraphs } from \"../../eta.js\";\nimport { _leafbottle } from \"../datautils/index.js\";\nimport { fetchMultiKeyedData } from \"../../../utils/fetchnodedata.js\";\nimport { _leafstdlib_dataflow_api } from \"../../../metamodel.js\";\n//import { combineDataflows, naiveZipDataflows, mergeObservableDataflows, chronosDataflow, CHRONOSTYPE_SYNC } from '../../../utils/leafdataflow';\nimport { v4 as uuid4 } from \"uuid\";\nimport { mergeDataflows } from \"../../../utils/leafdataflow.js\";\nimport { _leafmixflow } from \"../dataflow/index.js\";\nimport { driveDataflowByCtrlflow } from \"../../leaf.js\";\nimport { doBottle, doUnbottle } from \"../datautils/bottling.js\";\n\nconst leaf_apidef = _leafstdlib_dataflow_api(\"leafdeckheart\");\n\n/*\n * _leafdeckheart() is a runtime function for the LEAFgraph node of logic type 'leafdeckheart'.\n * it is used to generate a navigable node of type heart upon any diamond bottled data being passed to the leaf node\n * via its incoming data flow.\n * @deckname: a string reference to be used for the new navigable node\n * @lambdaFunc: is a function defined in the context of the calling LEAF graph. It accepts flowinput$ as\n * input and returns as output a stream carrying data as defined by the lambda component in LEAF.\n * The lambdaFunc, if defined, represents the 'Model' of the MVI framework, where the user clicking on\n * the corresponding navigable node represents the 'Intent' of MVI. The outcome of executing the lambdaFunc\n * needs to be reflected back to the user somehow, usually by means of gnav.js, whose effect in turn constitutes\n * the View of MVI.\n *\n * Upon the leafdeckheart node logic executing, a gnav-compatible json object to represent\n * the leafdeckheart in the rhelm of gnav.js is expected to be returned.\n *\n * TBD:\n * @graphContextual: n/a\n * or\n * @graphContextual: a parsed runtime lambda function connected to the graph of which the current node is a member\n *\n * bottles the node look out for in the dataflow plane for filtering data of interest:\n * '_leafdeckdiamond'\n */\n//const _leafdeckheart = ({logictoggle=false, deckname=''}={}, lambdaFunc=x=>x, graphContextual) => {}\nconst _leafdeckheart = {\n dataflow:\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n // space for node type specific init prior to use\n // check for parsing error conditions\n if (!contextuallambda) {\n throw (\n `LEAF error: the logical construct built using the ${refnodedata.leaf.logic.type} node ` +\n `(${refnode}) called with args (${JSON.stringify(refnodedata.leaf.logic.args)}).`\n );\n }\n const reduced_lambda_obj = await etaReduceLambdaGraphs({\n refnode,\n nodelambda,\n contextuallambda,\n etaTree: lambdactrl.gos.etaTree,\n });\n // spark_dev_note: I think _leafdataUnbottle currently only supports a single key, in the future it would be whole lot more useful\n // if it supported an array of keys to be unbottled in one go.\n //const filterDataOfInterestDiamond = await _leafunbottle.dataflow(lambdactrl)({refnodedata: {leaf: {logic: {args: {bottlekey:'_leafdeckdiamond'}}}}, nodelambda: [], contextuallambda});\n await _leafmixflow.dataflow(lambdactrl)({\n refnodedata: { leaf: { logic: { args: {} } } },\n nodelambda: [],\n contextuallambda,\n });\n //const filterDataOfInterestClub = await _leafunbottle.dataflow(lambdactrl)({refnodedata: {leaf: {logic: {args: {bottlekey:'_leafdeckclub'}}}}, nodelambda: [], contextuallambda});\n // lambdactrl.user.leaf.logic.args.bottlekey || lambdadata.lambdaFunc\n await _leafbottle.dataflow(lambdactrl)({\n refnodedata: { leaf: { logic: { args: { bottlekey: \"_leafdeckheart\" } } } },\n nodelambda: [],\n contextuallambda,\n });\n\n const node_context = {\n codebase: \"leafdeckheart.js\",\n refnode,\n leafnode:\n refnode &&\n lambdactrl.gos.etaTree.leafgraph.graph.dataflow.getNodeAttributes(refnode).leafnode.data,\n };\n\n return (input$objArr, controlflow$obj) => {\n let bottle_label = [\"_leafdeckdiamond\"];\n\n const preprocessfunc = (_data_in) => {\n if (node_context.refnode === \"02dda89a-6816-4e63-86eb-071b39d5fd51\")\n console.log(\"start debugging\");\n const _data_out = Array.isArray(_data_in)\n ? _data_in.map((_datum_in) => doUnbottle(bottle_label, _datum_in)).filter((_in) => _in)\n : doUnbottle(bottle_label, _data_in); //(isBottle(_data_in) && bottle_label.includes(_data_in._bname)) ? _data_in._content : undefined; // exitDataBus({_bus: _data_in});\n return _data_out;\n };\n\n //const _leafdeckheart_leaflogic = (_input$objArr, _controlflow$obj) => {\n // //const uri$obj = driveDataflowByCtrlflow(\n // // controlflow$obj, input$objArr, undefined, node_context,\n // // {\n // // leaflogic: urigen,\n // // datalogic: {post: (_data) => {\n // // _stream_cache[ElemCacheKeyLUT.mediaplayer.URI] = _data;\n // // return _data;\n // // }}\n // // }\n // //);\n\n // //const _inflow_ctrl$obj = uri$obj._control;\n // const _inflow_ctrl$obj = _controlflow$obj;\n\n // const _outflow_data$ = new ReplaySubject(1);\n // const _ctrl_out$ = _inflow_ctrl$obj._stream.pipe(\n // concatMap(_ctrl_in => {\n // _stream_cache[ElemCacheKeyLUT.CTRLIN] = _ctrl_in;\n\n // // perform any input data (read) operations specific to the element here\n // // like accessing the most up-to-date messages from rx subjects/streams, etc\n\n // // return data read from the rx stream domain as an array\n // return combineLatest([..._input$objArr.map(_obj=>_obj._stream)]);\n // }),\n // map(_data_in => {\n // console.log(\"testing element _leaflogic: \", _data_in);\n // // perform any output data (write) operations specific to the element here\n // // like sending messages to rx subjects, etc\n\n // if (_data_in.length > 1)\n // _outflow_data$.next(_data_in);\n // else if (_data_in.length === 1)\n // _outflow_data$.next(_data_in[0]);\n // // return ctrl\n // return _stream_cache[ElemCacheKeyLUT.CTRLIN];\n // })\n // );\n\n // return {_stream: _outflow_data$, _control: {_stream: _ctrl_out$}}\n //};\n\n const loopidx = controlflow$obj._config?.loopidx;\n const { args } = refnodedata.leaf.logic;\n const _defaultLambda =\n \"_default\" in reduced_lambda_obj\n ? (_input$objArr, _controlflow$obj) => {\n const diamondctrlflow$obj = { ..._controlflow$obj };\n if (loopidx >= 0)\n // add loopidx ctrl config data to whatever ctrl data being passed in normally via hammer action in sysmenu.js\n diamondctrlflow$obj._config.loopidx = loopidx;\n diamondctrlflow$obj._config.clubrefnode = refnode;\n const _output$obj = reduced_lambda_obj._default(_input$objArr, diamondctrlflow$obj);\n return _output$obj;\n }\n : (_input$objArr, _controlflow$obj) => {\n console.log(\"start debugging\");\n return { ...mergeDataflows(_input$objArr), _control: _controlflow$obj };\n };\n\n const postprocessfunc = (_data_in) => {\n const a_diamond_list = Array.isArray(_data_in) ? _data_in : [_data_in];\n const _data_out = {\n type: \"leafdeckheart\",\n uuid: uuid4(), // random uuid\n name: fetchMultiKeyedData(leaf_apidef.editorconfig.namedatakey, args), //'Park',\n description: \"{description}\", // refactor to have this set in LEAF\n lambdas: {\n // a dictionary of lambda functions belonging to the 1st tier node\n // refactor to have this set using the argument lambdaFunc\n default: \"defaultLambda\", // or undefined,\n defaultLambda: _defaultLambda,\n bro: (input$) => {\n return input$;\n }, // somehow break down lambdaFunc to have an arbitrary number of lambda functions destructured here\n },\n diamonds: a_diamond_list, // a list of diamond-level satellite entries of 1st-tier navigable nodes\n };\n\n console.log(\"node logic executed: \" + JSON.stringify(_data_out));\n\n return doBottle(\"screenio\", _data_out);\n };\n\n // wire in node-specific flow functions, if any\n const nodectrl$ = controlflow$obj._stream;\n //const nodectrl$ = controlflow$obj._stream.pipe(\n // concatMap(_ctrl_in=> {\n // ctrl_in_cache = _ctrl_in;\n // return [of(_ctrl_in), lambdakey$obj._stream];\n // }),\n // map( ([_ctrl_in, _lambdakey]) => { //\n // bottle_label = _lambdakey;\n // return _ctrl_in;\n // })\n //);\n\n //const consolidated_input$objArr = [combineDataflows(refnode, input$objArr)];\n //const consolidated_input$objArr = [{_stream: chronosDataflow(controlflow$obj._stream, input$objArr.map(_$obj=>_$obj._stream), false, CHRONOSTYPE_SYNC, {time: 10000})}];\n const output$obj = driveDataflowByCtrlflow(\n { _stream: nodectrl$ },\n input$objArr,\n undefined,\n { ...node_context, metastep: \"creating a leafdeckheart element\" },\n {\n //leaflogic: _leafdeckheart_leaflogic,\n datalogic: {\n pre: preprocessfunc,\n post: postprocessfunc,\n },\n },\n );\n\n //let flowoutput$;\n\n //// filter out any null entries in the result array\n //const output$Arr = [{_stream: flowoutput$.pipe(filter(_entry=>_entry))}];\n ////return {...(bottleUp(output$Arr, controlflow$obj)), _control: controlflow$obj};\n //return {_stream: flowoutput$.pipe(filter(_entry=>_entry)), _control: controlflow$obj};\n //// no output on no input\n return output$obj;\n };\n },\n lambda:\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n // space for node type specific init prior to use\n // note the cross over in the roles of nodelambda and contextuallambda\n const reduced_lambda_obj = await etaReduceLambdaGraphs({\n refnode,\n nodelambda: contextuallambda,\n contextuallambda: nodelambda,\n etaTree: lambdactrl.gos.etaTree,\n });\n const lambda_lut = {};\n Object.entries(reduced_lambda_obj).map(([key, etafunc]) => {\n lambda_lut[key] = (input$Arr, controlflow$obj) => {\n // a dataflow-scoped func per key\n const output$obj = etafunc(input$Arr, controlflow$obj);\n return { ...output$obj, _control: controlflow$obj };\n };\n });\n return lambda_lut;\n },\n};\n\nexport { _leafdeckheart };\n","import { etaReduceLambdaGraphs } from \"../../eta.js\";\nimport { map } from \"rxjs/operators\";\nimport { mergeDataflows } from \"../../../utils/leafdataflow.js\";\nimport { fetchMultiKeyedData } from \"../../../utils/fetchnodedata.js\";\nimport { _leafstdlib_dataflow_api } from \"../../../metamodel.js\";\nimport { v4 as uuid4 } from \"uuid\";\nimport { driveDataflowByCtrlflow } from \"../../leaf.js\";\nimport { _leafmixflow } from \"../dataflow/index.js\";\nimport { isBottle } from \"../../predicates.js\";\nimport { doBottle, doUnbottle } from \"../datautils/bottling.js\";\n\nconst leafgon_url = process.env.LEAFGON_URL;\nconst leaf_apidef = _leafstdlib_dataflow_api(\"leafdeckdiamond\");\n\n/*\n * _leafdeckdiamond() is a runtime function for the LEAFgraph node of logic type 'leafdeckdiamond.\n * it is used to generate a navigable node of type heart upon any club bottled data being passed to the leaf node\n * via its incoming data flow.\n * @deckname: a string reference to be used for the new navigable node\n * @lambdaFunc: is a function defined in the context of the calling LEAF graph. It accepts flowinput$ as\n * input and returns as output a stream carrying data as defined by the lambda component in LEAF.\n * The lambdaFunc, if defined, represents the 'Model' of the MVI framework, where the user clicking on\n * the corresponding navigable node represents the 'Intent' of MVI. The outcome of executing the lambdaFunc\n * needs to be reflected back to the user somehow, usually by means of gnav.js, whose effect in turn constitutes\n * the View of MVI.\n *\n * Upon the leafdeckdiamond node logic executing, a gnav-compatible json object to represent\n * the leafdeckdiamond in the rhelm of gnav.js is expected to be returned.\n *\n * TBD:\n * @graphContextual: n/a\n * or\n * @graphContextual: a parsed runtime lambda function connected to the graph of which the current node is a member\n *\n * bottles the node look out for in the dataflow plane for filtering data of interest:\n * '_leafdeckclub'\n */\n//const _leafdeckdiamond = ({logictoggle=false, deckname=''}={}, lambdaFunc=x=>x, graphContextual) => {}\nconst _leafdeckdiamond = {\n dataflow:\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n // space for node type specific init prior to use\n // check for parsing error conditions\n if (!contextuallambda) {\n throw (\n `LEAF error: the logical construct built using the ${refnodedata.leaf.logic.type} node ` +\n `(${refnode}) called with args (${JSON.stringify(refnodedata.leaf.logic.args)}).`\n );\n }\n const reduced_lambda_obj = await etaReduceLambdaGraphs({\n refnode,\n nodelambda,\n contextuallambda,\n etaTree: lambdactrl.gos.etaTree,\n });\n\n //const _defaultLambda = ('_default' in reduced_lambda_obj) ?\n // (input$Arr) => reduced_lambda_obj._default(input$Arr) :\n // (input$Arr) => mergeDataflows(input$Arr);\n\n // spark_dev_note: I think _leafdataUnbottle currently only supports a single key, in the future it would be whole lot more useful\n // if it supported an array of keys to be unbottled in one go.\n //const filterDataOfInterest = await _leafunbottle.dataflow(lambdactrl)({refnodedata: {leaf: {logic: {args: {bottlekey:'_leafdeckclub'}}}}, nodelambda: [], contextuallambda});\n await _leafmixflow.dataflow(lambdactrl)({\n refnodedata: { leaf: { logic: { args: {} } } },\n nodelambda: [],\n contextuallambda,\n });\n // lambdactrl.user.leaf.logic.args.bottlekey || lambdadata.lambdaFunc\n //const bottleUp = await _leafbottle.dataflow(lambdactrl)({refnodedata: {leaf: {logic: {args: {bottlekey:'_leafdeckdiamond'}}}}, nodelambda: [], contextuallambda});\n\n const node_context = {\n codebase: \"leafdeckdiamond.js\",\n refnode,\n leafnode:\n refnode &&\n lambdactrl.gos.etaTree.leafgraph.graph.dataflow.getNodeAttributes(refnode).leafnode.data,\n };\n\n return (input$objArr, controlflow$obj) => {\n //const filtered$obj = filterDataOfInterest(input$objArr, controlflow$obj);\n //const filtered$obj = filterDataOfInterest(flowinput$Arr);\n // spark_dev_note: TBD: leafdeckdiamond uses naiveZipDataflows while leafdeckspade\n // uses combineDataflows, and currently these two have behavioral differences in terms of\n // what output formats to expect the former returning a list while the latter returns\n // a list of lists. make a decision call to stick to one format and refactor them to\n // have a common input merge behaviors. This would require writing a bunch of jest test\n // cases to have them tested.\n //const filtered$obj = naiveZipDataflows(flowinput$Arr.map(x=>filterDataOfInterest([x])));\n\n let bottle_label = [\"_leafdeckclub\"];\n\n const preprocessfunc = (_data_in) => {\n const _data_in_arr = Array.isArray(_data_in) ? _data_in : [_data_in];\n const _data_out = { clubs: [], nodeinput: [] };\n\n // sort input bottles into two categories and store them in _data_out\n _data_in_arr.map((_datum_in) => {\n if (isBottle(_datum_in)) {\n if (_datum_in._bname === bottle_label[0]) {\n _data_out.clubs.push(doUnbottle(bottle_label, _datum_in));\n } else if (_datum_in._bname === \"nodeinput\") {\n _data_out.nodeinput.push(doUnbottle(\"nodeinput\", _datum_in));\n }\n }\n });\n\n return _data_out;\n };\n\n //const _leafdeckdiamond_leaflogic = (_input$objArr, _controlflow$obj) => {\n // //const uri$obj = driveDataflowByCtrlflow(\n // // controlflow$obj, input$objArr, undefined, node_context,\n // // {\n // // leaflogic: urigen,\n // // datalogic: {post: (_data) => {\n // // _stream_cache[ElemCacheKeyLUT.mediaplayer.URI] = _data;\n // // return _data;\n // // }}\n // // }\n // //);\n\n // //const _inflow_ctrl$obj = uri$obj._control;\n // const _inflow_ctrl$obj = _controlflow$obj;\n\n // //const _outflow_data$ = new ReplaySubject(1);\n // const raceConditionError = doBottle(\"error\", {type: \"critical\", message: \"LEAF core error: race condition detected in leafdecdiamond.js\", codebase:\"/src/ghostos/api/parser/nodelogic/elements/leafdeckdiamonds.js\"}, {});\n // const _outflow_data$ = new BehaviorSubject(raceConditionError);\n // const _ctrl_out$ = _inflow_ctrl$obj._stream.pipe(\n // concatMap(_ctrl_in => {\n // _stream_cache[ElemCacheKeyLUT.CTRLIN] = _ctrl_in;\n\n // // perform any input data (read) operations specific to the element here\n // // like accessing the most up-to-date messages from rx subjects/streams, etc\n\n // // return data read from the rx stream domain as an array\n // return (_input$objArr.length === 0 ?\n // of([]) :\n // combineLatest([..._input$objArr.map(_obj=>_obj._stream)])\n // );\n // }),\n // map(_data_in => {\n // console.log(\"testing element _leaflogic: \", _data_in);\n // // perform any output data (write) operations specific to the element here\n // // like sending messages to rx subjects, etc\n\n // if (_data_in.length > 1)\n // _outflow_data$.next(_data_in);\n // else if (_data_in.length === 1)\n // _outflow_data$.next(_data_in[0]);\n // // return ctrl\n // return _stream_cache[ElemCacheKeyLUT.CTRLIN];\n // })\n // );\n\n // return {_stream: _outflow_data$, _control: {_stream: _ctrl_out$}}\n //};\n\n const loopidx = controlflow$obj._config?.loopidx;\n const { args } = refnodedata.leaf.logic;\n const _defaultLambda =\n \"_default\" in reduced_lambda_obj\n ? (_input$objArr, _controlflow$obj) => {\n const diamondctrlflow$obj = {\n _stream: _controlflow$obj._stream.pipe(\n map((_ctrl_in) => {\n return _ctrl_in;\n }),\n ),\n _config: { ..._controlflow$obj._config },\n };\n if (loopidx >= 0)\n // add loopidx ctrl config data to whatever ctrl data being passed in normally via hammer action in sysmenu.js\n diamondctrlflow$obj._config.loopidx = loopidx;\n diamondctrlflow$obj._config.clubrefnode = refnode;\n const dia$obj = reduced_lambda_obj._default(_input$objArr, _controlflow$obj);\n\n return {\n _stream: dia$obj._stream.pipe(\n map((_data_in) => {\n return _data_in;\n }),\n ),\n _control: {\n _stream: dia$obj._control._stream.pipe(\n map((_ctrl_in) => {\n return _ctrl_in;\n }),\n ),\n },\n };\n }\n : \"href\" in reduced_lambda_obj && \"_default\" in reduced_lambda_obj.href\n ? (_input$objArr, _controlflow$obj) => {\n const href$obj = reduced_lambda_obj.href._default(\n _input$objArr,\n _controlflow$obj,\n );\n return {\n _stream: href$obj._stream.pipe(\n map((_href_in) => {\n console.log(\"redirecting\");\n if (window.location.href.slice(-_href_in.length) !== _href_in)\n window.location.href = _href_in; //relative to domain\n return _href_in;\n }),\n ),\n _control: {\n ..._controlflow$obj._control,\n _stream: href$obj._control._stream.pipe(\n map((_ctrl_in) => {\n return _ctrl_in;\n }),\n ),\n },\n };\n }\n : (_input$objArr, _controlflow$obj) => {\n console.log(\"start debugging\");\n return { ...mergeDataflows(_input$objArr), _control: _controlflow$obj };\n };\n\n const postprocessfunc = (_data_in) => {\n if (!_data_in.clubs) console.log(\"start debugging\");\n const a_club_list = _data_in.clubs.filter((_c) => _c); //Array.isArray(_data_in) ? _data_in : [_data_in];\n //const _nodeinput = _data_in.nodeinput.length === 1 ? _data_in.nodeinput[0] : _data_in.nodeinput;\n const is_lambda_subscription =\n \"subscribe\" in reduced_lambda_obj && a_club_list.length === 0;\n const _data_out = {\n type: \"leafdeckdiamond\",\n uuid: uuid4(), // random uuid\n nodeuuid: refnode,\n name: fetchMultiKeyedData(leaf_apidef.editorconfig.namedatakey, args), //refnodedata.leaf.logic.args.deckname, // refactor to have deckname concatenated with an index e.g. 'Park1',\n svgicon: leafgon_url + \"/icons/hardware/laptop_mac/materialicons/24px.svg\", // refactor to have this set in LEAF\n description: \"{description}\", // refactor to have this set in LEAF\n nodeinput: _data_in.nodeinput,\n lambdas: {\n // a dictionary of lambda functions belonging to the 1st tier node\n // refactor to have this set using the argument lambdaFunc\n default: \"defaultLambda\", // or undefined,\n defaultLambda: _defaultLambda,\n bro: (input$) => {\n return input$;\n }, // somehow break down lambdaFunc to have an arbitrary number of lambda functions destructured here\n },\n subscription: is_lambda_subscription,\n clubs: a_club_list, // a list of club-level satellite entries of 1st-tier navigable nodes\n };\n\n console.log(\"node logic executed: \" + JSON.stringify(_data_out));\n\n return doBottle(\"_leafdeckdiamond\", _data_out);\n };\n\n // wire in node-specific flow functions, if any\n const nodectrl$ = controlflow$obj._stream;\n //const nodectrl$ = controlflow$obj._stream.pipe(\n // concatMap(_ctrl_in=> {\n // ctrl_in_cache = _ctrl_in;\n // return [of(_ctrl_in), lambdakey$obj._stream];\n // }),\n // map( ([_ctrl_in, _lambdakey]) => { //\n // bottle_label = _lambdakey;\n // return _ctrl_in;\n // })\n //);\n\n //const consolidated_input$objArr = [combineDataflows(refnode, input$objArr)];\n //const consolidated_input$objArr = [{_stream: chronosDataflow(controlflow$obj._stream, input$objArr.map(_$obj=>_$obj._stream), false, CHRONOSTYPE_SYNC, {time: 10000})}];\n const output$obj = driveDataflowByCtrlflow(\n { _stream: nodectrl$ },\n input$objArr,\n undefined,\n { ...node_context, metastep: \"creating a leafdeckdiamond element\" },\n {\n //leaflogic: (input$objArr.length > 0 ? _leafdeckdiamond_leaflogic : undefined),\n datalogic: {\n pre: preprocessfunc,\n post: postprocessfunc,\n },\n },\n );\n\n //let flowoutput$;\n\n //// filter out any null entries in the result array\n //const output$Arr = [{_stream: flowoutput$.pipe(filter(_entry=>_entry))}];\n ////return {...(bottleUp(output$Arr, controlflow$obj)), _control: controlflow$obj};\n //return {_stream: flowoutput$.pipe(filter(_entry=>_entry)), _control: controlflow$obj};\n //// no output on no input\n return {\n _stream: output$obj._stream.pipe(\n map((_data) => {\n console.log(_data);\n return _data;\n }),\n ),\n _control: output$obj._control,\n };\n };\n },\n lambda:\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n // space for node type specific init prior to use\n // note the cross over in the roles of nodelambda and contextuallambda\n const reduced_lambda_obj = await etaReduceLambdaGraphs({\n refnode,\n nodelambda: contextuallambda,\n contextuallambda: nodelambda,\n etaTree: lambdactrl.gos.etaTree,\n });\n const lambda_lut = {};\n Object.entries(reduced_lambda_obj).map(([key, etafunc]) => {\n lambda_lut[key] = (input$Arr, controlflow$obj) => {\n // a dataflow-scoped func per key\n const output$ = etafunc(input$Arr, controlflow$obj);\n return { _stream: output$, _control: controlflow$obj };\n };\n });\n return lambda_lut;\n },\n};\n\nexport { _leafdeckdiamond };\n","import { etaReduceLambdaGraphs } from \"../../eta.js\";\nimport { map } from \"rxjs/operators\";\n//import { red } from '@mui/material/colors';\nimport { mergeDataflows } from \"../../../utils/leafdataflow.js\";\nimport { fetchMultiKeyedData } from \"../../../utils/fetchnodedata.js\";\nimport { _leafstdlib_dataflow_api } from \"../../../metamodel.js\";\nimport { v4 as uuid4 } from \"uuid\";\nimport { driveDataflowByCtrlflow } from \"../../leaf.js\";\nimport { isBottle } from \"../../predicates.js\";\nimport { doBottle, doUnbottle } from \"../datautils/bottling.js\";\n\nconst leafgon_url = process.env.LEAFGON_URL;\nconst leaf_apidef = _leafstdlib_dataflow_api(\"leafdeckclub\");\n\n//const _leafdeckclub = ({logictoggle=false, deckname=''}={}, lambdaFunc=x=>x, graphContextual) => {}\nconst _leafdeckclub = {\n dataflow:\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n // space for node type specific init prior to use\n // check for parsing error conditions\n if (!contextuallambda) {\n throw (\n `LEAF error: the logical construct built using the ${refnodedata.leaf.logic.type} node ` +\n `(${refnode}) called with args (${JSON.stringify(refnodedata.leaf.logic.args)}).`\n );\n }\n const reduced_lambda_obj = await etaReduceLambdaGraphs({\n refnode,\n nodelambda,\n contextuallambda,\n etaTree: lambdactrl.gos.etaTree,\n });\n\n // spark_dev_note: I think _leafdataUnbottle currently only supports a single key, in the future it would be whole lot more useful\n // if it supported an array of keys to be unbottled in one go.\n //const filterDataOfInterest = _leafdataUnbottle({refnodedata: {leaf: {logic: {args: {bottlekey:'_leafdeckclub'}}}}, contextuallambda});\n // lambdactrl.user.leaf.logic.args.bottlekey || lambdadata.lambdaFunc\n //const bottleUp = await _leafbottle.dataflow(lambdactrl)({refnodedata: {leaf: {logic: {args: {bottlekey:'_leafdeckclub'}}}}, nodelambda: [], contextuallambda});\n\n const node_context = {\n codebase: \"leafdeckclub.js\",\n refnode,\n leafnode:\n refnode &&\n lambdactrl.gos.etaTree.leafgraph.graph.dataflow.getNodeAttributes(refnode).leafnode.data,\n };\n\n return (input$objArr, controlflow$obj) => {\n const preprocessfunc = (_data_in) => {\n //const _data_out = doUnbottle(undefined, _data_in); // unbottle all bottles\n\n const _data_in_arr = Array.isArray(_data_in) ? _data_in : [_data_in];\n const _data_out = { nodeinput: [] };\n\n // sort input bottles into two categories and store them in _data_out\n _data_in_arr.map((_datum_in) => {\n if (isBottle(_datum_in)) {\n if (_datum_in._bname === \"nodeinput\") {\n _data_out.nodeinput.push(doUnbottle(\"nodeinput\", _datum_in));\n }\n }\n });\n\n return _data_out;\n };\n\n //const _leafdeckclub_leaflogic = (_input$objArr, _controlflow$obj) => {\n // //const uri$obj = driveDataflowByCtrlflow(\n // // controlflow$obj, input$objArr, undefined, node_context,\n // // {\n // // leaflogic: urigen,\n // // datalogic: {post: (_data) => {\n // // _stream_cache[ElemCacheKeyLUT.mediaplayer.URI] = _data;\n // // return _data;\n // // }}\n // // }\n // //);\n\n // //const _inflow_ctrl$obj = uri$obj._control;\n // const _inflow_ctrl$obj = _controlflow$obj;\n\n // const _outflow_data$ = new ReplaySubject(1);\n // const _ctrl_out$ = _inflow_ctrl$obj._stream.pipe(\n // concatMap(_ctrl_in => {\n // _stream_cache[ElemCacheKeyLUT.CTRLIN] = _ctrl_in;\n\n // // perform any input data (read) operations specific to the element here\n // // like accessing the most up-to-date messages from rx subjects/streams, etc\n\n // // return data read from the rx stream domain as an array\n // return combineLatest([..._input$objArr.map(_obj=>_obj._stream)]);\n // }),\n // map(_data_in => {\n // console.log(\"testing element _leaflogic: \", _data_in);\n // // perform any output data (write) operations specific to the element here\n // // like sending messages to rx subjects, etc\n\n // if (_data_in.length > 1)\n // _outflow_data$.next(_data_in);\n // else if (_data_in.length === 1)\n // _outflow_data$.next(_data_in[0]);\n // // return ctrl\n // return _stream_cache[ElemCacheKeyLUT.CTRLIN];\n // })\n // );\n\n // return {_stream: _outflow_data$, _control: {_stream: _ctrl_out$}}\n //};\n\n const loopidx = controlflow$obj._config?.loopidx;\n const { args } = refnodedata.leaf.logic;\n const _defaultLambda =\n \"_default\" in reduced_lambda_obj\n ? (_input$objArr, _controlflow$obj) => {\n const diamondctrlflow$obj = { ..._controlflow$obj };\n if (loopidx >= 0)\n // add loopidx ctrl config data to whatever ctrl data being passed in normally via hammer action in sysmenu.js\n diamondctrlflow$obj._config.loopidx = loopidx;\n diamondctrlflow$obj._config.clubrefnode = refnode;\n const _output$obj = reduced_lambda_obj._default(_input$objArr, diamondctrlflow$obj);\n return _output$obj;\n }\n : (_input$objArr, _controlflow$obj) => {\n console.log(\"start debugging\");\n return { ...mergeDataflows(_input$objArr), _control: _controlflow$obj };\n };\n\n const postprocessfunc = (_data_in) => {\n //const a_club_list = _data_in;\n const is_lambda_subscription = \"subscribe\" in reduced_lambda_obj;\n\n const _data_out = {\n type: \"leafdeckclub\",\n uuid: uuid4(), // random uuid\n nodeuuid: refnode,\n name: fetchMultiKeyedData(leaf_apidef.editorconfig.namedatakey, args), //refnodedata.leaf.logic.args.deckname, // refactor to have deckname concatenated with an index e.g. 'Park1',\n svgicon: leafgon_url + \"/icons/hardware/laptop_mac/materialicons/24px.svg\", // refactor to have this set in LEAF\n description: \"{description}\", // refactor to have this set in LEAF\n nodeinput: _data_in.nodeinput,\n lambdas: {\n // a dictionary of lambda functions belonging to the 1st tier node\n // refactor to have this set using the argument lambdaFunc\n default: \"defaultLambda\", // or undefined,\n defaultLambda: _defaultLambda,\n bro: (input$) => {\n return input$;\n }, // somehow break down lambdaFunc to have an arbitrary number of lambda functions destructured here\n },\n subscription: is_lambda_subscription,\n };\n\n console.log(\"node logic executed: \" + JSON.stringify(_data_out));\n\n return doBottle(\"_leafdeckclub\", _data_out);\n };\n\n // wire in node-specific flow functions, if any\n const nodectrl$ = controlflow$obj._stream.pipe(\n map((_in_ctrl) => {\n return _in_ctrl;\n }),\n );\n //const nodectrl$ = controlflow$obj._stream.pipe(\n // concatMap(_ctrl_in=> {\n // ctrl_in_cache = _ctrl_in;\n // return [of(_ctrl_in), lambdakey$obj._stream];\n // }),\n // map( ([_ctrl_in, _lambdakey]) => { //\n // bottle_label = _lambdakey;\n // return _ctrl_in;\n // })\n //);\n\n //const consolidated_input$objArr = [combineDataflows(refnode, input$objArr)];\n //const consolidated_input$objArr = [{_stream: chronosDataflow(controlflow$obj._stream, input$objArr.map(_$obj=>_$obj._stream), false, CHRONOSTYPE_SYNC, {time: 10000})}];\n const output$obj = driveDataflowByCtrlflow(\n { _stream: nodectrl$ },\n input$objArr,\n undefined,\n { ...node_context, metastep: \"creating a leafdeckclub element\" },\n {\n //leaflogic: filterDataOfInterest,\n datalogic: {\n pre: preprocessfunc,\n post: postprocessfunc,\n },\n },\n );\n\n //let flowoutput$;\n\n //// filter out any null entries in the result array\n //const output$Arr = [{_stream: flowoutput$.pipe(filter(_entry=>_entry))}];\n ////return {...(bottleUp(output$Arr, controlflow$obj)), _control: controlflow$obj};\n //return {_stream: flowoutput$.pipe(filter(_entry=>_entry)), _control: controlflow$obj};\n //// no output on no input\n //return output$obj;\n return {\n _stream: output$obj._stream.pipe(\n map((_data) => {\n console.log(_data);\n return _data;\n }),\n ),\n _control: output$obj._control,\n };\n };\n },\n lambda:\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n // space for node type specific init prior to use\n // note the cross over in the roles of nodelambda and contextuallambda\n const reduced_lambda_obj = await etaReduceLambdaGraphs({\n refnode,\n nodelambda: contextuallambda,\n contextuallambda: nodelambda,\n etaTree: lambdactrl.gos.etaTree,\n });\n const lambda_lut = {};\n Object.entries(reduced_lambda_obj).map(([key, etafunc]) => {\n lambda_lut[key] = (input$Arr, controlflow_obj) => {\n // a dataflow-scoped func per key\n const output_obj = etafunc(input$Arr, controlflow_obj);\n return { ...output_obj, _control: controlflow_obj };\n };\n });\n return lambda_lut;\n },\n};\n\nexport { _leafdeckclub };\n","import { etaReduceLambdaGraphs } from \"../../eta.js\";\nimport { map, filter } from \"rxjs/operators\";\nimport { _leafunbottle } from \"../datautils/index.js\";\n//import { combineInputStreams } from '../../leaf';\n\n/*\n * _leafgnav() is a runtime function for the LEAFgraph node of logic type 'leafgnav.\n * it is used to register a list of navigable nodes passed to the leaf node\n * via its incoming data flow, for visualization in gnav.js. The data registration involves\n * inter-componenet data communication via useLEAFIOapi from ghostOS. The leaf node simply\n * handles the preprocessing/filtering of incoming data and transmiting the data over useLEAFIOapi.\n *\n * @nodeconfig: reserved for configuring the leaf node, currently not in use (26 Feb 2022)\n * @lambdaFunc: is a function defined in the context of the calling LEAF graph. It accepts flowinput$ as\n * input and returns as output a stream carrying data as defined by the lambda component in LEAF.\n * The lambdaFunc, if defined, represents the 'Model' of the MVI framework, where the user clicking on\n * the corresponding navigable node represents the 'Intent' of MVI. The outcome of executing the lambdaFunc\n * needs to be reflected back to the user somehow, usually by means of gnav.js, whose effect in turn constitutes\n * the View of MVI.\n *\n * Upon the leafgnav node logic executing, its effect in the rhelm of gnav.js is expected to take place.\n * Currently unsure whether it would be useful to have anything returned out of this leaf node post execution.\n *\n * TBD:\n * @graphContextual: n/a\n * or\n * @graphContextual: a parsed runtime lambda function connected to the graph of which the current node is a member\n *\n * bottles the node look out for in the dataflow plane for filtering data of interest:\n * '_leafdeckspade' & '_leafdeckheart'\n */\nconst _leafgnav = {\n dataflow:\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n // space for node type specific init prior to use\n // check for parsing error conditions\n if (!contextuallambda) {\n throw (\n `LEAF error: the logical construct built using the ${refnodedata.leaf.logic.type} node ` +\n `(${refnode}) called with args (${JSON.stringify(refnodedata.leaf.logic.args)}).`\n );\n }\n await etaReduceLambdaGraphs({\n refnode,\n nodelambda: contextuallambda,\n contextuallambda: nodelambda,\n etaTree: lambdactrl.gos.etaTree,\n });\n\n // spark_dev_note: I think _leafdataUnbottle currently only supports a single key, in the future it would be whole lot more useful\n // if it supported an array of keys to be unbottled in one go.\n //const filterDataOfInterest = _leafdataUnbottle({refnodedata: {leaf: {logic: {args: {bottlekey:'_leafdeckclub'}}}}, contextuallambda});\n // lambdactrl.user.leaf.logic.args.bottlekey || lambdadata.lambdaFunc\n //const bottleUp = _leafdataBottle({refnodedata: {leaf: {logic: {args: {bottlekey:'_leafdeckclub'}}}}, contextuallambda});\n\n // spark_dev_note: The respective leaf nodes of leafdeckspade and leafdeckheart operate on their own on an individual leaf node basis.\n // this would mean that incoming data arrive in individual bottles in the dataflow plane.\n // it is therefore imperative that each individual bottle is unbottled and the resulting unbottled content flow\n // be combined accordingly (here using 'zipLatest' leaf combine operator) to produce a single input stream combinedInput$.\n const filterDeckSpadeBottles = _leafunbottle.dataflow(lambdactrl)({\n refnodedata: { leaf: { logic: { args: { bottlekey: \"_leafdeckspade\" } } } },\n nodelambda: [],\n contextuallambda,\n });\n const filterDeckHeartBottles = _leafunbottle.dataflow(lambdactrl)({\n refnodedata: { leaf: { logic: { args: { bottlekey: \"_leafdeckheart\" } } } },\n nodelambda: [],\n contextuallambda,\n });\n // _leafpopupview is a leaf standard bottle to carry data for programming the user intent in a radial popup button in 3d-gnav regarding launching a popup window\n // and filterPopupView() filters (in the dataflow plane) any _leafpopupview bottles\n\n // spark_dev_note: some words on what \"leaf standard bottle\" is:\n // leaf has two data domains (data and lambda) and the data data domain consists of a dataflow plane while\n // the lambda data domain consists of a control plane and a data plane. the data plane (of lambda domain) carries user-defined lambdaFunc and/or graphContextual\n // the control plane (of lambda domain) carries user-defined node config arguments as well as a gos-defined directory of inter-component comms channels\n // \"bottle\" is a leaf standard means of carrying data in the dataflow plane.\n // standard bottles can be instantiated using the leaf logic (i.e. the bottling leaf node) to bottle data,\n // for example using the standard key '_leafpopupview' or other standard keys all prefixed with '_leaf'.\n // you can input '_leaf' prefixed key names as you would input any other bottle keys in the bottling node.\n // a drop-down list of standard key names could be made available in bottling nodes down the road.\n // bottles can flow only through the dataflow plane, hence only through the data data domain,\n // and the flow is represented in leaf editor as going in the direction from left to right.\n // top to bottom is the representation in leaf editor of the direction of logical flow\n // in the lambda data domain.\n // (possible future expansion would support auto-layout algorithms that can cater for various user preferences).\n\n //const nodeInputGnavConfig = {combineOperator: 'zipLatest', isIndexed: false, metamodel: LEAFIOmetamodel.breezyforest}; // get node specific input stream combining config, default is {}\n const combineNodeDataGnavStreams = undefined; //combineInputStreams({ combineOperator: \"zipLatest\", isIndexed: false });\n\n return (flowinput$) => {\n const incomingSpade$ = filterDeckSpadeBottles(flowinput$);\n const incomingHearts$ = filterDeckHeartBottles(flowinput$);\n // work on gnav input dataflow (aka the moon and the orbital)\n const combinedGnavInput$ = combineNodeDataGnavStreams([incomingSpade$, incomingHearts$]);\n const gnavflowoutput$ = combinedGnavInput$.pipe(\n map((_data) => {\n // a window for debugging\n console.log(_data);\n return _data;\n }),\n map((node_input) => {\n let node_output = null;\n // execute node level logic and optionally set node_output here\n\n // go ahead with inter-component communication via using the dataflowplane/appview channels to communicate with gnav react component's useLEAFIOapi\n // spark_dev_note: currently, masterSubsDirectory doesn't get passed down here to this breezyforest node definition\n // which is essential in establishing the inter-component communication necessary.\n\n console.log(\"node logic executed: \" + JSON.stringify(node_output));\n return node_output ? node_output : node_input; // the default is to return input i as is. return a node defined non-null output otherwise.\n }),\n );\n\n // work on popup input dataflow (aka popup windows)\n return gnavflowoutput$.pipe(filter((_entry) => _entry)); // filter out any null entries in the result array\n };\n },\n lambda:\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n // space for node type specific init prior to use\n // note the cross over in the roles of nodelambda and contextuallambda\n const reduced_lambda_obj = await etaReduceLambdaGraphs({\n refnode,\n nodelambda: contextuallambda,\n contextuallambda: nodelambda,\n etaTree: lambdactrl.gos.etaTree,\n });\n const lambda_lut = {};\n Object.entries(reduced_lambda_obj).map(([key, etafunc]) => {\n lambda_lut[key] = (input$) => {\n // a dataflow-scoped func per key\n const output$ = etafunc(input$);\n return output$;\n };\n });\n return lambda_lut;\n },\n};\n\nexport { _leafgnav };\n","import { etaReduceLambdaGraphs } from \"../../eta.js\";\nimport { map, filter } from \"rxjs/operators\";\nimport { _leafbottle } from \"../datautils/index.js\";\n\nconst leafgon_url = process.env.LEAFGON_URL;\n\n//const _leafpopupview = ({logictoggle=false, deckname=''}={}, lambdaFunc=x=>x, graphContextual) => {}\nconst _leafpopupview = {\n dataflow:\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n // space for node type specific init prior to use\n // check for parsing error conditions\n if (!contextuallambda) {\n throw (\n `LEAF error: the logical construct built using the ${refnodedata.leaf.logic.type} node ` +\n `(${refnode}) called with args (${JSON.stringify(refnodedata.leaf.logic.args)}).`\n );\n }\n const reduced_lambda_obj = await etaReduceLambdaGraphs({\n refnode,\n nodelambda: contextuallambda,\n contextuallambda: nodelambda,\n etaTree: lambdactrl.gos.etaTree,\n });\n\n const _defaultLambda =\n \"_default\" in reduced_lambda_obj\n ? (input$) => reduced_lambda_obj._default([input$])\n : (input$) => input$;\n\n // spark_dev_note: I think _leafdataUnbottle currently only supports a single key, in the future it would be whole lot more useful\n // if it supported an array of keys to be unbottled in one go.\n\n //const filterDataOfInterest = _leafdataUnbottle({bottlekey:'_leafdeck'});\n const bottleUp = _leafbottle.dataflow(lambdactrl)({\n refnodedata: { leaf: { logic: { args: { bottlekey: \"_leafpopupview\" } } } },\n nodelambda: [],\n contextuallambda,\n });\n\n return (flowinput$Arr) => {\n const flowoutput$ = flowinput$Arr.pipe(\n map((_data) => {\n // a window for debugging\n console.log(_data);\n return _data;\n }),\n map((node_input) => {\n let node_output = null;\n //console.log('input$ ' + JSON.stringify(input$));\n //console.log('a leafpopupview processed for node ' + deckname + ' with toggle: ' + logictoggle + ', flowinput: ' + node_input);\n //console.log('input: '+ node_input + ' ' + Date.now() + ' ' + JSON.stringify(node_data));\n // execute node level logic and optionally set node_output here\n // put together a data object as required by gnav's popup view to function.\n\n // for test node_output only, however much of what it's supposed to do is meaningless here, as it was copied over from _leafdeckheart() {\n node_output = {\n type: \"leafpopupview\",\n uuid: \"308bd84f-3af2-478e-ae35-b2842a9bd3a1\", // refactor to have this deterministically generated\n //name: deckname, // refactor to have deckname concatenated with an index e.g. 'Park1',\n svgicon: leafgon_url + \"/icons/hardware/laptop_mac/materialicons/24px.svg\", // refactor to have this set in LEAF\n description: \"coolest popupview in LEAF\", // refactor to have this set in LEAF\n lambdas: {\n // a dictionary of lambda functions belonging to the 1st tier node\n // refactor to have this set using the argument lambdaFunc\n default: \"defaultLambda\", // or undefined,\n defaultLambda: _defaultLambda,\n bro: (input$) => {\n return input$;\n }, // somehow break down lambdaFunc to have an arbitrary number of lambda functions destructured here\n },\n };\n // end of test }\n\n console.log(\"node logic executed: \" + JSON.stringify(node_output));\n return node_output ? node_output : node_input; // the default is to return input i as is. return a node defined non-null output otherwise.\n }),\n );\n return bottleUp(flowoutput$.pipe(filter((_entry) => _entry))); // filter out any null entries in the result array\n };\n },\n lambda:\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n // space for node type specific init prior to use\n // note the cross over in the roles of nodelambda and contextuallambda\n const reduced_lambda_obj = await etaReduceLambdaGraphs({\n refnode,\n nodelambda: contextuallambda,\n contextuallambda: nodelambda,\n etaTree: lambdactrl.gos.etaTree,\n });\n const lambda_lut = {};\n Object.entries(reduced_lambda_obj).map(([key, etafunc]) => {\n lambda_lut[key] = (input$) => {\n // a dataflow-scoped func per key\n const output$ = etafunc(input$);\n return output$;\n };\n });\n return lambda_lut;\n },\n};\n\nexport { _leafpopupview };\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"axios\");","import { BehaviorSubject, withLatestFrom } from \"rxjs\";\nimport { map } from \"rxjs/operators\";\n\nimport { ElemCacheKeyLUT, formatElementFlowdata } from \"./index.js\";\nimport { driveDataflowByCtrlflow } from \"../../../leaf.js\";\nimport { doBottle } from \"../../datautils/bottling.js\";\n//import { driveDataflowByCtrlflow } from \"../../../leaf\";\n\nconst raceConditionError = doBottle(\n \"error\",\n {\n type: \"critical\",\n message: \"LEAF core error: race condition detected in mediaplayer.js\",\n codebase: \"/src/ghostos/api/parser/nodelogic/elements/library/mediaplayer.js\",\n },\n {},\n);\n/*\n * spark_dev_note: 25/Apr/2023\n * all leaflogic and datalogic functions must be designed to conform to the following spec,\n * in order to make sure of the inter-operability of newly developed leaf elements\n * in breezyforest.\n *\n * leaflogic lives in the rx flow domain, hence is an ideal function to deal with\n * any data i/o existing in that domain. Data in the reactive stream domain is accessable via\n * invoking leaf lambda functions, normally bearing the function argument signature of ([input$Arr, ctrlflow$obj]),\n * or via calling any functions or rx inline pipe-map that would provide the logic for statically\n * manipulating data flown through any locally accessable rx streams of interest.\n * Please note the convention of variable names post-scripted with the dollar sign ($), denoting the handles for\n * respective data streams.\n *\n * datalogic lives in the static data domain. How data i/o happens in this domain is not directly compatible with the stream domain.\n * the two optional datalogic functions, pre and post, are used to \"statically\" work on data, in terms of taking data input,\n * performing data transformation/read/write operations, and returning data output, at two temporal data points, respectively\n * coinciding with the time before (pre) and after (post) the incidence of data flowing through the leaflogic stream domain.\n *\n */\n\nconst cachekeys = {\n URI: \"_uri\",\n};\n\nconst initElementInterface = (_stream_cache) => {\n const reduced_lambda_obj = _stream_cache[ElemCacheKeyLUT.LAMBDA_OBJ];\n const urigen =\n \"uri\" in reduced_lambda_obj && \"_default\" in reduced_lambda_obj.uri\n ? reduced_lambda_obj.uri._default\n : undefined;\n //const uri$obj = urigen ? executeLEAFLogicInSync(urigen, merged_input$, undefined, _ctrl_data$, {...controlflow$obj._config}) : {_stream: of([])};\n const node_context = {\n codebase: \"ghostos/api/parser/nodelogic/elements/library/mediaplayer.js\",\n refnode: _stream_cache[ElemCacheKeyLUT.REFNODE],\n //leafnode: lambdactrl.gos.etaTree.leafgraph.graph.dataflow.getNodeAttributes(refnode).leafnode.data\n };\n const _mediaplayer_leaflogic = (input$objArr, controlflow$obj) => {\n const uri$obj = driveDataflowByCtrlflow(\n controlflow$obj,\n input$objArr,\n undefined,\n node_context,\n {\n leaflogic: urigen,\n datalogic: {\n post: (_data) => {\n _stream_cache[ElemCacheKeyLUT.mediaplayer.URI] = _data;\n return _data;\n },\n },\n },\n );\n\n const _inflow_ctrl$obj = uri$obj._control;\n\n const _outflow_data$ = new BehaviorSubject(raceConditionError);\n const _ctrl_out$ = _inflow_ctrl$obj._stream.pipe(\n //concatMap(_ctrl_in => {\n // _stream_cache[ElemCacheKeyLUT.CTRLIN] = _ctrl_in;\n\n // // perform any input data (read) operations specific to the element here\n // // like accessing the most up-to-date messages from rx subjects/streams, etc\n\n // // return data read from the rx stream domain as an array\n // return combineLatest([...input$objArr.map(_obj=>_obj._stream)]);\n //}),\n withLatestFrom(...input$objArr.map((_input) => _input._stream)),\n map((_combined_in) => {\n const _data_in = _combined_in[1];\n console.log(\"testing element _leaflogic: \", _data_in);\n // perform any output data (write) operations specific to the element here\n // like sending messages to rx subjects, etc\n\n _outflow_data$.next(_data_in);\n //if (_data_in.length > 1)\n // _outflow_data$.next(_data_in);\n //else if (_data_in.length === 1)\n // _outflow_data$.next(_data_in[0]);\n // return ctrl\n //return _stream_cache[ElemCacheKeyLUT.CTRLIN];\n return _combined_in[0];\n }),\n );\n\n return { _stream: _outflow_data$, _control: { _stream: _ctrl_out$ } };\n };\n\n // put any static data preprocessing logic applied to all incident data,\n // flown on each incoming edge stream.\n // data preprocessed and returned from this function will continue to flow in the data domain\n // of the current element node.\n const _datalogic_pre = (data_in) => {\n const data_out = data_in;\n\n return data_out;\n };\n\n // put any static data postprocessing logic applied to all incident data,\n // to be flown on the outgoing edge stream.\n // data postprocessed and returned from this function will continue to flow in the data domain\n // of the current element node.\n const _datalogic_post = (data_in) => {\n //const recognizedLambdaConstants = ['uidefs', 'margin', 'fieldwidth'];\n const node_output = formatElementFlowdata(\n {\n element: {\n nodeuuid: _stream_cache[ElemCacheKeyLUT.REFNODE],\n type: \"mediaplayer\",\n componentdata: {\n //etaTree: lambdactrl.gos.etaTree,\n uri: _stream_cache[ElemCacheKeyLUT.mediaplayer.URI], //uidefs,\n //margin: marginval ? marginval[0] : 1,\n //fieldwidth: fieldwidthval ? fieldwidthval[0] : '25ch',\n ..._stream_cache[ElemCacheKeyLUT.RTCONTEXT],\n },\n },\n },\n \"screenio\",\n );\n\n return node_output;\n };\n\n const _leaflogic = _mediaplayer_leaflogic; // codifying the location (\"mediaplayer.js\") of the logic\n\n return {\n leaflogic: _leaflogic,\n datalogic: {\n pre: _datalogic_pre,\n post: _datalogic_post,\n },\n };\n};\n\nconst props = initElementInterface;\n\nexport { props, cachekeys };\n","import { Subject, merge, of } from \"rxjs\";\nimport { filter, map, share, switchMap, withLatestFrom } from \"rxjs/operators\";\n\nimport { ElemCacheKeyLUT, formatElementFlowdata } from \"./index.js\";\nimport { driveDataflowByCtrlflow } from \"../../../leaf.js\";\nimport { isBottle } from \"../../../predicates.js\";\nimport { doBottle } from \"../../datautils/bottling.js\";\n\nconst raceConditionError = doBottle(\n \"error\",\n {\n type: \"critical\",\n message: \"LEAF core error: race condition detected in prompt.js\",\n codebase: \"/src/ghostos/api/parser/nodelogic/elements/library/prompt.js\",\n },\n {},\n);\n/*\n * spark_dev_note: 25/Apr/2023\n * all leaflogic and datalogic functions must be designed to conform to the following spec,\n * in order to make sure of the inter-operability of newly developed leaf elements\n * in breezyforest.\n *\n * leaflogic lives in the rx flow domain, hence is an ideal function to deal with\n * any data i/o existing in that domain. Data in the reactive stream domain is accessable via\n * invoking leaf lambda functions, normally bearing the function argument signature of ([input$Arr, ctrlflow$obj]),\n * or via calling any functions or rx inline pipe-map that would provide the logic for statically\n * manipulating data flown through any locally accessable rx streams of interest.\n * Please note the convention of variable names post-scripted with the dollar sign ($), denoting the handles for\n * respective data streams.\n *\n * datalogic lives in the static data domain. How data i/o happens in this domain is not directly compatible with the stream domain.\n * the two optional datalogic functions, pre and post, are used to \"statically\" work on data, in terms of taking data input,\n * performing data transformation/read/write operations, and returning data output, at two temporal data points, respectively\n * coinciding with the time before (pre) and after (post) the incidence of data flowing through the leaflogic stream domain.\n *\n */\n\nconst cachekeys = {\n UIDEFS: \"_uidefs\",\n};\n\nconst initElementInterface = (_stream_cache) => {\n const reduced_lambda_obj = _stream_cache[ElemCacheKeyLUT.LAMBDA_OBJ];\n const uidefsgen =\n \"uidefs\" in reduced_lambda_obj && \"_default\" in reduced_lambda_obj.uidefs\n ? reduced_lambda_obj.uidefs._default\n : undefined;\n const elementioInput$ = new Subject();\n\n const _TEST_UIDEFS = `[ ; an open square bracket [ denotes the beginning of a list, followed by a matching \n ; close square bracket ] appearing at the end of this page. you can bring your blinking cursor\n ; to one of the brackets and type Shift-5 (or %) to jump the cursor in between a pair of matching brackets. \n ; please give it a go, it is a fun way to read any text written in LEAFlisp. \n ; other helpful command keys to help you navigate LEAFlisp include h j k l with which the blinking cursor\n ; can be moved to the left, down, up and right respectively. Also useful are w b respectively used to command\n ; the cursor to move forward and backward by one word along the line. Shift-v can be used to select one line,\n ; v to select from where the cursor currently is and navigating away from the initial cursor point by using\n ; any mix of the navigation command keys, namely h j k l w and b would allow you to select any range of text of interest.\n ; at which point you could either copy, delete and/or paste the selected text by respectively pressing y, d and p\n ; pressing u would undo the changes you have made going back in time one change by one change as you repeat u in a series. \n ; Ctrl-r would redo what had been undone. \n ; using the command keys would require the editor to be in the \"command\" mode. pressing the escape key would put the editor \n ; in the \"command\" mode, while pressing i would put the editor in the \"edit\" mode in which none of the navigation keys\n ; would work as navigation commands but as entering respective alphabets instead. \n ; \n {\n :prompt \"setting\"\n :backgroundColor \"primary.light\" \n ; \"primary.dark\" | \"secondary.light\" \"secondary.dark\"\n :margin \"1\" \n ; please note that any positive number in between quotes is accepted here. \n ; the recommended value however would range from 0 to 20 in almost all general \n ; usage scenarios where 0 to 5 whould perhaps comprise about 90% of the cases. \n :fieldWidth \"45ch\" \n ; ch is a unit length represented in terms of the width of the letter 0 (zero).\n ; so \"15ch\" would result in the width as wide as 15 zeros for all the text inputs below. \n ; please refer to the following site for units in html/css lingo, if you have all the time in the world.\n ; https://www.w3schools.com/cssref/css_units.asp for units\n :buttonWidth \"20ch\"\n ; likewise, buttonWidth specifies the width of all the buttons declared below. \n }\n {\n :prompt \"text\"\n :key \"maintext1\" ; :key is a user-defined string value, that should be unique within the context of the UI definition.\n :label \"LEAF newsletter mailing list\" ; a user-defined string label to be displayed on the text input.\n :variant \"outlined\" ; a text :variant with a choice of \"standard\", \"outlined\", or \"filled\" as its style.\n :multiline true\n :rows \"2\"\n :InputProps {:readOnly true}\n :defaultValue \"Please fill out the info and subscribe to the mailing list.\"\n }\n {\n :prompt \"text\"\n ;:key (get (get (get (get uinodes 1) :meta) :label) :id) ; :key is a user-defined string value, that should be unique within the context of the UI definition.\n :key \"name\" ; :key is a user-defined string value, that should be unique within the context of the UI definition.\n ;:id (get (get (get (get uinodes 1) :meta) :label) :id)\n :fieldWidth \"25ch\" \n :required true ;true\n :group 1\n :label \"Your name\" ;(get (get (get (get uinodes 1) :meta) :label) :text); a user-defined string label to be displayed on the text input.\n :variant \"standard\" ; a text :variant with a choice of \"standard\", \"outlined\", or \"filled\" as its style.\n }\n {\n :prompt \"text\"\n :key \"email\"\n :fieldWidth \"25ch\" \n :required true\n :label \"Your email\"\n :type \"email\"\n :variant \"standard\"\n }\n { \n :prompt \"button\"\n :color \"secondary\" \n ; the value can be of \"primary\", \"secondary\", \"error\", \"warning\", \"info\", \"success\"\n :variant \"outlined\"\n ; the value can be of \"text\", \"contained\", \"outlined\"\n :key \"subscribebtn\"\n ; :href \"/editor/breezyforest/main\"\n ; :href can support a relative path\n :label \"Subscribe\"\n }\n ]`;\n const node_context = {\n codebase: \"ghostos/api/parser/nodelogic/elements/library/prompt.js\",\n refnode: _stream_cache[ElemCacheKeyLUT.REFNODE],\n //leafnode: lambdactrl.gos.etaTree.leafgraph.graph.dataflow.getNodeAttributes(refnode).leafnode.data\n };\n\n const _leaflogic = (input$objArr, controlflow$obj) => {\n //const _stream_cache = {};\n //const _outflow_data$ = new BehaviorSubject(raceConditionError);\n const _outflow_data$ = new Subject();\n //const uidefs$obj = uidefsgen ? uidefsgen(input$objArr, controlflow$obj) :\n // {_stream: of(_TEST_UIDEFS)}; // executeLEAFLogicInSync(urigen, merged_input$, undefined, _ctrl_data$, {...controlflow$obj._config}) : {_stream: of([]), _control: {_stream: _ctrl_data$}};\n\n const uidefs$obj = uidefsgen\n ? driveDataflowByCtrlflow(controlflow$obj, input$objArr, undefined, node_context, {\n leaflogic: uidefsgen,\n datalogic: {\n post: (_data) => {\n _stream_cache[ElemCacheKeyLUT.prompt.UIDEFS] = _data;\n return _data;\n },\n },\n })\n : { _stream: of(_TEST_UIDEFS), _control: { _stream: controlflow$obj._stream } };\n //const margin$obj = margingen ? margingen(input$objArr, controlflow$obj) :\n // {_stream: of(_TEST_MARGIN)}; //executeLEAFLogicInSync(headergen, merged_input$, undefined, _ctrl_data$, {...controlflow$obj._config}) : {_stream: of([]), _control: {_stream: _ctrl_data$}};\n //const fieldwidth$obj = fieldwidthgen ? fieldwidthgen(input$objArr, controlflow$obj) :\n // {_stream: of(_TEST_FIELDWIDTH)}; //executeLEAFLogicInSync(headergen, merged_input$, undefined, _ctrl_data$, {...controlflow$obj._config}) : {_stream: of([]), _control: {_stream: _ctrl_data$}};\n\n const _ctrl_out$ = uidefs$obj._control._stream.pipe(\n //map(_ctrl_in => {\n // _stream_cache[ElemCacheKeyLUT.CTRLIN] = _ctrl_in;\n // return uidefs$obj._stream;\n //}),\n withLatestFrom(uidefs$obj._stream),\n switchMap((merged_in) => {\n const _uidefs_in = merged_in[1];\n _stream_cache[ElemCacheKeyLUT.CTRLIN] = merged_in[0];\n // perform any input data (read) operations specific to the element here\n // like accessing the most up-to-date messages from rx subjects/streams, etc\n // spark_dev_note: #http_dataflow_point\n //const _data_in$ = combineLatest([uidefs$obj._stream, margin$obj._stream, fieldwidth$obj._stream, ...input$objArr.map(_input=>_input._stream)]);\n //const _data_in$ = combineLatest([uidefs$obj._stream, ...input$objArr.map(_input=>_input._stream)]);\n\n // perform basic sanity checks on the contents of _data_in\n // like that of _uidefs\n const marginval = reduced_lambda_obj.margin\n ? Object.keys(reduced_lambda_obj.margin)\n : undefined;\n const fieldwidthval = reduced_lambda_obj.fieldwidth\n ? Object.keys(reduced_lambda_obj.fieldwidth)\n : undefined;\n\n // spark_dev_note: #http_dataflow_point // corresponding handles upstream\n //const _uidefs = data_in[0]; // uidefs$obj._stream\n //const _uidefs = _stream_cache[ElemCacheKeyLUT.prompt.UIDEFS]; // uidefs$obj._stream\n const screenio_output =\n isBottle(_uidefs_in) && _uidefs_in._bname === \"error\"\n ? // do nothing by returning undefined\n undefined\n : Array.isArray(_uidefs_in)\n ? formatElementFlowdata(\n {\n element: {\n nodeuuid: _stream_cache[ElemCacheKeyLUT.REFNODE],\n type: \"prompt\",\n componentdata: {\n //etaTree: lambdactrl.gos.etaTree,\n nodeuuid: _stream_cache[ElemCacheKeyLUT.REFNODE],\n uidefs: _uidefs_in,\n margin: marginval ? marginval[0] : 1,\n fieldwidth: fieldwidthval ? fieldwidthval[0] : \"25ch\",\n ..._stream_cache[ElemCacheKeyLUT.RTCONTEXT],\n },\n },\n },\n \"screenio\",\n )\n : undefined;\n\n const _data_in$ = screenio_output\n ? merge(of(screenio_output), elementioInput$)\n : elementioInput$;\n // return data read from the rx stream domain as an array\n return _data_in$;\n }),\n map((_data_in) => {\n console.log(\"testing element _leaflogic: \", _data_in);\n // perform any output data (write) operations specific to the element here\n // like sending messages to rx subjects, etc\n\n //traffic_semaphore = true; // allow the data to flow\n _outflow_data$.next(_data_in);\n //if (_data_in.length > 1)\n // _outflow_data$.next(_data_in);\n //else if (_data_in.length === 1)\n // _outflow_data$.next(_data_in[0]);\n // return ctrl\n return _stream_cache[ElemCacheKeyLUT.CTRLIN];\n }),\n share(),\n );\n\n return {\n _stream: _outflow_data$.pipe(\n //filter(_data_out=>isBottle(_data_out)&&_data_out._bname !== \"error\"),\n //filter(_data_out=>traffic_semaphore),\n filter(\n (_data_out) =>\n JSON.stringify({ ..._data_out, _label: {} }) !== JSON.stringify(raceConditionError),\n ),\n map((_data_out) => {\n console.log(_data_out);\n return _data_out;\n }),\n share(),\n ),\n _control: {\n _stream: _ctrl_out$.pipe(\n map((_ctrl_out) => {\n console.log(_ctrl_out);\n return _ctrl_out;\n }),\n share(),\n ),\n },\n };\n };\n\n // put any static data preprocessing logic applied to all incident data,\n // flown on each incoming edge stream.\n // data preprocessed and returned from this function will continue to flow in the data domain\n // of the current element node.\n const _datalogic_pre = (data_in) => {\n const data_out = data_in;\n\n return data_out;\n };\n\n // put any static data postprocessing logic applied to all incident data,\n // to be flown on the outgoing edge stream.\n // data postprocessed and returned from this function will continue to flow in the data domain\n // of the current element node.\n const _datalogic_post = (data_in) => {\n //const _margin_userval = data_in[1]; // margin$obj._stream\n //const _fieldwidth_userval = data_in[2]; // fieldwidth$obj._stream\n //let _flowdatain = data_in; // [...input$objArr]\n //_flowdatain = _flowdatain.length === 1 ? _flowdatain[0] : _flowdatain; // take care of data plurality\n\n //return _flowdatain;\n return data_in;\n };\n\n return {\n elementio$: elementioInput$,\n leaflogic: _leaflogic,\n datalogic: {\n pre: _datalogic_pre,\n post: _datalogic_post,\n },\n };\n};\n\nconst props = initElementInterface;\n\nexport { props, cachekeys };\n","import { BehaviorSubject, Subject, merge, combineLatest, of } from \"rxjs\";\nimport { switchMap, filter, map, withLatestFrom } from \"rxjs/operators\";\n\nimport { ElemCacheKeyLUT, formatElementFlowdata } from \"./index.js\";\nimport { executeLEAFLogic } from \"../../../leaf.js\";\nimport { doBottle, doUnbottle } from \"../../datautils/bottling.js\";\nimport { isBottle } from \"../../../predicates.js\";\n\nconst raceConditionError = doBottle(\n \"error\",\n {\n type: \"critical\",\n message: \"LEAF core error: race condition detected in popup.js\",\n codebase: \"/src/ghostos/api/parser/nodelogic/elements/library/popup.js\",\n },\n {},\n);\n/*\n * spark_dev_note: 25/Apr/2023\n * all leaflogic and datalogic functions must be designed to conform to the following spec,\n * in order to make sure of the inter-operability of newly developed leaf elements\n * in breezyforest.\n *\n * leaflogic lives in the rx flow domain, hence is an ideal function to deal with\n * any data i/o existing in that domain. Data in the reactive stream domain is accessable via\n * invoking leaf lambda functions, normally bearing the function argument signature of ([input$Arr, ctrlflow$obj]),\n * or via calling any functions or rx inline pipe-map that would provide the logic for statically\n * manipulating data flown through any locally accessable rx streams of interest.\n * Please note the convention of variable names post-scripted with the dollar sign ($), denoting the handles for\n * respective data streams.\n *\n * datalogic lives in the static data domain. How data i/o happens in this domain is not directly compatible with the stream domain.\n * the two optional datalogic functions, pre and post, are used to \"statically\" work on data, in terms of taking data input,\n * performing data transformation/read/write operations, and returning data output, at two temporal data points, respectively\n * coinciding with the time before (pre) and after (post) the incidence of data flowing through the leaflogic stream domain.\n *\n */\nconst initElementInterface = (_stream_cache) => {\n const reduced_lambda_obj = _stream_cache[ElemCacheKeyLUT.LAMBDA_OBJ];\n const iselementio = true; // true by default ('elementio' in reduced_lambda_obj) ? true : false;\n //const uidefsgen = (('uidefs' in reduced_lambda_obj) && ('_default' in reduced_lambda_obj.uidefs)) ? reduced_lambda_obj.uidefs._default : undefined;\n //const margingen = (('margin' in reduced_lambda_obj) && ('_default' in reduced_lambda_obj.margin)) ? reduced_lambda_obj.margin._default : undefined;\n //const fieldwidthgen = (('fieldwidth' in reduced_lambda_obj) && ('_default' in reduced_lambda_obj.fieldwidth)) ? reduced_lambda_obj.fieldwidth._default : undefined;\n\n //const _outflow_data$ = new BehaviorSubject(raceConditionError);\n const _outflow_data$ = new Subject();\n const elementioInput$ = new Subject();\n\n const _leaflogic = (input$objArr, controlflow$obj) => {\n const _ctrl_out$ = controlflow$obj._stream.pipe(\n //switchMap(_ctrl_in => {\n // _stream_cache[ElemCacheKeyLUT.CTRLIN] = _ctrl_in;\n // _stream_cache[ElemCacheKeyLUT.RTCONTEXT]._config = {...controlflow$obj._config};\n\n // // perform any input data (read) operations specific to the element here\n // // like accessing the most up-to-date messages from rx subjects/streams, etc\n // // spark_dev_note: #http_dataflow_point\n // const _data_in$ = combineLatest([...input$objArr.map(_input=>_input._stream)]);\n\n // // return data read from the rx stream domain as an array\n // return merge(_data_in$, elementioInput$);\n //}),\n withLatestFrom(...input$objArr.map((_input) => _input._stream)),\n switchMap((_combined_in) => {\n const relay_ctrl$ = new BehaviorSubject(_combined_in[0]);\n const relay_data$ = new BehaviorSubject(_combined_in[1]);\n return combineLatest(relay_ctrl$, merge(relay_data$, elementioInput$));\n }),\n switchMap((_combined_in) => {\n console.log(\"testing element _leaflogic: \", _combined_in);\n const _data_in = _combined_in[1];\n // perform any output data (write) operations specific to the element here\n // like sending messages to rx subjects, etc\n //\n // spark_dev_note: 4/May/2023\n // #screenio #bottle\n // _data_in is an array of incoming data, at time t0, from the input dataflow.\n // this data becomes imbedded as children in constructing popup element's jsx visuals.\n // so the incoming data is assumed to be of leafelement types associated to some visualization\n // bottled as \"screenio\", that would eventually require screenio's attention.\n // the conundrum, here, is to decide whether it is the data transformation responsibility\n // at the level of leafelement such as popup.js to unbottle incoming control-level bottles such\n // as \"screenio\". For now, placing the responsibility here makes the most sense, as\n // the codebase is closest to the occurance of such a data pattern.\n // This note was left as a gentle reminder to always be wary of test cases ridden with conditions\n // tricky to grasp, and to systematically navigate in reactive programming.\n // the assumptions made here as far as its data transformation is concerned:\n // * only bottles named screenio are valid for downstream consumption, hence unbottled\n // * invalid bottles are not needed hence discarded\n\n const recognizedLambdaConstants = [\n \"headless\",\n \"jester\",\n \"top\",\n \"tt\",\n \"bottom\",\n \"bb\",\n \"left\",\n \"ll\",\n \"right\",\n \"rr\",\n \"topleft\",\n \"ttll\",\n \"topright\",\n \"ttrr\",\n \"bottomleft\",\n \"bbll\",\n \"bottomright\",\n \"bbrr\",\n \"center\",\n \"centre\",\n ]; // a prompt of type \"button\" can be linked, by name, to a key-labelled lambda func\n const curLambdaKeys = Object.keys(reduced_lambda_obj);\n const validLambdaKeyList = recognizedLambdaConstants.filter((_) =>\n curLambdaKeys.includes(_),\n );\n const poprect = validLambdaKeyList.length > 0 ? validLambdaKeyList[0] : undefined;\n\n const quarantined_data_in = [_data_in]\n .flat()\n .map((_in) => {\n if (!isBottle(_in)) return undefined;\n if (_in._bname === \"screenio\") {\n //let _flowdatain = _in; // [...input$objArr]\n //_flowdatain = _flowdatain.length === 1 ? _flowdatain[0] : _flowdatain; // take care of data plurality\n const _child_elements = doUnbottle(\"screenio\", _in);\n\n return formatElementFlowdata(\n {\n element: {\n nodeuuid: _stream_cache[ElemCacheKeyLUT.REFNODE],\n type: \"popup\",\n componentdata: {\n poprect,\n headless: \"headless\" in reduced_lambda_obj ? true : false,\n ismenu: \"jester\" in reduced_lambda_obj ? true : false,\n unmountCallback: async () => {\n const _leaflogic =\n \"onclose\" in reduced_lambda_obj &&\n \"_default\" in reduced_lambda_obj.onclose\n ? reduced_lambda_obj.onclose._default\n : undefined;\n const _leaflogic_ret = _leaflogic\n ? //await executeLEAFLogic(_leaflogic, [], {...controlflow$obj._config}) :\n await executeLEAFLogic(_leaflogic, [], {\n ..._stream_cache[ElemCacheKeyLUT.RTCONTEXT]._config,\n })\n : [];\n\n if (iselementio) {\n //elementiosubject$.next(doBottle('elementio', {element: 'popup', nodeuuid: refnode, io: {'onclose': _leaflogic_ret}}));\n elementioInput$.next(\n doBottle(\"elementio\", {\n element: \"popup\",\n nodeuuid: _stream_cache[ElemCacheKeyLUT.REFNODE],\n io: { onclose: _leaflogic_ret },\n }),\n );\n }\n return _leaflogic_ret;\n },\n children: Array.isArray(_child_elements)\n ? _child_elements\n : [_child_elements],\n ..._stream_cache[ElemCacheKeyLUT.RTCONTEXT],\n },\n },\n },\n \"screenio\",\n );\n //return doUnbottle(\"screenio\", _in);\n } else if (_in._bname === \"elementio\") {\n return _in;\n }\n return undefined;\n })\n .filter((_) => _);\n\n if (quarantined_data_in.length > 1) _outflow_data$.next(quarantined_data_in);\n else if (quarantined_data_in.length === 1) _outflow_data$.next(quarantined_data_in[0]);\n // return ctrl\n //return _stream_cache[ElemCacheKeyLUT.CTRLIN];\n return of(_combined_in[0]);\n }),\n );\n\n return {\n _stream: _outflow_data$.pipe(\n filter((_data_out) => JSON.stringify(_data_out) !== JSON.stringify(raceConditionError)),\n map((_data_out) => {\n return _data_out;\n }),\n ),\n _control: { _stream: _ctrl_out$ },\n };\n };\n\n // put any static data preprocessing logic applied to all incident data,\n // flown on each incoming edge stream.\n // data preprocessed and returned from this function will continue to flow in the data domain\n // of the current element node.\n const _datalogic_pre = (data_in) => {\n const data_out = data_in;\n\n return data_out;\n };\n\n // put any static data postprocessing logic applied to all incident data,\n // to be flown on the outgoing edge stream.\n // data postprocessed and returned from this function will continue to flow in the data domain\n // of the current element node.\n const _datalogic_post = (data_in) => {\n return data_in;\n };\n\n return {\n elementio$: elementioInput$,\n leaflogic: _leaflogic,\n datalogic: {\n pre: _datalogic_pre,\n post: _datalogic_post,\n },\n };\n};\n\nconst props = initElementInterface;\n\nexport { props };\n","import { BehaviorSubject, combineLatest } from \"rxjs\";\nimport { concatMap, map } from \"rxjs/operators\";\n\nimport { ElemCacheKeyLUT, formatElementFlowdata } from \"./index.js\";\nimport { doBottle } from \"../../datautils/bottling.js\";\n\nconst raceConditionError = doBottle(\n \"error\",\n {\n type: \"critical\",\n message: \"LEAF core error: race condition detected in editor.js\",\n codebase: \"/src/ghostos/api/parser/nodelogic/elements/editor.js\",\n },\n {},\n);\n/*\n * spark_dev_note: 25/Apr/2023\n * all leaflogic and datalogic functions must be designed to conform to the following spec,\n * in order to make sure of the inter-operability of newly developed leaf elements\n * in breezyforest.\n *\n * leaflogic lives in the rx flow domain, hence is an ideal function to deal with\n * any data i/o existing in that domain. Data in the reactive stream domain is accessable via\n * invoking leaf lambda functions, normally bearing the function argument signature of ([input$Arr, ctrlflow$obj]),\n * or via calling any functions or rx inline pipe-map that would provide the logic for statically\n * manipulating data flown through any locally accessable rx streams of interest.\n * Please note the convention of variable names post-scripted with the dollar sign ($), denoting the handles for\n * respective data streams.\n *\n * datalogic lives in the static data domain. How data i/o happens in this domain is not directly compatible with the stream domain.\n * the two optional datalogic functions, pre and post, are used to \"statically\" work on data, in terms of taking data input,\n * performing data transformation/read/write operations, and returning data output, at two temporal data points, respectively\n * coinciding with the time before (pre) and after (post) the incidence of data flowing through the leaflogic stream domain.\n *\n */\nconst initElementInterface = (_stream_cache) => {\n const _leaflogic = (input$objArr, controlflow$obj) => {\n //const _stream_cache = {};\n const _outflow_data$ = new BehaviorSubject(raceConditionError);\n //const uidefs$obj = uidefsgen ? uidefsgen(input$objArr, controlflow$obj) :\n // {_stream: of(_TEST_UIDEFS)}; // executeLEAFLogicInSync(urigen, merged_input$, undefined, _ctrl_data$, {...controlflow$obj._config}) : {_stream: of([]), _control: {_stream: _ctrl_data$}};\n //const margin$obj = margingen ? margingen(input$objArr, controlflow$obj) :\n // {_stream: of(_TEST_MARGIN)}; //executeLEAFLogicInSync(headergen, merged_input$, undefined, _ctrl_data$, {...controlflow$obj._config}) : {_stream: of([]), _control: {_stream: _ctrl_data$}};\n //const fieldwidth$obj = fieldwidthgen ? fieldwidthgen(input$objArr, controlflow$obj) :\n // {_stream: of(_TEST_FIELDWIDTH)}; //executeLEAFLogicInSync(headergen, merged_input$, undefined, _ctrl_data$, {...controlflow$obj._config}) : {_stream: of([]), _control: {_stream: _ctrl_data$}};\n\n const _ctrl_out$ = controlflow$obj._stream.pipe(\n concatMap((_ctrl_in) => {\n _stream_cache[ElemCacheKeyLUT.CTRLIN] = _ctrl_in;\n\n // perform any input data (read) operations specific to the element here\n // like accessing the most up-to-date messages from rx subjects/streams, etc\n // spark_dev_note: #http_dataflow_point\n const _data_in$ = combineLatest([...input$objArr.map((_input) => _input._stream)]);\n\n // return data read from the rx stream domain as an array\n return _data_in$;\n }),\n map((_data_in) => {\n console.log(\"testing element _leaflogic: \", _data_in);\n // perform any output data (write) operations specific to the element here\n // like sending messages to rx subjects, etc\n\n if (_data_in.length > 1) _outflow_data$.next(_data_in);\n else if (_data_in.length === 1) _outflow_data$.next(_data_in[0]);\n // return ctrl\n return _stream_cache[ElemCacheKeyLUT.CTRLIN];\n }),\n );\n\n return { _stream: _outflow_data$, _control: { _stream: _ctrl_out$ } };\n };\n\n // put any static data preprocessing logic applied to all incident data,\n // flown on each incoming edge stream.\n // data preprocessed and returned from this function will continue to flow in the data domain\n // of the current element node.\n const _datalogic_pre = (data_in) => {\n const data_out = data_in;\n\n return data_out;\n };\n\n // put any static data postprocessing logic applied to all incident data,\n // to be flown on the outgoing edge stream.\n // data postprocessed and returned from this function will continue to flow in the data domain\n // of the current element node.\n const _datalogic_post = (data_in) => {\n //const marginval = reduced_lambda_obj.margin ? Object.keys(reduced_lambda_obj.margin) : undefined;\n //const fieldwidthval = reduced_lambda_obj.fieldwidth ? Object.keys(reduced_lambda_obj.fieldwidth) : undefined;\n\n // spark_dev_note: #http_dataflow_point // corresponding handles upstream\n //const _uidefs = data_in[0]; // uidefs$obj._stream\n //const _margin_userval = data_in[1]; // margin$obj._stream\n //const _fieldwidth_userval = data_in[2]; // fieldwidth$obj._stream\n const node_output = formatElementFlowdata(\n {\n element: {\n nodeuuid: _stream_cache[ElemCacheKeyLUT.REFNODE],\n type: \"editor\",\n componentdata: {\n domain: _stream_cache[ElemCacheKeyLUT.DOMAIN], //_metadata[1], //domain,\n appid: _stream_cache[ElemCacheKeyLUT.APPID], //_metadata[2], //appid,\n ..._stream_cache[ElemCacheKeyLUT.RTCONTEXT],\n },\n },\n },\n \"screenio\",\n );\n\n return node_output;\n };\n\n return {\n leaflogic: _leaflogic,\n datalogic: {\n pre: _datalogic_pre,\n post: _datalogic_post,\n },\n };\n};\n\nconst props = initElementInterface;\n\nexport { props };\n","import { BehaviorSubject, Subject, merge, withLatestFrom } from \"rxjs\";\nimport { switchMap, map, share, finalize } from \"rxjs/operators\";\n\nimport { ElemCacheKeyLUT, formatElementFlowdata } from \"./index.js\";\nimport { executeLEAFLogic } from \"../../../leaf.js\";\nimport { doBottle } from \"../../datautils/bottling.js\";\n/*\n * spark_dev_note: 25/Apr/2023\n * all leaflogic and datalogic functions must be designed to conform to the following spec,\n * in order to make sure of the inter-operability of newly developed leaf elements\n * in breezyforest.\n *\n * leaflogic lives in the rx flow domain, hence is an ideal function to deal with\n * any data i/o existing in that domain. Data in the reactive stream domain is accessable via\n * invoking leaf lambda functions, normally bearing the function argument signature of ([input$Arr, ctrlflow$obj]),\n * or via calling any functions or rx inline pipe-map that would provide the logic for statically\n * manipulating data flown through any locally accessable rx streams of interest.\n * Please note the convention of variable names post-scripted with the dollar sign ($), denoting the handles for\n * respective data streams.\n *\n * datalogic lives in the static data domain. How data i/o happens in this domain is not directly compatible with the stream domain.\n * the two optional datalogic functions, pre and post, are used to \"statically\" work on data, in terms of taking data input,\n * performing data transformation/read/write operations, and returning data output, at two temporal data points, respectively\n * coinciding with the time before (pre) and after (post) the incidence of data flowing through the leaflogic stream domain.\n *\n */\nconst initElementInterface = (_stream_cache) => {\n const reduced_lambda_obj = _stream_cache[ElemCacheKeyLUT.LAMBDA_OBJ];\n const elementioInput$ = new Subject();\n\n const _leaflogic = (input$objArr, controlflow$obj) => {\n //const _stream_cache = {};\n //const _outflow_data$ = new BehaviorSubject(raceConditionError);\n const _outflow_data$ = new Subject();\n //const uidefs$obj = uidefsgen ? uidefsgen(input$objArr, controlflow$obj) :\n // {_stream: of(_TEST_UIDEFS)}; // executeLEAFLogicInSync(urigen, merged_input$, undefined, _ctrl_data$, {...controlflow$obj._config}) : {_stream: of([]), _control: {_stream: _ctrl_data$}};\n //const margin$obj = margingen ? margingen(input$objArr, controlflow$obj) :\n // {_stream: of(_TEST_MARGIN)}; //executeLEAFLogicInSync(headergen, merged_input$, undefined, _ctrl_data$, {...controlflow$obj._config}) : {_stream: of([]), _control: {_stream: _ctrl_data$}};\n //const fieldwidth$obj = fieldwidthgen ? fieldwidthgen(input$objArr, controlflow$obj) :\n // {_stream: of(_TEST_FIELDWIDTH)}; //executeLEAFLogicInSync(headergen, merged_input$, undefined, _ctrl_data$, {...controlflow$obj._config}) : {_stream: of([]), _control: {_stream: _ctrl_data$}};\n\n const _ctrl_out$ = controlflow$obj._stream.pipe(\n //switchMap(_ctrl_in => {\n // _stream_cache[ElemCacheKeyLUT.CTRLIN] = _ctrl_in;\n\n // // perform any input data (read) operations specific to the element here\n // // like accessing the most up-to-date messages from rx subjects/streams, etc\n // // spark_dev_note: #http_dataflow_point\n // const _data_in$ = combineLatest([...input$objArr.map(_input=>_input._stream)]);\n\n // // return data read from the rx stream domain as an array\n // return _data_in$;\n //}),\n withLatestFrom(...input$objArr.map((_input) => _input._stream)),\n switchMap((_combined_in) => {\n _stream_cache[ElemCacheKeyLUT.CTRLIN] = _combined_in[0];\n const _data_in = _combined_in[1];\n const recognizedLambdaConstants = [\"image\", \"audio\", \"video\"];\n const curLambdaKeys = Object.keys(reduced_lambda_obj);\n const validLambdaKeyList = recognizedLambdaConstants.filter((_) =>\n curLambdaKeys.includes(_),\n );\n const mediatype = validLambdaKeyList.length > 0 ? validLambdaKeyList[0] : \"image\"; // default to 'image' type\n\n //const marginval = reduced_lambda_obj.margin ? Object.keys(reduced_lambda_obj.margin) : undefined;\n //const fieldwidthval = reduced_lambda_obj.fieldwidth ? Object.keys(reduced_lambda_obj.fieldwidth) : undefined;\n\n // spark_dev_note: #http_dataflow_point // corresponding handles upstream\n //const _uidefs = data_in[0]; // uidefs$obj._stream\n //const _margin_userval = data_in[1]; // margin$obj._stream\n //const _fieldwidth_userval = data_in[2]; // fieldwidth$obj._stream\n let _flowdatain = _data_in; // [...input$objArr]\n _flowdatain = _flowdatain.length === 1 ? _flowdatain[0] : _flowdatain; // take care of data plurality\n\n const _nodeinput = Array.isArray(_flowdatain) ? _flowdatain : [_flowdatain];\n const screenio_output = formatElementFlowdata(\n {\n element: {\n nodeuuid: _stream_cache[ElemCacheKeyLUT.REFNODE],\n type: \"mediainput\",\n componentdata: {\n mediatype: mediatype,\n nodeinput: _nodeinput,\n callbacks: {\n onDropAccepted: async (b64imgdata) => {\n const ret = reduced_lambda_obj.ondrop?._default\n ? await executeLEAFLogic(\n reduced_lambda_obj.ondrop._default,\n [doBottle(\"elementinput\", b64imgdata), doBottle(\"nodeinput\", _nodeinput)],\n {},\n _stream_cache[ElemCacheKeyLUT.REFNODE],\n )\n : undefined;\n // emit an elementio message\n const _elementio_mesg = doBottle(\"elementio\", ret);\n elementioInput$.next(_elementio_mesg);\n console.log(\"start debugging\");\n },\n },\n },\n },\n },\n \"screenio\",\n );\n\n const _data_in$ = screenio_output\n ? merge(new BehaviorSubject(screenio_output), elementioInput$)\n : elementioInput$;\n // return data read from the rx stream domain as an array\n return _data_in$;\n }),\n switchMap((_data_in) => {\n console.log(\"testing element _leaflogic: \", _data_in);\n // perform any output data (write) operations specific to the element here\n // like sending messages to rx subjects, etc\n\n _outflow_data$.next(_data_in);\n // return ctrl\n return new BehaviorSubject(_stream_cache[ElemCacheKeyLUT.CTRLIN]);\n }),\n share(),\n );\n\n return {\n _stream: _outflow_data$.pipe(\n map((_in) => {\n return _in;\n }),\n finalize(() => {\n console.log(\"mediainput element data stream ended\");\n }),\n share(),\n ),\n _control: {\n _stream: _ctrl_out$.pipe(\n map((_in) => {\n return _in;\n }),\n finalize(() => {\n console.log(\"mediainput element ctrl stream ended\");\n }),\n share(),\n ),\n },\n };\n };\n\n // put any static data preprocessing logic applied to all incident data,\n // flown on each incoming edge stream.\n // data preprocessed and returned from this function will continue to flow in the data domain\n // of the current element node.\n const _datalogic_pre = (data_in) => {\n const data_out = data_in;\n\n return data_out;\n };\n\n // put any static data postprocessing logic applied to all incident data,\n // to be flown on the outgoing edge stream.\n // data postprocessed and returned from this function will continue to flow in the data domain\n // of the current element node.\n const _datalogic_post = (data_in) => {\n let _flowdatain = data_in; // [...input$objArr]\n _flowdatain = _flowdatain.length === 1 ? _flowdatain[0] : _flowdatain; // take care of data plurality\n\n return _flowdatain;\n };\n\n return {\n elementio$: elementioInput$,\n leaflogic: _leaflogic,\n datalogic: {\n pre: _datalogic_pre,\n post: _datalogic_post,\n },\n };\n};\n\nconst props = initElementInterface;\n\nexport { props };\n","import { Subject, merge } from \"rxjs\";\nimport { map, share, switchMap } from \"rxjs/operators\";\n\nimport { ElemCacheKeyLUT } from \"./index.js\";\n//import {JZZ} from 'jzz'; // midi interface\nimport jzzpkg from \"jzz\";\n//import Wad from \"web-audio-daw\";\n//const Wad = () => {};\nimport { isBottle, isEmptyBottle } from \"../../../predicates.js\";\nimport { doBottle, doUnbottle } from \"../../datautils/bottling.js\";\n\nconst { JZZ } = jzzpkg; // nodejs friendly import\n\n/*\n * spark_dev_note: 25/Apr/2023\n * all leaflogic and datalogic functions must be designed to conform to the following spec,\n * in order to make sure of the inter-operability of newly developed leaf elements\n * in breezyforest.\n *\n * leaflogic lives in the rx flow domain, hence is an ideal function to deal with\n * any data i/o existing in that domain. Data in the reactive stream domain is accessable via\n * invoking leaf lambda functions, normally bearing the function argument signature of ([input$Arr, ctrlflow$obj]),\n * or via calling any functions or rx inline pipe-map that would provide the logic for statically\n * manipulating data flown through any locally accessable rx streams of interest.\n * Please note the convention of variable names post-scripted with the dollar sign ($), denoting the handles for\n * respective data streams.\n *\n * datalogic lives in the static data domain. How data i/o happens in this domain is not directly compatible with the stream domain.\n * the two optional datalogic functions, pre and post, are used to \"statically\" work on data, in terms of taking data input,\n * performing data transformation/read/write operations, and returning data output, at two temporal data points, respectively\n * coinciding with the time before (pre) and after (post) the incidence of data flowing through the leaflogic stream domain.\n *\n */\nconst initElementInterface = (_stream_cache) => {\n //const uidefsgen = (('uidefs' in reduced_lambda_obj) && ('_default' in reduced_lambda_obj.uidefs)) ? reduced_lambda_obj.uidefs._default : undefined;\n //const margingen = (('margin' in reduced_lambda_obj) && ('_default' in reduced_lambda_obj.margin)) ? reduced_lambda_obj.margin._default : undefined;\n //const fieldwidthgen = (('fieldwidth' in reduced_lambda_obj) && ('_default' in reduced_lambda_obj.fieldwidth)) ? reduced_lambda_obj.fieldwidth._default : undefined;\n\n const midiInput$ = new Subject();\n //const wad = new Wad({\n // source: 'sine',\n // tuna : {\n // Overdrive : {\n // outputGain: 0.5, //0 to 1+\n // drive: 0.7, //0 to 1\n // curveAmount: 1, //0 to 1\n // algorithmIndex: 0, //0 to 5, selects one of our drive algorithms\n // bypass: 0\n // },\n // Chorus : {\n // intensity: 0.3, //0 to 1\n // rate: 4, //0.001 to 8\n // stereoPhase: 0, //0 to 180\n // bypass: 0\n // }\n // }\n //});\n //const beatwad = new Wad({\n // source: '/assets/sound/Berklee44v1/anklung_1.wav',\n //});\n let beats = -1;\n const midiMessageReceived = (ev) => {\n beats = (beats + 1) % 24; // https://en.wikipedia.org/wiki/MIDI_beat_clock\n if (beats === 0) {\n console.log(\"beat\", Date.now(), ev);\n //beatwad.play({pitch: \"C4\", label: \"C4\"});\n //wad.play();\n }\n console.log(\"midiMessageReceived\", Date.now(), ev);\n const [cmd, noteNumber, velocity] = ev;\n midiInput$.next(doBottle(\"_midi_in\", { cmd, noteNumber, velocity }, { timestamp: Date.now() }));\n //if ([144].includes(ev[0]))\n //{\n // // navigator web midi\n // //const [cmd, noteNumber] = ev.data\n // //const velocity = ev.data.length > 2 ? ev.data[2] : 0\n // // using jzz midi interface\n // const [cmd, noteNumber, velocity, _from] = ev\n // //const velocity = ev.data.length > 2 ? ev.data[2] : 0\n\n // if (cmd && noteNumber) {\n // console.log(\"midi message: \", cmd, noteNumber, velocity);\n // //const pitchname = midi_notenum2pitchname(noteNumber);\n // //beatwad.play({pitch: pitchname, label: pitchname});\n // midiInput$.next(doBottle(\"_midi_in\", {cmd, noteNumber, velocity}, {timestamp: Date.now()}));\n // }\n // //this.props.cb({\n // // cmd,\n // // noteNumber,\n // // velocity,\n // //})\n //}\n //else if ([191].includes(ev[0]))\n //{\n // const [cmd, noteNumber, velocity, _from] = ev\n // if (cmd && noteNumber === 118 && velocity === 0) {\n // console.log(\"midi message: \", cmd, noteNumber, velocity);\n // //const pitchname = midi_notenum2pitchname(noteNumber);\n // //beatwad.play({pitch: pitchname, label: pitchname});\n // //midiInput$.next(doBottle(\"_midi_in\", {cmd, noteNumber, velocity}, {timestamp: Date.now()}));\n // midiInput$.next(doBottle(\"soundinit\", {soundnode_trail: []}));\n // }\n //}\n };\n\n const midi_device = {};\n //const midiMap = (_event) => {\n // console.log(_event.receivedTime, _event.receivedData);\n //};\n\n //Wad.assignMidiMap(midiMap);\n\n const _leaflogic = (input$objArr, controlflow$obj) => {\n //const _stream_cache = {};\n //const _outflow_data$ = new BehaviorSubject(raceConditionError);\n const _outflow_data$ = new Subject();\n //const uidefs$obj = uidefsgen ? uidefsgen(input$objArr, controlflow$obj) :\n // {_stream: of(_TEST_UIDEFS)}; // executeLEAFLogicInSync(urigen, merged_input$, undefined, _ctrl_data$, {...controlflow$obj._config}) : {_stream: of([]), _control: {_stream: _ctrl_data$}};\n //const margin$obj = margingen ? margingen(input$objArr, controlflow$obj) :\n // {_stream: of(_TEST_MARGIN)}; //executeLEAFLogicInSync(headergen, merged_input$, undefined, _ctrl_data$, {...controlflow$obj._config}) : {_stream: of([]), _control: {_stream: _ctrl_data$}};\n //const fieldwidth$obj = fieldwidthgen ? fieldwidthgen(input$objArr, controlflow$obj) :\n // {_stream: of(_TEST_FIELDWIDTH)}; //executeLEAFLogicInSync(headergen, merged_input$, undefined, _ctrl_data$, {...controlflow$obj._config}) : {_stream: of([]), _control: {_stream: _ctrl_data$}};\n\n const _ctrl_out$ = controlflow$obj._stream.pipe(\n switchMap((_ctrl_in) => {\n _stream_cache[ElemCacheKeyLUT.CTRLIN] = _ctrl_in;\n if (!(\"default\" in midi_device))\n midi_device[\"default\"] = JZZ()\n .openMidiIn()\n .or(\"Error: Cannot open MIDI In port\")\n .and((_midi) => {\n console.log(\"MIDI-In: \", _midi);\n })\n .connect(midiMessageReceived);\n // perform any input data (read) operations specific to the element here\n // like accessing the most up-to-date messages from rx subjects/streams, etc\n // spark_dev_note: #http_dataflow_point\n const _data_in$ = merge(...input$objArr.map((_input) => _input._stream), midiInput$);\n\n // return data read from the rx stream domain as an array\n return _data_in$;\n }),\n\n //bufferTime(5),\n //filter(_=>_.length>0),\n map((_data_in) => {\n //console.log(\"testing element _leaflogic: \", _data_in);\n // perform any output data (write) operations specific to the element here\n // like sending messages to rx subjects, etc\n if (!Array.isArray(_data_in) && _data_in._bname === \"error\") console.log(\"start debugging\");\n\n const processed_in = (Array.isArray(_data_in) ? _data_in : [_data_in])\n .map((_bottle) => {\n if (_bottle._bname === \"_data_in\") {\n if (!isEmptyBottle(_bottle._content)) return doUnbottle(\"*\", _bottle);\n else return undefined;\n } else if (isBottle(_bottle))\n //[\"_midi_in\", \"soundconfig\", \"soundinit\",etc].includes_bottle._bname\n return _bottle;\n })\n .filter((_b) => _b);\n\n console.log(\"midi message to be registered in nodeflowinterface\", _data_in);\n\n if (processed_in.length > 0) _outflow_data$.next(processed_in);\n //if (_data_in.length > 1)\n // _outflow_data$.next(_data_in);\n //else if (_data_in.length === 1)\n // _outflow_data$.next(_data_in[0]);\n //// return ctrl\n return _stream_cache[ElemCacheKeyLUT.CTRLIN];\n }),\n share(),\n );\n\n return { _stream: _outflow_data$, _control: { _stream: _ctrl_out$ } };\n };\n\n // put any static data preprocessing logic applied to all incident data,\n // flown on each incoming edge stream.\n // data preprocessed and returned from this function will continue to flow in the data domain\n // of the current element node.\n const _datalogic_pre = (data_in) => {\n const data_out = doBottle(\"_data_in\", data_in);\n\n return data_out;\n };\n\n //let saw = new globalThis.Wad({source : 'sawtooth'});\n // put any static data postprocessing logic applied to all incident data,\n // to be flown on the outgoing edge stream.\n // data postprocessed and returned from this function will continue to flow in the data domain\n // of the current element node.\n const _datalogic_post = (data_in) => {\n //data_in.map(_in_bottle=> {\n // if (_in_bottle._bname === \"_midi_in\") {\n // if (_in_bottle._content.velocity > 0) {\n // const pitchname = midi_notenum2pitchname(_in_bottle._content.noteNumber);\n // wad.play({pitch: pitchname, label: pitchname});\n // }\n // else {\n // const pitchname = midi_notenum2pitchname(_in_bottle._content.noteNumber);\n // console.log(\"wad.stop() \", pitchname)\n // wad.stop(pitchname);\n // }\n // }\n //})\n //const marginval = reduced_lambda_obj.margin ? Object.keys(reduced_lambda_obj.margin) : undefined;\n //const fieldwidthval = reduced_lambda_obj.fieldwidth ? Object.keys(reduced_lambda_obj.fieldwidth) : undefined;\n\n // spark_dev_note: #http_dataflow_point // corresponding handles upstream\n //const _uidefs = data_in[0]; // uidefs$obj._stream\n //const _margin_userval = data_in[1]; // margin$obj._stream\n //const _fieldwidth_userval = data_in[2]; // fieldwidth$obj._stream\n let _flowdatain = data_in; // [...input$objArr]\n _flowdatain = _flowdatain.length === 1 ? _flowdatain[0] : _flowdatain; // take care of data plurality\n\n //const node_output = formatElementFlowdata({\n // element: {\n // nodeuuid: _stream_cache[ElemCacheKeyLUT.REFNODE],\n // type: 'midi',\n // componentdata: {\n // mediatype: mediatype,\n // nodeinput: Array.isArray(_flowdatain) ? _flowdatain : [_flowdatain],\n // callbacks: {\n // onDropAccepted: (files, dropevent) => {\n // console.log(\"start debugging\");\n // }\n // }\n // }\n // }\n //}, \"screenio\");\n const node_output = _flowdatain;\n\n return node_output;\n };\n\n return {\n leaflogic: _leaflogic,\n datalogic: {\n pre: _datalogic_pre,\n post: _datalogic_post,\n },\n };\n};\n\nconst props = initElementInterface;\n\nexport { props };\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"jzz\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"tone\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"tone/build/esm/instrument/Synth.js\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"tone/build/esm/instrument/AMSynth.js\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"tone/build/esm/instrument/DuoSynth.js\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"tone/build/esm/instrument/FMSynth.js\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"tone/build/esm/instrument/MembraneSynth.js\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"tone/build/esm/instrument/MetalSynth.js\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"tone/build/esm/instrument/MonoSynth.js\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"tone/build/esm/instrument/NoiseSynth.js\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"tone/build/esm/instrument/PluckSynth.js\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"tone/build/esm/instrument/PolySynth.js\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"tone/build/esm/instrument/Sampler.js\");","import * as tonepkg from \"tone\";\n//import { Tone } from \"tone/build/esm/core/Tone\";\n//import * as tonepkg from \"tone\";\n//const { Synth, AMSynth, DuoSynth, FMSynth, MembraneSynth, MetalSynth, MonoSynth, NoiseSynth, PluckSynth, PolySynth, Sampler, Transport } = tonepkg;\n//import { Synth, AMSynth, DuoSynth, FMSynth, MembraneSynth, MetalSynth, MonoSynth, NoiseSynth, PluckSynth, PolySynth, Sampler, Transport } from \"tone\";\n// core clock & routing\n//import { Transport } from \"tone\";\n\n// instruments – every file exports a *named* class\nimport { Synth } from \"tone/build/esm/instrument/Synth.js\";\nimport { AMSynth } from \"tone/build/esm/instrument/AMSynth.js\";\nimport { DuoSynth } from \"tone/build/esm/instrument/DuoSynth.js\";\nimport { FMSynth } from \"tone/build/esm/instrument/FMSynth.js\";\nimport { MembraneSynth } from \"tone/build/esm/instrument/MembraneSynth.js\";\nimport { MetalSynth } from \"tone/build/esm/instrument/MetalSynth.js\";\nimport { MonoSynth } from \"tone/build/esm/instrument/MonoSynth.js\";\nimport { NoiseSynth } from \"tone/build/esm/instrument/NoiseSynth.js\";\nimport { PluckSynth } from \"tone/build/esm/instrument/PluckSynth.js\";\nimport { PolySynth } from \"tone/build/esm/instrument/PolySynth.js\";\nimport { Sampler } from \"tone/build/esm/instrument/Sampler.js\";\n\nconst toneinstrument_lut = {\n synth: {\n new: (options) => {\n return new Synth(options);\n },\n },\n amsynth: {\n new: (options) => {\n return new AMSynth(options);\n },\n },\n duosynth: {\n new: (options) => {\n return new DuoSynth(options);\n },\n },\n fmsynth: {\n new: (options) => {\n return new FMSynth(options);\n },\n },\n membranesynth: {\n new: (options) => {\n return new MembraneSynth(options);\n },\n },\n metalsynth: {\n new: (options) => {\n return new MetalSynth(options);\n },\n },\n monosynth: {\n new: (options) => {\n return new MonoSynth(options);\n },\n },\n noisesynth: {\n new: (options) => {\n return new NoiseSynth(options);\n },\n },\n plucksynth: {\n new: (options) => {\n return new PluckSynth(options);\n },\n },\n polysynth: {\n new: (voice, options) => {\n return new PolySynth(voice, options);\n },\n },\n sampler: {\n new: (options) => {\n return new Sampler(options);\n },\n },\n};\n\n// \"synth\", \"monosynth\", \"fmsynth\", \"duosynth\", \"amsynth\"\nconst tonevoice_lut = {\n synth: Synth, // default\n monosynth: MonoSynth,\n fmsynth: FMSynth,\n duosyntho: DuoSynth,\n amsynth: AMSynth,\n};\n\nconst toneeffect_lut = {\n autofilter: {\n new: (options) => {\n return new tonepkg.AutoFilter(options);\n },\n },\n bitcrusher: {\n new: (options) => {\n return new tonepkg.BitCrusher(options);\n },\n },\n chebyshev: {\n new: (options) => {\n return new tonepkg.Chebyshev(options);\n },\n },\n pitchshift: {\n new: (options) => {\n return new tonepkg.PitchShift(options);\n },\n },\n};\n\nconst doConfigureInstrument = (refnode, _config, is_reset = false) => {\n // for instruments, _config should have \"instrument\" among its keys\n\n try {\n if (_config?.instrument) {\n const _instrument = !is_reset\n ? toneinstrument_lut[_config.instrument.type]?.new(\n _config.instrument.voice ? tonevoice_lut[_config.instrument.voice] : Synth,\n _config.instrument.options,\n )\n : (() => {\n globalThis.sound[refnode].set(_config.instrument.options);\n return globalThis.sound[refnode];\n })();\n return _instrument;\n }\n\n //return undefined;\n throw \"instrument is not defined in the config\";\n } catch (err) {\n console.error(\n `LEAF Error: a leafsound element ${refnode} could not be configured, returning error:`,\n err,\n );\n\n return undefined;\n }\n};\n\nconst doConfigureEffect = (refnode, _config, is_reset = false) => {\n // for instruments, _config should have \"instrument\" among its keys\n\n try {\n if (_config?.effect) {\n const _effect = !is_reset\n ? toneeffect_lut[_config.effect.type]?.new(_config.effect.options)\n : (() => {\n globalThis.sound[refnode].set(_config.effect.options);\n return globalThis.sound[refnode];\n })();\n return _effect;\n }\n\n //return undefined;\n throw \"effect is not defined in the config\";\n } catch (err) {\n console.error(\n \"LEAF Error: a leafsound element `${refnode}` could not be configured, returning error:\",\n err,\n );\n\n return undefined;\n }\n};\n\nconst doConfigureSource = (_config) => {\n // TBI\n return undefined;\n};\n\nconst doConfigureTarget = (nodeuuid) => {\n globalThis.sound[nodeuuid].toDestination();\n return undefined;\n};\n\nconst initializeSoundStage = () => {\n globalThis.sound = {};\n};\n\nconst initializeToneState = () => {\n if (tonepkg.Transport.state !== \"started\") {\n tonepkg.start();\n tonepkg.Transport.start();\n } else {\n //Tone.Transport.stop();\n }\n};\n\nconst cacheSoundStageNode = (nodeuuid, _soundnode) => {\n globalThis.sound[nodeuuid] = _soundnode;\n};\n\n// spark_dev_note: 15/Sep/2023\n// currently unsure whether web audio sound nodes would need to be\n// explicitly disconnected from any connected nodes upon getting destroyed.\n// just assuming and hoping that the web audio api would handle this automtically.\nconst connectCachedSoundStageNodes = (nodeuuid1, nodeuuid2) => {\n globalThis.sound[nodeuuid1].connect(globalThis.sound[nodeuuid2]);\n};\n\nconst disconnectCachedSoundStageNodes = (nodeuuid1, nodeuuid2) => {\n globalThis.sound[nodeuuid1].disconnect(globalThis.sound[nodeuuid2]);\n};\n\nconst destroySoundStageNode = (nodeuuid) => {\n if (globalThis.sound[nodeuuid]) {\n globalThis.sound[nodeuuid].dispose();\n delete globalThis.sound[nodeuuid];\n }\n};\n\nexport {\n doConfigureInstrument,\n doConfigureSource,\n doConfigureTarget,\n doConfigureEffect,\n initializeSoundStage,\n initializeToneState,\n cacheSoundStageNode,\n destroySoundStageNode,\n connectCachedSoundStageNodes,\n disconnectCachedSoundStageNodes,\n};\n","import { BehaviorSubject } from \"rxjs\";\nimport { map, share, filter, withLatestFrom } from \"rxjs/operators\";\n\nimport { ElemCacheKeyLUT } from \"./index.js\";\nimport { executeLEAFLogic } from \"../../../leaf.js\";\nimport { EmptyBottle, doBottle, doUnbottle } from \"../../datautils/bottling.js\";\nimport {\n cacheSoundStageNode,\n connectCachedSoundStageNodes,\n doConfigureEffect,\n doConfigureInstrument,\n doConfigureSource,\n doConfigureTarget,\n initializeToneState,\n} from \"./sound_lib.js\";\n\nconst cachekeys = {\n CONFIG: \"_sound_config\",\n SOUNDSTAGE: \"_daw_object\",\n};\n\nconst midi_base_notenum = 24;\nconst midi_base_pitchnum = 1;\nconst midi_base_notenum2pitch_lut = {\n 24: [\"C\"],\n 25: [\"C#\", \"Db\"],\n 26: [\"D\"],\n 27: [\"D#\", \"Eb\"],\n 28: [\"E\"],\n 29: [\"F\"],\n 30: [\"F#\", \"Gb\"],\n 31: [\"G\"],\n 32: [\"G#\", \"Ab\"],\n 33: [\"A\"],\n 34: [\"A#\", \"Bb\"],\n 35: [\"B\"],\n};\nconst midi_notenum2pitchname = (_notenum, nameidx = 0) => {\n const pitchnum = midi_base_pitchnum + Math.floor((_notenum - midi_base_notenum) / 12);\n const corresponding_base_notenum = _notenum - 12 * (pitchnum - 1);\n\n return midi_base_notenum2pitch_lut[corresponding_base_notenum][nameidx] + String(pitchnum);\n};\n\n/*\n * spark_dev_note: 25/Apr/2023\n * all leaflogic and datalogic functions must be designed to conform to the following spec,\n * in order to make sure of the inter-operability of newly developed leaf elements\n * in breezyforest.\n *\n * leaflogic lives in the rx flow domain, hence is an ideal function to deal with\n * any data i/o existing in that domain. Data in the reactive stream domain is accessable via\n * invoking leaf lambda functions, normally bearing the function argument signature of ([input$Arr, ctrlflow$obj]),\n * or via calling any functions or rx inline pipe-map that would provide the logic for statically\n * manipulating data flown through any locally accessable rx streams of interest.\n * Please note the convention of variable names post-scripted with the dollar sign ($), denoting the handles for\n * respective data streams.\n *\n * datalogic lives in the static data domain. How data i/o happens in this domain is not directly compatible with the stream domain.\n * the two optional datalogic functions, pre and post, are used to \"statically\" work on data, in terms of taking data input,\n * performing data transformation/read/write operations, and returning data output, at two temporal data points, respectively\n * coinciding with the time before (pre) and after (post) the incidence of data flowing through the leaflogic stream domain.\n *\n */\nconst initElementInterface = (_stream_cache) => {\n const reduced_lambda_obj = _stream_cache[ElemCacheKeyLUT.LAMBDA_OBJ];\n const defaultgen = \"_default\" in reduced_lambda_obj ? reduced_lambda_obj._default : undefined;\n const is_instrument = \"instrument\" in reduced_lambda_obj || \"inst\" in reduced_lambda_obj;\n const is_source = \"source\" in reduced_lambda_obj || \"src\" in reduced_lambda_obj;\n const is_effect = \"effect\" in reduced_lambda_obj || \"fx\" in reduced_lambda_obj; // an effect here is what an audionode is in web audio api terms\n const is_target = \"target\" in reduced_lambda_obj || \"trg\" in reduced_lambda_obj;\n\n //const _DEFAULT_SOUND_CONFIG = {\n // source: 'sine',\n // tuna: {\n // Overdrive: {\n // outputGain: 0.5, //0 to 1+\n // drive: 0.7, //0 to 1\n // curveAmount: 1, //0 to 1\n // algorithmIndex: 0, //0 to 5, selects one of our drive algorithms\n // bypass: 0,\n // },\n // Chorus: {\n // intensity: 0.3, //0 to 1\n // rate: 4, //0.001 to 8\n // stereoPhase: 0, //0 to 180\n // bypass: 0,\n // }\n // }\n //};\n const _DEFAULT_SOUND_CONFIG = {\n audionode: {\n type: \"gain\",\n value: 0.5,\n },\n source: {\n type: \"oscillator\", // \"oscillator\", \"omnioscillator\", \"lfo\", \"player\", \"noise\",\n options: {\n type: \"sine\", // \"sine\", \"sawtooth\", \"square\", \"triangle\", \"fm\", \"am\", \"fat\", \"pwm\", \"pulse\" etc\n },\n },\n timing: {\n // any options relevant to those of \"transport\" in tone.js lingo\n bpm: 150,\n },\n instrument: {\n type: \"polysynth\", // \"amsynth\", \"duosynth\", \"fmsynth\", \"membranesynth\", \"metalsynth\", \"monosynth\", \"noisesynth\", \"plucksynth\", \"polysynth\", \"sampler\", \"synth\"\n voice: \"synth\", // \"undefined\", or one of \"synth\", \"monosynth\", \"fmsynth\", \"duosynth\", \"amsynth\"\n options: {},\n },\n\n //tuna: {\n // Overdrive: {\n // outputGain: 0.5, //0 to 1+\n // drive: 0.7, //0 to 1\n // curveAmount: 1, //0 to 1\n // algorithmIndex: 0, //0 to 5, selects one of our drive algorithms\n // bypass: 0,\n // },\n // Chorus: {\n // intensity: 0.3, //0 to 1\n // rate: 4, //0.001 to 8\n // stereoPhase: 0, //0 to 180\n // bypass: 0,\n // }\n //}\n };\n //const _DEFAULT_CONFIG = ispoly ? {\"poly\": {}, \"0\":_DEFAULT_SOUND_CONFIG} : _DEFAULT_SOUND_CONFIG;\n\n //const beatwad = new Wad({\n // source: '/assets/sound/Berklee44v1/anklung_1.wav',\n //});\n //const uidefsgen = (('uidefs' in reduced_lambda_obj) && ('_default' in reduced_lambda_obj.uidefs)) ? reduced_lambda_obj.uidefs._default : undefined;\n //const margingen = (('margin' in reduced_lambda_obj) && ('_default' in reduced_lambda_obj.margin)) ? reduced_lambda_obj.margin._default : undefined;\n //const fieldwidthgen = (('fieldwidth' in reduced_lambda_obj) && ('_default' in reduced_lambda_obj.fieldwidth)) ? reduced_lambda_obj.fieldwidth._default : undefined;\n\n //const midiInput$ = new Subject();\n\n //const midiMessageReceived = ev => {\n // //console.log('midiMessageReceived', ev)\n // if ([144].includes(ev[0]))\n // {\n // // navigator web midi\n // //const [cmd, noteNumber] = ev.data\n // //const velocity = ev.data.length > 2 ? ev.data[2] : 0\n // // using jzz midi interface\n // const [cmd, noteNumber, velocity, _from] = ev\n // //const velocity = ev.data.length > 2 ? ev.data[2] : 0\n\n // if (cmd && noteNumber) {\n // //console.log(\"midi message: \", cmd, noteNumber, velocity);\n // midiInput$.next(doBottle(\"_midi_in\", {cmd, noteNumber, velocity}));\n // }\n // //this.props.cb({\n // // cmd,\n // // noteNumber,\n // // velocity,\n // //})\n // }\n //};\n\n //const onMIDISuccess = midiAccess => {\n // let inputs = midiAccess.inputs.values()\n // for (let input = inputs.next();\n // input && !input.done;\n // input = inputs.next()) {\n // input.value.onmidimessage = midiMessageReceived\n // }\n //}\n\n //const onMIDIFailure = () => console.log('Problem!')\n\n //navigator.requestMIDIAccess().then(onMIDISuccess, onMIDIFailure)\n //const midiMap = (_event) => {\n // console.log(_event.receivedTime, _event.receivedData);\n //};\n\n //Wad.assignMidiMap(midiMap);\n\n const node_context = {\n codebase: \"ghostos/api/parser/nodelogic/elements/library/sound.js\",\n refnode: _stream_cache[ElemCacheKeyLUT.REFNODE],\n //leafnode: lambdactrl.gos.etaTree.leafgraph.graph.dataflow.getNodeAttributes(refnode).leafnode.data\n };\n\n const data_trigger_bottle = doBottle(\"accio\", \"data_accio\");\n\n // this is a one-off execution of defaultgen() isolated from the main flow.\n const default_config_prom = defaultgen\n ? executeLEAFLogic(defaultgen, data_trigger_bottle, {}, node_context.refnode) //.then(_config=>{\n : //_stream_cache[ElemCacheKeyLUT.sound.CONFIG] = _config\n //});\n Promise.resolve(_DEFAULT_SOUND_CONFIG);\n\n // do the sound node configuration\n default_config_prom.then((_config) => {\n // now that _config is resolved do the following configuration steps.\n _stream_cache[ElemCacheKeyLUT.sound.CONFIG] = _config; // store the current config in cache\n //onConfigBottle(doBottle(\"soundconfig\", _config));\n });\n\n // onInitBottle is a bottle handler, triggered when a leaf bottle named \"soundinit\" arrives in the input port of the leaf dataflow stream\n // of a sound element.\n const onInitBottle = (_ibottle = undefined) => {\n if (_ibottle) {\n console.log(\"_ibottle:\", _ibottle, _stream_cache[ElemCacheKeyLUT.REFNODE]);\n const _sourcenodeuuid = _ibottle._content.soundnode_trail.slice(-1)[0];\n const _targetnodeuuid = _stream_cache[ElemCacheKeyLUT.REFNODE];\n if (is_target) {\n doConfigureTarget(_sourcenodeuuid);\n } else if (_sourcenodeuuid && _targetnodeuuid)\n connectCachedSoundStageNodes(_sourcenodeuuid, _targetnodeuuid);\n }\n\n return {\n ..._ibottle,\n _content: {\n soundnode_trail: _ibottle._content.soundnode_trail.concat(\n _stream_cache[ElemCacheKeyLUT.REFNODE],\n ),\n },\n };\n };\n\n // onConfigBottle is a bottle handler, triggered when a leaf bottle named \"soundconfig\" arrives in the input port of the leaf dataflow stream\n // of a sound element.\n const onConfigBottle = (_cbottle = undefined) => {\n let newconfig;\n if (_cbottle) {\n // change the config and create a daw obj to replace an old one, if any.\n newconfig = doUnbottle(\"soundconfig\", _cbottle);\n\n // now that _config is resolved do the following configuration steps.\n _stream_cache[ElemCacheKeyLUT.sound.CONFIG] = newconfig; // store the current config in cache\n } else {\n newconfig = _stream_cache[ElemCacheKeyLUT.sound.CONFIG];\n }\n\n let _soundnode;\n if (is_instrument) {\n _soundnode = doConfigureInstrument(_stream_cache[ElemCacheKeyLUT.REFNODE], newconfig);\n //_soundnode.toDestination();\n } else if (is_source) {\n _soundnode = doConfigureSource(newconfig);\n } else if (is_effect) {\n _soundnode = doConfigureEffect(\n _stream_cache[ElemCacheKeyLUT.REFNODE],\n newconfig,\n _stream_cache[ElemCacheKeyLUT.sound.SOUNDSTAGE] !== undefined,\n );\n } else {\n // default is an effect\n _soundnode = doConfigureEffect(_stream_cache[ElemCacheKeyLUT.REFNODE], newconfig);\n }\n\n //delete _stream_cache[ElemCacheKeyLUT.sound.SOUNDSTAGE];\n //destroySoundStageNode(_stream_cache[ElemCacheKeyLUT.REFNODE]); // destroy if any previously instantiated soundnode exists\n _stream_cache[ElemCacheKeyLUT.sound.SOUNDSTAGE] = _soundnode;\n cacheSoundStageNode(_stream_cache[ElemCacheKeyLUT.REFNODE], _soundnode);\n\n //const newconfigkeys = Object.keys(newconfig);\n //if (ispoly) {\n // newconfig = newconfigkeys.map(_configkey => {\n // if (_configkey in _stream_cache[ElemCacheKeyLUT.sound.CONFIG]) { // if a sound config exists for the given config key\n // if (JSON.stringify(_stream_cache[ElemCacheKeyLUT.sound.CONFIG][_configkey]) != JSON.stringify(newconfig[_configkey])) { // if the new config has difference.\n // if (ispoly) {\n // //const _new_wad = new Wad(newconfig[_configkey]);\n // //const _new_tone = toneinstrument_lut[]\n // _stream_cache[ElemCacheKeyLUT.sound.SOUNDSTAGE][_configkey] = _new_wad;\n // _stream_cache[ElemCacheKeyLUT.sound.SOUNDSTAGE][\"poly\"].remove(_stream_cache[ElemCacheKeyLUT.sound.SOUNDSTAGE][_configkey]);\n // _stream_cache[ElemCacheKeyLUT.sound.SOUNDSTAGE][\"poly\"].add(_new_wad);\n // _stream_cache[ElemCacheKeyLUT.sound.CONFIG][_configkey] = newconfig[_configkey];\n // }\n // return newconfig[_configkey];\n // }\n // return undefined;\n // }\n // else if (!(_configkey in _stream_cache[ElemCacheKeyLUT.sound.CONFIG])) {\n // const _new_wad = new Wad(newconfig[_configkey]);\n // _stream_cache[ElemCacheKeyLUT.sound.SOUNDSTAGE][_configkey] = _new_wad;\n // _stream_cache[ElemCacheKeyLUT.sound.SOUNDSTAGE][\"poly\"].add(_new_wad);\n // _stream_cache[ElemCacheKeyLUT.sound.CONFIG][_configkey] = newconfig[_configkey];\n // return newconfig[_configkey];\n // }\n // });\n //}\n //else {\n\n // // spark_dev_note: 10/July/2023\n // // too sleepy to continue wrapping up tonight. will continue tomorrow.\n // // currently the soundconfig bottle handling block isn't complete.\n //}\n //_stream_cache[ElemCacheKeyLUT.sound.CONFIG] = {..._stream_cache[ElemCacheKeyLUT.sound.CONFIG], ...newconfig};\n //_stream_cache[ElemCacheKeyLUT.sound.SOUNDSTAGE] = new Wad(_stream_cache[ElemCacheKeyLUT.sound.CONFIG]);\n };\n\n const _leaflogic = (input$objArr, controlflow$obj) => {\n //const _stream_cache = {};\n //const _outflow_data$ = new BehaviorSubject(raceConditionError);\n\n const _outflow_data$ = new BehaviorSubject(undefined);\n //const uidefs$obj = uidefsgen ? uidefsgen(input$objArr, controlflow$obj) :\n // {_stream: of(_TEST_UIDEFS)}; // executeLEAFLogicInSync(urigen, merged_input$, undefined, _ctrl_data$, {...controlflow$obj._config}) : {_stream: of([]), _control: {_stream: _ctrl_data$}};\n //const margin$obj = margingen ? margingen(input$objArr, controlflow$obj) :\n // {_stream: of(_TEST_MARGIN)}; //executeLEAFLogicInSync(headergen, merged_input$, undefined, _ctrl_data$, {...controlflow$obj._config}) : {_stream: of([]), _control: {_stream: _ctrl_data$}};\n //const fieldwidth$obj = fieldwidthgen ? fieldwidthgen(input$objArr, controlflow$obj) :\n // {_stream: of(_TEST_FIELDWIDTH)}; //executeLEAFLogicInSync(headergen, merged_input$, undefined, _ctrl_data$, {...controlflow$obj._config}) : {_stream: of([]), _control: {_stream: _ctrl_data$}};\n //const wadconfig$obj = (defaultgen ?\n // driveDataflowByCtrlflow(\n // {_stream: of(ctrl_trigger_bottle)}, [{_stream: of(data_trigger_bottle)}], undefined, node_context,\n // {\n // leaflogic: defaultgen,\n // datalogic: {post: (_data) => {\n // _stream_cache[ElemCacheKeyLUT.wad.CONFIG] = _data;\n // _stream_cache[ElemCacheKeyLUT.wad.WADOBJ] = new Wad(_data);\n // return _stream_cache[ElemCacheKeyLUT.wad.WADOBJ];\n // }}\n // }\n // ) :\n // {_stream: of(_DEFAULT_CONFIG), _control: {_stream: controlflow$obj._stream}}\n //);\n //const midi_device = JZZ().openMidiIn().or('Error: Cannot open MIDI In port').and(\n // (_midi) => {console.log('MIDI-In: ', _midi, Wad.midiInputs);}\n //).connect(midiMessageReceived);\n\n const _ctrl_out$ = controlflow$obj._stream.pipe(\n map((_ctrl_in) => {\n _stream_cache[ElemCacheKeyLUT.CTRLIN] = _ctrl_in;\n return _ctrl_in;\n }),\n //switchMap(_ctrl_in => {\n // _stream_cache[ElemCacheKeyLUT.CTRLIN] = _ctrl_in;\n\n // // perform any input data (read) operations specific to the element here\n // // like accessing the most up-to-date messages from rx subjects/streams, etc\n // // spark_dev_note: #http_dataflow_point\n // //const _data_in$ = combineLatest([wadconfig$obj._stream, ...input$objArr.map(_input=>_input._stream)]);\n //\n // const _data_in$ = combineLatest(input$objArr.map(_input=>_input._stream));\n\n // // return data read from the rx stream domain as an array\n // return _data_in$;\n //}),\n withLatestFrom(...input$objArr.map((_input) => _input._stream)),\n //switchMap(_ctrl_in=> {\n // const _data_in$ = merge(...input$objArr.map(_input=>_input._stream));\n // return _data_in$;\n //}),\n //bufferTime(20),\n //filter(_=>_.length>0),\n map((_combined_in) => {\n //console.log(\"testing element _leaflogic: \", _data_in);\n // perform any output data (write) operations specific to the element here\n // like sending messages to rx subjects, etc\n\n const processed_in = _combined_in\n .slice(1)\n .flat()\n .map((_bottle) => {\n if (_bottle._bname === \"_data_in\") return doUnbottle(\"*\", _bottle);\n else if (_bottle._bname === \"_midi_in\") {\n return _bottle;\n } else if (_bottle._bname === \"soundconfig\") onConfigBottle(_bottle);\n else if (_bottle._bname === \"soundinit\") return onInitBottle(_bottle);\n return undefined;\n })\n .filter((_b) => _b);\n\n if (processed_in.length > 0) _outflow_data$.next(processed_in);\n\n //if (processed_in.length === 1)\n // _outflow_data$.next(processed_in[0]);\n //else if (processed_in.length > 1)\n // _outflow_data$.next(processed_in);\n\n //if (_data_in.length > 1)\n // _outflow_data$.next(_data_in);\n //else if (_data_in.length === 1)\n // _outflow_data$.next(_data_in[0]);\n //// return ctrl\n return _stream_cache[ElemCacheKeyLUT.CTRLIN];\n }),\n share(),\n );\n\n return {\n _stream: _outflow_data$.pipe(filter((_) => _)),\n _control: { _stream: _ctrl_out$ },\n };\n };\n\n // put any static data preprocessing logic applied to all incident data,\n // flown on each incoming edge stream.\n // data preprocessed and returned from this function will continue to flow in the data domain\n // of the current element node.\n const _datalogic_pre = (data_in) => {\n //const data_out = doBottle(\"_data_in\", data_in);\n const data_out = data_in;\n if (!_stream_cache[ElemCacheKeyLUT.sound.SOUNDSTAGE] && !is_target) {\n onConfigBottle(); // first call\n //console.error(\"LEAF Error: leaf sound element was used before initialization\");\n //try {\n //_stream_cache[ElemCacheKeyLUT.sound.CONFIG] = await default_config_prom;\n //const\n //_stream_cache[ElemCacheKeyLUT.sound.SOUNDSTAGE] = //ispoly ? {\"0\": new Wad(_stream_cache[ElemCacheKeyLUT.sound.CONFIG][\"0\"])} : new Wad(_stream_cache[ElemCacheKeyLUT.sound.CONFIG]);\n //if (ispoly) {\n // _stream_cache[ElemCacheKeyLUT.sound.SOUNDSTAGE][\"poly\"] = new Wad.Poly(_stream_cache[ElemCacheKeyLUT.sound.CONFIG][\"poly\"]);\n // _stream_cache[ElemCacheKeyLUT.sound.SOUNDSTAGE][\"poly\"].add(_stream_cache[ElemCacheKeyLUT.sound.SOUNDSTAGE][\"0\"]);\n //}\n //}\n //catch (err) {\n // console.log(err);\n // //delete _stream_cache[ElemCacheKeyLUT.sound.SOUNDSTAGE];\n //}\n }\n\n if (is_target) initializeToneState();\n\n return data_out;\n };\n\n //let saw = new globalThis.Wad({source : 'sawtooth'});\n // put any static data postprocessing logic applied to all incident data,\n // to be flown on the outgoing edge stream.\n // data postprocessed and returned from this function will continue to flow in the data domain\n // of the current element node.\n const _datalogic_post = (data_in) => {\n if (!Array.isArray(data_in)) console.log(\"start debugging\");\n const filtered_data_in = data_in.map((_in_bottle) => {\n if (_in_bottle._bname === \"_midi_in\") {\n console.log(_in_bottle._content);\n const soundstageobj = _stream_cache[ElemCacheKeyLUT.sound.SOUNDSTAGE];\n if (_in_bottle._content.velocity > 0) {\n const pitchname = midi_notenum2pitchname(_in_bottle._content.noteNumber);\n const duration = _in_bottle._content.duration; // optional, may be undefined\n //_stream_cache[ElemCacheKeyLUT.sound.SOUNDSTAGE][\"poly\"].play({pitch: pitchname, label: pitchname});\n if (duration) soundstageobj.triggerAttackRelease(pitchname, duration);\n else soundstageobj.triggerAttack(pitchname);\n //_stream_cache[ElemCacheKeyLUT.sound.SOUNDSTAGE].play({pitch: pitchname, label: pitchname});\n } else {\n const pitchname = midi_notenum2pitchname(_in_bottle._content.noteNumber);\n console.log(\"daw stop() \", pitchname);\n //_stream_cache[ElemCacheKeyLUT.sound.SOUNDSTAGE][\"poly\"].stop(pitchname);\n //_stream_cache[ElemCacheKeyLUT.sound.SOUNDSTAGE].stop(pitchname);\n soundstageobj.triggerRelease(pitchname);\n }\n return EmptyBottle;\n }\n return _in_bottle;\n });\n //const marginval = reduced_lambda_obj.margin ? Object.keys(reduced_lambda_obj.margin) : undefined;\n //const fieldwidthval = reduced_lambda_obj.fieldwidth ? Object.keys(reduced_lambda_obj.fieldwidth) : undefined;\n\n // spark_dev_note: #http_dataflow_point // corresponding handles upstream\n //const _uidefs = data_in[0]; // uidefs$obj._stream\n //const _margin_userval = data_in[1]; // margin$obj._stream\n //const _fieldwidth_userval = data_in[2]; // fieldwidth$obj._stream\n let _flowdatain = filtered_data_in; // [...input$objArr]\n _flowdatain = _flowdatain.length === 1 ? _flowdatain[0] : _flowdatain; // take care of data plurality\n\n //const node_output = formatElementFlowdata({\n // element: {\n // nodeuuid: _stream_cache[ElemCacheKeyLUT.REFNODE],\n // type: 'midi',\n // componentdata: {\n // mediatype: mediatype,\n // nodeinput: Array.isArray(_flowdatain) ? _flowdatain : [_flowdatain],\n // callbacks: {\n // onDropAccepted: (files, dropevent) => {\n // console.log(\"start debugging\");\n // }\n // }\n // }\n // }\n //}, \"screenio\");\n const node_output = _flowdatain;\n\n return node_output;\n };\n\n return {\n leaflogic: _leaflogic,\n datalogic: {\n pre: _datalogic_pre,\n post: _datalogic_post,\n },\n };\n};\n\nconst props = initElementInterface;\n\nexport { props, cachekeys, midi_notenum2pitchname };\n","import { BehaviorSubject, Subject, of } from \"rxjs\";\nimport { map, withLatestFrom } from \"rxjs/operators\";\nimport { v4 as uuid4 } from \"uuid\";\n\nimport { ElemCacheKeyLUT, formatElementFlowdata } from \"./index.js\";\nimport { driveDataflowByCtrlflow, executeLEAFLogic } from \"../../../leaf.js\";\nimport { doBottle, doUnbottle } from \"../../datautils/bottling.js\";\n//import { exitDataBus } from \"../../../../utils/leafdataflow\";\n\nconst raceConditionError = doBottle(\n \"error\",\n {\n type: \"critical\",\n message: \"LEAF core error: race condition detected in gnav.js\",\n codebase: \"/src/ghostos/api/parser/nodelogic/elements/library/gnav.js\",\n },\n {},\n);\n/*\n * spark_dev_note: 25/Apr/2023\n * all leaflogic and datalogic functions must be designed to conform to the following spec,\n * in order to make sure of the inter-operability of newly developed leaf elements\n * in breezyforest.\n *\n * leaflogic lives in the rx flow domain, hence is an ideal function to deal with\n * any data i/o existing in that domain. Data in the reactive stream domain is accessable via\n * invoking leaf lambda functions, normally bearing the function argument signature of ([input$Arr, ctrlflow$obj]),\n * or via calling any functions or rx inline pipe-map that would provide the logic for statically\n * manipulating data flown through any locally accessable rx streams of interest.\n * Please note the convention of variable names post-scripted with the dollar sign ($), denoting the handles for\n * respective data streams.\n *\n * datalogic lives in the static data domain. How data i/o happens in this domain is not directly compatible with the stream domain.\n * the two optional datalogic functions, pre and post, are used to \"statically\" work on data, in terms of taking data input,\n * performing data transformation/read/write operations, and returning data output, at two temporal data points, respectively\n * coinciding with the time before (pre) and after (post) the incidence of data flowing through the leaflogic stream domain.\n *\n */\n\nconst cachekeys = {\n EDGES: \"_edges\",\n BACKDROP: \"_backdrop\",\n};\n\nconst initElementInterface = (_stream_cache) => {\n const reduced_lambda_obj = _stream_cache[ElemCacheKeyLUT.LAMBDA_OBJ];\n const iselementio = \"elementio\" in reduced_lambda_obj ? true : false;\n const edgesgen =\n \"edges\" in reduced_lambda_obj && \"_default\" in reduced_lambda_obj.edges\n ? reduced_lambda_obj.edges._default\n : undefined;\n const backdropgen =\n \"backdrop\" in reduced_lambda_obj && \"_default\" in reduced_lambda_obj.backdrop\n ? reduced_lambda_obj.backdrop._default\n : undefined;\n\n const node_context = {\n codebase: \"ghostos/api/parser/nodelogic/elements/library/gnav.js\",\n refnode: _stream_cache[ElemCacheKeyLUT.REFNODE],\n //leafnode: lambdactrl.gos.etaTree.leafgraph.graph.dataflow.getNodeAttributes(refnode).leafnode.data\n };\n let _controlflow_config = {};\n const _leaflogic = (input$objArr, controlflow$obj) => {\n _controlflow_config = controlflow$obj._config;\n //const _stream_cache = {};\n //const _outflow_data$ = new BehaviorSubject(raceConditionError);\n const _outflow_data$ = new Subject();\n\n const edges$obj = edgesgen\n ? driveDataflowByCtrlflow(controlflow$obj, input$objArr, undefined, node_context, {\n leaflogic: edgesgen,\n datalogic: {\n post: (_data) => {\n _stream_cache[ElemCacheKeyLUT.gnav.EDGES] = _data;\n return _data;\n },\n },\n })\n : { _stream: of([]), _control: controlflow$obj._stream };\n\n const backdrop$obj = backdropgen\n ? driveDataflowByCtrlflow(edges$obj._control, input$objArr, undefined, node_context, {\n leaflogic: backdropgen,\n datalogic: {\n post: (_data) => {\n _stream_cache[ElemCacheKeyLUT.gnav.BACKDROP] = _data;\n return _data;\n },\n },\n })\n : { _stream: of(\"/assets/test/hubbleinfrared_dark2.jpg\"), _control: edges$obj._control };\n\n const _inflow_ctrl$ = backdrop$obj._control._stream;\n\n const _ctrl_out$ = _inflow_ctrl$.pipe(\n //concatMap(_ctrl_in => {\n // _stream_cache[ElemCacheKeyLUT.CTRLIN] = _ctrl_in;\n\n // // perform any input data (read) operations specific to the element here\n // // like accessing the most up-to-date messages from rx subjects/streams, etc\n // // spark_dev_note: #http_dataflow_point\n // const _data_in$ = combineLatest([...input$objArr.map(_input=>_input._stream)]);\n\n // // return data read from the rx stream domain as an array\n // return _data_in$;\n //}),\n withLatestFrom(...input$objArr.map((_input) => _input._stream)),\n map((_combined_in) => {\n const _data_in = _combined_in[1];\n console.log(\"testing element _leaflogic: \", _data_in);\n // perform any output data (write) operations specific to the element here\n // like sending messages to rx subjects, etc\n\n //if (_data_in.length > 1)\n // _outflow_data$.next(_data_in);\n //else if (_data_in.length === 1)\n // _outflow_data$.next(_data_in[0]);\n if (_data_in !== undefined) _outflow_data$.next(_data_in);\n // return ctrl\n return _combined_in[0]; //_stream_cache[ElemCacheKeyLUT.CTRLIN];\n }),\n );\n\n return { _stream: _outflow_data$, _control: { _stream: _ctrl_out$ } };\n };\n\n // put any static data preprocessing logic applied to all incident data,\n // flown on each incoming edge stream.\n // data preprocessed and returned from this function will continue to flow in the data domain\n // of the current element node.\n const _datalogic_pre = (_data_in) => {\n const quarantined_data_in = Array.isArray(_data_in)\n ? _data_in\n .map((_in) => {\n return doUnbottle(\"screenio\", _in);\n })\n .filter((_) => _)\n : doUnbottle(\"screenio\", _data_in);\n\n const data_out = quarantined_data_in;\n\n return data_out;\n };\n\n // put any static data postprocessing logic applied to all incident data,\n // to be flown on the outgoing edge stream.\n // data postprocessed and returned from this function will continue to flow in the data domain\n // of the current element node.\n const _datalogic_post = (data_in) => {\n const graph_options = { layout: \"3d\" };\n const navnodes = data_in;\n // spark_dev_note: (22/Mar/2023)\n // #bugreport #mar2023bug1\n // _metadata[4] is an un-exited _databus bottle\n // fix: to convert undefined data to []\n //const navnodeedges = _metadata[4].map((edge) => {return {...edge, uuid: uuid4()};});\n // spark_dev_note: 18/Jun/2023\n // #databus\n //const _edgelist = exitDataBus({_bus: _stream_cache[ElemCacheKeyLUT.gnav.EDGES]})\n const _edgelist = doUnbottle(_stream_cache[ElemCacheKeyLUT.gnav.EDGES]);\n const navnodeedges = (_edgelist ? _edgelist : []).map((edge) => {\n return { ...edge, uuid: uuid4() };\n });\n\n const navbackdrop = _stream_cache[ElemCacheKeyLUT.gnav.BACKDROP]; //.map(() => {return {...edge, uuid: uuid4()};});\n //const bgtagvectors = _metadata[6];\n\n const elementiosubject$ = new BehaviorSubject(raceConditionError);\n //const marginval = reduced_lambda_obj.margin ? Object.keys(reduced_lambda_obj.margin) : undefined;\n //const fieldwidthval = reduced_lambda_obj.fieldwidth ? Object.keys(reduced_lambda_obj.fieldwidth) : undefined;\n\n // spark_dev_note: #http_dataflow_point // corresponding handles upstream\n //const _uidefs = data_in[0]; // uidefs$obj._stream\n //const _margin_userval = data_in[1]; // margin$obj._stream\n //const _fieldwidth_userval = data_in[2]; // fieldwidth$obj._stream\n //let _flowdatain = data_in.slice(3); // [...input$objArr]\n //_flowdatain = _flowdatain.length === 1 ? _flowdatain[0] : _flowdatain; // take care of data plurality\n\n const node_output = formatElementFlowdata(\n {\n element: {\n nodeuuid: _stream_cache[ElemCacheKeyLUT.REFNODE],\n type: \"gnav\",\n componentdata: {\n //graph_data: {\"nodes\": Array.isArray(_metadata[0]) ? _metadata[0] : [_metadata[0]], \"edges\": mock_navnodeedges},\n graph_data: {\n nodes: Array.isArray(navnodes) ? navnodes : [navnodes],\n edges: navnodeedges,\n },\n backdrop_url: navbackdrop,\n bgtagvectors: async () => {\n const _leaflogic =\n \"tagvectors\" in reduced_lambda_obj && \"_default\" in reduced_lambda_obj.tagvectors\n ? reduced_lambda_obj.tagvectors._default\n : undefined;\n const _leaflogic_ret = _leaflogic\n ? await executeLEAFLogic(_leaflogic, [], { ..._controlflow_config })\n : [];\n return _leaflogic_ret;\n },\n tagaction: async (_tagid) => {\n //const domain = getDomain ? await executeLEAFLogic(getDomain, [], {}) : defaultdomain;\n const tagactionlogic =\n \"tagaction\" in reduced_lambda_obj && \"_default\" in reduced_lambda_obj.tagaction\n ? reduced_lambda_obj.tagaction._default\n : undefined;\n const tagaction_ret = tagactionlogic\n ? await executeLEAFLogic(tagactionlogic, _tagid, { ..._controlflow_config })\n : _tagid;\n\n if (iselementio)\n elementiosubject$.next(\n doBottle(\"elementio\", {\n element: \"gnav\",\n nodeuuid: _stream_cache[ElemCacheKeyLUT.REFNODE],\n io: { tagaction: tagaction_ret },\n }),\n );\n return tagaction_ret;\n },\n blankaction: async (_coord) => {\n //const domain = getDomain ? await executeLEAFLogic(getDomain, [], {}) : defaultdomain;\n const blankactionlogic =\n \"blankaction\" in reduced_lambda_obj && \"_default\" in reduced_lambda_obj.blankaction\n ? reduced_lambda_obj.blankaction._default\n : undefined;\n const blankaction_ret = blankactionlogic\n ? await executeLEAFLogic(blankactionlogic, _coord, { ..._controlflow_config })\n : _coord;\n return blankaction_ret;\n },\n graph_options,\n ..._stream_cache[ElemCacheKeyLUT.RTCONTEXT],\n },\n },\n },\n \"screenio\",\n );\n\n return node_output;\n };\n\n return {\n leaflogic: _leaflogic,\n datalogic: {\n pre: _datalogic_pre,\n post: _datalogic_post,\n },\n };\n};\n\nconst props = initElementInterface;\n\nexport { props, cachekeys };\n","import { BehaviorSubject, Subject, combineLatest, of } from \"rxjs\";\nimport { switchMap, filter, map, share, withLatestFrom } from \"rxjs/operators\";\n\nimport { ElemCacheKeyLUT, formatElementFlowdata } from \"./index.js\";\n\nimport { driveDataflowByCtrlflow } from \"../../../leaf.js\";\nimport { isBottle } from \"../../../predicates.js\";\nimport _ from \"lodash\";\n\nconst cachekeys = {\n URI: \"_http_uri\",\n HEADER: \"_http_header\",\n REQUEST_TTL_CACHE: \"_http_request_ttl_cache\",\n};\n\nconst GENERIC_URI_NAME = \"{*}\";\nconst HTTP_REQUEST_BNAME = \"http-request\";\nconst URI_FALLBACK_DEFAULT = \"https://www.leafgon.com\";\n\n/*\nexample http request bottle looks like so:\n{\n _bname: \"http-requst\",\n _content: {\n uri: \"\",\n header: \"\",\n mode: \"get\", // or \"post\", \"put\"\n data: \"\"\n },\n _label: {}\n}\n*/\n\nconst initElementInterface = (_stream_cache) => {\n const reduced_lambda_obj = _stream_cache[ElemCacheKeyLUT.LAMBDA_OBJ];\n const urigen =\n \"uri\" in reduced_lambda_obj && \"_default\" in reduced_lambda_obj.uri\n ? reduced_lambda_obj.uri._default\n : undefined;\n const headergen =\n \"header\" in reduced_lambda_obj && \"_default\" in reduced_lambda_obj.header\n ? reduced_lambda_obj.header._default\n : undefined;\n\n const node_context = {\n codebase: \"ghostos/api/parser/nodelogic/elements/library/http.js\",\n refnode: _stream_cache[ElemCacheKeyLUT.REFNODE],\n //leafnode: lambdactrl.gos.etaTree.leafgraph.graph.dataflow.getNodeAttributes(refnode).leafnode.data\n };\n //axios_instances[node_context.refnode] = axios.create({});\n\n const _GENERIC_URI = \"{*}\";\n const _DEFAULT_HEADER = \"\";\n //const axios_instance = axios_instances[node_context.refnode];\n\n const _elementlogic = async (_data_in, _ctrl_in = {}) => {\n //_stream_cache[ElemCacheKeyLUT.DATAIN] = _metadata;\n let _uribase = _stream_cache[ElemCacheKeyLUT.http.URI]; // uri$obj._stream\n let _header = _stream_cache[ElemCacheKeyLUT.http.HEADER]; // header$obj._stream\n\n // spark_dev_note: #http_dataflow_point // corresponding handles upstream\n let _flowdatain = _data_in; //.slice(2); // [...input$objArr]\n _flowdatain = _flowdatain.length === 1 ? _flowdatain[0] : _flowdatain; // take care of data plurality\n\n const recognizedLambdaConstants = [\"uri\", \"post\", \"put\", \"get\", \"header\", \"?graph\"];\n const curLambdaKeys = Object.keys(reduced_lambda_obj);\n const validLambdaKeyList = recognizedLambdaConstants.filter((_) => curLambdaKeys.includes(_));\n\n let http_mode = validLambdaKeyList.includes(\"post\")\n ? \"post\"\n : validLambdaKeyList.includes(\"put\")\n ? \"put\"\n : \"get\";\n if (\n _uribase === GENERIC_URI_NAME &&\n isBottle(_flowdatain) &&\n _flowdatain._bname === HTTP_REQUEST_BNAME\n ) {\n _uribase = _flowdatain._content.uri ? _flowdatain._content.uri : URI_FALLBACK_DEFAULT;\n _header = _flowdatain._content.header ? _flowdatain._content.header : _header;\n http_mode = _flowdatain._content.mode ? _flowdatain._content.mode : http_mode;\n _flowdatain = _flowdatain._content.data ? _flowdatain._content.data : \"\";\n }\n //const poprect = validLambdaKeyList.length > 0 ? validLambdaKeyList[0] : 'center';\n //lookupRuntimeLambdaLUT: async (refnode, nodelambda, contextuallambda)\n const domain = ElemCacheKeyLUT.DOMAIN ? _stream_cache[ElemCacheKeyLUT.DOMAIN] : undefined;\n const appid = ElemCacheKeyLUT.APPID ? _stream_cache[ElemCacheKeyLUT.APPID] : undefined;\n const _uri = validLambdaKeyList.includes(\"?graph\")\n ? _uribase + `?graph=${domain}/${appid}`\n : _uribase;\n\n // prepare auth cookies if the provenance label of the _ctrl_in is \"leafgon-nodejs\"\n console.log(`leafelement: http: _ctrl_in: ${JSON.stringify(_ctrl_in)}`);\n let _nodejs_cookies = undefined;\n // find at least one object with _label.provenance = 'leaf-nodejs' in the traces\n _ctrl_in.some((entry) =>\n Object.values(entry).some((sub) => {\n if (typeof sub === \"object\" && sub._label?.provenance === \"leaf-nodejs\") {\n console.log(\n `leafelement: http: _ctrl_in originated from leafgon-nodejs, extracting cookies...`,\n );\n _nodejs_cookies = sub._content;\n return true;\n }\n return false;\n }),\n );\n //if (_ctrl_in[0]._label.provenance === \"leaf-nodejs\") {\n // console.log(`leafelement: http: _ctrl_in originated from leafgon-nodejs, extracting cookies...`);\n // _nodejs_cookies = _ctrl_in[0]._content;\n //}\n\n const _do_uri_request = async ({ http_mode, uri } = {}) => {\n if ([\"post\", \"put\"].includes(http_mode)) {\n // put, post\n //if (http_mode === 'post') {\n // if (_header?.X_CSRF_Token)\n // axios_instance.defaults.headers.post['X-CSRF-Token'] = _header.X_CSRF_Token; // https://github.com/axios/axios/issues/2024\n // axios_instance.defaults.headers.post = {\n // ...axios_instance.defaults.headers.post, ..._header,\n // 'Access-Control-Allow-Headers': 'Origin, X-Requested-With, Content-Type, Accept'\n // };\n //}\n //else if (http_mode === 'put') {\n // if (_header?.X_CSRF_Token)\n // axios_instance.defaults.headers.put['X-CSRF-Token'] = _header.X_CSRF_Token; // https://github.com/axios/axios/issues/2024\n // axios_instance.defaults.headers.put = {\n // ...axios_instance.defaults.headers.post, ..._header,\n // 'Access-Control-Allow-Headers': 'Origin, X-Requested-With, Content-Type, Accept'\n // };\n //}\n //axios_instance.defaults.withCredentials = true;\n try {\n //console.log(_flowdatain);\n //const resprom = validLambdaKeyList.includes('put') ?\n // axios_instance.put(uri,_flowdatain, { withCredentials: true }) :\n // axios_instance.post(uri,_flowdatain, { withCredentials: true });\n const resprom = uri\n ? fetch(uri, {\n method: http_mode.toUpperCase(), //'POST',\n mode: \"cors\",\n headers: _nodejs_cookies\n ? {\n ..._header,\n Cookie: _nodejs_cookies,\n //'Accept': 'application/json',\n //'Content-Type': 'application/json'\n }\n : {\n ..._header,\n }, // spark changed from headers, -> headers: headers,\n credentials: \"include\", // https://stackoverflow.com/questions/34558264/fetch-api-with-cookie\n //body: JSON.stringify({query, variables: (variables || {})}),\n body: JSON.stringify(_flowdatain),\n })\n : of([{ data: \"LEAF element error: http get request submitted with undefined URI\" }]);\n const res = await resprom;\n const json_output = await res.json();\n console.log(res);\n //return _metadata.push(res.data);\n //node_output = formatFlowdata(processAxiosObj(res.data), \"elementio\");\n return json_output;\n } catch (err) {\n console.log(err);\n if (err.response) {\n // The request was made and the server responded with a status code\n // that falls out of the range of 2xx\n console.log(err.response.data);\n console.log(err.response.status);\n console.log(err.response.headers);\n //node_output = formatFlowdata(processAxiosObj(err.response.data), \"elementio\");\n } else if (err.request) {\n // The request was made but no response was received\n // `error.request` is an instance of XMLHttpRequest in the browser and an instance of\n // http.ClientRequest in node.js\n console.log(err.request);\n //node_output = formatFlowdata(processAxiosObj(err.request), \"elementio\");\n } else {\n // Something happened in setting up the request that triggered an Error\n console.log(\"Error\", err.message);\n //node_output = formatFlowdata(processAxiosObj(err.request), \"elementio\");\n }\n console.log(err.config);\n return err.response;\n }\n } else {\n // get\n try {\n console.log(\"executing http get\");\n //axios.defaults.headers.get['X-CSRF-Token'] = _header.X_CSRF_Token; // https://github.com/axios/axios/issues/2024\n //axios_instance.defaults.headers.get = {\n // ...axios_instance.defaults.headers.get,\n // ..._header,\n // 'Access-Control-Allow-Headers': 'Origin, X-Requested-With, Content-Type, Accept'\n //};\n //axios_instance.defaults.withCredentials = true;\n //const resprom = uri ? axios_instance.get(uri) : of([{data: \"LEAF element error: http get request submitted with undefined URI\"}]);\n const resprom = uri\n ? fetch(uri, {\n method: \"GET\",\n headers: _nodejs_cookies\n ? {\n ..._header,\n Accept: \"application/json\",\n Cookie: _nodejs_cookies,\n //'Content-Type': 'application/json'\n }\n : { ..._header, Accept: \"application/json\" }, // spark changed from headers, -> headers: headers,\n credentials: \"include\", // https://stackoverflow.com/questions/34558264/fetch-api-with-cookie\n //body: JSON.stringify({query, variables: (variables || {})}),\n })\n : of([{ data: \"LEAF element error: http get request submitted with undefined URI\" }]);\n const res = await resprom;\n //return _metadata.push(res.data);\n\n const json_output = await res.json();\n console.log(res);\n //node_output = formatFlowdata(processAxiosObj(res.data), \"elementio\");\n return json_output; //res.data;\n } catch (err) {\n if (err.response) {\n // The request was made and the server responded with a status code\n // that falls out of the range of 2xx\n console.error(err.response.data);\n console.log(err.response.status);\n console.log(err.response.headers);\n //node_output = formatFlowdata(processAxiosObj(err.response.data), \"elementio\");\n } else if (err.request) {\n // The request was made but no response was received\n // `error.request` is an instance of XMLHttpRequest in the browser and an instance of\n // http.ClientRequest in node.js\n console.log(err);\n //node_output = formatFlowdata(processAxiosObj(err.message), \"elementio\");\n } else {\n // Something happened in setting up the request that triggered an Error\n console.log(\"Error\", err.message);\n //node_output = formatFlowdata(processAxiosObj(err.request), \"elementio\");\n }\n console.log(err.config);\n return err;\n }\n }\n };\n\n const throttled_uri_request = _.throttle(async () => {\n return await _do_uri_request({ http_mode, uri: _uri });\n }, 1000); // 1000 ms gap\n const req_result = await throttled_uri_request();\n return req_result;\n };\n\n const _leaflogic = (input$objArr, controlflow$obj) => {\n //const _stream_cache = {};\n //const _outflow_data$ = new BehaviorSubject(raceConditionError);\n const _outflow_data$ = new Subject(); //BehaviorSubject(raceConditionError);\n const uri$obj = urigen\n ? driveDataflowByCtrlflow(controlflow$obj, input$objArr, undefined, node_context, {\n leaflogic: urigen,\n datalogic: {\n post: (_data) => {\n _stream_cache[ElemCacheKeyLUT.http.URI] = _data;\n return _data;\n },\n },\n })\n : (() => {\n _stream_cache[ElemCacheKeyLUT.http.URI] = _GENERIC_URI;\n return {\n _stream: new BehaviorSubject(_GENERIC_URI),\n _control: { _stream: controlflow$obj._stream },\n };\n })();\n //const header$obj = headergen ? headergen(input$objArr, controlflow$obj) :\n // {_stream: of(_TEST_HEADER)}; //executeLEAFLogicInSync(headergen, merged_input$, undefined, _ctrl_data$, {...controlflow$obj._config}) : {_stream: of([]), _control: {_stream: _ctrl_data$}};\n const header$obj = headergen\n ? driveDataflowByCtrlflow(controlflow$obj, input$objArr, undefined, node_context, {\n leaflogic: headergen,\n datalogic: {\n post: (_data) => {\n _stream_cache[ElemCacheKeyLUT.http.HEADER] = _data;\n return _data;\n },\n },\n })\n : (() => {\n _stream_cache[ElemCacheKeyLUT.http.HEADER] = _DEFAULT_HEADER;\n return {\n _stream: new BehaviorSubject(_DEFAULT_HEADER),\n _control: { _stream: controlflow$obj._stream },\n };\n })();\n\n const merged_ctrl_in$ = combineLatest([uri$obj._control._stream, header$obj._control._stream]);\n const merged_data_in$ = combineLatest([uri$obj._stream, header$obj._stream]);\n\n const _ctrl_in$ = merged_ctrl_in$.pipe(\n //switchMap(_ctrl_in => {\n // _stream_cache[ElemCacheKeyLUT.CTRLIN] = _ctrl_in;\n // return merged_data_in$;\n //}),\n withLatestFrom(merged_data_in$),\n map((_aux_data_in) => {\n console.log(_aux_data_in);\n console.log(\n `leafelement: http: controlflow$obj: ${JSON.stringify(controlflow$obj._config)}, ctrl_data: ${JSON.stringify(_aux_data_in[0])}`,\n );\n\n //return _stream_cache[ElemCacheKeyLUT.CTRLIN];\n return _aux_data_in[0];\n }),\n );\n\n let traffic_semaphore = false;\n const _ctrl_out$ = _ctrl_in$.pipe(\n //switchMap(_ctrl_in => {\n // //_stream_cache[ElemCacheKeyLUT.CTRLIN] = _ctrl_in;\n\n // // perform any input data (read) operations specific to the element here\n // // like accessing the most up-to-date messages from rx subjects/streams, etc\n // // spark_dev_note: #http_dataflow_point\n // const _data_in$ = combineLatest([...input$objArr.map(_input=>_input._stream)]);\n\n // // return data read from the rx stream domain as an array\n // //return combineLatest([...input$objArr.map(_obj=>_obj._stream)]);\n // return _data_in$;\n //}),\n withLatestFrom(...input$objArr.map((_in$obj) => _in$obj._stream)),\n switchMap((_combined_in) => {\n return _elementlogic(_combined_in.slice(1), _combined_in[0]); // returns a Promise that gets interpreted the same way a stream would\n }),\n map((_data_in) => {\n console.log(\"testing element _leaflogic: \", _data_in);\n // perform any output data (write) operations specific to the element here\n // like sending messages to rx subjects, etc\n //_elementlogic()\n\n traffic_semaphore = true; // allow data to flow\n if (_data_in?.length > 1 || !Array.isArray(_data_in)) _outflow_data$.next(_data_in);\n else if (_data_in?.length === 1) _outflow_data$.next(_data_in[0]);\n // return ctrl\n return _stream_cache[ElemCacheKeyLUT.CTRLIN]; // return the current ctrl\n }),\n share(),\n );\n\n //return {_stream: _outflow_data$, _control: {_stream: _ctrl_out$}}\n return {\n _stream: _outflow_data$.pipe(\n //filter(_data_out=>isBottle(_data_out)&&_data_out._bname !== error),\n filter((_data_out) => traffic_semaphore),\n map((_data_out) => {\n console.log(_data_out);\n return _data_out;\n }),\n share(),\n ),\n _control: {\n _stream: _ctrl_out$.pipe(\n map((_ctrl_out) => {\n console.log(_ctrl_out);\n return _ctrl_out;\n }),\n share(),\n ),\n },\n };\n };\n\n // put any static data preprocessing logic applied to all incident data,\n // flown on each incoming edge stream.\n // data preprocessed and returned from this function will continue to flow in the dataflow stream domain\n // of the current element node.\n const _datalogic_pre = (data_in) => {\n const data_out = data_in;\n\n return data_out;\n };\n\n // put any static data postprocessing logic applied to all incident data,\n // to be flown on the outgoing edge stream.\n // data postprocessed and returned from this function will continue to flow in the dataflow stream domain\n // of the current element node.\n const _datalogic_post = (data_in) => {\n const _urlret = data_in;\n\n const escapeHtml = (text) => {\n // https://stackoverflow.com/questions/1787322/what-is-the-htmlspecialchars-equivalent-in-javascript/4835406#4835406\n var map = {\n \"&\": \"&amp;\",\n \"<\": \"&lt;\",\n \">\": \"&gt;\",\n '\"': \"&quot;\",\n \"'\": \"&#039;\",\n };\n\n return text.replace(/[&<>\"']/g, function (m) {\n return map[m];\n });\n };\n const processAxiosObj = (obj) => {\n const objtype = typeof obj;\n if (objtype === \"object\") {\n return Array.isArray(obj)\n ? obj.map((_) => {\n return processAxiosObj(_);\n })\n : obj\n ? Object.fromEntries(\n Object.entries(obj).map(([_key, _val]) => {\n return [_key, processAxiosObj(_val)];\n }),\n )\n : obj;\n } else if (objtype === \"string\") {\n return escapeHtml(obj);\n } else // probably of type \"number\"\n {\n return obj;\n }\n };\n const node_output = formatElementFlowdata(\n _urlret?.name && _urlret.name === \"AxiosError\"\n ? { error: _urlret.message, data: _urlret.response.data }\n : processAxiosObj(_urlret),\n \"elementio\",\n );\n\n return node_output;\n };\n\n return {\n leaflogic: _leaflogic,\n datalogic: {\n pre: _datalogic_pre,\n post: _datalogic_post,\n },\n };\n};\n\nconst props = initElementInterface;\n\nexport { props, cachekeys };\n","import { BehaviorSubject, Subject } from \"rxjs\";\nimport { switchMap, filter, map, share, withLatestFrom } from \"rxjs/operators\";\n\nimport { ElemCacheKeyLUT } from \"./index.js\";\n\nimport { driveDataflowByCtrlflow } from \"../../../leaf.js\";\nimport { isBottle } from \"../../../predicates.js\";\nimport _ from \"lodash\";\n\nconst cachekeys = {\n URI: \"_href_uri\",\n};\n\nconst GENERIC_URI_NAME = \"{*}\";\nconst HREF_REQUEST_BNAME = \"href-request\";\nconst URI_FALLBACK_DEFAULT = \"https://www.leafgon.com\";\n\n/*\nexample href request bottle looks like so:\n{\n _bname: \"href-request\",\n _content: {\n uri: \"\",\n data: \"\"\n },\n _label: {}\n}\n*/\n\nconst initElementInterface = (_stream_cache) => {\n const reduced_lambda_obj = _stream_cache[ElemCacheKeyLUT.LAMBDA_OBJ];\n const urigen =\n \"uri\" in reduced_lambda_obj && \"_default\" in reduced_lambda_obj.uri\n ? reduced_lambda_obj.uri._default\n : undefined;\n //const headergen = (('header' in reduced_lambda_obj) && ('_default' in reduced_lambda_obj.header)) ? reduced_lambda_obj.header._default : undefined;\n\n const node_context = {\n codebase: \"ghostos/api/parser/nodelogic/elements/library/href.js\",\n refnode: _stream_cache[ElemCacheKeyLUT.REFNODE],\n //leafnode: lambdactrl.gos.etaTree.leafgraph.graph.dataflow.getNodeAttributes(refnode).leafnode.data\n };\n //axios_instances[node_context.refnode] = axios.create({});\n\n const _GENERIC_URI = \"{*}\";\n //const _DEFAULT_HEADER = \"\";\n //const axios_instance = axios_instances[node_context.refnode];\n\n const _elementlogic = async (_data_in) => {\n //_stream_cache[ElemCacheKeyLUT.DATAIN] = _metadata;\n let _uribase = _stream_cache[ElemCacheKeyLUT.href.URI]; // uri$obj._stream\n\n // spark_dev_note: #http_dataflow_point // corresponding handles upstream\n let _flowdatain = _data_in; //.slice(2); // [...input$objArr]\n _flowdatain = _flowdatain.length === 1 ? _flowdatain[0] : _flowdatain; // take care of data plurality\n\n if (\n _uribase === GENERIC_URI_NAME &&\n isBottle(_flowdatain) &&\n _flowdatain._bname === HREF_REQUEST_BNAME\n ) {\n _uribase = _flowdatain._content.uri ? _flowdatain._content.uri : URI_FALLBACK_DEFAULT;\n //_header = _flowdatain._content.header ? _flowdatain._content.header : _header;\n _flowdatain = _flowdatain._content.data ? _flowdatain._content.data : \"\";\n }\n //const poprect = validLambdaKeyList.length > 0 ? validLambdaKeyList[0] : 'center';\n //lookupRuntimeLambdaLUT: async (refnode, nodelambda, contextuallambda)\n const _uri = _uribase;\n\n const _do_uri_request = async ({ uri } = {}) => {\n try {\n console.log(\"executing href request\");\n if (typeof window !== \"undefined\" && window.location.href.slice(-uri.length) !== uri)\n window.location.href = uri; //relative to domain\n return uri;\n } catch (err) {\n console.log(err);\n return err;\n }\n };\n\n const throttled_uri_request = _.throttle(async () => {\n return await _do_uri_request({ uri: _uri });\n }, 1000); // 1000 ms gap\n const req_result = await throttled_uri_request();\n return req_result;\n };\n\n const _leaflogic = (input$objArr, controlflow$obj) => {\n //const _stream_cache = {};\n //const _outflow_data$ = new BehaviorSubject(raceConditionError);\n const _outflow_data$ = new Subject(); //BehaviorSubject(raceConditionError);\n const uri$obj = urigen\n ? driveDataflowByCtrlflow(controlflow$obj, input$objArr, undefined, node_context, {\n leaflogic: urigen,\n datalogic: {\n post: (_data) => {\n _stream_cache[ElemCacheKeyLUT.href.URI] = _data;\n return _data;\n },\n },\n })\n : (() => {\n _stream_cache[ElemCacheKeyLUT.href.URI] = _GENERIC_URI;\n return {\n _stream: new BehaviorSubject(_GENERIC_URI),\n _control: { _stream: controlflow$obj._stream },\n };\n })();\n //const header$obj = headergen ? headergen(input$objArr, controlflow$obj) :\n // {_stream: of(_TEST_HEADER)}; //executeLEAFLogicInSync(headergen, merged_input$, undefined, _ctrl_data$, {...controlflow$obj._config}) : {_stream: of([]), _control: {_stream: _ctrl_data$}};\n //const header$obj = (headergen ?\n // driveDataflowByCtrlflow(\n // controlflow$obj, input$objArr, undefined, node_context,\n // {\n // leaflogic: headergen,\n // datalogic: {post: (_data) => {\n // _stream_cache[ElemCacheKeyLUT.http.HEADER] = _data;\n // return _data;\n // }}\n // }\n // ) :\n // (()=>{\n // _stream_cache[ElemCacheKeyLUT.http.HEADER] = _DEFAULT_HEADER;\n // return {_stream: new BehaviorSubject(_DEFAULT_HEADER), _control: {_stream: controlflow$obj._stream}}\n // })()\n //);\n\n const merged_ctrl_in$ = uri$obj._control._stream; //combineLatest([uri$obj._control._stream, header$obj._control._stream]);\n const merged_data_in$ = uri$obj._stream; //combineLatest([uri$obj._stream, header$obj._stream]);\n\n const _ctrl_in$ = merged_ctrl_in$.pipe(\n //switchMap(_ctrl_in => {\n // _stream_cache[ElemCacheKeyLUT.CTRLIN] = _ctrl_in;\n // return merged_data_in$;\n //}),\n withLatestFrom(merged_data_in$),\n map((_aux_data_in) => {\n console.log(_aux_data_in);\n\n //return _stream_cache[ElemCacheKeyLUT.CTRLIN];\n return _aux_data_in[0];\n }),\n );\n\n let traffic_semaphore = false;\n const _ctrl_out$ = _ctrl_in$.pipe(\n withLatestFrom(...input$objArr.map((_in$obj) => _in$obj._stream)),\n switchMap((_combined_in) => {\n return _elementlogic(_combined_in.slice(1)); // returns a Promise that gets interpreted the same way a stream would\n }),\n map((_data_in) => {\n console.log(\"testing element _leaflogic: \", _data_in);\n // perform any output data (write) operations specific to the element here\n // like sending messages to rx subjects, etc\n //_elementlogic()\n\n traffic_semaphore = true; // allow data to flow\n if (_data_in?.length > 1 || !Array.isArray(_data_in)) _outflow_data$.next(_data_in);\n else if (_data_in?.length === 1) _outflow_data$.next(_data_in[0]);\n // return ctrl\n return _stream_cache[ElemCacheKeyLUT.CTRLIN]; // return the current ctrl\n }),\n share(),\n );\n\n //return {_stream: _outflow_data$, _control: {_stream: _ctrl_out$}}\n return {\n _stream: _outflow_data$.pipe(\n //filter(_data_out=>isBottle(_data_out)&&_data_out._bname !== error),\n filter((_data_out) => traffic_semaphore),\n map((_data_out) => {\n console.log(_data_out);\n return _data_out;\n }),\n share(),\n ),\n _control: {\n _stream: _ctrl_out$.pipe(\n map((_ctrl_out) => {\n console.log(_ctrl_out);\n return _ctrl_out;\n }),\n share(),\n ),\n },\n };\n };\n\n // put any static data preprocessing logic applied to all incident data,\n // flown on each incoming edge stream.\n // data preprocessed and returned from this function will continue to flow in the dataflow stream domain\n // of the current element node.\n const _datalogic_pre = (data_in) => {\n const data_out = data_in;\n\n return data_out;\n };\n\n // put any static data postprocessing logic applied to all incident data,\n // to be flown on the outgoing edge stream.\n // data postprocessed and returned from this function will continue to flow in the dataflow stream domain\n // of the current element node.\n return {\n leaflogic: _leaflogic,\n datalogic: {\n pre: _datalogic_pre,\n //post: _datalogic_post\n },\n };\n};\n\nconst props = initElementInterface;\n\nexport { props, cachekeys };\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"handlebars\");","import { Subject, combineLatest, of } from \"rxjs\";\nimport { switchMap, filter, map, share, withLatestFrom } from \"rxjs/operators\";\n\nimport { ElemCacheKeyLUT, formatElementFlowdata } from \"./index.js\";\n\nimport axios from \"axios\";\nimport { driveDataflowByCtrlflow } from \"../../../leaf.js\";\nimport _ from \"lodash\";\nconst cachekeys = {\n //URI: \"_directus_uri\",\n //HEADER: \"_directus_header\",\n};\n\nconst initElementInterface = (_stream_cache) => {\n const reduced_lambda_obj = _stream_cache[ElemCacheKeyLUT.LAMBDA_OBJ];\n const urigen =\n \"uri\" in reduced_lambda_obj && \"_default\" in reduced_lambda_obj.uri\n ? reduced_lambda_obj.uri._default\n : undefined;\n const headergen =\n \"header\" in reduced_lambda_obj && \"_default\" in reduced_lambda_obj.header\n ? reduced_lambda_obj.header._default\n : undefined;\n\n const _elementlogic = async (_data_in) => {\n //_stream_cache[ElemCacheKeyLUT.DATAIN] = _metadata;\n const _header = _stream_cache[ElemCacheKeyLUT.http.HEADER]; // header$obj._stream\n\n // spark_dev_note: #http_dataflow_point // corresponding handles upstream\n let _flowdatain = _data_in; //.slice(2); // [...input$objArr]\n _flowdatain = _flowdatain.length === 1 ? _flowdatain[0] : _flowdatain; // take care of data plurality\n const recognizedLambdaConstants = [\"uri\", \"post\", \"put\", \"get\", \"header\", \"?graph\"];\n const curLambdaKeys = Object.keys(reduced_lambda_obj);\n const validLambdaKeyList = recognizedLambdaConstants.filter((_) => curLambdaKeys.includes(_));\n //const poprect = validLambdaKeyList.length > 0 ? validLambdaKeyList[0] : 'center';\n //lookupRuntimeLambdaLUT: async (refnode, nodelambda, contextuallambda)\n const _uri = \"localhost:51054\";\n\n const _do_uri_request = async ({ http_mode, uri } = {}) => {\n if ([\"post\", \"put\"].includes(http_mode)) {\n // put, post\n if (_header?.X_CSRF_Token)\n axios.defaults.headers.post[\"X-CSRF-Token\"] = _header.X_CSRF_Token; // https://github.com/axios/axios/issues/2024\n try {\n console.log(_flowdatain);\n const resprom = validLambdaKeyList.includes(\"put\")\n ? axios.put(uri, _flowdatain)\n : axios.post(uri, _flowdatain);\n const res = await resprom;\n console.log(res);\n //return _metadata.push(res.data);\n //node_output = formatFlowdata(processAxiosObj(res.data), \"elementio\");\n return res;\n } catch (err) {\n console.log(err);\n if (err.response) {\n // The request was made and the server responded with a status code\n // that falls out of the range of 2xx\n console.log(err.response.data);\n console.log(err.response.status);\n console.log(err.response.headers);\n //node_output = formatFlowdata(processAxiosObj(err.response.data), \"elementio\");\n } else if (err.request) {\n // The request was made but no response was received\n // `error.request` is an instance of XMLHttpRequest in the browser and an instance of\n // http.ClientRequest in node.js\n console.log(err.request);\n //node_output = formatFlowdata(processAxiosObj(err.request), \"elementio\");\n } else {\n // Something happened in setting up the request that triggered an Error\n console.log(\"Error\", err.message);\n //node_output = formatFlowdata(processAxiosObj(err.request), \"elementio\");\n }\n console.log(err.config);\n return err.response;\n }\n } else {\n // get\n try {\n console.log(\"executing http get\");\n const resprom = uri\n ? axios.get(uri)\n : of([{ data: \"LEAF element error: http get request submitted with undefined URI\" }]);\n const res = await resprom;\n console.log(res);\n //return _metadata.push(res.data);\n\n //node_output = formatFlowdata(processAxiosObj(res.data), \"elementio\");\n return res.data;\n } catch (err) {\n if (err.response) {\n // The request was made and the server responded with a status code\n // that falls out of the range of 2xx\n console.error(err.response.data);\n console.log(err.response.status);\n console.log(err.response.headers);\n //node_output = formatFlowdata(processAxiosObj(err.response.data), \"elementio\");\n } else if (err.request) {\n // The request was made but no response was received\n // `error.request` is an instance of XMLHttpRequest in the browser and an instance of\n // http.ClientRequest in node.js\n console.log(err);\n //node_output = formatFlowdata(processAxiosObj(err.message), \"elementio\");\n } else {\n // Something happened in setting up the request that triggered an Error\n console.log(\"Error\", err.message);\n //node_output = formatFlowdata(processAxiosObj(err.request), \"elementio\");\n }\n console.log(err.config);\n return err;\n }\n }\n };\n\n const http_mode = validLambdaKeyList.includes(\"post\")\n ? \"post\"\n : validLambdaKeyList.includes(\"put\")\n ? \"put\"\n : \"get\";\n const throttled_uri_request = _.throttle(async () => {\n return await _do_uri_request({ http_mode, uri: _uri });\n }, 1000); // 1000 ms gap\n const req_result = await throttled_uri_request();\n return req_result;\n };\n\n const node_context = {\n codebase: \"ghostos/api/parser/nodelogic/elements/library/http.js\",\n refnode: _stream_cache[ElemCacheKeyLUT.REFNODE],\n //leafnode: lambdactrl.gos.etaTree.leafgraph.graph.dataflow.getNodeAttributes(refnode).leafnode.data\n };\n\n const _TEST_URI = \"https://httpbin.org\";\n const _TEST_HEADER = \"\";\n const _leaflogic = (input$objArr, controlflow$obj) => {\n //const _stream_cache = {};\n //const _outflow_data$ = new BehaviorSubject(raceConditionError);\n const _outflow_data$ = new Subject(); //BehaviorSubject(raceConditionError);\n const uri$obj = urigen\n ? driveDataflowByCtrlflow(controlflow$obj, input$objArr, undefined, node_context, {\n leaflogic: urigen,\n datalogic: {\n post: (_data) => {\n _stream_cache[ElemCacheKeyLUT.http.URI] = _data;\n return _data;\n },\n },\n })\n : { _stream: of(_TEST_URI), _control: { _stream: controlflow$obj._stream } };\n //const header$obj = headergen ? headergen(input$objArr, controlflow$obj) :\n // {_stream: of(_TEST_HEADER)}; //executeLEAFLogicInSync(headergen, merged_input$, undefined, _ctrl_data$, {...controlflow$obj._config}) : {_stream: of([]), _control: {_stream: _ctrl_data$}};\n const header$obj = headergen\n ? driveDataflowByCtrlflow(controlflow$obj, input$objArr, undefined, node_context, {\n leaflogic: headergen,\n datalogic: {\n post: (_data) => {\n _stream_cache[ElemCacheKeyLUT.http.HEADER] = _data;\n return _data;\n },\n },\n })\n : { _stream: of(_TEST_HEADER), _control: { _stream: controlflow$obj._stream } };\n\n const merged_ctrl_in$ = combineLatest([uri$obj._control._stream, header$obj._control._stream]);\n const merged_data_in$ = combineLatest([uri$obj._stream, header$obj._stream]);\n\n const _ctrl_in$ = merged_ctrl_in$.pipe(\n //switchMap(_ctrl_in => {\n // _stream_cache[ElemCacheKeyLUT.CTRLIN] = _ctrl_in;\n // return merged_data_in$;\n //}),\n withLatestFrom(merged_data_in$),\n map((_aux_data_in) => {\n console.log(_aux_data_in);\n\n //return _stream_cache[ElemCacheKeyLUT.CTRLIN];\n return _aux_data_in[0];\n }),\n );\n\n let traffic_semaphore = false;\n const _ctrl_out$ = _ctrl_in$.pipe(\n //switchMap(_ctrl_in => {\n // //_stream_cache[ElemCacheKeyLUT.CTRLIN] = _ctrl_in;\n\n // // perform any input data (read) operations specific to the element here\n // // like accessing the most up-to-date messages from rx subjects/streams, etc\n // // spark_dev_note: #http_dataflow_point\n // const _data_in$ = combineLatest([...input$objArr.map(_input=>_input._stream)]);\n\n // // return data read from the rx stream domain as an array\n // //return combineLatest([...input$objArr.map(_obj=>_obj._stream)]);\n // return _data_in$;\n //}),\n withLatestFrom(...input$objArr.map((_in$obj) => _in$obj._stream)),\n switchMap((_combined_in) => {\n return _elementlogic(_combined_in.slice(1)); // returns a Promise that gets interpreted the same way a stream would\n }),\n map((_data_in) => {\n console.log(\"testing element _leaflogic: \", _data_in);\n // perform any output data (write) operations specific to the element here\n // like sending messages to rx subjects, etc\n //_elementlogic()\n\n traffic_semaphore = true; // allow data to flow\n if (_data_in?.length > 1 || !Array.isArray(_data_in)) _outflow_data$.next(_data_in);\n else if (_data_in?.length === 1) _outflow_data$.next(_data_in[0]);\n // return ctrl\n return _stream_cache[ElemCacheKeyLUT.CTRLIN]; // return the current ctrl\n }),\n share(),\n );\n\n //return {_stream: _outflow_data$, _control: {_stream: _ctrl_out$}}\n return {\n _stream: _outflow_data$.pipe(\n //filter(_data_out=>isBottle(_data_out)&&_data_out._bname !== error),\n filter((_data_out) => traffic_semaphore),\n map((_data_out) => {\n console.log(_data_out);\n return _data_out;\n }),\n share(),\n ),\n _control: {\n _stream: _ctrl_out$.pipe(\n map((_ctrl_out) => {\n console.log(_ctrl_out);\n return _ctrl_out;\n }),\n share(),\n ),\n },\n };\n };\n\n // put any static data preprocessing logic applied to all incident data,\n // flown on each incoming edge stream.\n // data preprocessed and returned from this function will continue to flow in the dataflow stream domain\n // of the current element node.\n const _datalogic_pre = (data_in) => {\n const data_out = data_in;\n\n return data_out;\n };\n\n // put any static data postprocessing logic applied to all incident data,\n // to be flown on the outgoing edge stream.\n // data postprocessed and returned from this function will continue to flow in the dataflow stream domain\n // of the current element node.\n const _datalogic_post = (data_in) => {\n const _urlret = data_in;\n\n const escapeHtml = (text) => {\n // https://stackoverflow.com/questions/1787322/what-is-the-htmlspecialchars-equivalent-in-javascript/4835406#4835406\n var map = {\n \"&\": \"&amp;\",\n \"<\": \"&lt;\",\n \">\": \"&gt;\",\n '\"': \"&quot;\",\n \"'\": \"&#039;\",\n };\n\n return text.replace(/[&<>\"']/g, function (m) {\n return map[m];\n });\n };\n const processAxiosObj = (obj) => {\n const objtype = typeof obj;\n if (objtype === \"object\") {\n return Array.isArray(obj)\n ? obj.map((_) => {\n return processAxiosObj(_);\n })\n : obj\n ? Object.fromEntries(\n Object.entries(obj).map(([_key, _val]) => {\n return [_key, processAxiosObj(_val)];\n }),\n )\n : obj;\n } else if (objtype === \"string\") {\n return escapeHtml(obj);\n } else // probably of type \"number\"\n {\n return obj;\n }\n };\n const node_output = formatElementFlowdata(processAxiosObj(_urlret), \"elementio\");\n\n return node_output;\n };\n\n return {\n leaflogic: _leaflogic,\n datalogic: {\n pre: _datalogic_pre,\n post: _datalogic_post,\n },\n };\n};\n\nconst props = initElementInterface;\n\nexport { props, cachekeys };\n","import { props as _mediaplayer, cachekeys as _mediaplayer_cachekeys } from \"./mediaplayer.js\";\nimport { props as _prompt, cachekeys as _prompt_cachekeys } from \"./prompt.js\";\nimport { props as _popup } from \"./popup.js\";\nimport { props as _editor } from \"./editor.js\";\nimport { props as _text } from \"./text.js\";\nimport { props as _image } from \"./image.js\";\nimport { props as _mediainput } from \"./mediainput.js\";\nimport { props as _midi } from \"./midi.js\";\nimport { props as _sound, cachekeys as _sound_cachekeys } from \"./sound.js\";\nimport { props as _gnav, cachekeys as _gnav_cachekeys } from \"./gnav.js\";\nimport { props as _http, cachekeys as _http_cachekeys } from \"./http.js\";\nimport { props as _href, cachekeys as _href_cachekeys } from \"./href.js\";\nimport { props as _html, cachekeys as _html_cachekeys } from \"./html.js\";\nimport { props as _form } from \"./form.js\";\nimport { props as _directus } from \"./directus.js\";\nimport { doBottle } from \"../../datautils/bottling.js\";\n\nconst ElemCacheKeyLUT = {\n LAMBDA_OBJ: \"_lambda_obj\",\n REFNODE: \"_refnode\",\n RTCONTEXT: \"_rtcontext\",\n CTRLIN: \"_ctrl_in\",\n DATAIN: \"_data_in\",\n DOMAIN: \"_domain\",\n APPID: \"_appid\",\n http: _http_cachekeys,\n href: _href_cachekeys,\n gnav: _gnav_cachekeys,\n prompt: _prompt_cachekeys,\n mediaplayer: _mediaplayer_cachekeys,\n sound: _sound_cachekeys,\n html: _html_cachekeys,\n};\n\n// datakey=\"defaultio\", \"screenio\" or \"elementio\", may expand further as the usage scenario expands\nconst formatElementFlowdata = (data, datakey = \"defaultio\", iselementio = true) => {\n if (iselementio) {\n return doBottle(datakey, data);\n }\n\n // otherwise, datakey === \"defaultio\"\n return data; // return without bottling\n};\n\nconst _std_elements_lut = {\n mediaplayer: _mediaplayer,\n http: _http,\n gnav: _gnav,\n popup: _popup,\n image: _image,\n editor: _editor,\n text: _text,\n prompt: _prompt,\n mediainput: _mediainput,\n midi: _midi,\n sound: _sound,\n html: _html,\n href: _href,\n form: _form,\n directus: _directus,\n};\n\nconst initStdElementProps = (_cache, elementname) => {\n if (Object.keys(_std_elements_lut).includes(elementname) && _std_elements_lut[elementname])\n return { ..._std_elements_lut[elementname](_cache) };\n else return undefined;\n};\n\nexport { initStdElementProps, formatElementFlowdata, ElemCacheKeyLUT };\n","import { Subject, BehaviorSubject, combineLatest, firstValueFrom, of, merge } from \"rxjs\";\nimport { switchMap, map, withLatestFrom, filter } from \"rxjs/operators\";\nimport Handlebars from \"handlebars\";\nimport { Buffer } from \"buffer\";\n\nimport { ElemCacheKeyLUT, formatElementFlowdata } from \"./index.js\";\n//import { exitDataBus } from \"../../../../utils/leafdataflow.js\";\nimport { isBottle } from \"../../../predicates.js\";\nimport { driveDataflowByCtrlflow } from \"../../../leaf.js\";\nimport { doBottle, doUnbottle } from \"../../datautils/bottling.js\";\n\nconst cachekeys = {\n TEMPLATE: \"_html_template\",\n};\n/*\n * spark_dev_note: 25/Apr/2023\n * all leaflogic and datalogic functions must be designed to conform to the following spec,\n * in order to make sure of the inter-operability of newly developed leaf elements\n * in breezyforest.\n *\n * leaflogic lives in the rx flow domain, hence is an ideal function to deal with\n * any data i/o existing in that domain. Data in the reactive stream domain is accessable via\n * invoking leaf lambda functions, normally bearing the function argument signature of ([input$Arr, ctrlflow$obj]),\n * or via calling any functions or rx inline pipe-map that would provide the logic for statically\n * manipulating data flown through any locally accessable rx streams of interest.\n * Please note the convention of variable names post-scripted with the dollar sign ($), denoting the handles for\n * respective data streams.\n *\n * datalogic lives in the static data domain. How data i/o happens in this domain is not directly compatible with the stream domain.\n * the two optional datalogic functions, pre and post, are used to \"statically\" work on data, in terms of taking data input,\n * performing data transformation/read/write operations, and returning data output, at two temporal data points, respectively\n * coinciding with the time before (pre) and after (post) the incidence of data flowing through the leaflogic stream domain.\n *\n */\nconst initElementInterface = (_stream_cache) => {\n const _outflow_data$ = new Subject();\n const elementioInput$ = new Subject();\n const template_parse_sync$ = new Subject();\n\n const reduced_lambda_obj = _stream_cache[ElemCacheKeyLUT.LAMBDA_OBJ];\n //const uidefsgen = (('uidefs' in reduced_lambda_obj) && ('_default' in reduced_lambda_obj.uidefs)) ? reduced_lambda_obj.uidefs._default : undefined;\n //const margingen = (('margin' in reduced_lambda_obj) && ('_default' in reduced_lambda_obj.margin)) ? reduced_lambda_obj.margin._default : undefined;\n //const fieldwidthgen = (('fieldwidth' in reduced_lambda_obj) && ('_default' in reduced_lambda_obj.fieldwidth)) ? reduced_lambda_obj.fieldwidth._default : undefined;\n //const templategen = (('template' in reduced_lambda_obj) && ('_default' in reduced_lambda_obj.template)) ? reduced_lambda_obj.template._default : undefined;\n const templategen = \"_default\" in reduced_lambda_obj ? reduced_lambda_obj._default : undefined;\n\n const node_context = {\n codebase: \"ghostos/api/parser/nodelogic/elements/library/html.js\",\n ..._stream_cache,\n };\n\n // handlebars template source stream\n const ctrl_accio_bottle = doBottle(\"accio\", \"ctrl_accio\");\n const data_accio_bottle = doBottle(\"accio\", \"data_accio\");\n const template$obj = templategen\n ? driveDataflowByCtrlflow(\n { _stream: of(ctrl_accio_bottle) },\n [{ _stream: of(data_accio_bottle) }],\n undefined,\n node_context,\n {\n leaflogic: templategen,\n datalogic: {\n post: (_data) => {\n //_stream_cache[ElemCacheKeyLUT.prompt.UIDEFS] = _data;\n return _data;\n },\n },\n },\n )\n : { _stream: of(\"\"), _control: { _stream: of(ctrl_accio_bottle) } };\n // compile handlebars template\n _stream_cache[ElemCacheKeyLUT.html.TEMPLATE] = undefined;\n firstValueFrom(template$obj._control._stream.pipe(withLatestFrom(template$obj._stream))).then(\n (_combined_in) => {\n const data_type = typeof _combined_in[1];\n if (data_type === \"string\")\n _stream_cache[ElemCacheKeyLUT.html.TEMPLATE] = {\n _default: Handlebars.compile(_combined_in[1]),\n };\n else if (data_type === \"object\") {\n const template_obj = {};\n Object.entries(_combined_in[1]).map(([_key, _val]) => {\n const compiled_str = [_val]\n .flat()\n .map((_curval) => {\n if (typeof _curval === \"string\") return _curval; //Handlebars.compile(_curval)\n return undefined;\n })\n .filter((_) => _ !== undefined)\n .join(\"\\n\");\n if (compiled_str !== \"\") template_obj[_key] = Handlebars.compile(compiled_str);\n });\n\n if (Object.keys(template_obj).length > 0)\n _stream_cache[ElemCacheKeyLUT.html.TEMPLATE] = template_obj;\n }\n Handlebars.registerHelper(\"markdown\", function (text) {\n //text = Handlebars.Utils.escapeExpression(text);\n //text = text.replace(/(\\r\\n|\\n|\\r)/gm, '<br>');\n text = text.replace(/&gt;/gm, \">\");\n text = text.replace(/&lt;/gm, \"<\");\n text = text.replace(/&amp;/gm, \"&\");\n text = text.replace(/(\\r\\n|\\n|\\r)/gm, \"\\n\");\n text = text.replace(/\\\\&quot;/gm, '\\\\\"');\n text = text.replace(/&quot;/gm, '\"');\n //return new Handlebars.SafeString(text);\n //return text;\n\n const text_b64 = Buffer.from(text).toString(\"base64\");\n\n //return `JSON.parse(Buffer.from('${context_str_b64}', 'base64').toString())`;\n return `atob('${text_b64}')`;\n });\n Handlebars.registerHelper(\"json\", function (context) {\n function jsonnum_replace(key, value) {\n const value_type = typeof value;\n\n //console.log(\"jsonnum_repl: \", key, value, value_type);\n\n if (value_type === \"string\") {\n // Extract a real number from a string\n const numberRegexG =\n /^\\{((?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|))\\}$/;\n\n const re_match = value.match(numberRegexG); // returns ['3.14']\n\n if (re_match !== null) {\n const change = Number(re_match[1]);\n return change;\n }\n return value;\n } else if (value_type === \"object\") {\n if (Array.isArray(value)) {\n return value.map((_val, _idx) => {\n return jsonnum_replace(_idx, _val);\n });\n } else {\n const newobj = Object.assign(\n {},\n ...Object.entries(value).map(([_key, _val]) => {\n //console.log(\"partial newobj:\", _key, _val);\n return { [_key]: jsonnum_replace(_key, _val) };\n }),\n );\n //console.log(\"newobj:\", JSON.stringify(newobj));\n return newobj;\n }\n }\n\n return value;\n }\n\n // as per https://stackoverflow.com/questions/38134200/base64-encode-a-javascript-object\n const context_str_b64 = Buffer.from(JSON.stringify(context, jsonnum_replace)).toString(\n \"base64\",\n );\n\n //return `JSON.parse(Buffer.from('${context_str_b64}', 'base64').toString())`;\n return `JSON.parse(atob('${context_str_b64}'))`;\n });\n Handlebars.registerHelper(\"tostring\", function (value) {\n // as per https://stackoverflow.com/questions/38134200/base64-encode-a-javascript-object\n //return `JSON.parse(Buffer.from('${context_str_b64}', 'base64').toString())`;\n return String(value);\n });\n template_parse_sync$.next();\n },\n );\n\n // put any static data preprocessing logic applied to all incident data,\n // flown on each incoming edge stream.\n // data preprocessed and returned from this function will continue to flow in the data domain\n // of the current element node.\n const _datalogic_pre = (data_in) => {\n return data_in;\n };\n\n const _do_datalogic = (data_in, _template_fn) => {\n //const data_out = data_in;\n if (_template_fn !== undefined) {\n const template_keys = Object.keys(_template_fn);\n\n const _data_out =\n template_keys.length === 1 && template_keys.includes(\"_default\")\n ? [\n _template_fn[\"_default\"](\n Object.assign(\n {},\n ...[data_in].flat().map((_datum_in) => doUnbottle(\"*\", _datum_in)),\n ),\n ),\n ] // merge all input dictionaries after unbottling them first, then apply into the template\n : [data_in]\n .flat()\n .sort((a, b) => {\n const labela = a._label?.tag?.toLowerCase();\n const labelb = b._label?.tag?.toLowerCase();\n if (labela > labelb) return 1;\n else if (labela < labelb) return -1;\n return 0;\n })\n .map((_datum_in) => {\n if (isBottle(_datum_in)) {\n const valid_data_in = doUnbottle(\"*\", _datum_in);\n const valid_data_bname = _datum_in._bname;\n const concat_data_out = [valid_data_in]\n .flat()\n .map((_valid_data_in) => {\n if (_valid_data_in && valid_data_bname in _template_fn)\n return _template_fn[valid_data_bname](_valid_data_in);\n else if (_valid_data_in && \"_default\" in _template_fn)\n return _template_fn[\"_default\"](_valid_data_in);\n else if (typeof _valid_data_in === \"string\") return _valid_data_in;\n return undefined;\n })\n .filter((_) => _ !== undefined)\n .join(\"\\n\");\n\n return concat_data_out;\n }\n return undefined;\n })\n .filter((_) => _ !== undefined);\n\n const processed_data = _data_out.join(\"\\n\").replace(/(\\r\\n|\\n|\\r)/gm, \"\");\n\n return processed_data; // of type \"string\"\n }\n\n return data_in; // unprocessed\n };\n\n const _leaflogic = (input$objArr, controlflow$obj) => {\n const _ctrl_out$ = controlflow$obj._stream.pipe(\n //withLatestFrom(template$obj._stream),\n withLatestFrom(...input$objArr.map((_input$obj) => _input$obj._stream)),\n switchMap((_combined_in) => {\n const relay_ctrl$ = new BehaviorSubject(_combined_in[0]);\n const relay_data$ = new BehaviorSubject(_combined_in[1]);\n return _stream_cache[ElemCacheKeyLUT.html.TEMPLATE]\n ? combineLatest(relay_ctrl$, merge(relay_data$, elementioInput$))\n : template_parse_sync$.pipe(\n withLatestFrom(relay_ctrl$, merge(relay_data$, elementioInput$)),\n map((_parse_synced_in) => _parse_synced_in[1]),\n );\n }),\n map((_combined_in) => {\n const _template_fn = _stream_cache[ElemCacheKeyLUT.html.TEMPLATE];\n const _data_in = _combined_in[1];\n console.log(\"testing element _leaflogic: \", _data_in);\n // perform any output data (write) operations specific to the element here\n // like sending messages to rx subjects, etc\n\n if (isBottle(_data_in) && _data_in._bname === \"elementio\") {\n // should _data_in reach here, they must originate from the iframe via the callback function defined below bottled in \"screenio\"\n _outflow_data$.next(_data_in); // send them onto the output stream of the html element node.\n return _combined_in[0]; // relay ctrl signal\n } else if (_template_fn !== undefined) {\n const processed_html = _do_datalogic(_data_in, _template_fn);\n\n const node_output = formatElementFlowdata(\n {\n element: {\n nodeuuid: _stream_cache[ElemCacheKeyLUT.REFNODE],\n type: \"html\",\n componentdata: {\n //etaTree: lambdactrl.gos.etaTree,\n innerhtml: processed_html, //Array.isArray(data_in) ? data_in : [data_in],\n callback: (iframe_msg) => {\n elementioInput$.next(doBottle(\"elementio\", iframe_msg));\n },\n //margin: marginval ? marginval[0] : 1,\n //fieldwidth: fieldwidthval ? fieldwidthval[0] : '25ch',\n ..._stream_cache[ElemCacheKeyLUT.RTCONTEXT],\n },\n },\n },\n \"screenio\",\n );\n _outflow_data$.next(node_output);\n\n return _combined_in[0]; // relay ctrl signal\n }\n\n return undefined;\n }),\n filter((_) => _ !== undefined),\n );\n\n return { _stream: _outflow_data$, _control: { _stream: _ctrl_out$ } };\n };\n\n // put any static data postprocessing logic applied to all incident data,\n // to be flown on the outgoing edge stream.\n // data postprocessed and returned from this function will continue to flow in the data domain\n // of the current element node.\n const _datalogic_post = (data_in) => {\n //const recognizedLambdaConstants = ['lambda', 'onsave', 'gspot']; // lambda as in \"lambda plane\"\n //const curLambdaKeys = Object.keys(reduced_lambda_obj);\n //const validLambdaKeyList = recognizedLambdaConstants.filter(_ => curLambdaKeys.includes(_));\n\n //const textsource = 'lambda' in reduced_lambda_obj ? 'lambda' : 'dataflow'; // dataflow as in \"dataflow plane\"\n\n //const marginval = reduced_lambda_obj.margin ? Object.keys(reduced_lambda_obj.margin) : undefined;\n //const fieldwidthval = reduced_lambda_obj.fieldwidth ? Object.keys(reduced_lambda_obj.fieldwidth) : undefined;\n\n return data_in;\n };\n\n return {\n elementio$: elementioInput$,\n leaflogic: _leaflogic,\n datalogic: {\n pre: _datalogic_pre,\n post: _datalogic_post,\n },\n };\n};\n\nconst props = initElementInterface;\n\nexport { props, cachekeys };\n","import { Subject } from \"rxjs\";\nimport { map, withLatestFrom } from \"rxjs/operators\";\n\nimport { ElemCacheKeyLUT, formatElementFlowdata } from \"./index.js\";\nimport { isBottle } from \"../../../predicates.js\";\nimport { doUnbottle } from \"../../datautils/bottling.js\";\n/*\n * spark_dev_note: 25/Apr/2023\n * all leaflogic and datalogic functions must be designed to conform to the following spec,\n * in order to make sure of the inter-operability of newly developed leaf elements\n * in breezyforest.\n *\n * leaflogic lives in the rx flow domain, hence is an ideal function to deal with\n * any data i/o existing in that domain. Data in the reactive stream domain is accessable via\n * invoking leaf lambda functions, normally bearing the function argument signature of ([input$Arr, ctrlflow$obj]),\n * or via calling any functions or rx inline pipe-map that would provide the logic for statically\n * manipulating data flown through any locally accessable rx streams of interest.\n * Please note the convention of variable names post-scripted with the dollar sign ($), denoting the handles for\n * respective data streams.\n *\n * datalogic lives in the static data domain. How data i/o happens in this domain is not directly compatible with the stream domain.\n * the two optional datalogic functions, pre and post, are used to \"statically\" work on data, in terms of taking data input,\n * performing data transformation/read/write operations, and returning data output, at two temporal data points, respectively\n * coinciding with the time before (pre) and after (post) the incidence of data flowing through the leaflogic stream domain.\n *\n */\nconst initElementInterface = (_stream_cache) => {\n const _leaflogic = (input$objArr, controlflow$obj) => {\n //const _stream_cache = {};\n //const _outflow_data$ = new BehaviorSubject(raceConditionError);\n const _outflow_data$ = new Subject();\n const _ctrl_out$ = controlflow$obj._stream.pipe(\n withLatestFrom(...input$objArr.map((_obj) => _obj._stream)),\n //switchMap(_combined_in => {\n\n // // perform any input data (read) operations specific to the element here\n // // like accessing the most up-to-date messages from rx subjects/streams, etc\n\n // // return data read from the rx stream domain as an array\n // return combineLatest([...input$objArr.map(_obj=>_obj._stream)]);\n //}),\n map((_combined_in) => {\n _stream_cache[ElemCacheKeyLUT.CTRLIN] = _combined_in[0];\n const _data_in = _combined_in[1];\n console.log(\"testing element _leaflogic: \", _data_in);\n // perform any output data (write) operations specific to the element here\n // like sending messages to rx subjects, etc\n\n // spark_dev_note: 30/Jun/2023\n // _data_in may be [undefined]. currently the error handling of this data flow is just to\n // ignore it by filtering it out.\n // a proper error handling including informing the user of the error is needed.\n // implement it.\n // _data_in[0] to remove outter [] added by combineLatest\n //const filtered_data_in = _data_in.filter(_=>_);\n //if (filtered_data_in.length > 1)\n // _outflow_data$.next(filtered_data_in);\n //else if (filtered_data_in.length === 1)\n // _outflow_data$.next(filtered_data_in[0]);\n // return ctrl\n _outflow_data$.next(_data_in);\n return _combined_in[0];\n }),\n );\n\n return { _stream: _outflow_data$, _control: { _stream: _ctrl_out$ } };\n };\n\n // put any static data preprocessing logic applied to all incident data,\n // flown on each incoming edge stream.\n // data preprocessed and returned from this function will continue to flow in the data domain\n // of the current element node.\n const _datalogic_pre = (data_in) => {\n const data_out = [data_in]\n .flat()\n .map((_datum_in) => {\n if (isBottle(_datum_in) && _datum_in._bname === \"image\") {\n return doUnbottle(\"image\", _datum_in);\n }\n return undefined;\n })\n .filter((_in) => _in);\n\n if (data_out.length === 1) return data_out[0];\n else if (data_out.length > 1) return data_out;\n };\n\n // put any static data postprocessing logic applied to all incident data,\n // to be flown on the outgoing edge stream.\n // data postprocessed and returned from this function will continue to flow in the data domain\n // of the current element node.\n const _datalogic_post = (data_in) => {\n //const recognizedLambdaConstants = ['uidefs', 'margin', 'fieldwidth'];\n const node_output = formatElementFlowdata(\n {\n element: {\n nodeuuid: _stream_cache[ElemCacheKeyLUT.REFNODE],\n type: \"image\",\n componentdata: {\n //etaTree: lambdactrl.gos.etaTree,\n imagelist: Array.isArray(data_in) ? data_in : [data_in],\n //margin: marginval ? marginval[0] : 1,\n //fieldwidth: fieldwidthval ? fieldwidthval[0] : '25ch',\n ..._stream_cache[ElemCacheKeyLUT.RTCONTEXT],\n },\n },\n },\n \"screenio\",\n );\n\n return node_output;\n };\n\n return {\n leaflogic: _leaflogic,\n datalogic: {\n pre: _datalogic_pre,\n post: _datalogic_post,\n },\n };\n};\n\nconst props = initElementInterface;\n\nexport { props };\n","import { Subject } from \"rxjs\";\nimport { map, withLatestFrom } from \"rxjs/operators\";\n\nimport { ElemCacheKeyLUT, formatElementFlowdata } from \"./index.js\";\n//import { exitDataBus } from \"../../../../utils/leafdataflow\";\nimport { isBottle } from \"../../../predicates.js\";\n\n/*\n * spark_dev_note: 25/Apr/2023\n * all leaflogic and datalogic functions must be designed to conform to the following spec,\n * in order to make sure of the inter-operability of newly developed leaf elements\n * in breezyforest.\n *\n * leaflogic lives in the rx flow domain, hence is an ideal function to deal with\n * any data i/o existing in that domain. Data in the reactive stream domain is accessable via\n * invoking leaf lambda functions, normally bearing the function argument signature of ([input$Arr, ctrlflow$obj]),\n * or via calling any functions or rx inline pipe-map that would provide the logic for statically\n * manipulating data flown through any locally accessable rx streams of interest.\n * Please note the convention of variable names post-scripted with the dollar sign ($), denoting the handles for\n * respective data streams.\n *\n * datalogic lives in the static data domain. How data i/o happens in this domain is not directly compatible with the stream domain.\n * the two optional datalogic functions, pre and post, are used to \"statically\" work on data, in terms of taking data input,\n * performing data transformation/read/write operations, and returning data output, at two temporal data points, respectively\n * coinciding with the time before (pre) and after (post) the incidence of data flowing through the leaflogic stream domain.\n *\n */\nconst initElementInterface = (_stream_cache) => {\n const reduced_lambda_obj = _stream_cache[ElemCacheKeyLUT.LAMBDA_OBJ];\n //const uidefsgen = (('uidefs' in reduced_lambda_obj) && ('_default' in reduced_lambda_obj.uidefs)) ? reduced_lambda_obj.uidefs._default : undefined;\n //const margingen = (('margin' in reduced_lambda_obj) && ('_default' in reduced_lambda_obj.margin)) ? reduced_lambda_obj.margin._default : undefined;\n //const fieldwidthgen = (('fieldwidth' in reduced_lambda_obj) && ('_default' in reduced_lambda_obj.fieldwidth)) ? reduced_lambda_obj.fieldwidth._default : undefined;\n\n const _leaflogic = (input$objArr, controlflow$obj) => {\n //const _stream_cache = {};\n const _outflow_data$ = new Subject(); //new BehaviorSubject(raceConditionError);\n //const uidefs$obj = uidefsgen ? uidefsgen(input$objArr, controlflow$obj) :\n // {_stream: of(_TEST_UIDEFS)}; // executeLEAFLogicInSync(urigen, merged_input$, undefined, _ctrl_data$, {...controlflow$obj._config}) : {_stream: of([]), _control: {_stream: _ctrl_data$}};\n //const margin$obj = margingen ? margingen(input$objArr, controlflow$obj) :\n // {_stream: of(_TEST_MARGIN)}; //executeLEAFLogicInSync(headergen, merged_input$, undefined, _ctrl_data$, {...controlflow$obj._config}) : {_stream: of([]), _control: {_stream: _ctrl_data$}};\n //const fieldwidth$obj = fieldwidthgen ? fieldwidthgen(input$objArr, controlflow$obj) :\n // {_stream: of(_TEST_FIELDWIDTH)}; //executeLEAFLogicInSync(headergen, merged_input$, undefined, _ctrl_data$, {...controlflow$obj._config}) : {_stream: of([]), _control: {_stream: _ctrl_data$}};\n\n const _ctrl_out$ = controlflow$obj._stream.pipe(\n //switchMap(_ctrl_in => {\n // _stream_cache[ElemCacheKeyLUT.CTRLIN] = _ctrl_in;\n\n // _stream_cache[ElemCacheKeyLUT.RTCONTEXT]._config = {...controlflow$obj._config};\n\n // //const uidefs$obj = uidefsgen ? driveDataflowByCtrlflow(\n // // {_stream: of(_ctrl_in)}, [{_stream: doBottle(\"empty_bottle\", \"empty_data\", {refnode: _stream_cache[ElemCacheKeyLUT.REFNODE]})}], undefined, node_context,\n // // {\n // // leaflogic: uidefsgen,\n // // datalogic: {\n // // post: (_data)=>{\n // // _stream_cache[\"uidefs\"] = _data;\n // // return _data;\n // // }\n // // }\n // // }\n // //) : {_stream: of(\"\")};\n\n // //const margin$obj = margingen ? driveDataflowByCtrlflow(\n // // {_stream: of(_ctrl_in)}, [{_stream: doBottle(\"empty_bottle\", \"empty_data\", {refnode: _stream_cache[ElemCacheKeyLUT.REFNODE]})}], undefined, node_context,\n // // {\n // // leaflogic: margingen,\n // // datalogic: {\n // // post: (_data)=>{\n // // _stream_cache[\"margin\"] = _data;\n // // return _data;\n // // }\n // // }\n // // }\n // //) : {_stream: of(\"\")};\n\n // //const fieldwidth$obj = fieldwidthgen ? driveDataflowByCtrlflow(\n // // {_stream: of(_ctrl_in)}, [{_stream: doBottle(\"empty_bottle\", \"empty_data\", {refnode: _stream_cache[ElemCacheKeyLUT.REFNODE]})}], undefined, node_context,\n // // {\n // // leaflogic: fieldwidthgen,\n // // datalogic: {\n // // post: (_data)=>{\n // // _stream_cache[\"fieldwidth\"] = _data;\n // // return _data;\n // // }\n // // }\n // // }\n // //) : {_stream: of(\"\")};\n\n // //return combineLatest([uidefs$obj._stream, margin$obj._stream, fieldwidth$obj._stream]);\n ////({}),\n ////concatMap(_aux_in => {})\n // // perform any input data (read) operations specific to the element here\n // // like accessing the most up-to-date messages from rx subjects/streams, etc\n // // spark_dev_note: #http_dataflow_point\n // const _data_in$ = combineLatest([...input$objArr.map(_input=>_input._stream)]);\n\n // // return data read from the rx stream domain as an array\n // return _data_in$;\n //}),\n withLatestFrom(...input$objArr.map((_input$obj) => _input$obj._stream)),\n //withLatestFrom()\n //concatMap(_ctrl_in => {\n // // perform any input data (read) operations specific to the element here\n // // like accessing the most up-to-date messages from rx subjects/streams, etc\n // // spark_dev_note: #http_dataflow_point\n // const _data_in$ = combineLatest([...input$objArr.map(_input=>_input._stream)]);\n\n // // return data read from the rx stream domain as an array\n // return _data_in$;\n //}),\n map((_combined_in) => {\n const _data_in = _combined_in[1];\n console.log(\"testing element _leaflogic: \", _data_in);\n // perform any output data (write) operations specific to the element here\n // like sending messages to rx subjects, etc\n\n _outflow_data$.next(_data_in);\n //if (_data_in.length > 1)\n // _outflow_data$.next(_data_in);\n //else if (_data_in.length === 1)\n // _outflow_data$.next(_data_in[0]);\n // return ctrl\n //return _stream_cache[ElemCacheKeyLUT.CTRLIN];\n return _combined_in[0];\n }),\n );\n\n return { _stream: _outflow_data$, _control: { _stream: _ctrl_out$ } };\n };\n\n // put any static data preprocessing logic applied to all incident data,\n // flown on each incoming edge stream.\n // data preprocessed and returned from this function will continue to flow in the data domain\n // of the current element node.\n const _datalogic_pre = (data_in) => {\n const data_out = data_in;\n\n return data_out;\n };\n\n // put any static data postprocessing logic applied to all incident data,\n // to be flown on the outgoing edge stream.\n // data postprocessed and returned from this function will continue to flow in the data domain\n // of the current element node.\n const _datalogic_post = (data_in) => {\n const textsource = \"lambda\" in reduced_lambda_obj ? \"lambda\" : \"dataflow\"; // dataflow as in \"dataflow plane\"\n\n //const marginval = reduced_lambda_obj.margin ? Object.keys(reduced_lambda_obj.margin) : undefined;\n //const fieldwidthval = reduced_lambda_obj.fieldwidth ? Object.keys(reduced_lambda_obj.fieldwidth) : undefined;\n\n // spark_dev_note: #http_dataflow_point // corresponding handles upstream\n //const _uidefs = data_in[0]; // uidefs$obj._stream\n //const _margin_userval = data_in[1]; // margin$obj._stream\n //const _fieldwidth_userval = data_in[2]; // fieldwidth$obj._stream\n let _flowdatain = undefined; // [...input$objArr]\n // spark_dev_note: 19/Jun/2023\n // #databus\n //if(isBottle(data_in) && data_in._bname === \"_databus\")\n // spark_dev_note: 30/Jun/2023\n // #databus\n // lambda text had been sent over databus in previous implementations.\n // now that databus is obsolete, there is got to be an alternative way to differentiate\n // lambda text sourcing. for now the following rudimentary measure is taken to do this.\n // this needs to be refactored to use more robust measure, maybe using a well defined bottle name\n // down the road.\n if (isBottle(data_in) && data_in._content?._provenance?.refnodedata) {\n _stream_cache[ElemCacheKeyLUT.RTCONTEXT].lambdarefnodedata =\n data_in._content?._provenance?.refnodedata;\n _stream_cache[ElemCacheKeyLUT.RTCONTEXT].lambdasourceuuid = data_in._content?._refnode;\n _flowdatain = data_in;\n } else {\n _flowdatain = data_in; // [...input$objArr]\n //_flowdatain = _flowdatain.length === 1 ? _flowdatain[0] : _flowdatain; // take care of data plurality\n }\n\n const node_output = formatElementFlowdata(\n {\n element: {\n nodeuuid: _stream_cache[ElemCacheKeyLUT.REFNODE],\n type: \"text\",\n componentdata: {\n // this serves as storage config for the text editor component\n refnode: _stream_cache[ElemCacheKeyLUT.REFNODE],\n textsource: textsource,\n //lambdasourceuuid: controlflow$obj._control?._config?.nodeuuid, // config passed from the origin leafnode such as leaflisp.\n // spark_dev_note: #ctrlflow_config, controlflow$obj._config passed from leaf.js, via executeLEAFLogic in sysmenu.js\n lambdarefnodedata: _stream_cache[ElemCacheKeyLUT.RTCONTEXT].lambdarefnodedata, //controlflow$obj._config?.refnodedata, // config passed from the origin leafnode such as leaflisp, data passing setup via registerHammer in sysmenu.js & nodemenu.js .\n lambdasourceuuid: _stream_cache[ElemCacheKeyLUT.RTCONTEXT].lambdasourceuuid, //controlflow$obj._config?.nodeuuid, // config passed from the origin leafnode such as leaflisp.\n dataflowinput: _flowdatain, //Array.isArray(_metadata[0]) ? _metadata[0] : [_metadata[0]],\n domain: _stream_cache[ElemCacheKeyLUT.DOMAIN], //_metadata[1], //domain,\n appid: _stream_cache[ElemCacheKeyLUT.APPID], //_metadata[2], //appid,\n ..._stream_cache[ElemCacheKeyLUT.RTCONTEXT],\n },\n },\n },\n \"screenio\",\n );\n\n return node_output;\n };\n\n return {\n leaflogic: _leaflogic,\n datalogic: {\n pre: _datalogic_pre,\n post: _datalogic_post,\n },\n };\n};\n\nconst props = initElementInterface;\n\nexport { props };\n","import { Subject, BehaviorSubject, combineLatest, firstValueFrom, of, merge } from \"rxjs\";\nimport { switchMap, map, withLatestFrom, filter } from \"rxjs/operators\";\nimport Handlebars from \"handlebars\";\n\nimport { ElemCacheKeyLUT } from \"./index.js\";\n//import { exitDataBus } from \"../../../../utils/leafdataflow.js\";\nimport { isBottle } from \"../../../predicates.js\";\nimport { driveDataflowByCtrlflow } from \"../../../leaf.js\";\nimport { doBottle } from \"../../datautils/bottling.js\";\n\n//import Form from '@rjsf/core';\n//import { createElement } from \"react\";\n//import { createRoot } from 'react-dom/client';\n\nconst cachekeys = {\n TEMPLATE: \"_html_template\",\n};\n/*\n * spark_dev_note: 25/Apr/2023\n * all leaflogic and datalogic functions must be designed to conform to the following spec,\n * in order to make sure of the inter-operability of newly developed leaf elements\n * in breezyforest.\n *\n * leaflogic lives in the rx flow domain, hence is an ideal function to deal with\n * any data i/o existing in that domain. Data in the reactive stream domain is accessable via\n * invoking leaf lambda functions, normally bearing the function argument signature of ([input$Arr, ctrlflow$obj]),\n * or via calling any functions or rx inline pipe-map that would provide the logic for statically\n * manipulating data flown through any locally accessable rx streams of interest.\n * Please note the convention of variable names post-scripted with the dollar sign ($), denoting the handles for\n * respective data streams.\n *\n * datalogic lives in the static data domain. How data i/o happens in this domain is not directly compatible with the stream domain.\n * the two optional datalogic functions, pre and post, are used to \"statically\" work on data, in terms of taking data input,\n * performing data transformation/read/write operations, and returning data output, at two temporal data points, respectively\n * coinciding with the time before (pre) and after (post) the incidence of data flowing through the leaflogic stream domain.\n *\n */\nconst initElementInterface = (_stream_cache) => {\n const _outflow_data$ = new Subject();\n const elementioInput$ = new Subject();\n const template_parse_sync$ = new Subject();\n\n const reduced_lambda_obj = _stream_cache[ElemCacheKeyLUT.LAMBDA_OBJ];\n //const uidefsgen = (('uidefs' in reduced_lambda_obj) && ('_default' in reduced_lambda_obj.uidefs)) ? reduced_lambda_obj.uidefs._default : undefined;\n //const margingen = (('margin' in reduced_lambda_obj) && ('_default' in reduced_lambda_obj.margin)) ? reduced_lambda_obj.margin._default : undefined;\n //const fieldwidthgen = (('fieldwidth' in reduced_lambda_obj) && ('_default' in reduced_lambda_obj.fieldwidth)) ? reduced_lambda_obj.fieldwidth._default : undefined;\n //const templategen = (('template' in reduced_lambda_obj) && ('_default' in reduced_lambda_obj.template)) ? reduced_lambda_obj.template._default : undefined;\n const templategen = \"_default\" in reduced_lambda_obj ? reduced_lambda_obj._default : undefined;\n const issingle = \"single\" in reduced_lambda_obj ? true : false;\n\n const node_context = {\n codebase: \"ghostos/api/parser/nodelogic/elements/library/form.js\",\n ..._stream_cache,\n };\n\n // handlebars template source stream\n const ctrl_accio_bottle = doBottle(\"accio\", \"ctrl_accio\");\n const data_accio_bottle = doBottle(\"accio\", \"data_accio\");\n const template$obj = templategen\n ? driveDataflowByCtrlflow(\n { _stream: of(ctrl_accio_bottle) },\n [{ _stream: of(data_accio_bottle) }],\n undefined,\n node_context,\n {\n leaflogic: templategen,\n datalogic: {\n post: (_data) => {\n //_stream_cache[ElemCacheKeyLUT.prompt.UIDEFS] = _data;\n return _data;\n },\n },\n },\n )\n : { _stream: of(\"\"), _control: { _stream: of(ctrl_accio_bottle) } };\n // compile handlebars template\n _stream_cache[ElemCacheKeyLUT.html.TEMPLATE] = undefined;\n firstValueFrom(template$obj._control._stream.pipe(withLatestFrom(template$obj._stream))).then(\n (_combined_in) => {\n const data_type = typeof _combined_in[1];\n if (data_type === \"string\")\n _stream_cache[ElemCacheKeyLUT.html.TEMPLATE] = {\n _default: Handlebars.compile(_combined_in[1]),\n };\n else if (data_type === \"object\") {\n const template_obj = {};\n Object.entries(_combined_in[1]).map(([_key, _val]) => {\n const compiled_str = [_val]\n .flat()\n .map((_curval) => {\n if (typeof _curval === \"string\") return _curval; //Handlebars.compile(_curval)\n return undefined;\n })\n .filter((_) => _ !== undefined)\n .join(\"\\n\");\n if (compiled_str !== \"\") template_obj[_key] = Handlebars.compile(compiled_str);\n });\n\n if (Object.keys(template_obj).length > 0)\n _stream_cache[ElemCacheKeyLUT.html.TEMPLATE] = template_obj;\n }\n Handlebars.registerHelper(\"json\", function (context) {\n function jsonnum_replace(key, value) {\n const value_type = typeof value;\n\n //console.log(\"jsonnum_repl: \", key, value, value_type);\n\n if (value_type === \"string\") {\n // Extract a real number from a string\n const numberRegexG =\n /^\\{((?:-(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))|(?:0|(?:[1-9](?:\\d{0,2}(?:,\\d{3})+|\\d*))))(?:.\\d+|))\\}$/;\n\n const re_match = value.match(numberRegexG); // returns ['3.14']\n\n if (re_match !== null) {\n const change = Number(re_match[1]);\n return change;\n }\n return value;\n } else if (value_type === \"object\") {\n if (Array.isArray(value)) {\n return value.map((_val, _idx) => {\n return jsonnum_replace(_idx, _val);\n });\n } else {\n const newobj = Object.assign(\n {},\n ...Object.entries(value).map(([_key, _val]) => {\n //console.log(\"partial newobj:\", _key, _val);\n return { [_key]: jsonnum_replace(_key, _val) };\n }),\n );\n //console.log(\"newobj:\", JSON.stringify(newobj));\n return newobj;\n }\n }\n\n return value;\n }\n\n return JSON.stringify(context, jsonnum_replace);\n });\n template_parse_sync$.next();\n },\n );\n\n // put any static data preprocessing logic applied to all incident data,\n // flown on each incoming edge stream.\n // data preprocessed and returned from this function will continue to flow in the data domain\n // of the current element node.\n const _datalogic_pre = (data_in) => {\n return data_in;\n };\n\n const _do_datalogic = (data_in, _template_fn) => {\n // <script src='https://cdnjs.cloudflare.com/ajax/libs/react-jsonschema-form/1.8.1/react-jsonschema-form.min.js'></script>\n // <script crossorigin src='https://unpkg.com/react@18/umd/react.production.min.js'></script>\n // <script crossorigin src='https://unpkg.com/react@18/umd/react.development.js'></script>\n // <script crossorigin src='https://unpkg.com/react@17.0.2/umd/react.development.js'></script>\n // <script crossorigin src='https://unpkg.com/react-dom@17.0.2/umd/react-dom.development.js'></script>\n // <link href='https://leas3.ams3.cdn.digitaloceanspaces.com/static/vendor/bootstrap/css/bootstrap.min.css' rel='stylesheet'>\n //const { norender } = getSubmitButtonOptions(uiSchema);\n //if (norender) {\n // return null;\n //}\n const form_template_common = `\n <!-- Bootstrap core CSS -->\n <link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css' rel='stylesheet' integrity='sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH' crossorigin='anonymous'>\n <script crossorigin src='https://unpkg.com/react@17.0.2/umd/react.development.js'></script>\n <script crossorigin src='https://unpkg.com/react-dom@17.0.2/umd/react-dom.development.js'></script>\n <script src='https://unpkg.com/@babel/standalone@7.23.10/babel.min.js'></script>\n <script src='https://unpkg.com/@rjsf/core@4.2.3/dist/react-jsonschema-form.js'></script>\n `;\n const form_template_style = `\n <style>\n .unicornbutton {\n background-image: url('https://leas3.ams3.cdn.digitaloceanspaces.com/static/lax/assets/button-bg.jpg');\n width: 250px;\n height: 70px;\n background-size: 160px;\n color: white;\n font-weight: 800;\n text-align: center;\n line-height: 70px;\n font-size: 30px;\n text-decoration: none;\n border-radius: 20px;\n z-index: 100;\n pointer-events: all;\n cursor: pointer;\n }\n </style>\n `;\n const form_template_script = `\n <script type='text/babel'>\n const Form = JSONSchemaForm.default;\n const schema = {\n title: 'react-jsonschema-form demo',\n type: 'object',\n required: ['name', 'email'],\n properties: {\n name: {type: 'string', minLength: 3},\n email: {type: 'string'},\n dob: {type: 'string'},\n age: {type: 'number'},\n thing: {type: 'string'},\n other: {type: 'string'},\n }\n };\n const uiSchema = {\n email: {\n 'ui:options': {\n inputType: 'email'\n }\n },\n dob: {\n 'ui:widget': 'alt-date',\n 'ui:options': {\n yearsRange: [1980, 2030],\n hideNowButton: true,\n hideClearButton: true,\n },\n },\n };\n \n function Tpl(props) {\n const {id, label, required, children} = props;\n return (\n <div className='myfield'>\n <label htmlFor={id}>{label}{required ? '*' : null}</label>\n {children}\n </div>\n );\n };\n\n function dosubmit({ formData }, e) {\n doelementio({_bname: '${_stream_cache[ElemCacheKeyLUT.REFNODE].slice(0, 8)}', _content: formData, _label: {refnode: '${_stream_cache[ElemCacheKeyLUT.REFNODE]}'}});\n };\n\n function SubmitButton(props) {\n const { uiSchema } = props;\n return (\n <button type='submit'>\n Yadda\n </button>\n );\n }\n \n ReactDOM.render(\n (<Form onSubmit={dosubmit} className='row' schema={schema} uiSchema={uiSchema} FieldTemplate={Tpl} liveValidate >\n <div style={{marginBottom: '70px'}}>\n <button className='unicornbutton' type='submit'>\n Yadda\n </button>\n </div>\n </Form>\n ),\n document.getElementById('${_stream_cache[ElemCacheKeyLUT.REFNODE]}')\n );\n </script>\n `;\n const form_template_body = `\n <div id='${_stream_cache[ElemCacheKeyLUT.REFNODE]}'></div>\n `;\n\n const minifyString = (_str) => _str.replace(/(\\r\\n|\\n|\\r)/gm, \"\").replace(/(\\s+)/gm, \" \");\n const bname = _stream_cache[ElemCacheKeyLUT.REFNODE].slice(0, 8); // name the bottle using first 8 chars of the refnode uuid\n const stylekey = issingle ? \"form-style\" : \"form-style-\" + bname;\n const scriptkey = issingle ? \"form-script\" : \"form-script-\" + bname;\n const bodykey = issingle ? \"form-body\" : \"form-body-\" + bname;\n return doBottle(\n bname,\n {\n \"form-common\": minifyString(form_template_common),\n [stylekey]: minifyString(form_template_style),\n [scriptkey]: minifyString(form_template_script),\n [bodykey]: minifyString(form_template_body),\n },\n { uuid: _stream_cache[ElemCacheKeyLUT.REFNODE] },\n );\n\n /*\n //const data_out = data_in;\n if (_template_fn !== undefined) {\n const _data_out = [data_in].flat().sort((a,b)=>{\n const labela=a._label?.tag?.toLowerCase(); \n const labelb=b._label?.tag?.toLowerCase(); \n if (labela > labelb)\n return 1;\n else if (labela < labelb)\n return -1;\n return 0;\n }).map(_datum_in => {\n if (isBottle(_datum_in)) {\n const valid_data_in = doUnbottle(\"*\", _datum_in);\n const valid_data_bname = _datum_in._bname;\n const concat_data_out = [valid_data_in].flat().map(_valid_data_in => {\n if (_valid_data_in && valid_data_bname in _template_fn) \n return _template_fn[valid_data_bname](_valid_data_in);\n else if (_valid_data_in && \"_default\" in _template_fn)\n return _template_fn[\"_default\"](_valid_data_in);\n else if (typeof _valid_data_in === \"string\")\n return _valid_data_in;\n return undefined;\n }).filter(_=>_!==undefined).join(\"\\n\");\n\n return concat_data_out;\n }\n return undefined; \n }).filter(_=>_!==undefined);\n\n const processed_data = _data_out.join(\"\\n\").replace(/(\\r\\n|\\n|\\r)/gm, \"\");\n\n return processed_data; // of type \"string\"\n }\n\n return data_in; // unprocessed\n */\n };\n\n const _leaflogic = (input$objArr, controlflow$obj) => {\n const _ctrl_out$ = controlflow$obj._stream.pipe(\n //withLatestFrom(template$obj._stream),\n withLatestFrom(...input$objArr.map((_input$obj) => _input$obj._stream)),\n switchMap((_combined_in) => {\n const relay_ctrl$ = new BehaviorSubject(_combined_in[0]);\n const relay_data$ = new BehaviorSubject(_combined_in[1]);\n return _stream_cache[ElemCacheKeyLUT.html.TEMPLATE]\n ? combineLatest(relay_ctrl$, merge(relay_data$, elementioInput$))\n : template_parse_sync$.pipe(\n withLatestFrom(relay_ctrl$, merge(relay_data$, elementioInput$)),\n map((_parse_synced_in) => _parse_synced_in[1]),\n );\n }),\n map((_combined_in) => {\n const _template_fn = _stream_cache[ElemCacheKeyLUT.html.TEMPLATE];\n const _data_in = _combined_in[1];\n console.log(\"testing element _leaflogic: \", _data_in);\n // perform any output data (write) operations specific to the element here\n // like sending messages to rx subjects, etc\n\n if (isBottle(_data_in) && _data_in._bname === \"elementio\") {\n // should _data_in reach here, they must originate from the iframe via the callback function defined below bottled in \"screenio\"\n _outflow_data$.next(_data_in); // send them onto the output stream of the html element node.\n return _combined_in[0]; // relay ctrl signal\n } else if (_template_fn !== undefined) {\n const node_output = _do_datalogic(_data_in, _template_fn);\n\n //const node_output = formatElementFlowdata({\n // element: {\n // nodeuuid: _stream_cache[ElemCacheKeyLUT.REFNODE],\n // type: 'html',\n // componentdata: {\n // //etaTree: lambdactrl.gos.etaTree,\n // innerhtml: processed_html, //Array.isArray(data_in) ? data_in : [data_in],\n // callback: (iframe_msg) => {\n // elementioInput$.next(doBottle(\"elementio\", iframe_msg));\n // },\n // //margin: marginval ? marginval[0] : 1,\n // //fieldwidth: fieldwidthval ? fieldwidthval[0] : '25ch',\n // ..._stream_cache[ElemCacheKeyLUT.RTCONTEXT],\n // },\n // }\n //}, \"screenio\");\n _outflow_data$.next(node_output);\n\n return _combined_in[0]; // relay ctrl signal\n }\n\n return undefined;\n }),\n filter((_) => _ !== undefined),\n );\n\n return { _stream: _outflow_data$, _control: { _stream: _ctrl_out$ } };\n };\n\n // put any static data postprocessing logic applied to all incident data,\n // to be flown on the outgoing edge stream.\n // data postprocessed and returned from this function will continue to flow in the data domain\n // of the current element node.\n const _datalogic_post = (data_in) => {\n //const recognizedLambdaConstants = ['lambda', 'onsave', 'gspot']; // lambda as in \"lambda plane\"\n //const curLambdaKeys = Object.keys(reduced_lambda_obj);\n //const validLambdaKeyList = recognizedLambdaConstants.filter(_ => curLambdaKeys.includes(_));\n\n //const textsource = 'lambda' in reduced_lambda_obj ? 'lambda' : 'dataflow'; // dataflow as in \"dataflow plane\"\n\n //const marginval = reduced_lambda_obj.margin ? Object.keys(reduced_lambda_obj.margin) : undefined;\n //const fieldwidthval = reduced_lambda_obj.fieldwidth ? Object.keys(reduced_lambda_obj.fieldwidth) : undefined;\n\n return data_in;\n };\n\n return {\n elementio$: elementioInput$,\n leaflogic: _leaflogic,\n datalogic: {\n pre: _datalogic_pre,\n post: _datalogic_post,\n },\n };\n};\n\nconst props = initElementInterface;\n\nexport { props, cachekeys };\n","import { etaReduceLambdaGraphs } from \"../../eta.js\";\nimport { concatMap, map } from \"rxjs/operators\";\nimport { of, combineLatest } from \"rxjs\";\nimport { executeLEAFLogicInSync, driveDataflowByCtrlflow } from \"../../leaf.js\";\nimport axios from \"axios\";\n\n//https://www.npmjs.com/package/quickjs-emscripten\n//import { newQuickJSAsyncWASMModule } from \"quickjs-emscripten\";\n\nimport { ElemCacheKeyLUT, initStdElementProps } from \"./library/index.js\";\nimport { doBottle } from \"../datautils/bottling.js\";\nimport { encodeUnicode } from \"../../../utils/leafbase64.js\";\n\n//const initWASMModule = _.memoize(async (_refnode, _elemfunc) => {\n// const module = new Object();\n// module.wasm = await newQuickJSAsyncWASMModule();\n// module.jsruntime = module.wasm.newRuntime();\n// module.context = module.jsruntime.newContext();\n// module.refnode = _refnode;\n// //return module;\n// const elementconfig = await _elemfunc(module);\n// return elementconfig;\n//});\n\n//let element_data_cache = {};\nconst _leafelement = {\n dataflow:\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n // space for node type specific init prior to use\n // check for parsing error conditions\n if (!contextuallambda) {\n throw (\n `LEAF error: the logical construct built using the ${refnodedata.leaf.logic.type} node ` +\n `(${refnode}) called with args (${JSON.stringify(refnodedata.leaf.logic.args)}).`\n );\n }\n\n const reduced_lambda_obj = await etaReduceLambdaGraphs({\n refnode,\n nodelambda,\n contextuallambda,\n etaTree: lambdactrl.gos.etaTree,\n });\n\n // spark_dev_note: I think _leafdataUnbottle currently only supports a single key, in the future it would be whole lot more useful\n // if it supported an array of keys to be unbottled in one go.\n\n //const filterDataOfInterest = _leafdataUnbottle({bottlekey:'_leafdeck'});\n //const bottleUp = _leafbottle.dataflow(lambdactrl)({refnodedata: {leaf: {logic: {args: {bottlekey:'_leafelement'}}}}, nodelambda: [], contextuallambda});\n const elementname = refnodedata.leaf.logic.args.elementname;\n\n const graphdomain = lambdactrl.gos.etaTree.domain;\n const graphappid = lambdactrl.gos.etaTree.appid;\n const getDomain =\n \"domain\" in reduced_lambda_obj && \"_default\" in reduced_lambda_obj.domain\n ? reduced_lambda_obj.domain._default\n : undefined;\n const getAppid =\n \"appid\" in reduced_lambda_obj && \"_default\" in reduced_lambda_obj.appid\n ? reduced_lambda_obj.appid._default\n : undefined;\n\n const uidefsgen =\n \"uidefs\" in reduced_lambda_obj && \"_default\" in reduced_lambda_obj.uidefs\n ? reduced_lambda_obj.uidefs._default\n : undefined;\n const edgesgen =\n \"edges\" in reduced_lambda_obj && \"_default\" in reduced_lambda_obj.edges\n ? reduced_lambda_obj.edges._default\n : undefined;\n const iselementio = \"elementio\" in reduced_lambda_obj ? true : false;\n //const backdropgen = (('backdrop' in reduced_lambda_obj) && ('_default' in reduced_lambda_obj.backdrop)) ? reduced_lambda_obj.backdrop._default : undefined;\n //const domain = getDomain ? await executeLEAFLogic(getDomain, [], {}) : defaultdomain;\n //const appid = getAppid ? await executeLEAFLogic(getAppid, [], {}) : defaultappid;\n //const uidefs = uidefsgen ? await executeLEAFLogic(uidefsgen, [], {}) : [];\n const formatFlowdata = (data, datakey = \"defaultio\") => {\n // datakey=\"defaultio\" or \"elementio\"\n if (!iselementio) {\n return data;\n } else {\n return doBottle(datakey, data);\n }\n };\n\n //const elementscript = document.createElement(\"script\");\n //elementscript.onload = function (inst) {\n // console.log(\"element script \", elementname, \" loaded,\",elementscript);\n //};\n //elementscript.setAttribute(\"data-main\", \"elements/testelement-main\");\n //elementscript.src = \"/scripts/lib/require.js\";\n //document.head.appendChild(elementscript);\n // spark_dev_note: debugging WASM module\n //const elementconfig = await initWASMModule(refnode, loadTestElem);\n //const mainresult = elementconfig.main ? await elementconfig.main({hello: \"world\"}) : undefined;\n\n //generateLambdaDataflow(_lambda_lut, _element_def, _inputdata$);\n //const scriptelem = document.getElementById(\"elementscripttag-\"+refnode);\n //if (!scriptelem) {\n // const elementscriptloader = document.createElement(\"script\");\n // elementscriptloader.setAttribute(\"id\", \"elementscripttag-\"+refnode);\n // elementscriptloader.innerHTML = //\"requirejs(['/scripts/elements/testelement']);\"\n // \"require.config({\\\n // baseUrl: '/scripts/lib',\\\n // paths: {\\\n // elements: '/scripts/elements'\\\n // }\\\n // });\\\n // require(['elements/testelement'], function (telem) {\\\n // window.leafelements = {test: telem.myfunc};\\\n // console.log('elements/testelement loaded:', telem)});\";\n\n // //elementscriptloader.src = '/scripts/elements/testelement';\n\n // //requirejs(['/scripts/common'], function (common) {\\\n // // requirejs(['/scripts/elements/testelement']);\\\n // //});\n // //requirejs(['/scripts/elements/testelement.js'], function (tele){\\\n // // window.leafelements = {test: tele};\\\n // // console.log('testelement:',tele);\\\n // //});\\\n // //requirejs(['/scripts/elements/testelement.js']);\\\n // document.head.appendChild(elementscriptloader);\n //}\n\n if ([\"f30e\", \"7a65\"].includes(refnode.slice(0, 4))) console.log(\"start debugging\");\n\n const node_context = {\n codebase: \"leafelement.js\",\n refnode,\n leafnode:\n lambdactrl.gos.etaTree.leafgraph.graph.dataflow.getNodeAttributes(refnode).leafnode.data,\n };\n\n //element_data_cache[refnode] = {};\n let element_data_cache = {};\n element_data_cache[ElemCacheKeyLUT.LAMBDA_OBJ] = reduced_lambda_obj;\n element_data_cache[ElemCacheKeyLUT.REFNODE] = refnode;\n element_data_cache[ElemCacheKeyLUT.RTCONTEXT] = {\n graphdomain,\n graphappid,\n refnodedata,\n nodelambda,\n contextuallambda,\n };\n const _std_elements_props = initStdElementProps(element_data_cache, elementname);\n\n return (input$objArr, controlflow$obj) => {\n if (refnode?.slice(0, 4) === \"d1d2\") console.log(\"start debugging refnode:\", refnode);\n //const merged$obj = combineDataflows(refnode, flowinput$Arr);\n //const merged$obj = combineDataflows(refnode, flowinput$Arr, false, false, false, {provenance: \"leafelement.js\", refnode, etaTree: lambdactrl.gos.etaTree});// default to merging multiple streams\n //merged$obj._control = controlflow$obj;\n //const resolvedinput$obj = await Promise.all(merged$obj);\n //return resolved_;\n //inflow_ctrl$.connect();\n\n const _cachecommondata = (_ctrl_in$) => {\n return _ctrl_in$.pipe(\n map((_ctrl_input) => {\n element_data_cache[ElemCacheKeyLUT.CTRLIN] = _ctrl_input;\n element_data_cache[ElemCacheKeyLUT.DOMAIN] = lambdactrl.gos.etaTree.domain;\n element_data_cache[ElemCacheKeyLUT.APPID] = lambdactrl.gos.etaTree.appid;\n return _ctrl_input;\n }),\n );\n };\n\n const inflow_ctrl$ = _cachecommondata(controlflow$obj._stream); //.pipe(multicast(()=>new Subject()));\n\n const _preprocessflow = (_ctrl_in$) => {\n return _ctrl_in$.pipe(\n concatMap((_ctrl_input) => {\n const merged_input$ = combineLatest(input$objArr.map((_input) => _input._stream));\n //const merged_input$ = combineLatest(flowinput$Arr.map(_input=>_input._stream));\n // spark_dev_note: the rows of executeLEAFLogicInSync here are invoked with runtime ctrl config carrying\n // information such as loopidx and/or clubrefnode, etc that can provide context to enable indexing in elements being spawned.\n //const domain$obj = getDomain ? executeLEAFLogicInSync(getDomain, merged_input$, undefined, inflow_ctrl$, {...controlflow$obj._config}) : {_stream: of(defaultdomain), _control: {_stream: inflow_ctrl$}};\n //domain$obj._control = {...controlflow$obj, _stream: inflow_ctrl$};\n //const appid$obj = getAppid ? executeLEAFLogicInSync(getAppid, merged_input$, undefined, inflow_ctrl$, {...controlflow$obj._config}) : {_stream: of(defaultappid), _control: {_stream: inflow_ctrl$}};\n //appid$obj._control = {...controlflow$obj, _stream: inflow_ctrl$};\n\n const _ctrl_data$ = of(_ctrl_input);\n const domain$obj = driveDataflowByCtrlflow(\n { _stream: _ctrl_data$ },\n input$objArr,\n undefined,\n { ...node_context, step: \"get the current domain\" },\n {\n leaflogic: getDomain,\n datalogic: {\n pre: (_data) => {\n element_data_cache[\"_input_data\"] = _data;\n },\n post: (_data) => {\n element_data_cache[\"domain\"] = _data;\n return _data;\n },\n },\n },\n );\n const appid$obj = driveDataflowByCtrlflow(\n domain$obj._control,\n input$objArr,\n undefined,\n { ...node_context, step: \"get the current domain\" },\n {\n leaflogic: getAppid,\n datalogic: {\n post: (_data) => {\n element_data_cache[\"appid\"] = _data;\n return _data;\n },\n },\n },\n );\n\n if ([\"http\"].includes(elementname)) {\n const urigen =\n \"uri\" in reduced_lambda_obj && \"_default\" in reduced_lambda_obj.uri\n ? reduced_lambda_obj.uri._default\n : undefined;\n const headergen =\n \"header\" in reduced_lambda_obj && \"_default\" in reduced_lambda_obj.header\n ? reduced_lambda_obj.header._default\n : undefined;\n const uri$obj = urigen\n ? executeLEAFLogicInSync(urigen, merged_input$, undefined, _ctrl_data$, {\n ...controlflow$obj._config,\n })\n : { _stream: of([]), _control: { _stream: _ctrl_data$ } };\n //uri$obj._control = {...controlflow$obj, _stream: _ctrl_data$};\n const header$obj = headergen\n ? executeLEAFLogicInSync(headergen, merged_input$, undefined, _ctrl_data$, {\n ...controlflow$obj._config,\n })\n : { _stream: of([]), _control: { _stream: _ctrl_data$ } };\n //header$obj._control = {...controlflow$obj, _stream: _ctrl_data$};\n\n // now time to combine the three flows\n const http_ctrl$ = combineLatest([\n domain$obj._control._stream,\n appid$obj._control._stream,\n uri$obj._control._stream,\n header$obj._control._stream,\n ]).pipe(map((_combined_ctrl) => _combined_ctrl[0]));\n\n const http_cache = {};\n const combined_metadata$ = http_ctrl$.pipe(\n map((_http_ctrl) =>\n combineLatest([\n ...input$objArr.map((_input) => _input._stream),\n domain$obj._stream,\n appid$obj._stream,\n uri$obj._stream,\n header$obj,\n ]),\n ),\n concatMap((_metadata) => {\n http_cache[\"_metadata\"] = _metadata;\n const recognizedLambdaConstants = [\n \"uri\",\n \"post\",\n \"put\",\n \"get\",\n \"header\",\n \"?graph\",\n ];\n const curLambdaKeys = Object.keys(reduced_lambda_obj);\n const validLambdaKeyList = recognizedLambdaConstants.filter((_) =>\n curLambdaKeys.includes(_),\n );\n //const poprect = validLambdaKeyList.length > 0 ? validLambdaKeyList[0] : 'center';\n //lookupRuntimeLambdaLUT: async (refnode, nodelambda, contextuallambda)\n const uri = validLambdaKeyList.includes(\"?graph\")\n ? _metadata[3] + `?graph=${_metadata[1]}/${_metadata[2]}`\n : _metadata[3];\n if (validLambdaKeyList.includes(\"post\") || validLambdaKeyList.includes(\"put\")) {\n if (_metadata[4].X_CSRF_Token)\n axios.defaults.headers.post[\"X-CSRF-Token\"] = _metadata[4].X_CSRF_Token; // https://github.com/axios/axios/issues/2024\n try {\n console.log(_metadata[0]);\n const res = validLambdaKeyList.includes(\"put\")\n ? axios.put(uri, _metadata[0])\n : axios.post(uri, _metadata[0]);\n console.log(res);\n //return _metadata.push(res.data);\n //node_output = formatFlowdata(processAxiosObj(res.data), \"elementio\");\n return res;\n } catch (err) {\n console.log(err);\n if (err.response) {\n // The request was made and the server responded with a status code\n // that falls out of the range of 2xx\n console.log(err.response.data);\n console.log(err.response.status);\n console.log(err.response.headers);\n //node_output = formatFlowdata(processAxiosObj(err.response.data), \"elementio\");\n } else if (err.request) {\n // The request was made but no response was received\n // `error.request` is an instance of XMLHttpRequest in the browser and an instance of\n // http.ClientRequest in node.js\n console.log(err.request);\n //node_output = formatFlowdata(processAxiosObj(err.request), \"elementio\");\n } else {\n // Something happened in setting up the request that triggered an Error\n console.log(\"Error\", err.message);\n //node_output = formatFlowdata(processAxiosObj(err.request), \"elementio\");\n }\n console.log(err.config);\n }\n } else {\n // get\n try {\n console.log(\"executing http get\");\n const res = axios.get(uri);\n console.log(res);\n //return _metadata.push(res.data);\n\n //node_output = formatFlowdata(processAxiosObj(res.data), \"elementio\");\n return res;\n } catch (err) {\n if (err.response) {\n // The request was made and the server responded with a status code\n // that falls out of the range of 2xx\n console.log(err.response.data);\n console.log(err.response.status);\n console.log(err.response.headers);\n //node_output = formatFlowdata(processAxiosObj(err.response.data), \"elementio\");\n } else if (err.request) {\n // The request was made but no response was received\n // `error.request` is an instance of XMLHttpRequest in the browser and an instance of\n // http.ClientRequest in node.js\n console.log(err);\n //node_output = formatFlowdata(processAxiosObj(err.message), \"elementio\");\n } else {\n // Something happened in setting up the request that triggered an Error\n console.log(\"Error\", err.message);\n //node_output = formatFlowdata(processAxiosObj(err.request), \"elementio\");\n }\n console.log(err.config);\n }\n }\n }),\n map((_urlret) => {\n const escapeHtml = (text) => {\n // https://stackoverflow.com/questions/1787322/what-is-the-htmlspecialchars-equivalent-in-javascript/4835406#4835406\n var map = {\n \"&\": \"&amp;\",\n \"<\": \"&lt;\",\n \">\": \"&gt;\",\n '\"': \"&quot;\",\n \"'\": \"&#039;\",\n };\n\n return text.replace(/[&<>\"']/g, function (m) {\n return map[m];\n });\n };\n const processAxiosObj = (obj) => {\n const objtype = typeof obj;\n if (objtype === \"object\") {\n return Array.isArray(obj)\n ? obj.map((_) => {\n return processAxiosObj(_);\n })\n : Object.fromEntries(\n Object.entries(obj).map(([_key, _val]) => {\n return [_key, processAxiosObj(_val)];\n }),\n );\n } else if (objtype === \"string\") {\n return escapeHtml(obj);\n } else // probably of type \"number\"\n {\n return obj;\n }\n };\n const _node_output = formatFlowdata(processAxiosObj(_urlret.data), \"elementio\");\n return _node_output;\n }),\n );\n return combined_metadata$;\n //const combined_metadata$ = combineDataflows(refnode, [maindata$obj, domain$obj, appid$obj, uri$obj, header$obj], false);\n //return combined_metadata$._stream\n } else if ([\"mediaplayer\"].includes(elementname)) {\n const urigen =\n \"uri\" in reduced_lambda_obj && \"_default\" in reduced_lambda_obj.uri\n ? reduced_lambda_obj.uri._default\n : undefined;\n const uri$obj = urigen\n ? executeLEAFLogicInSync(urigen, merged_input$, undefined, _ctrl_data$, {\n ...controlflow$obj._config,\n })\n : { _stream: of([]) };\n //uri$obj._control = controlflow$obj;\n //const header$obj = headergen ? executeLEAFLogicInSync(headergen, of(_data), {...controlflow$obj._config}) : {_stream: of([])};\n\n // now time to combine the three flows\n //const combined_metadata$ = combineDataflows(refnode, [maindata$obj, domain$obj, appid$obj, uri$obj], false);\n //return combined_metadata$._stream\n const mediaplayer_ctrl$ = combineLatest([\n domain$obj._control._stream,\n appid$obj._control._stream,\n uri$obj._control._stream,\n ]).pipe(map((_combined_ctrl) => _combined_ctrl[0]));\n const combined_metadata$ = mediaplayer_ctrl$.pipe(\n map((_mediaplayer_ctrl) =>\n combineLatest([\n ...input$objArr.map((_input) => _input._stream),\n domain$obj._stream,\n appid$obj._stream,\n uri$obj._stream,\n ]),\n ),\n );\n return combined_metadata$;\n } else if (\n [\"gnav\", \"popup\", \"image\", \"editor\", \"text\", \"prompt\"].includes(elementname)\n ) {\n //const uidefs$obj = uidefsgen ? executeLEAFLogicInSync(uidefsgen, merged_input$, undefined, _ctrl_data$, {...controlflow$obj._config}) : {_stream: of([]), _control: {_stream: _ctrl_data$}};\n //const edges$obj = edgesgen ? executeLEAFLogicInSync(edgesgen, merged_input$, undefined, _ctrl_data$, {...controlflow$obj._config}) : {_stream: of([]), _control: {_stream: _ctrl_data$}};\n\n const uidefs$obj = uidefsgen\n ? driveDataflowByCtrlflow(\n appid$obj._control,\n input$objArr,\n undefined,\n node_context,\n {\n leaflogic: uidefsgen,\n datalogic: {\n post: (_data) => {\n element_data_cache[\"uidefs\"] = _data;\n return _data;\n },\n },\n },\n )\n : undefined;\n const edges$obj = driveDataflowByCtrlflow(\n uidefsgen ? uidefs$obj._control : appid$obj._control,\n input$objArr,\n undefined,\n node_context,\n {\n leaflogic: edgesgen,\n datalogic: {\n post: (_data) => {\n element_data_cache[\"edges\"] = _data;\n return _data;\n },\n },\n },\n );\n const backdropgen =\n \"backdrop\" in reduced_lambda_obj && \"_default\" in reduced_lambda_obj.backdrop\n ? reduced_lambda_obj.backdrop._default\n : undefined;\n //const backdrop$obj = (elementname == 'gnav' ? (backdropgen ? executeLEAFLogicInSync(backdropgen, merged_input$, undefined, _ctrl_data$, {...controlflow$obj._config}) : {_stream: of(\"/assets/test/hubbleinfrared_dark2.jpg\"), _control: {_stream: _ctrl_data$}}) : {_stream: of([]), _control: {_stream: _ctrl_data$}});\n const backdrop$obj =\n elementname == \"gnav\"\n ? backdropgen\n ? driveDataflowByCtrlflow(\n edges$obj._control,\n input$objArr,\n undefined,\n node_context,\n {\n leaflogic: backdropgen,\n datalogic: {\n post: (_data) => {\n element_data_cache[\"backdrop\"] = _data;\n return _data;\n },\n },\n },\n )\n : {\n _stream: of(\"/assets/test/hubbleinfrared_dark2.jpg\"),\n _control: { _stream: _ctrl_data$ },\n }\n : { _stream: of([]), _control: { _stream: _ctrl_data$ } };\n\n //const element_ctrl$ = combineLatest([\n // _ctrl_data$,\n // domain$obj._control._stream.pipe(map(_data=>{\n // return _data;\n // })),\n // appid$obj._control._stream,\n // uidefs$obj._control._stream,\n // edges$obj._control._stream,\n // backdrop$obj._control._stream\n //]).pipe(\n // map(_combined_ctrl=>{\n // return _combined_ctrl[0];\n // }),\n // share()\n //);\n const element_ctrl$ = backdrop$obj._control._stream;\n\n // now time to combine the three flows\n //const combined_metadata$ = combineDataflows(refnode, [maindata$obj, domain$obj, appid$obj, uidefs$obj, edges$obj, backdrop$obj, bgtagvectors$obj], false, true);\n //return combined_metadata$._control._stream.pipe(withLatestFrom(...[maindata$obj._stream, domain$obj._stream, appid$obj._stream, uidefs$obj._stream, edges$obj._stream, backdrop$obj._stream, bgtagvectors$obj._stream]));\n const combined_metadata$ = element_ctrl$.pipe(\n map((_element_ctrl) => {\n //return combineLatest([...flowinput$Arr.map(_input=>_input._stream), domain$obj._stream, appid$obj._stream, uidefs$obj._stream, edges$obj._stream, backdrop$obj._stream]);\n return [\n element_data_cache[\"_input_data\"],\n element_data_cache[\"domain\"],\n element_data_cache[\"appid\"],\n element_data_cache[\"uidefs\"],\n element_data_cache[\"edges\"],\n element_data_cache[\"backdrop\"],\n ];\n }),\n );\n return combined_metadata$;\n }\n }),\n );\n };\n _preprocessflow(inflow_ctrl$);\n\n //const output$obj = driveDataflowByCtrlflow(\n // controlflow$obj, input$objArr, undefined,\n // {...node_context, metastep: \"element \"+elementname},\n // {leaflogic: _nodeflowfunc, datalogic: {post: postprocessfunc}}\n //);\n //const consolidated_input$objArr = [combineDataflows(refnode, input$objArr)];\n //const consolidated_input$objArr = [{_stream: chronosDataflow(controlflow$obj._stream, input$objArr.map(_$obj=>_$obj._stream), false, CHRONOSTYPE_SYNC, {time: 10000})}];\n if (\"elementio$\" in _std_elements_props) {\n // make elementio$ handle of the current leafelement accessable from etaTree\n // currently leafelement of type prompt supports this feature.\n lambdactrl.gos.etaTree.leafio.elementioLUT[refnode] = _std_elements_props.elementio$;\n }\n const output$obj = driveDataflowByCtrlflow(\n { _stream: inflow_ctrl$ },\n input$objArr,\n undefined,\n { ...node_context, metastep: \"element \" + elementname },\n {\n leaflogic: _std_elements_props ? _std_elements_props.leaflogic : undefined,\n datalogic: {\n pre: _std_elements_props ? _std_elements_props.datalogic.pre : undefined,\n post: _std_elements_props ? _std_elements_props.datalogic.post : undefined,\n },\n },\n );\n //{_stream: controlflow$obj._stream.pipe(concatMap(_ctrl_in => {return combineLatest(input$objArr.map(_obj=>_obj._stream))})), _control: controlflow$obj._stream};\n\n return output$obj;\n };\n },\n lambda:\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n // space for node type specific init prior to use\n // note the cross over in the roles of nodelambda and contextuallambda\n const reduced_lambda_obj = await etaReduceLambdaGraphs({\n refnode,\n nodelambda: contextuallambda,\n contextuallambda: nodelambda,\n etaTree: lambdactrl.gos.etaTree,\n });\n const lambda_lut = {};\n Object.entries(reduced_lambda_obj).map(([key, etafunc]) => {\n lambda_lut[key] = (input$Arr, controlflow$obj) => {\n // a dataflow-scoped func per key\n const output$obj = etafunc(input$Arr, controlflow$obj);\n return { ...output$obj, _control: controlflow$obj };\n };\n });\n return lambda_lut;\n },\n methods:\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n const runtimestate = { configtext: \"\" };\n const is_interactive = false;\n return {\n texteditor: {\n setTextSource: (configtext) => {\n runtimestate.configtext = configtext;\n\n // now do the saving up in the lake\n const node_data = {\n ...refnodedata,\n };\n //delete node_data.leaduuid; // must remove any data that are locally added and only consumed by leafeditor\n //console.log(lambdactrl);\n\n // keypath = ['lispexpression'] for leaflisp\n // ['elementconfig'] for leafelement as defined in metamodel.js\n node_data.leaf.logic.args.elementconfig = configtext;\n //setMultiKeyedData(editorconfig.current.keypath, node_data.leaf.logic.args, editortext.current);\n //mutateUpdateNode({variables: {uuid: editorconfig.current.node_data.leaduuid, data: encodeUnicode(JSON.stringify(node_data))}});\n if (!is_interactive)\n lambdactrl.gos.etaTree.leaflakeio.qm_methods.updateNode({\n variables: { uuid: refnode, data: encodeUnicode(JSON.stringify(node_data)) },\n });\n },\n getTextSource: () => {\n //console.log(refnodedata);\n return refnodedata.leaf.logic.args.elementconfig;\n },\n },\n general: {\n getNodeData: () => {\n return refnodedata;\n },\n getLambdaLUT: async () => {\n const reduced_lambda_obj = await etaReduceLambdaGraphs({\n refnode,\n nodelambda,\n contextuallambda,\n etaTree: lambdactrl.gos.etaTree,\n });\n const lambda_lut = {};\n Object.entries(reduced_lambda_obj).map(([key, etafunc]) => {\n lambda_lut[key] = (input$Arr, controlflow$obj) => {\n // a dataflow-scoped func per key\n const output$obj = etafunc(input$Arr, controlflow$obj);\n return { ...output$obj, _control: controlflow$obj };\n };\n });\n return lambda_lut;\n },\n setElementName: (name) => {\n // now do the saving up in the lake\n const node_data = {\n ...refnodedata,\n };\n //delete node_data.leaduuid; // must remove any data that are locally added and only consumed by leafeditor\n //console.log(lambdactrl);\n\n // keypath = ['lispexpression'] for leaflisp\n node_data.leaf.logic.args.elementname = name;\n //setMultiKeyedData(editorconfig.current.keypath, node_data.leaf.logic.args, editortext.current);\n //mutateUpdateNode({variables: {uuid: editorconfig.current.node_data.leaduuid, data: encodeUnicode(JSON.stringify(node_data))}});\n lambdactrl.gos.etaTree.leaflakeio.qm_methods.updateNode({\n variables: { uuid: refnode, data: encodeUnicode(JSON.stringify(node_data)) },\n });\n },\n },\n };\n },\n};\n\nexport { _leafelement };\n","/*\n * The reference js implementation of the LEAF language specification, codenamed breezyforest\n * This library is a part of the reference js implementation of ghostos\n *\n * author: spark@leautomaton.com\n * date: 29 Jan 2022\n *\n * copyright: LE Automaton Ltd\n */\n\n//import { LEAFIOmetamodel, _leafstdlib_dataflow_api } from '../metamodel';\n//import { reconstructLEAFGraph, analyzeLEAFGraph, parseLEAFGraph, combineInputStreams } from './leaf.js';\n//import { _leafelementslib } from './elements';\n\n//import { etaReduceLambdaGraphs, etaReduceDataflowComponent, wrapInputStreamArrayHandler, runtimeEtaTree } from './eta.js';\n\nimport {\n _leafinflowport,\n _leafoutflowport,\n _leafscreenio,\n _leafmemoryio,\n} from \"./nodelogic/io/index.js\";\nimport {\n _leaflambdagraph,\n _leafgraph,\n _leafspell,\n _leafspelldef,\n _leafloopyspell,\n _leafanchor,\n} from \"./nodelogic/abstraction/index.js\";\nimport { _leaflisp } from \"./nodelogic/wizardry/index.js\";\nimport { _leafchronosflow, _leafmixflow, _leafgateflow } from \"./nodelogic/dataflow/index.js\";\nimport {\n _leaflabel,\n _leafdelabel,\n _leafbottle,\n _leafunbottle,\n _leafcrate,\n _leafconfig,\n} from \"./nodelogic/datautils/index.js\";\nimport {\n _leafdeckspade,\n _leafdeckheart,\n _leafdeckdiamond,\n _leafdeckclub,\n _leafgnav,\n _leafpopupview,\n _leafelement,\n} from \"./nodelogic/elements/index.js\";\n\n//({lambdactrl: {gos: {subsDirectory}, user: {nodeconfig={}}}, lambdadata: {lambdaFunc=x=>x, graphContextual}}={}) => {\n// // here the lambda function connected to the current node is always expected to be null\n// // as the node-level lambdaFunc is not permitted for this type of node.\n// // graphContextual is quite relevant for this node type on the contrary, as this node is an abstraction used for\n// // referring to the contextual runtime function in the context of the current leaf graph.\n// return (flowinput$) => {\n// const flowoutput$ = graphContextual(flowinput$);\n// return flowoutput$;\n// };\n//};\n\n////const _leaffilter = ({ predicate = \"(lambda (x) (True))\" } = {}, lambdaFunc=x=>x, graphContextual) => {}\n//// @predicate is a leaflisp expression for a lambda function to work as a predicate\n//const _leaffilter = ({lambdactrl: {gos: {subsDirectory}, user: {predicate = \"(lambda (x) (True))\"}}, lambdadata: {lambdaFunc=x=>x, graphContextual}}={}) => {\n// return (flowinput$) => {\n// const flowoutput$ = flowinput$.pipe(\n// map(node_input=>{\n// let node_output = null;\n// //console.log('input$ ' + JSON.stringify(input$));\n// //console.log('a leafdeckclub processed for node ' + deckname + ' with toggle: ' + logictoggle + ', flowinput: ' + node_input);\n// //console.log('input: '+ node_input + ' ' + Date.now() + ' ' + JSON.stringify(node_data));\n// // execute node level logic and optionally set node_output here\n// node_output = node_input; // currently do nothing but relaying input to output\n// console.log('node logic executed: ' + JSON.stringify(node_output));\n// return node_output ? node_output : node_input; // the default is to return input i as is. return a node defined non-null output otherwise.\n//\n// //return filter(predicate)(flowinput);\n// if (processLEAFlisp(predicate)(node_input)) {\n// return true;\n// }\n// return false;\n// })\n// );\n// return flowoutput$;\n// };\n//};\n//\n////const _leaftracker = ({ predicate = \"(lambda (x) (True))\" } = {}, lambdaFunc=x=>x, graphContextual) => {}\n//const _leaftracker = ({lambdactrl: {gos: {subsDirectory}, user: {predicate = \"(lambda (x) (True))\"}}, lambdadata: {lambdaFunc=x=>x, graphContextual}}={}) => {\n// return (flowinput$) => {\n// const flowoutput$ = flowinput$.pipe(\n// map(node_input=>{\n// let node_output = null;\n// //console.log('input$ ' + JSON.stringify(input$));\n// //console.log('a leafdeckclub processed for node ' + deckname + ' with toggle: ' + logictoggle + ', flowinput: ' + node_input);\n// //console.log('input: '+ node_input + ' ' + Date.now() + ' ' + JSON.stringify(node_data));\n// // execute node level logic and optionally set node_output here\n// node_output = node_input; // currently do nothing but relaying input to output\n// console.log('node logic executed: ' + JSON.stringify(node_output));\n// return node_output ? node_output : node_input; // the default is to return input i as is. return a node defined non-null output otherwise.\n//\n// //return filter(predicate)(flowinput);\n// if (processLEAFlisp(predicate)(node_input)) {\n// return true;\n// }\n// return false;\n// })\n// );\n// return flowoutput$;\n// };\n//};\n\n// _leafelementslib was moved to elements.js (20 Mar 2022)\n//const _leafelementslib = (elementname, args = {}) => {\n// const _breezyforestelements = {\n// }\n//};\n\n// a dictionary lookup function of leaf standard libraries (ver. breezyforest)\n//const _leafstdlib = (type, args = {}) => {\n// const _breezyforeststdlib = {\n// /* ********************* LEAF standard library ********************* */\n// //'leaftracker': _leaftracker, // deprecated on 9 Mar 2022, as its function can be supported by leafgraph that allows users to refer to the leafdeckspade of any chosen graph allowable.\n// // leaf io\n// ////'leafradioRX': _leafradioRX,\n// ////'leafradioTX': _leafradioTX,\n// ////'leafoutflowport': _leafoutflowport,\n// ////'leafinflowport': _leafinflowport,\n// // leaf elements\n// // (11 Mar 2022) refactor and migrate and consolidate the management of all elements to leafelement\n// 'leafdeckspade': _leafdeckspade,\n// 'leafdeckheart': _leafdeckheart,\n// 'leafdeckdiamond': _leafdeckdiamond,\n// 'leafdeckclub': _leafdeckclub,\n// 'leafgnav': _leafgnav,\n// 'leafpopupview': _leafpopupview, // (11 Mar 2022) refactor and migrate this to leafelement\n// 'leafelement': _leafelement, // shall support a growing list of element types and their UX definitions of leafgnav, leafpopup, leafeditor, leafimage, leafvideo, leafaudio, leaftext, leafd3, leafgraphics etc.\n// // leaf abstraction\n// 'leafgraph': _leafgraph, // completed 5 feb 2022, changed the name from _leafapp to _leafgraph on 9 Mar 2022\n// 'leaflambdagraph': _leaflambdagraph, // completed 20 jan 2022\n// 'leafanchor': _leafanchor,\n// 'leafspelldef': _leafspelldef, // changed the name from _leafoperator to _leafspelldef and _leafspell on 9 Mar 2022\n// 'leafspell': undefined, // parsing this type is taken care of separately in three parsing steps involving leaf standard spells, leaf curated spells and user-defined spells\n// 'leafloopyspell': _leafloopyspell, // a new concept consolidating the likes of 'map' among reactive operators, but in a themetically more compatible fashion.\n// // leaf dataflow utils\n// 'leafsyncflow': _leafsyncflow, // to take care of needs as in rx.js merge, zip, combineLatest, concat, race, etc.\n// 'leafmixflow': _leafmixflow, //_leafmixflow, // to take care of needs as in array zip, concat etc.\n// 'leafgateflow': _leafgateflow, // bottle filtering based on bottlekey equality or inequality\n// // leaf data bottling utils\n// 'leaflabel': _leaflabel, // completed 5 feb 2022\n// 'leafdelabel': _leafdelabel, // completed 5 feb 2022\n// // // use bottle/unbottle to support structuring/destructuring of json objects,\n// //'leafbottle2json': _leafbottle2json, //(spark_dev_note: (11 Mar 2022) use this bottle 2 json converter prior to consumption by leaflisp)\n// //'leafjson2bottle': _leafjson2bottle, //(spark_dev_note: (11 Mar 2022) use this json 2 bottle converter prior to data consumption by any leaf constructs downstream of leaflisp)\n// // spark_dev_note: implement these two converters built into _leaflisp\n// 'leafbottle': _leafbottle, // completed 5 feb 2022\n// 'leafunbottle': _leafunbottle, // completed 5 feb 2022\n// 'leafcrate': _leafcrate,\n// 'leafconfig': _leafconfig,\n// // leaf arcane wizardry\n// 'leaflisp': _leaflisp, // completed 20 jan 2022\n// //'leafmap': _leafmap,\n// };\n//\n// if (type in _breezyforeststdlib)\n// return _breezyforeststdlib[type];\n// else\n// return undefined; // exclude any non-standard types and any spells\n//};\n\n//_leafstd_corelib.leaflabel = _leaflabel;\n\n/*\n * getLEAFNodeCoreLogic() is the single retrieval point of the API function defined for\n * each leaf node logic (aka nodelogic) in breezyforest.\n *\n * @type: is node name or its logic name\n * @scope: is \"dataflow\" or \"lambda\" referring to leaf node scope duality\n * @lambdactrl: is a data object carrying information needed for providing ghostos-scoped\n * communication/control mechanism to each leaf node, with the following object structure:\n * {\n * gos: {standardSpellBook: {}, curatedSpellBook: {}, masterSubsDirectory: masterSubsDirectory},\n * user: {spellbook:{}, config:node_data}\n * }\n * please note that the argument passing for @lambdactrl is curried as a means to provide nodelogic (ie.\n * the returned function) with access to the data object within itself.\n */\nfunction getLEAFNodeCoreLogic(type, scope, lambdactrl) {\n // _corelib is the leaf std core js library for the eta reduction of a leaf graph, accounting for the scope duality (ie. dataflow vs lambda) of interpreting leaf logic\n const leafstd_corelib = {\n /* ********************* LEAF standard library ********************* */\n //'leaftracker': _leaftracker, // deprecated on 9 Mar 2022, as its function can be supported by leafgraph that allows users to refer to the leafdeckspade of any chosen graph allowable.\n // leaf io\n //leafradioRX: _leafradioRX,\n //leafradioTX: _leafradioTX,\n leafoutflowport: _leafoutflowport,\n leafinflowport: _leafinflowport,\n leafscreenio: _leafscreenio,\n leafmemoryio: _leafmemoryio,\n // leaf elements\n // (11 Mar 2022) refactor and migrate and consolidate the management of all elements to leafelement\n leafdeckspade: _leafdeckspade,\n leafdeckheart: _leafdeckheart,\n leafdeckdiamond: _leafdeckdiamond,\n leafdeckclub: _leafdeckclub,\n leafgnav: _leafgnav,\n leafpopupview: _leafpopupview, // (11 Mar 2022) refactor and migrate this to leafelement\n leafelement: _leafelement, // shall support a growing list of element types and their UX definitions of leafgnav, leafpopup, leafeditor, leafimage, leafvideo, leafaudio, leaftext, leafd3, leafgraphics etc.\n // leaf abstraction\n leafgraph: _leafgraph, // completed 5 feb 2022, changed the name from _leafapp to _leafgraph on 9 Mar 2022\n leaflambdagraph: _leaflambdagraph, // completed 20 jan 2022\n leafanchor: _leafanchor,\n //leafspelldef: _leafspelldef, // changed the name from _leafoperator to _leafspelldef and _leafspell on 9 Mar 2022\n //leafspell: undefined, // parsing this type is taken care of separately in three parsing steps involving leaf standard spells, leaf curated spells and user-defined spells\n leafspell: _leafspell,\n leafspelldef: _leafspelldef,\n leafloopyspell: _leafloopyspell, // a new concept consolidating the likes of 'map' among reactive operators, but in a themetically more compatible fashion.\n // leaf dataflow utils\n leafchronosflow: _leafchronosflow, // to take care of needs as in rx.js merge, zip, combineLatest, concat, race, etc.\n leafasyncflow: _leafchronosflow, // to take care of needs as in rx.js merge, zip, combineLatest, concat, race, etc.\n leafmixflow: _leafmixflow, //_leafmixflow, // to take care of needs as in array zip, concat etc.\n leafgateflow: _leafgateflow, // bottle filtering based on bottlekey equality or inequality\n // leaf arcane wizardry\n leaflisp: _leaflisp, // compbeted 20 jan 2022\n // leaf data utils\n leaflabel: _leaflabel, // completed 5 feb 2022\n leafdelabel: _leafdelabel, // completed 5 feb 2022\n leafbottle: _leafbottle, // completed 5 feb 2022\n leafunbottle: _leafunbottle, // completed 5 feb 2022\n leafcrate: _leafcrate,\n leafconfig: _leafconfig,\n // // use bottle/unbottle to support structuring/destructuring of json objects,\n //'leafbottle2json': _leafbottle2json, //(spark_dev_note: (11 Mar 2022) use this bottle 2 json converter prior to consumption by leaflisp)\n //'leafjson2bottle': _leafjson2bottle, //(spark_dev_note: (11 Mar 2022) use this json 2 bottle converter prior to data consumption by any leaf constructs downstream of leaflisp)\n // spark_dev_note: implement these two converters built into _leaflisp\n //'leafmap': _leafmap,\n };\n\n //const cstr = stringify(lambdactrl, null, 2);\n //console.log('accessing leafnode core logic:', type, scope, cstr);\n //console.log('accessing leafnode core logic:', type, scope, JSON.stringify(lambdactrl));\n const nodelogic = leafstd_corelib[type][scope]\n ? leafstd_corelib[type][scope](lambdactrl)\n : undefined; // curried passing of lambdactrl as argument to the returned func\n\n return nodelogic;\n}\n\n/*\n * processLEAFNodeLogic is an entrypoint function to configure a function to\n * execute the js implementation of the corresponding LEAF node logic identified by 'type'\n * for processing the LEAF Node logic\n * @lambdactrl:\n * @gos: currently controlplane only consists of subsDirectory (directory of inter-component comms channels), it may be expanded down the road.\n * @user:\n * @spellbook: a library (dictionary) of user-defined leaf spells\n * @leaf.logic:\n * @type specifies the leaf logic\n * @args specifies any arguments needed when executing the given logic\n * @lambdadata:\n * @lambdaFunc: a parsed runtime lambda function connected to the current node\n * @graphContextual: a parsed runtime lambda function connected to the graph of which the current node is a member\n */\n//const processLEAFNodeLogic = ({type, args=null}={}, nodeLambdaFunc, graphContextual)\n//const processLEAFNodeLogic = (input) => {\n// //{lambdactrl: {gos: {standardSpellBook={}, curatedSpellBook={}}, user: {spellbook, leaf}}, lambdadata: {lambdaFunc: nodeLambdaFunc, graphContextual}}\n// const {\n// lambdactrl,\n// lambdadata\n// } = input;\n// const errorLocationStr = 'in processing the LEAF Node logic.';\n// const {type, args=null} = lambdactrl.user.leaf.logic;\n// console.log('processing ' + type + ' ' + JSON.stringify(args));\n//\n// const nopFunc = (flowinput) => { // default function of \"no operation\"\n// // spark_dev_note:\n// // currently it returns input as output as is, as this can ensure any other valid leaf operations to continue to operate without error.\n// // down the road, leaf dataflow level error data insertion is needed here before returning data back into the dataflow plane,\n// // in order to support a user-level error catching mechanism.\n// return flowinput;\n// };\n// // curated spells (an HQ curated list of open-source leaf spell contributions by community)\n// // curated community spells\n// const _leafstandardspells = lambdactrl.gos.standardSpellBook;\n// const _leafcommunityspells = lambdactrl.gos.curatedSpellBook;\n//\n// // spark_dev_note:\n// // spellbook is the rhelm for going open-source in leaf\n// // in order to disclose leaf standard spells as open-source,\n// // the standard spellbook needs refactoring to be parsed from a standard spellbook defined\n// // in leaf graph, instead of the js code equivalent as exemplified below\n// //const _stdspellbook = {\n// //// standard spells\n// //'_display': _leafspell({spellname: '_display'}),\n// //}\n// //// check to return leaf standard spells first and only the standard spells\n// //if (type === 'leafspell' && args.spellname in _stdspellbook)\n// // return _stdspellbook[args.spellname];\n//\n// let nodeFunc;\n// try {\n// if (type !== 'leafspell') {\n// nodeFunc = _leafstdlib(type, args); // check for a type match in leaf standard library\n// if (nodeFunc)\n// nodeFunc = nodeFunc({lambdactrl, lambdadata}); // initialize the node function with lambda data, if nodeFunc is found\n// else\n// throw `LEAF Error: node type ${type} with ${JSON.stringify(args)} is undefined ${errorLocationStr}`; // error thrown but no upstream error catch yet. leaf user-level error catching mechanism is yet to be implemented (9 Mar 2022).\n// }\n// else if (type === 'leafspell' && 'spellname' in args) {\n// // leaf spell type checking order is important in order to stop cheeky user attempts to override\n// // breezyforest standard spell lib :)\n// // hence should check leaf standard spells first!\n// if (args.spellname.substring(0, 1) === '_' && args.spellname in _leafstandardspells) // leaf standard spellnames must be prefixed with '_'.\n// nodeFunc = _leafstandardspells[args.spellname]({lambdactrl, lambdadata});\n// // a curated list of community spells, any non-standard spells must NOT be prefixed with '_'\n// else if (args.spellname.substring(0, 1) !== '_' && args.spellname in _leafcommunityspells)\n// nodeFunc = _leafcommunityspells[args.spellname]({lambdactrl, lambdadata});\n// // user-defined leaf spell library\n// else if (args.spellname.substring(0, 1) !== '_' && args.spellname in lambdactrl.user.spellbook)\n// nodeFunc = lambdactrl.user.spellbook[args.spellname]({lambdactrl, lambdadata});\n// else\n// throw `LEAF Error: node type ${type} with ${JSON.stringify(args)} is undefined or undefinable ${errorLocationStr}`; // error thrown but no upstream error catch yet. leaf user-level error catching mechanism is yet to be implemented (9 Mar 2022).\n// }\n// else {\n// throw `LEAF Error: node type ${type} with ${JSON.stringify(args)} is undefined ${errorLocationStr}`; // error thrown but no upstream error catch yet. leaf user-level error catching mechanism is yet to be implemented (9 Mar 2022).\n// //nodeFunc = nopFunc; // done by the immediate catch error block below\n// }\n// }\n// catch (e) {\n// console.error(`LEAF Error: processing node type ${type} with ${JSON.stringify(args)} caused an exception ${errorLocationStr}: ${JSON.stringify(e)}`); // error thrown but no upstream error catch yet. leaf user-level error catching mechanism is yet to be implemented (9 Mar 2022).\n// nodeFunc = nopFunc;\n// }\n// return nodeFunc;\n//};\n\nexport { getLEAFNodeCoreLogic };\n","import { map, filter, share, withLatestFrom, switchMap } from \"rxjs/operators\";\nimport { merge, race, Subject } from \"rxjs\";\n\nimport lodashpkg from \"lodash\";\n\nimport { getLEAFNodeCoreLogic } from \"./breezyforest.js\";\n//import { LEAFIOmetamodel } from '../metamodel';\n//import { combineDataflows, mergeObservableDataflows, mergeDataflows, chronosDataflow, CHRONOSTYPE_SYNC, TIMEOUTBEHAVIOR_BESTEFFORT } from '../utils/leafdataflow';\nimport { etaTreeForest } from \"./etatreeforest.js\";\nimport axios from \"axios\";\nimport { driveDataflowByCtrlflow, leafTraceFlow } from \"./leaf.js\";\nimport { isBottle } from \"./predicates.js\";\nimport { doBottle } from \"./nodelogic/datautils/bottling.js\";\nimport { v4 as uuid4 } from \"uuid\";\n\n// locally global constants\nconst { memoize } = lodashpkg; // nodejs compatible lodash import\nconst EtaTreeConfig = {\n isdebug: process.env.LEAFGON_ENV_TYPE === \"development\" ? true : false,\n};\n/*\n * processLEAFEtaReduction() is a function to perform LEAF graph reduction, a LEAF equivalent of the eta reduction in lambda calculus\n * it accepts the following arguments and returns a reduced graph in the form below: \n * TBD: {nodes: [a list of nodes], edges: [a list of edges]} or a graphology object`\n * @node: is the target node being reduced\n * TBD: @node is a simple uuid or the following json structure \n {\n uuid: '308bd84f-3af2-478e-ae35-b2842a9bd3a1', // a node id unique in the domain\n }\n\n * @prevnode: is used to identify a preceding node in the symantic chain of nodes traversed in the eta reduction, (or undefined)\n * @rootnode: can be used to identify the original root in the midst of recursion.\n * @node === @rootnode when the function is first invoked.\n * @leafgraph: is the node lut for retrieving lexical analysis gathered about any nodes \n * relevant with respect to the Eta reduction of @node. \n * {graph: {lambda: lambdagraph, dataflow: dataflowgraph}, thespade: {uuid: thespadeuuid}, spelldefs: spelldefnodes, edges: {data: {sources: datasources, targets: datatargets}, lambda: {sources: lambdasources, targets: lambdatargets, sourcelut: lambdasourcelut}, anchor: {targets: anchortargets}}}\n * TBD @leafgraph is a leafgraph object returned by reconstructLEAFGraph() ?\n * if so, should it be called leafgraph instead?\n * @graphcomponents: is the component analysis data object of a leafgraph, structured as returned by analyzeLEAFGraph()\n * @leaflib: is a json object carrying the following two\n * @spellbookgrapho: a graphology Graph carrying nodes, each identified by uuid \n * containing as attributes the corresponding leafnode and its decoded data.\n * the graph only carries dataflow plane edges.\n * @userlib: is a js func library (LUT) carrying references to the user-defined spell defs, \n * TBD choose btw @spellbookgrapho and @userlib, or maybe both.\n * @leaflib: is a js func library (LUT) carrying references to the leaf standard lib + standard spells + curated spells\n */\n\n// preprocessLEAFEtaReduction() compiles through all nodes relevant to the eta reduction of the rootnode\n// creating a graphology object consisting only of non-reduceable nodes from the pool of relevant nodes.\n//const preprocessLEAFEtaReduction = (node, prevnode, rootnode, leafgraph, graphcomponents, leaflib, processedGraph=new Graph()) => {\n// //const processedGraph = new Graph(); // an empty graphology object\n//\n// const node_logic_type = leafgraph.graph.dataflow.getNodeAttributes(node.uuid).leafnode.data.leaf.logic.type;\n//\n// // copy the current node\n// if (!processedGraph.hasNode(node.uuid))\n// processedGraph.addNode(node.uuid, leafgraph.graph.dataflow.getNodeAttributes(node.uuid));\n//\n// // get dataflow plane neighbors with respect to the current node\n// leafgraph.graph.dataflow.inNeighbors(nodeuuid).map((neighboruuid) => {\n// if (!processedGraph.hasNode(neighboruuid)) {\n// processedGraph.addNode(neighboruuid, leafgraph.graph.dataflow.getNodeAttributes(neighboruuid));\n// const edge_attributes = leafgraph.graph.dataflow.getEdgeAttributes(neighboruuid, nodeuuid);\n// processedGraph.addEdge(neighboruuid, nodeuuid); // without the edge id in the original leafgraph\n// }\n// });\n// leafgraph.graph.dataflow.outNeighbors(nodeuuid).map((neighboruuid) => {\n// if (!processedGraph.hasNode(neighboruuid)) {\n// processedGraph.addNode(neighboruuid, leafgraph.graph.dataflow.getNodeAttributes(neighboruuid));\n// const edge_attributes = leafgraph.graph.dataflow.getEdgeAttributes(nodeuuid, neighboruuid);\n// processedGraph.addEdge(nodeuuid, neighboruuid); // without the edge id in the original leafgraph\n// }\n// });\n//\n//};\n\n//const parseLEAFGraphByMemberNode = (node, prevnode, rootnode, leafgraph, graphcomponents, leaflib) => {\n// // identify the component the member node belongs to\n// const component_idx = graphcomponents.components.lut[leafspelldef_entrynode.uuid].idx; // look up the matching component idx\n// // get the component, fyi: component is a list of member nodes' uuids\n// const leafcomponent = graphcomponents.components.nodegroups.lambda[component_idx];\n//\n// // find start and end nodes\n// const startnodes = [];\n// const endnodes = [];\n// const func$LUT = {};\n// // build a func LUT out of the nodes of a LEAF graph component.\n// leafcomponent.forEach((nodeuuid) => {\n// const isSourceNode = leafgraph.edges.data.sources.has(nodeuuid);\n// const isTargetNode = leafgraph.edges.data.targets.has(nodeuuid);\n// if (!isTargetNode)\n// startnodes.push(nodeuuid);\n// if (!isSourceNode)\n// endnodes.push(nodeuuid);\n// });\n//\n//};\n\n// spark_dev_note: each leaf node must be accompanied by a leaf js func pattern supporting the plane duality of being initialized in the lambda plane and used in the dataflow plane as follows.\n// @lambdafuncArgs: a dictionary of eta reduced lambda graphs, each compiled into a leaf js func pattern, passed as argument\n\n//const getLEAFstdjslib = (type, args) => {\n// return leafstdjslib[type];\n//};\n\n//const getLEAFSpellDefjs = (typeargs, nodelambda, contextuallambda) => {\n// // get the spell def object\n// const {leafspelldef_entrynode, spelldef_jslut} = getLEAFSpellDef_jsLUT(typeargs.spellname); // json object consisting of js reduced leafnode logic of member nodes relevant to the spell def.\n// //spelldef_jslut.\n//\n// // identify the component the member node belongs to\n// const component_idx = graphcomponents.components.lut[leafspelldef_entrynode.uuid].idx; // look up the matching component idx\n// // get the component, fyi: component is a list of member nodes' uuids\n// const leafcomponent = graphcomponents.components.nodegroups.lambda[component_idx];\n//\n// // compile js dataflow plane func\n// // find start and end nodes\n// const startnodes = [];\n// const endnodes = [];\n// const func$LUT = {};\n// // build a func LUT out of the nodes of a LEAF graph component.\n// leafcomponent.forEach((nodeuuid) => {\n// const isSourceNode = leafgraph.edges.data.sources.has(nodeuuid);\n// const isTargetNode = leafgraph.edges.data.targets.has(nodeuuid);\n// if (!isTargetNode)\n// startnodes.push(nodeuuid);\n// if (!isSourceNode)\n// endnodes.push(nodeuuid);\n// });\n// const getCurLambdajsLUT = (lambdakey=undefined) => {\n// if (lambdakey)\n// if (lambdakey in nodelambda)\n// return nodelambda[lambdakey];\n// else\n// return x => undefined; // a default js func to return when the expected lambda key does not exist in lut\n// else\n// return nodelambda;\n// };\n// return (input$Arr) => {\n// return endnodes.map((nodeuuid) => {\n//// const nodelambda =\n// const output$ = spelldef_jslut[nodeuuid](nodelambda=spelldef_jslut.lambda[nodeuuid] ,contextuallambda=getCurLambdajsLUT())(input$Arr);\n// return output$;\n// });\n// }\n//}\n\n//const _nodelambda = leafgraph.edges.lambda.sourcelut[contextual_lut._default.uuid];\n//const _contextuallambda = nodelambda; // derivative contextuallambda\n\n////const thecorelogic = etaReduceLambdaGraphs(contextual_lut._default.uuid, _nodelambda, _contextuallambda, leafgraph, graphcomponents);\n//const thecorelogic = etaReduceLambdaGraphs(contextual_lut._default.uuid, _contextuallambda, leafgraph, graphcomponents);\n\n// @leafnode_scope: \"dataflow\" or \"lambda\"\n// @refnode: is a leaf node defining the @leafnode of interest within its frame of reference\n\n////const lambda_lut = _refnode ? parseLambdaLUT(nodelambda, _refnode, _refnode_logic) : undefined;\n//const lambda_leafjs_lut = {};\n\n//const lambda_etaobj = etaReduceLambdaGraphs(nodelambda, contextuallambda); // TBD: check if contextuallambda is invariant\n//lambda_etaobj._default.graphscope\n//nodelambda.map(lambda_uuid => {\n// //const etaReducedLEAFjs = etaReduceLambdaGraphs(lambda_uuid, contextuallambda);\n// //const lambda_nodelambda = runtimeEtaTree.leafgraph.edges.lambda.sourcelut[lambda_uuid]; // get nodelambda w.r.t. lambda_uuid;\n// const lambda_etaobj = etaReduceLambdaGraphs(lambda_uuid, contextuallambda); // TBD: check if contextuallambda is invariant\n\n// if (lambda_etaobj.graphscope === \"dataflow\") { // a condition indicating the leaf graph author's intent to specify a default lambda\n// if (\"_default\" in lambda_leafjs_lut) { // error condition\n// throw `LEAF error: the logical construct built using the ${_refnode_logic.type} node `+\n// `(${_refnode}) called with args (${JSON.stringify(_refnode_logic.args)}) has multiple `+\n// 'defaults defined for its lambda. LEAF only allows single-default lambda constructs.';\n// }\n// }\n// else if (lambda_etaobj.graphscope === \"lambda\") {\n// // a lambda-scoped eta function is for symentic operations to be executed at runtime, not by the user but by the parser\n// const nextlambda_etaobj = lambda_etaobj.etafunc(); // TBD: should need to peel off lambda scoped eta objs by repeating this etafunc invocation till a dataflow-scoped etaobj is returned.\n// //nextlambda_etaobj.etafunc(); ... and so on\n// }\n\n// Object.entries(etaReducedLEAFjs()).map(([lambda_key, lambda_leafjs]) => {\n// if (lambda_key in lambda_leafjs_lut) { // error condition\n// if (lambda_key === '_default')\n// throw `LEAF error: the logical construct built using the ${_refnode_logic.type} node `+\n// `(${_refnode}) called with args (${JSON.stringify(_refnode_logic.args)}) has multiple `+\n// 'defaults defined for its lambda. LEAF only allows single-default lambda constructs.';\n// else\n// throw `LEAF error: the logical construct built using the ${_refnode_logic.type} node `+\n// `(${_refnode}) called with args (${JSON.stringify(_refnode_logic.args)}) has multiple `+\n// `lambda definitions for ${lambda_key}. LEAF only allows uniquely labelled lambda constructs.`;\n// }\n// lambda_leafjs_lut[lambda_key] = lambda_leafjs;\n// });\n//});\n\n//return undefined;//(nodelambda, contextuallambda);\n\n//const membernode_lambda = leafgraph.edges.lambda.sourcelut[membernode_uuid];\n\nconst raceConditionError = doBottle(\n \"error\",\n {\n type: \"critical\",\n message: \"LEAF core error: race condition detected in eta.js\",\n codebase: \"/src/ghostos/api/parser/eta.js\",\n },\n {},\n);\n\n// find the closest common ancestor (CCA) in two or more traces\n// using binary search\n//_dosyncflow = (nodeflowinterface, _upstream_out$objArr, inputnodes=undefined, consolidate_dataflow=false) => {\n// if (!consolidate_dataflow) {\n// return [_upstream_controlflow$obj, _upstream_dataflow$objArr];\n// }\n// else {\n// const consolidated_dataflow$obj = {\n// _stream: _upstream_controlflow$obj._stream.pipe(withLatestFrom(..._upstream_dataflow$objArr.map(_=>_._stream))).pipe(map(_data=>{\n// if (_upstream_dataflow$objArr.length > 1)\n// console.log(\"start debugging\");\n// const consolidated_data = _data.slice(1);\n// return consolidated_data.length > 1 ? consolidated_data : consolidated_data[0]; // remove array struct for single length data array\n// }))\n// }\n// return [_upstream_controlflow$obj, consolidated_dataflow$obj];\n// }\n//}\n\n/*\n\n combineLatest(_upstream_ctrlflow$Arr).pipe(\n map( (_ctrldataArr, _flow_idx) => { // array of ctrldata, due to combineLatest\n const consolidated_ctrldata = _ctrldataArr[0]; \n\n if (rt_context.nodeuuid === \"98d167d3-c1ed-4d4a-9ab9-25eaccd20a91\")\n console.log(\"doChronosSynchronize(), midi message to be registered in nodeflowinterface 98d167d3-c1ed-4d4a-9ab9-25eaccd20a91 \", _ctrldataArr);\n if (_nodeflowinterface.checksync()) { // if all incoming data synchronized\n _nodeflowinterface.initflowcache();\n return consolidated_ctrldata;\n }\n // otherwise \n return undefined;\n }),\n //delay(1), // delay control signal by 1ms, just in case data flow is delayed by a smidgen\n filter(_data=>_data!==undefined),\n withLatestFrom(..._flow$Arr),\n map(_combined_in => {\n\n if (rt_context.nodeuuid === \"98d167d3-c1ed-4d4a-9ab9-25eaccd20a91\")\n console.log(\"start debugging\")\n console.log(\"eta.js doChronosSynchronize _composite_in registered\", rt_context, _combined_in);\n //const _ctrl_out = _composite_in.pop(); // last item in the array is the ctrl\n if (isBottle(_combined_in[1]) && _combined_in[1]._bname === \"screenio\")\n console.log(\"start debugging\")\n let synced_nonempty_data = _combined_in.slice(1).flat(); //.filter(_in=>(!isBottle(_in)||!isEmptyBottle(_in))); \n if (synced_nonempty_data.length === 1)\n _chronos_data_out$.next(synced_nonempty_data[0]);// the remainder is the data\n else\n _chronos_data_out$.next(synced_nonempty_data); // flow data array including []\n //_chronos_data_out$.next(empty_databus_bottle);// the remainder is the data\n\n\n return _combined_in[0]; // relay ctrl signal\n })\n ):\n*/\nconst initTrafficSyncCache = (_cache, lanecount) => {\n [...Array(lanecount).keys()].map((_lane_idx) => {\n _cache[_lane_idx] = false;\n });\n\n return _cache;\n};\n\nconst isTrafficSynced = (_cache, lanecount) => {\n let is_synced = true;\n [...Array(lanecount).keys()].map((_lane_idx) => {\n is_synced &&= _cache[_lane_idx];\n });\n\n return is_synced;\n};\n\nconst doChronosSynchronize = (\n _stream$objArr,\n _gates = { time: -1, count: -1 },\n _nodeflowinterface = undefined,\n rt_context = {},\n) => {\n // _stream$objArr is guaranteed to have at least 1 element, so arbitrarily pick the first one as prime for consolidation\n // it is also assumed to have composite obj consisting of _stream and _control._stream\n\n //const _chronos_data_out$ = new BehaviorSubject({...raceConditionError, \"_label\": {context: \"doChronosSynchronize chronos_data_out\"}});\n const _chronos_data_out$ = new Subject();\n console.log(\"invoking doChronosSynchronize, \", rt_context);\n // first consolidate ctrl streams\n\n const _upstream_ctrlflow$Arr = _stream$objArr.map((_$obj) => _$obj._control._stream);\n const _flow$Arr = _stream$objArr.map((_out$obj) => _out$obj._stream);\n const _traffic_sync_cache = {};\n let _synced_data_cache = {};\n const _lanecount = _stream$objArr.length;\n initTrafficSyncCache(_traffic_sync_cache, _lanecount);\n const _chronos_ctrl_out$ =\n _nodeflowinterface && _nodeflowinterface.synchronized\n ? merge(\n ..._stream$objArr.map((_$obj, _lane_idx) => {\n return _$obj._control._stream.pipe(\n withLatestFrom(_$obj._stream),\n map((_combined_in) => {\n return [_lane_idx, _combined_in]; // relay combined signal\n }),\n );\n }),\n ).pipe(\n map((_next_in) => {\n _traffic_sync_cache[_next_in[0]] = true;\n _synced_data_cache[_next_in[0]] = _next_in[1];\n if (isTrafficSynced(_traffic_sync_cache, _lanecount)) {\n // initialize traffic cache for next round of traffic sync\n initTrafficSyncCache(_traffic_sync_cache, _lanecount);\n const synced_data = Object.values(_synced_data_cache);\n _synced_data_cache = {};\n return synced_data;\n } else return undefined;\n }),\n filter((_in) => _in !== undefined),\n map((_combined_inArr) => {\n console.log(\n \"eta.js doChronosSynchronize _composite_in registered\",\n rt_context.nodeuuid,\n _nodeflowinterface.checksync(),\n _combined_inArr,\n );\n if (rt_context.nodeuuid === \"806e0a4b-badf-42a0-85af-5ad306385c58\")\n console.log(\"start debugging\");\n if (_nodeflowinterface.checksync()) {\n // if all incoming data synchronized\n _nodeflowinterface.initflowcache();\n\n if (rt_context.nodeuuid === \"98d167d3-c1ed-4d4a-9ab9-25eaccd20a91\")\n console.log(\"start debugging\");\n //const _ctrl_out = _composite_in.pop(); // last item in the array is the ctrl\n let synced_nonempty_data = _combined_inArr.map((_combined_in) => {\n const _flattend_dat = _combined_in.slice(1).flat();\n if (_flattend_dat.length === 1) return _flattend_dat[0];\n else return _flattend_dat;\n }); //.filter(_in=>(!isBottle(_in)||!isEmptyBottle(_in)));\n _chronos_data_out$.next(synced_nonempty_data); // flow data array including []\n\n // consolidate ctrl signal\n const _consolidated_ctrl_signal = { ..._combined_inArr[0][0] }; // initialize consolidated ctrl signal with the first ctrl signal\n let _combined_traces = _combined_inArr.map((_combined_in) => {\n return _combined_in[0].traces; // collect traces from all lanes\n });\n if (_combined_traces.length === 1)\n // if only one trace, just return it\n _combined_traces = _combined_traces[0];\n\n // consolidate traces from all lanes into a single ctrl signal\n _consolidated_ctrl_signal.traces = [_combined_traces];\n return _consolidated_ctrl_signal; // relay consolidated ctrl signal\n }\n // otherwise\n return undefined;\n }),\n filter((_data) => _data !== undefined), // this blocks unsynchronized data flow\n )\n : _upstream_ctrlflow$Arr.length > 1\n ? merge(\n ..._upstream_ctrlflow$Arr.map((_ctrl$, _flow_idx) =>\n _ctrl$.pipe(\n // spark_dev_note 30/Jun/2023\n // The behavior of bufferTime here is ideal except that it returns an empty array (ie [])\n // even when there is nothing in the ctrldata flow\n // hence the need for filtering out [] here\n //bufferTime(1),\n //filter(_ctrldata=>(_ctrldata !== undefined &&_ctrldata.length > 0)),\n withLatestFrom(_flow$Arr[_flow_idx]),\n map((_combined_in) => {\n // array of ctrldata, due to bufferTime()\n //const consolidated_ctrldata = _ctrldataArr[0];\n //return consolidated_ctrldata;\n //const _rt_cache = {refnode, startnodes, endnodes, etaTree};\n\n const _ctrldata = _combined_in[0];\n if (_ctrldata.length > 1) {\n if (_ctrldata.includes(undefined)) console.log(\"start debugging\");\n\n //const cca_idx = binarySearchTraceCCA(_ctrldata);\n //if (cca_idx > -1) {\n // return {\n // ..._ctrldata[0],\n // \"traces\": [\n // ..._ctrldata[0].traces.slice(0,cca_idx+1),\n // _ctrldata.map(a_ctrl_in=>{\n // const _trailtrace = a_ctrl_in.traces.slice(cca_idx+1);\n // return _trailtrace.length === 1 ? _trailtrace[0] : _trailtrace;\n // })\n // ]\n // };\n //}\n }\n\n if (rt_context.nodeuuid === \"98d167d3-c1ed-4d4a-9ab9-25eaccd20a91\")\n console.log(\"start debugging\");\n console.log(\n \"eta.js doChronosSynchronize _composite_in registered\",\n rt_context,\n _combined_in,\n );\n //const _ctrl_out = _composite_in.pop(); // last item in the array is the ctrl\n if (isBottle(_combined_in[1]) && _combined_in[1]._bname === \"screenio\")\n console.log(\"start debugging\");\n //let synced_nonempty_data = _combined_in.slice(1).flat(); //.filter(_in=>(!isBottle(_in)||!isEmptyBottle(_in)));\n let synced_nonempty_data = _combined_in.slice(1); //.filter(_in=>(!isBottle(_in)||!isEmptyBottle(_in)));\n //if (synced_nonempty_data.length === 1)\n // _chronos_data_out$.next(synced_nonempty_data[0]);// the remainder is the data\n //else\n // _chronos_data_out$.next(synced_nonempty_data); // flow data array including []\n _chronos_data_out$.next(synced_nonempty_data); // flow data array including []\n //_chronos_data_out$.next(empty_databus_bottle);// the remainder is the data\n\n return _ctrldata;\n }),\n //delay(2), // delay control signal by 2ms, just in case data flow is delayed by a smidgen\n //filter(_data=>_data!==undefined)\n ),\n ),\n )\n : _upstream_ctrlflow$Arr[0].pipe(\n // spark_dev_note 30/Jun/2023\n // The behavior of bufferTime here is ideal except that it returns an empty array (ie [])\n // even when there is nothing in the ctrldata flow\n // hence the need for filtering out [] here\n //bufferTime(1),\n //filter(_ctrldata=>(_ctrldata !== undefined &&_ctrldata.length > 0)),\n withLatestFrom(_flow$Arr[0]),\n map((_combined_in) => {\n // array of ctrldata, due to bufferTime()\n //const consolidated_ctrldata = _ctrldataArr[0];\n //return consolidated_ctrldata;\n //const _rt_cache = {refnode, startnodes, endnodes, etaTree};\n\n const _ctrldata = _combined_in[0];\n\n console.log(\n \"eta.js doChronosSynchronize _composite_in registered\",\n rt_context,\n _combined_in,\n );\n //const _ctrl_out = _composite_in.pop(); // last item in the array is the ctrl\n if (isBottle(_combined_in[1]) && _combined_in[1]._bname === \"screenio\")\n console.log(\"start debugging\");\n //let synced_nonempty_data = _combined_in.slice(1).flat(); //.filter(_in=>(!isBottle(_in)||!isEmptyBottle(_in)));\n let synced_nonempty_data = _combined_in[1]; //.filter(_in=>(!isBottle(_in)||!isEmptyBottle(_in)));\n //if (synced_nonempty_data.length === 1)\n // _chronos_data_out$.next(synced_nonempty_data[0]);// the remainder is the data\n //else\n // _chronos_data_out$.next(synced_nonempty_data); // flow data array including []\n _chronos_data_out$.next(synced_nonempty_data); // flow data array including []\n //_chronos_data_out$.next(empty_databus_bottle);// the remainder is the data\n\n return _ctrldata;\n }),\n //delay(2), // delay control signal by 2ms, just in case data flow is delayed by a smidgen\n //filter(_data=>_data!==undefined)\n );\n\n //const _chronos_ctrl_out$ = _chronos_ctrl_in$.pipe(\n // switchMap(_ctrl_in => {\n // if (_ctrl_in === undefined)\n // console.error(\"_ctrl_in undefined, start debugging\");\n // _new_ctrl_data$.next(_ctrl_in); // relay ctrl_in signal\n // //return _ctrl_in;\n // return chronosDataflow(\n // _new_ctrl_data$,\n // _flow$Arr, // conceptually called _chronos_data_in$\n // true, // passthru ctrl signal in the 0th index of data array\n // CHRONOSTYPE_SYNC,\n // _gates,\n // TIMEOUTBEHAVIOR_BESTEFFORT,\n // {\n // ...rt_context, desc: \"consolidating data streams\",\n // at: \"doChronosSynchronize _chronos_passthru_data_out$ (src/ghostos/api/parser/eta.js)\"\n // }\n // );\n // }),\n // //switchMap(_ctrl_in=> {\n // // // put a trace here as this is a place where multiple upstream ctrl signals\n // // // consolidated (by chronosDataflow), returned as an array.\n\n // // _pipe_cache_ctrl_in = (globalThis.TRACEON ?\n // // {..._ctrl_in, traces: leafTraceFlow(_ctrl_in?.traces, {...rt_context, desc: \"doChronosSynchronize() consolidated ctrl came through with inputcount of \" + inputcount}, true)} :\n // // _ctrl_in\n // // );\n // // const _new_ctrl_data$ = of(_pipe_cache_ctrl_in);\n // //\n // // // second consolidate data streams\n // // const _flow$Arr = _stream$objArr.map(_out$obj=>_out$obj._stream);\n // // //const _chronos_data_in$ = chronosDataflow(of(_pipe_cache_ctrl_in), _flow$Arr, false, CHRONOSTYPE_SYNC, {time: -1, count: -1}, TIMEOUTBEHAVIOR_BESTEFFORT, {...rt_context, desc: \"consolidating ctrl streams\"});\n // // const _chronos_passthru_data_out$ = chronosDataflow(\n // // _new_ctrl_data$,\n // // _flow$Arr, // conceptually called _chronos_data_in$\n // // false, // passthru ctrl signal in the 0th index of data array\n // // CHRONOSTYPE_SYNC,\n // // _gates,\n // // TIMEOUTBEHAVIOR_BESTEFFORT,\n // // {\n // // ...rt_context, desc: \"consolidating data streams\",\n // // at: \"doChronosSynchronize _chronos_passthru_data_out$ (src/ghostos/api/parser/eta.js)\"\n // // }\n // // );\n\n // // console.log(\"eta.js doChronosSynchronize prior to resolving data stream\");\n // // return combineLatest([_new_ctrl_data$, _chronos_passthru_data_out$]);\n // // //return combineLatest([..._flow$Arr, _new_ctrl_data$]);\n // // //return combineLatest(_flow$Arr);\n // //}),\n // map(_composite_in=>{\n // console.log(\"eta.js doChronosSynchronize _composite_in registered\");\n // //const _ctrl_out = _composite_in.pop(); // last item in the array is the ctrl\n // if (isBottle(_composite_in[1]) && _composite_in[1]._bname === \"screenio\")\n // console.log(\"start debugging\")\n // let synced_nonempty_data = _composite_in.slice(1).flat().filter(_in=>(!isBottle(_in)||!isEmptyBottle(_in)));\n // if (synced_nonempty_data.length === 1)\n // _chronos_data_out$.next(synced_nonempty_data[0]);// the remainder is the data\n // else\n // _chronos_data_out$.next(synced_nonempty_data); // flow data array including []\n // //_chronos_data_out$.next(empty_databus_bottle);// the remainder is the data\n // //return _ctrl_out; // return ctrl\n // //return _pipe_cache_ctrl_in;\n // return _composite_in[0]; // ctrl data\n // }),\n // share()\n //);\n\n //const _chronos_ctrl_out$ = _chronos_passthru_data_out$.pipe(map(\n // _chronos_data_out => { // upon receiving a nudge from upstream on the data pipe\n // return _chronos_data_out[0]; // note: chronosDataflow option of passctrl is true for this to work\n // }\n //));\n //const _chronos_data_out$ = _chronos_passthru_data_out$.pipe(map(\n // _chronos_data_out => { // upon receiving a nudge from upstream on the data pipe\n // return _chronos_data_out.slice(1); // note: chronosDataflow option of passctrl is true for this to work\n // }\n //));\n\n // spark_dev_note: 26/July/2023\n // #rx #leaf #dataflow #ctrlflow #consolidation #flowweaving #weave #critical #parse\n // the way doChronosSynchronize is currently implemented mandates the following requirement\n // in using the data- and ctrl- streams returned from here downstream.\n // The order in which data- or ctrl- streams is subscribed to by a listener must be\n // ctrl-stream first and data-stream second. Having it the other way around would cause\n // funky looping signals getting repeated in the data-/ctrl- pipelines.\n // A special caution has to be taken to make sure that the subscription order is valid,\n // as the wrong subscription order is prone to cause obscure errors difficult to debug and causes breaks\n // in the data pipelines, even if unit test results may say otherwise.\n // This order must also be imposed when using rx stream operators such as combineLatest or merge,\n // at least in the context of using Javascript (hasn't been tested in Python)\n //\n // as of 27/July/2023 the above dev note no longer holds true.\n return {\n ctrl: _chronos_ctrl_out$,\n data: _chronos_data_out$.pipe(\n filter(\n (_data_out) =>\n JSON.stringify({ ..._data_out, _label: {} }) !== JSON.stringify(raceConditionError),\n ),\n ),\n //data: _chronos_ctrl_out$.pipe(\n // withLatestFrom(_chronos_data_out$),\n // map(_combined_out=>{\n // console.log(\"doChronosSynchronize _combined_out registered\", _combined_out);\n // return _combined_out[1]; // only return data\n // //return _chronos_data_out$.pipe( // #dataflow #flowweaving\n // // map(_data_out => {\n // // console.log(\"doChronosSynchronize _ctrl_out driven data registered\", _data_out);\n // // return _data_out;\n // // //_pipe_cache = _data_out;\n // // //return _pipe_cache;\n // // })\n // //);\n // //return firstValueFrom(_chronos_data_out$.pipe( // #dataflow #flowweaving\n // // map(_data_out => {\n // // console.log(\"doChronosSynchronize _ctrl_out driven data registered\", _data_out);\n // // return _data_out;\n // // //_pipe_cache = _data_out;\n // // //return _pipe_cache;\n // // })\n // //));\n // })\n //)\n };\n};\n\nconst doChronosAsynchronize = (\n _stream$objArr,\n _gates = { time: -1, count: -1 },\n rt_context = {},\n) => {\n // _stream$objArr is guaranteed to have at least 1 element, so arbitrarily pick the first one as prime for consolidation\n // it is also assumed to have composite obj consisting of _stream and _control._stream\n\n const inputcount = _stream$objArr.length;\n //const _chronos_data_out$ = new BehaviorSubject({...raceConditionError, \"_label\": {context: \"doChronosAsynchronize _chronos_data_out\"}});\n const _chronos_data_out$ = new Subject();\n //const _chronos_bridge_ctrl$ = new BehaviorSubject({...raceConditionError, \"_label\": {context: \"doChronosAsynchronize _chronos_bridge_ctrl\"}});\n //const _chronos_data_out$ = new Subject();\n // first consolidate ctrl streams\n const ctrl_out$Arr = _stream$objArr.map((_input$obj) => {\n let _pipe_cache_ctrl_in;\n return _input$obj._control._stream.pipe(\n map((_ctrl_in) => {\n _pipe_cache_ctrl_in = globalThis.TRACEON\n ? {\n ..._ctrl_in,\n traces: leafTraceFlow(\n _ctrl_in?.traces,\n {\n ...rt_context,\n desc:\n \"doChronosAsynchronize(), a ctrl signal came through out of inputcount of \" +\n inputcount,\n },\n true,\n ),\n }\n : _ctrl_in;\n return _pipe_cache_ctrl_in;\n }),\n ////const _new_ctrl_data$ = of(_pipe_cache_ctrl_in);\n //_chronos_bridge_ctrl$.next(_pipe_cache_ctrl_in);\n\n //// chronosDataflow is used on a single data stream for enforcing its gating conditions\n //const _chronos_passthru_data_out$ = chronosDataflow(\n // _chronos_bridge_ctrl$,\n // [_input$obj._stream], // a single data stream, conceptually called _chronos_data_in$\n // false, // passthru ctrl signal in the 0th index of data array\n // CHRONOSTYPE_SYNC,\n // _gates,\n // TIMEOUTBEHAVIOR_BESTEFFORT,\n // {\n // ...rt_context, desc: \"consolidating data streams\",\n // at: \"doChronosAsynchronize _chronos_passthru_data_out$ (src/ghostos/api/parser/eta.js)\"\n // }\n //);\n\n //return _chronos_passthru_data_out$;\n withLatestFrom(_input$obj._stream),\n map((_combined_out) => {\n _chronos_data_out$.next(\n _combined_out.length === 2 ? _combined_out[1] : _combined_out.slice(1),\n );\n return _combined_out[0];\n }),\n share(),\n );\n });\n\n const _chronos_ctrl_out$ = merge(...ctrl_out$Arr).pipe(\n map((_ctrl_out) => {\n // peep hole\n return _ctrl_out;\n }),\n );\n\n return {\n ctrl: _chronos_ctrl_out$,\n data: _chronos_data_out$.pipe(\n filter(\n (_data_out) =>\n JSON.stringify({ ..._data_out, _label: {} }) !== JSON.stringify(raceConditionError),\n ),\n ),\n };\n};\n\n//const doChronosSynchronize = (_stream$objArr, _gates={time: -1, count: -1}, rt_context={}) => {\n// // _stream$objArr is guaranteed to have at least 1 element, so arbitrarily pick the first one as prime for consolidation\n// // it is also assumed to have composite obj consisting of _stream and _control._stream\n//\n// const _chronos_data_out$ = new BehaviorSubject(raceConditionError);\n// //const _chronos_data_out$ = new Subject();\n// // first consolidate ctrl streams\n// const _prime_ctrl_handle$ = _stream$objArr[0]._control._stream;\n// const inputcount = _stream$objArr.length;\n// const _chronos_ctrl_in$ = (( inputcount === 1) ?\n// _prime_ctrl_handle$ :\n// chronosDataflow(\n// _prime_ctrl_handle$,\n// _stream$objArr.slice(1).map(_out$obj=>{ // any non-prime control streams\n// return _out$obj._control._stream;\n// }),\n// true,\n// CHRONOSTYPE_SYNC,\n// _gates,\n// TIMEOUTBEHAVIOR_BESTEFFORT,\n// {\n// ...rt_context, desc: \"consolidating ctrl streams\",\n// at: \"doChronosSynchronize _chronos_ctrl_in$ (src/ghostos/api/parser/eta.js)\"\n// }\n// )\n// );\n// const _chronos_ctrl_out$ = _chronos_ctrl_in$.pipe(\n// switchMap(_ctrl_in=> {\n// // put a trace here as this is a place where multiple upstream ctrl signals\n// // consolidated (by chronosDataflow), returned as an array.\n//\n//\n// const _new_ctrl_data$ = (globalThis.TRACEON ?\n// of({..._ctrl_in, traces: leafTraceFlow(_ctrl_in?.traces, {...rt_context, desc: \"doChronosSynchronize() consolidated ctrl came through with inputcount of \" + inputcount}, true)}) :\n// of(_ctrl_in)\n// );\n//\n// // second consolidate data streams\n// const _flow$Arr = _stream$objArr.map(_out$obj=>_out$obj._stream);\n// //const _chronos$ = chronosDataflow(_ctrl$, _flow$Arr, CHRONOSTYPE_SYNC, {}, TIMEOUTBEHAVIOR_BESTEFFORT, {...rt_context, desc: \"consolidating ctrl streams\"});\n// //const _chronos_passthru_data_out$ = chronosDataflow(\n// // _new_ctrl_data$,\n// // _flow$Arr, // conceptually called _chronos_data_in$\n// // true, // passthru ctrl signal in the 0th index of data array\n// // CHRONOSTYPE_SYNC,\n// // _gates,\n// // TIMEOUTBEHAVIOR_BESTEFFORT,\n// // {\n// // ...rt_context, desc: \"consolidating data streams\",\n// // at: \"doChronosSynchronize _chronos_passthru_data_out$ (src/ghostos/api/parser/eta.js)\"\n// // }\n// //);\n//\n// //return _chronos_passthru_data_out$;\n// return combineLatest([..._flow$Arr, _new_ctrl_data$]);\n// }),\n// map(_composite_in=>{\n// const _ctrl_out = _composite_in.pop(); // last item in the array is the ctrl\n// _chronos_data_out$.next(_composite_in);// the remainder is the data\n// return _ctrl_out; // return ctrl\n// }),\n// share()\n// );\n//\n//\n// //const _chronos_ctrl_out$ = _chronos_passthru_data_out$.pipe(map(\n// // _chronos_data_out => { // upon receiving a nudge from upstream on the data pipe\n// // return _chronos_data_out[0]; // note: chronosDataflow option of passctrl is true for this to work\n// // }\n// //));\n// //const _chronos_data_out$ = _chronos_passthru_data_out$.pipe(map(\n// // _chronos_data_out => { // upon receiving a nudge from upstream on the data pipe\n// // return _chronos_data_out.slice(1); // note: chronosDataflow option of passctrl is true for this to work\n// // }\n// //));\n//\n// return {ctrl: _chronos_ctrl_out$, data: _chronos_data_out$};\n//}\n\nconst weaveDataflowPlane = (\n refnode,\n startnodes,\n endnodes,\n eta_lut,\n etaTree,\n prime_ctrlflow$obj,\n prime_dataflow$obj,\n) => {\n const rt_context = {\n refnode,\n codebase: \"eta.js weaveDataflowPlane\",\n domain: etaTree.domain,\n appid: etaTree.appid,\n };\n // spark_dev_note: 19/June/2023\n // #databus\n //const empty_databus_bottle = enterDataBus(\"empty_data\", {_provenance: {refnode, codebase: \"eta.js weaveDataflowPlane\"}});\n const empty_databus_bottle = doBottle(\"empty_bottle\", \"empty_data\", {\n _provenance: { refnode, codebase: \"eta.js weaveDataflowPlane\" },\n });\n //const empty_data_accio_bottle = doBottle('accio', 'empty_data_accio');\n // TBD: memoize this function by building a dedicated memcached version of this function,\n // separate from etaTree.etaReduceLEAFNode\n //const defaultConfig = { combineOperator: \"merge\", isIndexed: false };\n //const node_data = JSON.parse(Buffer.from(node.data, 'base64').toString('utf-8')); // parse base64 into a json object\n\n //if (!refnode) {\n // console.log(\"start debugging\");\n //}\n //const combineStreamsFunc = combineInputStreams(defaultConfig);\n //const flattenArray = (x) => Array.isArray(x) ? x.flatMap(_x=>_x) : x;\n\n const flowinterface = {};\n // initialize flowinterface\n //curnodes.map(nodeuuid => {\n // const _inputnodes = etaTree.leafgraph.graph.dataflow.mapInEdges(nodeuuid, (edge)=>{return etaTree.leafgraph.graph.dataflow.source(edge)});\n // flowinterface[nodeuuid] = {\n // \"inputnodes\": _inputnodes,\n // \"data_in\": _inputnodes.map(_=>new ReplaySubject(1)),\n // \"data_out\": new ReplaySubject(1),\n // \"ctrl_in\": new ReplaySubject(1),\n // \"ctrl_out\": new ReplaySubject(1)\n // }\n //});\n\n const initializeFlowInterface = (\n _curnode,\n _upstream_ctrlflow$objArr,\n _upstream_dataflow$objArr,\n syncmultiple = true,\n ) => {\n // iterate through current set of nodes\n const nodeuuid = _curnode;\n const _inputnodes = etaTree.leafgraph.graph.dataflow.mapInEdges(nodeuuid, (edge) => {\n return etaTree.leafgraph.graph.dataflow.source(edge);\n });\n //const _upstream_output$Arr = initializeFlowInterface(_inputnodes);\n if (!(nodeuuid in flowinterface)) {\n flowinterface[nodeuuid] = {\n inputnodes: _inputnodes,\n synchronized: false,\n flowcache: {}, // used for enforcing synchronization of multiple flows\n initflowcache: () => {\n const connected_input_num = flowinterface[nodeuuid].inputnodes.length;\n flowinterface[nodeuuid].flowcache =\n connected_input_num > 1\n ? Object.keys(flowinterface[nodeuuid].inputnodes)?.reduce(\n (cacheLUT, cur_nodeinput_idx) => {\n cacheLUT[cur_nodeinput_idx] = false;\n return cacheLUT;\n },\n {},\n )\n : { 0: false };\n },\n recordflow: (_flow_idx) => {\n flowinterface[nodeuuid].flowcache[_flow_idx] = true;\n },\n checksync: () => {\n const issynced = Object.values(flowinterface[nodeuuid].flowcache).reduce(\n (pred, curbool) => pred && curbool,\n true,\n );\n return issynced;\n },\n data_in$Arr: _upstream_dataflow$objArr.map((_stream$obj, _flow_idx) =>\n _stream$obj._stream.pipe(\n filter(\n (_data_in) =>\n JSON.stringify({ ..._data_in, _label: {} }) !== JSON.stringify(raceConditionError),\n ),\n map((_data_in) => {\n if ([\"c10cbbbb-14d5-4270-b17a-1965afcabc98\"].includes(nodeuuid))\n console.log(\n \"_data_in fuse junction, start debugging\",\n nodeuuid,\n flowinterface[nodeuuid],\n );\n console.log(\"midi message to be registered in nodeflowinterface\", nodeuuid, _data_in);\n //flowinterface[nodeuuid].recordflow(_flow_idx); // record the incidence of flow from the inputnode id'ed by its idx in the array\n if (isBottle(_data_in) && _data_in._bname === \"error\")\n console.error(\"start debugging\", _data_in);\n if (\n [\n \"c822ae2e-1be8-46be-b2cb-21a43cef0555\",\n \"e9e6e44b-792b-46d0-b1d3-58ce2f46c45b\",\n ].includes(nodeuuid) &&\n isBottle(_data_in) &&\n _data_in._bname === \"_midi_in\"\n )\n console.log(\"midi_in signal registered in nodeflowinterface\", _data_in, nodeuuid);\n return _data_in;\n }),\n ),\n ),\n data_out: undefined,\n ctrl_in$Arr: _upstream_ctrlflow$objArr.map((_stream$obj, _flow_idx) =>\n _stream$obj._stream.pipe(\n filter(\n (_ctrl_in) =>\n JSON.stringify({ ..._ctrl_in, _label: {} }) !== JSON.stringify(raceConditionError),\n ),\n map((_ctrl_in) => {\n if (!_ctrl_in)\n console.log(\n \"ctrl message to be registered in nodeflowinterface\",\n nodeuuid,\n _ctrl_in,\n );\n if (flowinterface[nodeuuid][_flow_idx]) {\n console.error(\"ctrl signal arrived congested\", _ctrl_in);\n }\n if (\n [\n \"c822ae2e-1be8-46be-b2cb-21a43cef0555\",\n \"e9e6e44b-792b-46d0-b1d3-58ce2f46c45b\",\n ].includes(nodeuuid)\n )\n console.log(\"ctrl_in signal registered in nodeflowinterface\", _ctrl_in, nodeuuid);\n\n flowinterface[nodeuuid].recordflow(_flow_idx); // record the incidence of ctrl flow from the inputnode id'ed by its idx in the array\n return _ctrl_in;\n }),\n ),\n ),\n ctrl_out: undefined,\n get_composite_in$objArr: () => {\n return flowinterface[nodeuuid].data_in$Arr.map((_data_in$, _flow_idx) => {\n return {\n _stream: _data_in$,\n _control: { _stream: flowinterface[nodeuuid].ctrl_in$Arr[_flow_idx] },\n };\n });\n },\n };\n flowinterface[nodeuuid].initflowcache();\n if (_inputnodes.length > 1 && syncmultiple)\n // synchronized = true, for multiple flows by default\n flowinterface[nodeuuid].synchronized = true;\n }\n // weave upstream flows to current node's output flow\n //const dataflow_out$ = flowinterface[nodeuuid].data_in\n };\n\n // starting from endnodes, working backwards\n // recursively trace node connections, then weave the flow back in the forward direction.\n const _weaveDataflowPlane = (_curnodes, _datainputnodes = undefined) => {\n return _curnodes.map((nodeuuid) => {\n if (flowinterface[nodeuuid]?.data_out && flowinterface[nodeuuid]?.ctrl_out) {\n //const relay_sub_ctrl$ = new BehaviorSubject({...raceConditionError, _label: \"relay sub ctrl in _weaveDataflowPlane\"}) //create subject\n //const relay_sub_data$ = new BehaviorSubject({...raceConditionError, _label: \"relay sub data in _weaveDataflowPlane\"}) //create subject\n //flowinterface[nodeuuid].ctrl_out._stream.subscribe(relay_sub_ctrl$);\n //flowinterface[nodeuuid].data_out._stream.subscribe(relay_sub_data$);\n //return { // now return an output composite from the cache\n\n // _stream: relay_sub_data$.pipe(\n // filter(_data_out=>!(isBottle(_data_out)&&_data_out._bname===\"error\")),\n // map(_data_out=>{\n // return _data_out;\n // }),\n // share()\n // ),\n // _control: {\n // _stream: relay_sub_ctrl$.pipe(\n // filter(_data_out=>!(isBottle(_data_out)&&_data_out._bname===\"error\")),\n // map(_ctrl_out=>{\n // return _ctrl_out;\n // }),\n // share()\n // )\n // }\n //};\n return {\n _stream: flowinterface[nodeuuid].data_out._stream.pipe(\n map((_data_out) => {\n // peep hole\n return _data_out;\n }),\n ),\n _control: {\n _stream: flowinterface[nodeuuid].ctrl_out._stream.pipe(\n map((_ctrl_out) => {\n // peep hole\n return _ctrl_out;\n }),\n ),\n },\n };\n } else {\n // get the current node's eta reduced function\n const etafunc = eta_lut[nodeuuid];\n if (etafunc == undefined) {\n console.log(\"start debugging\");\n }\n if (!etafunc || !(\"_default\" in etafunc)) {\n throw (\n `LEAF error: weaveDataflowPlane(): the ${etafunc ? \"\" : \"undefined\"} eta reduced function with the refnode ${nodeuuid} ` +\n `has no _default defined.`\n );\n }\n // findout the set of inputnodes wrt the current node\n const datainputnodes = !_datainputnodes\n ? etaTree.leafgraph.graph.dataflow.mapInEdges(nodeuuid, (edge) => {\n return etaTree.leafgraph.graph.dataflow.source(edge);\n })\n : _datainputnodes;\n\n const _upstream_out$objArr =\n datainputnodes.length === 0 // recursively trace backwards from right to left, until the start node\n ? [\n {\n _stream: prime_dataflow$obj._stream,\n _control: { _stream: prime_ctrlflow$obj._stream },\n },\n ] // prime input flow for the starting node\n : _weaveDataflowPlane(datainputnodes).filter((x) => x); // weaved input flow (aka the output flow of previous node) for the rest\n\n if (datainputnodes.length > 1) console.log(\"start debugging\");\n // initialize incoming flow for the current node\n // initialization of outgoing flow can be done after executing the current node's eta function\n initializeFlowInterface(\n nodeuuid,\n _upstream_out$objArr.map((_) => {\n return { _stream: _._control._stream };\n }),\n _upstream_out$objArr.map((_) => {\n return { _stream: _._stream };\n }),\n );\n // initialize flow interface\n\n if (nodeuuid === \"98d167d3-c1ed-4d4a-9ab9-25eaccd20a91\") console.log(\"start debugging\");\n\n const nodedata = etaTree.leafgraph.graph.dataflow.getNodeAttributes(nodeuuid).leafnode.data; //.leaf.logic;\n\n //if (nodedata.leaf.logic.type === \"leafelement\") {\n // etaTree.leafio.elementioLUT[nodeuuid] = flowinterface[nodeuuid];\n //}\n // here a decision is made to go for either synchronous or asynchronous stream flows, depending on\n // whether the current node is the special leafnode \"Chronos\", of type leafchronosflow\n // doChronosAsynchronize(flowinterface[nodeuuid].get_composite_in$objArr(), {time:-1, count:-1}, {...rt_context, ...nodedata, at: \"eta.js _weaveDataflowPlane\", nodeuuid})\n const is_chronosflow = nodedata.leaf.logic.type === \"leafchronosflow\";\n const { ctrl: _chronos_ctrl_out$, data: _chronos_data_out$ } = is_chronosflow\n ? {\n ctrl: merge(\n ...flowinterface[nodeuuid]\n .get_composite_in$objArr()\n .map((_composite_in$obj) => _composite_in$obj._control._stream),\n ),\n data: undefined,\n }\n : doChronosSynchronize(\n flowinterface[nodeuuid].get_composite_in$objArr(),\n { time: -1, count: -1 },\n flowinterface[nodeuuid],\n { ...rt_context, ...nodedata, at: \"eta.js _weaveDataflowPlane\", nodeuuid },\n );\n //const [synced_upstream_controlflow$obj, synced_upstream_dataflow$objArr] = _synchronizeFlow(nodeuuid, _upstream_out$objArr);\n const synced_upstream_controlflow$obj = {\n _stream: _chronos_ctrl_out$.pipe(\n map((_ctrl_in) => {\n if (nodeuuid === \"fa175f13-a1fc-482c-9c2c-7f5a9d22a136\")\n console.log(\"start debugging\");\n return _ctrl_in;\n }),\n ),\n };\n const synced_upstream_dataflow$objArr = is_chronosflow\n ? //[{\n // _stream: merge(...flowinterface[nodeuuid].get_composite_in$objArr().map((_composite_in$obj, idx)=>{\n // return _composite_in$obj._stream.pipe(\n // map(_in => {\n // const _cache = idx;\n // return _in;\n // })\n // );\n // }))\n //}]\n\n flowinterface[nodeuuid].get_composite_in$objArr().map((_composite_in$obj, idx) => {\n return {\n _stream: _composite_in$obj._stream.pipe(\n map((_in) => {\n return _in;\n }),\n ),\n };\n })\n : [\n {\n _stream: _chronos_data_out$.pipe(\n map((_data_in) => {\n if (nodeuuid === \"fa175f13-a1fc-482c-9c2c-7f5a9d22a136\")\n console.log(\"start debugging\");\n return _data_in;\n }),\n ),\n },\n ];\n //const synced_upstream_controlflow$obj = {\n // _stream: combineLatest(_upstream_out$objArr.map(_$obj => {\n // return _$obj._control._stream\n // })).pipe(\n // map(_synced_upstream => {\n // // take care of plurality due to combineLatest\n // const plurality_checked_synced_upstream = (_synced_upstream.length === 1) ?\n // _synced_upstream[0] : _synced_upstream;\n // return plurality_checked_synced_upstream;\n // })\n // ),\n // _config: _upstream_out$objArr.map(_$obj => {\n // return _$obj._control._config\n // })\n //};\n //const synced_upstream_dataflow$objArr = _upstream_out$objArr.map(_$obj => {\n // return {_stream: _$obj._stream};\n //})\n\n // now weave the flow processing logic (aka the node's eta function) depending on the node characteristic\n if (datainputnodes.length > 0) {\n if (endnodes.includes(nodeuuid)) {\n // if it is amoung endnodes\n if (nodedata.leaf.logic.type === \"leafoutflowport\") {\n // permit output$ only if the node is of type leafoutflowport\n //if (!synced_upstream_controlflow$obj)\n // console.log(\"start debugging\");\n const etaoutput$obj = etafunc._default(\n synced_upstream_dataflow$objArr,\n synced_upstream_controlflow$obj,\n ); // return the subsequent output$ as returned by the etafunc against upstream_output$\n\n // now store this etaoutput$obj in flowinterface\n flowinterface[nodeuuid].data_out = { _stream: etaoutput$obj._stream };\n flowinterface[nodeuuid].ctrl_out = { _stream: etaoutput$obj._control._stream };\n\n return {\n // now return a composite from current _weaveDataflowPlane() to the next connected node\n _stream: etaoutput$obj._stream.pipe(\n map((x) => {\n //const _cache = {nodeuuid, datainputnodes};\n return x;\n }),\n ),\n _control: {\n _stream: etaoutput$obj._control._stream.pipe(\n map((x) => {\n //const _cache = {nodeuuid, datainputnodes};\n //const _cache = {flowinterface};\n return x;\n }),\n ),\n },\n };\n } else {\n // otherwise, just invoke the etafunc without returning output dataflow stream\n // initiate the stream flow\n const etaoutput$obj = etafunc._default(\n synced_upstream_dataflow$objArr,\n synced_upstream_controlflow$obj,\n );\n //const empty_dataflow$ = new BehaviorSubject({...raceConditionError, _label:{...empty_databus_bottle._label, context: \"flow error at an exitless end node, \"+nodeuuid}});\n //const empty_dataflow$ = new Subject();\n //const invocationflow$ = etaoutput$obj._control._stream.pipe(\n // switchMap(_ctrl_in => {\n // //const _cache = {nodeuuid, datainputnodes};\n // _nodecache = _ctrl_in;\n // return etaoutput$obj._stream;\n // }),\n // map(_ => {\n // empty_dataflow$.next({...empty_databus_bottle, _label: {...empty_databus_bottle._label, context: \"a nudge data bottle returned by an exitless end node, \"+nodeuuid}});\n // return _nodecache;\n // }),\n // //filter(_ => _)\n // //skipWhile(unitdata => true)\n //);\n //const invocationflow$ = etaoutput$obj._stream.pipe(\n // map(_data_in => {\n\n // })\n //);\n //const mutedflow$ = etaoutput$obj._control._stream.pipe(\n // skipWhile(_ => true) // make this stream a deadend without killing the flow.\n //);\n // now store this etaoutput$obj in flowinterface\n flowinterface[nodeuuid].data_out = {\n _stream: etaoutput$obj._stream.pipe(\n map((_data_out) => {\n return {\n ...empty_databus_bottle,\n _label: {\n ...empty_databus_bottle._label,\n context:\n \"a nudge data bottle returned by an exitless end node, \" + nodeuuid,\n },\n };\n }),\n ),\n }; //{_stream: mutedflow$};\n flowinterface[nodeuuid].ctrl_out = {\n _stream: etaoutput$obj._control._stream.pipe(\n map((_ctrl_out) => {\n return _ctrl_out;\n }),\n ),\n };\n\n return {\n _stream: flowinterface[nodeuuid].data_out._stream.pipe(\n map((x) => {\n //const _cache = {nodeuuid, datainputnodes};\n return x;\n }),\n ),\n //etaoutput$obj._stream.pipe(\n // map(x=> {\n // return undefined;\n // }),\n // filter(_ => _)\n //),\n _control: {\n _stream: flowinterface[nodeuuid].ctrl_out._stream.pipe(\n map((x) => {\n //const _cache = {nodeuuid, datainputnodes};\n return x;\n }),\n ),\n },\n };\n }\n } else {\n // if neither among startnodes nor among endnodes, aka the in-betweeners, just process input to output as defined by etafunc\n //if (nodeuuid.slice(0,4) === 'fdff')\n // console.log(nodeuuid);\n const etaoutput$obj = etafunc._default(\n synced_upstream_dataflow$objArr,\n synced_upstream_controlflow$obj,\n ); // return the subsequent output$ as returned by the etafunc against upstream_output$\n // now store this etaoutput$obj in flowinterface\n flowinterface[nodeuuid].data_out = { _stream: etaoutput$obj._stream };\n //if (!etaoutput$obj._control)\n // console.log(\"start debugging\");\n flowinterface[nodeuuid].ctrl_out = { _stream: etaoutput$obj._control._stream };\n\n return {\n _stream: etaoutput$obj._stream.pipe(\n map((x) => {\n //const _cache = {nodeuuid, datainputnodes};\n if (nodeuuid === \"0f35d8bc-36a6-4fe8-b185-f8ed5188b28f\")\n console.log(\"start debugging\");\n return x;\n }),\n ),\n _control: {\n _stream: etaoutput$obj._control._stream.pipe(\n map((x) => {\n //const _cache = {nodeuuid, datainputnodes};\n if (nodeuuid === \"0f35d8bc-36a6-4fe8-b185-f8ed5188b28f\")\n console.log(\"start debugging\");\n return x;\n }),\n ),\n },\n };\n }\n } else {\n // startnodes\n if (!startnodes.includes(nodeuuid)) {\n throw (\n `LEAF error: weaveDataflowPlane(): the eta reduced function with the refnode ${nodeuuid} ` +\n `has matched against incomplete startnodes reference.`\n );\n }\n\n const nodedata =\n etaTree.leafgraph.graph.dataflow.getNodeAttributes(nodeuuid).leafnode.data; //.leaf.logic;\n if (nodedata.leaf.logic.type === \"leafinflowport\") {\n // only allow dataflow input thru leafinflowport\n const etaoutput$obj = etafunc._default(\n synced_upstream_dataflow$objArr,\n synced_upstream_controlflow$obj,\n ); // return the subsequent output$ as returned by the etafunc against upstream_output$\n //const etaoutput$obj = etafunc._default(input$Arr, controlflow$obj);\n\n // now store this etaoutput$obj in flowinterface\n flowinterface[nodeuuid].data_out = { _stream: etaoutput$obj._stream };\n flowinterface[nodeuuid].ctrl_out = { _stream: etaoutput$obj._control._stream };\n\n return {\n // now return a composite from current _weaveDataflowPlane() to the next connected node\n _stream: etaoutput$obj._stream.pipe(\n map((x) => {\n //const _cache = {nodeuuid, datainputnodes};\n return x;\n }),\n ),\n _control: {\n _stream: etaoutput$obj._control._stream.pipe(\n map((x) => {\n //const _cache = {nodeuuid, datainputnodes};\n return x;\n }),\n ),\n },\n };\n } else {\n // otherwise just invoke the downstream func without the input dataflow stream.\n // spark_dev_note: TBD: currently if there is a disconnect in the input flow and continuing leaf logic\n // there is no way to pass on the execution flow other than relying on intermediary subject\n // actively working on the message passing. devise a way to make it work.\n //, controlflow$obj={_stream: of([])}\n //if (nodeuuid.slice(0,4) === 'fdff')\n // console.log(nodeuuid);\n //const controlflow$obj = combineDataflows(nodeuuid, input$Arr);\n //const empty_dataflow$ = new BehaviorSubject({...empty_databus_bottle, _label:{...empty_databus_bottle._label, context: \"input-less node dataflow init\"}});\n //const empty_dataflow$ = new Subject();\n\n //const driving_ctrlflow$obj = {\n // ...synced_upstream_controlflow$obj,\n // _stream: synced_upstream_controlflow$obj._stream.pipe(\n // //switchMap(_ctrl_in => {\n // // _pipe_cache_ctrl_in = _ctrl_in;\n // // return combineLatest(synced_upstream_dataflow$objArr.map(data$obj => data$obj._stream));\n // //}),\n // withLatestFrom(synced_upstream_dataflow$objArr[0]._stream), // Array guaranteed to be of length 1\n // //switchMap(_ctrl_in => {\n // // _pipe_cache_ctrl_in = _ctrl_in;\n // // return combineLatest([of(_ctrl_in), synced_upstream_dataflow$objArr[0]._stream]);\n // //}),\n // map(_combined_data_in => {\n // empty_dataflow$.next({...empty_databus_bottle, _label:{...empty_databus_bottle._label, context: \"input-less node dataflow nudging message as per ctrl signal\"}});\n // //return _pipe_cache_ctrl_in;\n // return _combined_data_in[0];\n // })\n // ),\n //};\n //const _etafunc_output$obj = etafunc._default([], _controlflow$obj);\n //const etaoutput$obj = etafunc._default([{_stream: empty_dataflow$}], driving_ctrlflow$obj); // return the subsequent output$ as returned by the etafunc against upstream_output$\n //const etaoutput$obj = etafunc._default([{_stream: empty_dataflow$}], synced_upstream_controlflow$obj); // return the subsequent output$ as returned by the etafunc against upstream_output$\n const redacted_dataflow$objArr = synced_upstream_dataflow$objArr.map((_$obj) => {\n return {\n _stream: _$obj._stream.pipe(\n map((_data_in) => {\n return {\n ...empty_databus_bottle,\n _label: {\n ...empty_databus_bottle._label,\n context: \"input-less node dataflow nudging message as per ctrl signal\",\n },\n };\n }),\n ),\n };\n });\n const etaoutput$obj = etafunc._default(\n redacted_dataflow$objArr,\n synced_upstream_controlflow$obj,\n ); // return the subsequent output$ as returned by the etafunc against upstream_output$\n // now store this etaoutput$obj in flowinterface\n flowinterface[nodeuuid].data_out = { _stream: etaoutput$obj._stream };\n flowinterface[nodeuuid].ctrl_out = { _stream: etaoutput$obj._control._stream };\n return {\n // now return a composite from current _weaveDataflowPlane() to the next connected node\n _stream: etaoutput$obj._stream.pipe(\n map((x) => {\n //const _cache = {nodeuuid, datainputnodes};\n return x;\n }),\n ),\n _control: {\n _stream: etaoutput$obj._control._stream.pipe(\n map((x) => {\n //const _cache = {nodeuuid, datainputnodes};\n return x;\n }),\n ),\n },\n };\n }\n }\n }\n });\n };\n\n //if (endnodes.includes(\"2c2ec9ac-a3cf-423c-bc6a-441a60adc608\", \"8afd9037-9e54-4d5e-a734-33ab9d93d11c\"))\n // console.log(\"start debugging\");\n const weavedplane_out$objArr = _weaveDataflowPlane(endnodes);\n\n // be aware of the two different return modes of _synchronizeFlow depending on the boolean argument\n // specifying the option for consolidating the data flow array\n\n //const {ctrl: _chronos_ctrl_out$, data: _chronos_data_out$ } = doChronosSynchronize(weavedplane_out$objArr, {time:2000, count:-1}, {...rt_context, at: \"eta.js weaveDataflowPlane\", endnodes});\n if (weavedplane_out$objArr.length === 0) console.log(\"start debugging\");\n const { ctrl: _chronos_ctrl_out$, data: _chronos_data_out$ } =\n weavedplane_out$objArr.length > 1\n ? doChronosAsynchronize(\n weavedplane_out$objArr,\n { time: -1, count: -1 },\n { ...rt_context, at: \"eta.js _weaveDataflowPlane\", endnodes },\n )\n : {\n ctrl: weavedplane_out$objArr[0]._control._stream,\n data: weavedplane_out$objArr[0]._stream,\n };\n //const [synced_upstream_controlflow$obj, synced_upstream_dataflow$objArr] = _synchronizeFlow(nodeuuid, _upstream_out$objArr);\n //const [synced_exit_controlflow$obj, synced_exit_dataflow$obj] = _synchronizeFlow(undefined, weavedplane_out$objArr, true);\n const synced_exit_controlflow$obj = { _stream: _chronos_ctrl_out$ };\n const synced_exit_dataflow$obj = { _stream: _chronos_data_out$ };\n //if (endnodes.includes('d3553691-cdc9-4cc1-815f-e629a94899cd')) {\n // // testing condition\n // prime_ctrlflow$obj._stream.next(doBottle(\"ctrl_accio\", \"\"));\n // prime_dataflow$obj._stream.next(doBottle(\"data_accio\", \"\"));\n // _chronos_data_out$.pipe(\n // map(_data_out=>{\n // console.log(_data_out);\n // return _data_out;\n // })\n // ).subscribe(\n // {\n // next: _out=>\n // {\n // return _out;\n // }\n // }\n // )\n // _chronos_ctrl_out$.pipe(\n // filter(_ctrl_in=>!(isBottle(_ctrl_in) && _ctrl_in._bname === \"error\")),\n // //withLatestFrom(_chronos_data_out$)\n // ).subscribe({\n // next: _data_out=> {\n // console.log(_data_out);\n // return _data_out;\n // }\n // })\n //}\n\n //const synced_exit_controlflow$obj = {\n // _stream: combineLatest(weavedplane_out$objArr.map(_$obj => {\n // return _$obj._control._stream\n // })).pipe(map(_exitctrl_in=> {\n // // take care of plurality due to combineLatest\n // const plurality_checked_synced_ctrl_in = (_exitctrl_in.length === 1) ?\n // _exitctrl_in[0] : _exitctrl_in;\n // return plurality_checked_synced_ctrl_in;\n // })),\n // _config: weavedplane_out$objArr.map(_$obj => {\n // return _$obj._control._config\n // })\n //};\n //const synced_exit_dataflow$obj = {\n // _stream: combineLatest(weavedplane_out$objArr.map(_$obj => {\n // return _$obj._stream;\n // })).pipe(map(_exitdata_in=> {\n // // take care of plurality due to combineLatest\n // const plurality_checked_synced_data_in = (_exitdata_in.length === 1) ?\n // _exitdata_in[0] : _exitdata_in;\n // return plurality_checked_synced_data_in;\n // }))\n //};\n\n // spark_dev_note: (22/Mar/2023)\n // #bugreport #mar2023bug2\n // the tagaction lambda function {ref: \"gnav element d1d248a8-0d96-486d-bd75-d3aa50181376\"}\n // desc: the tagaction is triggered upon a touch event on one of the tags in gnav background\n // the event seems to rerun the chain of LEAF parsing events in eta.js such as weaveDataflowPlane\n // on the lambda LEAF graph, and possibly cause seconds of delay in user experience.\n // severity: fix it with highest priority.\n // following is a potential solution. seperate out as much parsing processes as possible into the\n // \"preprocessing\" section of weaveDataflowPlane before returning a dataflow function, and minimize\n // the dataflow function into processing the dynamically passed dataflow stream instances that are\n // _input$Arr, _controlflow$obj\n\n return [{ ...synced_exit_dataflow$obj, _control: synced_exit_controlflow$obj }, flowinterface];\n};\n\nconst rxTimeoutStream = (prom, time, codebase, exception, metadata) => {\n let timer;\n return race([\n new Promise(\n (_resolve, _rej) =>\n (timer = setTimeout(\n () => {\n //rej();\n const errorbottle = doBottle(\n \"error\",\n { type: \"timeout\", message: exception, codebase },\n { ...metadata },\n );\n console.error(exception);\n console.error(errorbottle);\n //rej(errorbottle);\n _resolve(errorbottle);\n },\n time,\n exception,\n )),\n ),\n prom.pipe(\n map((_resolved) => {\n console.log(\"rxTimeoutStream resolved, clearing timer:\", metadata.traces);\n clearTimeout(timer);\n return _resolved;\n }),\n ),\n ]); //.finally(() => clearTimeout(timer));\n};\n// spark_dev_note: (23/Mar/2023)\n// #bugreport #mar2023bug3\n// it appears parseDataflowFunc once a dataflow func is weaved forms an internal never-ending loop\n// depending on how the dataflow construct is\n// the never-ending loop occurs for \"accio\" spell (refnode: \"61bf6fc4-e616-46f3-b0cf-ef1fb86d5ce0\")\n// under breezyforest/main\n// severity: high, fix it or perish\nconst parseDataflowFunc = (refnode, startnodes, endnodes, eta_lut, etaTree, metadata = {}) => {\n if (refnode === \"editor\" || refnode === undefined) console.log(\"start debugging\");\n //console.log(\"parseDataflowFunc called for:\", refnode, startnodes, endnodes);\n // initialize flowinterface\n const inline_refnode_LUT = {\n main: \"nav main dataflow\",\n leafgraph: \"leafgraph main dataflow\",\n editor: \"editor main dataflow\",\n };\n const node_context = {\n codebase: \"eta.js\",\n refnode,\n leafnode: Object.keys(inline_refnode_LUT).includes(refnode)\n ? inline_refnode_LUT[refnode]\n : etaTree.leafgraph.graph.dataflow.getNodeAttributes(refnode)?.leafnode.data,\n metadata,\n domain: etaTree.domain,\n appid: etaTree.appid,\n };\n\n return (input$Arr = [], controlflow$obj) => {\n const flowinterface = {\n data_in: new Subject(),\n ctrl_in: new Subject(),\n data_out: new Subject(),\n ctrl_out: new Subject(),\n };\n\n const prime_dataflow$obj = { _stream: flowinterface.data_in };\n const prime_ctrlflow$obj = { _stream: flowinterface.ctrl_in, _config: {} };\n\n if (\n [\"3980759d-7c59-4b9e-b799-87b5fd4cbcec\", \"62890d97-837a-463e-aac9-d7fca2293427\"].includes(\n refnode,\n )\n )\n console.log(\"start debugging\");\n if ([\"633e5b3e-72b7-4536-8e68-40d0b4902cba\"].includes(refnode)) console.log(\"start debugging\");\n const [_flowfunc_output$obj] = weaveDataflowPlane(\n refnode,\n startnodes,\n endnodes,\n eta_lut,\n etaTree,\n prime_ctrlflow$obj,\n prime_dataflow$obj,\n );\n\n // spark_dev_note: refactor parseDataflowFunc to use driveDataflowByCtrlflow() as follows\n const _etaflowfunc = (_input$objArr, _controlflow$obj) => {\n const _outflow_data$ = new Subject();\n\n let _pipe_cache_ctrl_in;\n const _outflow_ctrl$ = _controlflow$obj._stream.pipe(\n map((_ctrl_in) => {\n _pipe_cache_ctrl_in = _ctrl_in;\n return _ctrl_in;\n }),\n withLatestFrom(..._input$objArr.map((_input$obj) => _input$obj._stream)),\n //switchMap(_combined_in=> {\n // if (metadata.refnode === \"19ec3d65-7361-4a37-95be-c0f30ecedd3f\")\n // console.log(\"start debugging\");\n // console.log(\"eta.js parseDataflowFunc() _etaflowfunc data_in registered in the flow:\", _combined_in);\n // //const _rt_cache = {parent_traces: controlflow$obj._config?.traces, traces: _controlflow$obj._config?.traces}\n // //const _ctrl_in = _ctrl_in_data_in[0];\n // const _plurality_checked_data_in = _input$objArr.length === 1 ? _combined_in[1] : _combined_in.slice(1);\n // // now pass data and ctrl data into the eta function\n\n // // spark_dev_note: this is where any leaf lambda function eta-reduced by\n // // weaveDataflowPlane() can be invoked. The following code snipet is a real life\n // // example of how this mode of lambda function invocation can be accomplished piggybacking on\n // // the subscription chain of a existing flow using the rx.js stream operators.\n // // The subjects flowinterface.{data_in or ctrl_in} function as portals taking\n // // the data- and ctrl- inputflows.\n // // The _flowfunc_output$obj function as portals returning the data- and ctrl- outputflows\n // // as dictated by the relevant lambda function logic, reduced above by weaveDataflowPlane().\n // // The returning data- and ctrl- flow is statically accessable via the rx.js operator pair concatMap-map\n // // making the static data assigned to _combined_in in the map.\n // // in sum, _combined_in[1] is the output of the lambda function\n // // as per the provided input _data_in and _ctrl_in.\n // // when debugging, use information in node_context to trace\n // // the current stream to a particular LEAF code base.\n\n // //flowinterface.data_in.next(_plurality_checked_data_in);\n // //flowinterface.ctrl_in.next(_pipe_cache_ctrl_in);\n\n // //const nodeinfo = {\n // // refnode,\n // // leaflogic: !(refnode in inline_refnode_LUT) ? etaTree.leafgraph.graph.dataflow.getNodeAttributes(refnode).leafnode.data.leaf.logic : undefined,\n // // nodeaddr: etaTree.domain+'/'+etaTree.appid,\n // // ctrl_trace: _pipe_cache_ctrl_in.traces\n // //};\n // ////return combineLatest([_flowfunc_output$obj._control._stream, _flowfunc_output$obj._stream]);\n // //return _flowfunc_output$obj._control._stream.pipe(withLatestFrom(_flowfunc_output$obj._stream)).pipe(map(_inner_combined_in=>{\n // // return _inner_combined_in; // remove array struct for single length data array\n // //}));\n // const nodeinfo = {\n // refnode,\n // leaflogic: !(refnode in inline_refnode_LUT) ? etaTree.leafgraph.graph.dataflow.getNodeAttributes(refnode).leafnode.data.leaf.logic : undefined,\n // nodeaddr: etaTree.domain+'/'+etaTree.appid,\n // ctrl_trace: _pipe_cache_ctrl_in.traces\n // };\n // //return combineLatest([_flowfunc_output$obj._control._stream, _flowfunc_output$obj._stream]);\n // //const _flowfunc_combined_output$ = new Subject();\n // const _data_in_relay$ = new BehaviorSubject(_plurality_checked_data_in);\n // const _ctrl_in_relay$ = new BehaviorSubject(_pipe_cache_ctrl_in);\n\n // const _flowfunc_combined_output$ = _ctrl_in_relay$.pipe(\n // withLatestFrom(_data_in_relay$),\n // map(_inner_combined_in => {\n // flowinterface.data_in.next(_inner_combined_in[1]);\n // flowinterface.ctrl_in.next(_inner_combined_in[0]);\n\n // return _inner_combined_in;\n // }),\n // withLatestFrom(_flowfunc_output$obj._control._stream),\n // map(_inner_combined_ctrl_in => {\n // return _inner_combined_ctrl_in[1];\n // }),\n // withLatestFrom(_flowfunc_output$obj._stream),\n // map(_inner_combined_in => {\n // //_flowfunc_combined_output$.next(_inner_combined_in);\n // return _inner_combined_in;\n // })\n // );\n // //(_flowfunc_output$obj._control._stream.pipe(withLatestFrom(_flowfunc_output$obj._stream)).pipe(map(_inner_combined_in=>{\n // // return _inner_combined_in; // remove array struct for single length data array\n // //}))).subscribe(_inner_combined_in => {\n // // _flowfunc_combined_output$.next(_inner_combined_in);\n // //});\n\n // //flowinterface.data_in.next(_plurality_checked_data_in);\n // //flowinterface.ctrl_in.next(_pipe_cache_ctrl_in);\n\n // return _flowfunc_combined_output$;\n //}),\n switchMap((_combined_in) => {\n if (metadata.refnode === \"19ec3d65-7361-4a37-95be-c0f30ecedd3f\")\n console.log(\"start debugging\");\n console.log(\n \"eta.js parseDataflowFunc() _etaflowfunc data_in registered in the flow:\",\n _combined_in,\n );\n //const _rt_cache = {parent_traces: controlflow$obj._config?.traces, traces: _controlflow$obj._config?.traces}\n //const _ctrl_in = _ctrl_in_data_in[0];\n if (_input$objArr.length > 1) console.log(\"start debugging\");\n const _plurality_checked_data_in =\n _input$objArr.length === 1 ? _combined_in[1] : _combined_in.slice(1);\n // now pass data and ctrl data into the eta function\n\n // spark_dev_note: this is where any leaf lambda function eta-reduced by\n // weaveDataflowPlane() can be invoked. The following code snipet is a real life\n // example of how this mode of lambda function invocation can be accomplished piggybacking on\n // the subscription chain of a existing flow using the rx.js stream operators.\n // The subjects flowinterface.{data_in or ctrl_in} function as portals taking\n // the data- and ctrl- inputflows.\n // The _flowfunc_output$obj function as portals returning the data- and ctrl- outputflows\n // as dictated by the relevant lambda function logic, reduced above by weaveDataflowPlane().\n // The returning data- and ctrl- flow is statically accessable via the rx.js operator pair concatMap-map\n // making the static data assigned to _combined_in in the map.\n // in sum, _combined_in[1] is the output of the lambda function\n // as per the provided input _data_in and _ctrl_in.\n // when debugging, use information in node_context to trace\n // the current stream to a particular LEAF code base.\n\n //flowinterface.data_in.next(_plurality_checked_data_in);\n //flowinterface.ctrl_in.next(_pipe_cache_ctrl_in);\n\n //const nodeinfo = {\n // refnode,\n // leaflogic: !(refnode in inline_refnode_LUT) ? etaTree.leafgraph.graph.dataflow.getNodeAttributes(refnode).leafnode.data.leaf.logic : undefined,\n // nodeaddr: etaTree.domain+'/'+etaTree.appid,\n // ctrl_trace: _pipe_cache_ctrl_in.traces\n //};\n ////return combineLatest([_flowfunc_output$obj._control._stream, _flowfunc_output$obj._stream]);\n //return _flowfunc_output$obj._control._stream.pipe(withLatestFrom(_flowfunc_output$obj._stream)).pipe(map(_inner_combined_in=>{\n // return _inner_combined_in; // remove array struct for single length data array\n //}));\n //(_flowfunc_output$obj._control._stream.pipe(withLatestFrom(_flowfunc_output$obj._stream)).pipe(map(_inner_combined_in=>{\n // return _inner_combined_in; // remove array struct for single length data array\n //}))).subscribe(_inner_combined_in => {\n // //_flowfunc_combined_output$.next(_inner_combined_in);\n // console.log(_inner_combined_in);\n //});\n\n //const endof_leaflogic_probe = firstValueFrom(_flowfunc_output$obj._control._stream)\n //flowinterface.data_in.next(_plurality_checked_data_in);\n //flowinterface.ctrl_in.next(_pipe_cache_ctrl_in);\n //await endof_leaflogic_probe;\n //return _combined_in;\n if (\"e2fd7358-27e5-4819-88f8-d8f25c81c9a0\" === refnode) console.log(\"start debugging\");\n setTimeout(() => {\n flowinterface.data_in.next(_plurality_checked_data_in);\n flowinterface.ctrl_in.next(_pipe_cache_ctrl_in);\n }, 1);\n\n return _flowfunc_output$obj._control._stream;\n }),\n //withLatestFrom(_flowfunc_output$obj._control._stream),\n //map(_inner_combined_ctrl_in => {\n // return _inner_combined_ctrl_in[1];\n //}),\n withLatestFrom(_flowfunc_output$obj._stream),\n map((_combined_in) => {\n //const _rt_cache = {parent_traces: controlflow$obj._config?.traces, traces: _controlflow$obj._config?.traces}\n if (isBottle(_combined_in[1]) && _combined_in[1]._bname === \"error\") {\n console.log(\"start debugging\");\n console.error(\"rxTimeoutStream resolved with error: \", _combined_in);\n console.error(\n \"LEAR Error: an error occurred when rxTimeoutStream was invoked with ctrl_in from the etafunc invocation within parseDataflowFunc: \",\n _pipe_cache_ctrl_in,\n );\n } else {\n console.log(\"rxTimeoutStream resolved: \", _combined_in);\n const _next_data = _combined_in[1]; //.slice(1).filter(_data=>_data!==undefined);\n if (_next_data !== undefined)\n _outflow_data$.next(_next_data); // publish the next available post-processed data via the data flow subject channel\n else\n console.log(\n \"start debugging, this could potentially be the cause of the race condition error from leafmixflow.js\",\n );\n }\n return _combined_in[0]; // only pass the ctrl data in the flow;\n }),\n share(),\n );\n return {\n _stream: _outflow_data$.pipe(\n filter(\n (_data_out) =>\n JSON.stringify({ ..._data_out, _label: {} }) !== JSON.stringify(raceConditionError),\n ),\n ),\n _control: { ..._controlflow$obj, _stream: _outflow_ctrl$ },\n };\n };\n\n const output$obj = driveDataflowByCtrlflow(\n controlflow$obj,\n input$Arr,\n undefined,\n {\n ...node_context,\n metastep: \"invoking parseDataflowFunc()\",\n },\n {\n leaflogic: _etaflowfunc,\n datalogic: {\n //pre: preprocessfunc,\n //post: postprocessfunc\n },\n },\n );\n\n return output$obj;\n };\n};\n\n// memoize this function\nconst _etaReduceDataflowComponent_memcache_resolver = ({\n refnode,\n component_members,\n contextuallambda,\n etaTree,\n} = {}) => JSON.stringify([...component_members, ...contextuallambda, etaTree.sessionid]);\nconst etaReduceDataflowComponent = memoize(\n async ({ refnode, component_members, contextuallambda, etaTree } = {}) => {\n const startnodes = [];\n const endnodes = [];\n const eta_lut = {};\n //if (!refnode)\n // console.log(\"start debugging\");\n if ([\"7b1f\"].includes(refnode?.slice(0, 4))) console.log(\"start debugging\");\n if ([\"633e5b3e-72b7-4536-8e68-40d0b4902cba\"].includes(refnode)) console.log(\"start debugging\");\n //if (component_members.some((a_member) => (a_member).slice(0,4) === 'cafc'))\n // console.log('start debugging');\n //if (!Array.isArray(contextuallambda))\n // console.log(contextuallambda);\n const promiseArr = component_members.map((membernode_uuid) => {\n //if (!refnode)\n // console.log(\"start debugging\");\n //const membernode_lambda = etaTree.graphcomponents.components.lut.lambda[membernode_uuid];\n //etaTree.etaReduce.componentgraph(membernode_uuid)(membernode_uuid, membernode_lambda, contextuallambda);\n //const membernode_etaobj = etaReduceLEAFNode({nodeuuid: membernode_uuid, contextuallambda: contextuallambda, leafnode_scope: lambdacomponent_scope});\n if (\"5f7d8750-8ebd-46ee-9a21-029d4000f452\" === membernode_uuid)\n console.log(\"start debugging\");\n const etaReductionPromise = etaTree.etaReduceLEAFNode({\n nodeuuid: membernode_uuid,\n contextuallambda: contextuallambda,\n });\n etaReductionPromise.then((membernode_etafunc) => {\n //if (!refnode)\n // console.log(\"start debugging\");\n //if ([\"7b1f\"].includes(refnode?.slice(0,4)))\n // console.log(\"start debugging\");\n if (membernode_etafunc == undefined) {\n console.log(\"start debugging\");\n }\n eta_lut[membernode_uuid] = membernode_etafunc;\n //const lambda_compiled = etaReduceLambdaGraphs({nodelambda: membernode_lambda, contextuallambda: contextuallambda}); // recursion into lambda upstream\n\n //TBD: determine whether it'd be a better recursion pattern to use etaReduceLEAFNode here instead of etaReduceLambdaGraphs followed by node-level logic handling\n const isSourceNode = etaTree.leafgraph.edges.data.sources.has(membernode_uuid);\n const isTargetNode = etaTree.leafgraph.edges.data.targets.has(membernode_uuid);\n if (!isTargetNode) startnodes.push(membernode_uuid);\n if (!isSourceNode) endnodes.push(membernode_uuid);\n });\n return etaReductionPromise;\n });\n if ([\"7b1f\", \"main\"].includes(refnode?.slice(0, 4))) console.log(\"start debugging\");\n await Promise.all(promiseArr);\n //if (!refnode)\n // console.log(\"start debugging\");\n //if (endnodes.length > 0 && endnodes[0].slice(0,4) === 'cafc')\n // console.log('start debugging');\n if ([\"7b1f\", \"main\"].includes(refnode?.slice(0, 4))) console.log(\"start debugging\");\n if ([\"2ee89b44-16af-472f-97d4-47ae65f064c8\"].includes(refnode)) console.log(\"start debugging\");\n //const dataflow_eta = weaveDataflowPlane(refnode, [...endnodes], startnodes, endnodes, eta_lut, etaTree);\n const dataflow_eta = parseDataflowFunc(refnode, startnodes, endnodes, eta_lut, etaTree);\n\n //if ([\"7b1f\"].includes(refnode?.slice(0,4)))\n // console.log(\"start debugging\");\n return dataflow_eta;\n },\n _etaReduceDataflowComponent_memcache_resolver,\n);\n\nconst etaReduceLambdaGraphs = async ({\n refnode,\n nodelambda,\n contextuallambda,\n etaTree,\n addnodelut = false,\n metadata = {},\n} = {}) => {\n // @refnode is the uuid of a leaf node by which the two lambda graphs (nodelambda & contextuallambda) are referenced\n // @nodelambda is a list of uuids of entry nodes of the lambda component graphs connected to @refnode,\n // @contextuallambda is a list of uuids of entry nodes of the contextual lambda component graphs\n\n //if (refnode && refnode.slice(0,4) === \"9935\")\n // console.log(\"start debugging\");\n if ([\"7b1f\"].includes(refnode?.slice(0, 4))) console.log(\"start debugging\");\n if ([\"530acdcf-067d-4868-ba0c-b7a83e6edfdf\"].includes(refnode)) console.log(\"start debugging\");\n if ([\"633e5b3e-72b7-4536-8e68-40d0b4902cba\"].includes(refnode)) console.log(\"start debugging\");\n const lambdaLUT = addnodelut ? { _nodelut: {} } : {};\n //if (!nodelambda)\n // console.log(nodelambda);\n const missingLambdaNodes = nodelambda.filter(\n (lambdanodeuuid) => !(lambdanodeuuid in etaTree.graphcomponents.components.lut),\n );\n if (missingLambdaNodes.length > 0) {\n console.warn(\n \"LEAF Warning: etaReduceLambdaGraphs() skipping unknown lambda nodes\",\n missingLambdaNodes,\n );\n }\n const promiseArr = nodelambda\n .filter((lambdanodeuuid) => lambdanodeuuid in etaTree.graphcomponents.components.lut)\n .map((lambdanodeuuid) => {\n //if (! etaTree.graphcomponents.components.lut[lambdanodeuuid] )\n // console.log(lambdanodeuuid);\n //console.log(`etaReduceLambdaGraphs(): reading node scope for ${lambdanodeuuid}: ${etaTree.graphcomponents.components.lut[lambdanodeuuid]}`);\n\n const { idx: lambdacomponent_idx, scope: lambdacomponent_scope } =\n etaTree.graphcomponents.components.lut[lambdanodeuuid]; // look up the matching component idx\n const lambda_component =\n etaTree.graphcomponents.components.nodegroups.lambda[lambdacomponent_idx];\n\n if (lambdacomponent_scope === \"dataflow\") {\n const etaReductionPromise = etaReduceDataflowComponent({\n refnode,\n component_members: lambda_component,\n contextuallambda,\n etaTree,\n });\n\n if ([\"7b1f\"].includes(refnode?.slice(0, 4))) console.log(\"start debugging\");\n\n if ([\"633e5b3e-72b7-4536-8e68-40d0b4902cba\"].includes(refnode))\n console.log(\"start debugging\");\n\n etaReductionPromise.then((dataflow_eta) => {\n if ([\"7b1f\"].includes(refnode?.slice(0, 4))) console.log(\"start debugging\");\n if ([\"633e5b3e-72b7-4536-8e68-40d0b4902cba\"].includes(refnode))\n console.log(\"start debugging\");\n lambdaLUT._default = dataflow_eta; // dataflow scope eta func is assigned to _default by default\n if (addnodelut) lambdaLUT._nodelut[\"_default\"] = lambdanodeuuid;\n });\n return etaReductionPromise;\n //{\n // _default: {\n // etastage: EtaStageCompiledGraph,\n // graphscope: nodecomponent_scope, // leafnode_scope === graphcomponents.components.lut.lambda[leafnode.uuid].scope ?\n // etafunc: dataflow_eta,\n // }\n //};\n } else if (lambdacomponent_scope === \"lambda\") {\n if (lambda_component.length > 1) {\n // parsing error condition\n const refnode_logic =\n etaTree.leafgraph.graph.dataflow.getNodeAttributes(refnode).leafnode.data.leaf.logic;\n console.error(\n `LEAF error: the logical construct built using the ${refnode_logic.type} node ` +\n `(${refnode}) called with args (${JSON.stringify(refnode_logic.args)}) has an invalid ` +\n `lambda construct. LEAF does NOT allow lambda-scoped nodes to have dataflow edges.`,\n );\n } else {\n const etaReductionPromise = etaTree.etaReduceLEAFNode({\n nodeuuid: lambdanodeuuid,\n contextuallambda: contextuallambda,\n });\n etaReductionPromise\n .then((lambdanode_etaobj) => {\n if (!lambdanode_etaobj) console.log(\"start debugging\");\n Object.entries(lambdanode_etaobj).map(([lambda_key, etafunc]) => {\n if (lambda_key in lambdaLUT) {\n const refnode_logic =\n etaTree.leafgraph.graph.dataflow.getNodeAttributes(refnode).leafnode.data.leaf\n .logic;\n console.error(\n `LEAF error: the logical construct built using the ${refnode_logic.type} node ` +\n `(${refnode}) called with args (${JSON.stringify(refnode_logic.args)}) has multiple ` +\n `lambda definitions for ${lambda_key}. LEAF only allows uniquely labelled lambda constructs.`,\n );\n } else {\n lambdaLUT[lambda_key] = etafunc;\n if (addnodelut) lambdaLUT._nodelut[lambda_key] = lambdanodeuuid;\n }\n });\n })\n .catch((error) => {\n console.error(error);\n });\n return etaReductionPromise;\n }\n } else {\n // error condition\n const refnode_logic =\n etaTree.leafgraph.graph.dataflow.getNodeAttributes(refnode).leafnode.data.leaf.logic;\n const lambdanode_logic =\n etaTree.leafgraph.graph.dataflow.getNodeAttributes(lambdanodeuuid).leafnode.data.leaf\n .logic;\n console.error(\n `LEAF error: the lambda construct of type ${lambdanode_logic.type} connected to the ${refnode_logic.type} node (${refnode}) called with args (${JSON.stringify(refnode_logic.args)}) has an invalid scope: ${lambdacomponent_scope}.`,\n );\n }\n });\n //if ([\"7b1f\"].includes(refnode?.slice(0,4)))\n // console.log(\"start debugging\");\n await Promise.all(promiseArr);\n //if (refnode && refnode.slice(0,4) === \"c437\")\n // console.log(\"start debugging\");\n\n //if ([\"7b1f\"].includes(refnode?.slice(0,4)))\n // console.log(\"start debugging\");\n if ([\"e36a8dd4-c8df-4dfa-b60c-765eeb5b99fd\"].includes(refnode)) console.log(\"start debugging\");\n return lambdaLUT;\n};\n\n// runtimeEtaTree upon invoking runtimeEtaTree.etaReduce.rootgraph(_leafgraph, _graphcomponents)\n// would initiate the initialization of its rootgraph base by returning a function accepting the following arguments:\n// @_leafgraph: a data object as returned by reconstructLEAFGraph() in leaf.js\n// @_graphcomponents: a data object as returned by analyzeLEAFGraph() in leaf.js\n// Invoking the function with the said arguments accomplishes the initialization of the rootgraph stage in the eta reduction processe.\n// Subsequently, runtimeEtaTree can be eta-reduced further to the componentgraph stage by first calling runtimeEtaTree.etaReduce.componentgraph(nodeuuid).\n// This function call accepts the following arguments:\n// @nodeuuid: the uuid of a member node comprising a component graph of interest\n// Invoking the function with the said arguments accomplishes the initialization of the componentgraph stage in the eta reduction process,\n// in which the component graph level details such as component scope (ie. dataflow vs lambda) and member nodes' core logic are looked up and set.\n// The next and the last eta reduction step is to accomplish the nodegraph stage in the eta reduction process that would commit the contextual fate of\n// each and every leaf node involved in the graph's intended logic, by setting the following node-level details through invoking\n// runtimeEtaTree.etaReduce.nodegraph(nodeuuid, nodelambda, contextuallambda, reduceagain)\n// @nodeuuid: the uuid of a leaf node\n// @nodelambda: the lambda graph feeding into the leaf node\n// @contextuallambda: the lambda graph feeding into the leaf node's component graph\n// @reduceagain: a boolean to specify whether to perform eta reduction again even if runtimeEtaTree contains a previous eta reduction result.\nconst runtimeEtaTree = (\n _mode,\n _host_domain,\n _host_appid,\n _domain,\n _appid,\n _leafgraph,\n _graphcomponents,\n _leafio,\n _leaflakeio,\n _mnemosyne,\n _hostEtaTree = undefined,\n) => {\n const _runtimeEtaTree = {\n sessionid: _hostEtaTree ? _hostEtaTree.sessionid : undefined,\n appmode: _mode,\n hostdomain: _host_domain,\n hostappid: _host_appid,\n domain: _domain,\n appid: _appid,\n leafgraph: undefined, // the main runtime component graph exists under leafgraph.components.nodegroups.runtime\n graphcomponents: undefined,\n rootgraphstate: undefined,\n leafio: undefined, // directory of ghostos i/o\n leaflakeio: undefined,\n mnemosyne: undefined, // a reference to shared mutable (useRef) memory held by App.js\n hostEtaTree: _hostEtaTree, // undefined for root etaTree\n leafnodemethods: {}, // a lut of runtime configured leafnode specific methods, lut populated via _etaReduceLEAFNode\n lookupRuntimeLambdaLUT: async (\n graphdomain,\n graphappid,\n refnode,\n nodelambda,\n contextuallambda,\n isnodeonly = false,\n ) => {\n //const _refnode = nodeuuid; //refnodepath[1]; //leafgraph.graph.lambda.outNeighbors(contextuallambda[0])[0];\n if (nodelambda.length === 0) return {};\n\n // check if the address space of nodelambda resides in the current etaTree\n //if (nodelambda.some((lambdauuid) => lambdauuid in _runtimeEtaTree.graphcomponents.components.lut)) {\n // const reduced_lambda_obj = await etaReduceLambdaGraphs({refnode, nodelambda, contextuallambda, etaTree: _runtimeEtaTree});\n\n // console.log(reduced_lambda_obj);\n // return reduced_lambda_obj;\n //}\n //else {\n // // look them up in the etatreeforest\n // if (_runtimeEtaTree.hostEtaTree)\n // return await _runtimeEtaTree.hostEtaTree.lookupRuntimeLambdaLUT(refnode, nodelambda, contextuallambda);\n // else {\n // return undefined;\n // }\n //}\n //const cur_etatree = _runtimeEtaTree.mnemosyne._etaTreeForest.getEtaTree(graphdomain, graphappid);\n const cur_etatree = await etaTreeForest(_runtimeEtaTree).getEtaTree(graphdomain, graphappid);\n\n const reduced_lambda_obj = isnodeonly\n ? await _runtimeEtaTree.etaReduceLEAFNode({\n nodeuuid: refnode,\n contextuallambda: contextuallambda,\n })\n : await etaReduceLambdaGraphs({\n refnode,\n nodelambda,\n contextuallambda,\n etaTree: cur_etatree,\n });\n return reduced_lambda_obj;\n },\n lookupLEAFNodeMethods: async (nodeuuid, _refnodedata = undefined) => {\n // spark_dev_note: the second optional argument _refnodedata is for making a leaflisp node,\n // newly dropped into the canvas, to be capable of opening the vim editor, without\n // requiring the browser page to be refreshed.\n // a leaflisp node newly dropped into the canvas would not exist in _runtimeEtaTree yet\n // due to the lack of update, and texteditor.js, when looking up its etaTree to\n // lookup the hosting node's information, needs to pass in refnodedata in case\n // this pre-update boundary condition is met.\n if (nodeuuid in _runtimeEtaTree.leafnodemethods)\n return _runtimeEtaTree.leafnodemethods[nodeuuid];\n else {\n // check if the nodeuuid lives in the current etaTree\n const isNodeInEtaTree = _runtimeEtaTree.leafgraph.graph.dataflow.nodes().includes(nodeuuid);\n if (isNodeInEtaTree) {\n const refnodedata =\n _runtimeEtaTree.leafgraph.graph.dataflow.getNodeAttributes(nodeuuid).leafnode.data;\n\n const _refnode_logic = refnodedata.leaf.logic;\n const lambdactrl = {\n gos: {\n standardSpellbook: {},\n curatedSpellbook: {},\n stdlambdalut: {},\n curatedlambdalut: {},\n leafio: _runtimeEtaTree.leafio,\n etaTree: _runtimeEtaTree, // a bit redundant way of passing down information, refactor to be reduced to pass down only what's needed down the road\n },\n user: {\n spellbook: _runtimeEtaTree.graphcomponents.spelldefs,\n lambdalut: _runtimeEtaTree.leafgraph.edges.lambda.sourcelut,\n },\n };\n const leafNodeMethods = getLEAFNodeCoreLogic(_refnode_logic.type, \"methods\", lambdactrl);\n //if (_refnode_logic.type === 'leaflisp')\n // console.log('debugging');\n // register the retrieved methods in the eta tree's nodemethod LUT if not already done so.\n if (leafNodeMethods && !(nodeuuid in _runtimeEtaTree.leafnodemethods)) {\n const _nodelambda = _runtimeEtaTree.leafgraph.edges.lambda.sourcelut[nodeuuid]\n ? _runtimeEtaTree.leafgraph.edges.lambda.sourcelut[nodeuuid]\n : [];\n _runtimeEtaTree.leafnodemethods[nodeuuid] = await leafNodeMethods({\n refnode: nodeuuid,\n refnodedata,\n nodelambda: _nodelambda,\n contextuallambda: [],\n });\n return _runtimeEtaTree.leafnodemethods[nodeuuid];\n }\n return undefined;\n } else if (_runtimeEtaTree.hostEtaTree)\n return _runtimeEtaTree.hostEtaTree.lookupLEAFNodeMethods(nodeuuid, _refnodedata);\n else {\n if (_refnodedata !== undefined) {\n const refnodedata = _refnodedata; //_runtimeEtaTree.leafgraph.graph.dataflow.getNodeAttributes(nodeuuid).leafnode.data;\n const _refnode_logic = refnodedata.leaf.logic;\n const lambdactrl = {\n gos: {\n standardSpellbook: {},\n curatedSpellbook: {},\n stdlambdalut: {},\n curatedlambdalut: {},\n leafio: _runtimeEtaTree.leafio,\n etaTree: _runtimeEtaTree, // a bit redundant way of passing down information, refactor to be reduced to pass down only what's needed down the road\n },\n user: {\n spellbook: _runtimeEtaTree.graphcomponents.spelldefs,\n lambdalut: _runtimeEtaTree.leafgraph.edges.lambda.sourcelut,\n },\n };\n const leafNodeMethods = getLEAFNodeCoreLogic(\n _refnode_logic.type,\n \"methods\",\n lambdactrl,\n );\n //if (_refnode_logic.type === 'leaflisp')\n // console.log('debugging');\n // register the retrieved methods in the eta tree's nodemethod LUT if not already done so.\n if (leafNodeMethods && !(nodeuuid in _runtimeEtaTree.leafnodemethods)) {\n _runtimeEtaTree.leafnodemethods[nodeuuid] = await leafNodeMethods({\n refnode: nodeuuid,\n refnodedata,\n nodelambda: [],\n contextuallambda: [],\n });\n return _runtimeEtaTree.leafnodemethods[nodeuuid];\n }\n }\n return undefined;\n }\n }\n },\n etaReduceLEAFNode: async ({ nodeuuid, contextuallambda } = {}) => {\n return {\n _default: (inputArr$) => {\n console.error(\n \"LEAF Error: runtimeEtaTree.etaReduceLEAFNode() called without first calling initTree().\",\n );\n return undefined;\n },\n };\n }, // a memoized function that caches eta reduction of a node with its lambda contexts.\n loadElementJsEsmModule: async (moduleUrl) => {\n if (!(moduleUrl in _runtimeEtaTree.esmcache)) {\n const modulestr = await axios.get(moduleUrl);\n _runtimeEtaTree.esmcache[moduleUrl] = modulestr.data;\n }\n return _runtimeEtaTree.esmcache[moduleUrl];\n },\n initTree: (_leafgraph, _graphcomponents, _leafio, _leaflakeio, _mnemosyne) => {\n // a func to advance to the rootgraph stage if given the required arguments\n // initialize leafgraph and components for the tree\n _runtimeEtaTree.config = EtaTreeConfig;\n _runtimeEtaTree.leafgraph = _leafgraph;\n _runtimeEtaTree.graphcomponents = _graphcomponents;\n _runtimeEtaTree.rootgraphstate = \"initialized\";\n _runtimeEtaTree.leafio = _leafio;\n _runtimeEtaTree.leaflakeio = _leaflakeio;\n _runtimeEtaTree.mnemosyne = _mnemosyne;\n _runtimeEtaTree.esmcache = {};\n if (_runtimeEtaTree.hostEtaTree === undefined)\n // if current etatree is the root\n etaTreeForest(_runtimeEtaTree).initEtaTreeForest();\n const memcache_resolver = ({ nodeuuid, contextuallambda } = {}) =>\n JSON.stringify([nodeuuid, ...contextuallambda]);\n const _etaReduceLEAFNode = async ({ nodeuuid, contextuallambda } = {}) => {\n const _refnode = nodeuuid; //refnodepath[1]; //leafgraph.graph.lambda.outNeighbors(contextuallambda[0])[0];\n if (_refnode === \"undefined\" || _refnode === undefined) console.log(\"start debugging\");\n if ([\"633e5b3e-72b7-4536-8e68-40d0b4902cba\"].includes(_refnode))\n console.log(\"start debugging\");\n if ([\"0f35d8bc-36a6-4fe8-b185-f8ed5188b28f\"].includes(_refnode))\n console.log(\"start debugging\");\n if ([\"5f7d8750-8ebd-46ee-9a21-029d4000f452\"].includes(_refnode))\n console.log(\"start debugging\");\n const _refnode_logic = _refnode\n ? _runtimeEtaTree.leafgraph.graph.dataflow.getNodeAttributes(_refnode).leafnode.data.leaf\n .logic\n : undefined;\n\n //if ([\"7b1f\"].includes(nodeuuid.slice(0,4)))\n // console.log(\"start debugging\");\n const nodelambda =\n nodeuuid in _runtimeEtaTree.leafgraph.edges.lambda.sourcelut\n ? _runtimeEtaTree.leafgraph.edges.lambda.sourcelut[nodeuuid]\n : [];\n //const nodelambda = runtimeEtaTree.graphcomponents.components.lut.lambda[nodeuuid];\n // spark_dev_note: etaReduceLEAFNode is node-logic agnostic, meaning that variation in node-level logic\n // shall not affect how it functions. It is a fancy way of saying that etaReduceLEAFNode is a wrapper\n // having no interest in understanding what kind of meaning nodelambda or contextuallambda should bear\n // in the execution of node's core logic.\n // etaReduceLEAFNode's primary function is to forward to the node's core logic the incidental need for\n // eta reduction of the node (nodeuuid) given nodelambda and contextuallambda as the node's logical context.\n\n let runtime_scope = undefined;\n if (nodeuuid in _runtimeEtaTree.graphcomponents.components.lut) {\n const { scope: component_scope } =\n _runtimeEtaTree.graphcomponents.components.lut[nodeuuid]; // look up the matching component idx\n runtime_scope = component_scope;\n }\n //const {scope: runtime_scope} = runtimeEtaTree.graphcomponents.components.lut.lambda[nodeuuid]; // look up the matching component scope\n\n // spark_dev_note: the \"corelogic\" func (ie. out of _corelib) knows about leaf node specific requirements\n // for lambda context (ie. what to expect in nodelambda and contextuallambda)\n // deal with the initialization of the node core logic with the given logical contexts\n //lambdactrl: {gos: {standardSpellBook: {}, curatedSpellBook: {}, masterSubsDirectory: masterSubsDirectory}}\n //{\n // gos: {standardSpellbook: {}, curatedSpellbook: {}, masterSubsDirectory: masterSubsDirectory},\n // user: {spellbook:{}, config:node_data}\n //}\n const lambdactrl = {\n gos: {\n standardSpellbook: {},\n curatedSpellbook: {},\n stdlambdalut: {},\n curatedlambdalut: {},\n leafio: _runtimeEtaTree.leafio,\n etaTree: _runtimeEtaTree, // a bit redundant way of passing down information, refactor to be reduced to pass down only what's needed down the road\n },\n user: {\n spellbook: _runtimeEtaTree.graphcomponents.spelldefs,\n lambdalut: _runtimeEtaTree.leafgraph.edges.lambda.sourcelut,\n },\n };\n\n try {\n if (\n [\n \"b490aada-daab-4322-9001-14aea8bcb3d3\",\n \"97fa68cf-bcc5-44cf-8311-ffa6a1422ac3\",\n \"abb18b4d-b8af-4349-949d-fae21bc142ef\",\n \"e9536f42-df6d-4086-a643-5f3c0b02aac9\",\n \"b5a20ce3-3e67-42cd-9f60-3f70c6acd269\",\n \"59fe3646-b338-4ab0-a8a6-d6ad401be4fa\",\n ].includes(nodeuuid)\n )\n console.log(\"start debugging\");\n\n if (_refnode_logic.type == \"leafasyncflow\") console.log(\"start debugging\");\n const templateLEAFNodeLogic = getLEAFNodeCoreLogic(\n _refnode_logic.type,\n runtime_scope,\n lambdactrl,\n );\n if (nodeuuid === \"undefined\" || nodeuuid === undefined) console.log(\"start debugging\");\n const refnodedata =\n _runtimeEtaTree.leafgraph.graph.dataflow.getNodeAttributes(nodeuuid).leafnode.data;\n\n //if (nodeuuid.slice(0,4) === '270f')\n // console.log('debug time')\n //if (!Array.isArray(contextuallambda))\n // console.log(contextuallambda);\n // async eta reduce leaf node's core logic w.r.t. nodelambda and contextuallambda\n //console.log(\"initializing the LEAF node logic: \", _runtimeEtaTree.leafgraph.graph.dataflow.getNodeAttributes(nodeuuid)?.leafnode.data);\n const leafnodeEtaFunc = await templateLEAFNodeLogic({\n refnode: nodeuuid,\n refnodedata,\n nodelambda,\n contextuallambda,\n });\n\n if ([\"633e5b3e-72b7-4536-8e68-40d0b4902cba\"].includes(_refnode))\n console.log(\"start debugging\");\n if ([\"e36a8dd4-c8df-4dfa-b60c-765eeb5b99fd\"].includes(_refnode))\n console.log(\"start debugging\");\n //if (nodeuuid.slice(0,4) === '270f')\n // console.log('debug time')\n\n if (runtime_scope === \"dataflow\") {\n //const wrapped_leafnodeEtaFunc = wrapInputStreamArrayHandler({etafunc: leafnodeEtaFunc});\n return { _default: leafnodeEtaFunc };\n } else if (runtime_scope === \"lambda\") {\n return leafnodeEtaFunc; // lut with _default buried in the object struct or {}\n } else {\n console.error(\n `LEAF error: the logical construct built using the ${refnodedata.leaf.logic.type} node ` +\n `(${nodeuuid}) called with args (${JSON.stringify(refnodedata.leaf.logic.args)}) has an undefined scope ${runtime_scope}.`,\n );\n return undefined;\n }\n } catch (err) {\n //const _cache = {nodeuuid, runtime_scope};\n console.error(\n `LEAF Error: running _etaReduceLEAFNode() for node type ${_refnode_logic.type} with runtime scope of ${runtime_scope}:`,\n err,\n );\n }\n\n // debug\n //const input$ = from([1]);\n //const input2$ = from([3,5]);\n //const output$ = wrapped_leafnodeEtaFunc([input$, input2$]);\n //let outbuffer = [];\n //output$.pipe(map(x => {\n // console.log('hello');\n // console.log(x);\n //}));\n //output$.subscribe({\n // next: x => {\n // outbuffer = outbuffer.concat(x);\n // console.log('next: ', x);\n // },\n // error: (err) => { // error\n // console.log('Error: ' + err);\n // },\n // complete: () => {\n // console.log(outbuffer);\n // },\n //});\n // end of debug\n };\n _runtimeEtaTree.etaReduceLEAFNode = memoize(_etaReduceLEAFNode, memcache_resolver);\n return _runtimeEtaTree.etaReduceLEAFNode; // return memoized etaReduce func.\n },\n };\n _runtimeEtaTree.initTree(_leafgraph, _graphcomponents, _leafio, _leaflakeio, _mnemosyne);\n _runtimeEtaTree.sessionid = uuid4();\n return _runtimeEtaTree;\n};\n\n//// various combining mechanisms nicely explained in\n//// https://indepth.dev/posts/1114/learn-to-combine-rxjs-sequences-with-super-intuitive-interactive-diagrams\n//const combineOpDictionary = {\n// merge: {indexed: mergeWith, unindexed: merge},\n// combine: {indexed: zipWith, unindexed: zip},\n// combineLatest: {indexed: combineLatestWith, unindexed: combineLatest},\n// concat: {indexed: concatWith, unindexed: concat},\n// race: {indexed: raceWith, unindexed: race}\n//};\n////const postcombineOpDictionary = {\n//// merge: {indexed: null, unindexed: null},\n//// zip: {indexed: zipWith, unindexed: zip},\n//// zipLatest: {indexed: combineLatestWith, unindexed: combineLatest},\n//// concat: {indexed: concatWith, unindexed: concat},\n//// race: {indexed: raceWith, unindexed: race}\n////};\n//\n\n// curriedLEAFLibDualityInit() returns a js function eta-reduced to the logical context a leaf node, by preconfiguring it as per the arguments passed\n\nexport {\n etaReduceLambdaGraphs,\n etaReduceDataflowComponent,\n runtimeEtaTree,\n rxTimeoutStream,\n doChronosSynchronize,\n doChronosAsynchronize,\n};\n","import { mergeDataflows } from \"../../../utils/leafdataflow.js\";\nimport { etaReduceLambdaGraphs } from \"../../eta.js\";\n\n/*\n * _leaflambdagraph(): is a runtime function for the LEAFgraph node of logic type 'leaflambdagraph'\n * it is used in LEAFgraph for referring to what's connected to the other side of any incoming lambda edge(s)\n * (therefore the associated upstream lambda logic) of a LEAF graph.\n * @nodeconfig: to carry any compile time configs for the LEAFgraph node (configs TBD, 29 Jan 2022)\n */\n//const _leaflambdagraph = ({nodeconfig={}}={}, lambdaFunc, graphContextual=x=>x) => {}\nconst _leaflambdagraph = {\n dataflow:\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n // space for node type specific init prior to use\n //const _leafnode = contextuallambda; // derivative leafnode\n //const _leafnode_logic = contextuallambda.uuid;\n\n // get the refnode w.r.t. the current leaf node\n //const refnode = refnodepath[0]; //leafgraph.graph.lambda.outNeighbors(contextuallambda[0])[0];\n //const refnode_logic = runtimeEtaTree.leafgraph.graph.dataflow.getNodeAttributes(refnode).leafnode.data.leaf.logic;\n //const contextual_lut = refnode ? parseLambdaLUT(contextuallambda, _refnode, _refnode_logic) : undefined;\n // get the refnode w.r.t. the contextuallambda nodes\n // check for parsing error conditions\n if (!contextuallambda) {\n throw (\n `LEAF error: the logical construct built using the ${refnodedata.leaf.logic.type} node ` +\n `(${refnode}) called with args (${JSON.stringify(refnodedata.leaf.logic.args)}) has ` +\n `a leaflambdagraph node (${refnode}) referencing an undefined lambda construct.`\n );\n }\n //if (!('_default' in contextual_lut)) {\n // throw `LEAF error: the logical construct built using the ${_refnode_logic.type} node `+\n // `(${_refnode}) called with args (${JSON.stringify(_refnode_logic.args)}) has no `+\n // `default defined for its lambda, while being referenced by the leaflambdagraph node (${leafnode}). `+\n // 'A default lambda construct is required by the leaflambdagraph node.';\n //}\n\n // for the derivative nodelambda, look up the list of lambda leaf nodes connected to the defualt lambda entry node.\n // for the derivative contextuallambda, use current node's nodelambda.\n //const _nodelambda = leafgraph.edges.lambda.sourcelut[contextual_lut._default.uuid];\n\n //const thecorelogic = await etaReduceLambdaGraphs(contextual_lut._default.uuid, _nodelambda, _contextuallambda, leafgraph, graphcomponents);\n //const thecorelogic = await etaReduceLambdaGraphs({nodelambda: contextuallambda, contextuallambda: nodelambda});\n const reduced_lambda_obj = await etaReduceLambdaGraphs({\n refnode,\n nodelambda: contextuallambda,\n contextuallambda: nodelambda,\n etaTree: lambdactrl.gos.etaTree,\n });\n return (input$Arr, controlflow$obj) => {\n // use node_setup somehow\n //if (\"contextual\" in reduced_lambda_obj && '_default' in reduced_lambda_obj.contextual) {}\n if (\"_default\" in reduced_lambda_obj) {\n const output$obj = reduced_lambda_obj._default(input$Arr, controlflow$obj);\n return { ...output$obj, _control: controlflow$obj };\n } else {\n if (input$Arr.length > 0) {\n const merged$obj = mergeDataflows(input$Arr);\n return { ...merged$obj, _control: controlflow$obj };\n } else {\n return undefined; //{_stream: controlflow$obj._stream, _control: controlflow$obj};\n }\n }\n };\n },\n lambda:\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n // space for node type specific init prior to use\n // note the cross over in the roles of nodelambda and contextuallambda\n const reduced_lambda_obj = await etaReduceLambdaGraphs({\n refnode,\n nodelambda: contextuallambda,\n contextuallambda: nodelambda,\n etaTree: lambdactrl.gos.etaTree,\n });\n const lambda_lut = {};\n Object.entries(reduced_lambda_obj).map(([key, etafunc]) => {\n lambda_lut[key] = (input$Arr, controlflow$obj) => {\n // a dataflow-scoped func per key\n const output$obj = etafunc(input$Arr, controlflow$obj);\n return { ...output$obj, _control: controlflow$obj }; // with _control: controlflow$obj pass thru\n };\n });\n return lambda_lut;\n },\n};\n\nexport { _leaflambdagraph };\n","import { etaReduceLambdaGraphs } from \"../../eta.js\";\n//import { TIMEOUTBEHAVIOR_BESTEFFORT, combineDataflows, exitDataBus, mergeDataflows, chronosDataflow, CHRONOSTYPE_SYNC } from '../../../utils/leafdataflow';\nimport { map, share, switchMap, withLatestFrom, finalize } from \"rxjs/operators\";\nimport { Subject, merge } from \"rxjs\";\nimport { driveDataflowByCtrlflow, timeoutPromise } from \"../../leaf.js\";\nimport { isBottle } from \"../../predicates.js\";\n\nconst getEtaContext = (_lambda_obj) => {\n const keywordlist = Object.keys(_lambda_obj)\n .map((_key) => {\n if (Object.keys(_lambda_obj[_key]).length === 0) return _key;\n else return undefined;\n })\n .filter((_) => _);\n\n return keywordlist.sort();\n};\n\nconst _lookupSpellBook =\n (spell_lambda_obj) =>\n async ({ refnode, spellbook, spellname, lambdalut, contextuallambda, etaTree } = {}) => {\n // TBD\n if (refnode === \"530acdcf-067d-4868-ba0c-b7a83e6edfdf\") console.log(\"start debugging\");\n if (spellname in spellbook) {\n const spelldefnode = spellbook[spellname];\n\n if (spellname === \"accio\" && refnode.slice(0, 4) === \"39c9\")\n console.log(\"debug time\", spelldefnode, spellbook);\n //const spell_lambda_obj = await etaReduceLambdaGraphs({refnode: spelldefnode, nodelambda, contextuallambda, etaTree});\n //const _keywordlist = getEtaContext(spell_lambda_obj);\n //const _spelldef = await etaTree.etaReduceLEAFNode({nodeuuid: spelldefnode, contextuallambda: _keywordlist});\n const _spelldef = await etaTree.etaReduceLEAFNode({\n nodeuuid: spelldefnode,\n contextuallambda,\n });\n\n if (refnode === \"530acdcf-067d-4868-ba0c-b7a83e6edfdf\") console.log(\"start debugging\");\n if (spellname === \"accio\" && refnode.slice(0, 4) === \"39c9\") console.log(\"debug time\");\n\n return _spelldef;\n } else {\n console.log(\"lookupSpellBook couldn't find the spellname\", spellname);\n return undefined;\n }\n };\n\nconst GENERIC_SPELL_BNAME = \"cast-spell\";\nconst GENERIC_SPELLNAME = \"{*}\";\n\nconst _leafspell = {\n dataflow:\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n // space for node type specific init prior to use\n // do initialize the leafnode logic as per the currently connected leaf graph lambda context\n //const _lambdacontextlut = nodelambda;\n //const node_setup = lambdajsArgs.default({default: lambdalambdafunc});\n //\n //const leafnode_attributes = runtimeEtaTree.leafgraph.graph.dataflow.getNodeAttributes(refnode); // retreive the leaf node attributes\n //const leafnode_logic = leafnode_attributes.leafnode.data.leaf.logic;\n\n if ([\"0b62c9db-f889-4bf8-9773-c7b93ba9bd3f\"].includes(refnode))\n console.log(\"start debugging\");\n // look up the spell from spellbooks in the order of precedence\n const spellname = refnodedata.leaf.logic.args.spellname;\n const is_generic_spell = spellname === GENERIC_SPELLNAME;\n if (spellname === \"menudata\") console.log(\"start debugging\");\n let _contextuallambda = contextuallambda;\n\n let spell_lambda_obj = await etaReduceLambdaGraphs({\n refnode,\n nodelambda,\n contextuallambda: _contextuallambda,\n etaTree: lambdactrl.gos.etaTree,\n });\n const _keywordlist = getEtaContext(spell_lambda_obj);\n if (_keywordlist.length > 0) {\n _contextuallambda = _contextuallambda.concat(_keywordlist);\n spell_lambda_obj = await etaReduceLambdaGraphs({\n refnode,\n nodelambda,\n contextuallambda: _contextuallambda,\n etaTree: lambdactrl.gos.etaTree,\n });\n }\n\n if (\n [\n \"b490aada-daab-4322-9001-14aea8bcb3d3\",\n \"97fa68cf-bcc5-44cf-8311-ffa6a1422ac3\",\n \"abb18b4d-b8af-4349-949d-fae21bc142ef\",\n \"e9536f42-df6d-4086-a643-5f3c0b02aac9\",\n \"b5a20ce3-3e67-42cd-9f60-3f70c6acd269\",\n \"59fe3646-b338-4ab0-a8a6-d6ad401be4fa\",\n ].includes(refnode)\n )\n console.log(\"start debugging\");\n let spelldef = undefined;\n\n const lookupSpellBook = _lookupSpellBook(spell_lambda_obj);\n\n const parseSpellBook = async () => {\n console.log(\n \"parseSpellBook:\",\n spellname,\n refnode,\n lambdactrl.gos.etaTree.domain + \"/\" + lambdactrl.gos.etaTree.appid,\n \" parsing...\",\n );\n if (!spellname) {\n console.error(\n `LEAF Error: spellname undefined, refnode: ${refnode} at ${lambdactrl.gos.etaTree.domain}/${lambdactrl.gos.etaTree.appid}`,\n );\n return undefined;\n }\n if (globalThis?.DEBUG) {\n const tracecoord =\n lambdactrl.gos.etaTree.domain +\n \"/\" +\n lambdactrl.gos.etaTree.appid +\n \"/\" +\n spellname +\n \"/\" +\n refnode;\n if (globalThis.trace[tracecoord]) {\n globalThis.trace[tracecoord].push(\"parsing\");\n } else {\n globalThis.trace[tracecoord] = [\"parsing\"];\n }\n }\n\n if ([\"2293da4a-b517-4b0b-b396-cb030dc05900\"].includes(refnode))\n console.log(\"start debugging\");\n if ([\"e9536f42-df6d-4086-a643-5f3c0b02aac9\"].includes(refnode))\n console.log(\"start debugging\");\n if (refnode.slice(0, 4) === \"7435\") console.log(\"debug time\");\n if (refnode.slice(0, 4) === \"c96a\") console.log(\"start debugging\");\n let _spelldef = undefined;\n\n if (spellname === GENERIC_SPELLNAME) {\n // a {generic} spell can be used to invoke any spell defined in the current eta tree id'ed by the nodeuuid of the spelldef node\n // a {generic} spell awaits a bottle named \"castspell\" whose content contains the nodeuuid of the relevant spelldef node\n //const refnodedata = lambdactrl.gos.etaTree.leafgraph.graph.dataflow.getNodeAttributes(nodeuuid).leafnode.data;\n //_spelldef = lambdactrl.gos.etaTree.lookupLEAFNodeMethods()\n }\n if (!_spelldef) {\n //const spell_lambda_obj = await etaReduceLambdaGraphs({refnode, nodelambda, contextuallambda, etaTree: lambdactrl.gos.etaTree});\n if (spell_lambda_obj && spellname in spell_lambda_obj) {\n _spelldef = spell_lambda_obj[spellname];\n }\n // test\n //_spelldef = {_default: input$ => [337]};\n // end of test\n }\n if (!_spelldef) {\n const userspellbook = lambdactrl.user.spellbook;\n const userlambdalut = lambdactrl.user.lambdalut;\n _spelldef = await lookupSpellBook({\n refnode,\n spellbook: userspellbook,\n spellname,\n lambdalut: userlambdalut,\n contextuallambda: _contextuallambda,\n etaTree: lambdactrl.gos.etaTree,\n }); // TBD: look up the eta-reduced matching spell def by name\n }\n if (!_spelldef) {\n const stdlambdalut = lambdactrl.gos.stdlambdalut;\n const stdspellbook = lambdactrl.gos.standardSpellbook;\n _spelldef = await lookupSpellBook({\n refnode,\n spellbook: stdspellbook,\n spellname,\n lambdalut: stdlambdalut,\n contextuallambda: _contextuallambda,\n etaTree: lambdactrl.gos.etaTree,\n });\n }\n if (!_spelldef) {\n // if lookup failed so far, curatedspellbook is last in the order or precedence\n const curatedlambdalut = lambdactrl.gos.curatedlambdalut;\n const curatedspellbook = lambdactrl.gos.curatedSpellbook;\n _spelldef = await lookupSpellBook({\n refnode,\n spellbook: curatedspellbook,\n spellname,\n lambdalut: curatedlambdalut,\n contextuallambda: _contextuallambda,\n etaTree: lambdactrl.gos.etaTree,\n });\n }\n //if (refnode.slice(0,4) === '4947' || refnode.slice(0,4) === '39c9') {\n // console.log('debug time')\n // executeLEAFLogicInSync(_spelldef._default, [], {})._stream.subscribe(\n // x => {\n // console.log(x);\n // }\n // );\n //}\n if ([\"e9536f42-df6d-4086-a643-5f3c0b02aac9\"].includes(refnode))\n console.log(\"start debugging\");\n console.log(\n \"parseSpellBook:\",\n spellname,\n refnode,\n lambdactrl.gos.etaTree.domain + \"/\" + lambdactrl.gos.etaTree.appid,\n \" parsed\",\n _spelldef,\n );\n if (globalThis?.DEBUG) {\n const tracecoord =\n lambdactrl.gos.etaTree.domain +\n \"/\" +\n lambdactrl.gos.etaTree.appid +\n \"/\" +\n spellname +\n \"/\" +\n refnode;\n if (globalThis.trace[tracecoord]) {\n globalThis.trace[tracecoord].push(\"parsed\");\n } else {\n globalThis.trace[tracecoord] = [\"parsed\"];\n }\n }\n if (spellname === \"initialize\") console.log(\"start debugging\");\n\n spelldef = _spelldef;\n if (!(spelldef && \"_default\" in spelldef)) {\n console.error(\n `LEAF Error: _leafspell() called with spellname ${spellname} is missing a default dataflow component graph definition.`,\n );\n // spark_dev_note: 12/July/2023\n // #errorhandling #leaf #debugging #testing\n // from LEAF users' perspective, it is wise to report this error to the users' display,\n // as the cause of the error is likely to do with logical errors in user LEAF codes.\n // One example causing this error includes, but is not limited to,\n // a case where a spell is imported by using a leafgraph node and a spelldef node and\n // there's a typo in the spellbook name.\n return undefined;\n //return (_input$objArr, _controlflow$obj) => { // return merged dataflow as a default _default\n // //const _cache = {...reduced_lambda_obj};\n // console.log(\"start debugging\");\n // return {...mergeDataflows(_input$objArr), _control: _controlflow$obj};\n //};\n }\n\n //return _spelldef._default; //{inputdata, spelldef: reduced_spelldef};\n return _spelldef; //{inputdata, spelldef: reduced_spelldef};\n };\n\n const node_context = {\n codebase: \"leafspell.js\",\n refnode,\n leafnode:\n lambdactrl.gos.etaTree?.leafgraph?.graph.dataflow.getNodeAttributes(refnode).leafnode\n .data,\n };\n\n let spellprom = is_generic_spell\n ? undefined\n : timeoutPromise(\n parseSpellBook(),\n 30000,\n \"leafspell.js\",\n \"LEAF Error: resolving transformation.leaflogic timed out\",\n node_context,\n );\n\n //const _leaflogic2 = await spellprom;\n // spark_dev_note: 3/Nov/2023\n // temporarily disabled time out for testing purposes. enable it back for production use.\n //const _leaflogic = await timeoutPromise(spelldefProm, 100000, \"leafspell.js\", \"LEAF Error: resolving transformation.leaflogic timed out\", node_context);\n //const _leaflogic = await spelldefProm;\n //parseSpellBook();\n\n //if (typeof _leaflogic !== 'function')\n // console.log(\"start debugging\");\n\n return (input$objArr, controlflow$obj) => {\n // return a dataflow-scoped func\n\n //if (!(spelldef && '_default' in spelldef)) {\n // console.error(`LEAF Error: _leafspell() called with spellname ${spellname} is missing a default dataflow component graph definition.`);\n\n // const defaultout$obj = driveDataflowByCtrlflow(\n // controlflow$obj, input$objArr, undefined,\n // {...node_context, metastep: \"relaying input data as is due to error condition\"}\n // );\n // return defaultout$obj;\n //}\n const preprocessfunc = (_data_in) => {\n //const _data_out = exitDataBus({_bus: _data_in});\n if (refnode === \"b5a20ce3-3e67-42cd-9f60-3f70c6acd269\") console.log(\"start debugging\");\n const _data_out = _data_in;\n return _data_out;\n };\n\n const postprocessfunc = (_data_in) => {\n if (refnode === \"b5a20ce3-3e67-42cd-9f60-3f70c6acd269\") console.log(\"start debugging\");\n const _data_out = _data_in;\n return _data_out;\n };\n\n const _executeSpell = async (_spellprom, _ctrl$, _data$) => {\n const _leaflogic = await _spellprom;\n\n if (_leaflogic === undefined) {\n console.error(\"LEAF Error: dataflow triggered for an undefined spell\");\n return undefined;\n }\n\n if (_leaflogic !== undefined && typeof _leaflogic?._default !== \"function\") {\n console.error(\"spell def could not be resolved: \", _leaflogic);\n return undefined;\n }\n\n const output$obj = driveDataflowByCtrlflow(\n {\n ...controlflow$obj,\n _stream: _ctrl$.pipe(\n map((_ctrl_in) => {\n if (_ctrl_in.sid === undefined) {\n _ctrl_in.sid = [refnode];\n } else if (!_ctrl_in.sid.includes(refnode)) {\n // avoid duplicates, which happens with multiple input streams\n _ctrl_in.sid.push(refnode);\n }\n return _ctrl_in;\n }),\n ),\n },\n [{ _stream: _data$ }],\n undefined,\n { ...node_context, metastep: \"executing parsed spell in the flow: \" + spellname },\n {\n leaflogic: _leaflogic._default, //spelldefProm, //spelldef._default,\n datalogic: {\n pre: preprocessfunc,\n post: postprocessfunc,\n },\n },\n );\n\n return output$obj._control._stream.pipe(\n withLatestFrom(output$obj._stream),\n map((_combined_in) => {\n _combined_in[0].sid?.pop();\n return _combined_in;\n }),\n finalize(() => {\n console.log(\"spell stream _executeSpell: finalizing stream 4 spell, \", spellname);\n //if (spell_subscription !== undefined) {\n // console.log(\"spell stream _executeSpell: unsubscribing spell, \", spellname);\n // spell_subscription.unsubscribe();\n // spell_subscription = undefined;\n //}\n //if (op_subs !== undefined) {\n // op_subs.unsubscribe();\n // op_subs = undefined;\n //}\n }),\n );\n };\n\n const _nodeflowfunc = (_input$objArr, _controlflow$obj) => {\n console.log(\"start debugging\");\n const _outflow_data$ = new Subject();\n const relay_ctrl$ = new Subject(); //_combined_in[0]);\n const relay_data$ = new Subject(); //_combined_in[1]);\n const spell_output_relay$ = new Subject();\n const outer_relay_ctrl$ = new Subject(); //BehaviorSubject(_combined_in[1][0]);\n let spell_subscription = undefined;\n\n const _outflow_ctrl$ = _controlflow$obj._stream.pipe(\n //switchMap(_ctrl_in=> {\n // //flowinterface.ctrl_in.next(_ctrl_in);\n // return combineLatest([of(_ctrl_in), ..._input$objArr.map(_=>_._stream)]);\n //}),\n withLatestFrom(..._input$objArr.map((_) => _._stream)),\n switchMap((_combined_in) => {\n //return combineLatest(spelldefProm, relay_ctrl$, relay_data$);\n //const spellop = firstValueFrom(spell_output$).then(_spell_output => {\n // //spell_output_relay$.next(_spell_output);\n // console.log(\"spell returned\", _spell_output);\n // return _spell_output;\n //});\n\n if (spell_subscription === undefined && spellprom) {\n console.log(\"spell stream: subscribing spell, \", spellname);\n if (!spellname)\n console.error(\"undefined spellname: \", JSON.stringify(node_context));\n _executeSpell(spellprom, relay_ctrl$, relay_data$).then((spell_output$) => {\n if (spell_output$ === undefined) {\n relay_data$.next(_combined_in[1]);\n //relay_data$.next(undefined);\n relay_ctrl$.next(_combined_in[0]);\n } else {\n spell_subscription = spell_output$.subscribe({\n next: (_next_out) => {\n console.log(`leafspell ${spellname} output: ${_next_out}`);\n spell_output_relay$.next(_next_out);\n },\n error: (emsg) => {\n console.error(\n `leafspell ${spellname} had an error in the subscription stream: ${emsg}`,\n );\n },\n complete: () => {\n console.log(`leafspell ${spellname} subscription completed.`);\n },\n });\n setTimeout(() => {\n relay_data$.next(_combined_in[1]);\n relay_ctrl$.next(_combined_in[0]);\n }, 1);\n }\n });\n } else {\n relay_data$.next(_combined_in[1]);\n relay_ctrl$.next(_combined_in[0]);\n }\n //const spell_output = await spellop;\n //return _combined_in;\n //return new BehaviorSubject(spell_output);\n //return spell_output;\n return spell_output_relay$;\n }),\n //switchMap(_relay$ => {\n // return _relay$;\n //}),\n withLatestFrom(spell_output_relay$),\n map((_combined_in) => {\n _outflow_data$.next(_combined_in[1][1]);\n\n outer_relay_ctrl$.next(_combined_in[1][0]);\n return _combined_in[1]; // pass thru the data in the flow;\n }),\n withLatestFrom(outer_relay_ctrl$),\n map((_out_sig) => {\n return _out_sig[1];\n }),\n finalize(() => {\n console.log(\"spell stream: finalizing spell, \", spellname);\n if (spell_subscription !== undefined) {\n console.log(\"spell stream: unsubscribing spell, \", spellname);\n spell_subscription.unsubscribe();\n spell_subscription = undefined;\n }\n //if (op_subs !== undefined) {\n // op_subs.unsubscribe();\n // op_subs = undefined;\n //}\n }),\n share(),\n );\n return {\n _stream: _outflow_data$,\n _control: { ..._controlflow$obj, _stream: _outflow_ctrl$ },\n };\n };\n\n // test using /editor/spark/genericspell\n const _genericspell_flowfunc = (_input$objArr, _controlflow$obj) => {\n const _outflow_data$ = new Subject();\n const relay_ctrl$ = new Subject(); //_combined_in[0]);\n const relay_data$ = new Subject(); //_combined_in[1]);\n const spell_output_relay$ = new Subject();\n const outer_relay_ctrl$ = new Subject(); //BehaviorSubject(_combined_in[1][0]);\n let spell_subscription = undefined;\n\n const inflow_data$ =\n _input$objArr.length > 1\n ? merge(..._input$objArr.map((_in$obj) => _in$obj._stream))\n : _input$objArr[0]._stream;\n\n const _outflow_ctrl$ = _controlflow$obj._stream.pipe(\n withLatestFrom(inflow_data$),\n switchMap((_combined_in) => {\n const _data_in = _combined_in[1];\n\n if (isBottle(_data_in) && _data_in._bname === GENERIC_SPELL_BNAME) {\n const spell_nodeuuid = _data_in._content.nodeuuid;\n const spell_input = _data_in._content.input;\n //const _node_attributes = lambdactrl.gos.etaTree.leafgraph.graph.dataflow.getNodeAttributes(spell_nodeuuid);\n const spell_etaTree = lambdactrl.gos.etaTree.leafgraph.graph.dataflow\n .nodes()\n .includes(spell_nodeuuid)\n ? lambdactrl.gos.etaTree\n : lambdactrl.gos.etaTree.hostEtaTree;\n const refnodedata =\n spell_etaTree?.leafgraph.graph.dataflow.getNodeAttributes(spell_nodeuuid).leafnode\n .data;\n\n console.log(\"spellleaf generic: \", refnodedata);\n\n // spark_dev_note: 12/Mar/2024\n // implement sanity check here to see if the spell being cast is defined by a spelldef node.\n // this can be done by checking if refnodedata indicates that the node of interest is of type spelldef.\n // lookupLEAFNodeMethods() relies on the methods of a spelldef node, hence the need for sanity check as\n // this generic spell casting workflow would NOT work for any other node types.\n //\n // memoize the following spell parsing step for performance\n if (\n [\"leafspelldef\", \"leaflabel\"].includes(refnodedata?.leaf?.logic?.type)\n ) // sanity check\n {\n const runtime_spellname = refnodedata.leaf.logic.args.spellname;\n spellprom = lambdactrl.gos.etaTree.lookupLEAFNodeMethods(spell_nodeuuid);\n console.log(\"spell stream: subscribing runtime spell, \", runtime_spellname);\n\n _executeSpell(spellprom, relay_ctrl$, relay_data$).then((spell_output$) => {\n if (spell_output$ === undefined) {\n relay_data$.next(_combined_in[1]);\n //relay_data$.next(undefined);\n relay_ctrl$.next(_combined_in[0]);\n } else {\n spell_subscription = spell_output$.subscribe({\n next: (_next_out) => {\n console.log(`leafspell ${spellname} output: ${_next_out}`);\n spell_output_relay$.next(_next_out);\n },\n error: (emsg) => {\n console.error(\n `leafspell ${spellname} had an error in the subscription stream: ${emsg}`,\n );\n },\n complete: () => {\n console.log(`leafspell ${spellname} subscription completed.`);\n },\n });\n setTimeout(() => {\n //relay_data$.next(_combined_in[1]);\n relay_data$.next(spell_input);\n relay_ctrl$.next(_combined_in[0]);\n }, 1);\n }\n });\n } else {\n relay_data$.next(_combined_in[1]);\n relay_ctrl$.next(_combined_in[0]);\n }\n } else {\n relay_data$.next(_combined_in[1]);\n relay_ctrl$.next(_combined_in[0]);\n }\n\n return spell_output_relay$;\n }),\n withLatestFrom(spell_output_relay$),\n map((_combined_in) => {\n _outflow_data$.next(_combined_in[1][1]);\n\n outer_relay_ctrl$.next(_combined_in[1][0]);\n return _combined_in[1]; // pass thru the data in the flow;\n }),\n withLatestFrom(outer_relay_ctrl$),\n map((_out_sig) => {\n return _out_sig[1];\n }),\n finalize(() => {\n console.log(\"spell stream: finalizing spell, \", spellname);\n if (spell_subscription !== undefined) {\n console.log(\"spell stream: unsubscribing spell, \", spellname);\n spell_subscription.unsubscribe();\n spell_subscription = undefined;\n }\n //if (op_subs !== undefined) {\n // op_subs.unsubscribe();\n // op_subs = undefined;\n //}\n }),\n share(),\n );\n return {\n _stream: _outflow_data$,\n _control: { ..._controlflow$obj, _stream: _outflow_ctrl$ },\n };\n };\n\n //const consolidated_input$objArr = [combineDataflows(refnode, input$objArr)];\n //const consolidated_input$objArr = [{_stream: chronosDataflow(controlflow$obj._stream, input$objArr.map(_$obj=>_$obj._stream), false, CHRONOSTYPE_SYNC, {time: 20000}, TIMEOUTBEHAVIOR_BESTEFFORT, {...node_context})}];\n const output$obj = driveDataflowByCtrlflow(\n controlflow$obj,\n input$objArr,\n undefined,\n { ...node_context, metastep: \"executing spell \" + spellname },\n {\n leaflogic: is_generic_spell ? _genericspell_flowfunc : _nodeflowfunc, //spelldefProm, //spelldef._default,\n datalogic: {\n pre: preprocessfunc,\n post: postprocessfunc,\n },\n },\n );\n\n //return output$obj;\n\n return {\n _stream: output$obj._stream.pipe(\n //filter(_outflow_data => _outflow_data !== raceConditionError),\n map((_data_out) => {\n return _data_out;\n }),\n share(),\n ),\n _control: {\n _stream: output$obj._control._stream.pipe(\n //filter(_outflow_data => _outflow_data !== raceConditionError),\n map((_ctrl_out) => {\n return _ctrl_out;\n }),\n share(),\n ),\n },\n };\n\n //const reduced_spelldef$ = of(1).pipe(\n // concatMap(_ => {\n // return Promise.resolve(parseSpellBook())\n // }),\n // timeout(60000),\n // catchError(error=>{\n // const errormsg = `parseSpellBook() for spell ${spellname} (refnode: ${refnode}) timed out: ${error}`;\n // console.error(errormsg);\n // return of(errormsg);\n // })\n //)\n //const combined_input$obj = combineDataflows(refnode, [{_stream: preprocessedinput$}, {_stream: reduced_spelldef$}]);\n //console.log(`parsed spellbook for spell ${spellname} (refnode: ${refnode}): `);\n\n //const _out$ = reduced_spelldef$.pipe(\n // concatMap( (spelldef) => {\n // if (spelldef && '_default' in spelldef) {\n // const _nodeleafinst$obj = executeLEAFLogicInSync(spelldef._default, preprocessedinput$, undefined, {...controlflow$obj._config});\n // // spark_dev_note: started debugging rxjs and found the inter-conversion between\n // // data and stream$ quite tricky as multiple streams are weaved as per (weaveDataflows) eta.js and leaf.js\n // // also tricky is to maintain subscriptions that are spawned upon invoking executeLEAFLogic()\n // // whose function relies on firstValueFrom to convert stream$ into a Promise but limits the\n // // execution of any LEAF logic into passing thru a single LEAF message.\n // // A behavior subject instance (nodeiosubject_in$) can be passed to any execution instance\n // // requiring extended message subscription listening indefinitely for\n // // event-driven messages,\n // // to have inputdata messaged across via calling nodeiosubject_in$.next(<some message>).\n\n // //return executeLEAFLogicInSync(spelldef._default, of(inputdata), {...controlflow$obj._config})._stream;\n // return _nodeleafinst$obj._stream;\n // }\n // else {\n // console.error(`LEAF Error: _leafspell() called with spellname ${spellname} is missing a default dataflow component graph definition.`);\n // return mergedinput$obj._stream;\n // }\n // }),\n // map(_ => {\n // console.log(_);\n // return Array.isArray(_) ? _.flat() : _;\n // })\n //);\n\n //return {_stream: _out$, _control: controlflow$obj};\n //if (spelldef && '_default' in spelldef) {\n // const _nodeleafinst$obj = executeLEAFLogicInSync(spelldef._default, preprocessedinput$obj._stream, undefined, controlflow$obj._stream.pipe(map(_ctrldata=>{\n // return _ctrldata;\n // })), {...controlflow$obj._config});\n // //._stream.pipe(\n // // map( _outputdata => {\n // // console.log(_outputdata);\n // // return _outputdata;\n // // })\n // //);\n // // spark_dev_note: started debugging rxjs and found the inter-conversion between\n // // data and stream$ quite tricky as multiple streams are weaved as per (weaveDataflows) eta.js and leaf.js\n // // also tricky is to maintain subscriptions that are spawned upon invoking executeLEAFLogic()\n // // whose function relies on firstValueFrom to convert stream$ into a Promise but limits the\n // // execution of any LEAF logic into passing thru a single LEAF message.\n // // A behavior subject instance (nodeiosubject_in$) can be passed to any execution instance\n // // requiring extended message subscription listening indefinitely for\n // // event-driven messages,\n // // to have inputdata messaged across via calling nodeiosubject_in$.next(<some message>).\n\n // //return executeLEAFLogicInSync(spelldef._default, of(inputdata), {...controlflow$obj._config})._stream;\n // //return _nodeleafinst$obj;\n // return {_stream: _nodeleafinst$obj._stream, _control: _nodeleafinst$obj._control};\n //}\n //else {\n // console.error(`LEAF Error: _leafspell() called with spellname ${spellname} is missing a default dataflow component graph definition.`);\n // return preprocessedinput$obj;\n //}\n\n //const reduced_spelldef$ = of(1).pipe(\n // concatMap(_ => {\n // return Promise.resolve(parseSpellBook())\n // }),\n // timeout(60000),\n // catchError(error=>{\n // const errormsg = `parseSpellBook() for spell ${spellname} (refnode: ${refnode}) timed out: ${error}`;\n // console.error(errormsg);\n // return of(errormsg);\n // })\n //).subscribe();\n\n //if (!nodeiosubject_in$.observed) {\n // reduced_spelldef$.pipe(\n // concatMap( (spelldef) => {\n // if (spelldef && '_default' in spelldef) {\n // const _nodeleafinst$ = executeLEAFLogicInSync(spelldef._default, nodeiosubject_in$, undefined, {...controlflow$obj._config})._stream;\n // // spark_dev_note: started debugging rxjs and found the inter-conversion between\n // // data and stream$ quite tricky as multiple streams are weaved as per (weaveDataflows) eta.js and leaf.js\n // // also tricky is to maintain subscriptions that are spawned upon invoking executeLEAFLogic()\n // // whose function relies on firstValueFrom to convert stream$ into a Promise but limits the\n // // execution of any LEAF logic into passing thru a single LEAF message.\n // // A behavior subject instance (nodeiosubject_in$) can be passed to any execution instance\n // // requiring extended message subscription listening indefinitely for\n // // event-driven messages,\n // // to have inputdata messaged across via calling nodeiosubject_in$.next(<some message>).\n //\n // //return executeLEAFLogicInSync(spelldef._default, of(inputdata), {...controlflow$obj._config})._stream;\n // return _nodeleafinst$;\n // }\n // else {\n // console.error(`LEAF Error: _leafspell() called with spellname ${spellname} is missing a default dataflow component graph definition.`);\n // return mergedinput$obj._stream;\n // }\n // }),\n // map(_ => {\n // console.log(_);\n // return Array.isArray(_) ? _.flat() : _;\n // })\n // ).subscribe({\n // next: x => {\n // nodeiosubject_out$.next(x);\n // if ([\"18c0\", \"3a9a\"].includes(refnode.slice(0,4)))\n // console.log(\"start debugging\");\n // },\n // complete: () => {\n // if ([\"18c0\", \"3a9a\"].includes(refnode.slice(0,4)))\n // console.log(\"start debugging\");\n // }\n // });\n //}\n\n //combined_input$obj._stream.pipe(\n // //take(1),\n // concatMap( (_metadata) => {\n // const [inputdata, spelldef] = _metadata.length === 2 ? _metadata : [_metadata.slice(0,-1), _metadata.slice(-1)[0]];\n // if ([\"18c0\", \"3a9a\"].includes(refnode.slice(0,4)))\n // console.log(\"start debugging\");\n // if (spelldef && '_default' in spelldef) {\n // nodeiosubject_in$.next(inputdata);\n // return combined_input$obj._stream;\n // }\n // else {\n // console.error(`LEAF Error: _leafspell() called with spellname ${spellname} is missing a default dataflow component graph definition.`);\n // return mergedinput$obj._stream;\n // }\n // })\n //).subscribe({\n // next: x => {\n // //nodeiosubject_out$.next(x);\n // if ([\"18c0\", \"3a9a\"].includes(refnode.slice(0,4)))\n // console.log(\"start debugging\");\n // },\n // complete: () => {\n // if ([\"18c0\", \"3a9a\"].includes(refnode.slice(0,4)))\n // console.log(\"start debugging\");\n // }\n //});\n\n //return {_stream: nodeiosubject_out$, _control: controlflow$obj};\n };\n },\n lambda:\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n // space for node type specific init prior to use\n // look up the spell from spellbooks in the order of precedence\n const spellname = refnodedata.leaf.logic.args.spellname;\n //if (refnode.slice(0,4) === 'dec1')\n // console.log(\"start debugging\");\n let reduced_spelldef = undefined;\n\n let spell_lambda_obj = {};\n let _contextuallambda = contextuallambda;\n if (!reduced_spelldef) {\n spell_lambda_obj = await etaReduceLambdaGraphs({\n refnode,\n nodelambda,\n contextuallambda,\n etaTree: lambdactrl.gos.etaTree,\n });\n const _keywordlist = getEtaContext(spell_lambda_obj);\n\n if (_keywordlist.length > 0) {\n // if contextuallambda labels do exists on the spell node\n // re-evaluate the node's lambda graphs\n _contextuallambda = _contextuallambda.concat(_keywordlist);\n spell_lambda_obj = await etaReduceLambdaGraphs({\n refnode,\n nodelambda,\n contextuallambda: _contextuallambda,\n etaTree: lambdactrl.gos.etaTree,\n });\n }\n if (spell_lambda_obj && spellname in spell_lambda_obj) {\n reduced_spelldef = spell_lambda_obj[spellname];\n }\n\n // test\n //reduced_spelldef = {_default: input$ => [337]};\n // end of test\n }\n\n const lookupSpellBook = _lookupSpellBook(spell_lambda_obj);\n\n if (!reduced_spelldef) {\n const userspellbook = lambdactrl.user.spellbook;\n const userlambdalut = lambdactrl.user.lambdalut;\n reduced_spelldef = await lookupSpellBook({\n refnode,\n spellbook: userspellbook,\n spellname,\n lambdalut: userlambdalut,\n contextuallambda: _contextuallambda,\n etaTree: lambdactrl.gos.etaTree,\n }); // TBD: look up the eta-reduced matching spell def by name\n }\n if (!reduced_spelldef) {\n const stdlambdalut = lambdactrl.gos.stdlambdalut;\n const stdspellbook = lambdactrl.gos.standardSpellbook;\n reduced_spelldef = await lookupSpellBook({\n refnode,\n spellbook: stdspellbook,\n spellname,\n lambdalut: stdlambdalut,\n contextuallambda: _contextuallambda,\n etaTree: lambdactrl.gos.etaTree,\n });\n }\n if (!reduced_spelldef) {\n // if lookup failed so far, curatedspellbook is last in the order of precedence\n const curatedlambdalut = lambdactrl.gos.curatedlambdalut;\n const curatedspellbook = lambdactrl.gos.curatedSpellbook;\n reduced_spelldef = await lookupSpellBook({\n refnode,\n spellbook: curatedspellbook,\n spellname,\n lambdalut: curatedlambdalut,\n contextuallambda: _contextuallambda,\n etaTree: lambdactrl.gos.etaTree,\n });\n }\n //const lambda_lut = {};\n //console.error(`LEAF Error: the leafspell construct (${refnode}) is invalid because it is defined outside the dataflow plane scope.`);\n //lambda_lut._default = (input$) => { // leaf dataflow identity function that does nothing\n // return input$; // do nothing\n //};\n //if (refnode.slice(0,4) === 'dec1') {\n // console.log(\"start debugging\");\n // executeLEAFLogicInSync(reduced_spelldef.accio._default, [], {})._stream.subscribe(\n // x => {\n // console.log(x);\n // }\n // );\n //}\n return reduced_spelldef;\n },\n};\n\nexport { _leafspell };\n","import { etaReduceLambdaGraphs } from \"../../eta.js\";\nimport { mergeDataflows } from \"../../../utils/leafdataflow.js\";\n\nconst _leafspelldef = {\n dataflow:\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n // space for node type specific init prior to use\n // do initialize the leafnode logic as per the currently connected leaf graph lambda context\n //const _lambdacontextlut = nodelambda;\n //const node_setup = lambdajsArgs.default({default: lambdalambdafunc});\n //\n console.error(\"LEAF Error: leafspelldef does not have any dataflow-plane-scoped functions.\");\n return (input$Arr, controlflow$obj) => {\n // leaf dataflow identity function that does nothing\n return { ...mergeDataflows(input$Arr), _control: controlflow$obj }; // do nothing\n };\n },\n lambda:\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n // space for node type specific init prior to use\n // reduce any contextuallambda first\n const lambdalambdalist = nodelambda.filter(\n (_) => lambdactrl.gos.etaTree.graphcomponents.components.lut[_].scope === \"lambda\",\n );\n const lambda_default = nodelambda.filter(\n (_) => lambdactrl.gos.etaTree.graphcomponents.components.lut[_].scope === \"dataflow\",\n );\n\n const reduced_lambdalambda_obj = await etaReduceLambdaGraphs({\n refnode,\n nodelambda: lambdalambdalist,\n contextuallambda,\n etaTree: lambdactrl.gos.etaTree,\n addnodelut: true,\n metadata: { codebase: \"leafspelldef.js\", context: \"reduced_lambdalambda_obj\" },\n });\n\n const reduced_defaultlambda_obj = await etaReduceLambdaGraphs({\n refnode,\n nodelambda: lambda_default,\n contextuallambda,\n etaTree: lambdactrl.gos.etaTree,\n metadata: {\n codebase: \"leafspelldef.js\",\n context: \"reduced_defaultlambda_obj\",\n spellname: refnodedata.leaf.logic.args.spellname,\n },\n });\n\n //const filtered_lambdalambda_obj = Object.keys(reduced_lambdalambda_obj).reduce((filtered, key) => {\n // if (key !== 'contextual')\n //},{});\n const filter_nodelut = (obj) =>\n obj\n ? Object.keys(obj).reduce((filtered, key) => {\n if (key !== \"_nodelut\") {\n if (typeof obj[key] === \"object\")\n filtered[key] = filter_nodelut(obj[key]); // obj should be of type function\n else filtered[key] = obj[key];\n }\n return filtered;\n }, {})\n : {};\n let reduced_lambda_obj = {\n ...filter_nodelut(reduced_lambdalambda_obj),\n ...filter_nodelut(reduced_defaultlambda_obj),\n };\n return reduced_lambda_obj; //lambda_lut;\n },\n methods:\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n // space for node type specific init prior to use\n // reduce any contextuallambda first\n const lambdalambdalist = nodelambda.filter(\n (_) => lambdactrl.gos.etaTree.graphcomponents.components.lut[_].scope === \"lambda\",\n );\n const lambda_default = nodelambda.filter(\n (_) => lambdactrl.gos.etaTree.graphcomponents.components.lut[_].scope === \"dataflow\",\n );\n\n //const reduced_contextlambda_obj = await etaReduceLambdaGraphs({refnode, nodelambda: contextuallambda, contextuallambda: [], etaTree: lambdactrl.gos.etaTree, addnodelut: true, metadata: {codebase: \"leafspelldef.js\", context: \"reduced_contextlambda_obj\"}});\n const reduced_lambdalambda_obj = await etaReduceLambdaGraphs({\n refnode,\n nodelambda: lambdalambdalist,\n contextuallambda,\n etaTree: lambdactrl.gos.etaTree,\n addnodelut: true,\n metadata: { codebase: \"leafspelldef.js\", context: \"reduced_lambdalambda_obj\" },\n });\n\n const reduced_defaultlambda_obj = await etaReduceLambdaGraphs({\n refnode,\n nodelambda: lambda_default,\n contextuallambda,\n etaTree: lambdactrl.gos.etaTree,\n metadata: {\n codebase: \"leafspelldef.js\",\n context: \"reduced_defaultlambda_obj\",\n spellname: refnodedata.leaf.logic.args.spellname,\n },\n });\n\n const filter_nodelut = (obj) =>\n obj\n ? Object.keys(obj).reduce((filtered, key) => {\n if (key !== \"_nodelut\") {\n if (typeof obj[key] === \"object\")\n filtered[key] = filter_nodelut(obj[key]); // obj should be of type function\n else filtered[key] = obj[key];\n }\n return filtered;\n }, {})\n : {};\n let reduced_lambda_obj = {\n ...filter_nodelut(reduced_lambdalambda_obj),\n ...filter_nodelut(reduced_defaultlambda_obj),\n };\n return reduced_lambda_obj; //lambda_lut;\n },\n};\n\nexport { _leafspelldef };\n","import { etaReduceLambdaGraphs } from \"../../eta.js\";\nimport {\n map,\n withLatestFrom,\n filter,\n concatMap,\n takeUntil,\n switchMap,\n share,\n finalize,\n} from \"rxjs/operators\";\nimport { mergeDataflows } from \"../../../utils/leafdataflow.js\";\nimport { from, BehaviorSubject, ReplaySubject, Subject } from \"rxjs\";\n//import { red } from '@mui/material/colors';\nimport { isPositiveWholeNumberStr } from \"../../predicates.js\";\nimport { driveDataflowByCtrlflow, executeLEAFLogic } from \"../../leaf.js\";\nimport { doBottle } from \"../datautils/bottling.js\";\n\nconst raceConditionError = doBottle(\n \"error\",\n {\n type: \"critical\",\n message: \"LEAF core error: race condition detected in leafloopyspell.js\",\n codebase: \"/src/ghostos/api/parser/nodelogic/abstraction/leafloopyspell.js\",\n },\n {},\n);\nconst createThrottleGate = () => {\n let lastCall = 0;\n return (intervalMs) => {\n const now = Date.now();\n if (now - lastCall >= intervalMs) {\n lastCall = now;\n return true;\n }\n return false;\n };\n};\nconst getLargestCount = (dict) => {\n if (!dict) return 1; // defaults to 1 iteration\n const ampersand = Object.keys(dict).filter((x) => x === \"&\");\n if (ampersand.length > 0) return undefined; // infinite loop if ampersand entry exists in dict\n const numberslist = Object.keys(dict)\n .filter((x) => isPositiveWholeNumberStr(x))\n .map((x) => parseInt(x))\n .sort();\n if (numberslist.length > 0)\n return numberslist[numberslist.length - 1]; // get the largest number available\n else return 1;\n};\n\n/*\n * _leafloopyspell() is a function in the leaf abstraction library to deal with\n * the concept of executing the logic of a set of lambda components (or lambda subgraphs) against\n * the data in the dataflow plane. It also takes care of the plurality [as well as\n * the splicing of dataflow data, like the reactive operators 'zip' and 'map' do in series.]\n * (update: splicing is now taken care of by leafmixflow)\n * [spark_dev_note: an example here to enhance understanding of data plurality and splicing]\n * Unlike spellbook-defined spells (i.e. the _leafspelldef defined spells), improv spells\n * do not provide any mechanism for referencing the spells elsewhere in leaf constructs.\n *\n */\nconst _leafloopyspell = {\n dataflow:\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n // space for node type specific init prior to use\n // check for parsing error conditions\n if (!contextuallambda) {\n throw (\n `LEAF error: the logical construct built using the ${refnodedata.leaf.logic.type} node ` +\n `(${refnode}) called with args (${JSON.stringify(refnodedata.leaf.logic.args)}).`\n );\n }\n if ([\"7b1f\"].includes(refnode.slice(0, 4))) console.log(\"start debugging\");\n const reduced_lambda_obj = await etaReduceLambdaGraphs({\n refnode,\n nodelambda,\n contextuallambda,\n etaTree: lambdactrl.gos.etaTree,\n });\n if ([\"7b1f\"].includes(refnode.slice(0, 4))) console.log(\"start debugging\");\n\n const is_bypass = \"bypass\" in reduced_lambda_obj ? true : false;\n // spark_dev_note: I think _leafdataUnbottle currently only supports a single key, in the future it would be whole lot more useful\n // if it supported an array of keys to be unbottled in one go.\n\n //const filterDataOfInterest = _leafdataUnbottle({bottlekey:'_leafdeck'});\n //const bottleUp = _leafbottle.dataflow(lambdactrl)({refnodedata: {leaf: {logic: {args: {bottlekey:'_leafloopyspell'}}}}, nodelambda: [], contextuallambda});\n const node_context = {\n codebase: \"leafloopyspell.js\",\n refnode,\n leafnode:\n lambdactrl.gos.etaTree.leafgraph.graph.dataflow.getNodeAttributes(refnode).leafnode.data,\n };\n\n const loopcount = getLargestCount(reduced_lambda_obj);\n const is_forever = \"forever\" in reduced_lambda_obj;\n const ctrlflowThrottleGate = createThrottleGate();\n const loopThrottleGate = createThrottleGate();\n\n if (reduced_lambda_obj && \"_default\" in reduced_lambda_obj) {\n //const mainloop$ = loopcount > 0 ? interval(loopinterval).pipe(take(loopcount)) : interval(loopinterval);\n //const loopysubject$ = (new BehaviorSubject()).pipe(skip(1));\n //const loopysubject$ = (new ReplaySubject(loopcount)); // will replay latest result upon subscription;\n //const nodeiosubject_in$ = new ReplaySubject(1);\n //const nodeiosubject_out$ = new ReplaySubject(1);\n //let loopyresultcache = [];\n\n //if (is_bypass) {\n // lambdaresult$obj._stream.pipe(take(1)).subscribe({\n // next: (x) => x,\n // complete: () => {\n // console.log(\"subs completed\");\n // }\n // });\n //}\n //lambdaresult$obj._stream.forEach(_ => {\n // if (is_bypass) {\n // lambda_result.push(inputdata);\n // }\n // else {\n // //lambda_result.push(_.flat()); // aggregate the result of the logic\n // lambda_result.push(_); // aggregate the result of the logic\n // }\n //});\n //// now time to combine the three flows\n //const combined_metadata$ = combineDataflows(refnode, [maindata$obj, spellinput$obj], false);\n //return combined_metadata$._stream\n //return is_bypass ? maindata$obj._stream : lambdaresult$obj._stream.pipe(map(_ => _.flat()));\n\n //const inputsubject$ = (new ReplaySubject(loopcount)); // will replay latest result upon subscription;\n //const inputsubject$ = (new BehaviorSubject()).pipe(skip(1),take(loopcount));\n //const inputsubject$ = (new BehaviorSubject()).pipe(skip(1));\n return (input$objArr, controlflow$obj) => {\n //const mergedinput$obj = mergeDataflows(flowinput$Arr);\n //const mergedinput$obj = combineDataflows(refnode, flowinput$Arr);\n if ([\"7b1f\"].includes(refnode?.slice(0, 4))) console.log(\"start debugging\");\n //const mergedinput$obj = combineDataflows(refnode, flowinput$Arr, false, false, false, {provenance: \"leafloopyspell.js\", refnode, etaTree: lambdactrl.gos.etaTree});// default to merging multiple streams\n const throttled_ctrlflow$obj = {\n _stream: controlflow$obj._stream.pipe(\n map((_ctrl_data) => {\n if (ctrlflowThrottleGate(200)) {\n console.log(\"spell executed\");\n return _ctrl_data;\n } else {\n console.log(\"spell throttled\");\n return undefined;\n }\n }),\n filter((_data) => _data !== undefined),\n concatMap((_ctrl_in) => {\n return from([...Array(loopcount).keys()]).pipe(\n map((_idx) => {\n return { ..._ctrl_in, _label: { ..._ctrl_in._label, loopyidx: _idx } };\n }),\n );\n }),\n ),\n };\n\n //throttled_ctrlflow$obj._stream.pipe(\n // concatMap(_ctrl_in => {\n // let relayflowctrl$ = new ReplaySubject(1);\n // relay_ctrl_in$ = of(_ctrl_in).pipe(\n // map(_ctrl_data=> {\n // })\n // );\n\n // return relay_ctrl_in$\n // })\n //)\n\n //const consolidated_input$objArr = [combineDataflows(refnode, input$objArr)];\n //const consolidated_input$objArr = [{_stream: chronosDataflow(controlflow$obj._stream, input$objArr.map(_$obj=>_$obj._stream), false, CHRONOSTYPE_SYNC, {time: 10000}, TIMEOUTBEHAVIOR_BESTEFFORT, {codebase: 'leafloopyspell'})}];\n if (!(reduced_lambda_obj && \"_default\" in reduced_lambda_obj)) {\n console.error(\n `LEAF Error: _leafloopyspell() called without a default dataflow component graph definition.`,\n );\n\n const defaultout$obj = driveDataflowByCtrlflow(\n throttled_ctrlflow$obj,\n input$objArr,\n undefined,\n { ...node_context, metastep: \"relaying input data as is due to error condition\" },\n );\n return defaultout$obj;\n }\n\n //const preprocessed_inflow_data$objArr = [...Array(loopcount).keys()].map(\n // loopidx => {\n //\n // }\n //);\n\n //input$objArr.map(_inflow$obj=>{\n // return _inflow$obj._stream.pipe(map(_inflow_data=>{\n // return transformation.datalogic.pre(_inflow_data); // do preprocess\n // }))\n //});\n\n let idxcache = 0;\n let loopydata_cache = [];\n const preprocessfunc = (_data_in) => {\n //const _data_out = exitDataBus({_bus: _data_in});\n // spark_dev_note: 18/Jun/2023, TBD: to unbottle or not to unbottle\n // #databus\n // The leaf version working in the dev branch of designweek\n // expects a \"_databus\" bottle created using enterDataBus(), for system-level data exchange.\n // The final release version of LEAF shall abandon the use of this \"_databus\" bottle convention\n // in system-level data exchange, as it is prone to confusing LEAF users in their\n // LEAF code debugging and reasoning processes.\n // From now on, any system-level data exchange in LEAF is explicitly done through bottles using\n // user-friendly names that would help make user-level LEAF constructs easier to debug and to reason about.\n // This new convention will be helpful when some user-level LEAF construct has, in its dataflow space,\n // user-level data bottles muddled up with bottles carrying system-level data exchange.\n // For now, the exitDataBus call here is commented out, and as an interim solution, nothing is done on\n // the _data_in, and it is simply passed to _data_out as is.\n // Now, the onus is on the LEAF construct designers (or users) to only go after the bottles that concern\n // their use cases, via using leafgate prior to passing data into leafloopyspell.\n const _data_out = _data_in;\n if (!is_bypass) loopydata_cache.push(_data_in);\n return _data_out;\n };\n\n let loopymetactrl$ = new BehaviorSubject(raceConditionError);\n let loopystopper$ = new ReplaySubject(1);\n let ctrl_in_cache = undefined;\n const loopyctrl$ = throttled_ctrlflow$obj._stream.pipe(\n switchMap((_ctrl_in) => {\n //loopymetactrl$ = new ReplaySubject(1);\n //loopystopper$ = new ReplaySubject(1);\n\n ctrl_in_cache = _ctrl_in;\n loopymetactrl$.next(_ctrl_in); // pass thru the incoming ctrl signal, also acting as the first index call\n return loopymetactrl$;\n }),\n takeUntil(loopystopper$),\n );\n\n const output$obj = driveDataflowByCtrlflow(\n { _stream: loopyctrl$ },\n input$objArr,\n undefined,\n { ...node_context, metastep: \"executing a loopy spell with idx \" + idxcache },\n {\n leaflogic: reduced_lambda_obj._default,\n datalogic: {\n pre: preprocessfunc,\n post: (_data) => {\n idxcache += 1; // increment idx\n if (is_forever || idxcache < loopcount) loopymetactrl$.next(ctrl_in_cache); // next idx call\n\n if (!is_bypass) return loopydata_cache[0];\n if (\"stream\" in reduced_lambda_obj)\n // results of iteration not buffered\n return _data;\n else loopydata_cache.push(_data);\n\n if (idxcache === loopcount) {\n const _buffered_data = [...loopydata_cache]; // shallow copy\n // reset the caches\n loopydata_cache = [];\n idxcache = 0;\n // stop the flow\n //loopystopper$.next(true);\n // return what's been buffered\n return _buffered_data;\n }\n\n return undefined; // this would get filtered and never reach the data flow\n },\n },\n },\n );\n\n return output$obj;\n\n //const lambdaresult$objArr = [...Array(loopcount).keys()].map(_loopidx=> {\n // const _lambdaresult$obj = reduced_lambda_obj._default([mergedinput$obj], throttled_ctrlflow$obj);\n // if (is_bypass) {\n // return {\n // _stream: _lambdaresult$obj._stream.pipe(mergeMap(_inputdata=> {\n // return mergedinput$obj._stream;\n // })),\n // _control: _lambdaresult$obj._control\n // };\n // }\n // else {\n // return _lambdaresult$obj;\n // }\n\n //});\n\n //const [synced_upstream_controlflow$obj, synced_upstream_dataflow$obj] =\n //('stream' in reduced_lambda_obj) ? // results of iteration not buffered\n // (\n // [\n // {\n // _stream: mergeDataflows(lambdaresult$objArr.map(_obj=>_obj._control._stream)),\n // },\n // {\n // _stream: mergeDataflows(lambdaresult$objArr.map(_obj=>_obj._stream))\n // }\n // ]\n // )\n //: (()=>{\n // // initialize incoming flow for the current node\n // // initialization of outgoing flow can be done after executing the current node's eta function\n // initializeFlowInterface(refnode,\n // lambdaresult$objArr.map(_=>{ return {_stream: _._control._stream} }),\n // lambdaresult$objArr.map(_=>{ return {_stream: _._stream }})\n // );\n // // initialize flow interface\n\n // return _synchronizeFlow(refnode, lambdaresult$objArr, true);\n //})();\n\n //return {...synced_upstream_dataflow$obj, _control: synced_upstream_controlflow$obj};\n };\n } else if (reduced_lambda_obj && \"await\" in reduced_lambda_obj) {\n // condition to interpret loopyspell as a rx.js subscription awaiting until an exit condition is met\n return (input$objArr, controlflow$obj) => {\n const throttled_ctrlflow$obj = {\n _stream: controlflow$obj._stream.pipe(\n map((_ctrl_data) => {\n if (loopThrottleGate(10)) {\n console.log(\"spell executed\");\n return _ctrl_data;\n } else {\n console.log(\"spell throttled\");\n return undefined;\n }\n }),\n filter((_data) => _data !== undefined),\n map((_ctrl_in) => {\n return [...Array(loopcount).keys()].map((_idx) => {\n return { ..._ctrl_in, _label: { ..._ctrl_in._label, loopyidx: _idx } };\n });\n }),\n ),\n };\n\n if (!(reduced_lambda_obj.await && \"_default\" in reduced_lambda_obj.await)) {\n console.error(\n `LEAF Error: _leafloopyspell() in await mode called without a default dataflow component graph definition.`,\n );\n\n const defaultout$obj = driveDataflowByCtrlflow(\n throttled_ctrlflow$obj,\n input$objArr,\n undefined,\n { ...node_context, metastep: \"relaying input data as is due to error condition\" },\n );\n return defaultout$obj;\n }\n\n let idxcache = 0;\n let loopydata_cache = [];\n const preprocessfunc = (_data_in) => {\n //const _data_out = exitDataBus({_bus: _data_in});\n // spark_dev_note: 18/Jun/2023, TBD: to unbottle or not to unbottle\n // #databus\n // The leaf version working in the dev branch of designweek\n // expects a \"_databus\" bottle created using enterDataBus(), for system-level data exchange.\n // The final release version of LEAF shall abandon the use of this \"_databus\" bottle convention\n // in system-level data exchange, as it is prone to confusing LEAF users in their\n // LEAF code debugging and reasoning processes.\n // From now on, any system-level data exchange in LEAF is explicitly done through bottles using\n // user-friendly names that would help make user-level LEAF constructs easier to debug and to reason about.\n // This new convention will be helpful when some user-level LEAF construct has, in its dataflow space,\n // user-level data bottles muddled up with bottles carrying system-level data exchange.\n // For now, the exitDataBus call here is commented out, and as an interim solution, nothing is done on\n // the _data_in, and it is simply passed to _data_out as is.\n // Now, the onus is on the LEAF construct designers (or users) to only go after the bottles that concern\n // their use cases, via using leafgate prior to passing data into leafloopyspell.\n const _data_out = _data_in;\n if (!is_bypass) loopydata_cache.push(_data_in);\n return _data_out;\n };\n\n //let loopymetactrl$ = new BehaviorSubject(raceConditionError);\n let loopymetactrl$ = new Subject();\n let loopymetadata$ = new Subject();\n let loopystopper$ = new Subject();\n const relay_data_out$ = new Subject(); //new BehaviorSubject({...raceConditionError, _label: {context: \"relay_data_out\"}});\n const loopyctrl$ = new Subject(); //new BehaviorSubject({...raceConditionError, _label: {context: \"relay_ctrl_out\"}});\n\n let ctrl_in_cache = undefined;\n let op_subs = undefined;\n\n // construct await function stream\n const await_data_input$ = new Subject();\n const await_ctrl_input$ = new Subject();\n const await_output$obj = reduced_lambda_obj.await._default(\n [{ _stream: await_data_input$ }],\n { _stream: await_ctrl_input$ },\n );\n\n const relay_ctrl_out$ = throttled_ctrlflow$obj._stream.pipe(\n withLatestFrom(...input$objArr.map((_$obj) => _$obj._stream)),\n switchMap((_combined_in) => {\n const _ctrl_in = _combined_in[0];\n const _data_in = _combined_in[1];\n ctrl_in_cache = _ctrl_in;\n\n if (op_subs !== undefined && !op_subs.closed) {\n loopymetadata$.next(_data_in);\n loopymetactrl$.next(_ctrl_in); // pass thru the incoming ctrl signal, also acting as the first index call\n return loopyctrl$;\n }\n\n // initialize cache vars\n idxcache = 0;\n loopydata_cache = [];\n loopystopper$.next(); // kill any previously running loopyloop op subscription\n\n // now establish a loopyloop op subscription\n console.log(\"establishing a new loopyloop op subs\");\n const output$obj = driveDataflowByCtrlflow(\n { _stream: loopymetactrl$ },\n [{ _stream: loopymetadata$ }],\n undefined,\n { ...node_context, metastep: \"executing a loopy spell with idx \" + idxcache },\n {\n datalogic: {\n pre: preprocessfunc,\n post: (_data) => {\n idxcache += 1; // increment idx\n //if (idxcache < loopcount)\n // loopymetactrl$.next(ctrl_in_cache); // next idx call\n\n if (!is_bypass) return loopydata_cache[0];\n if (\"stream\" in reduced_lambda_obj)\n // results of iteration not buffered\n return _data;\n else loopydata_cache.push(_data);\n\n if (idxcache === loopcount) {\n const _buffered_data = [...loopydata_cache]; // shallow copy\n // reset the caches\n loopydata_cache = [];\n idxcache = 0;\n // stop the flow\n //loopystopper$.next(true);\n // return what's been buffered\n if (loopcount === 1) return _buffered_data[0];\n else return _buffered_data;\n }\n\n return undefined; // this would get filtered and never reach the data flow\n },\n },\n },\n );\n\n let _data_cache;\n op_subs = output$obj._control._stream\n .pipe(\n withLatestFrom(output$obj._stream),\n switchMap((_combined_in) => {\n _data_cache = _combined_in;\n\n // relay signals\n //if (!is_last) {\n // relay_data_out$.next(_combined_in[1]);\n // relay_ctrl_out$.next(_combined_in[0]);\n // loopyctrl$.next(ctrl_in_cache);\n //}\n // the following leaflogic evaluates subs exit condition\n //return executeLEAFLogic(reduced_lambda_obj.await._default, _combined_in[1]);\n await_data_input$.next(_combined_in[1]);\n await_ctrl_input$.next(_combined_in[0]);\n return await_output$obj._control._stream;\n }),\n withLatestFrom(await_output$obj._control._stream),\n withLatestFrom(await_output$obj._stream),\n map((_combined_await_out) => {\n return _combined_await_out[1]; // only return the data component\n }),\n map((_exit_cond) => {\n console.log(\"_exit_cond\");\n if (_exit_cond) {\n console.log(\n \"leafloopyspell exit condition met, stopping loopy spell subscription...\",\n );\n //loopyctrl$.next(ctrl_in_cache);\n relay_data_out$.next(_data_cache[1]);\n //ctrl_in_cache = _data_cache[0];\n ctrl_in_cache = _data_cache[0];\n loopystopper$.next(); // kill the current loopyloop op subscription\n }\n return _exit_cond;\n }),\n takeUntil(loopystopper$),\n //takeWhile(_exit_cond => {\n // //if (is_last) {\n // // if (_exit_cond) {\n // // relay_data_out$.next(_data_cache[1]);\n // // relay_ctrl_out$.next(_data_cache[0]);\n // // loopyctrl$.next(ctrl_in_cache);\n // // }\n // //}\n // //else {\n // // relay_data_out$.next(_data_cache[1]);\n // // relay_ctrl_out$.next(_data_cache[0]);\n // //}\n\n // if (_exit_cond) {\n // console.log(\"leafloopyspell exit condition met, stopping loopy spell subscription...\");\n // //loopyctrl$.next(ctrl_in_cache);\n // return false;\n // }\n // return true;\n //}, true)\n )\n .subscribe({\n next: (_combined_in) => {\n console.log(\n \"leafloopyspell in await mode had a leaf mesg _combined_in arrive: \",\n _combined_in,\n );\n },\n error: (_err) => {\n console.error(\"leafloopyspell in await mode had an error: \", _err);\n },\n complete: () => {\n //loopyctrl$.next(_data_cache[0]);\n console.log(\"leafloopyspell in await mode had completed\");\n },\n });\n\n loopymetadata$.next(_data_in);\n loopymetactrl$.next(_ctrl_in); // pass thru the incoming ctrl signal, also acting as the first index call\n //return _ctrl_in;\n return loopyctrl$;\n }),\n map((_ctrl_in) => {\n return _ctrl_in;\n }),\n finalize(() => {\n console.log(\"Finally\");\n if (op_subs !== undefined) {\n op_subs.unsubscribe();\n op_subs = undefined;\n }\n }),\n filter((_data) => _data !== undefined),\n share(),\n );\n\n return {\n _stream: !(reduced_lambda_obj.final && \"_default\" in reduced_lambda_obj.final)\n ? relay_data_out$.pipe(\n filter(\n (_outflow_data) =>\n JSON.stringify({ ..._outflow_data, _label: {} }) !==\n JSON.stringify(raceConditionError),\n ),\n map((_data_out) => {\n //loopyctrl$.next(ctrl_in_cache);\n setTimeout(() => {\n loopyctrl$.next(ctrl_in_cache);\n }, 0);\n return _data_out;\n }),\n share(),\n )\n : relay_data_out$.pipe(\n filter(\n (_outflow_data) =>\n JSON.stringify({ ..._outflow_data, _label: {} }) !==\n JSON.stringify(raceConditionError),\n ),\n switchMap((_data_out) => {\n return executeLEAFLogic(reduced_lambda_obj.final._default, _data_out);\n }),\n map((_data_out) => {\n setTimeout(() => {\n loopyctrl$.next(ctrl_in_cache);\n }, 0);\n return _data_out;\n }),\n share(),\n ),\n _control: {\n _stream: relay_ctrl_out$.pipe(\n map((_ctrl_out) => {\n return _ctrl_out;\n }),\n share(),\n ),\n },\n };\n };\n } else {\n console.error(\n `LEAF Error: _leafloopyspell() called (${refnode}) is missing a default dataflow component graph definition.`,\n );\n return (input$Arr, controlflow$obj) => {\n const input$obj = mergeDataflows(input$Arr);\n return { ...input$obj, _control: controlflow$obj };\n }; // identity function\n }\n },\n lambda:\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n // space for node type specific init prior to use\n // note the cross over in the roles of nodelambda and contextuallambda\n const reduced_lambda_obj = await etaReduceLambdaGraphs({\n refnode,\n nodelambda: contextuallambda,\n contextuallambda: nodelambda,\n etaTree: lambdactrl.gos.etaTree,\n });\n const lambda_lut = {};\n Object.entries(reduced_lambda_obj).map(([key, etafunc]) => {\n lambda_lut[key] = (input$Arr, controlflow$obj) => {\n // a dataflow-scoped func per key\n const input$obj = mergeDataflows(input$Arr);\n const output$obj = etafunc([input$obj], controlflow$obj);\n return { ...output$obj, _control: controlflow$obj };\n };\n });\n return lambda_lut;\n },\n};\n\nexport { _leafloopyspell };\n","import { etaReduceDataflowComponent } from \"../../eta.js\";\n//import { reconstructLEAFGraph, analyzeLEAFGraph } from '../../leaf';\n//import { initializeLEAFlakeGQLClient } from '../../../leafio/leaflake';\n//import { LEAFIOmetamodel } from '../../../metamodel';\nimport { _leafstdlib_dataflow_api } from \"../../../metamodel.js\";\n\nimport { fetchMultiKeyedData } from \"../../../../api/utils/fetchnodedata.js\";\nimport { mergeDataflows } from \"../../../utils/leafdataflow.js\";\nimport { etaTreeForest } from \"../../etatreeforest.js\";\n\nconst leafgraph_apidef = _leafstdlib_dataflow_api(\"leafgraph\");\n\nconst hasGithubPrefix = (graphAddr) =>\n typeof graphAddr === \"string\" && graphAddr.toLowerCase().startsWith(\"github/\");\n\nconst redactGraphQueryValues = (graphRef) => {\n if (typeof graphRef !== \"string\") {\n return graphRef;\n }\n const queryIndex = graphRef.indexOf(\"?\");\n if (queryIndex === -1) {\n return graphRef;\n }\n const refPath = graphRef.slice(0, queryIndex);\n const refQuery = graphRef.slice(queryIndex + 1);\n if (refQuery.length === 0) {\n return `${refPath}?`;\n }\n const redactedQuery = refQuery\n .split(\"&\")\n .map((entry) => {\n if (!entry) {\n return entry;\n }\n const [key] = entry.split(\"=\");\n return key ? `${key}=REDACTED` : \"REDACTED\";\n })\n .join(\"&\");\n return `${refPath}?${redactedQuery}`;\n};\n\nconst parseLeafgraphAddressStrict = (leafgraph_addr_str) => {\n const slash_index = leafgraph_addr_str.indexOf(\"/\");\n if (slash_index <= 0 || slash_index === leafgraph_addr_str.length - 1) {\n return null;\n }\n return {\n graph_domain: leafgraph_addr_str.slice(0, slash_index).toLowerCase(),\n graph_appid: leafgraph_addr_str.slice(slash_index + 1),\n };\n};\n\nconst parseLeafgraphAddressWithDefaults = (leafgraph_addr_str, host_domain) => {\n if (!leafgraph_addr_str) {\n return null;\n }\n if (leafgraph_addr_str.startsWith(\"/\")) {\n const graph_appid = leafgraph_addr_str.slice(1);\n if (!graph_appid) {\n return null;\n }\n return { graph_domain: host_domain, graph_appid };\n }\n const slash_index = leafgraph_addr_str.indexOf(\"/\");\n if (slash_index === -1) {\n return { graph_domain: leafgraph_addr_str.toLowerCase(), graph_appid: \"index\" };\n }\n if (slash_index === 0 || slash_index === leafgraph_addr_str.length - 1) {\n return null;\n }\n return {\n graph_domain: leafgraph_addr_str.slice(0, slash_index).toLowerCase(),\n graph_appid: leafgraph_addr_str.slice(slash_index + 1),\n };\n};\n\nconst graphRefUpdateHandler = async (\n lambdactrl,\n refnode,\n host_domain,\n host_appid,\n graph_domain,\n graph_appid,\n leafio,\n mnemosyneRef,\n hostEtaTree,\n contextuallambda,\n parseLEAFConfig = false,\n) => {\n //({ graph: {nodes, edges }}={}) => {}\n //const leafgraph = reconstructLEAFGraph(nodes); //, masterSubsDirectory;\n ////leafgraph.graph.dataflow.mapEdges((edge, attributes, source, target, sourceAttributes, targetAttributes) => {\n //// console.log('edge: ', attributes, source, target);\n ////});\n //const leafcomponents = analyzeLEAFGraph(leafgraph);\n\n //// TBD: currently no mechanism is in place to support multiple runtimeEtaTrees.\n //// refactor eta.js to make runtimeEtaTree an object that can be encapsulated and instantiated.\n //// initialize leaf compiler\n ////runtimeEtaTree.initTree(leafgraph, leafcomponents, masterSubsDirectory);\n //const etaTree = runtimeEtaTree(host_domain, host_appid, graph_domain, graph_appid, leafgraph, leafcomponents, leafio, hostEtaTree.leaflakeio, mnemosyneRef, hostEtaTree);\n //const main_component = leafcomponents.components.nodegroups.runtime[0];\n //const lambda_components = leafcomponents.components.nodegroups.lambda;\n\n //// set etaTree in the main mnemosyne's memory space with the key name '_etaTreeForest' using the treename\n //const treename = graph_domain+\"/\"+graph_appid;\n //const parentname = hostEtaTree ? host_domain+\"/\"+host_appid : undefined;\n //_leafmemoryio.methods(lambdactrl)({}).etatreeforest.setEtaTree(treename, etaTree, parentname);\n\n console.log(\"graphRefUpdateHandler(): \", graph_domain, redactGraphQueryValues(graph_appid));\n const etaTree = await etaTreeForest(hostEtaTree)?.parseGraphEtaTree(graph_domain, graph_appid);\n if (etaTree === undefined) console.log(\"start debugging\");\n const leafgraph = etaTree.leafgraph;\n const leafcomponents = etaTree.graphcomponents;\n const main_component = etaTree.graphcomponents.components.nodegroups.runtime[0];\n\n // go through main_component and lambda_components defined in the current leafgraph\n // and catalog their eta reduced functions into a dictionary object to be passed down the lambda out port.\n const promiseFactory = async () => {\n const graphLUT = {};\n // TBD: go over the leafspelldefs and make sure NOT to touch any leafspelldefs that would\n // cause self-looping definitions and go into infinite recursion.\n // spark_dev_note: come up with a refactoring strategy to allow a leafgraph being imported\n // to have leafspelldefs referencing the host leafgraph without worrying about infinite recursion.\n // for now (8 Apr 2022), just exclude any leafspelldefs referencing the host leafgraph.\n const clashing_leafgraph = leafgraph.graph.lambda.nodes().filter((leafnodeuuid) => {\n //leafnodeAttributes: {leafnode: {...node, data: node_data}, lambdactrl: {gos: {standardSpellBook: {}, curatedSpellBook: {}, masterSubsDirectory: masterSubsDirectory}, user: {spellbook:{}, config:node_data}}}\n if (leafnodeuuid === \"undefined\" || leafnodeuuid === undefined)\n console.log(\"start debugging\");\n const leafnodeAttributes = leafgraph.graph.lambda.getNodeAttributes(leafnodeuuid);\n const { type, args } = leafnodeAttributes.leafnode.data.leaf.logic;\n if (type === \"leafgraph\") {\n const leafgraph_addr = fetchMultiKeyedData(\n leafgraph_apidef.editorconfig.namedatakey,\n args,\n ).toLowerCase();\n const hostgraph_addr = host_domain + \"/\" + host_appid;\n return leafgraph_addr === hostgraph_addr;\n } else {\n return false;\n }\n });\n if (clashing_leafgraph.length === 0) {\n const etaReductionPromiseArr = [];\n if (main_component) {\n //const reductionPromise = etaReduceDataflowComponent({component_members: main_component, contextuallambda, etaTree: etaTree});\n //reductionPromise.then((reducedDataflowFunc) => {\n // graphLUT._default = reducedDataflowFunc;\n //})\n //etaReductionPromiseArr.push(reductionPromise);\n if ([\"2ee89b44-16af-472f-97d4-47ae65f064c8\"].includes(refnode))\n console.log(\"start debugging\");\n graphLUT._default = await etaReduceDataflowComponent({\n refnode: \"leafgraph\",\n component_members: main_component,\n contextuallambda,\n etaTree: etaTree,\n });\n }\n // parse leafconfig from the leafgraph if any\n if (parseLEAFConfig && leafcomponents.leafconfig !== undefined) {\n const leafconfigPromise = etaTree.etaReduceLEAFNode({\n nodeuuid: leafcomponents.leafconfig,\n contextuallambda: contextuallambda,\n }); //etaReduceLambdaGraphs({refnode: a_spelldef_uuid, })\n const leafconfigfLUT = await leafconfigPromise;\n graphLUT[\"_leafconfig\"] = leafconfigfLUT[\"leafconfig\"];\n //leafconfigPromise.then((leafconfigfLUT) => {\n // graphLUT['_leafconfig'] = leafconfigfLUT['leafconfig'];\n //});\n }\n\n // parse all spelldefs from the leafgraph\n Object.entries(leafcomponents.spelldefs).map(([a_spell_name, a_spelldef_uuid]) => {\n // find out if the current leafspelldef would lead to self-looping definitions\n\n const spelldefLUTPromise = etaTree.etaReduceLEAFNode({\n nodeuuid: a_spelldef_uuid,\n contextuallambda: contextuallambda,\n }); //etaReduceLambdaGraphs({refnode: a_spelldef_uuid, })\n // spelldefLUT is an LUT of dataflow-plane-scoped funcs as reduced by etaReduceLEAFNode()\n // as returned by executing the lambda-plane-scoped function of the spelldef leafnode.\n spelldefLUTPromise.then((spelldefLUT) => {\n graphLUT[a_spell_name] = spelldefLUT;\n });\n etaReductionPromiseArr.push(spelldefLUTPromise);\n });\n\n await Promise.all(etaReductionPromiseArr); // block\n }\n\n return graphLUT; // this is what the promise would return once all other impending promises are resolved\n //promiseArr.push(runtimeLEAFGraphMainReductionPromise);\n };\n const runtimeLEAFGraphFuncLUTPromise = promiseFactory();\n\n //const runtimeLEAFGraphLUTPromise = Promise.all(promiseArr);\n\n return runtimeLEAFGraphFuncLUTPromise;\n};\n//const _leafapp = ({ appid=null, superappid=null } ={}, lambdaFunc=x=>x, graphContextual) => {}\nconst _leafgraph = {\n dataflow:\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n // space for node type specific init prior to use\n // check for parsing error conditions\n if (!contextuallambda) {\n throw (\n `LEAF error: the logical construct built using the ${refnodedata.leaf.logic.type} node ` +\n `(${refnode}) called with args (${JSON.stringify(refnodedata.leaf.logic.args)}).`\n );\n }\n // spark_dev_note: I think _leafdataUnbottle currently only supports a single key, in the future it would be whole lot more useful\n // if it supported an array of keys to be unbottled in one go.\n\n //const filterDataOfInterest = _leafdataUnbottle({bottlekey:'_leafdeck'});\n const { args } = refnodedata.leaf.logic;\n\n // TBD: retrieve leafgraph from the lake as per the recorded domain and appid, reconstruct and analyze leafgraph\n const leafgraph_addr_raw = fetchMultiKeyedData(\n leafgraph_apidef.editorconfig.namedatakey,\n args,\n );\n const leafgraph_addr_lower = leafgraph_addr_raw.toLowerCase();\n const leafgraph_addr_str = hasGithubPrefix(leafgraph_addr_raw)\n ? leafgraph_addr_raw\n : leafgraph_addr_lower;\n const parsed_address = parseLeafgraphAddressStrict(leafgraph_addr_str);\n if (!parsed_address) {\n console.error(\n `LEAF Error: _leafgraph(): an invalid graph address (${leafgraph_addr_str}) entered.`,\n );\n return {};\n }\n const { graph_domain, graph_appid } = parsed_address;\n const host_domain = lambdactrl.gos.etaTree.domain; // current domain becomes the host domain of the leafgraph lookup\n const host_appid = lambdactrl.gos.etaTree.appid; // current appid becomes the host appid of the leafgraph lookup\n\n if (graph_domain + \"/\" + graph_appid !== host_domain + \"/\" + host_appid) {\n //let runtimeLEAFGraphFuncLUTPromise;\n //const gql_subs_client = initializeLEAFlakeGQLClient({\n // _domain: graph_domain, _appid: graph_appid,\n // _clientConfig: LEAFIOmetamodel.breezyforest.GQLParameters.clientconfig_qm,\n // _handleChange: ({ graph: {nodes, edges }}={}) => {\n // runtimeLEAFGraphFuncLUTPromise = graphRefUpdateHandler(lambdactrl, host_domain, host_appid, graph_domain, graph_appid, lambdactrl.gos.leafio.getMasterSubsDir(), lambdactrl.gos.etaTree.mnemosyne, lambdactrl.gos.etaTree, contextuallambda)({ graph: {nodes, edges }});\n // }\n //});\n //await gql_subs_client.qm_methods.queryGraph(); // async call\n const runtimeLEAFGraphFuncLUTPromise = graphRefUpdateHandler(\n lambdactrl,\n refnode,\n host_domain,\n host_appid,\n graph_domain,\n graph_appid,\n lambdactrl.gos.leafio,\n lambdactrl.gos.etaTree.mnemosyne,\n lambdactrl.gos.etaTree,\n contextuallambda,\n ); //(ret1);\n\n const runtimeLEAFGraphFuncLUT = await runtimeLEAFGraphFuncLUTPromise;\n\n return (flowinput$Arr, controlflow$obj) => {\n //const flowinput$ = mergeDataflows(flowinput$Arr); // default to merging\n //const flowoutput$ = graphContextual(flowinput$);\n\n // do something with runtimeFuncLUT and transform flowinput$ into flowoutput$\n if (runtimeLEAFGraphFuncLUT) {\n //const flowoutput$ = runtimeLEAFGraphFuncLUT._default([flowinput$]);\n const flowoutput$obj = runtimeLEAFGraphFuncLUT._default(flowinput$Arr, controlflow$obj);\n\n //flowoutput@obj is of form: {_stream, _control: controlflow$obj}; // with controlflow@obj pass thru\n return { ...flowoutput$obj, _control: controlflow$obj };\n } else {\n console.error(\n \"LEAF Error: _leafgraph(): the leafnode was used before the graph retrieval from leaflake finished.\",\n );\n }\n };\n } else {\n console.error(\n `LEAF Error: _leafgraph(): a self-referring leafgraph (${refnode}) is not allowed.`,\n );\n return (flowinput$Arr) => {\n // identity dataflow function\n const flowinput$obj = mergeDataflows(flowinput$Arr); // default to merging\n return { ...flowinput$obj, _control: undefined };\n };\n }\n },\n // lambda opts out to NOT parse leafconfig node\n lambda:\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n // space for node type specific init prior to use\n // note the cross over in the roles of nodelambda and contextuallambda\n // TBD has yet to be implemented\n //const reduced_lambda_obj = etaReduceLambdaGraphs({refnode, nodelambda: contextuallambda, contextuallambda: nodelambda, etaTree: lambdactrl.gos.etaTree});\n const { args } = refnodedata.leaf.logic;\n\n //const reduced_lambda_obj = await etaReduceLambdaGraphs({refnode, nodelambda: contextuallambda, contextuallambda: nodelambda, etaTree: lambdactrl.gos.etaTree});\n\n const leafgraph_addr_raw = fetchMultiKeyedData(\n leafgraph_apidef.editorconfig.namedatakey,\n args,\n );\n const leafgraph_addr_lower = leafgraph_addr_raw.toLowerCase();\n const leafgraph_addr_str = hasGithubPrefix(leafgraph_addr_raw)\n ? leafgraph_addr_raw\n : leafgraph_addr_lower;\n const host_domain = lambdactrl.gos.etaTree.domain; // current domain becomes the host domain of the leafgraph lookup\n const parsed_address = parseLeafgraphAddressWithDefaults(leafgraph_addr_str, host_domain);\n if (!parsed_address) {\n console.error(\n `LEAF Error: _leafgraph(): an invalid graph address (${leafgraph_addr_str}) entered.`,\n );\n return {};\n }\n const host_appid = lambdactrl.gos.etaTree.appid; // current appid becomes the host appid of the leafgraph lookup\n const { graph_domain, graph_appid } = parsed_address;\n\n if (\n graph_domain === \"breezyforest\" ||\n graph_domain + \"/\" + graph_appid !== host_domain + \"/\" + host_appid\n ) {\n //const gql_subs_client = initializeLEAFlakeGQLClient({\n // _domain: graph_domain, _appid: graph_appid,\n // _clientConfig: LEAFIOmetamodel.breezyforest.GQLParameters.clientconfig_qm,\n // _handleChange: ({ graph: {nodes, edges }}={}) => {\n // runtimeLEAFGraphFuncLUTPromise = graphRefUpdateHandler(host_domain, host_appid, graph_domain, graph_appid, lambdactrl.gos.masterSubsDirectory, contextuallambda)({ graph: {nodes, edges }});\n // }\n //});\n try {\n //const gql_subs_client = initializeLEAFlakeGQLClient({\n // _clientConfig: LEAFIOmetamodel.breezyforest.GQLParameters.clientconfig_qm,\n //});\n //const ret1 = await gql_subs_client.qm_methods.queryGraph({_domain: graph_domain, _appid: graph_appid});\n if (graph_appid === \"editor\") console.log(\"start debugging\");\n if ([\"3be30006-5b56-4b27-8eaa-249c6a46a557\"].includes(refnode))\n console.log(\"start debugging\");\n const runtimeLEAFGraphFuncLUTPromise = graphRefUpdateHandler(\n lambdactrl,\n refnode,\n host_domain,\n host_appid,\n graph_domain,\n graph_appid,\n lambdactrl.gos.leafio,\n lambdactrl.gos.etaTree.mnemosyne,\n lambdactrl.gos.etaTree,\n contextuallambda,\n ); //(ret1);\n //gql_subs_client.subs_methods.queryGraph({_domain: domain, _appid: appid, subsCallback: handleGraphUpdate(done)});\n\n //const qmresponsePromise = gql_subs_client.qm_methods.queryGraph();\n //await qmresponsePromise; // blocking call\n const runtimeLEAFGraphFuncLUT = await runtimeLEAFGraphFuncLUTPromise;\n\n return runtimeLEAFGraphFuncLUT;\n } catch (err) {\n console.error(\"leafgraph.lambda:\", err);\n return undefined;\n }\n } else {\n console.error(\n `LEAF Error: _leafgraph(): a self-referring leafgraph (${refnode}) is not allowed.`,\n );\n return {};\n }\n\n //const lambda_lut = {};\n //Object.entries(reduced_lambda_obj).map(([key, etafunc]) => {\n // lambda_lut[key] = (input$) => { // a dataflow-scoped func per key\n // const output$ = etafunc(input$);\n // return output$;\n // }\n //});\n //return lambda_lut;\n },\n // _lambda opts in to parse leafconfig node\n _lambda:\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n // space for node type specific init prior to use\n // note the cross over in the roles of nodelambda and contextuallambda\n // TBD has yet to be implemented\n //const reduced_lambda_obj = etaReduceLambdaGraphs({refnode, nodelambda: contextuallambda, contextuallambda: nodelambda, etaTree: lambdactrl.gos.etaTree});\n const { args } = refnodedata.leaf.logic;\n\n //const reduced_lambda_obj = await etaReduceLambdaGraphs({refnode, nodelambda: contextuallambda, contextuallambda: nodelambda, etaTree: lambdactrl.gos.etaTree});\n\n const leafgraph_addr_raw = fetchMultiKeyedData(\n leafgraph_apidef.editorconfig.namedatakey,\n args,\n );\n const leafgraph_addr_lower = leafgraph_addr_raw.toLowerCase();\n const leafgraph_addr_str = hasGithubPrefix(leafgraph_addr_raw)\n ? leafgraph_addr_raw\n : leafgraph_addr_lower;\n const host_domain = lambdactrl.gos.etaTree.domain; // current domain becomes the host domain of the leafgraph lookup\n const parsed_address = parseLeafgraphAddressWithDefaults(leafgraph_addr_str, host_domain);\n if (!parsed_address) {\n console.error(\n `LEAF Error: _leafgraph(): an invalid graph address (${leafgraph_addr_str}) entered.`,\n );\n return {};\n }\n const host_appid = lambdactrl.gos.etaTree.appid; // current appid becomes the host appid of the leafgraph lookup\n const { graph_domain, graph_appid } = parsed_address;\n\n if (\n graph_domain === \"breezyforest\" ||\n graph_domain + \"/\" + graph_appid !== host_domain + \"/\" + host_appid\n ) {\n //const gql_subs_client = initializeLEAFlakeGQLClient({\n // _domain: graph_domain, _appid: graph_appid,\n // _clientConfig: LEAFIOmetamodel.breezyforest.GQLParameters.clientconfig_qm,\n // _handleChange: ({ graph: {nodes, edges }}={}) => {\n // runtimeLEAFGraphFuncLUTPromise = graphRefUpdateHandler(host_domain, host_appid, graph_domain, graph_appid, lambdactrl.gos.masterSubsDirectory, contextuallambda)({ graph: {nodes, edges }});\n // }\n //});\n try {\n //const gql_subs_client = initializeLEAFlakeGQLClient({\n // _clientConfig: LEAFIOmetamodel.breezyforest.GQLParameters.clientconfig_qm,\n //});\n //const ret1 = await gql_subs_client.qm_methods.queryGraph({_domain: graph_domain, _appid: graph_appid});\n if (graph_appid === \"editor\") console.log(\"start debugging\");\n if ([\"3be30006-5b56-4b27-8eaa-249c6a46a557\"].includes(refnode))\n console.log(\"start debugging\");\n const runtimeLEAFGraphFuncLUTPromise = graphRefUpdateHandler(\n lambdactrl,\n refnode,\n host_domain,\n host_appid,\n graph_domain,\n graph_appid,\n lambdactrl.gos.leafio,\n lambdactrl.gos.etaTree.mnemosyne,\n lambdactrl.gos.etaTree,\n contextuallambda,\n true,\n ); //(ret1);\n //gql_subs_client.subs_methods.queryGraph({_domain: domain, _appid: appid, subsCallback: handleGraphUpdate(done)});\n\n //const qmresponsePromise = gql_subs_client.qm_methods.queryGraph();\n //await qmresponsePromise; // blocking call\n const runtimeLEAFGraphFuncLUT = await runtimeLEAFGraphFuncLUTPromise;\n\n return runtimeLEAFGraphFuncLUT;\n } catch (err) {\n console.error(\"leafgraph.lambda:\", err);\n return undefined;\n }\n } else {\n console.error(\n `LEAF Error: _leafgraph(): a self-referring leafgraph (${refnode}) is not allowed.`,\n );\n return {};\n }\n\n //const lambda_lut = {};\n //Object.entries(reduced_lambda_obj).map(([key, etafunc]) => {\n // lambda_lut[key] = (input$) => { // a dataflow-scoped func per key\n // const output$ = etafunc(input$);\n // return output$;\n // }\n //});\n //return lambda_lut;\n },\n methods:\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n return {\n //etatreeforest: { // leafgraph methods to be used by etatreeforest.js and by graphRefUpdateHandler()\n // parseGraphEtaTree: async (graphdomain, graphappid) => {\n // const host_domain = lambdactrl.gos.etaTree.domain;\n // const host_appid = lambdactrl.gos.etaTree.appid;\n // const graph_data = await lambdactrl.gos.etaTree.leaflakeio.qm_methods.queryGraph({_domain: graphdomain, _appid: graphappid});\n // //runtimeLEAFGraphFuncLUTPromise = graphRefUpdateHandler(lambdactrl, host_domain, host_appid, graph_domain, graph_appid, lambdactrl.gos.leafio, lambdactrl.gos.etaTree.mnemosyne, lambdactrl.gos.etaTree, contextuallambda)(graph_data);\n // const {nodes, edges } = graph_data;\n // const leafgraph = reconstructLEAFGraph(nodes);\n // const leafcomponents = analyzeLEAFGraph(leafgraph);\n //\n // // TBD: currently no mechanism is in place to support multiple runtimeEtaTrees.\n // // refactor eta.js to make runtimeEtaTree an object that can be encapsulated and instantiated.\n // // initialize leaf compiler\n // //runtimeEtaTree.initTree(leafgraph, leafcomponents, masterSubsDirectory);\n // const hostEtaTree = lambdactrl.gos.etaTree;\n // const etaTree = runtimeEtaTree(host_domain, host_appid, graph_domain, graph_appid, leafgraph, leafcomponents, lambdactrl.gos.leafio, hostEtaTree.leaflakeio, hostEtaTree.mnemosyne, hostEtaTree);\n // const main_component = leafcomponents.components.nodegroups.runtime[0];\n // const lambda_components = leafcomponents.components.nodegroups.lambda;\n //\n // // set etaTree in the main mnemosyne's memory space with the key name '_etaTreeForest' using the treename\n // const treename = graph_domain+\"/\"+graph_appid;\n // const parentname = hostEtaTree ? host_domain+\"/\"+host_appid : undefined;\n // _leafmemoryio.methods(lambdactrl)({}).etatreeforest.setEtaTree(treename, etaTree, parentname); // setEtaTree of etatreeforest.js accessed via the formalities of _leafmemoryio methods\n // return etaTree;\n // }\n //},\n //general: {\n // getNodeData: () => {\n // return refnodedata;\n // },\n // executeLEAFlisp: (lispcode) => {\n // return run(lispcode);\n // }\n //}\n };\n },\n};\n\nexport { _leafgraph };\n","//import { etaReduceLambdaGraphs, etaReduceDataflowComponent, wrapInputStreamArrayHandler, runtimeEtaTree } from '../../eta';\n\n/*\n * _leafanchor() is a placeholder function for the LEAF node of logic type 'leafanchor'.\n * it is used to mark an anchor point to which a leaf graph can be anchored (equivalent to commenting out the graph's logic).\n * it is neither dataflow-plane-scoped nor lambda-plane-scoped, as it only bears meaning during\n * the compilation of a leaf graph\n */\nconst _leafanchor = {\n dataflow:\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n // space for node type specific init prior to use\n console.error(\n `LEAF error: the logical construct built using the ${refnodedata.leaf.logic.type} node ` +\n `(${refnode}) called with args (${JSON.stringify(refnodedata.leaf.logic.args)}) cannot ` +\n \"be defined as a dataflow-scoped node.\",\n );\n //return (flowinput$) => { // identify function\n // return flowinput$;\n //};\n return undefined;\n },\n lambda:\n (lambdactrl) =>\n async ({ refnode, refnodedata, nodelambda, contextuallambda } = {}) => {\n // space for node type specific init prior to use\n // note the cross over in the roles of nodelambda and contextuallambda\n console.error(\n `LEAF error: the logical construct built using the ${refnodedata.leaf.logic.type} node ` +\n `(${refnode}) called with args (${JSON.stringify(refnodedata.leaf.logic.args)}) cannot ` +\n \"be defined as a lambda-scoped node.\",\n );\n //return (flowinput$) => { // identify function\n // return flowinput$;\n //};\n return undefined;\n },\n};\n\nexport { _leafanchor };\n","/*\n * author: spark@leautomaton.com\n * copyright LEA\n *\n * LEAF graph interpreter v0.1\n * 16 Dec 2021\n *\n */\nimport { map, share, takeUntil, switchMap, withLatestFrom, filter } from \"rxjs/operators\";\nimport { merge, BehaviorSubject, Subject } from \"rxjs\";\nimport { LEAFIOmetamodel } from \"../metamodel.js\";\n//import { processLEAFNodeLogic } from './breezyforest';\nimport Graph from \"graphology\";\nimport { connectedComponents } from \"../../utils/connectedComponents.js\";\n\nimport {\n isSpellDefComponent,\n isDataflowPlaneScoped,\n isLambdaPlaneScoped,\n isLambdaComponent,\n isRuntimeComponent,\n isAnchoredComponent,\n isLEAFConfigComponent,\n} from \"./predicates.js\";\n\nimport { Buffer } from \"buffer\";\n\nimport { firstValueFrom } from \"rxjs\";\n//import { TIMEOUTBEHAVIOR_BESTEFFORT, combineDataflows, chronosDataflow, CHRONOSTYPE_SYNC } from '../utils/leafdataflow';\nimport { _leafgraph } from \"./nodelogic/abstraction/index.js\";\nimport { doBottle } from \"./nodelogic/datautils/bottling.js\";\n\nconst _version = LEAFIOmetamodel.breezyforest._version;\n\n// various combining mechanisms explained in\n// https://indepth.dev/posts/1114/learn-to-combine-rxjs-sequences-with-super-intuitive-interactive-diagrams\n\n/*\n * function parseLEAFNode() is used to parse a LEAF node\n * in order to set up its LEAF execution logic and to configure the mode of execution accordingly\n * the function returns a function that executes the given logic.\n * running the returned function provided with an array of input streams would return an output stream,\n * reflecting the result of the executed logic.\n * arguments:\n * @lambdactrl: a json object representing a LEAF node's control data's duality consisting of gos and user\n * @gos\n * @user:\n * @config: a json object specifying the configuration options for the node's mode of execution\n * here, things like\n * @lambdadata:\n * @nodeLambdaFunc: a parsed runtime lambda function connected to the current node\n * @graphContextual: a parsed runtime lambda function connected to the graph of which the current node is a member\n * example node_data retrieved from leaflake:\n * {\n * 'leaf': {\n * 'api': 'breezynode',\n * 'logic': {\n * 'type': 'leafdeckclub',\n * 'args': {'logictoggle': False, 'deckname': 'Lim'}\n * },\n * 'node': {'leaduuid': '21e88429-2917-4e74-939f-919f17a1c4c6'}\n * },\n * 'leafeditor': {'position': {'x': 240, 'y': 256}}\n * }\n */\n//const parseLEAFNode = (node_dualplane_data, config={}, nodeLambdaFunc, graphContextual) => {}\n//const parseLEAFNode = (input) => {\n// const {\n// lambdactrl, //: {gos: {standardSpellBook={}, curatedSpellBook={}}, user: {spellbook={}, leaf, config={}}}\n// lambdadata //: {lambdaFunc: nodeLambdaFunc, graphContextual}\n// }=input;\n// const defaultConfig = {combineOperator: 'merge', isIndexed: false, metamodel: LEAFIOmetamodel.breezyforest};\n// //const node_data = JSON.parse(Buffer.from(node.data, 'base64').toString('utf-8')); // parse base64 into a json object\n// const fullConfig = {...defaultConfig, ...lambdactrl.user.config};\n//\n// //const processLEAFNodeLogic = ({lambdactrl: {gos={}, user: args={}}, lambdadata: {lambdaFunc: nodeLambdaFunc, graphContextual}}) => {}\n// const leafNodeLogic = processLEAFNodeLogic({lambdactrl, lambdadata});\n// const inputCombineFunc = combineInputStreams(fullConfig);\n// const flattenArray = (x) => Array.isArray(x) ? x.flatMap(_x=>_x) : x;\n// return (input$Arr) => {\n// if (input$Arr.length > 0) {\n// // make a configurable choice of combining input streams via either merge, zip, combineLatest, etc as defined in combineOpDictionary\n// const combinedInput$ = inputCombineFunc(input$Arr); //.pipe(\n// // map((_data) => { // a window for debugging\n// // console.log(_data);\n// // return _data;\n// // })\n// //); // to combine 1, [2, [3]] into [1, [2, [3]]] or 1 into [1]\n// const flattendInput$ = combinedInput$.pipe(map(x=>flattenArray(x))); //.pipe(\n// // map((_data) => { // a window for debugging\n// // console.log(_data);\n// // return _data;\n// // })\n// //); // to flatten [1,[2, [3]]] into [1, 2, [3]] or [1] into [1]\n// //const output$ = combinedInput$.pipe(\n// // map(node_input=>{\n// // let node_output = null;\n// // //console.log('input$ ' + JSON.stringify(input$));\n// // console.log('input: '+ node_input + ' ' + Date.now() + ' ' + JSON.stringify(node_data));\n// // // execute node level logic and optionally set node_output here\n// // node_output = processLEAFNodeLogic(node_data.leaf.logic)(node_input);\n// // console.log('node logic executed: ' + JSON.stringify(node_output));\n// // return node_output ? node_output : node_input; // the default is to return input i as is. return a node defined non-null output otherwise.\n// // })\n// //);\n//\n// const output$ = leafNodeLogic(flattendInput$);\n// return output$;\n// }\n// //else {\n// // // where a node has zero input streams,\n// // // the node would act as a point of origin indefinitely generating a default data stream\n// // // of unbridled interval indexes 0,1,2,3,...\n// // // spark_dev_note: ponder about whether supporting timed intervals here would be of any use.\n// // // for example, it could be used in throttling the LEAF data processing throughput.\n// // //const output$ = interval().pipe(\n// // // map(node_input=> {\n// // // let node_output = null;\n// // // console.log('source input: '+ node_input + ' ' + Date.now() + ' ' + JSON.stringify(node_data));\n// // // // execute node level logic and optionally set node_output here\n// // // node_output = processLEAFNodeLogic(node_data.leaf.logic)(node_input);\n// // // console.log('node logic executed: ' + JSON.stringify(node_output));\n// // // return node_output ? node_output : node_input; // the default is to return input i as is. return a node defined non-null output otherwise.\n// // // })\n// // //);\n// // const generatedInput$ = interval();\n// // const output$ = leafNodeLogic(generatedInput$);\n// // return output$;\n// //}\n// };\n//};\n\n//const addNodeIfNotRedundant = ( graph, uuid, data ) => {\n// if (!graph.hasNode(uuid))\n// graph.addNode(uuid, data);\n//};\n\n/*\n * parseSpellBook() parses a spellbook represented in graph into a js function LUT of spells.\n * @spellbookgrapho: a graphology Graph carrying nodes, each identified by uuid containing as attributes the corresponding leafnode and its decoded data.\n * the graph only carries dataflow plane edges.\n * @leaflib: is a js func library (LUT) carrying references to the leaf standard lib + standard spells + curated spells\n * @masterSubsDirectory: is an object carrying the details for establishing LEAFIO protocols\n * (that support inter-component communication channels) between some leafnodes\n */\n/*\n * reconstructLEAFGraph() initializes a GOSjs-compatable graph data structure based on the @nodes passed in.\n * a single LEAF component is defined only within the context of nodes and data edges (i.e. leafdataedge).\n * a LEAF component is a runtime LEAF component if none of its nodes is part of lambdasources.\n * a LEAF component is a lambda LEAF component if any of its nodes is part of lambdasources.\n * a LEAF component is an anchored LEAF component if any of its nodes is part of anchortargets.\n * @nodes: a data object carrying a list of nodes & their associated edges transported from LEAFlake via GraphQL.\n * @masterSubsDirectory: a directory of inter-component communication channels\n */\nconst reconstructLEAFGraph = (nodes, masterSubsDirectory) => {\n const dataflowgraph = new Graph();\n const lambdagraph = new Graph();\n const combinedgraph = new Graph();\n let thespadeuuid = undefined;\n // register start and end nodes\n //graph.addNode('leafstart');\n //graph.addNode('leafend');\n // process nodes data\n nodes.forEach((node) => {\n //const node_data = JSON.parse(atob(node.data));\n const node_data = JSON.parse(Buffer.from(node.data, \"base64\").toString(\"utf-8\"));\n if (node_data.leaf.logic.type === \"leafdeckspade\") thespadeuuid = node.uuid;\n // add node\n // construct a graphology node-attributes lut to use node uuids to look up corresponding gos-level control data and user-level control data\n //const parseLEAFNode = ({lambdactrl: {gos: {standardSpellBook={}, curatedSpellBook={}}, user:{spellbook={}, config={}}}, lambdadata: {lambdaFunc: nodeLambdaFunc, graphContextual}}) => {}\n // TBD: spark_dev_note: currently there are rather too many duplicates of graphology objects lying around causing clutter without adding any usefulness.\n // to make matters worse, the naming of these graphs isn't really self-explanatory enough.\n // analyze the code base regarding their usage and cut down the clutter and/or change their names.\n dataflowgraph.addNode(node.uuid, {\n leafnode: { ...node, data: node_data },\n lambdactrl: {\n gos: {\n standardSpellBook: {},\n curatedSpellBook: {},\n masterSubsDirectory: masterSubsDirectory,\n },\n user: { spellbook: {}, config: node_data },\n },\n });\n lambdagraph.addNode(node.uuid, {\n leafnode: { ...node, data: node_data },\n lambdactrl: { gos: masterSubsDirectory, user: node_data },\n });\n combinedgraph.addNode(node.uuid, {\n leafnode: { ...node, data: node_data },\n lambdactrl: { gos: masterSubsDirectory, user: node_data },\n });\n //dataflowgraph.addNode(node.uuid, {leafnode: {...node, data: node_data}, lambdactrl: {gos: {standardSpellBook: {}, curatedSpellBook: {}}, user: {spellbook:{}, config:node_data}}});\n //lambdagraph.addNode(node.uuid, {leafnode: {...node, data: node_data}, lambdactrl: {gos: {}, user: node_data}});\n //combinedgraph.addNode(node.uuid, {leafnode: {...node, data: node_data}, lambdactrl: {gos: {}, user: node_data}});\n // vs code erroneously claims atob is deprecated.\n //addNodeIfNotRedundant(graph, node.uuid, {leaf: JSON.parse(atob(node.data)).leaf} );\n });\n\n const datasources = new Set();\n const datatargets = new Set();\n const lambdasources = new Set();\n const lambdatargets = new Set();\n const lambdasourcelut = {};\n const anchortargets = new Set();\n // process edges data\n nodes.forEach((node) => {\n //node.out_edges.filter((an_edge, idx) => {})\n // access and check the edge type, and filter in if of leafdataedge\n node.out_edges.forEach((an_edge, index) => {\n //const edge_data = JSON.parse(atob(an_edge.data)).leaf;\n const edge_data = JSON.parse(Buffer.from(an_edge.data, \"base64\").toString(\"utf-8\")).leaf;\n if (edge_data.logic.type === \"leafdataedge\") {\n // leafdataedge\n if (!dataflowgraph.edge(an_edge.source.uuid, an_edge.target.uuid)) {\n dataflowgraph.addEdgeWithKey(\n an_edge.uuid,\n an_edge.source.uuid,\n an_edge.target.uuid,\n edge_data,\n );\n combinedgraph.addEdgeWithKey(\n an_edge.uuid,\n an_edge.source.uuid,\n an_edge.target.uuid,\n edge_data,\n );\n datasources.add(an_edge.source.uuid);\n datatargets.add(an_edge.target.uuid);\n } else {\n console.error(\n `duplicate edge data detected linking ${an_edge.source.uuid} and ${an_edge.target.uuid}`,\n );\n }\n } else if (edge_data.logic.type === \"leaflambdaedge\") {\n if (an_edge.source.uuid.slice(0, 4) === \"9935\") {\n const teststr = JSON.parse(Buffer.from(an_edge.data, \"base64\").toString(\"utf-8\"));\n console.log(\"start debugging\", teststr);\n return;\n }\n lambdagraph.addEdgeWithKey(\n an_edge.uuid,\n an_edge.source.uuid,\n an_edge.target.uuid,\n edge_data,\n );\n combinedgraph.addEdgeWithKey(\n an_edge.uuid,\n an_edge.source.uuid,\n an_edge.target.uuid,\n edge_data,\n );\n // build source and target sets constituting all instances of leaflambdaedge\n lambdasources.add(an_edge.source.uuid); // used to determine lambda vs non-lambda components\n lambdatargets.add(an_edge.target.uuid); // used to determine if a node's leaf logic has a lambda component\n\n // LUT used to look-up a source lambda node, if any, of a node.\n // any unintended key clashes would turn up as an array of source node uuids sharing the same key as a target\n lambdasourcelut[an_edge.target.uuid] =\n an_edge.target.uuid in lambdasourcelut\n ? [an_edge.source.uuid].concat(lambdasourcelut[an_edge.target.uuid]) // array indicating a key clash\n : [an_edge.source.uuid]; // an array of a single uuid to begin with\n } else if (edge_data.logic.type === \"leafanchoredge\") {\n // leafanchoredge\n //console.log(edge_data.logic.type);\n anchortargets.add(an_edge.target.uuid); // used to determine if a component is anchored\n }\n });\n });\n\n // return a reconstructed object carrying information just enough to parse the LEAF logic given in the graph\n return {\n graph: { lambda: lambdagraph, dataflow: dataflowgraph },\n thespade: { uuid: thespadeuuid },\n edges: {\n data: { sources: datasources, targets: datatargets },\n lambda: { sources: lambdasources, targets: lambdatargets, sourcelut: lambdasourcelut },\n anchor: { targets: anchortargets },\n },\n };\n};\n\n/*\n * analyzeLEAFGraph() takes as input @leafgraph and\n * isolates and analyzes the graph components to determine their scopes (runtime, lambda or anchored)\n * @leafgraph: an object returned by reconstructLEAFGraph()\n * a LEAF component is a runtime LEAF component if none of its nodes is part of lambdasources.\n * a LEAF component is a lambda LEAF component if any of its nodes is part of lambdasources.\n * a LEAF component is an anchored LEAF component if any of its nodes is part of anchortargets.\n */\nconst analyzeLEAFGraph = (leafgraph) => {\n console.time(\"analyzeLEAFGraph\");\n // component lists\n const runtimeList = [];\n const lambdaList = [];\n const anchoredList = [];\n\n // analyze components in terms only of nodes and data edges\n const components = connectedComponents(leafgraph.graph.dataflow);\n\n //console.log(JSON.stringify(components));\n\n // a utility function to assist with building a LUT cumulatively\n const buildComponentLUT = (\n nodesList,\n componentIdx,\n componentScope,\n componentCategory,\n cumulativeLUT,\n ) => {\n const lut = { ...cumulativeLUT };\n nodesList.forEach((nodeuuid) => {\n lut[nodeuuid] = {\n idx: componentIdx,\n scope: componentScope,\n category: componentCategory,\n metadata: leafgraph.graph.dataflow._nodes.get(nodeuuid).attributes.leafnode.data.leaf.logic, // added for Tracy the tracer bottle support #tracy #tracythetracer #tracerbottle\n };\n });\n\n return lut;\n };\n\n let componentDetailsLUT = {};\n const spelldefnodes = {};\n let leafconfignode = undefined;\n // spark_dev_note: array iteration in js using forEach does not allow early return out of the iteration.\n // for conditions requiring early termination, use either some or every\n components.forEach((component) => {\n // pushing [component] in a js array inserts each component (i.e. a list of node uuids)\n // as a single entry in the array\n if (isAnchoredComponent(component, leafgraph)) {\n anchoredList.push(component);\n //console.log(JSON.stringify(component), ' is anchored.');\n } else {\n const is_lambdacomp = isLambdaComponent(component, leafgraph);\n const is_spelldefcomp = isSpellDefComponent(component, leafgraph);\n const is_leafconfigcomp = isLEAFConfigComponent(component, leafgraph);\n if (is_lambdacomp || is_spelldefcomp || is_leafconfigcomp) {\n const curLen = lambdaList.push(component);\n const component_idx = curLen - 1;\n let component_scope = undefined; // scope undefined as default\n // now determine if the lambda dataflow component is defined with the scope of dataflow or lambda plane\n if (isDataflowPlaneScoped(component, leafgraph)) {\n component_scope = \"dataflow\"; // to mean dataflow-plane-scoped\n } else if (isLambdaPlaneScoped(component, leafgraph)) {\n component_scope = \"lambda\"; // to mean lambda-plane-scoped\n } else {\n console.error(\n `LEAF Error: analyzeLEAFGraph(): the lambda dataflow component (idx: ${component_idx}) is NOT defined with the scope of either the dataflow plane or the lambda plane.`,\n );\n }\n\n const component_cat = \"lambda\";\n componentDetailsLUT = buildComponentLUT(\n component,\n component_idx,\n component_scope,\n component_cat,\n componentDetailsLUT,\n );\n //console.log(JSON.stringify(component), ' is a lambda component.');\n\n if (is_spelldefcomp) {\n const spelldefnodedata = leafgraph.graph.dataflow.getNodeAttributes(component[0]).leafnode\n .data; // graphology node attributes: {gos: subs_directory, user: node_data}\n spelldefnodes[spelldefnodedata.leaf.logic.args.spellname] = component[0]; // build a spelldef lut by name\n } else if (is_leafconfigcomp) {\n leafconfignode = component[0];\n }\n } else if (isRuntimeComponent(component, leafgraph)) {\n const curLen = runtimeList.push(component);\n const main_idx = curLen - 1;\n componentDetailsLUT = buildComponentLUT(\n component,\n main_idx,\n \"dataflow\",\n \"main\",\n componentDetailsLUT,\n );\n //console.log(JSON.stringify(component), ' is a runtime component.');\n } else\n console.info(\n \"LEAF Error: analyzeLEAFGraph():\",\n JSON.stringify(component),\n \" is an unknown component.\",\n );\n }\n });\n console.timeEnd(\"analyzeLEAFGraph\");\n return {\n spelldefs: spelldefnodes,\n leafconfig: leafconfignode,\n components: {\n nodegroups: { runtime: runtimeList, lambda: lambdaList, anchored: anchoredList },\n lut: componentDetailsLUT,\n },\n };\n};\n\n/*\n * parseLEAFGraph() is where leafgraph is parsed, eta reduced in multiple stages and is converted\n * to the final form of a single js executable logic accepting input$ and returning output$ for runtime evaluation.\n * @leafgraph: an object assembled from the objects returned by reconstructLEAFGraph() and analyzeLEAFGraph(), breaking down as follows\n * {\n * graph: a graphology object\n * edges: {\n * // edge definitions in terms of source/target node lists as per leaf edge type, and a LUT to lookup\n * // lambda source nodes given a target node.\n * data: {sources: datasources, targets: datatargets},\n * lambda: {sources: lambdasources, targets: lambdatargets, sourcelut: lambdasourcelut},\n * anchor: {targets: anchortargets}\n * },\n * spelldefs: a set of 'leafspellnode' nodes defining user-defined spells for the graph\n * components: {\n * nodegroups: {runtime: runtimeList, lambda: lambdaList, anchored: anchoredList},\n * lut: {lambda: lambdaComponentLUT}\n * },\n * contextual: is a js runtime function providing the contextual background for running the current graph against data streams\n * {\n * components (DEPRECATED): a list of super-leafgraph components that can be used to establish runtime contextual\n * backgrounds in terms of governing how the current graph would run the data flow.\n * this field is equivalent to having a list of delta components, not at a component level but\n * at a graph level. A super graph is higher in runtime calling hierarchy than a (sub-)graph,\n * meaning that the super graph knows more about the data source one way or another\n * as its context is closer to the source.\n * nodeoforigin (DEPRECATED): uuid of the node in the super leafgraph, representing the current leafgraph;\n * used for tracing the current graph's lambda input with respect to its super graph's context.\n * }\n * }\n */\n//const parseLEAFGraph = (leafgraph) => {\n// const {\n// graph,\n// edges,\n// spelldefs,\n// components,\n// contextual,\n// } = leafgraph;\n//\n// const defaultOutputHandlingConfig = {combineOperator: 'merge', isIndexed: false, metamodel: LEAFIOmetamodel.breezyforest};\n//\n// // spark_dev_note: LEAF breezyforest allows a single node to have multiple lambda edges,\n// // each of which harbours an isolated LEAF data processing logic while sharing the same data input.\n// // Lambda inputs would allow user-level customization/configuration of how a node should function\n// const constructRuntimeLEAFjs = (nodeuuid, func$LUT) => {\n// // rough pseudo code\n// // find a list of nodeuuids for the nodes providing data input$ into the current node (nodeuuid) using the graphology Graph graph.dataflow\n// const datainputnodes = graph.dataflow.mapInEdges(nodeuuid, (edge)=>{return graph.dataflow.source(edge)});\n// // oneliner: if nodeuuid has lambda connections, look up the lambda component and parse it\n// //if (nodeuuid in edges.lambda.sourcelut) // if the current node is a target of a lambda edge\n// // look up the source lambda component as follows and run parseLEAFComponent on that component\n// // const lambdasourcenode = edges.lambda.sourcelut[nodeuuid];\n// // const componentidx = components.lut.lambda[lambdasourcenode];\n// // const lambdacomponent = components.nodegroups.lambda[componentidx];\n// // parseLEAFComponent(lambdacomponent); // this should return something with which to construct the ultimate runtime js function.\n// // all of the above in one liner :)\n// const lambdacomponentRuntimeFunc = (nodeuuid in edges.lambda.sourcelut) ?\n// (_input$) => {return parseLEAFComponent(components.nodegroups.lambda[components.lut[edges.lambda.sourcelut[nodeuuid]].idx])(_input$)} :\n// undefined; //(_input$) => {return _input$}; // no op, just relay the given input stream as output if no lambda definition\n// // find a js-runtime abstract functional reference for each input node uuid from the list of input nodes\n// const datainputnodesRuntimeFuncList = datainputnodes.map((a_node_uuid)=>{\n// // return a reference to a function with which to weave a long chain of functions prior to subscription call\n// // if it is in the startnodes list\n// // return func$LUT[nodeuuid]([]);\n// // else\n// // make a recursive call to constructRuntimeLEAFjs()\n// //const _runtimeLEAFjsFunc = func$LUT[a_node_uuid](lambdacomponentRuntimeFunc);\n// //if (startnodes.includes(a_node_uuid))\n// // return (_input$Arr) => {return _runtimeLEAFjsFunc(_input$Arr)};\n// //else\n// // return (_input$Arr) => {return constructRuntimeLEAFjs(a_node_uuid)(_input$Arr)}; // should return something, just hasn't been determined yet\n// const _runtimeLEAFjsFunc = constructRuntimeLEAFjs(a_node_uuid, func$LUT);\n// return (_input$Arr) => {return _runtimeLEAFjsFunc(_input$Arr)}; // should return something, just hasn't been determined yet\n// }); // is a list of functions to call functions in order to defer the evaluation of _input$Arr till the end.\n//\n// const nodeInputConfig = {}; // get node specific input stream combining config, default is {}\n// const defaultInputHandlingConfig = {combineOperator: 'merge', isIndexed: false, metamodel: LEAFIOmetamodel.breezyforest};\n// //const node_data = JSON.parse(Buffer.from(node.data, 'base64').toString('utf-8')); // parse base64 into a json object\n// const fullInputConfig = {...defaultInputHandlingConfig, ...nodeInputConfig};\n// const runtimeLEAFjsFunc = func$LUT[nodeuuid](lambdacomponentRuntimeFunc);\n// return (_input$Arr) => {\n// // combineInput$Func() expects 1 or more input$ given in the argument __input$Arr\n// //console.log('runtime LEAFjs _input$Arr: ', _input$Arr);\n// const combineInput$Arr = (__input$Arr) => {\n// // make a configurable choice of combining input streams via either merge, zip, combineLatest, etc as defined in combineOpDictionary\n// const combinedInput$ = combineInputStreams(fullInputConfig)(__input$Arr);\n// // const output$ = combinedInput$ // production use\n// const output$ = combinedInput$.pipe( // development use\n// map(node_input=>{\n// let node_output = null;\n// //console.log('input: '+ node_input + ' ' + Date.now())\n// // execute node level logic and optionally set node_output here\n// //node_output = processLEAFNodeLogic(node_data.leaf.logic)(node_input);\n// //console.log('node logic executed: ' + JSON.stringify(node_output));\n// return node_output ? node_output : node_input; // the default is to return input i as is. return a node defined non-null output otherwise.\n// })\n// );\n// return output$;\n// };\n// return runtimeLEAFjsFunc(\n// datainputnodesRuntimeFuncList.length > 0 ?\n// [combineInput$Arr(\n// datainputnodesRuntimeFuncList.map((inputFunc) => inputFunc(_input$Arr))\n// )] :\n// _input$Arr\n// );\n// };\n// };\n//\n// const parseLEAFComponent = (leafcomponent, endnodes, func$LUT) => {\n// //console.log(leafcomponent);\n//\n// // parse LEAF ahead of data input streams\n// const runtimeLEAFComponentFuncList = endnodes.map((nodeuuid) => constructRuntimeLEAFjs(nodeuuid, func$LUT));\n//\n// return (_input$Arr) => {\n// const output$Arr = runtimeLEAFComponentFuncList.map((compFunc) => {\n// return compFunc(_input$Arr);\n// });\n// const combinedOutput$ = combineInputStreams(defaultOutputHandlingConfig)(output$Arr);\n// // const output$ = combinedInput$ // production use\n// return combinedOutput$;\n// };\n// };\n//\n// // parse the user-defined spellbook out of @spelldefs\n//\n// //console.log(components.lut);\n// //return (_input$Arr) => {\n// // const output$Arr = components.nodegroups.runtime.map((leafcomponent) => {\n// // return parseLEAFComponent(leafcomponent)(_input$Arr);\n// // });\n// // const combinedOutput$ = combineInputStreams(defaultOutputHandlingConfig)(output$Arr);\n// // return combinedOutput$;\n// //};\n// const leafGraphRuntimeComponentsLUT = {};\n// components.nodegroups.runtime.map((leafcomponent, compindex) => { // leafcomponent here is a list of nodeuuids belonging to that leafcomponent\n// // find start and end nodes\n// const startnodes = [];\n// const endnodes = [];\n// const func$LUT = {};\n// // build a func LUT out of the nodes of a LEAF graph component.\n// leafcomponent.forEach((nodeuuid) => {\n// const isSourceNode = edges.data.sources.has(nodeuuid);\n// const isTargetNode = edges.data.targets.has(nodeuuid);\n// if (!isTargetNode)\n// startnodes.push(nodeuuid);\n// if (!isSourceNode)\n// endnodes.push(nodeuuid);\n//\n// const lambda_ctrl_data = graph.dataflow.getNodeAttributes(nodeuuid); // graphology node attributes: {gos: subs_directory, user: node_data}\n// // <--- a good place to intervene for debugging the function below the unit-test level\n//\n// // leafUnitFunc is the function to execute node's logic, configured as per node_data and other configs.\n// // default usage pattern: const output$ = leafUnitFunc(input$list);\n// const leafUnitFunc = (lambdaFunc) => parseLEAFNode(\n//// {data: \"eyJsZWFmIjogeyJhcGkiOiAiYnJlZXp5bm9kZSIsICJsb2dpYyI6IHsidHlwZSI6ICJsZWFmZGVja2NsdWIiLCAiYXJncyI6IHsibG9naWN0b2dnbGUiOiBmYWxzZSwgImRlY2tuYW1lIjogIkxpbSJ9fSwgIm5vZGUiOiB7ImxlYWR1dWlkIjogIjIxZTg4NDI5LTI5MTctNGU3NC05MzlmLTkxOWYxN2ExYzRjNiJ9fSwgImxlYWZlZGl0b3IiOiB7InBvc2l0aW9uIjogeyJ4IjogMjQwLCAieSI6IDI1Nn19fQ==\"},\n// {\n//\n// lambdactrl: {\n// ...lambda_ctrl_data.lambdactrl,\n// user: {\n// ...lambda_ctrl_data.lambdactrl.user,\n// leaf: lambda_ctrl_data.leafnode.data.leaf,\n// config: {combineOperator: 'merge', isIndexed: false}, // merge being the default mode of combining multiple dataflow streams\n// }\n// },\n// lambdadata: {\n// //{combineOperator: 'merge', isIndexed: false},\n// lambdaFunc,\n// graphContextual: contextual\n// }\n// }\n// );\n// func$LUT[nodeuuid] = leafUnitFunc;\n// });\n//\n// leafGraphRuntimeComponentsLUT[compindex] = parseLEAFComponent(leafcomponent, endnodes, func$LUT); // func references expecting input$Arr to be passed by argument upon calling them\n// });\n//\n// return (_input$Arr) => {\n// const _output$Arr = Object.entries(leafGraphRuntimeComponentsLUT).map(([_compindex, _compRuntime]) => {\n// return _compRuntime(_input$Arr);\n// });\n// const _combinedOutput$ = combineInputStreams(defaultOutputHandlingConfig)(_output$Arr);\n// return _combinedOutput$;\n// };\n//};\n\nconst raceConditionError = doBottle(\n \"error\",\n {\n type: \"critical\",\n message: \"LEAF core error: race condition detected in leaf.js\",\n codebase: \"/src/ghostos/api/parser/leaf.js\",\n },\n {},\n);\nconst ctrl_accio_bottle = doBottle(\"accio\", \"ctrl_accio\", { provenance: \"executeLEAFLogic\" });\n//const data_accio_bottle = doBottle('accio', 'data_accio');\nconst executeLEAFLogic = async (\n leaflogic,\n data_input,\n runtimeconfig = {},\n refnode = undefined,\n ctrl_input = undefined,\n) => {\n //const data_input$ = new BehaviorSubject({...raceConditionError, _label: {at: \"leaf.js executeLEAFLogic data stream\"}});\n const data_input$ = new Subject(); //new BehaviorSubject({...raceConditionError, _label: {at: \"leaf.js executeLEAFLogic data stream\"}});\n //const ctrl_input$ = new BehaviorSubject({...raceConditionError, _label: {at: \"leaf.js executeLEAFLogic ctrl stream\"}});\n const ctrl_input$ = new Subject();\n // ctrlinput$.next(doBottle('accio', 'ctrl_accio')); // the default ctrl mesg as per App.js\n const controldata$obj = { _stream: ctrl_input$, _config: runtimeconfig }; // spark_dev_note: #ctrlflow_config, leafelement text\n const output$obj = leaflogic([{ _stream: data_input$ }], controldata$obj);\n //let output = undefined;\n if (output$obj) {\n const dataret_prom = firstValueFrom(\n output$obj._control._stream.pipe(\n withLatestFrom(output$obj._stream),\n map((_combined_in) => {\n return _combined_in[1]; // return data\n }),\n ),\n );\n data_input$.next(data_input);\n if (ctrl_input) ctrl_input$.next(ctrl_input);\n else ctrl_input$.next(ctrl_accio_bottle);\n const dataret = await dataret_prom;\n\n return dataret;\n }\n //const dataret = output$obj ? await firstValueFrom(output$obj._stream) : undefined;\n //console.log(dataret);\n return undefined;\n};\n\nconst subs_ctrl_accio_bottle = doBottle(\"accio\", \"ctrl_accio\", {\n provenance: \"subscribeToLEAFLogic\",\n});\n//const subs_data_accio_bottle = doBottle('accio', 'data_accio');\nconst subscribeToLEAFLogic = async (leaflogic, input, runtimeconfig, stopper$) => {\n const data_input$ = new BehaviorSubject({\n ...raceConditionError,\n _label: { at: \"leaf.js subscribeToLEAFLogic data stream\" },\n });\n const ctrl_input$ = new BehaviorSubject({\n ...raceConditionError,\n _label: { at: \"leaf.js subscribeToLEAFLogic ctrl stream\" },\n });\n data_input$.next(input);\n ctrl_input$.next(subs_ctrl_accio_bottle);\n const controldata$obj = { _stream: ctrl_input$, _config: runtimeconfig };\n const output$obj = leaflogic([{ _stream: data_input$ }], controldata$obj);\n let _ctrl_in_cache = undefined;\n const ret = output$obj\n ? output$obj._control._stream\n .pipe(\n switchMap((_ctrl_in) => {\n _ctrl_in_cache = _ctrl_in;\n return output$obj._stream;\n }),\n map((_data_in) => {\n return [_ctrl_in_cache, _data_in];\n }),\n takeUntil(stopper$),\n )\n .subscribe({\n next: (x) => {\n //outbuffer = outbuffer.concat(x);\n console.log(\"inner next: \", x);\n //reRenderApp();\n },\n error: (err) => {\n // error\n console.error(\"Error: \" + err);\n },\n complete: () => {\n console.log(\"subs complete\");\n },\n })\n : undefined;\n console.log(ret);\n //return output;\n};\n\n// flowname, by default, is undefined. if specified however, the input data would be labelled using\n// a dictionary object in which the flowname is the key and the input data is the value.\n// this data transformation is handy for the purpose of logically mapping multiple input streams\n// (obtained either via the main dataflow stream or via lambda invocation output streams)\n// flowing into a leaf node.\nconst executeLEAFLogicInSync = (\n leaflogic,\n input$,\n output$inst,\n ctrlinput$,\n runtimeconfig,\n flowname = undefined,\n) => {\n //const input$ = of(input);\n const controldata$obj = { _stream: ctrlinput$, _config: runtimeconfig };\n if (output$inst) {\n if (!output$inst.runtime) {\n const run_leaflogic = async () => {\n leaflogic([{ _stream: input$ }], controldata$obj)\n ._stream.pipe(\n //take(1), // a safeguard\n map((_) => {\n const outdata = flowname\n ? (() => {\n const _outdata = new Object();\n _outdata[flowname] = _;\n return _outdata;\n })()\n : _;\n console.log(outdata);\n if (output$inst) output$inst.subject$.next(outdata);\n return outdata;\n }),\n //concatMap(invokesignal => { // resetting the signal boundary for ease of debugging\n // return of(invokesignal);\n //})\n )\n .subscribe({\n next: (_) => {\n console.log(\"leaf.js output$inst.runtime leaflogic subs: \", _);\n },\n complete: () => {\n console.log(\"leaf.js output$inst.runtime leaflogic subs completed.\");\n },\n });\n };\n output$inst.runtime = run_leaflogic();\n }\n\n return {\n _stream: output$inst.subject$,\n };\n } else {\n const output$obj = leaflogic([{ _stream: input$ }], controldata$obj);\n //{\n // _stream: leaflogic([{_stream: input$}], controldata$obj)._stream.pipe(\n // //take(1), // a safeguard\n // map( _ => {\n // const outdata = flowname ? (()=>{const _outdata = (new Object()); _outdata[flowname] = _; return _outdata;})() : _;\n // console.log(outdata);\n // return outdata;\n // })\n // //concatMap(invokesignal => { // resetting the signal boundary for ease of debugging\n // // return of(invokesignal);\n // //})\n // )\n //};\n\n return output$obj;\n }\n};\n\nglobalThis.TRACEON = true;\nglobalThis.TRACESIZE = 30;\n\nconst timeoutPromise = (prom, time, codebase, exception, metadata) => {\n let timer;\n return Promise.race([\n prom,\n new Promise(\n (_resolve, _rej) =>\n (timer = setTimeout(\n () => {\n //rej();\n const errorbottle = doBottle(\"error\", {\n type: \"timeout\",\n message: exception,\n codebase,\n metadata,\n });\n console.error(exception, errorbottle);\n //rej(errorbottle);\n _resolve(errorbottle);\n },\n time,\n exception,\n )),\n ),\n ]).finally(() => clearTimeout(timer));\n};\nconst leafTraceFlow = (_prevtraces, _curtrace, consolelog = false) => {\n if (globalThis.TRACEON) {\n if (consolelog) {\n console.log(\"leaf.js trace: \", JSON.stringify(_curtrace));\n }\n if (Array.isArray(_prevtraces)) {\n return [..._prevtraces, { timestamp: Date.now(), trace: _curtrace }];\n } else if (_prevtraces === undefined) {\n return [{ timestamp: Date.now(), trace: _curtrace }];\n } else {\n console.log(\"start debugging\");\n }\n } else {\n return _prevtraces ? _prevtraces : []; //_prevtraces;\n }\n};\n// transformation defines any data transformation logic, in terms of the following\n// datalogic is a function offering some data transformation logic, as defined by the calling leafnode.\n// if undefined, the flow is driven without any datalogic (\"map-level\") data transformation to the data flow content.\n// leaflogic is a leaf flow function offering some data transformation/action logic, as defined by the calling leafnode.\n// if undefined, the flow is driven without any leaflogic (\"concatMap-level\") data transformation to the data flow content.\nconst driveDataflowByCtrlflow = (\n inflow_ctrl$obj,\n data_inflow$objArr,\n meta_ctrl_in$,\n context = {},\n transformation = { leaflogic: undefined, datalogic: { pre: undefined, post: undefined } },\n) => {\n //const _outflow_data$ = outflow_data$ !== undefined ? outflow_data$ : new BehaviorSubject({...raceConditionError, _label: {at: \"leaf.js driveDataflowByCtrlflow data stream\"}});\n //const _outflow_data$ = outflow_data$ !== undefined ? outflow_data$ : new BehaviorSubject(raceConditionError);\n //const _outflow_data$ = outflow_data$ !== undefined ? outflow_data$ : new Subject();\n const _outflow_data$ = new Subject();\n //const _ctrl_traffic_flag$ = new BehaviorSubject({...raceConditionError, _label: {at: \"leaf.js driveDataflowByCtrlflow ctrl traffic flag stream\"}});\n const _ctrl_bridge$ = new Subject(); //new BehaviorSubject({...raceConditionError, _label: {at: \"leaf.js driveDataflowByCtrlflow bridged ctrl stream\"}});\n const _data_bridge$ = new Subject(); //new BehaviorSubject({...raceConditionError, _label: {at: \"leaf.js driveDataflowByCtrlflow bridged data stream\"}});\n //let _combined_bridge$ = undefined;\n //const _combined_bridge_ready$ = new Subject();\n //const _outflow_data_ctrl$ = new Subject();\n //const _outflow_data$ = outflow_data$ !== undefined ? outflow_data$ : new Subject();\n let _ctrl_data_cache = undefined;\n if (\n [\n \"e9e6e44b-792b-46d0-b1d3-58ce2f46c45b\",\n \"c822ae2e-1be8-46be-b2cb-21a43cef0555\",\n \"98d167d3-c1ed-4d4a-9ab9-25eaccd20a91\",\n ].includes(context.refnode)\n )\n console.log(\"start debugging\");\n\n //const setupLogicStream = async () => {\n // const _leaflogicProm = Promise.resolve(transformation.leaflogic); // transformation.leaflogic may be either undefined, a promise of a leaf stream function or a leaf stream function\n // const _leaflogic = await (transformation.leaflogic ?\n // timeoutPromise(_leaflogicProm, 35000, \"leaf.js driveDataflowByCtrlflow()\", \"LEAF Error: resolving transformation.leaflogic timed out\", context):\n // Promise.resolve(undefined));\n\n // const leaflogic_out$obj = ((_leaflogic !== undefined) ?\n // _leaflogic([{_stream: _data_bridge$}], {_stream: (meta_ctrl_in$ !== undefined ? merge(_ctrl_bridge$, meta_ctrl_in$) : _ctrl_bridge$), _config: {...inflow_ctrl$obj._config}}) :\n // {\n // //combineLatest(preprocessed_inflow_data$objArr.map(_obj=>_obj._stream)) :\n // _stream: _data_bridge$,\n // _control: {_stream: _ctrl_bridge$, _config: {...inflow_ctrl$obj._config, traces: leafTraceFlow(inflow_ctrl$obj._config?.traces, context)}}\n // }\n // );\n\n // return leaflogic_out$obj._control._stream.pipe(\n // withLatestFrom(leaflogic_out$obj._stream)\n // )\n //};\n\n const _leaflogic = transformation.leaflogic;\n if (_leaflogic !== undefined && typeof _leaflogic !== \"function\") console.log(\"start debugging\");\n const leaflogic_out$obj =\n _leaflogic !== undefined\n ? _leaflogic([{ _stream: _data_bridge$ }], {\n _stream:\n meta_ctrl_in$ !== undefined ? merge(_ctrl_bridge$, meta_ctrl_in$) : _ctrl_bridge$,\n _config: { ...inflow_ctrl$obj._config },\n })\n : {\n //combineLatest(preprocessed_inflow_data$objArr.map(_obj=>_obj._stream)) :\n _stream: _data_bridge$,\n _control: {\n _stream: _ctrl_bridge$,\n _config: {\n ...inflow_ctrl$obj._config,\n traces: leafTraceFlow(inflow_ctrl$obj._config?.traces, context),\n },\n },\n };\n\n //firstValueFrom(of(1).pipe(\n // switchMap(_in => {\n // return setupLogicStream();\n // }),\n // switchMap(_combined$ => {\n // _combined_bridge$ = _combined$;\n // _combined_bridge_ready$.next();\n // return _combined$;\n // })\n //));\n\n //const _side$ = setupLogicStream();\n //of(1).pipe(\n // map(_in=> {\n // return setupLogicStream();\n // }),\n // switchMap(_combined$ => {\n // return _combined$;\n // })\n //);\n\n const inflow_data$ =\n data_inflow$objArr.length > 1\n ? merge(...data_inflow$objArr.map((_in$obj) => _in$obj._stream))\n : data_inflow$objArr[0]._stream;\n\n const _outflow_ctrl$ = inflow_ctrl$obj._stream.pipe(\n withLatestFrom(inflow_data$),\n switchMap((_combined_in) => {\n if ([\"806e0a4b-badf-42a0-85af-5ad306385c58\"].includes(context.refnode))\n console.log(\"start debugging\");\n if (data_inflow$objArr.length > 1) console.error(\"start debugging\");\n const _ctrl_in = _combined_in[0];\n\n const _data_in =\n transformation.datalogic?.pre !== undefined\n ? transformation.datalogic.pre(_combined_in[1])\n : _combined_in[1];\n _ctrl_data_cache = _ctrl_in?.length === 1 ? _ctrl_in[0] : _ctrl_in;\n const _new_ctrl_data = {\n ..._ctrl_data_cache,\n traces: leafTraceFlow(\n _ctrl_data_cache?.traces,\n {\n ...context,\n at: \"leaf.js driveDataflowByCtrlflow, initial switch-mapping of the ctrl signal to drive dataflow through a resolved leaflogic\",\n },\n true,\n ),\n };\n //const endof_leaflogic_probe = firstValueFrom(leaflogic_out$obj._control._stream)\n setTimeout(() => {\n _data_bridge$.next(_data_in);\n _ctrl_bridge$.next(_new_ctrl_data);\n }, 1);\n //return new BehaviorSubject(_combined_in);\n //await endof_leaflogic_probe;\n //return _new_ctrl_data;\n return leaflogic_out$obj._control._stream;\n }),\n //switchMap(_ctrl_relay$ => {\n // return _ctrl_relay$;\n //}),\n //map(_ctrl_in => {\n // if (context.refnode === \"a9a46a08-110a-4c44-ac83-3caaf40623c5\")\n // console.log(\"_ctrl_in to be registered in leaflogic output\", context.refnode, _ctrl_in);\n // return _ctrl_in;\n //}),\n withLatestFrom(leaflogic_out$obj._control._stream),\n withLatestFrom(leaflogic_out$obj._stream),\n map((_combined_in) => {\n return [_combined_in[0][1], _combined_in[1]];\n }),\n //withLatestFrom(leaflogic_out$obj._stream),\n map((_combined_in) => {\n if (context.refnode === \"a9a46a08-110a-4c44-ac83-3caaf40623c5\")\n console.log(\n \"_combined_in to be registered in nodeflowinterface\",\n context.refnode,\n _combined_in,\n );\n if ([\"38567c62-7513-4ec3-9011-2fcf6c51ec7b\"].includes(context.refnode))\n console.log(\"start debugging\");\n const _next_data =\n transformation.datalogic?.post !== undefined\n ? transformation.datalogic.post(_combined_in[1])\n : _combined_in[1];\n //_combined_in.slice(1).map(_outflow_data=>{return(transformation.datalogic.post(_outflow_data));}) :\n //if ([\"7acea147-96b9-4c83-8a0f-1c3f4e6947b5\", \"290a5581-6247-4c1b-bb42-4790c8ceb551\"].includes(context.refnode))\n // console.log(\"start debugging\");\n //if(!Array.isArray(_next_data))\n // console.log(\"start debugging\");\n const _filtered_data = Array.isArray(_next_data)\n ? _next_data.filter((_data) => _data !== undefined)\n : _next_data !== undefined\n ? _next_data\n : undefined;\n\n if (_filtered_data !== undefined) // now take care of data plurality\n {\n //if (_filtered_data.length === 1)\n // _outflow_data$.next(_filtered_data[0]); // publish the next available post-processed data via the data flow subject channel\n //else if (_filtered_data.length > 1)\n // _outflow_data$.next(_filtered_data); // publish the next available post-processed data via the data flow subject channel\n //else\n // _outflow_data$.next(_filtered_data); // possibly just []\n _outflow_data$.next(_filtered_data); // possibly just []\n\n //_outflow_data_ctrl$.next(\"timing nudge\");\n console.log(\"leaf.js driveDataflowByCtrlflow, _data signal emitted\", context, _combined_in);\n\n console.log(\"leaf.js driveDataflowByCtrlflow, relaying ctrl signal\");\n //setTimeout(() => {\n // outer_relay_ctrl$.next(_combined_in[0]);\n //}, 1);\n ////return new BehaviorSubject(_combined_in[0]); // only pass the ctrl data in the flow;\n //return outer_relay_ctrl$;\n }\n return _combined_in[0];\n }),\n //withLatestFrom(outer_relay_ctrl$),\n map((_out_sig) => {\n return _out_sig;\n }),\n share(),\n );\n return {\n _stream: _outflow_data$.pipe(\n filter(\n (_outflow_data) =>\n JSON.stringify({ ..._outflow_data, _label: {} }) !== JSON.stringify(raceConditionError),\n ),\n share(),\n ),\n _control: {\n _stream: _outflow_ctrl$.pipe(\n map((_ctrl_in) => {\n //_ctrl_traffic_flag$.next(_ctrl_in);\n if (\n [\n \"e9e6e44b-792b-46d0-b1d3-58ce2f46c45b\",\n \"c822ae2e-1be8-46be-b2cb-21a43cef0555\",\n ].includes(context.refnode)\n )\n console.log(\"start debugging\");\n return _ctrl_in;\n }),\n share(),\n ),\n _config: {\n ...inflow_ctrl$obj._config,\n traces: leafTraceFlow(inflow_ctrl$obj._config?.traces, context),\n },\n },\n };\n};\n\nconst parseAddressableGraph = async (addrstr, _etaTree, _refnode) => {\n const lambdactrl = {\n gos: {\n standardSpellbook: {},\n curatedSpellbook: {},\n stdlambdalut: {},\n curatedlambdalut: {},\n //leafio: leafRuntimeRef.current.leafio,\n //etaTree: {mnemosyne: mainMnemosyne, domain: host_domain, appid: host_appid}, // a bit redundant way of passing down information, refactor to be reduced to pass down only what's needed down the road\n //leafio: props.etaTree.leafio,\n //etaTree: props.etaTree, // root etaTree\n leafio: _etaTree.leafio,\n etaTree: _etaTree, // root etaTree\n },\n user: {\n spellbook: {},\n lambdalut: {},\n },\n };\n const { domain, appid } = lambdactrl.gos.etaTree;\n const leafgraph_args = { graphuuid: \"\", domain, appid, graphaddrstr: addrstr }; //'breezyforest/editor'\n try {\n const getLEAFGraph = _leafgraph.lambda(lambdactrl)({\n refnode: _refnode,\n refnodedata: { leaf: { logic: { args: leafgraph_args } } },\n nodelambda: [],\n contextuallambda: [],\n });\n const rt_leafgraph = await getLEAFGraph; //.then((response) => // async call to get leafgraph\n\n console.log(rt_leafgraph);\n\n return rt_leafgraph;\n } catch (error) {\n console.error(error);\n return {};\n }\n};\n\n//export {_version, parseLEAFNode, reconstructLEAFGraph, analyzeLEAFGraph, parseLEAFGraph}\nexport {\n _version,\n reconstructLEAFGraph,\n analyzeLEAFGraph,\n executeLEAFLogic,\n subscribeToLEAFLogic,\n executeLEAFLogicInSync,\n driveDataflowByCtrlflow,\n leafTraceFlow,\n parseAddressableGraph,\n timeoutPromise,\n};\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"graphql/language/index.mjs\");","import { parse, print } from \"graphql/language/index.mjs\";\n\nconst wsScheme = (url) => {\n const parts = url.split(\"://\");\n return (parts[0].includes(\"https\") ? \"wss\" : \"ws\") + \"://\" + parts[1];\n};\n\nconst cloneObject = (obj) => {\n if (!obj || (obj && obj.constructor.name !== \"Object\")) {\n return obj;\n }\n return JSON.parse(JSON.stringify(obj));\n};\n\nconst getOperationFromQueryFileContent = (fileContent, operationName) => {\n try {\n const parsed = parse(fileContent);\n if (parsed.definitions.length > 1) {\n if (!operationName) {\n throw new Error(\n \"this queryfile has multiple operations. Please choose an operation name using --operationName flag.\",\n );\n }\n const operationDef = parsed.definitions.find((d) => {\n return d.name.value === operationName;\n });\n if (!operationDef) {\n throw new Error(\"could not find the given operation name in the given queryFIle\");\n }\n const queryString = print({\n kind: \"Document\",\n definitions: [operationDef],\n });\n return queryString;\n }\n return fileContent;\n } catch (e) {\n throw new Error(e.message);\n }\n};\n\nexport { wsScheme, cloneObject, getOperationFromQueryFileContent };\n","// code taken from the implementation of graphqurl (https://github.com/hasura/graphqurl.git)\n// modified by spark@leautomaton.com to function in leaf_editor\n//\nimport { cloneObject, wsScheme } from \"./utils.js\";\nimport {\n GQL_CONNECTION_INIT,\n GQL_START,\n GQL_STOP,\n GRAPHQL_SUBSCRIPTIONS_PROTOCOL,\n handler as wsEventHandler,\n} from \"./events.js\";\n\nconst createGQLClient = (options) => {\n const { endpoint, websocket, headers, hook } = options;\n\n const clientContext = {\n endpoint,\n headers: cloneObject(headers || {}),\n websocket: {\n ...websocket,\n endpoint: (websocket && websocket.endpoint) || wsScheme(endpoint),\n parameters: (websocket && websocket.parameters) || {},\n client: null,\n open: false,\n subscriptions: {},\n },\n };\n\n const executeQuery = async (queryOptions, successCallback, errorCallback) => {\n const { query, headers: headerOverrides } = queryOptions;\n\n const headers = {\n ...clientContext.headers,\n ...(headerOverrides || {}),\n };\n // spark_dev_note: having the content-type specified on graphql queries/mutations isn't compatible with leaf server\n\n try {\n let response;\n //response = await fetch(clientContext.endpoint, {method: 'POST', body: JSON.stringify({\"query\": \"query {getGraph(userid:\\\"1\\\", appid:\\\"2\\\") {userid appid nodes {uuid label data}}}\"})});\n console.log(\"graphql/client.js executeQuery: \", query);\n response = await fetch(clientContext.endpoint, {\n method: \"POST\",\n headers: headers, // spark changed from headers, -> headers: headers,\n credentials: \"include\", // https://stackoverflow.com/questions/34558264/fetch-api-with-cookie\n //body: JSON.stringify({query, variables: (variables || {})}),\n body: query,\n });\n const responseObj = await response.json();\n if (hook) {\n hook(responseObj);\n }\n if (responseObj.errors) {\n if (errorCallback) {\n errorCallback(responseObj);\n }\n throw responseObj;\n } else {\n if (successCallback) {\n successCallback(responseObj);\n }\n return responseObj;\n }\n } catch (e) {\n console.log(e);\n throw e;\n //if (e.errors) {\n // throw e;\n //} else {\n // throw {\n // errors: [{\n // message: 'failed to fetch',\n // }],\n // };\n //}\n }\n };\n\n const makeWsClient = async () => {\n try {\n // https://github.com/heineiuo/isomorphic-ws\n const wsConnection = new WebSocket(\n clientContext.websocket.endpoint,\n GRAPHQL_SUBSCRIPTIONS_PROTOCOL,\n );\n wsConnection.onerror = (e) => {\n console.log(\"WebSocket connection error:\", e);\n };\n wsConnection.onclose = (e) => {\n console.log(\"WebSocket connection closed:\", e);\n };\n return wsConnection;\n } catch (e) {\n console.log(e);\n throw new Error(\"Failed to establish the WebSocket connection: \", e);\n }\n };\n\n const sendWsEvent = (data) => {\n clientContext.websocket.client.send(JSON.stringify(data));\n };\n\n const setWsClient = (_wsClient) => {\n clientContext.websocket.client = _wsClient;\n\n if (clientContext.websocket.shouldRetry) {\n _wsClient.onclose = () => {\n makeWsClient().then(setWsClient);\n };\n }\n\n _wsClient.addEventListener(\"open\", () => {\n const payload = {\n ...clientContext.websocket.parameters,\n headers: {\n ...clientContext.headers,\n ...clientContext.websocket.parameters.headers,\n },\n };\n sendWsEvent({\n type: GQL_CONNECTION_INIT,\n payload,\n });\n });\n\n _wsClient.addEventListener(\"message\", (event) => {\n wsEventHandler(clientContext.websocket, event);\n });\n };\n\n const establishWS = () => {\n makeWsClient()\n .then((_wsClient) => {\n console.log(\"setting websocket for LEAF graphql subscription\");\n setWsClient(_wsClient);\n })\n .catch((e) => {\n console.error(e);\n });\n //setWsClient(makeWsClient());\n };\n\n if (websocket) {\n establishWS();\n }\n\n const subscribe = (subscriptionOptions, successCallback, errorCallback) => {\n if (!clientContext.websocket.client) {\n console.log(\"WebSocket connection has not been established\");\n return;\n }\n\n const {\n operationId,\n subscription,\n variables,\n onGraphQLData,\n onGraphQLError,\n onGraphQLComplete,\n } = subscriptionOptions;\n\n clientContext.websocket.subscriptions[operationId] = {\n onGraphQLData: (data) => {\n if (onGraphQLData) {\n onGraphQLData(data);\n }\n if (successCallback) {\n successCallback(data);\n }\n },\n onGraphQLComplete: (data) => {\n if (onGraphQLComplete) {\n onGraphQLComplete(data);\n }\n },\n onGraphQLError: (data) => {\n if (onGraphQLError) {\n onGraphQLError(data);\n }\n if (errorCallback) {\n errorCallback(data);\n }\n },\n };\n\n sendWsEvent({\n type: GQL_START,\n id: operationId,\n payload: {\n query: subscription,\n variables: variables || {},\n },\n });\n\n return {\n stop: () => {\n sendWsEvent({\n type: GQL_STOP,\n id: operationId,\n });\n },\n };\n };\n\n const updateHeaders = (newHeaders) => {\n clientContext.headers = cloneObject(newHeaders);\n if (clientContext.websocket.client) {\n makeWsClient()\n .then(setWsClient)\n .catch((e) => {\n console.error(e);\n });\n }\n };\n\n return {\n query: executeQuery,\n subscribe: subscribe,\n updateHeaders,\n establishWS,\n clientContext,\n };\n};\n\nexport { createGQLClient };\n","const GRAPHQL_SUBSCRIPTIONS_PROTOCOL = \"graphql-ws\";\n\n// events emitted from client to server\nconst GQL_CONNECTION_INIT = \"connection_init\";\nconst GQL_CONNECTION_STOP = \"connection_terminate\";\nconst GQL_START = \"start\";\nconst GQL_STOP = \"stop\";\n\n// events received from server by client\nconst GQL_CONNECTION_ERROR = \"connection_error\";\nconst GQL_CONNECTION_ACK = \"connection_ack\";\nconst GQL_CONNECTION_KEEP_ALIVE = \"ka\";\nconst GQL_DATA = \"data\";\nconst GQL_ERROR = \"error\";\nconst GQL_COMPLETE = \"complete\";\n\nconst handler = (ctx, event) => {\n let { data } = event;\n try {\n data = JSON.parse(data);\n } catch {\n console.error(\"unable to parse event data; unexpected event from server\");\n return;\n }\n\n let s;\n switch (data.type) {\n case GQL_CONNECTION_ACK:\n if (ctx.onConnectionSuccess) {\n ctx.onConnectionSuccess();\n }\n ctx.open = true;\n return;\n case GQL_CONNECTION_ERROR:\n if (ctx.onConnectionError) {\n ctx.onConnectionError(data);\n }\n return;\n case GQL_CONNECTION_KEEP_ALIVE:\n if (ctx.onConnectionKeepAlive) {\n ctx.onConnectionKeepAlive();\n }\n return;\n case GQL_DATA:\n s = ctx.subscriptions[data.id];\n if (s && s.onGraphQLData) {\n s.onGraphQLData(data.payload);\n }\n return;\n case GQL_ERROR:\n s = ctx.subscriptions[data.id];\n if (s && s.onGraphQLError) {\n s.onGraphQLError(data.payload);\n }\n return;\n case GQL_CONNECTION_STOP:\n return;\n case GQL_COMPLETE:\n s = ctx.subscriptions[data.id];\n if (s && s.onGraphQLComplete) {\n s.onGraphQLComplete(data.payload);\n }\n delete ctx.subscriptions[data.id];\n break;\n default:\n console.error(\"LEAF gql error: unrecognized gql data type \", data.type);\n }\n};\n\nexport { handler, GQL_CONNECTION_INIT, GQL_START, GQL_STOP, GRAPHQL_SUBSCRIPTIONS_PROTOCOL };\n","/*\n * author: spark@leautomaton.com\n * date: 19th Nov 2021\n */\n\nimport { LEAFIOmetamodel } from \"../metamodel.js\";\n\nimport { createGQLClient } from \"../../graphql/client.js\";\nimport lodashpkg from \"lodash\";\n\nconst { memoize } = lodashpkg; // nodejs compatible lodash import\n\nconst SUBS_GRAPH = ({ _domain, _appid, filter = {}, query } = {}) =>\n `\n subscription {\n graph: getGraph(domain: \"${_domain}\", appid: \"${_appid}\", filter: ${filter}) ${query}\n }\n`;\n\n//# getGraph(appmode: String!, hostdomain: String!, hostappid: String!, domain: String!, appid: String!, filter: GraphFilter): Graph\n// query {\n// graph: getGraph(appmode: \"${_appmode}\", hostdomain: \"${_hostdomain}\", hostappid: \"${_hostappid}\", domain: \"${_domain}\", appid: \"${_appid}\", filter: ${filter}) ${query}\n// }\nconst QUERY_GRAPH = ({\n _appmode,\n _hostdomain,\n _hostappid,\n _domain,\n _appid,\n filter = {},\n query,\n} = {}) =>\n `\n query {\n graph: getGraph(domain: \"${_domain}\", appid: \"${_appid}\", filter: ${filter}) ${query}\n }\n`;\n\nconst MUT_DELNODE = `mutation DeleteNode($uuid: String!) {\n deleteNode(nfilter: {uuid: {eq: $uuid}}) {node {uuid}}\n}`;\n\nconst MUT_UPDATENODE = `mutation UpdateNode($uuid: String!, $data: String!) {\n updateNode(input: {filter: {uuid: {eq: $uuid}}, set: {data: $data}}) {node {uuid}}\n}`;\n\nconst MUT_ADDNODE = `mutation AddNode($uuid: String!, $data: String!, $graphdomain: String!, $graphappid: String!, $provdomain: String!, $provappid: String!) {\n addNode(input: [{uuid: $uuid, graph: {domain: $graphdomain, appid: $graphappid}, provenance: {domain: $provdomain, appid: $provappid}, data: $data}]) {node {uuid}}\n}`;\n\nconst MUT_ADDEDGE = `mutation AddEdge($uuid: String!, $sourceuuid: String!, $targetuuid: String!, $data: String!, $graphdomain: String!, $graphappid: String!, $provdomain: String!, $provappid: String!) {\n addEdge(input: [{uuid: $uuid, source: {uuid: $sourceuuid}, target: {uuid: $targetuuid}, graph: {domain: $graphdomain, appid: $graphappid}, provenance: {domain: $provdomain, appid: $provappid}, data: $data}]) {edge {uuid}}\n}`;\n\nconst MUT_DELEDGE = `mutation DeleteEdge($uuid: String!) {\n deleteEdge(efilter: {uuid: {eq: $uuid}}) {edge {uuid}}\n}`;\n//const a_new_uuid = uuidv4();\n//const MUT_ADDNODE = `mutation { addNode(input: [{uuid: \"${a_new_uuid}\", label: \"\", data: \"\"}]) {node {label}} }`;\n//const MUT_ADDNODE = `mutation { addNode(input: [{label: \"ala999\", data: \"\"}]) {node {label}} }`;\n\n// spark_dev_note: TBD: the following config is only valid for testing/debugging.\n// for production use, please change it to gdb.leafgon.com URIs\n//const defaultLEAFlakeConfig = {\n// dburi_subs: process.env.LEAFGON_ENDPOINT_SUBS, //\"http://localhost:10001/sgraphql\",\n// dburi_subs_ws: process.env.LEAFGON_WEBSOCKET_SUBS, //\"ws://localhost:10001/sgraphql\",\n// dburi_qm: process.env.LEAFGON_ENDPOINT_QM, //\"http://localhost:10001/qmgraphql\",\n//};\nconst defaultLEAFlakeConfig = {\n dburi_subs: process.env.LEAFGON_ENDPOINT_SUBS, //\"https://gdb.leafgon.com/sgraphql\",\n dburi_subs_ws: process.env.LEAFGON_WEBSOCKET_SUBS, //\"wss://gdb.leafgon.com/sgraphql\",\n dburi_qm: process.env.LEAFGON_ENDPOINT_QM, //\"httpx://gdb.leafgon.com/qmgraphql\",\n};\n\n//const initializeLEAFlakeGQLClient = ({_domain, _appid, _clientConfig=defaultLEAFlakeConfig, _handleChange=blankChangeHandler, _metamodel=LEAFIOmetamodel.breezyforest}={}) => {}\nconst initializeLEAFlakeGQLClient = ({\n _clientConfig = defaultLEAFlakeConfig,\n _metamodel = LEAFIOmetamodel.breezyforest,\n _sessionid = undefined,\n} = {}) => {\n //const dburi = metamodel.GQLParameters[metamodel.SubsDirectory.leaflake.gqlclient];\n //const dburi_subs = _clientConfig.dburi_subs;\n //const dburi_qm = _clientConfig.dburi_qm;\n\n //const endpoint_subs = dburi_subs ? `https://${dburi_subs}`: undefined;\n //const websocket_subs = dburi_subs ? `wss://${dburi_subs}`: undefined; //\"www.leafgon.com:10001/sgraphql\"\n //const endpoint_qm = dburi_subs ? `https://${dburi_qm}`: undefined;\n //const prodLEAFlakeConfig = _metamodel.GQLParameters.clientconfig_full;\n const endpoint_subs = _clientConfig.dburi_subs ? _clientConfig.dburi_subs : undefined;\n const websocket_subs = _clientConfig.dburi_subs_ws ? _clientConfig.dburi_subs_ws : undefined; //\"www.leafgon.com:10001/sgraphql\"\n const endpoint_qm = _clientConfig.dburi_qm ? _clientConfig.dburi_qm : undefined;\n const client_auth_key = _clientConfig.clientAuthKey ? _clientConfig.clientAuthKey : undefined;\n //const nfilter = _appid ? `{ appid: {eq: \"${_appid}\"} }` : '{}';\n const masterquery = _metamodel.GQLParameters.masterquery;\n\n let leaflakeclientobj = { subscriptions: {}, subs_methods: {}, qm_methods: {} };\n\n const reconnectGQLClient = ({ gql_subs_client, force = false } = {}) => {\n if (\n force ||\n [WebSocket.CLOSED, WebSocket.CLOSING].includes(\n gql_subs_client.clientContext.websocket.client.readyState,\n )\n ) {\n console.log(\n \"LEAF Log: gos.api.leafio.leaflake: WebSocket currently not open or opening. Re-establishing the connection...\",\n );\n gql_subs_client.establishWS();\n }\n };\n\n // establish a client connection for gql query+mutation\n leaflakeclientobj.gql_qm_client =\n endpoint_qm &&\n createGQLClient({\n endpoint: endpoint_qm,\n headers: client_auth_key\n ? {\n //'Content-Type': 'application/json', // should never use this when using fetch\n Accept: \"application/json\",\n \"X-API-Key\": client_auth_key,\n }\n : {\n //'Content-Type': 'application/json', // should never use this when using fetch\n Accept: \"application/json\",\n },\n });\n\n const gqlsubsclientPromise = new Promise((resolve, reject) => {\n // establish a client connection to subscribe to the backend changes\n leaflakeclientobj.gql_subs_client =\n endpoint_subs && websocket_subs\n ? createGQLClient({\n endpoint: endpoint_subs,\n headers: client_auth_key\n ? {\n \"Content-Type\": \"application/json\",\n \"X-API-Key\": client_auth_key,\n }\n : {\n \"Content-Type\": \"application/json\",\n },\n websocket: {\n endpoint: websocket_subs,\n onConnectionSuccess: () => {\n //console.log('gql_subs_client: Connected')\n resolve(\"gql_subs_client is connected and ready\");\n },\n onConnectionError: () => {\n //console.log('gql_subs_client: Connection Error');\n reject(\"gql_subs_client: Connection Error\");\n },\n },\n })\n : undefined;\n });\n console.log(\"gqlsubsclientPromise is made.\");\n\n const getGraphSubscription = async ({\n _appmode,\n _domain,\n _appid,\n filter = \"{}\",\n subsCallback,\n errorCallback = undefined,\n variables = undefined,\n } = {}) => {\n gqlsubsclientPromise.then((msg) => {\n // wait till the ws connection promise is resolved for subscription requests\n const generateOperationId = () => {\n let id = \"\";\n const characters = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n for (let _i = 0; _i < 5; _i++) {\n id += characters.charAt(Math.floor(Math.random() * characters.length));\n }\n return id + (Object.keys(leaflakeclientobj.subscriptions).length + 1);\n };\n\n const operationId = generateOperationId();\n try {\n console.log(msg);\n const subscription_handle = leaflakeclientobj.gql_subs_client.subscribe(\n {\n operationId,\n subscription: SUBS_GRAPH({ _domain, _appid, filter: filter, query: masterquery }),\n //subscription: getLEAFgqlSubs('temporary_test_appid'),\n onGraphQLData: (event) => {\n console.log(\"gql_subs_client: onGraphQLData()\", event.data);\n if (subsCallback) {\n subsCallback(event.data);\n }\n },\n onGraphQLError: (event) => {\n console.log(\"gql_subs_client: onGraphQLError()\", event);\n if (operationId in leaflakeclientobj.subscriptions) {\n leaflakeclientobj.subscriptions[operationId].stop();\n }\n if (errorCallback) {\n errorCallback(event);\n }\n },\n onGraphQLComplete: (event) => {\n console.log(\"LEAF Log: gql_subs_client: onGraphQLComplete():\", event);\n if (_clientConfig.keepGQLConnected)\n reconnectGQLClient({\n gql_subs_client: leaflakeclientobj.gql_subs_client,\n force: true,\n }); // spark_dev_note: determine whether this is desirable\n },\n },\n //subsCallback,\n //errorCallback\n );\n console.log(subscription_handle);\n leaflakeclientobj.subscriptions[operationId] = subscription_handle;\n } catch (error) {\n console.log(\"Error: getGraphSubscription():\", error);\n if (operationId in leaflakeclientobj.subscriptions) {\n leaflakeclientobj.subscriptions[operationId].stop();\n }\n }\n });\n };\n // now define a bunch of graphql qm methods (query or mutation)\n const getGraphQuery_memcache_resolver = ({\n _appmode,\n _hostdomain,\n _hostappid,\n _domain,\n _appid,\n filter = \"{}\",\n variables,\n } = {}) => JSON.stringify([_domain, _appid, filter, _sessionid]);\n // spark_dev_note: 25/Nov/2023\n // the memcache resolver including hostdomain/hostappid pair as part of the resolution logic is a bit overkill,\n // I am uncertain as of now, though, as to if including that would make sense in some edge cases. Only time will tell.\n const getGraphQuery = memoize(\n ({ _appmode, _hostdomain, _hostappid, _domain, _appid, filter = \"{}\", variables } = {}) =>\n new Promise((resolve, reject) => {\n const query_options = {\n endpoint: endpoint_qm,\n //query: JSON.stringify({\"query\": getLEAFgqlStrDelNode(el.id)}).replace(/\\\\n/g, ''),\n //query: JSON.stringify({\"query\": getLEAFgqlStrAddNode({id: uuid, type: type, position: position}), \"variables\": (variables || {})}),\n query: JSON.stringify({\n query: QUERY_GRAPH({\n _appmode,\n _hostdomain,\n _hostappid,\n _domain,\n _appid,\n filter: filter,\n query: masterquery,\n }),\n variables: variables || {},\n }),\n //query: JSON.stringify({\"query\": getLEAFgqlStrDelNode(el.id), \"variables\": (variables || {})}),\n //query: MUT_DELNODE,\n //query: `mutation DeleteNode($uuid: String!) {\n // deleteNode(nfilter: {uuid: {eq: $uuid}}) {node {label}}\n //}`,\n //variables: {\n // uuid: el.id,\n //},\n };\n\n try {\n leaflakeclientobj.gql_qm_client.query(\n query_options,\n (qmresponse) => {\n // successCallback argument of executeQuery in gos.graphql.client.js\n if (\"error\" in qmresponse) {\n console.error(\n \"LEAFgon error (critical logical error prevents this app from functioning): \",\n qmresponse.error,\n JSON.stringify({ _hostdomain, _hostappid, _domain, _appid }),\n );\n }\n // console.log(qmresponse.data);\n if (qmresponse.data) {\n //console.log('queryGetGraph(): ', qmresponse.data);\n //_handleChange && _handleChange({ graph: qmresponse.data.graph });\n resolve({ graph: qmresponse.data.graph });\n }\n },\n //(data) => {\n // console.log('gql_qm_client:query completed with sucess: ', data);\n //},\n //(data) => {\n // console.log('gql_qm_client:query completed with error: ', data);\n //},\n );\n } catch (e) {\n console.log(\"Error getGraphQuery(): \", e);\n reject({});\n }\n }),\n getGraphQuery_memcache_resolver,\n );\n\n const mutateAddNode = ({ variables }) => {\n const mut_options = {\n endpoint: endpoint_qm,\n //query: JSON.stringify({\"query\": getLEAFgqlStrDelNode(el.id)}).replace(/\\\\n/g, ''),\n //query: JSON.stringify({\"query\": getLEAFgqlStrAddNode({id: uuid, type: type, position: position}), \"variables\": (variables || {})}),\n query: JSON.stringify({ query: MUT_ADDNODE, variables: variables || {} }),\n //query: JSON.stringify({\"query\": getLEAFgqlStrDelNode(el.id), \"variables\": (variables || {})}),\n //query: MUT_DELNODE,\n //query: `mutation DeleteNode($uuid: String!) {\n // deleteNode(nfilter: {uuid: {eq: $uuid}}) {node {label}}\n //}`,\n //variables: {\n // uuid: el.id,\n //},\n };\n try {\n leaflakeclientobj.gql_qm_client.query(\n mut_options,\n (qmresponse) => {\n // successCallback argument of executeQuery in gos.graphql.client.js\n // console.log(qmresponse.data);\n if (qmresponse.data) {\n console.log(\"mutateAddNode() finished successfully: \", qmresponse.data);\n }\n },\n //(data) => {\n // console.log('gql_qm_client:query completed with sucess: ', data);\n //},\n //(data) => {\n // console.log('gql_qm_client:query completed with error: ', data);\n //},\n );\n } catch (e) {\n console.log(\"Error mutateAddNode(): \", e);\n }\n };\n\n const mutateDelNode = ({ node_uuid }) => {\n //const querystr = MUT_DELNODE; // getLEAFgqlStrDelNode(el.id);\n //const variables = {};\n //const test_query_str1 = JSON.stringify({\"query\": getLEAFgqlStrDelNode(node_uuid), \"variables\": (variables || {})});\n //const test_query_str2 = JSON.stringify({\"query\": MUT_DELNODE, \"variables\": ({uuid: node_uuid} || {})});\n const mut_options = {\n endpoint: endpoint_qm,\n //query: JSON.stringify({\"query\": getLEAFgqlStrDelNode(el.id)}).replace(/\\\\n/g, ''),\n //query: JSON.stringify({\"query\": getLEAFgqlStrDelNode(node_uuid), \"variables\": (variables || {})}),\n query: JSON.stringify({ query: MUT_DELNODE, variables: { uuid: node_uuid } }).replace(\n /\\\\n/g,\n \"\",\n ),\n //query: MUT_DELNODE,\n //query: `mutation DeleteNode($uuid: String!) {\n // deleteNode(nfilter: {uuid: {eq: $uuid}}) {node {label}}\n //}`,\n //variables: {\n // uuid: el.id,\n //},\n };\n\n try {\n leaflakeclientobj.gql_qm_client.query(\n mut_options,\n (qmresponse) => {\n // successCallback argument of executeQuery in gos.graphql.client.js\n // console.log(qmresponse.data);\n if (qmresponse.data) {\n console.log(\"mutateDelNode() finished successfully: \", qmresponse.data);\n }\n },\n //(data) => {\n // console.log('gql_qm_client:query completed with sucess: ', data);\n //},\n //(data) => {\n // console.log('gql_qm_client:query completed with error: ', data);\n //},\n );\n //return qmresponsePromise;\n } catch (e) {\n console.log(\"Error onElementsRemove(): \", e);\n }\n };\n\n const mutateUpdateNode = ({ variables }) => {\n const mut_options = {\n endpoint: endpoint_qm,\n //query: JSON.stringify({\"query\": getLEAFgqlStrDelNode(el.id)}).replace(/\\\\n/g, ''),\n //query: JSON.stringify({\"query\": getLEAFgqlStrAddNode({id: uuid, type: type, position: position}), \"variables\": (variables || {})}),\n query: JSON.stringify({ query: MUT_UPDATENODE, variables: variables || {} }),\n //query: JSON.stringify({\"query\": getLEAFgqlStrDelNode(el.id), \"variables\": (variables || {})}),\n //query: MUT_DELNODE,\n //query: `mutation DeleteNode($uuid: String!) {\n // deleteNode(nfilter: {uuid: {eq: $uuid}}) {node {label}}\n //}`,\n //variables: {\n // uuid: el.id,\n //},\n };\n try {\n leaflakeclientobj.gql_qm_client.query(\n mut_options,\n //(data) => {\n // console.log('gql_qm_client:query completed with sucess: ', data);\n //},\n //(data) => {\n // console.log('gql_qm_client:query completed with error: ', data);\n //},\n (qmresponse) => {\n // successCallback argument of executeQuery in gos.graphql.client.js\n // console.log(qmresponse.data);\n if (qmresponse.data) {\n console.log(\"mutateUpdateNode() finished successfully: \", qmresponse.data);\n }\n },\n );\n //return qmresponsePromise;\n } catch (e) {\n console.log(\"Error mutateUpdateNode(): \", e);\n }\n };\n\n const mutateAddEdge = ({ variables }) => {\n const mut_options = {\n endpoint: endpoint_qm,\n //query: JSON.stringify({\"query\": getLEAFgqlStrDelNode(el.id)}).replace(/\\\\n/g, ''),\n //query: JSON.stringify({\"query\": getLEAFgqlStrAddNode({id: uuid, type: type, position: position}), \"variables\": (variables || {})}),\n query: JSON.stringify({ query: MUT_ADDEDGE, variables: variables || {} }),\n //query: JSON.stringify({\"query\": getLEAFgqlStrDelNode(el.id), \"variables\": (variables || {})}),\n //query: MUT_DELNODE,\n //query: `mutation DeleteNode($uuid: String!) {\n // deleteNode(nfilter: {uuid: {eq: $uuid}}) {node {label}}\n //}`,\n //variables: {\n // uuid: el.id,\n //},\n };\n try {\n leaflakeclientobj.gql_qm_client.query(\n mut_options,\n (qmresponse) => {\n // successCallback argument of executeQuery in gos.graphql.client.js\n // console.log(qmresponse.data);\n if (qmresponse.data) {\n console.log(\"mutateAddEdge() finished successfully: \", qmresponse.data);\n }\n },\n //(data) => {\n // console.log('gql_qm_client:query completed with sucess: ', data);\n //},\n //(data) => {\n // console.log('gql_qm_client:query completed with error: ', data);\n //},\n );\n //return qmresponsePromise;\n } catch (e) {\n console.log(\"Error mutateAddEdge(): \", e);\n }\n };\n\n const mutateDelEdge = ({ edge_uuid }) => {\n //const querystr = MUT_DELNODE; // getLEAFgqlStrDelNode(el.id);\n //const test_query_str1 = JSON.stringify({\"query\": getLEAFgqlStrDelEdge(edge_uuid), \"variables\": (variables || {})});\n //const query_str = JSON.stringify({\"query\": MUT_DELEDGE, \"variables\": ({uuid: edge_uuid} || {})}).replace(/\\\\n/g, '');\n const mut_options = {\n endpoint: endpoint_qm,\n //query: JSON.stringify({\"query\": getLEAFgqlStrDelNode(el.id)}).replace(/\\\\n/g, ''),\n //query: JSON.stringify({\"query\": getLEAFgqlStrDelEdge(edge_uuid), \"variables\": (variables || {})}),\n query: JSON.stringify({ query: MUT_DELEDGE, variables: { uuid: edge_uuid } }).replace(\n /\\\\n/g,\n \"\",\n ),\n //query: MUT_DELNODE,\n //query: `mutation DeleteNode($uuid: String!) {\n // deleteNode(nfilter: {uuid: {eq: $uuid}}) {node {label}}\n //}`,\n //variables: {\n // uuid: el.id,\n //},\n };\n try {\n leaflakeclientobj.gql_qm_client.query(\n mut_options,\n (qmresponse) => {\n // successCallback argument of executeQuery in gos.graphql.client.js\n // console.log(qmresponse.data);\n if (qmresponse.data) {\n console.log(\"mutateDelEdge() finished successfully: \", qmresponse.data);\n }\n },\n //(data) => {\n // console.log('gql_qm_client:query completed with sucess: ', data);\n //},\n //(data) => {\n // console.log('gql_qm_client:query completed with error: ', data);\n //},\n );\n //return qmresponsePromise;\n } catch (e) {\n console.log(\"Error onElementsRemove(): \", e);\n }\n };\n\n if (leaflakeclientobj.gql_subs_client) {\n leaflakeclientobj.subs_methods = {\n queryGraph: getGraphSubscription,\n clientState: () => {\n return leaflakeclientobj.gql_subs_client.clientContext.websocket.client.readyState;\n },\n reconnect: () => {\n reconnectGQLClient({ gql_subs_client: leaflakeclientobj.gql_subs_client });\n },\n };\n }\n if (leaflakeclientobj.gql_qm_client) {\n leaflakeclientobj.qm_methods = {\n queryGraph: getGraphQuery,\n addNode: mutateAddNode,\n updateNode: mutateUpdateNode,\n delNode: mutateDelNode,\n addEdge: mutateAddEdge,\n delEdge: mutateDelEdge,\n };\n }\n\n return leaflakeclientobj;\n};\n\nexport { initializeLEAFlakeGQLClient };\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react\");","/*\n * author: spark@leautomaton.com\n * date: 8th Nov 2021\n * description: a framework of functions and data types for establishing \"inter-graph-logic\" communication i/o in GhostOS\n * inter-graph-logic here means some logic that a (LEAF) programmer intends on establishing in between multiple disconnected graphs, \n * where each graph bears some (LEAF) logic and context. \n * \"inter-graph-logic\" communication means data/control communication between multiple (LEAF) graphs or logic involved.\n// useLEAFIOapi is a react functional component exposing the leafio api.\n//\n// On a side note, for understanding ES6 argument destructuring, please refer to \n// https://simonsmith.io/destructuring-objects-as-function-parameters-in-es6\n//\n// useLEAFIOapi usage scenario:\n// The best practice in designing LEAF apps is to follow the MVI dataflow model, \n// in which the three respective data domains of Model, View, and Intent provide\n// a framework of sourcing (Intent), processing (Model) and presenting (View) data \n// as intended by the programmer. For example, consider the following snippet of code \n// declaring this react component as a constant within an ES6 function:\n// \n// const [getCurLEAFIOState, setNewLEAFIOState, setLEAFIOCallback] = useLEAFIOapi(...);\n// \n// The const currentState is an access handle to read the current state. currentState is\n// a JSON object supposedly containing the most recent copy of any messages \n// obtained from subscribing to relevant i/o channels.\n// \n// The const setNewLEAFIOState is a function to write data into the key'ed state and \n// mark the origin of data. It can be invoked as follows:\n//\n// setNewLEAFIOState(key, state, dataOrigin=LEAFIOmetamodel.OriginType.FRONTEND);\n//\n// The const setLEAFIOCallback is a function to register a programmer-defined callback function\n// on a key'ed channel. The registered callback function would be invoked whenever a\n// new block of data arrives in the corresponding key'ed channel, signified by a state change. \n// The following is the typical code usage pattern:\n//\n// setLEAFIOCallback(key, callbackFunc);\n//\n */\n\nimport { useEffect, useRef } from \"react\";\nimport { v4 as uuid4 } from \"uuid\";\n\nimport { LEAFIOmetamodel } from \"../metamodel.js\";\n\nimport { BehaviorSubject, skip } from \"rxjs\";\n\nconst useLEAFIOapi = ({\n _LEAFappList = [],\n stateObjInstanceID = uuid4(),\n dirOfSubjects = {},\n permissions = {},\n metamodel = LEAFIOmetamodel,\n} = {}) => {\n const stateRef = useRef(JSON.parse(JSON.stringify(metamodel.breezyforest.IOStateGroundZero))); // state store, deep-copy the initialization object\n\n // a set of functions to offer switchboard functionalities to connect/disconnect leaf communication i/o\n // (or inter-graph-logic communication) ports to subscription subjects.\n\n // spark_dev_note: the argument 'key' is used to specify the LEAFIO event accessable (or addressable) by using the key.\n // callbackFunc is for passing a user-defined function to be executed upon the key'ed LEAFIO event taking place.\n // this API could be used to design/specify the complex inter-dynamics of spatio-temporal data in distributed networks.\n const setLEAFIOCallback = (key, callerid, callbackFunc = null) => {\n if (key in stateRef.current.subscriptions) {\n if (callbackFunc === null && callerid in delete stateRef.current.callbacks[key]) {\n // setLEAFIOCallback() can be used to remove the callbackFunc of a key'ed subscription.\n //stateRef.current.callbacks[key] = {...stateRef.current.callbacks[key]}; // or to assign one anew.\n stateRef.current.callbacks = {\n ...stateRef.current.callbacks,\n [key]: { ...stateRef.current.callbacks[key] },\n }; // or to assign one anew.\n delete stateRef.current.callbacks[key][callerid]; // spark_dev_note: still unsure if this is the best way to deal with removing dictionary objects in javascript. only time will tell I guess...\n } else if (callbackFunc) {\n stateRef.current.callbacks = {\n ...stateRef.current.callbacks,\n [key]: { ...stateRef.current.callbacks[key], [callerid]: callbackFunc },\n }; // or to assign one anew.\n //stateRef.current.callbacks[key] = {...stateRef.current.callbacks[key], [callerid]: callbackFunc}; // or to assign one anew.\n //requestUpdate();\n //stateRef.current = {...stateRef.current, callbacks: {...stateRef.current.callbacks, }}\n }\n } else {\n console.error(\"leafio: an invalid key was used for storing a callback function: \", key);\n }\n };\n\n useEffect(() => {\n const invokeCallback = (key, control, data) => {\n if (key in stateRef.current.callbacks) {\n //console.log(\"invoking callback: \", key, control, data, stateObjInstanceID);\n //console.log(\"callback list: \", stateRef.current.callbacks[key]);\n Object.entries(stateRef.current.callbacks[key]).map(([callerid, callbackFunc]) => {\n //console.log(\"executing the callback for callerid:\", callerid);\n callbackFunc({ control, data });\n });\n return true;\n } else {\n return null;\n }\n };\n\n /*\n * initializeSubsDirectory() is a function to deal with instantiating main/bridge data communication\n * channels based on the directory definition (i.e. \"SubsDirectory\") from metamodel.js\n * and to sort out the initial round of setting up data communication channels\n * and their data-event-driven callback mechanism.\n *\n * main data communication is done via subscribing to rx.js observables (i.e. BehaviorSubject)\n * please refer to https://rxjs.dev/guide/subject#behaviorsubject for guidance\n * bridge data communication is done via graphql over websocket/https or via observable data streams over webrtc,\n * again utilizing the subscription mechanism.\n * The release schedule of a GOS version supporting webRTC channels is to be determined.\n **/\n const initializeSubsDirectory = () => {\n let subjectDirectory = {};\n // instantiate subscription subjects as listed in SubsDirectory\n Object.entries(metamodel.breezyforest.subsDirectory).forEach(([key, value]) => {\n // do instantiate\n if (key in dirOfSubjects) {\n subjectDirectory[key] = dirOfSubjects[key]; // make a local reference of the value of global dirOfSubjects, under the same key\n stateRef.current.permissions[key] =\n key in permissions\n ? permissions[key]\n : metamodel.breezyforest.IOAccessPermission.Observer; // defaults to \"Observer\" permission for foreign subjects\n } else {\n subjectDirectory[key] = {\n main: initializeSubsMain(),\n bridges: {}, //initializeSubsBridges(_LEAFappList, stateObjInstanceID, value['bridges'], () => {return subjectDirectory[key]}),\n }; // create a new subject accessable using the key\n stateRef.current.permissions[key] =\n key in permissions ? permissions[key] : metamodel.breezyforest.IOAccessPermission.All; // defaults to \"All\" permission for subjects created locally\n }\n\n // initialize bridges\n // go over subjectDirectory[key].bridges\n\n // subscribe to the subject's main communication channel\n //stateRef.current.subscriptions[key] = subjectDirectory[key].main.pipe(skip(1)).subscribe(...);\n stateRef.current.subscriptions[key] = subjectDirectory[key].main.doSubscribe(\n ({ control, data }) => {\n //console.log(\"got subscription message: \" + key + \" \" + data);\n stateRef.current.subsCache[key] = { control, data }; // store the up-to-date {control, data} pair observed in subscription messaging\n // invoke a callback, if any, passing the new subscribed message as an argument\n invokeCallback(key, control, data);\n //if ( key in stateRef.current.callbacks ) {\n // stateRef.current.callbacks({control, data});\n //}\n },\n );\n //stateRef.current.callbacks[key] = {}; // initialize callback state\n });\n return subjectDirectory;\n };\n\n stateRef.current.dirOfSubjects = initializeSubsDirectory(); // initialize the directory of data subscriptions\n\n return () =>\n Object.entries(stateRef.current.subscriptions).forEach(([key, subscription]) => {\n // unsubscribe from all channels upon component unmounting\n stateRef.current.dirOfSubjects[key].main.doUnsubscribe(subscription);\n });\n }, [dirOfSubjects, metamodel]); // rerun only if the master dirOfSubjects or metamodel changes\n\n const setNewLEAFIOState = (\n key,\n state,\n dataOrigin = LEAFIOmetamodel.breezyforest.originType.FRONTEND,\n ) => {\n try {\n if (\n stateRef.current.permissions[key] & metamodel.breezyforest.IOAccessPermission.Contributor\n ) {\n // if permission exists to contribute to a subject.\n console.log(\"setting new subs message: \", state, stateObjInstanceID);\n // do handle the new state event by writing the new state data\n // to the subject main channel\n stateRef.current.dirOfSubjects[key].main.doWrite({\n control: {\n provenance: { stateObjInstanceID: stateObjInstanceID, dataOrigin: dataOrigin },\n },\n data: state,\n });\n return true;\n } else {\n const errormesg = \"leafio: permission not granted for contributing to a subject: \" + key;\n console.error(errormesg);\n return (\n stateRef.current.permissions[key] & metamodel.breezyforest.IOAccessPermission.Contributor\n ); //false;\n //throw errormesg;\n }\n } catch (err) {\n console.error(err);\n return -1;\n }\n };\n\n const getCurLEAFIOState = () => stateRef.current.subsCache;\n\n const getMasterSubsDir = () => stateRef.current.dirOfSubjects;\n\n return { getCurLEAFIOState, getMasterSubsDir, setNewLEAFIOState, setLEAFIOCallback };\n};\n\n// initLEAFIOapi is to be used by nodejs in achieving the react equivalent of useLEAFIOapi defined above,\n// in terms of initializing a LEAF compiler instance.\n// all of the useRef(<data>) definitions have been replaced with the structurally compatible form of {current: <data>}\n// all useState(<data>) have been replaced with just <data> constants.\nconst initLEAFIOapi = ({\n _LEAFappList = [],\n stateObjInstanceID = uuid4(),\n dirOfSubjects = {},\n permissions = {},\n metamodel = LEAFIOmetamodel,\n} = {}) => {\n const stateRef = {\n current: JSON.parse(JSON.stringify(metamodel.breezyforest.IOStateGroundZero)),\n }; // state store, deep-copy the initialization object\n\n // a set of functions to offer switchboard functionalities to connect/disconnect leaf communication i/o\n // (or inter-graph-logic communication) ports to subscription subjects.\n\n // spark_dev_note: the argument 'key' is used to specify the LEAFIO event accessable (or addressable) by using the key.\n // callbackFunc is for passing a user-defined function to be executed upon the key'ed LEAFIO event taking place.\n // this API could be used to design/specify the complex inter-dynamics of spatio-temporal data in distributed networks.\n const setLEAFIOCallback = (key, callerid, callbackFunc = null) => {\n if (key in stateRef.current.subscriptions) {\n if (callbackFunc === null && callerid in delete stateRef.current.callbacks[key]) {\n // setLEAFIOCallback() can be used to remove the callbackFunc of a key'ed subscription.\n //stateRef.current.callbacks[key] = {...stateRef.current.callbacks[key]}; // or to assign one anew.\n stateRef.current.callbacks = {\n ...stateRef.current.callbacks,\n [key]: { ...stateRef.current.callbacks[key] },\n }; // or to assign one anew.\n delete stateRef.current.callbacks[key][callerid]; // spark_dev_note: still unsure if this is the best way to deal with removing dictionary objects in javascript. only time will tell I guess...\n } else if (callbackFunc) {\n stateRef.current.callbacks = {\n ...stateRef.current.callbacks,\n [key]: { ...stateRef.current.callbacks[key], [callerid]: callbackFunc },\n }; // or to assign one anew.\n //stateRef.current.callbacks[key] = {...stateRef.current.callbacks[key], [callerid]: callbackFunc}; // or to assign one anew.\n //requestUpdate();\n //stateRef.current = {...stateRef.current, callbacks: {...stateRef.current.callbacks, }}\n }\n } else {\n console.error(\"leafio: an invalid key was used for storing a callback function: \", key);\n }\n };\n\n // in lieu of a useEffect block\n const invokeCallback = (key, control, data) => {\n if (key in stateRef.current.callbacks) {\n //console.log(\"invoking callback: \", key, control, data, stateObjInstanceID);\n //console.log(\"callback list: \", stateRef.current.callbacks[key]);\n Object.entries(stateRef.current.callbacks[key]).map(([callerid, callbackFunc]) => {\n //console.log(\"executing the callback for callerid:\", callerid);\n callbackFunc({ control, data });\n });\n return true;\n } else {\n return null;\n }\n };\n\n /*\n * initializeSubsDirectory() is a function to deal with instantiating main/bridge data communication\n * channels based on the directory definition (i.e. \"SubsDirectory\") from metamodel.js\n * and to sort out the initial round of setting up data communication channels\n * and their data-event-driven callback mechanism.\n *\n * main data communication is done via subscribing to rx.js observables (i.e. BehaviorSubject)\n * please refer to https://rxjs.dev/guide/subject#behaviorsubject for guidance\n * bridge data communication is done via graphql over websocket/https or via observable data streams over webrtc,\n * again utilizing the subscription mechanism.\n * The release schedule of a GOS version supporting webRTC channels is to be determined.\n **/\n const initializeSubsDirectory = () => {\n let subjectDirectory = {};\n // instantiate subscription subjects as listed in SubsDirectory\n Object.entries(metamodel.breezyforest.subsDirectory).forEach(([key, value]) => {\n // do instantiate\n if (key in dirOfSubjects) {\n subjectDirectory[key] = dirOfSubjects[key]; // make a local reference of the value of global dirOfSubjects, under the same key\n stateRef.current.permissions[key] =\n key in permissions\n ? permissions[key]\n : metamodel.breezyforest.IOAccessPermission.Observer; // defaults to \"Observer\" permission for foreign subjects\n } else {\n subjectDirectory[key] = {\n main: initializeSubsMain(),\n bridges: {}, //initializeSubsBridges(_LEAFappList, stateObjInstanceID, value['bridges'], () => {return subjectDirectory[key]}),\n }; // create a new subject accessable using the key\n stateRef.current.permissions[key] =\n key in permissions ? permissions[key] : metamodel.breezyforest.IOAccessPermission.All; // defaults to \"All\" permission for subjects created locally\n }\n\n // initialize bridges\n // go over subjectDirectory[key].bridges\n\n // subscribe to the subject's main communication channel\n //stateRef.current.subscriptions[key] = subjectDirectory[key].main.pipe(skip(1)).subscribe(...);\n stateRef.current.subscriptions[key] = subjectDirectory[key].main.doSubscribe(\n ({ control, data }) => {\n //console.log(\"got subscription message: \" + key + \" \" + data);\n stateRef.current.subsCache[key] = { control, data }; // store the up-to-date {control, data} pair observed in subscription messaging\n // invoke a callback, if any, passing the new subscribed message as an argument\n invokeCallback(key, control, data);\n //if ( key in stateRef.current.callbacks ) {\n // stateRef.current.callbacks({control, data});\n //}\n },\n );\n //stateRef.current.callbacks[key] = {}; // initialize callback state\n });\n return subjectDirectory;\n };\n\n stateRef.current.dirOfSubjects = initializeSubsDirectory(); // initialize the directory of data subscriptions\n\n const destructLEAFIOobj = () => {\n Object.entries(stateRef.current.subscriptions).forEach(([key, subscription]) => {\n // unsubscribe from all channels upon component unmounting\n stateRef.current.dirOfSubjects[key].main.doUnsubscribe(subscription);\n });\n };\n // end of the \"in lieu of a useEffect block\"\n\n const setNewLEAFIOState = (\n key,\n state,\n dataOrigin = LEAFIOmetamodel.breezyforest.originType.FRONTEND,\n ) => {\n try {\n if (\n stateRef.current.permissions[key] & metamodel.breezyforest.IOAccessPermission.Contributor\n ) {\n // if permission exists to contribute to a subject.\n console.log(\"setting new subs message: \", state, stateObjInstanceID);\n // do handle the new state event by writing the new state data\n // to the subject main channel\n stateRef.current.dirOfSubjects[key].main.doWrite({\n control: {\n provenance: { stateObjInstanceID: stateObjInstanceID, dataOrigin: dataOrigin },\n },\n data: state,\n });\n return true;\n } else {\n const errormesg = \"leafio: permission not granted for contributing to a subject: \" + key;\n console.error(errormesg);\n return (\n stateRef.current.permissions[key] & metamodel.breezyforest.IOAccessPermission.Contributor\n ); //false;\n //throw errormesg;\n }\n } catch (err) {\n console.error(err);\n return -1;\n }\n };\n\n const getCurLEAFIOState = () => stateRef.current.subsCache;\n\n const getMasterSubsDir = () => stateRef.current.dirOfSubjects;\n\n return {\n getCurLEAFIOState,\n getMasterSubsDir,\n setNewLEAFIOState,\n setLEAFIOCallback,\n destructLEAFIOobj,\n };\n};\n\n// The '$' suffix in handle$ conventionally represents a rx.js stream\n// https://javascript.plainenglish.io/reactive-programming-using-rxjs-operators-6b803c0ed7de\nconst initializeSubsMain = () => {\n const getSubjectMainHandle$ = () => subjectMain.handle$; // this getter function allows delayed reference from within the same json object\n const subjectMain = {\n handle$: new BehaviorSubject(), // initialize subject main write channel\n doWrite: (_data) => {\n // write operation\n return subjectMain.handle$.next(_data);\n },\n doSubscribe: (_eventCallback) => {\n // subscription operation\n const _handle$ = getSubjectMainHandle$();\n //return _handle$.pipe(skip(1)).subscribe((event)=>{_eventCallback(event)});\n return _handle$.pipe(skip(1)).subscribe(_eventCallback);\n },\n doUnsubscribe: (subscription) => {\n return subscription.unsubscribe();\n },\n doAddAddressee: (gqlrequest, nodeuuid) => {},\n };\n return subjectMain;\n};\n\n// The '_' prefixed arguments represent internal data not to be fiddled with, unless you work on developing the LEAFio API.\nconst initializeMasterSubsDirectory = (\n _stateObjInstanceID,\n _LEAFappList = [],\n _metamodel = LEAFIOmetamodel,\n) => {\n let subjectDirectory = {};\n // instantiate subscription subjects as listed in SubsDirectory\n Object.entries(_metamodel.breezyforest.subsDirectory).forEach(([key, value]) => {\n // do instantiate\n subjectDirectory[key] = {\n main: initializeSubsMain(),\n bridges: {}, //initializeSubsBridges(_LEAFappList, _stateObjInstanceID, value['bridges'], ()=>{return subjectDirectory[key]}),\n }; // create a new subject accessable using the key\n });\n return [_stateObjInstanceID, subjectDirectory];\n};\n\nexport { useLEAFIOapi, initLEAFIOapi, initializeMasterSubsDirectory, initializeSubsMain };\n","//import SHA256 from 'crypto-js/sha256';\n//import Base64 from 'crypto-js/enc-base64';\n//import sjcl from 'sjcl';\n//import gql from 'graphql-tag';\nimport { createGQLClient } from \"../../graphql/client.js\"; //'../../lib/graphql/client';\n\nconst endpoint_subs = process.env.LEAFGON_ENDPOINT_SUBS || \"https://gdb.leafgon.com/sgraphql\";\nconst websocket_subs = process.env.LEAFGON_WEBSOCKET_SUBS || \"wss://gdb.leafgon.com/sgraphql\";\nconst endpoint_qm = process.env.LEAFGON_ENDPOINT_QM || \"https://gdb.leafgon.com/qmgraphql\";\n//const endpoint_subs = \"https://www.leafgon.com:10001/sgraphql\";\n//const websocket_subs = \"wss://www.leafgon.com:10001/sgraphql\";\n//const endpoint_qm = \"https://www.leafgon.com:10001/qmgraphql\";\n\nconst getLEAFgqlSubs = (graph) => {\n //const nfilter = '{in_edges: {label: {eq: \"Alice39-ala2\"}}}'\n //const appid2 = SHA256('www.leafgon.com').toString();\n //const appid = Base64.stringify(SHA256('www.leafgon.com'));\n //const appid = sjcl.codec.base64.fromBits(sjcl.hash.sha256.hash(appid_str));\n //const appid = btoa(JSON.stringify(appid_str)); // Base64 encoding of a jsonified string\n //const nfilter = `{appid: {eq: \"${appid}\"}}`\n //const efilter = `{appid: {eq: \"${appid}\"}}`\n //const nfilter = appid_str ? `{ appid: {eq: \"${appid_str}\"} }` : '{}';\n const nfilter = \"{}\";\n const efilter = \"{}\";\n const SUBS_GRAPH = `\n subscription {graph:\n getGraph(domain: \"${graph.domain}\", appid: \"${graph.appid}\", nfilter: ${nfilter}, efilter: ${efilter}) {\n domain\n appid\n nodes {\n uuid\n out_edges {uuid source {uuid } target {uuid} data}\n data\n }\n }\n }\n `;\n\n return SUBS_GRAPH;\n};\n\n/*\n const new_node = {\n id: node_uuid,\n type,\n leafnodetype,\n position,\n data: data_obj,\n\n style: { border: '1px solid #777', padding: 2, borderRadius: '5px' }\n };\n*/\nconst getLEAFgqlStrAddNode = (node_input) => {\n const a_new_node = `{uuid: \"${node_input.id}\", data: {leafeditor: {type: \"${node_input.type}\", position: \"${node_input.position}\"}}}`;\n const MUT_AddNode = `\n mutation {\n addNode(input: [${a_new_node}]) {node {uuid}}\n }\n `;\n return MUT_AddNode;\n};\n\nconst getLEAFgqlStrUpdateNode = (node_input) => {\n const a_new_node = `{uuid: \"${node_input.id}\", data: {leafeditor: {type: \"${node_input.type}\", position: \"${node_input.position}\"}}}`;\n const MUT_UpdateNode = `\n mutation {\n updateNode(input: [${a_new_node}]) {node {uuid}}\n }\n `;\n return MUT_UpdateNode;\n};\n\nconst getLEAFgqlStrDelNode = (node_uuid) => {\n const MUT_DelNode = `\n mutation {\n deleteNode(nfilter: {uuid: {eq: \"${node_uuid}\"}}) {node {uuid}}\n }\n `;\n return MUT_DelNode;\n};\n\nconst MUT_DELNODE = `mutation DeleteNode($uuid: String!) {\n deleteNode(nfilter: {uuid: {eq: $uuid}}) {node {uuid}}\n}`;\n\nconst MUT_UPDATENODE = `mutation UpdateNode($uuid: String!, $data: String!) {\n updateNode(input: {filter: {uuid: {eq: $uuid}}, set: {data: $data}}) {node {uuid}}\n}`;\n// updateNode(input: {filter: {uuid: {eq: $uuid}}, set: {label: $label, data: $data}}) {node {label}}\n\nconst MUT_ADDNODE = `mutation AddNode($uuid: String!, $leafnodetype: String, $data: String!, $graphdomain: String!, $graphappid: String!, $provdomain: String!, $provappid: String!) {\n addNode(input: [{uuid: $uuid, leafnodetype: $leafnodetype, graph: {domain: $graphdomain, appid: $graphappid}, provenance: {domain: $provdomain, appid: $provappid}, data: $data}]) {node {uuid}}\n}`;\n\nconst MUT_ADDEDGE = `mutation AddEdge($uuid: String!, $sourceuuid: String!, $targetuuid: String!, $data: String!, $graphdomain: String!, $graphappid: String!, $provdomain: String!, $provappid: String!) {\n addEdge(input: [{uuid: $uuid, source: {uuid: $sourceuuid}, target: {uuid: $targetuuid}, graph: {domain: $graphdomain, appid: $graphappid}, provenance: {domain: $provdomain, appid: $provappid}, data: $data}]) {edge {uuid}}\n}`;\n\nconst MUT_DELEDGE = `mutation DeleteEdge($uuid: String!) {\n deleteEdge(efilter: {uuid: {eq: $uuid}}) {edge {uuid}}\n}`;\n//const a_new_uuid = uuidv4();\n//const MUT_ADDNODE = `mutation { addNode(input: [{uuid: \"${a_new_uuid}\", label: \"\", data: \"\"}]) {node {label}} }`;\n//const MUT_ADDNODE = `mutation { addNode(input: [{label: \"ala999\", data: \"\"}]) {node {label}} }`;\n\n//const mutateAddNode2 = async ({uuid, type, position}) => {\nconst mutateAddNode = async ({ variables, endpoint = endpoint_qm }) => {\n const gql_qm_client = createGQLClient({\n endpoint,\n headers: {\n //'Content-Type': 'application/json', // should never use this when using fetch\n Accept: \"application/json\",\n },\n });\n\n const mut_options = {\n endpoint,\n //query: JSON.stringify({\"query\": getLEAFgqlStrDelNode(el.id)}).replace(/\\\\n/g, ''),\n //query: JSON.stringify({\"query\": getLEAFgqlStrAddNode({id: uuid, type: type, position: position}), \"variables\": (variables || {})}),\n query: JSON.stringify({ query: MUT_ADDNODE, variables: variables || {} }),\n //query: JSON.stringify({\"query\": getLEAFgqlStrDelNode(el.id), \"variables\": (variables || {})}),\n //query: MUT_DELNODE,\n //query: `mutation DeleteNode($uuid: String!) {\n // deleteNode(nfilter: {uuid: {eq: $uuid}}) {node {label}}\n //}`,\n //variables: {\n // uuid: el.id,\n //},\n };\n let qmresponse;\n try {\n qmresponse = await gql_qm_client.query(\n mut_options,\n //(data) => {\n // console.log('gql_qm_client:query completed with sucess: ', data);\n //},\n //(data) => {\n // console.log('gql_qm_client:query completed with error: ', data);\n //},\n );\n //.then( () => {\n // console.log(qmresponse.data);\n //});\n if (qmresponse.data) {\n console.log(\"mutateAddNode(): \", qmresponse.data);\n }\n } catch (e) {\n console.log(\"Error mutateAddNode(): \", e);\n }\n};\n\nconst mutateDelNode = async ({ node_uuid, endpoint = endpoint_qm }) => {\n const gql_qm_client = createGQLClient({\n endpoint,\n headers: {\n //'Content-Type': 'application/json', // should never use this when using fetch\n Accept: \"application/json\",\n },\n });\n\n //const querystr = MUT_DELNODE; // getLEAFgqlStrDelNode(el.id);\n //const variables = {};\n //const test_query_str1 = JSON.stringify({\"query\": getLEAFgqlStrDelNode(node_uuid), \"variables\": (variables || {})});\n //const test_query_str2 = JSON.stringify({\"query\": MUT_DELNODE, \"variables\": ({uuid: node_uuid} || {})});\n const mut_options = {\n endpoint,\n //query: JSON.stringify({\"query\": getLEAFgqlStrDelNode(el.id)}).replace(/\\\\n/g, ''),\n //query: JSON.stringify({\"query\": getLEAFgqlStrDelNode(node_uuid), \"variables\": (variables || {})}),\n query: JSON.stringify({ query: MUT_DELNODE, variables: { uuid: node_uuid } }).replace(\n /\\\\n/g,\n \"\",\n ),\n //query: MUT_DELNODE,\n //query: `mutation DeleteNode($uuid: String!) {\n // deleteNode(nfilter: {uuid: {eq: $uuid}}) {node {label}}\n //}`,\n //variables: {\n // uuid: el.id,\n //},\n };\n let qmresponse;\n try {\n qmresponse = await gql_qm_client.query(\n mut_options,\n //(data) => {\n // console.log('gql_qm_client:query completed with sucess: ', data);\n //},\n //(data) => {\n // console.log('gql_qm_client:query completed with error: ', data);\n //},\n );\n //.then( () => {\n // console.log(qmresponse.data);\n //});\n if (qmresponse.data) {\n console.log(\"onElementsRemove(): \", qmresponse.data);\n }\n } catch (e) {\n console.log(\"Error onElementsRemove(): \", e);\n }\n};\n\nconst mutateUpdateNode = async ({ variables, endpoint = endpoint_qm }) => {\n const gql_qm_client = createGQLClient({\n endpoint,\n headers: {\n //'Content-Type': 'application/json', // should never use this when using fetch\n Accept: \"application/json\",\n },\n });\n\n const mut_options = {\n endpoint,\n //query: JSON.stringify({\"query\": getLEAFgqlStrDelNode(el.id)}).replace(/\\\\n/g, ''),\n //query: JSON.stringify({\"query\": getLEAFgqlStrAddNode({id: uuid, type: type, position: position}), \"variables\": (variables || {})}),\n query: JSON.stringify({ query: MUT_UPDATENODE, variables: variables || {} }),\n //query: JSON.stringify({\"query\": getLEAFgqlStrDelNode(el.id), \"variables\": (variables || {})}),\n //query: MUT_DELNODE,\n //query: `mutation DeleteNode($uuid: String!) {\n // deleteNode(nfilter: {uuid: {eq: $uuid}}) {node {label}}\n //}`,\n //variables: {\n // uuid: el.id,\n //},\n };\n let qmresponse;\n try {\n qmresponse = await gql_qm_client.query(\n mut_options,\n //(data) => {\n // console.log('gql_qm_client:query completed with sucess: ', data);\n //},\n //(data) => {\n // console.log('gql_qm_client:query completed with error: ', data);\n //},\n );\n //.then( () => {\n // console.log(qmresponse.data);\n //});\n if (qmresponse.data) {\n console.log(\"mutateUpdateNode(): \", qmresponse.data);\n }\n } catch (e) {\n console.log(\"Error mutateUpdateNode(): \", e);\n }\n};\n\nconst mutateAddEdge = async ({ variables, endpoint = endpoint_qm }) => {\n const gql_qm_client = createGQLClient({\n endpoint,\n headers: {\n //'Content-Type': 'application/json', // should never use this when using fetch\n Accept: \"application/json\",\n },\n });\n\n const mut_options = {\n endpoint,\n //query: JSON.stringify({\"query\": getLEAFgqlStrDelNode(el.id)}).replace(/\\\\n/g, ''),\n //query: JSON.stringify({\"query\": getLEAFgqlStrAddNode({id: uuid, type: type, position: position}), \"variables\": (variables || {})}),\n query: JSON.stringify({ query: MUT_ADDEDGE, variables: variables || {} }),\n //query: JSON.stringify({\"query\": getLEAFgqlStrDelNode(el.id), \"variables\": (variables || {})}),\n //query: MUT_DELNODE,\n //query: `mutation DeleteNode($uuid: String!) {\n // deleteNode(nfilter: {uuid: {eq: $uuid}}) {node {label}}\n //}`,\n //variables: {\n // uuid: el.id,\n //},\n };\n let qmresponse;\n try {\n qmresponse = await gql_qm_client.query(\n mut_options,\n //(data) => {\n // console.log('gql_qm_client:query completed with sucess: ', data);\n //},\n //(data) => {\n // console.log('gql_qm_client:query completed with error: ', data);\n //},\n );\n //.then( () => {\n // console.log(qmresponse.data);\n //});\n if (qmresponse.data) {\n console.log(\"mutateAddEdge(): \", qmresponse.data);\n }\n } catch (e) {\n console.log(\"Error mutateAddEdge(): \", e);\n }\n};\n\nconst mutateDelEdge = async ({ edge_uuid, endpoint = endpoint_qm }) => {\n const gql_qm_client = createGQLClient({\n endpoint,\n headers: {\n //'Content-Type': 'application/json', // should never use this when using fetch\n Accept: \"application/json\",\n },\n });\n\n //const querystr = MUT_DELNODE; // getLEAFgqlStrDelNode(el.id);\n //const test_query_str1 = JSON.stringify({\"query\": getLEAFgqlStrDelEdge(edge_uuid), \"variables\": (variables || {})});\n //const query_str = JSON.stringify({\"query\": MUT_DELEDGE, \"variables\": ({uuid: edge_uuid} || {})}).replace(/\\\\n/g, '');\n const mut_options = {\n endpoint,\n //query: JSON.stringify({\"query\": getLEAFgqlStrDelNode(el.id)}).replace(/\\\\n/g, ''),\n //query: JSON.stringify({\"query\": getLEAFgqlStrDelEdge(edge_uuid), \"variables\": (variables || {})}),\n query: JSON.stringify({ query: MUT_DELEDGE, variables: { uuid: edge_uuid } }).replace(\n /\\\\n/g,\n \"\",\n ),\n //query: MUT_DELNODE,\n //query: `mutation DeleteNode($uuid: String!) {\n // deleteNode(nfilter: {uuid: {eq: $uuid}}) {node {label}}\n //}`,\n //variables: {\n // uuid: el.id,\n //},\n };\n let qmresponse;\n try {\n qmresponse = await gql_qm_client.query(\n mut_options,\n //(data) => {\n // console.log('gql_qm_client:query completed with sucess: ', data);\n //},\n //(data) => {\n // console.log('gql_qm_client:query completed with error: ', data);\n //},\n );\n //.then( () => {\n // console.log(qmresponse.data);\n //});\n if (qmresponse.data) {\n console.log(\"onElementsRemove(): \", qmresponse.data);\n }\n } catch (e) {\n console.log(\"Error onElementsRemove(): \", e);\n }\n};\n\nexport {\n getLEAFgqlStrAddNode,\n getLEAFgqlStrUpdateNode,\n getLEAFgqlStrDelNode,\n getLEAFgqlSubs,\n mutateUpdateNode,\n mutateAddNode,\n mutateDelNode,\n mutateAddEdge,\n mutateDelEdge,\n MUT_UPDATENODE,\n MUT_ADDNODE,\n MUT_DELNODE,\n endpoint_subs,\n websocket_subs,\n endpoint_qm,\n};\n"],"names":["__webpack_require__","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","require","endpoint_subs","process","env","LEAFGON_ENDPOINT_SUBS","websocket_subs","LEAFGON_WEBSOCKET_SUBS","endpoint_qm","LEAFGON_ENDPOINT_QM","LEAFIOmetamodel","breezyforest","_version","_nickname","scaffold","map","leaf","logic","type","args","provenance","api","uuid","graph","appuuid","name","version","appdata","directory","leafapp","fetch","n_e","crawlkey","fetchDive","x","y","car","cdr","slice","length","Array","isArray","_unused","originType","FRONTEND","BACKEND","SCREEN","subsDirectory","readmefirst","leaflake","bridges","gql","appintent","appmodel","appview","osview","osview2","dataflowplane","appcache","IOAccessPermission","Owner","Observer","Contributor","All","IOStateGroundZero","dirOfSubjects","subsCache","subscriptions","callbacks","permissions","GQLParameters","clientconfig_full","keepGQLConnected","dburi_subs","dburi_subs_ws","dburi_qm","clientconfig_sub","clientconfig_qm","masterquery","replace","LEAFdictionary","_leafstdlib_dataflow_api","_breezyforestapi","leafradioRX","keyname","editorconfig","nodetype","namedatakey","bannednames","banduplicatename","banmultiplenode","svgicon","unicode","undefined","url","width","height","bgColor","jsx","lambdaports","input","output","dataflow","_leafradiokey","_leafradiorx","txkey","payload","leafradioTX","_leafradiotx","leafoutflowport","fgColor","leafinflowport","leafmemoryio","elementconfig","leafnodename","persistencyref","updateref","dbref","iconname","_leafdeckdiamond","_leafdeckclub","_leafdeckheart","leafscreenio","lispexpression","_leaflisp_in","_leaflisp_out","leafdeckspade","_leafdeckspade","leafdeckheart","leafdeckdiamond","leafdeckclub","_leafdeckclubinit","leafelement","elementname","is_committable","allowednames","leafgraph","graphuuid","domain","appid","graphaddrstr","leaflambdagraph","leafanchor","leafspelldef","spellname","leafspell","leafloopyspell","leafsyncflow","fconfig","inputsync","combineOperator","leafchronosflow","leafasyncflow","leafmixflow","mixOperator","leafgateflow","notgatetoggle","toggledatakey","bgColor0","bgColor1","toggleSymbol0","toggleSymbol1","leaflabel","labelstr","leafdelabel","leafbottle","bottlekey","leafunbottle","leafcrate","leafconfig","leaflisp","_breezyforeststdlib_name","outport","inport","screenio","memoryio","spade","heart","diamond","club","element","anchor","lambda","spelldef","spell","loopyspell","label","delabel","bottle","unbottle","crate","config","chronos","async","sync","mix","gate","_breezyforeststdlib_hierarchy","io","elements","abstraction","arcane","_edge_handle_dict","leaflambdaedge","sourceHandle","targetHandle","leafanchoredge","leafdataedge","_edge_style_dict","stroke","fillOpacity","DFSStack","_classCallCheck","this","stack","order","seen","Set","size","callback","someNode","node","attr","has","seenSizeBefore","add","isBottle","_data","_typeof","isCrate","isEmptyBottle","_bname","_content","flattenArray","flatMap","_x","combineDataflows","nodeuuid","flow$Arr","isflatten","arguments","iscomposite","exitbus","console","log","filtered$Arr","filter","combinedflow$obj","_stream","of","pipe","concatMap","_ctrl_in","combineLatest","_","_combined_data","_ref","_bus","_ref$_cond","_cond","_ref$_flatten","_flatten","_b","flat","exitDataBus","combined_data","_control","_x$_control","_objectSpread","substituteDataflows","flowinput$Arr","dictionary_keys","dictflow$Arr","some","_key","dataflow$Arr","every","substituteUnitdataByDict","_unitdata","_dictionary","_crate","_dict","assign","apply","concat","_toConsumableArray","entries","_ref2","_ref3","_val","_defineProperty","formatted_data","JSON","stringify","mergeDataflows","bufferTime","withLatestFrom","_zipped_data","_dictlist","substituted","concatDataflows","concatAll","merge","e","t","r","n","iterator","i","c","Generator","u","create","_regeneratorDefine2","f","p","G","v","a","d","bind","l","TypeError","done","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","setPrototypeOf","__proto__","displayName","_regenerator","w","m","_invoke","configurable","writable","ownKeys","keys","getOwnPropertySymbols","getOwnPropertyDescriptor","push","forEach","getOwnPropertyDescriptors","defineProperties","toPrimitive","String","_toPrimitive","_toPropertyKey","_arrayLikeToArray","asyncGeneratorStep","Promise","resolve","then","_asyncToGenerator","_next","_throw","_leafinflowport","lambdactrl","_callee","refnode","node_context","_args","_context","refnodedata","nodelambda","contextuallambda","codebase","leafnode","gos","etaTree","getNodeAttributes","data","input$objArr","controlflow$obj","driveDataflowByCtrlflow","metastep","leaflogic","_input$objArr","_controlflow$obj","_outflow_data$","Subject","_outflow_ctrl$","_arrayWithoutHoles","from","_iterableToArray","toString","constructor","test","_unsupportedIterableToArray","_nonIterableSpread","_combined_in","next","share","datalogic","pre","_data_in","_callee2","_ref4","_args2","_context2","error","_leafoutflowport","doBottle","_label","doUnbottle","includes","EmptyBottle","getIOChannel","dict","_leafscreenio","reduced_lambda_obj","channelname","etaReduceLambdaGraphs","switchMap","_next_data","post","_payload","_in","leafio","getMasterSubsDir","main","doWrite","control","fetchMultiKeyedData","keylist","dataobj","setMultiKeyedData","SHA1","msg","rotate_left","s","cvt_hex","val","str","blockstart","j","W","A","B","C","D","E","temp","H0","H1","H2","H3","H4","msg_len","string","utftext","charCodeAt","fromCharCode","Utf8Encode","word_array","toLowerCase","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","GITHUB_DOMAIN","redactQueryValues","graphRef","queryIndex","indexOf","refPath","refQuery","redactedQuery","split","entry","join","redactGraphCoordinate","graphdomain","graphappid","normalizeGraphNodesPayload","_payload$graph","_payload$data","nodes","parseGithubGraphRef","_parts$","_graphappid$split2","appid_path","appid_query","parts","shift","user","repo_part","repo_segments","repo","ref","path","endsWith","query","isGithubGraphRef","graphappidLower","startsWith","fetchGithubGraph","graph_ref","response","Error","globalThis","ok","status","json","_x2","etaTreeForest","refEtaTree","_parseGraphEtaTree","_getEtaTree","retrieveMasterEtaTree","_etatree","hostEtaTree","rootEtaTree","appmode","etatreeforest_memory_uri","_etatreeforest_key","uuid5","URL","etaTreeLUT","mnemosyne","current","etaTreeForestObj","initEtaTreeForest","getEtaTree","etatreekey","etatree","tree","parseGraphEtaTree","_x3","_x4","setEtaTree","parentname","parent","removeEtaBush","_etaTreeLUT","reduce","lut","_callee3","host_domain","host_appid","safeGraphCoord","tracecoord","graph_data","leafcomponents","_tracecoord","_t","_context3","DEBUG","trace","leaflakeio","qm_methods","queryGraph","_appmode","_hostdomain","_hostappid","_domain","_appid","reconstructLEAFGraph","analyzeLEAFGraph","runtimeEtaTree","_x5","_x6","leaf_apidef","isPersistentMemory","_name","_uri","_lambdaobj","_spade_lambda","_leafmemoryio","_lambdactrl$gos$etaTr2","_lambdactrl$gos$etaTr3","memoryname","_lambdactrl$gos$etaTr","leafspade_uri","memorykey","ismarkedglobal","is_on_tap","is_proxy","thespadeuuid","spade_lambda","thespade","lookupRuntimeLambdaLUT","edges","sourcelut","domemoryio","cur_memkey","mnemosyne_data","raw","_type","_command","_memoryname","_refnode","_nodelocation","_signal","serialized_data","safeStringify","signature","cur_sid","sid","pop","proxymemkey_uri","proxy_memkey","memorybottle","_lambdactrl$gos$etaTr4","lambda_lut","methods","_ref5","masterEtaTree","etatreeforest","general","setMasterMemory","_lambdactrl$gos$etaTr5","memory_uri","getMasterMemory","_lambdactrl$gos$etaTr6","_createForOfIteratorHelper","_n","F","_toArray","_callSuper","_getPrototypeOf","_assertThisInitialized","_possibleConstructorReturn","_isNativeReflectConstruct","Reflect","construct","ReferenceError","_wrapNativeSuper","Map","Function","_isNativeFunction","set","Wrapper","_setPrototypeOf","_construct","Boolean","valueOf","_defineProperties","_createClass","TokenType","isDigit","source","startIndex","endIndex","line","SnippetPosition","offset","getLineOffset","_a","re","RegExp","result","exec","index","unknown","Token","position","Init","Scanner","start","isKeyword","Keyword","substring","message","peek","isAlpha","isSymbol","makeIdentifierToken","makeToken","True","False","Nothing","Identifier","advance","peekNext","Float","errorToken","FractionNumber","Integer","isEnd","skipWhitespace","EOF","char","number","identifier","LeftParen","RightParen","RightBrace","LeftSquare","RightSquare","Dispatch","keyword","tokens","LiteralType","Literal","kind","_Error","_this","RuntimeError","_position","identity","assert","assetParamLength","expected","literal","_len","types","find","notImplementedConstructor","notImplementedLiteral","parser","parseInt","Number","parseFloat","VECTOR_IDENTIFIER","MAP_IDENTIFIER","Parser","scanner","_this2","literals","defaultLiterals","panicMode","INIT","errorAtCurrent","exp","expression","_program","consume","hadError","program","errors","_errors","scanToken","token","_this$literals","Int","makeLiteral","Bool","List","advanceUntil","LeftBrace","formatDispatch","parserFn","literalType","endToken","closeParentheses","dispatchMode","body","newExpression","anonymousFunction","fn","walk","acc","reduceLiterals","ll","substr","b","argsIds","numberOfArgs","tt","_this$literals2","missingParser","PLFunction","_fn","_arity","_resolveIds","_toString","NATIVE_FN_NAME","_this3","argDiff","arity","argValues","arg","interpreter","execLiteral","argsRest","createFunction","options","resolveArgsIdentifiers","parameters","evaluatedParams","_env","id","evaluatedValue","define","_args3","fnArgs","condition","_args4","thenBranch","elseBranch","conditionEval","conditionRes","utils","unboxing","_step","cases","_iterator","caseBranch","assertParamType","listContent","caseLiteral","_listContent","caseResult","caseFn","unboxedCaseFn","evalFn","conditionValue","caseFnValue","caseFnValueUB","caseValue","err","Environment","enclosing","values","locked","_args6","fnBody","fnArgNamesList","fnArgNames","callEnv","closure","idx","clearEnv","sideEffectFn","_args7","fnEval","_this4","Interpreter","currentEnv","globals","lastLiteral","lastPrint","execList","defaultOptions","stdout","_this$options","lockedGlobals","plLiterals","factory","DATA_STRUCT_CONSTRUCTORS","simpleFunction","constFn","def","ifFn","doFn","item","_step2","_iterator2","returnVal","thisArg","_arguments","P","generator","reject","step","rejected","fulfilled","Ordering","StdRuntimeError","_inherits","PLBool","_value","other","Equal","Greater","Less","toJS","plString","plBool","PLString","isInteger","charAt","end","ord","localeCompare","plNumber","copy","NothingClass","toInt","isNothing","assertType","getObjectName","typeCheck","assertImpl","instance","method","assertInteger","assertNothing","_c","_d","decimals","assertNumeric","decimalObj","isScientific","parseScientificString","parseDecimalString","intValue","PLNumber","strValue","isNaN","decimalObject","exponential","Math","pow","fraction","expandDecimals","d1","d2","maxDecimal","max","intValue1","intValue2","numFn","modulo","dividend","divisor","num","mod","gcd","isBelowEpsilon","abs","EPSILON","intValueOld","decimalsOld","MAX_SAFE_INTEGER","simplifyDecimal","_decimals","_intValue","round","toFixed","plNumFn1","plNumFn2","LN2","LN10","LOG2E","LOG10E","PI","SQRT1_2","SQRT2","sign","min","floor","ceil","trunc","cbrt","sqrt","log2","log10","DEG_TO_RAD","sin","rem","asin","asinh","cos","acos","acosh","tan","atan","atan2","atanh","math","freeze","deg2rad","multiply","rad2deg","divide","typeClassBaseFn","typeof","debugTypeOf","deepCopy","js","toJSON","equals","lessThen","lt","partialCmp","greaterThen","gt","typeClassCmpFn","not","typeClassOps","negate","and","or","subtract","PLVector","el","reverse","init","elem","lastIdx","res","plVector","vectorFn","sum","list","prod","intersperse","separator","head","tail","rand","random","modules","randomInt","ai","bi","shuffle","vv","range","len","arr","range0","_v","Just","PLHashMap","ary","chunkSize","newAry","chunk","k","_ref6","_ref7","_ref8","plHashMap","_len2","_key2","hashMapFn","PLSet","contains","_this5","_this6","setFn","union","difference","intersection","symmetricDifference","isValid","PLFractionNumber","numerator","denominator","lcm","plFractionNumber","fractionNumberFn","accuracy","base","fromStr","_str$split$map2","Vector","HashMap","runtime","count","collection","accumulator","container","const","maybe","hasBtoa","btoa","hasAtob","atob","btoaImpl","Buffer","atobImpl","encodeUnicode","encodeURIComponent","match","p1","decodeUnicode","decodeURIComponent","_common_methods","nodequery","flowinput$obj","nodemethod","leafgon_env_type","LEAFGON_ENV_TYPE","generateIndentsByDepth","depth","repeat","_obj$constructor$kind","_obj$constructor","_obj$constructor2","debuggerGlobal","probe","parseJsonToLEAFlisp","isdictval","inputtype","curindentstr","nextindentstr","parseJsonToLEAFlispObj","dot","toLocaleString","pos","L","BigInt","eToNumber","leafLISPStdLib","_probefunc","_tracefunc","return","nil","null","_trace","format","_string","templateString","proxy","jsdata","formatted_str","m0","m1","m1_trimmed","Proxy","target","isnil","_nil","isbottle","_bottle","islist","_list","_l","flatten","_joinch","bkey","bdata","_PLString$kind","_bkey","_bdata","bottled_data","getbottle","bottlelist","_PLVector$kind","_thebottle","_PLHashMap$kind","regexp","targetstr","expstr","restr","jsoned_targetstr","re_match","numlist","_PLVector$kind2","_numlist","_PLVector$kind3","parse","_str","parsednum","target_str","hashmap1","hashmap2","_PLHashMap$kind2","_PLHashMap$kind3","_dict1","_dict2","_merged_dict","_PLVector$kind4","_PLVector$kind5","_keys","_values","_new_dict","list1","list2","_PLVector$kind6","_PLVector$kind7","uuid4","uri","uuid_val","arg1","arg2","tofixed","init_gRuntimeLEAFlisp","_etaTree","accio_bottles","cheatTextPromise","leafgraph_args","getLEAFGraph","cheatsheet","standardSpellbook","curatedSpellbook","stdlambdalut","curatedlambdalut","spellbook","graphcomponents","spelldefs","lambdalut","_leafgraph","executeLEAFLogic","_default","helptext","_helpdict","leafLISPREPLStdLib","cheat","_helptext","_cmd","help","commands","_commands","PocketLisp","runLEAFlispcode","_lispcode","_runtimeLEAFlisp","_leafaddress","_preamble_len","insituexecute","errlist","_err$position","leaflisp_errmsg","address","hijackTestURL","lispcode_url_hijacker_re","a_url","url_match","hijacked_url","replaceAll","is_interactive_lut","_leaflisp","_ref9","runtimeLEAFlisp","spawnVIMEditor","probeGraph","cur_address","popupDebuggerTraceWindow","popupDebuggerProbeWindow","is_interactive","lispcode","is_rewritable","is_bottlemode","leafnodeioInput$","_leafgraph_args","getLEAFLispInteractiveGraph","_leaflispgraph","_probegraph","parseAddressableGraph","_tracedata","tracemax","timestamp","Date","now","_ret","probemax","gRuntimeLEAFlisp","leafaddress","elementioLUT","_inputbottle","_provenance","vim","_controlflow$obj$_con","_controlflow$obj$_con2","loopidx","_config","clubrefnode","doleaflisp","node_input","lispinput","wiredlispcode","preamble_len","_runLEAFlispcode2","errcode","lispresult","traffic_semaphore","relay_ctrl$","BehaviorSubject","_data_out","_rewrite_data","node_data","updateNode","variables","dolispresult","_codebottle","_bottle_data","_bottle_code","_callee4","_ref10","_context4","input$Arr","_callee5","_ref12","runtimestate","commonmethods","_args5","_context5","isinteractive","texteditor","setTextSource","getTextSource","getNodeData","_leafchronosflow","_defaultLambda","merged_data_in$","_$obj","substitute","nodectrl$","etafunc","_leafmixflow","_obj","isbottled","isparfait","iscrate","isdict","israw","bottle2dict","apidef","_leafgateflow","gatekey","_gate_tag","_candidates","sort","getGateTagLabelText","do_gateflow","unitdata","_unitdata$_bname","_unitdata$_bname2","_cratelabel","_isNOTgate","querystrings","handleUnbottledData","is_array_input","gateddata","_next_datum","_entry","raceConditionError","_leaflabel","handleSpecialLabelLogic","backslash_re","queryparam_re","lut_name","_result","queryparam_name","qparams","params","qparam_dict","window","location","search","URLSearchParams","searchParams","_dataplane","targets","labelPromise","setupLabelDataplane","reduced_defaultlambda_obj","_leafdelabel","removeLabel","lambdalabels$obj","flowoutput$","_lambdalabel","preprocessed_data","_idx","copyBottle","processed","_dataentry","_ref0","_leafbottle","_tag_text","getBottleTagLabelText","ctrl_in_cache","bottle_name","lambdakey$obj","_lambdakey","tag","input$obj","_leafunbottle","bottle_label","_composite_in","do_unbottlefunc","_a_data","unbottleddata","_leafcrate","cratetag_text","getCrateTagLabelText","combinedcrate","_btl","_leafconfig","getConfigData","_getConfigData","configDataGen","configData","diamondctrlflow$obj","_datum_in","a_diamond_list","description","lambdas","default","defaultLambda","bro","input$","diamonds","leafgon_url","LEAFGON_URL","dia$obj","href","href$obj","_href_in","output$obj","_data_in_arr","clubs","nodeinput","a_club_list","is_lambda_subscription","subscription","_in_ctrl","controlflow_obj","_leafgnav","filterDeckSpadeBottles","filterDeckHeartBottles","flowinput$","_leafpopupview","bottleUp","node_output","JZZ","jzzpkg","toneinstrument_lut","synth","new","Synth","amsynth","AMSynth","duosynth","DuoSynth","fmsynth","FMSynth","membranesynth","MembraneSynth","metalsynth","MetalSynth","monosynth","MonoSynth","noisesynth","NoiseSynth","plucksynth","PluckSynth","polysynth","voice","PolySynth","sampler","Sampler","tonevoice_lut","duosyntho","toneeffect_lut","autofilter","tonepkg","bitcrusher","chebyshev","pitchshift","doConfigureEffect","is_reset","_toneeffect_lut$_conf","effect","sound","initializeSoundStage","destroySoundStageNode","dispose","midi_base_notenum2pitch_lut","midi_notenum2pitchname","_notenum","nameidx","pitchnum","ElemCacheKeyLUT","LAMBDA_OBJ","REFNODE","RTCONTEXT","CTRLIN","DATAIN","DOMAIN","APPID","http","URI","HEADER","REQUEST_TTL_CACHE","gnav","EDGES","BACKDROP","prompt","UIDEFS","mediaplayer","CONFIG","SOUNDSTAGE","html","TEMPLATE","formatElementFlowdata","_std_elements_lut","_stream_cache","urigen","_inflow_ctrl$obj","_ctrl_out$","_input","data_in","componentdata","headergen","header","_elementlogic","_uribase","_header","_flowdatain","recognizedLambdaConstants","curLambdaKeys","validLambdaKeyList","http_mode","_nodejs_cookies","_do_uri_request","throttled_uri_request","req_result","mode","sub","_sub$_label","resprom","json_output","_resprom","_res","_json_output","_t2","toUpperCase","headers","Cookie","credentials","request","Accept","uri$obj","header$obj","merged_ctrl_in$","_ctrl_in$","_aux_data_in","_in$obj","_ctrl_out","_urlret","processAxiosObj","objtype","fromEntries","iselementio","edgesgen","backdropgen","backdrop","_controlflow_config","edges$obj","_blankaction","_tagaction","_bgtagvectors","navnodes","navnodeedges","edge","navbackdrop","elementiosubject$","backdrop_url","bgtagvectors","_leaflogic","_leaflogic_ret","tagvectors","tagaction","_tagid","tagactionlogic","tagaction_ret","blankaction","_coord","blankactionlogic","blankaction_ret","_t3","graph_options","layout","popup","elementioInput$","elementio$","relay_data$","poprect","quarantined_data_in","_child_elements","headless","ismenu","unmountCallback","onclose","_unmountCallback","children","image","data_out","imagelist","editor","text","_input$obj","_data_in$_content","_data_in$_content2","_data_in$_content3","textsource","lambdarefnodedata","lambdasourceuuid","dataflowinput","uidefsgen","uidefs","uidefs$obj","merged_in","_uidefs_in","marginval","margin","fieldwidthval","fieldwidth","screenio_output","mediainput","mediatype","_onDropAccepted","_nodeinput","onDropAccepted","b64imgdata","_reduced_lambda_obj$o","_elementio_mesg","ondrop","finalize","midi","midiInput$","beats","midiMessageReceived","ev","_ev","cmd","noteNumber","velocity","midi_device","openMidiIn","_midi","connect","processed_in","defaultgen","is_instrument","is_source","is_effect","is_target","data_trigger_bottle","audionode","timing","bpm","instrument","onConfigBottle","newconfig","_soundnode","_cbottle","_toneinstrument_lut$_","doConfigureInstrument","doConfigureSource","cacheSoundStageNode","nodeuuid1","nodeuuid2","_ibottle","_sourcenodeuuid","soundnode_trail","_targetnodeuuid","toDestination","onInitBottle","state","_in_bottle","soundstageobj","pitchname","duration","triggerAttackRelease","triggerAttack","triggerRelease","template_parse_sync$","templategen","ctrl_accio_bottle","data_accio_bottle","template$obj","firstValueFrom","data_type","Handlebars","template_obj","compiled_str","_curval","text_b64","context","context_str_b64","jsonnum_replace","value_type","_parse_synced_in","_template_fn","processed_html","template_keys","_a$_label","_b$_label","labela","labelb","valid_data_in","valid_data_bname","_valid_data_in","_do_datalogic","innerhtml","iframe_msg","form","issingle","form_template_script","form_template_body","minifyString","bname","stylekey","scriptkey","bodykey","directus","X_CSRF_Token","axios","initStdElementProps","_cache","_leafelement","getDomain","getAppid","formatFlowdata","element_data_cache","_std_elements_props","inflow_ctrl$","_ctrl_input","merged_input$","_ctrl_data$","domain$obj","appid$obj","executeLEAFLogicInSync","http_ctrl$","_combined_ctrl","http_cache","_http_ctrl","_metadata","_mediaplayer_ctrl","_element_ctrl","configtext","getLambdaLUT","_getLambdaLUT","_ref1","setElementName","getLEAFNodeCoreLogic","scope","leafstd_corelib","leafgnav","leafpopupview","_leaflambdagraph","_leafanchor","_leafspell","_leafspelldef","_leafloopyspell","memoize","lodashpkg","EtaTreeConfig","isdebug","initTrafficSyncCache","lanecount","_lane_idx","weaveDataflowPlane","startnodes","endnodes","eta_lut","prime_ctrlflow$obj","prime_dataflow$obj","rt_context","empty_databus_bottle","flowinterface","_weaveDataflowPlane","_curnodes","_datainputnodes","_flowinterface$nodeuu","_flowinterface$nodeuu2","ctrl_out","datainputnodes","mapInEdges","_upstream_out$objArr","_curnode","_upstream_ctrlflow$objArr","_upstream_dataflow$objArr","syncmultiple","_inputnodes","inputnodes","synchronized","flowcache","initflowcache","_Object$keys","connected_input_num","cacheLUT","cur_nodeinput_idx","recordflow","_flow_idx","checksync","pred","curbool","data_in$Arr","_stream$obj","ctrl_in$Arr","get_composite_in$objArr","_data_in$","initializeFlowInterface","nodedata","is_chronosflow","ctrl","_composite_in$obj","_stream$objArr","_nodeflowinterface","_chronos_data_out$","_upstream_ctrlflow$Arr","_flow$Arr","_out$obj","_traffic_sync_cache","_synced_data_cache","_lanecount","_next_in","is_synced","synced_data","_combined_inArr","synced_nonempty_data","_flattend_dat","_consolidated_ctrl_signal","_combined_traces","traces","_ctrl$","_ctrldata","doChronosSynchronize","time","at","_chronos_ctrl_out$","synced_upstream_controlflow$obj","synced_upstream_dataflow$objArr","etaoutput$obj","redacted_dataflow$objArr","weavedplane_out$objArr","inputcount","ctrl_out$Arr","TRACEON","leafTraceFlow","desc","_combined_out","doChronosAsynchronize","synced_exit_controlflow$obj","parseDataflowFunc","_etaTree$leafgraph$gr","metadata","inline_refnode_LUT","ctrl_in","_flowfunc_output$obj","_pipe_cache_ctrl_in","_plurality_checked_data_in","setTimeout","etaReduceDataflowComponent","component_members","promiseArr","dataflow_eta","membernode_uuid","etaReductionPromise","etaReduceLEAFNode","membernode_etafunc","isSourceNode","sources","all","sessionid","_ref7$addnodelut","addnodelut","lambdaLUT","missingLambdaNodes","_nodelut","lambdanodeuuid","components","warn","_etaTree$graphcompone","lambdacomponent_idx","lambdacomponent_scope","lambda_component","nodegroups","lambdanode_etaobj","lambda_key","refnode_logic","lambdanode_logic","_mode","_host_domain","_host_appid","_graphcomponents","_leafio","_leaflakeio","_mnemosyne","_loadElementJsEsmModule","_etaReduceLEAFNode2","_lookupLEAFNodeMethods","_lookupRuntimeLambdaLUT","_hostEtaTree","_runtimeEtaTree","hostdomain","hostappid","rootgraphstate","leafnodemethods","isnodeonly","cur_etatree","lookupLEAFNodeMethods","_refnodedata","_refnode_logic","leafNodeMethods","_nodelambda","_refnodedata2","_refnode_logic4","_lambdactrl","_leafNodeMethods","inputArr$","loadElementJsEsmModule","_callee6","moduleUrl","modulestr","_context6","esmcache","_x7","initTree","_etaReduceLEAFNode","_callee7","_ref11","runtime_scope","component_scope","templateLEAFNodeLogic","leafnodeEtaFunc","_context7","getEtaContext","_lambda_obj","_lookupSpellBook","spell_lambda_obj","spelldefnode","_spelldef","is_generic_spell","_contextuallambda","_keywordlist","lookupSpellBook","parseSpellBook","spellprom","userspellbook","userlambdalut","stdspellbook","curatedspellbook","timeoutPromise","preprocessfunc","postprocessfunc","_executeSpell","_spellprom","_data$","_combined_in$0$sid","spell_output_relay$","outer_relay_ctrl$","spell_subscription","inflow_data$","_refnodedata$leaf","spell_nodeuuid","spell_input","spell_etaTree","runtime_spellname","spell_output$","subscribe","_next_out","emsg","complete","_out_sig","unsubscribe","reduced_spelldef","lambdalambdalist","lambda_default","reduced_lambdalambda_obj","_filter_nodelut","filter_nodelut","filtered","_filter_nodelut2","createThrottleGate","lastCall","intervalMs","getLargestCount","numberslist","is_bypass","loopcount","is_forever","ctrlflowThrottleGate","loopThrottleGate","throttled_ctrlflow$obj","_ctrl_data","loopyidx","idxcache","loopydata_cache","loopymetactrl$","loopystopper$","ReplaySubject","loopyctrl$","takeUntil","_buffered_data","loopymetadata$","relay_data_out$","op_subs","await_data_input$","await_ctrl_input$","await_output$obj","relay_ctrl_out$","closed","_data_cache","_combined_await_out","_exit_cond","_err","_outflow_data","leafgraph_apidef","hasGithubPrefix","graphAddr","redactGraphQueryValues","parseLeafgraphAddressStrict","leafgraph_addr_str","slash_index","graph_domain","graph_appid","parseLeafgraphAddressWithDefaults","graphRefUpdateHandler","mnemosyneRef","_etaTreeForest","parseLEAFConfig","main_component","promiseFactory","runtimeLEAFGraphFuncLUTPromise","graphLUT","etaReductionPromiseArr","leafconfigPromise","leafconfigfLUT","leafnodeuuid","_leafnodeAttributes$l","a_spell_name","a_spelldef_uuid","spelldefLUTPromise","spelldefLUT","_x8","_x9","_x0","leafgraph_addr_raw","leafgraph_addr_lower","parsed_address","runtimeLEAFGraphFuncLUT","_lambda","masterSubsDirectory","dataflowgraph","Graph","lambdagraph","combinedgraph","addNode","standardSpellBook","curatedSpellBook","datasources","datatargets","lambdasources","lambdatargets","lambdasourcelut","anchortargets","out_edges","an_edge","edge_data","addEdgeWithKey","teststr","runtimeList","lambdaList","anchoredList","addUndirectedEdgeWithKey","dropNode","multi","forEachNodeYetUnseen","component","forEachNeighbor","connectedComponents","buildComponentLUT","nodesList","componentIdx","componentScope","componentCategory","cumulativeLUT","category","_nodes","attributes","componentDetailsLUT","spelldefnodes","leafconfignode","isAnchoredComponent","is_lambdacomp","isLambdaComponent","is_spelldefcomp","isSpellDefComponent","is_leafconfigcomp","isLEAFConfigComponent","component_idx","isDataflowPlaneScoped","isLambdaPlaneScoped","spelldefnodedata","isRuntimeComponent","curLen","info","timeEnd","anchored","data_input","runtimeconfig","ctrl_input","data_input$","ctrl_input$","dataret_prom","dataret","subs_ctrl_accio_bottle","subscribeToLEAFLogic","stopper$","_ctrl_in_cache","ret","output$inst","ctrlinput$","flowname","controldata$obj","run_leaflogic","_outdata","outdata","subject$","TRACESIZE","prom","exception","timer","race","_resolve","_rej","errorbottle","clearTimeout","_prevtraces","_curtrace","consolelog","inflow_ctrl$obj","data_inflow$objArr","meta_ctrl_in$","_inflow_ctrl$obj$_con","_inflow_ctrl$obj$_con2","transformation","_ctrl_bridge$","_data_bridge$","_ctrl_data_cache","leaflogic_out$obj","_transformation$datal","_ctrl_data_cache2","_new_ctrl_data","_transformation$datal2","_filtered_data","addrstr","rt_leafgraph","cloneObject","createGQLClient","endpoint","websocket","hook","clientContext","client","open","executeQuery","queryOptions","successCallback","errorCallback","headerOverrides","responseObj","makeWsClient","wsConnection","WebSocket","onerror","sendWsEvent","send","setWsClient","_wsClient","shouldRetry","addEventListener","event","ctx","onConnectionSuccess","onConnectionError","onConnectionKeepAlive","onGraphQLData","onGraphQLError","onGraphQLComplete","wsEventHandler","establishWS","subscriptionOptions","operationId","stop","updateHeaders","newHeaders","SUBS_GRAPH","_ref$filter","QUERY_GRAPH","_ref2$filter","defaultLEAFlakeConfig","initializeLEAFlakeGQLClient","_ref3$_clientConfig","_clientConfig","_ref3$_metamodel","_metamodel","_ref3$_sessionid","_sessionid","client_auth_key","clientAuthKey","leaflakeclientobj","subs_methods","reconnectGQLClient","gql_subs_client","_ref4$force","force","CLOSED","CLOSING","readyState","gql_qm_client","gqlsubsclientPromise","getGraphSubscription","_ref6$filter","subsCallback","_ref6$errorCallback","_i","characters","generateOperationId","subscription_handle","getGraphQuery","_ref8$filter","query_options","qmresponse","_ref7$filter","clientState","reconnect","mut_options","delNode","node_uuid","addEdge","delEdge","edge_uuid","initLEAFIOapi","subjectDirectory","_ref9$stateObjInstanc","_LEAFappList","stateObjInstanceID","_ref9$dirOfSubjects","_ref9$permissions","_ref9$metamodel","metamodel","stateRef","initializeSubsMain","doSubscribe","callbackFunc","invokeCallback","getCurLEAFIOState","setNewLEAFIOState","dataOrigin","errormesg","setLEAFIOCallback","callerid","destructLEAFIOobj","_ref13","_ref14","doUnsubscribe","subjectMain","handle$","_eventCallback","skip","doAddAddressee","gqlrequest","initializeMasterSubsDirectory","_stateObjInstanceID","_ref15","_ref16","mutateAddNode","_ref$endpoint","mutateDelNode","_ref3$endpoint","mutateUpdateNode","_ref5$endpoint","mutateAddEdge","_ref7$endpoint","_t4","mutateDelEdge","_ref9$endpoint","_t5"],"sourceRoot":""}