{"id":22433548,"url":"https://github.com/gavinning/enum","last_synced_at":"2025-03-27T07:45:36.244Z","repository":{"id":57093679,"uuid":"138741144","full_name":"gavinning/enum","owner":"gavinning","description":"Enum for js","archived":false,"fork":false,"pushed_at":"2020-07-20T05:23:28.000Z","size":42,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-17T12:08:24.644Z","etag":null,"topics":["enum"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gavinning.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-06-26T13:20:11.000Z","updated_at":"2020-05-11T10:38:13.000Z","dependencies_parsed_at":"2022-08-22T21:40:26.106Z","dependency_job_id":null,"html_url":"https://github.com/gavinning/enum","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gavinning%2Fenum","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gavinning%2Fenum/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gavinning%2Fenum/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gavinning%2Fenum/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gavinning","download_url":"https://codeload.github.com/gavinning/enum/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245806389,"owners_count":20675296,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["enum"],"created_at":"2024-12-05T22:15:16.775Z","updated_at":"2025-03-27T07:45:36.216Z","avatar_url":"https://github.com/gavinning.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"Enum type\n---\n简单的Enum类型\n\n### Install\n```sh\nnpm i @4a/enum\n```\n\n### Usage\n```js\n// ES6\nimport Enum from '@4a/enum'\n\n// or Nodejs\nconst Enum = require('@4a/enum')\n\n\nconst DemoEnum = Enum({\n    name: \"NAME\",\n    homePage: \"HOMEPAGE\",\n})\n\nDemoEnum.name.rawValue // \"NAME\"\nDemoEnum.homePage.rawValue // \"HOMEPAGE\"\n\nDemoEnum.$has(DemoEnum.homePage)\n\nDemoEnum.$append('OK', 'OK')\nDemoEnum.$extend({ fail: 'FAIL' })\n```\n\n```js\nfunction Message(code, message) {\n    return { code, message }\n}\n\nconst ResultMessage = Enum({\n    errorToken: Message(1000, \"token error\"),\n    expiredToken: Message(1001, \"token expired\"),\n})\n\nResultMessage.errorToken // {code: 1000, message: \"token error\"}\nResultMessage.expiredToken // {code: 1001, message: \"token expired\"}\n\ntry {\n    throw ResultMessage.errorToken.Error()\n}\ncatch(err) {\n    if (err instanceof Enum.EnumError) {\n        console.log(err.Encode())\n    }\n    console.log(err)\n}\n```\n\n### Assert\n```js\nconst assert = require('@4a/enum/assert')\n\n// assert.ok(1 === 2, ResultMessage.errorToken.Error())\n// assert.fail(1 === 1, ResultMessage.errorToken.Error())\n// assert.equal(1, 2, ResultMessage.errorToken.Error())\n// assert.notEqual(1, 1, ResultMessage.errorToken.Error())\n// assert.deepEqual([1], [2], ResultMessage.errorToken.Error())\n\ntry {\n    assert.notDeepEqual([2], [2], ResultMessage.errorToken.Error('custom error message'))\n}\ncatch(err) {\n    if (err instanceof Enum.EnumError) {\n        console.log(101, err.Encode())\n        console.log(101, err.Encode().code)\n        console.log(101, err.Encode().message)\n        console.log(101, err)\n    }\n}\n```\n```js\nconst APP = Enum({\n    name: 'wechat',\n    version: '1.0.0',\n    demo: { foo: 'bar' }\n})\n\nAPP.version.isEqual('1.0.0') // true\nAPP.version.isNotEqual('1.0.0') // false\n\nAPP.demo.isDeepEqual({ foo: 'bar' }) // true\nAPP.demo.isNotDeepEqual({ foo: 'bar' }) // false\n```\n\n### Notes\n```js\nconst Enum = require('@4a/enum')\n\nEnum // 创建的类型是静态类型，默认不可修改\nEnum.Enum // Enum原始类\nEnum.EnumItem // Enum子项的父类\nEnum.EnumError // Enum的错误类型父类\n\n\n// 创建一个Enum类型\n// Enum根据obj参数来创建Enum类型\n// obj子项的值如果是js原始对象，EnumItem实例的值就是obj对应子项的值\n// obj子项的值如果不是原始对象，enumItem.rawValue属性就是obj对应子项的值\nconst obj = {a: 1, b: 2, app: 3}\nconst Message = Enum(obj)\n\n\n// EnumError\n// EnumItem实例可以直接调用Error方法创建EnumError实例，message参数可选\n// 如果EnumItem没有message属性，则必须传递message参数\nthrow Message.app.Error(message)\n\n// EnumError实例可以调用Encode方法来进行重新编码\nMessage.app.Error(message).Encode()\n```\n\n### Example\n\u003e npm test\n\n\n### Vue\n``vue.config.js``配置中注意配置``transpileDependencies``属性，让webpack可以编译``@4a/enum``  \n```js\n// Example\n// 兼容低版本浏览器  \ntranspileDependencies: [\n    /[/\\\\]node_modules[/\\\\]@4a\\/enum[/\\\\]/,\n]\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgavinning%2Fenum","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgavinning%2Fenum","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgavinning%2Fenum/lists"}