From b3bf3836d09edacc5cedb05a9c107e35fa6fb75d Mon Sep 17 00:00:00 2001 From: Tyler Nickerson Date: Sun, 8 Sep 2024 13:02:59 -0700 Subject: [PATCH] feat(*): finishing touches for V0 (#31) --- .changeset/config.json | 2 +- .github/workflows/release.yml | 32 + .github/workflows/tests.yml | 24 + .gitignore | 4 +- bun.lockb | Bin 0 -> 457864 bytes bunfig.toml | 2 + examples/simple/package.json | 8 +- examples/simple/pnpm-lock.yaml | 12 - .../simple/src/lib/helpers/isPlainObject.ts | 22 - examples/simple/src/lib/hooks/use-battery.ts | 92 + examples/simple/src/lib/types/nullable.ts | 7 + examples/simple/utils.json | 4 +- happydom.ts | 3 + package.json | 11 +- packages/cli/package.json | 23 +- packages/cli/pnpm-lock.yaml | 1724 --- packages/cli/scripts/generate-schema.ts | 8 - packages/cli/src/commands/add/add.ts | 55 +- packages/cli/src/commands/add/command.ts | 60 + .../cli/src/commands/add/get-output-path.ts | 25 - packages/cli/src/commands/add/mod.ts | 22 - packages/cli/src/commands/add/types.ts | 2 +- .../commands/add/utils/filter-installed.ts | 26 + .../src/commands/add/utils/get-output-path.ts | 37 + .../add}/utils/install-packages.ts | 8 +- .../src/commands/add/utils/install-snippet.ts | 24 + .../cli/src/commands/add/utils/print-tree.ts | 113 + .../add/{ => utils}/resolve-snippet.ts | 14 +- packages/cli/src/commands/init.ts | 28 +- packages/cli/src/config/consts.ts | 3 + packages/cli/src/config/get-config.ts | 23 +- packages/cli/src/config/parse-config.ts | 8 + packages/cli/src/config/schema.ts | 47 +- packages/cli/src/config/types.ts | 7 + packages/cli/src/consts.ts | 1 - packages/cli/src/main.ts | 18 +- packages/cli/src/spinners.ts | 13 + .../transformers/transform-imports.test.ts | 27 + .../cli/src/transformers/transform-imports.ts | 43 +- packages/cli/src/transformers/transform.ts | 4 +- packages/cli/src/types.ts | 9 +- packages/cli/src/utils/case-string.ts | 8 + packages/cli/src/utils/create-action.ts | 25 + packages/cli/src/utils/environment.ts | 65 + packages/cli/src/utils/get-output-path.ts | 28 + packages/cli/src/utils/get-package-manager.ts | 7 - packages/cli/src/utils/install-snippet.ts | 45 - .../cli/src/utils/is-typescript-project.ts | 9 - packages/cli/src/utils/resolve-alias.ts | 20 +- packages/cli/tsconfig.json | 13 +- packages/cli/tsup.config.ts | 2 + packages/common/package.json | 13 +- packages/common/pnpm-lock.yaml | 2731 ---- packages/common/src/config.ts | 37 + packages/common/src/consts.ts | 2 +- packages/common/src/index.ts | 19 +- .../transformers/transform-imports.test.ts | 12 +- .../src/transformers/transform-imports.ts | 2 +- .../src/transformers/transform-to-js.ts | 39 - packages/common/src/types.ts | 8 +- packages/common/src/utils/create-snippets.ts | 46 - packages/common/src/utils/expand-snippet.ts | 8 - .../src/utils/extract-dependencies.test.ts | 16 - .../common/src/utils/extract-dependencies.ts | 28 - packages/common/src/utils/get-registry.ts | 6 +- packages/common/src/utils/group.ts | 16 - packages/common/tsconfig.json | 13 +- packages/common/tsup.config.ts | 1 + packages/common/vitest.config.ts | 10 - packages/registry-tools/package.json | 39 + .../extractors/extract-dependencies.test.ts | 18 + .../src/extractors/extract-dependencies.ts | 39 + .../src/extractors/extract-docs.test.ts} | 19 +- .../src/extractors/extract-docs.ts} | 57 +- .../src/extractors}/formatter.ts | 0 packages/registry-tools/src/index.ts | 3 + .../src/registry/create-registry.ts | 58 + .../src/transformers/transform-to-js.ts} | 41 +- packages/registry-tools/src/types.ts | 1 + packages/registry-tools/tsconfig.json | 6 + packages/registry-tools/tsup.config.ts | 13 + packages/registry/package.json | 30 + .../src/actions/async/lazyload.test.ts | 115 + .../registry/src/actions/async/lazyload.ts | 39 + .../actions/interaction/click-outside.test.ts | 62 + .../src/actions/interaction/click-outside.ts | 44 + .../src/actions/interaction/hotkey.test.ts | 100 + .../src/actions/interaction/hotkey.ts | 79 + .../src/actions/interaction/longpress.test.ts | 64 + .../src/actions/interaction/longpress.ts | 40 + .../src/actions/interaction/pannable.test.ts | 65 + .../src/actions/interaction/pannable.ts | 64 + .../src/helpers/arrays}/alphabetical.ts | 0 .../registry/src}/helpers/arrays/boil.ts | 0 .../registry/src}/helpers/arrays/cluster.ts | 0 .../registry/src}/helpers/arrays/counting.ts | 0 .../registry/src}/helpers/arrays/diff.ts | 0 .../registry/src}/helpers/arrays/first.ts | 0 .../registry/src}/helpers/arrays/flat.ts | 0 .../registry/src}/helpers/arrays/fork.ts | 0 .../registry/src}/helpers/arrays/group.ts | 0 .../src}/helpers/arrays/intersects.ts | 0 .../registry/src}/helpers/arrays/iterate.ts | 0 .../registry/src}/helpers/arrays/last.ts | 0 .../registry/src}/helpers/arrays/list.ts | 2 +- .../registry/src}/helpers/arrays/mapify.ts | 0 .../registry/src}/helpers/arrays/max.ts | 0 .../registry/src}/helpers/arrays/merge.ts | 0 .../registry/src}/helpers/arrays/min.ts | 0 .../registry/src}/helpers/arrays/objectify.ts | 0 .../registry/src}/helpers/arrays/range.ts | 2 +- .../registry/src}/helpers/arrays/replace.ts | 0 .../registry/src}/helpers/arrays/select.ts | 0 .../registry/src}/helpers/arrays/shift.ts | 0 .../registry/src}/helpers/arrays/sift.ts | 0 .../registry/src}/helpers/arrays/sort.ts | 0 .../registry/src}/helpers/arrays/sum.ts | 0 .../registry/src}/helpers/arrays/toggle.ts | 0 .../registry/src}/helpers/arrays/unique.ts | 0 .../registry/src}/helpers/arrays/unzip.ts | 0 .../src/helpers/arrays/zip-to-object.ts | 4 +- .../registry/src}/helpers/arrays/zip.ts | 2 +- .../registry/src}/helpers/async/all.ts | 15 +- .../registry/src}/helpers/async/defer.ts | 2 +- .../registry/src}/helpers/async/guard.ts | 0 .../registry/src}/helpers/async/map.ts | 0 .../registry/src}/helpers/async/parallel.ts | 9 +- .../registry/src}/helpers/async/reduce.ts | 0 .../registry/src}/helpers/async/retry.ts | 4 +- .../registry/src}/helpers/async/sleep.ts | 0 .../registry/src}/helpers/async/tryit.ts | 2 +- .../src/helpers/browser/copy-to-clipboard.ts | 89 + .../registry/src/helpers/browser/deselect.ts | 49 + .../src}/helpers/currying/callable.ts | 0 .../registry/src}/helpers/currying/chain.ts | 0 .../registry/src}/helpers/currying/compose.ts | 0 .../src}/helpers/currying/debounce.ts | 0 .../registry/src}/helpers/currying/memo.ts | 0 .../registry/src}/helpers/currying/once.ts | 0 .../registry/src}/helpers/currying/partial.ts | 0 .../registry/src}/helpers/currying/partob.ts | 0 .../registry/src}/helpers/currying/proxied.ts | 0 .../src}/helpers/currying/throttle.ts | 0 .../registry/src/helpers/filesystem/empty.ts | 24 + .../src/helpers/filesystem/ensure-file.ts | 50 + .../src/helpers/filesystem/is-path-valid.ts | 23 + .../registry/src/helpers/filesystem/mkdirs.ts | 23 + .../helpers/filesystem/path-exists.test.ts | 38 + .../src/helpers/filesystem/path-exists.ts | 14 + .../src/helpers/filesystem/rimraf.test.ts | 133 + .../registry/src/helpers/filesystem/rimraf.ts | 11 + .../registry/src}/helpers/numbers/clamp.ts | 0 .../registry/src/helpers/numbers/in-range.ts | 0 .../registry/src}/helpers/numbers/lerp.ts | 3 +- .../registry/src/helpers/numbers/to-float.ts | 2 +- .../registry/src}/helpers/numbers/toInt.ts | 2 +- .../registry/src/helpers/objects}/assign.ts | 2 +- .../src/helpers/objects/clone-deep.ts | 8 +- .../registry/src}/helpers/objects/clone.ts | 2 +- .../src}/helpers/objects/construct.ts | 2 +- .../registry/src}/helpers/objects/crush.ts | 8 +- .../registry/src}/helpers/objects/get.ts | 0 .../registry/src}/helpers/objects/invert.ts | 0 .../registry/src}/helpers/objects/keys.ts | 4 +- .../registry/src}/helpers/objects/listify.ts | 0 .../registry/src}/helpers/objects/lowerize.ts | 2 +- .../src/helpers/objects/map-entries.ts | 0 .../registry/src/helpers/objects/map-keys.ts | 0 .../src/helpers/objects/map-values.ts | 0 .../registry/src}/helpers/objects/omit.ts | 0 .../registry/src}/helpers/objects/pick.ts | 2 +- .../registry/src}/helpers/objects/set.ts | 4 +- .../registry/src}/helpers/objects/shake.ts | 0 .../registry/src}/helpers/objects/traverse.ts | 10 +- .../registry/src}/helpers/objects/upperize.ts | 2 +- .../registry/src}/helpers/random/draw.ts | 2 +- .../registry/src}/helpers/random/random.ts | 0 .../registry/src}/helpers/random/series.ts | 4 +- .../registry/src}/helpers/random/shuffle.ts | 2 +- .../registry/src}/helpers/random/uid.ts | 4 +- .../registry/src}/helpers/strings/camel.ts | 2 +- .../src}/helpers/strings/capitalize.ts | 0 .../registry/src}/helpers/strings/dash.ts | 2 +- .../registry/src}/helpers/strings/pascal.ts | 0 .../src}/helpers/strings/similarity.ts | 0 .../registry/src}/helpers/strings/snake.ts | 2 +- .../registry/src}/helpers/strings/template.ts | 0 .../registry/src}/helpers/strings/title.ts | 2 +- .../registry/src}/helpers/strings/trim.ts | 0 .../src/helpers/validation/is-array.ts | 2 +- .../src/helpers/validation/is-boolean.ts | 0 .../src/helpers/validation/is-date.ts | 2 +- .../src/helpers/validation/is-empty.ts | 8 +- .../src/helpers/validation/is-equal.ts | 8 + .../src/helpers/validation/is-float.ts | 2 +- .../src/helpers/validation/is-function.ts | 0 .../src/helpers/validation/is-int-string.ts | 2 +- .../registry/src/helpers/validation/is-int.ts | 0 .../src/helpers/validation/is-iterable.ts | 0 .../registry/src/helpers/validation/is-map.ts | 5 +- .../src/helpers/validation/is-number.ts | 0 .../src/helpers/validation/is-object.ts | 2 +- .../src/helpers/validation/is-plain-object.ts | 0 .../src/helpers/validation/is-primitive.ts | 0 .../src/helpers/validation/is-promise.ts | 2 +- .../src/helpers/validation/is-reg-exp.ts | 2 +- .../registry/src/helpers/validation/is-set.ts | 5 +- .../src/helpers/validation/is-string.ts | 0 .../src/helpers/validation/is-symbol.ts | 0 .../src/helpers/validation/is-tagged.ts | 0 .../src/helpers/validation/is-weak-map.ts | 2 +- .../src/helpers/validation/is-weak-set.ts | 2 +- .../src/hooks/browser/use-click-away.ts | 44 + .../hooks/effects/use-copy-to-clipboard.ts | 29 + .../registry/src/hooks/sensors/use-battery.ts | 92 + .../src/hooks/state/use-counter.test.ts | 161 + .../registry/src/hooks/state/use-counter.ts | 133 + packages/registry/src/types/extensions/any.ts | 11 + .../src/types/extensions/boxed-primitive.ts | 18 + .../src/types/extensions/comparable.ts | 11 + .../src/types/extensions/comparator.ts | 12 + .../src/types/utility/comparable-property.ts | 8 + .../src/types/utility/compatible-property.ts | 19 + .../registry/src/types/utility/intersect.ts | 11 + .../registry/src/types/utility/nullable.ts | 7 + .../registry/src/types/utility/simplify.ts | 10 + .../src/types/utility/strict-extract.ts | 17 + packages/registry/tsconfig.json | 6 + pnpm-lock.yaml | 10377 ---------------- pnpm-workspace.yaml | 4 - tsconfig.json | 17 + turbo.json | 10 +- www/.tool-versions | 1 + www/astro.config.ts | 3 + www/package.json | 10 +- www/plugins/generate-mdx/index.ts | 24 + www/plugins/generate-mdx/types.ts | 1 + www/plugins/generate-mdx/utils.ts | 22 +- www/src/components/Search.astro | 14 +- www/src/components/Sidebar.astro | 5 + www/src/content/docs/getting-started/CLI.md | 2 +- .../content/docs/getting-started/credits.md | 16 + www/src/lib/create-registry.ts | 17 + www/src/lib/get-snippets.ts | 6 - www/src/lib/particles.ts | 70 - www/src/pages/registry/[type].json.ts | 8 +- www/src/pages/registry/[type]/[name].ts | 22 +- www/src/pages/schema.json.ts | 15 + .../snippets/helpers/arrays/alphabetical.ts | 17 - www/src/snippets/helpers/objects/assign.ts | 31 - www/src/snippets/helpers/types.ts | 157 - www/templates/mdx.eta | 10 +- www/tsconfig.json | 5 +- 253 files changed, 3129 insertions(+), 15757 deletions(-) create mode 100644 .github/workflows/release.yml create mode 100644 .github/workflows/tests.yml create mode 100755 bun.lockb create mode 100644 bunfig.toml delete mode 100644 examples/simple/pnpm-lock.yaml delete mode 100644 examples/simple/src/lib/helpers/isPlainObject.ts create mode 100644 examples/simple/src/lib/hooks/use-battery.ts create mode 100644 examples/simple/src/lib/types/nullable.ts create mode 100644 happydom.ts delete mode 100644 packages/cli/pnpm-lock.yaml delete mode 100644 packages/cli/scripts/generate-schema.ts create mode 100644 packages/cli/src/commands/add/command.ts delete mode 100644 packages/cli/src/commands/add/get-output-path.ts delete mode 100644 packages/cli/src/commands/add/mod.ts create mode 100644 packages/cli/src/commands/add/utils/filter-installed.ts create mode 100644 packages/cli/src/commands/add/utils/get-output-path.ts rename packages/cli/src/{ => commands/add}/utils/install-packages.ts (79%) create mode 100644 packages/cli/src/commands/add/utils/install-snippet.ts create mode 100644 packages/cli/src/commands/add/utils/print-tree.ts rename packages/cli/src/commands/add/{ => utils}/resolve-snippet.ts (62%) create mode 100644 packages/cli/src/config/consts.ts create mode 100644 packages/cli/src/config/parse-config.ts create mode 100644 packages/cli/src/config/types.ts delete mode 100644 packages/cli/src/consts.ts create mode 100644 packages/cli/src/spinners.ts create mode 100644 packages/cli/src/transformers/transform-imports.test.ts create mode 100644 packages/cli/src/utils/case-string.ts create mode 100644 packages/cli/src/utils/create-action.ts create mode 100644 packages/cli/src/utils/environment.ts create mode 100644 packages/cli/src/utils/get-output-path.ts delete mode 100644 packages/cli/src/utils/get-package-manager.ts delete mode 100644 packages/cli/src/utils/install-snippet.ts delete mode 100644 packages/cli/src/utils/is-typescript-project.ts delete mode 100644 packages/common/pnpm-lock.yaml create mode 100644 packages/common/src/config.ts delete mode 100644 packages/common/src/transformers/transform-to-js.ts delete mode 100644 packages/common/src/utils/create-snippets.ts delete mode 100644 packages/common/src/utils/expand-snippet.ts delete mode 100644 packages/common/src/utils/extract-dependencies.test.ts delete mode 100644 packages/common/src/utils/extract-dependencies.ts delete mode 100644 packages/common/src/utils/group.ts delete mode 100644 packages/common/vitest.config.ts create mode 100644 packages/registry-tools/package.json create mode 100644 packages/registry-tools/src/extractors/extract-dependencies.test.ts create mode 100644 packages/registry-tools/src/extractors/extract-dependencies.ts rename packages/{common/src/utils/extract-tsdoc.test.ts => registry-tools/src/extractors/extract-docs.test.ts} (65%) rename packages/{common/src/utils/extract-tsdoc.ts => registry-tools/src/extractors/extract-docs.ts} (85%) rename packages/{common/src/utils => registry-tools/src/extractors}/formatter.ts (100%) create mode 100644 packages/registry-tools/src/index.ts create mode 100644 packages/registry-tools/src/registry/create-registry.ts rename packages/{common/src/utils/remove-types.ts => registry-tools/src/transformers/transform-to-js.ts} (72%) create mode 100644 packages/registry-tools/src/types.ts create mode 100644 packages/registry-tools/tsconfig.json create mode 100644 packages/registry-tools/tsup.config.ts create mode 100644 packages/registry/package.json create mode 100644 packages/registry/src/actions/async/lazyload.test.ts create mode 100644 packages/registry/src/actions/async/lazyload.ts create mode 100644 packages/registry/src/actions/interaction/click-outside.test.ts create mode 100644 packages/registry/src/actions/interaction/click-outside.ts create mode 100644 packages/registry/src/actions/interaction/hotkey.test.ts create mode 100644 packages/registry/src/actions/interaction/hotkey.ts create mode 100644 packages/registry/src/actions/interaction/longpress.test.ts create mode 100644 packages/registry/src/actions/interaction/longpress.ts create mode 100644 packages/registry/src/actions/interaction/pannable.test.ts create mode 100644 packages/registry/src/actions/interaction/pannable.ts rename {examples/simple/src/lib/helpers => packages/registry/src/helpers/arrays}/alphabetical.ts (100%) rename {www/src/snippets => packages/registry/src}/helpers/arrays/boil.ts (100%) rename {www/src/snippets => packages/registry/src}/helpers/arrays/cluster.ts (100%) rename {www/src/snippets => packages/registry/src}/helpers/arrays/counting.ts (100%) rename {www/src/snippets => packages/registry/src}/helpers/arrays/diff.ts (100%) rename {www/src/snippets => packages/registry/src}/helpers/arrays/first.ts (100%) rename {www/src/snippets => packages/registry/src}/helpers/arrays/flat.ts (100%) rename {www/src/snippets => packages/registry/src}/helpers/arrays/fork.ts (100%) rename {www/src/snippets => packages/registry/src}/helpers/arrays/group.ts (100%) rename {www/src/snippets => packages/registry/src}/helpers/arrays/intersects.ts (100%) rename {www/src/snippets => packages/registry/src}/helpers/arrays/iterate.ts (100%) rename {www/src/snippets => packages/registry/src}/helpers/arrays/last.ts (100%) rename {www/src/snippets => packages/registry/src}/helpers/arrays/list.ts (92%) rename {www/src/snippets => packages/registry/src}/helpers/arrays/mapify.ts (100%) rename {www/src/snippets => packages/registry/src}/helpers/arrays/max.ts (100%) rename {www/src/snippets => packages/registry/src}/helpers/arrays/merge.ts (100%) rename {www/src/snippets => packages/registry/src}/helpers/arrays/min.ts (100%) rename {www/src/snippets => packages/registry/src}/helpers/arrays/objectify.ts (100%) rename {www/src/snippets => packages/registry/src}/helpers/arrays/range.ts (93%) rename {www/src/snippets => packages/registry/src}/helpers/arrays/replace.ts (100%) rename {www/src/snippets => packages/registry/src}/helpers/arrays/select.ts (100%) rename {www/src/snippets => packages/registry/src}/helpers/arrays/shift.ts (100%) rename {www/src/snippets => packages/registry/src}/helpers/arrays/sift.ts (100%) rename {www/src/snippets => packages/registry/src}/helpers/arrays/sort.ts (100%) rename {www/src/snippets => packages/registry/src}/helpers/arrays/sum.ts (100%) rename {www/src/snippets => packages/registry/src}/helpers/arrays/toggle.ts (100%) rename {www/src/snippets => packages/registry/src}/helpers/arrays/unique.ts (100%) rename {www/src/snippets => packages/registry/src}/helpers/arrays/unzip.ts (100%) rename www/src/snippets/helpers/arrays/zipToObject.ts => packages/registry/src/helpers/arrays/zip-to-object.ts (86%) rename {www/src/snippets => packages/registry/src}/helpers/arrays/zip.ts (94%) rename {www/src/snippets => packages/registry/src}/helpers/async/all.ts (82%) rename {www/src/snippets => packages/registry/src}/helpers/async/defer.ts (95%) rename {www/src/snippets => packages/registry/src}/helpers/async/guard.ts (100%) rename {www/src/snippets => packages/registry/src}/helpers/async/map.ts (100%) rename {www/src/snippets => packages/registry/src}/helpers/async/parallel.ts (85%) rename {www/src/snippets => packages/registry/src}/helpers/async/reduce.ts (100%) rename {www/src/snippets => packages/registry/src}/helpers/async/retry.ts (89%) rename {www/src/snippets => packages/registry/src}/helpers/async/sleep.ts (100%) rename {www/src/snippets => packages/registry/src}/helpers/async/tryit.ts (95%) create mode 100644 packages/registry/src/helpers/browser/copy-to-clipboard.ts create mode 100644 packages/registry/src/helpers/browser/deselect.ts rename {www/src/snippets => packages/registry/src}/helpers/currying/callable.ts (100%) rename {www/src/snippets => packages/registry/src}/helpers/currying/chain.ts (100%) rename {www/src/snippets => packages/registry/src}/helpers/currying/compose.ts (100%) rename {www/src/snippets => packages/registry/src}/helpers/currying/debounce.ts (100%) rename {www/src/snippets => packages/registry/src}/helpers/currying/memo.ts (100%) rename {www/src/snippets => packages/registry/src}/helpers/currying/once.ts (100%) rename {www/src/snippets => packages/registry/src}/helpers/currying/partial.ts (100%) rename {www/src/snippets => packages/registry/src}/helpers/currying/partob.ts (100%) rename {www/src/snippets => packages/registry/src}/helpers/currying/proxied.ts (100%) rename {www/src/snippets => packages/registry/src}/helpers/currying/throttle.ts (100%) create mode 100644 packages/registry/src/helpers/filesystem/empty.ts create mode 100644 packages/registry/src/helpers/filesystem/ensure-file.ts create mode 100644 packages/registry/src/helpers/filesystem/is-path-valid.ts create mode 100644 packages/registry/src/helpers/filesystem/mkdirs.ts create mode 100644 packages/registry/src/helpers/filesystem/path-exists.test.ts create mode 100644 packages/registry/src/helpers/filesystem/path-exists.ts create mode 100644 packages/registry/src/helpers/filesystem/rimraf.test.ts create mode 100644 packages/registry/src/helpers/filesystem/rimraf.ts rename {www/src/snippets => packages/registry/src}/helpers/numbers/clamp.ts (100%) rename www/src/snippets/helpers/numbers/inRange.ts => packages/registry/src/helpers/numbers/in-range.ts (100%) rename {www/src/snippets => packages/registry/src}/helpers/numbers/lerp.ts (85%) rename www/src/snippets/helpers/numbers/toFloat.ts => packages/registry/src/helpers/numbers/to-float.ts (92%) rename {www/src/snippets => packages/registry/src}/helpers/numbers/toInt.ts (92%) rename {examples/simple/src/lib/helpers => packages/registry/src/helpers/objects}/assign.ts (92%) rename www/src/snippets/helpers/objects/cloneDeep.ts => packages/registry/src/helpers/objects/clone-deep.ts (95%) rename {www/src/snippets => packages/registry/src}/helpers/objects/clone.ts (92%) rename {www/src/snippets => packages/registry/src}/helpers/objects/construct.ts (90%) rename {www/src/snippets => packages/registry/src}/helpers/objects/crush.ts (87%) rename {www/src/snippets => packages/registry/src}/helpers/objects/get.ts (100%) rename {www/src/snippets => packages/registry/src}/helpers/objects/invert.ts (100%) rename {www/src/snippets => packages/registry/src}/helpers/objects/keys.ts (86%) rename {www/src/snippets => packages/registry/src}/helpers/objects/listify.ts (100%) rename {www/src/snippets => packages/registry/src}/helpers/objects/lowerize.ts (87%) rename www/src/snippets/helpers/objects/mapEntries.ts => packages/registry/src/helpers/objects/map-entries.ts (100%) rename www/src/snippets/helpers/objects/mapKeys.ts => packages/registry/src/helpers/objects/map-keys.ts (100%) rename www/src/snippets/helpers/objects/mapValues.ts => packages/registry/src/helpers/objects/map-values.ts (100%) rename {www/src/snippets => packages/registry/src}/helpers/objects/omit.ts (100%) rename {www/src/snippets => packages/registry/src}/helpers/objects/pick.ts (96%) rename {www/src/snippets => packages/registry/src}/helpers/objects/set.ts (85%) rename {www/src/snippets => packages/registry/src}/helpers/objects/shake.ts (100%) rename {www/src/snippets => packages/registry/src}/helpers/objects/traverse.ts (95%) rename {www/src/snippets => packages/registry/src}/helpers/objects/upperize.ts (87%) rename {www/src/snippets => packages/registry/src}/helpers/random/draw.ts (87%) rename {www/src/snippets => packages/registry/src}/helpers/random/random.ts (100%) rename {www/src/snippets => packages/registry/src}/helpers/random/series.ts (96%) rename {www/src/snippets => packages/registry/src}/helpers/random/shuffle.ts (89%) rename {www/src/snippets => packages/registry/src}/helpers/random/uid.ts (77%) rename {www/src/snippets => packages/registry/src}/helpers/strings/camel.ts (90%) rename {www/src/snippets => packages/registry/src}/helpers/strings/capitalize.ts (100%) rename {www/src/snippets => packages/registry/src}/helpers/strings/dash.ts (89%) rename {www/src/snippets => packages/registry/src}/helpers/strings/pascal.ts (100%) rename {www/src/snippets => packages/registry/src}/helpers/strings/similarity.ts (100%) rename {www/src/snippets => packages/registry/src}/helpers/strings/snake.ts (92%) rename {www/src/snippets => packages/registry/src}/helpers/strings/template.ts (100%) rename {www/src/snippets => packages/registry/src}/helpers/strings/title.ts (88%) rename {www/src/snippets => packages/registry/src}/helpers/strings/trim.ts (100%) rename www/src/snippets/helpers/validation/isArray.ts => packages/registry/src/helpers/validation/is-array.ts (90%) rename www/src/snippets/helpers/validation/isBoolean.ts => packages/registry/src/helpers/validation/is-boolean.ts (100%) rename www/src/snippets/helpers/validation/isDate.ts => packages/registry/src/helpers/validation/is-date.ts (87%) rename www/src/snippets/helpers/validation/isEmpty.ts => packages/registry/src/helpers/validation/is-empty.ts (81%) rename www/src/snippets/helpers/validation/isEqual.ts => packages/registry/src/helpers/validation/is-equal.ts (99%) rename www/src/snippets/helpers/validation/isFloat.ts => packages/registry/src/helpers/validation/is-float.ts (80%) rename www/src/snippets/helpers/validation/isFunction.ts => packages/registry/src/helpers/validation/is-function.ts (100%) rename www/src/snippets/helpers/validation/isIntString.ts => packages/registry/src/helpers/validation/is-int-string.ts (86%) rename www/src/snippets/helpers/validation/isInt.ts => packages/registry/src/helpers/validation/is-int.ts (100%) rename www/src/snippets/helpers/validation/isIterable.ts => packages/registry/src/helpers/validation/is-iterable.ts (100%) rename www/src/snippets/helpers/validation/isMap.ts => packages/registry/src/helpers/validation/is-map.ts (88%) rename www/src/snippets/helpers/validation/isNumber.ts => packages/registry/src/helpers/validation/is-number.ts (100%) rename www/src/snippets/helpers/validation/isObject.ts => packages/registry/src/helpers/validation/is-object.ts (92%) rename www/src/snippets/helpers/validation/isPlainObject.ts => packages/registry/src/helpers/validation/is-plain-object.ts (100%) rename www/src/snippets/helpers/validation/isPrimitive.ts => packages/registry/src/helpers/validation/is-primitive.ts (100%) rename www/src/snippets/helpers/validation/isPromise.ts => packages/registry/src/helpers/validation/is-promise.ts (82%) rename www/src/snippets/helpers/validation/isRegExp.ts => packages/registry/src/helpers/validation/is-reg-exp.ts (87%) rename www/src/snippets/helpers/validation/isSet.ts => packages/registry/src/helpers/validation/is-set.ts (87%) rename www/src/snippets/helpers/validation/isString.ts => packages/registry/src/helpers/validation/is-string.ts (100%) rename www/src/snippets/helpers/validation/isSymbol.ts => packages/registry/src/helpers/validation/is-symbol.ts (100%) rename www/src/snippets/helpers/validation/isTagged.ts => packages/registry/src/helpers/validation/is-tagged.ts (100%) rename www/src/snippets/helpers/validation/isWeakMap.ts => packages/registry/src/helpers/validation/is-weak-map.ts (88%) rename www/src/snippets/helpers/validation/isWeakSet.ts => packages/registry/src/helpers/validation/is-weak-set.ts (88%) create mode 100644 packages/registry/src/hooks/browser/use-click-away.ts create mode 100644 packages/registry/src/hooks/effects/use-copy-to-clipboard.ts create mode 100644 packages/registry/src/hooks/sensors/use-battery.ts create mode 100644 packages/registry/src/hooks/state/use-counter.test.ts create mode 100644 packages/registry/src/hooks/state/use-counter.ts create mode 100644 packages/registry/src/types/extensions/any.ts create mode 100644 packages/registry/src/types/extensions/boxed-primitive.ts create mode 100644 packages/registry/src/types/extensions/comparable.ts create mode 100644 packages/registry/src/types/extensions/comparator.ts create mode 100644 packages/registry/src/types/utility/comparable-property.ts create mode 100644 packages/registry/src/types/utility/compatible-property.ts create mode 100644 packages/registry/src/types/utility/intersect.ts create mode 100644 packages/registry/src/types/utility/nullable.ts create mode 100644 packages/registry/src/types/utility/simplify.ts create mode 100644 packages/registry/src/types/utility/strict-extract.ts create mode 100644 packages/registry/tsconfig.json delete mode 100644 pnpm-lock.yaml delete mode 100644 pnpm-workspace.yaml create mode 100644 tsconfig.json create mode 100644 www/.tool-versions create mode 100644 www/src/content/docs/getting-started/credits.md create mode 100644 www/src/lib/create-registry.ts delete mode 100644 www/src/lib/get-snippets.ts delete mode 100644 www/src/lib/particles.ts create mode 100644 www/src/pages/schema.json.ts delete mode 100644 www/src/snippets/helpers/arrays/alphabetical.ts delete mode 100644 www/src/snippets/helpers/objects/assign.ts delete mode 100644 www/src/snippets/helpers/types.ts diff --git a/.changeset/config.json b/.changeset/config.json index ae82eba..6bbd9d2 100644 --- a/.changeset/config.json +++ b/.changeset/config.json @@ -7,5 +7,5 @@ "access": "restricted", "baseBranch": "main", "updateInternalDependencies": "patch", - "ignore": [] + "ignore": ["@atmx-org/registry", "www"] } diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..caaa734 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,32 @@ +name: Release + +on: + push: + branches: + - main + +concurrency: ${{ github.workflow }}-${{ github.ref }} + +jobs: + release: + name: Release + runs-on: ubuntu-latest + steps: + - name: Checkout Repo + uses: actions/checkout@v3 + + - uses: oven-sh/setup-bun@v2 + with: + bun-version: latest + + - name: Install Dependencies + run: bun install + + - name: Create Release PR or Publish to NPM + id: changesets + uses: changesets/action@v1 + with: + publish: bun run release + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml new file mode 100644 index 0000000..0f8b175 --- /dev/null +++ b/.github/workflows/tests.yml @@ -0,0 +1,24 @@ +name: Run tests + +on: + push: + branches: [main] + pull_request: + branches: [main] + +jobs: + build: + name: "Build & test packages" + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Setup bun + uses: oven-sh/setup-bun@v2 + with: + bun-version: latest + - name: Install dependencies + run: bun install --frozen-lockfile + - name: Build packages + run: bun run build --filter='!www' + - name: Running tests + run: bun test diff --git a/.gitignore b/.gitignore index a7a64fc..1dbd985 100644 --- a/.gitignore +++ b/.gitignore @@ -13,7 +13,7 @@ node_modules/ npm-debug.log* yarn-debug.log* yarn-error.log* -pnpm-debug.log* +bun-debug.log* # environment variables @@ -26,5 +26,7 @@ pnpm-debug.log* # jetbrains setting folder .idea/ +__screenshots__ + .vercel .turbo \ No newline at end of file diff --git a/bun.lockb b/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..140b439a8c1717cef16d0076721001d40528d6e1 GIT binary patch literal 457864 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