Buckets:
| import { Context } from "../context" | |
| export namespace Log { | |
| const ctx = Context.create<{ | |
| tags: Record<string, any> | |
| }>() | |
| export function create(tags?: Record<string, any>) { | |
| tags = tags || {} | |
| const result = { | |
| info(message?: any, extra?: Record<string, any>) { | |
| const prefix = Object.entries({ | |
| ...use().tags, | |
| ...tags, | |
| ...extra, | |
| }) | |
| .map(([key, value]) => `${key}=${value}`) | |
| .join(" ") | |
| console.log(prefix, message) | |
| return result | |
| }, | |
| tag(key: string, value: string) { | |
| if (tags) tags[key] = value | |
| return result | |
| }, | |
| clone() { | |
| return Log.create({ ...tags }) | |
| }, | |
| } | |
| return result | |
| } | |
| export function provide<R>(tags: Record<string, any>, cb: () => R) { | |
| const existing = use() | |
| return ctx.provide( | |
| { | |
| tags: { | |
| ...existing.tags, | |
| ...tags, | |
| }, | |
| }, | |
| cb, | |
| ) | |
| } | |
| function use() { | |
| try { | |
| return ctx.use() | |
| } catch { | |
| return { tags: {} } | |
| } | |
| } | |
| } | |
Xet Storage Details
- Size:
- 1.08 kB
- Xet hash:
- 69f61b9e0c1209bc216a31b8d305182e838be5e40883711f749e7297c6b02dd3
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.