-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
SharedFlow现在独立到@gaubee/flow模块下 留下PureEvent在@gaubee/util中 PureEvent改进对onDispose的返回捕捉 新增PureEventDelegate,实现事件委托
- Loading branch information
Showing
44 changed files
with
603 additions
and
341 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1 @@ | ||
npm | ||
.npm |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,62 +1,19 @@ | ||
# @gaubee/util | ||
# Gaubee Standard Library | ||
|
||
## [docs 文档](https://jsr.io/@gaubee/util/doc) | ||
[![JSR @gaubee](https://jsr.io/badges/@gaubee)](https://jsr.io/@gaubee) | ||
|
||
**install:** | ||
## Packages | ||
|
||
```bash | ||
npm install @gaubee/util | ||
pnpm install @gaubee/util | ||
yarn install @gaubee/util | ||
deno add npm:@gaubee/util | ||
bun add @gaubee/util | ||
The following list contains links to the Standard Library's packages and | ||
documentation: | ||
|
||
deno add jsr:@gaubee/util | ||
npx jsr add @gaubee/util | ||
yarn dlx jsr add @gaubee/util | ||
pnpm dlx jsr add @gaubee/util | ||
bunx jsr add @gaubee/util | ||
``` | ||
| Package | Latest version | | ||
| ----------------------------------- | ------------------------------------------------------------------------- | | ||
| [util](https://jsr.io/@gaubee/util) | [![JSR](https://jsr.io/badges/@gaubee/util)](https://jsr.io/@gaubee/util) | | ||
| [flow](https://jsr.io/@gaubee/flow) | [![JSR](https://jsr.io/badges/@gaubee/flow)](https://jsr.io/@gaubee/flow) | | ||
|
||
**example:** | ||
## Releases | ||
|
||
```ts | ||
import * as gutil from "@gaubee/util"; | ||
import { ag_done } from "@gaubee/util/ag"; | ||
import { bigint_gcd } from "@gaubee/util/bigint"; | ||
import { iter_map_not_null } from "@gaubee/util/collections"; | ||
import { date_add_duration } from "@gaubee/util/date"; | ||
import { binary_to_hex_string } from "@gaubee/util/encoding"; | ||
import { event_target_on } from "@gaubee/util/event_target"; | ||
import { func_remember } from "@gaubee/util/func"; | ||
import { Lrc } from "@gaubee/util/lrc"; | ||
import { map_get_or_put_async } from "@gaubee/util/map"; | ||
import { number_gcd } from "@gaubee/util/number"; | ||
import { obj_lazify } from "@gaubee/util/object"; | ||
import { delay } from "@gaubee/util/promise"; | ||
import { rs_with_controller } from "@gaubee/util/readable_stream"; | ||
import { SharedFlow } from "@gaubee/util/shared_flow"; | ||
|
||
const flow = new SharedFlow<string>(); | ||
``` | ||
|
||
### 简介 | ||
|
||
1. 个人项目经验,涵盖大量常用函数集合,建议与 deno 的 [`@std/*`](https://jsr.io/@std) 互为补充。 | ||
> 这个库中与 @std 系列有一些交集,交集的部分通常是我个人觉得我自己的实现更好: | ||
> | ||
> - 可能是性能上更好 | ||
> - 可能是使用体验上更易用好用 | ||
> - 可能是条件边界覆盖更全。 | ||
1. 这个库不会包含垫片相关的,只要在 esnext 范畴内我都会使用,所以请自行处理垫片相关的问题 | ||
|
||
### 关于 @gaubee/util/global | ||
|
||
> 如果你的项目是 application 级别,不会被其它项目所依赖,那么我建议导入 global 系列,它能大幅度提升你的 js 开发体验。 | ||
> 虽然大家都说“不要污染原型链”,但是辩证看待,我建议你在合适的时候,“应该充分利用原型链”。 | ||
> 在原型链上扩展函数,通过链式调用,可以达到很多符合直觉的开发体验。 | ||
> | ||
> 并且,随着 [shadowrealm 提案](https://github.com/tc39/proposal-shadowrealm) 的演进,未来污染原型链在复杂项目里头就将不再是问题。 | ||
由于 jsr 上不允许上传污染全局的模块,所以如果需要,请使用 [npm 版本](https://www.npmjs.com/package/@gaubee/util)。 | ||
**npm 版本还包含了 commonjs 的直接支持**。 | ||
Package versions >=1.0.0 follow [Semantic Versioning](https://semver.org/), and | ||
package versions <1.0.0 follow | ||
[this proposal](https://github.com/semver/semver/pull/923). |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,63 +1,36 @@ | ||
{ | ||
"name": "@gaubee/util", | ||
"version": "0.11.0", | ||
"tasks": { | ||
"build": "deno run -A ./dnt.ts", | ||
"npm": "deno task build && deno task pub-npm", | ||
"pub-npm": "cd npm && npm publish --access public", | ||
"pub": "deno publish --allow-slow-types" | ||
}, | ||
"imports": { | ||
"@deno/dnt": "jsr:@deno/dnt@^0.41.3" | ||
}, | ||
"exports": { | ||
"./bigint": "./src/bigint.ts", | ||
"./collections": "./src/collections.ts", | ||
"./date": "./src/date.ts", | ||
"./encoding": "./src/encoding.ts", | ||
"./event_target": "./src/event_target.ts", | ||
"./func": "./src/func.ts", | ||
"./generator": "./src/generator.ts", | ||
"./lrc": "./src/lrc.ts", | ||
"./map": "./src/map.ts", | ||
"./number": "./src/number.ts", | ||
"./object": "./src/object.ts", | ||
"./promise": "./src/promise.ts", | ||
"./readable_stream": "./src/readable_stream.ts", | ||
"./shared_flow": "./src/shared_flow.ts", | ||
"./string": "./src/string.ts", | ||
".": "./src/index.ts" | ||
"compilerOptions": { | ||
"lib": [ | ||
"deno.window", | ||
"dom", | ||
"ESNext" | ||
] | ||
}, | ||
"workspace": [ | ||
"flow", | ||
"util" | ||
], | ||
"exclude": [ | ||
".npm" | ||
], | ||
"fmt": { | ||
"lineWidth": 120 | ||
}, | ||
"lint": { | ||
"include": [ | ||
"./src" | ||
], | ||
"rules": { | ||
"exclude": [ | ||
"no-explicit-any", | ||
"ban-ts-comment" | ||
] | ||
} | ||
}, | ||
"publish": { | ||
"include": [ | ||
"LICENSE", | ||
"README.md", | ||
"src/**/*.ts" | ||
], | ||
"exclude": [ | ||
"src/**/*.bench.ts", | ||
"src/**/*.test.ts" | ||
] | ||
}, | ||
"compilerOptions": { | ||
"lib": [ | ||
"deno.window", | ||
"dom", | ||
"ESNext" | ||
] | ||
"imports": { | ||
"@deno/dnt": "jsr:@deno/dnt@^0.41.3" | ||
} | ||
} |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,48 +1,74 @@ | ||
import fs from "node:fs"; | ||
import { fileURLToPath } from "node:url"; | ||
import node_path from "node:path"; | ||
import { build, emptyDir } from "@deno/dnt"; | ||
import denoJson from "./deno.json" with { type: "json" }; | ||
await emptyDir("./npm"); | ||
import "./src/collections.global.ts"; | ||
import { iter_map_not_null } from "@gaubee/util/collections"; | ||
import { globToRegExp } from "jsr:@std/path@1/glob-to-regexp"; | ||
const root = fileURLToPath(import.meta.resolve("./")); | ||
const rootResolve = (...paths: string[]) => node_path.resolve(root, ...paths); | ||
const outputDir = rootResolve(".npm"); | ||
|
||
await build({ | ||
entryPoints: [ | ||
...Object.entries(denoJson.exports).map(([name, path]) => { | ||
return { name, path }; | ||
}), | ||
...fs.readdirSync("./src").mapNotNull((name) => { | ||
if (name.endsWith("global.ts")) { | ||
return { name: `./${name.slice(0, -3)}`, path: `./src/${name}` }; | ||
} | ||
}), | ||
], | ||
outDir: "./npm", | ||
test: true, | ||
shims: { | ||
deno: { test: true }, | ||
}, | ||
typeCheck: false, | ||
packageManager: "pnpm", | ||
package: { | ||
// package.json properties | ||
name: denoJson.name, | ||
version: denoJson.version, | ||
description: "个人项目经验,主要特点在于对原型链的扩展,以及对异步的简化", | ||
license: "MIT", | ||
repository: { | ||
type: "git", | ||
url: "git+https://github.com/gaubee/gaubee-util.git", | ||
const buildPackage = async (packageName: string) => { | ||
const denoJson = await import(`./${packageName}/deno.json`, { with: { type: "json" } }).then((j) => j.default); | ||
const packageJson = await import(`./${packageName}/package.json`, { with: { type: "json" } }).then( | ||
(j) => j.default, | ||
() => ({}), | ||
); | ||
await emptyDir(`${outputDir}/${packageName}`); | ||
await build({ | ||
entryPoints: [ | ||
...Object.entries(denoJson.exports as Record<string, string>).map(([name, path]) => { | ||
return { name, path: rootResolve(packageName, path) }; | ||
}), | ||
...iter_map_not_null(fs.readdirSync(`./${packageName}/src`), (name) => { | ||
if (name.endsWith("global.ts")) { | ||
return { name: `./${name.slice(0, -3)}`, path: rootResolve(packageName, "src", name) }; | ||
} | ||
}), | ||
], | ||
outDir: `${outputDir}/${packageName}`, | ||
test: false, | ||
shims: { | ||
deno: false, | ||
}, | ||
bugs: { | ||
url: "https://github.com/gaubee/gaubee-util/issues", | ||
typeCheck: false, | ||
packageManager: "pnpm", | ||
package: { | ||
// package.json properties | ||
name: denoJson.name, | ||
version: denoJson.version, | ||
license: "MIT", | ||
repository: { | ||
type: "git", | ||
url: `https://github.com/gaubee/std/tree/main/${packageName}`, | ||
}, | ||
bugs: { | ||
url: `https://github.com/gaubee/std/issues?q=label%3A${packageName}`, | ||
}, | ||
...packageJson, | ||
}, | ||
}, | ||
compilerOptions: { | ||
target: "ES2023", | ||
lib: ["ESNext"], | ||
}, | ||
postBuild() { | ||
// steps to run after building and before running the tests | ||
Deno.copyFileSync("LICENSE", "npm/LICENSE"); | ||
Deno.copyFileSync("README.md", "npm/README.md"); | ||
}, | ||
}); | ||
compilerOptions: { | ||
importHelpers: true, | ||
target: "ES2023", | ||
lib: ["ESNext"], | ||
}, | ||
async postBuild() { | ||
// steps to run after building and before running the tests | ||
Deno.copyFileSync("LICENSE", `${outputDir}/${packageName}/LICENSE`); | ||
await Deno.copyFile(`${packageName}/README.md`, `${outputDir}/${packageName}/README.md`).catch(() => | ||
console.warn("%cno found README.md", "color:yellow") | ||
); | ||
}, | ||
}); | ||
}; | ||
|
||
if (import.meta.main) { | ||
const isMatchName = globToRegExp(Deno.args[0] ?? "*"); | ||
for (const packageName of denoJson.workspace) { | ||
if (isMatchName.test(packageName)) { | ||
console.log(`%cstart building %c./${packageName}/deno.json`, "color:gray", "color:green"); | ||
buildPackage(packageName); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
{ | ||
"name": "@gaubee/flow", | ||
"version": "0.12.0", | ||
"exports": { | ||
"./shared_flow": "./src/shared_flow.ts", | ||
".": "./src/index.ts" | ||
}, | ||
"license": "MIT", | ||
"publish": { | ||
"include": [ | ||
"README.md", | ||
"src/**/*.ts" | ||
], | ||
"exclude": [ | ||
"src/**/*.bench.ts", | ||
"src/**/*.test.ts" | ||
] | ||
}, | ||
"imports": { | ||
"@gaubee/util": "../util" | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
{ | ||
"description": "启发于 kotlin 的 flow,针对 js/ts 开发人员设计的接口,通常可以作为一个事件管理器", | ||
"keywords": [ | ||
"kotlin", | ||
"flow", | ||
"shared flow", | ||
"stream", | ||
"event", | ||
"evt" | ||
] | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
export * from "./shared_flow.ts"; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.