{"_id":"@gilbarbara/types","_rev":"3891406","name":"@gilbarbara/types","description":"Reusable typescript typings","dist-tags":{"latest":"0.2.2"},"maintainers":[{"name":"gilbarbara","email":"gilbarbara@gmail.com"}],"time":{"modified":"2025-09-01T01:04:01.000Z","created":"2022-04-22T17:48:48.984Z","0.2.2":"2023-08-02T23:26:10.400Z","0.2.1":"2023-08-02T01:42:31.957Z","0.2.0":"2023-08-01T15:44:32.157Z","0.1.1":"2022-04-22T19:13:04.359Z","0.1.0":"2022-04-22T17:48:48.984Z"},"users":{},"author":{"name":"Gil Barbara","email":"gilbarbara@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/gilbarbara/types.git"},"versions":{"0.2.2":{"name":"@gilbarbara/types","version":"0.2.2","description":"Reusable typescript typings","author":{"name":"Gil Barbara","email":"gilbarbara@gmail.com"},"keywords":["typescript","typings"],"repository":{"type":"git","url":"git+https://github.com/gilbarbara/types.git"},"bugs":{"url":"https://github.com/gilbarbara/types/issues"},"homepage":"https://github.com/gilbarbara/types","main":"dist/index.js","types":"./dist","sideEffects":false,"license":"MIT","dependencies":{"type-fest":"^4.1.0"},"devDependencies":{"@gilbarbara/eslint-config":"^0.5.1","@gilbarbara/prettier-config":"^1.0.0","@gilbarbara/tsconfig":"^0.1.1","@types/jest":"^29.5.3","@types/node":"^20.4.5","del-cli":"^5.0.0","expect-type":"^0.16.0","husky":"^8.0.3","jest":"^29.6.2","repo-tools":"^0.2.2","ts-jest":"^29.1.1","ts-node":"^10.9.1","typescript":"^5.1.6"},"scripts":{"build":"npm run clear && npm run build:files","build:files":"tsc","clear":"del dist/*","lint":"eslint --ext .ts,.tsx src","test":"jest --bail","test:watch":"jest --watchAll --verbose","typecheck":"tsc --noEmit","validate":"npm run lint && npm run typecheck && npm run test && npm run build","prepare":"husky install","prepublishOnly":"npm run validate"},"eslintConfig":{"extends":["@gilbarbara/eslint-config"],"rules":{"jest/expect-expect":["warn",{"assertFunctionNames":["expect","expectTypeOf"]}]}},"prettier":"@gilbarbara/prettier-config","gitHead":"7f49d9dd98a4bbfd723f13bf58257d5058c7efbb","_id":"@gilbarbara/types@0.2.2","_nodeVersion":"18.17.0","_npmVersion":"9.6.7","dist":{"shasum":"397d66e5e4b1c44b65093b61e1e2bc0518b7d498","size":4388,"noattachment":false,"key":"/@gilbarbara/types/-/@gilbarbara/types-0.2.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/@gilbarbara/types/download/@gilbarbara/types-0.2.2.tgz"},"_npmUser":{"name":"gilbarbara","email":"gilbarbara@gmail.com"},"directories":{},"maintainers":[{"name":"gilbarbara","email":"gilbarbara@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/types_0.2.2_1691018770254_0.6061611008295824"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2023-08-02T23:26:10.400Z","publish_time":1691018770400,"_source_registry_name":"default","_cnpm_publish_time":1691018770400},"0.2.1":{"name":"@gilbarbara/types","version":"0.2.1","description":"Reusable typescript typings","author":{"name":"Gil Barbara","email":"gilbarbara@gmail.com"},"keywords":["typescript","typings"],"repository":{"type":"git","url":"git+https://github.com/gilbarbara/types.git"},"bugs":{"url":"https://github.com/gilbarbara/types/issues"},"homepage":"https://github.com/gilbarbara/types","main":"dist/index.js","types":"./dist","sideEffects":false,"license":"MIT","dependencies":{"type-fest":"^4.1.0"},"devDependencies":{"@gilbarbara/eslint-config":"^0.5.1","@gilbarbara/prettier-config":"^1.0.0","@gilbarbara/tsconfig":"^0.1.1","@types/jest":"^29.5.3","@types/node":"^20.4.5","del-cli":"^5.0.0","expect-type":"^0.16.0","husky":"^8.0.3","jest":"^29.6.2","repo-tools":"^0.2.2","ts-jest":"^29.1.1","ts-node":"^10.9.1","typescript":"^5.1.6"},"scripts":{"build":"npm run clear && npm run build:files","build:files":"tsc","clear":"del dist/*","lint":"eslint --ext .ts,.tsx src","test":"jest --bail","test:watch":"jest --watchAll --verbose","typecheck":"tsc --noEmit","validate":"npm run lint && npm run typecheck && npm run test && npm run build","prepare":"husky install","prepublishOnly":"npm run validate"},"eslintConfig":{"extends":["@gilbarbara/eslint-config"],"rules":{"jest/expect-expect":["warn",{"assertFunctionNames":["expect","expectTypeOf"]}]}},"prettier":"@gilbarbara/prettier-config","gitHead":"5cf9d98d33517f4100fc2d91bf377b4ada18925f","_id":"@gilbarbara/types@0.2.1","_nodeVersion":"18.17.0","_npmVersion":"9.6.7","dist":{"shasum":"e3d748a72fcf5fa4a31d571a655494cf7d3efbf9","size":4358,"noattachment":false,"key":"/@gilbarbara/types/-/@gilbarbara/types-0.2.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/@gilbarbara/types/download/@gilbarbara/types-0.2.1.tgz"},"_npmUser":{"name":"gilbarbara","email":"gilbarbara@gmail.com"},"directories":{},"maintainers":[{"name":"gilbarbara","email":"gilbarbara@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/types_0.2.1_1690940551801_0.48198709361209424"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2023-08-02T01:42:31.957Z","publish_time":1690940551957,"_source_registry_name":"default","_cnpm_publish_time":1690940551957},"0.2.0":{"name":"@gilbarbara/types","version":"0.2.0","description":"Reusable typescript typings","author":{"name":"Gil Barbara","email":"gilbarbara@gmail.com"},"keywords":["typescript","typings"],"repository":{"type":"git","url":"git+https://github.com/gilbarbara/types.git"},"bugs":{"url":"https://github.com/gilbarbara/types/issues"},"homepage":"https://github.com/gilbarbara/types","main":"dist/index.js","types":"./dist","sideEffects":false,"license":"MIT","dependencies":{"type-fest":"^4.1.0"},"devDependencies":{"@gilbarbara/eslint-config":"^0.5.1","@gilbarbara/prettier-config":"^1.0.0","@gilbarbara/tsconfig":"^0.1.1","@types/jest":"^29.5.3","@types/node":"^20.4.5","del-cli":"^5.0.0","expect-type":"^0.16.0","husky":"^8.0.3","jest":"^29.6.2","repo-tools":"^0.2.2","ts-jest":"^29.1.1","ts-node":"^10.9.1","typescript":"^5.1.6"},"scripts":{"build":"npm run clear && npm run build:files","build:files":"tsc","clear":"del dist/*","lint":"eslint --ext .ts,.tsx src","test":"jest --bail","test:watch":"jest --watchAll --verbose","typecheck":"tsc --noEmit","validate":"npm run lint && npm run typecheck && npm run test && npm run build","prepare":"husky install","prepublishOnly":"npm run validate"},"eslintConfig":{"extends":["@gilbarbara/eslint-config"],"rules":{"jest/expect-expect":["warn",{"assertFunctionNames":["expect","expectTypeOf"]}]}},"prettier":"@gilbarbara/prettier-config","gitHead":"f7ae2b63df7354b65e9139d200652c73ca53a5fb","_id":"@gilbarbara/types@0.2.0","_nodeVersion":"18.17.0","_npmVersion":"9.6.7","dist":{"shasum":"1de5905877ba1a67bad90b902a40a90ddb6285e3","size":4135,"noattachment":false,"key":"/@gilbarbara/types/-/@gilbarbara/types-0.2.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/@gilbarbara/types/download/@gilbarbara/types-0.2.0.tgz"},"_npmUser":{"name":"gilbarbara","email":"gilbarbara@gmail.com"},"directories":{},"maintainers":[{"name":"gilbarbara","email":"gilbarbara@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/types_0.2.0_1690904672007_0.425781372912597"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2023-08-01T15:44:32.157Z","publish_time":1690904672157,"_source_registry_name":"default","_cnpm_publish_time":1690904672157},"0.1.1":{"name":"@gilbarbara/types","version":"0.1.1","description":"Reusable typescript typings","author":{"name":"Gil Barbara","email":"gilbarbara@gmail.com"},"keywords":["typescript","typings"],"repository":{"type":"git","url":"git+https://github.com/gilbarbara/types.git"},"bugs":{"url":"https://github.com/gilbarbara/types/issues"},"homepage":"https://github.com/gilbarbara/types","main":"lib/index.js","types":"./lib","sideEffects":false,"license":"MIT","dependencies":{},"devDependencies":{"@gilbarbara/eslint-config":"^0.2.1","@gilbarbara/prettier-config":"^0.1.0","@gilbarbara/tsconfig":"^0.1.0","del-cli":"^4.0.1","husky":"^7.0.4","jest":"^27.5.1","repo-tools":"^0.2.2","ts-node":"^10.7.0","type-fest":"^2.12.2","typescript":"^4.6.3"},"scripts":{"build":"npm run clear && npm run build:lib","build:lib":"tsc","clear":"del lib/*","lint":"eslint --ext .ts,.tsx src","typecheck":"tsc --noEmit","validate":"npm run lint && npm run typecheck && npm run build","prepare":"husky install","prepublishOnly":"npm run validate"},"eslintConfig":{"extends":["@gilbarbara/eslint-config"]},"prettier":"@gilbarbara/prettier-config","gitHead":"09cb64f8ae24c470f343204cf61b97b4ca6ae893","_id":"@gilbarbara/types@0.1.1","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"shasum":"63c31e56ebced36d6c44b35d442c361c7a6548a0","size":3544,"noattachment":false,"key":"/@gilbarbara/types/-/@gilbarbara/types-0.1.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/@gilbarbara/types/download/@gilbarbara/types-0.1.1.tgz"},"_npmUser":{"name":"gilbarbara","email":"gilbarbara@gmail.com"},"directories":{},"maintainers":[{"name":"gilbarbara","email":"gilbarbara@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/types_0.1.1_1650654784173_0.4880389105313936"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2022-04-22T19:13:13.423Z","publish_time":1650654784359,"_cnpm_publish_time":1650654784359},"0.1.0":{"name":"@gilbarbara/types","version":"0.1.0","description":"Reusable typescript typings","author":{"name":"Gil Barbara","email":"gilbarbara@gmail.com"},"keywords":["typescript","typings"],"repository":{"type":"git","url":"git+https://github.com/gilbarbara/types.git"},"bugs":{"url":"https://github.com/gilbarbara/types/issues"},"homepage":"https://github.com/gilbarbara/types","main":"lib/index.js","types":"./lib","sideEffects":false,"license":"MIT","dependencies":{},"devDependencies":{"@gilbarbara/eslint-config":"^0.2.1","@gilbarbara/prettier-config":"^0.1.0","@gilbarbara/tsconfig":"^0.1.0","del-cli":"^4.0.1","husky":"^7.0.4","jest":"^27.5.1","repo-tools":"^0.2.2","ts-node":"^10.7.0","type-fest":"^2.12.2","typescript":"^4.6.3"},"scripts":{"build":"npm run clear && npm run build:lib","build:lib":"tsc","clear":"del lib/*","lint":"eslint --ext .ts,.tsx src","typecheck":"tsc --noEmit","validate":"npm run lint && npm run typecheck && npm run build","prepare":"husky install","prepublishOnly":"npm run validate"},"eslintConfig":{"extends":["@gilbarbara/eslint-config"]},"prettier":"@gilbarbara/prettier-config","gitHead":"73536cbffb3a7ed5c12a7e29073d9c8addbc64c3","_id":"@gilbarbara/types@0.1.0","_nodeVersion":"16.14.2","_npmVersion":"8.7.0","dist":{"shasum":"99358334fe14a99b4e05b9ba336d8be68078ee9d","size":2287,"noattachment":false,"key":"/@gilbarbara/types/-/@gilbarbara/types-0.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/@gilbarbara/types/download/@gilbarbara/types-0.1.0.tgz"},"_npmUser":{"name":"gilbarbara","email":"gilbarbara@gmail.com"},"directories":{},"maintainers":[{"name":"gilbarbara","email":"gilbarbara@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/types_0.1.0_1650649728824_0.7675634873461006"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2022-04-22T17:48:56.823Z","publish_time":1650649728984,"_cnpm_publish_time":1650649728984}},"readme":"# @gilbarbara/types\n\n[![npm version](https://badge.fury.io/js/%40gilbarbara%2Ftypes.svg)](https://badge.fury.io/js/%40gilbarbara%2Ftypes) [![CI](https://github.com/gilbarbara/types/actions/workflows/main.yml/badge.svg)](https://github.com/gilbarbara/types/actions/workflows/main.yml)\n\nReusable typescript typings.\n\n## Setup\n\n```sh\nnpm i @gilbarbara/types\n```\n\nFor convenience, the `type-fest` package is re-exported.\n\n## Types\n\n### Aliases\n\n```typescript\ntype NumberOrNull = number | null;\ntype StringOrNull = string | null;\ntype StringOrNumber = string | number;\n\ntype PlainObject<T = unknown> = Record<string, T>;\n\ntype GenericFunction<T = unknown> = (...arguments_: any[]) => T;\ntype VoidFunction = () => void;\n```\n\n\n### Common\n\n```typescript\ntype AsyncStatus = 'IDLE' | 'PENDING' | 'SUCCESS' | 'ERROR';\n\ninterface AsyncFlow {\n  message: string;\n  status: AsyncStatus;\n}\n\ninterface AsyncFlowWithCache extends AsyncFlow {\n  updatedAt: number;\n}\n\ninterface AsyncFlowWithData<T = any> extends AsyncFlow {\n  data: T;\n}\n\ninterface AsyncFlowWithDataAndCache<T = any> extends AsyncFlowWithData<T> {\n  updatedAt: number;\n}\n\ntype HttpMethods =\n  | 'CONNECT'\n  | 'DELETE'\n  | 'GET'\n  | 'HEAD'\n  | 'OPTIONS'\n  | 'PATCH'\n  | 'POST'\n  | 'PUT';\n\ninterface IdName {\n  id: string;\n  name: string;\n}\n\ninterface LabelValue {\n  label: string;\n  value: string;\n}\n```\n\n### Utilities\n\n```typescript\n/**\n * Narrow down a Record to a plain object.\n */\ntype NarrowPlainObject<T extends Record<string, any>> = Exclude<\n  T,\n  Array<unknown> | Function | Map<unknown, unknown> | Set<unknown>\n>;\n```\n\n```typescript\n/**\n * An object without excluded types.\n */\ntype RemoveType<TObject, TExclude = undefined> = {\n  [Key in keyof TObject as TObject[Key] extends TExclude ? never : Key]: TObject[Key];\n};\n```\n\n```typescript\n/**\n * A strict plain object with a specific set of keys.\n */\ntype StrictObject<TObject extends Record<PropertyKey, unknown>, TExpected> = TExpected & {\n  [Key in keyof TObject]: Key extends keyof TExpected ? TExpected[Key] : never;\n};\n```\n\n","_attachments":{},"homepage":"https://github.com/gilbarbara/types","bugs":{"url":"https://github.com/gilbarbara/types/issues"},"license":"MIT"}