{"version":3,"file":"spark.cjs","sources":["../packages/spark/add/add.js","../packages/spark/always/always.js","../packages/spark/dec/dec.js","../packages/spark/different/different.js","../packages/spark/equals/equals.js","../packages/spark/gt/gt.js","../packages/spark/gte/gte.js","../packages/spark/inc/inc.js","../packages/spark/len/len.js","../packages/spark/lt/lt.js","../packages/spark/lte/lte.js","../packages/spark/not/not.js","../packages/spark/prop/prop.js","../packages/spark/subtract/subtract.js","../packages/spark/truthy/truthy.js","../packages/spark/registry.js","../packages/spark/spark.js"],"sourcesContent":["/**\n * Soma um valor ao valor atual.\n *\n * @param {number|string} x - Valor atual.\n * @param {number|string} y - Valor a ser somado.\n * @returns {number}\n */\nexport function add(x, y) {\n  return Number(x) + Number(y);\n}\n","/**\n * Retorna o valor atual sem modificações.\n *\n * @param {*} value - Valor atual.\n * @returns {*} - Mesmo valor passado como argumento.\n */\nexport const always = (_token, value) => value;\n","/**\n * Decrementa o valor atual em 1.\n *\n * @param {number|string} x - Valor atual.\n * @returns {number}\n */\nexport function dec(x) {\n  return Number(x) - 1;\n}\n","/**\n * Compara dois valores e retorna `true` se forem diferentes.\n *\n * @param {*} x - Valor atual.\n * @param {*} y - Valor de comparação.\n * @returns {boolean} `true` se `x != y`, senão `false`.\n */\nexport function different(x, y) {\n  return x != y;\n}\n","/**\n * Compara dois valores e retorna `true` se forem iguais.\n *\n * @param {*} x - Valor atual.\n * @param {*} y - Valor de comparação.\n * @returns {boolean} `true` se `x == y`, senão `false`.\n */\nexport function equals(x, y) {\n  return x == y;\n}\n","/**\n * Retorna `true` se `x` for maior que `y`.\n *\n * @param {number|string} x\n * @param {number|string} y\n * @returns {boolean}\n */\nexport function gt(x, y) {\n  return Number(x) > Number(y);\n}\n","/**\n * Retorna `true` se `x` for maior ou igual a `y`.\n *\n * @param {number|string} x\n * @param {number|string} y\n * @returns {boolean}\n */\nexport function gte(x, y) {\n  return Number(x) >= Number(y);\n}\n","/**\n * Incrementa o valor atual em 1.\n *\n * @param {number|string} x - Valor atual.\n * @returns {number}\n */\nexport function inc(x) {\n  return Number(x) + 1;\n}\n","/**\n * Retorna o número de chaves de um objeto.\n *\n * @param {object|string} x\n * @returns {number}\n */\nexport function len(x) {\n  return Object.keys(x ?? {})?.length;\n}\n","/**\n * Retorna `true` se `x` for menor que `y`.\n *\n * @param {number|string} x\n * @param {number|string} y\n * @returns {boolean}\n */\nexport function lt(x, y) {\n  return Number(x) < Number(y);\n}\n","/**\n * Retorna `true` se `x` for menor ou igual a `y`.\n *\n * @param {number|string} x\n * @param {number|string} y\n * @returns {boolean}\n */\nexport function lte(x, y) {\n  return Number(x) <= Number(y);\n}\n","/**\n * Inverte o valor booleano de `x`.\n *\n * @param {*} x\n * @returns {boolean}\n */\nexport function not(x) {\n  return !x;\n}\n","/**\n * Acessa uma propriedade dinamicamente de um objeto.\n *\n * @param {object} target - Objeto de origem.\n * @param {string} path - Caminho da propriedade, pode conter notacao com colchetes.\n * @returns {any} Valor da propriedade ou `undefined`.\n */\nexport function prop(target, path) {\n  try {\n    return new Function(\n      \"target\",\n      `return target${/\\[/.test(path) ? \"\" : \".\"}${path}`,\n    )(target);\n  } catch (_) {\n    return undefined;\n  }\n}\n","/**\n * Subtrai um valor do valor atual.\n *\n * @param {number|string} x - Valor atual.\n * @param {number|string} y - Valor a ser subtraído.\n * @returns {number}\n */\nexport function subtract(x, y) {\n  return Number(x) - Number(y);\n}\n","/**\n * Avalia se um valor pode ser considerado truthy, seguindo convenções de atributos booleanos HTML.\n *\n * @param {string|null} value - Valor bruto vindo do DOM.\n * @returns {boolean} `false` para `\"false\"`, `\"0\"`, `\"no\"` ou `null`; `true` caso contrário.\n *\n * @description\n * Este spark interpreta os valores `\"false\"`, `\"0\"`, `\"no\"` e `null` como `false`,\n * e qualquer outro valor como `true`. É útil para uso com atributos HTML\n * que representam flags booleanas, como `disabled`, `checked`, etc.\n *\n * @example\n * truthy(\"no\");     // false\n * truthy(\"false\");  // false\n * truthy(\"0\");      // false\n * truthy(null);     // false\n * truthy(\"true\");   // true\n * truthy(\"\");       // true\n */\nexport function truthy(value) {\n  if (value === \"no\") return false;\n  if (value === \"false\") return false;\n  if (value === \"0\") return false;\n  if (value === null) return false;\n  return true;\n}\n","import { add } from \"./add\";\nimport { always } from \"./always\";\nimport { dec } from \"./dec\";\nimport { different } from \"./different\";\nimport { equals } from \"./equals\";\nimport { gt } from \"./gt\";\nimport { gte } from \"./gte\";\nimport { inc } from \"./inc\";\nimport { len } from \"./len\";\nimport { lt } from \"./lt\";\nimport { lte } from \"./lte\";\nimport { not } from \"./not\";\nimport { prop } from \"./prop\";\nimport { subtract } from \"./subtract\";\nimport { truthy } from \"./truthy\";\n\n/**\n * Objeto contendo todos os sparks registrados.\n * Cada chave corresponde ao nome da função utilizada no arco.\n */\nexport const registry = {\n  always,\n  add,\n  dec,\n  different,\n  equals,\n  gt,\n  gte,\n  inc,\n  len,\n  lt,\n  lte,\n  not,\n  prop,\n  subtract,\n  truthy,\n};\n","import { registry } from \"./registry\";\n\n/**\n * Objeto `spark` expõe acesso dinâmico ao registro de transformadores.\n *\n * @description\n * Ele permite a recuperação (`get`) e o registro (`set`) de funções que transformam\n * valores no fluxo dos arcos do Echo. Cada função registrada pode ser referenciada\n * por nome em protocolos declarativos como: `source/event:type/sink|add=1|len`.\n *\n * @example\n * spark.get(\"len\")(\"abc\") // 3\n * spark.set(\"double\", x => x * 2)\n */\nconst spark = {\n  /**\n   * Recupera uma função registrada pelo nome.\n   *\n   * @param {string} name - Nome do spark.\n   * @returns {Function} A função correspondente ou uma função no-op.\n   *\n   * @example\n   * spark.get(\"len\")(\"abc\") // 3\n   * spark.get(\"desconhecido\")(42) // 42 (no-op)\n   */\n  get(name) {\n    return registry[name] ?? ((x) => x);\n  },\n\n  /**\n   * Registra uma nova função spark.\n   *\n   * @param {string} name - Nome da função.\n   * @param {Function} fn - Função a ser registrada.\n   * @returns {typeof spark} Retorna a própria API para encadeamento.\n   *\n   * @example\n   * spark.set(\"square\", x => x * x)\n   */\n  set(name, fn) {\n    registry[name] = fn;\n    return spark;\n  },\n};\n\nexport default spark;\n"],"names":["add","x","y","Number","always","_token","value","dec","different","equals","gt","gte","inc","len","Object","keys","length","lt","lte","not","prop","target","path","Function","test","_","subtract","truthy","registry","spark","get","name","set","fn"],"mappings":";AAOO,SAASA,EAAIC,IAAGC,IACrB;AAAA,SAAOC,OAAOF,EAAAA,IAAKE,OAAOD,EAAAA;AAC5B;wGCHY,EAAA,CAAA;AAAA,MAACE,IAAS,CAACC,IAAQC,OAAUA;ACAlC,SAASC,EAAIN,IAClB;AAAA,SAAOE,OAAOF,EAAAA,IAAK;AACrB;ACDO,SAASO,EAAUP,IAAGC,IAAAA;AAC3B,SAAOD,MAAKC;AACd;ACFO,SAASO,EAAOR,IAAGC,IAAAA;AACxB,SAAOD,MAAKC;AACd;ACFO,SAASQ,EAAGT,IAAGC,IAAAA;AACpB,SAAOC,OAAOF,MAAKE,OAAOD,EAAAA;AAC5B;ACFO,SAASS,EAAIV,IAAGC,IACrB;AAAA,SAAOC,OAAOF,EAAAA,KAAME,OAAOD,EAAAA;AAC7B;ACHO,SAASU,EAAIX,IAAAA;AAClB,SAAOE,OAAOF,EAAK,IAAA;AACrB;ACFO,SAASY,EAAIZ,IAAAA;;AAClB,UAAOa,YAAOC,KAAKd,MAAK,CAAA,CAAA,MAAjBa,mBAAsBE;AAC/B;ACDO,SAASC,EAAGhB,IAAGC,IAAAA;AACpB,SAAOC,OAAOF,EAAKE,IAAAA,OAAOD,EAC5B;AAAA;ACFO,SAASgB,EAAIjB,IAAGC,IAAAA;AACrB,SAAOC,OAAOF,EAAME,KAAAA,OAAOD,EAC7B;AAAA;ACHO,SAASiB,EAAIlB,IAClB;AAAA,SAAA,CAAQA;AACV;ACDO,SAASmB,EAAKC,IAAQC,IAAAA;AAC3B;AACE,WAAO,IAAIC,SACT,UACA,gBAAgB,KAAKC,KAAKF,EAAAA,IAAQ,KAAK,GAAA,GAAMA,EAFxC,EAAA,EAGLD,EACH;AAAA,EAAA,SAAQI,IAAAA;AACP;AAAA,EACJ;AACA;ACTO,SAASC,EAASzB,IAAGC,IAC1B;AAAA,SAAOC,OAAOF,EAAAA,IAAKE,OAAOD,EAAAA;AAC5B;ACUO,SAASyB,EAAOrB,IAAAA;AACrB,SAAc,SAAVA,OACU,YAAVA,OACU,QAAVA,MACU,SAAVA;AAEN;ACLO,MAAMsB,IAAW,EACtBxB,QAAAA,GACAJ,KACAO,GAAAA,KAAAA,GACAC,WACAC,GAAAA,QAAAA,GACAC,IACAC,GAAAA,KAAAA,GACAC,KACAC,GAAAA,KAAAA,GACAI,IACAC,GAAAA,KAAAA,GACAC,KACAC,GAAAA,MAAAA,GACAM,UACAC,GAAAA,QAAAA,EAAAA,GCrBIE,IAAQ,EAWZC,KAAIC,CAAAA,OACKH,EAASG,QAAW9B,CAAAA,OAAMA,KAanC+B,KAAG,CAACD,IAAME,QACRL,EAASG,EAAAA,IAAQE,IACVJ,GAAAA;;"}