{"_id":"@bemedev/fsf-test","_rev":"1-a4b19ee2d58e83f1903bc836828a8a8b","name":"@bemedev/fsf-test","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"version":"0.1.0","license":"MIT","description":"A libray to test @bemedev/fsf","name":"@bemedev/fsf-test","author":{"name":"chlbri","email":"bri_lvi@icloud.com","url":"https://bemedev.vercel.app"},"main":"lib/index.js","typings":"lib/index.d.ts","module":"lib/index.mjs","exports":{".":{"import":"./lib/index.mjs","require":"./lib/index.js"}},"engines":{"node":">=14"},"keywords":["fsf","State machines","Finite State machines","State management"],"scripts":{"config":"pnpm install","rollup":"rollup -c","prepare":"husky install","build":"rm -rf lib && pnpm run rollup","test":"pnpm run prepublishOnly && vitest run --passWithNoTests","test:watch":"vitest --passWithNoTests","remove":"rm -rf lib node_modules pnpm-lock.yaml","clean":"pnpm run remove && pnpm run config","prettier":"prettier --write \"src/**/*.{ts,tsx}\"","eslint":"eslint \"{src/**/*,App}.{ts,tsx}\"","lint":"pnpm run prettier && pnpm run eslint --fix","lint-watch":"onchange --await-write-finish 5500 \"**/*\" -- pnpm run lint","prepublishOnly":" pnpm run lint && pnpm run build"},"devDependencies":{"@bemedev/fsf":"^0.5.0","@bemedev/x-guard":"^0.1.1","@typescript-eslint/eslint-plugin":"^5.47.0","@typescript-eslint/parser":"^5.47.0","eslint":"^8.30.0","husky":"^8.0.2","onchange":"^7.1.0","prettier":"^2.8.1","pretty-quick":"^3.1.3","rollup":"^3.7.5","rollup-plugin-tsconfig-paths":"^1.4.0","rollup-plugin-typescript2":"^0.34.1","tslib":"^2.4.1","typescript":"^4.9.4","vite":"^4.0.2","vite-tsconfig-paths":"^4.0.3","vitest":"^0.25.2"},"peerDependencies":{"@bemedev/fsf":"^0.4.0"},"gitHead":"47695f731b702f4e7fba894572cd956796b849ef","_id":"@bemedev/fsf-test@0.1.0","_nodeVersion":"16.18.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-vh/YcLDmQtfNgrbczWAtV0JIOe9rFnljCkL+V3Ue2R4nSq144uSLtCvNJVmuEF/91FMCGweCIPNkkqlzTE8bbg==","shasum":"1f8c91df9d4010abd4a3f8b40f8a0616351eb2c1","tarball":"https://registry.npmjs.org/@bemedev/fsf-test/-/fsf-test-0.1.0.tgz","fileCount":33,"unpackedSize":24146,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAow8y+AtG8DVHnP+q+YXhEDwdwmtMPNMu1OaTgaQo2OAiB0NARed67u3QNkovQDH5CkuI0L3cniqcwO738KmJJxUA=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjoeL1ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoaKA//SmeibYjOnb2c4NuevYr5s0h3+GZnpb/Z313C6bBHzhIch/QF\r\nb9buA95360OR4kEBCFcD2Wp+UFmZCjhE2T3TGyjkbqdemd3olE2H41ZzjOBy\r\nfPuNKk584O51jBbwXgEm0WmfjFIn0sxawXaiZdNOoHgLupiCP1hknOxkj2Ix\r\nF1qAYZm7rM2sCs+ovE/1v6XyQ0JWgLzBoD1OhGxe7uLbKhAWBSZiya/2Q0R/\r\nQtoxTIcPe0Do4n+VdEsz8PQfNvxDpFCnJKrVr86Bqj+FG1qdT8Xq2rU2r+sy\r\nQPG2eLhdroZEDefURw92yzRMmC8lN3WJndoj8/pmk2M4qtrtBVH1gWILQlHE\r\nUmgDG7vwm5glG9vHA3v60njiH9VqpRcFt6FLEY9O+ApiCrCJXgIBiz3sSNhw\r\nsF97Giv/Jra6RVPX5LiNBMpz+c4Z/kMl9//v7tCebB+V2lEIvy56rpgIUE3L\r\n16WYhS8e4iZsUtEUuIGREXmnOPstFBPe56m9YbIgrTBo/QpMAbIgaTdkMJRw\r\n5ISr2dSvGOgIZkcrYDFHsMdq9SNR9uILAeHFcH9bKEpreWGmWLplOwiSA5eS\r\nhvkd0KhOyVRVoX07LCrInyWUd2+ivJ26ZGlSh0/DmClG6XsmACazmVBGAn1Y\r\nELagK66Gk4uVBYbXNE9VUJkZNge5Cfi8mDs=\r\n=inyp\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"bemedev","email":"bri_lvi@icloud.com"},"directories":{},"maintainers":[{"name":"bemedev","email":"bri_lvi@icloud.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fsf-test_0.1.0_1671553781404_0.9586217133286401"},"_hasShrinkwrap":false},"0.1.1":{"version":"0.1.1","license":"MIT","description":"A libray to test @bemedev/fsf","name":"@bemedev/fsf-test","author":{"name":"chlbri","email":"bri_lvi@icloud.com","url":"https://bemedev.vercel.app"},"main":"lib/index.js","typings":"lib/index.d.ts","module":"lib/index.mjs","exports":{".":{"import":"./lib/index.mjs","require":"./lib/index.js"}},"engines":{"node":">=14"},"keywords":["fsf","State machines","Finite State machines","State management"],"scripts":{"config":"pnpm install","rollup":"rollup -c","prepare":"husky install","build":"rm -rf lib && pnpm run rollup","test":"pnpm run prepublishOnly && vitest run --passWithNoTests","test:watch":"vitest --passWithNoTests","remove":"rm -rf lib node_modules pnpm-lock.yaml","clean":"pnpm run remove && pnpm run config","prettier":"prettier --write \"src/**/*.{ts,tsx}\"","eslint":"eslint \"{src/**/*,App}.{ts,tsx}\"","lint":"pnpm run prettier && pnpm run eslint --fix","lint-watch":"onchange --await-write-finish 5500 \"**/*\" -- pnpm run lint","prepublishOnly":" pnpm run lint && pnpm run build"},"devDependencies":{"@bemedev/fsf":"^0.5.0","@bemedev/x-guard":"^0.1.1","@typescript-eslint/eslint-plugin":"^5.47.0","@typescript-eslint/parser":"^5.47.0","eslint":"^8.30.0","husky":"^8.0.2","onchange":"^7.1.0","prettier":"^2.8.1","pretty-quick":"^3.1.3","rollup":"^3.7.5","rollup-plugin-tsconfig-paths":"^1.4.0","rollup-plugin-typescript2":"^0.34.1","tslib":"^2.4.1","typescript":"^4.9.4","vite":"^4.0.2","vite-tsconfig-paths":"^4.0.3","vitest":"^0.25.2"},"peerDependencies":{"@bemedev/fsf":"^0.4.0"},"gitHead":"5e7474b9d337ef28476fb023cd63a29988f6406a","_id":"@bemedev/fsf-test@0.1.1","_nodeVersion":"16.18.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-tHOnJTpCZnNhrPlrgcbQt90p1uVbOyR05tI13b548SjpR8Jr2RQaKPpNX42WX1QJEEc1MzbFlcRWfErMO/3fCA==","shasum":"e1665126d1e1c43f13d41b34d35774274d72429f","tarball":"https://registry.npmjs.org/@bemedev/fsf-test/-/fsf-test-0.1.1.tgz","fileCount":33,"unpackedSize":24143,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD7i+WDAoRBmQz+j7dZ7E97YkkK4913fanNa782Fo3B1wIhAIaZX7J8v1fzUm7hAbZqXF7g7J4Yk0BHSxkFvq5kYKAN"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjoeOxACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqcJQ/+MVjQSpLdQwzjvDgwl4pWj9595p2/vxPcpWDHVYjWRAC0y8+3\r\nsQ8fxAReRb0hUGU0/3GNjr+JoN8aKvcaTk8/QKI8XD2lEWyAuB2RqPKuh2UT\r\ngK/PEIdCJE0Gm60vOVhVubsBpRMmP4V68YWQLoRCC6qZogONOVcX5rtuFqTK\r\nW4FRs9ail++/Ix5m/wIy1f2QNZcepGdm+RyjmPG2Dek5sbsBsXkLA/FiQsCA\r\nnjRWcRjLYkLL2RNGXCbsf/OojexsTO9EARmNquDcqXaMsXyK67ke33nKB3da\r\nb83dkEI+oPgLxS7f4ZMyalWBSFVWeAyGEPJ+w7r+nOGIeEF4cF1F3I7n0xI1\r\n7rj8TvxYpgUtIQ8y8KlDLv/nwKRY+2jfO1FJlNgELsdfQd2Zy68dVjNsJRY0\r\nkXDpzftLX65MmWwMK0MpHPeKBiQtPjRUd1QAZEOMKO76amRAdRuYeNP24j/m\r\nujzLnmtrBKxlef/THyF7EKAduHIsBTIDHIoAxUmw0jZTcE4aHgLRHcISaQXW\r\nK2+11TyTSKBtf1Hxa2sWq41EOhymR5Mlm4kXYPp5/yH/lZLlhdcTt722xxf8\r\nAL93EE1FvRrJmeIi4/JIutFh8rHJDDMShwYu71s8VAg0wSbKXBpxx1rcUPCy\r\n1p2dggjz4zL1BrMGAncLYsIQOgNeSclucmI=\r\n=rtwg\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"bemedev","email":"bri_lvi@icloud.com"},"directories":{},"maintainers":[{"name":"bemedev","email":"bri_lvi@icloud.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fsf-test_0.1.1_1671553969604_0.08617314535156173"},"_hasShrinkwrap":false}},"time":{"created":"2022-12-20T16:29:41.296Z","0.1.0":"2022-12-20T16:29:41.590Z","modified":"2022-12-20T16:32:49.849Z","0.1.1":"2022-12-20T16:32:49.766Z"},"maintainers":[{"name":"bemedev","email":"bri_lvi@icloud.com"}],"description":"A libray to test @bemedev/fsf","keywords":["fsf","State machines","Finite State machines","State management"],"author":{"name":"chlbri","email":"bri_lvi@icloud.com","url":"https://bemedev.vercel.app"},"license":"MIT","readme":"# @bemedev/fsf-test\n\n> A test package for the\n> [@bemedev/fsf](https://www.npmjs.com/package/@bemedev/fsf) package\n\n</br>\n\n## Install\n\n```sh\nnpm install --save @bemedev/fsf-test //or\nyarn add @bemedev/fsf-test //or\npnpm add @bemedev/fsf-test\n```\n\n</br>\n\n## Usage\n\n```ts\nimport { createFunction } from '@bemedev/fsf';\nimport { test } from 'vitest';\nimport testFunction from './testFunction';\n\ntype Context = {\n  apiKey?: string;\n  apiUrl?: string;\n  url?: string;\n};\n\ntype Events = { products?: string[]; categories?: string[] };\n\nconst queryMachine = createFunction(\n  {\n    schema: {\n      context: {} as Context,\n      events: {} as Events,\n      data: {} as string,\n    },\n    context: {},\n    initial: 'preferences',\n    states: {\n      preferences: {\n        always: {\n          actions: ['setUrl', 'setApiKey', 'startUrl'],\n          target: 'categories',\n        },\n      },\n      categories: {\n        always: [\n          {\n            cond: 'hasCategories',\n            target: 'products',\n            actions: 'setCategories',\n          },\n          'products',\n        ],\n      },\n      products: {\n        always: [\n          {\n            cond: 'hasProducts',\n            target: 'final',\n            actions: 'setProducts',\n          },\n          'final',\n        ],\n      },\n      final: {\n        data: 'query',\n      },\n    },\n  },\n  {\n    // strict: true,\n    actions: {\n      setApiKey: ctx => {\n        ctx.apiKey = '123';\n      },\n      setUrl: ctx => {\n        ctx.apiUrl = 'https://example.com';\n      },\n      startUrl: ctx => {\n        const { apiUrl, apiKey } = ctx;\n        ctx.url = `${apiUrl}?apikey=${apiKey}`;\n      },\n      setCategories: (ctx, { categories }) => {\n        const _categories = categories?.join(',');\n        ctx.url += `&categories=${_categories}`;\n      },\n      setProducts: (ctx, { products }) => {\n        const _products = products?.join(',');\n        ctx.url += `&products=${_products}`;\n      },\n    },\n    guards: {\n      hasCategories: (_, { categories }) =>\n        !!categories && categories.length > 0,\n      hasProducts: (_, { products }) => !!products && products.length > 0,\n    },\n    datas: {\n      query: ctx => ctx.url,\n    },\n  },\n);\n\nconst testFunc = testFunction(queryMachine);\n\ntest('#1: no args', () => {\n  testFunc().test(data => data === 'https://example.com?apikey=123');\n});\n\ntest('#2: categories', () => {\n  testFunc({ categories: ['a', 'b'] }).test(\n    data => data === 'https://example.com?apikey=123&categories=a,b',\n  );\n});\n\ntest('#3: products', () => {\n  testFunc({ products: ['a', 'b'] }).test(\n    data => data === 'https://example.com?apikey=123&products=a,b',\n  );\n});\n\ntest('#4: categories and products', () => {\n  testFunc({ products: ['a', 'b'], categories: ['c', 'd'] }).test(data => {\n    return (\n      data === 'https://example.com?apikey=123&categories=c,d&products=a,b'\n    );\n  });\n});\n```\n\n</br>\n</br>\n\n> ## 😎 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **_Enjoy your library_** ! &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 😎\n","readmeFilename":"README.md"}