Giter VIP home page Giter VIP logo

webstone-plugins's People

Contributors

cahllagerfeld avatar github-actions[bot] avatar mikenikles avatar renovate-bot avatar renovate[bot] avatar timscodebase avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

webstone-plugins's Issues

Set up docs infrastructure

A few requirements:

  • docs directory at the root of this repo as an entry point
  • Each packages/* package contains a README.md which acts as the main docs entry point for a given package
  • Each packages/* package contains its own docs directory for additional documentation that does not fit into the package's README.md
  • packages/cli/docs/commands/* should be auto-generated and updated with a pre-commit git hook. One file per command.
    • Not worth the effort at this point.
  • Update console message with link to correct docs (webstone/packages/cli/src/commands/deploy/web.ts)
  • Content written in Markdown
  • For v1, no need for docs to be hosted on any domain

Consolidate & clean up dependencies

#106 brought to light that there's a bit of a mess with dependencies.

For example, we have 2 different versions of prettier.

Let's review the PR, clean that up (we do use pnpm after all ๐Ÿ˜‰) and merge main into #106 to see if Renovate bot decides to open fewer than 24 PRs.

`pnpm init webstone-app` outputs `TimeoutOverflowWarning` messages

Creating app directory...
Copying template...
Installing web app in test/services/web...
Installing dependencies...
Scope: all 2 workspace projects
(node:3540) TimeoutOverflowWarning: Infinity does not fit into a 32-bit signed integer.
Timeout duration was set to 1.
(Use `node --trace-warnings ...` to show where the warning was created)
(node:3540) TimeoutOverflowWarning: Infinity does not fit into a 32-bit signed integer.
Timeout duration was set to 1.

Develop `webstone dev web`

  • Update the documentation
  • Update the create-webstone-app console output when the command completes (use webstone dev instead of pnpm dev)

Provide an alias for each command

Some examples:

  • ws w c p <name> => webstone web create page <name>
  • ws w d p <name> => webstone web delete page <name>

Not all commands need an alias, e.g. deploy is short enough.

Be more specific with the template `copy` filter

We don't want template/node_modules to be copied, this causes problems for contributors. The filter we added recently took care of that, but now that the template is ignored as a pnpm workspace package, we no longer need the filter.

Only allow `pnpm`

Some projects work with npm, some with yarn. Some ensure you can use both package managers.

Webstone requires pnpm and is not tested with any other package manager.

Hence, let's implement https://pnpm.io/only-allow-pnpm and update the documentation accordingly.

Develop `webstone deploy web`

Blocked by #77

  • Ensure an adapter is installed before deploying
    • If none is found, suggest webstone web configure deployment
  • Accept a --preview flag to run
    • pnpm build --filter ./services/web
    • pnpm preview --filter ./services/web

Don't use `workspace:*` in the template

Alright I should have seen that coming, using workspace:* in the template clearly doesn't work ๐Ÿ˜‰. Let's try with the actual dependency version number and keep the template as part of the pnpm workspace.

Ideally, we get to a point where the CLI dependency for the template is updated automatically when a new release of the CLI happens. Can't be that hard, eh?

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

Rate-Limited

These updates are currently rate-limited. Click on a checkbox below to force their creation now.

  • chore(deps): update dependency @types/sinon to ^10.0.20
  • chore(deps): update dependency nodemon to ^3.0.2
  • chore(deps): update dependency publint to ^0.2.7
  • chore(deps): update dependency tslib to ^2.6.2
  • chore(deps): update dependency vitest to ^0.34.6
  • chore(deps): update dependency @changesets/cli to ^2.27.1
  • chore(deps): update dependency @playwright/test to ^1.40.1
  • chore(deps): update dependency @sveltejs/kit to ^1.30.3
  • chore(deps): update dependency eslint-config-prettier to ^9.1.0
  • chore(deps): update dependency eslint-plugin-svelte to ^2.35.1
  • chore(deps): update dependency lint-staged to ^13.3.0
  • chore(deps): update dependency prettier-plugin-svelte to ^3.1.2
  • chore(deps): update dependency tsx to ^3.14.0
  • chore(deps): update dependency type-fest to ^4.9.0
  • chore(deps): update dependency vite to ^4.5.1
  • chore(deps): update jetpack-io/devbox-install-action action to v0.7.0
  • chore(deps): update node.js to >=20.10.0 (node, @types/node)
  • fix(deps): update dependency create-svelte to ^5.3.4
  • fix(deps): update dependency fs-extra to v11.2.0 (fs-extra, @types/fs-extra)
  • fix(deps): update dependency zod to ^3.22.4
  • fix(deps): update trpc monorepo to ^10.45.0 (@trpc/client, @trpc/server)
  • chore(deps): update dependency @sveltejs/adapter-auto to v3
  • chore(deps): update dependency @sveltejs/kit to v2
  • chore(deps): update dependency c8 to v9
  • chore(deps): update dependency lint-staged to v15
  • chore(deps): update dependency sinon to v17 (sinon, @types/sinon)
  • chore(deps): update dependency tsup to v8
  • chore(deps): update dependency tsx to v4
  • chore(deps): update dependency vite to v5
  • chore(deps): update dependency vitest to v1
  • fix(deps): update dependency create-svelte to v6
  • fix(deps): update dependency ts-morph to v21
  • ๐Ÿ” Create all rate-limited PRs at once ๐Ÿ”

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Ignored or Blocked

These are blocked by an existing closed PR and will not be recreated unless you click a checkbox below.

Detected dependencies

github-actions
.github/workflows/release.yml
  • jetpack-io/devbox-install-action v0.5.0
  • changesets/action v1
npm
package.json
  • @changesets/cli ^2.26.2
  • @playwright/test ^1.37.0
  • @svitejs/changesets-changelog-github-compact ^1.1.0
  • @types/fs-extra ^11.0.1
  • @types/node 20.4.10
  • @types/sinon ^10.0.16
  • @typescript-eslint/eslint-plugin ^6.2.1
  • @typescript-eslint/parser ^6.2.1
  • c8 ^8.0.1
  • commitizen ^4.3.0
  • cz-conventional-changelog ^3.3.0
  • eslint ^8.46.0
  • eslint-config-prettier ^9.0.0
  • husky ^8.0.3
  • lint-staged ^13.2.3
  • prettier ^3.0.1
  • sinon ^15.2.0
  • tsx ^3.12.7
  • typescript ^5.1.6
  • uvu ^0.5.6
  • node >=v20
packages/cli/package.json
  • @webstone/gluegun ^0.0.5
  • npm-watch ^0.11.0
  • node >=v20
packages/core/package.json
  • tsup ^6.7.0
packages/create-webstone-app/package.json
  • chalk 5.3.0
  • create-svelte ^5.0.5
  • enquirer 2.4.1
  • fs-extra 11.1.1
  • ts-deepmerge ^6.2.0
  • @types/node 20.4.10
  • tsup ^6.7.0
  • type-fest ^4.2.0
  • typescript ^5.1.6
packages/plugin-request-logger/package.json
  • @playwright/test ^1.37.1
  • @sveltejs/adapter-auto ^2.1.0
  • @sveltejs/kit ^1.22.6
  • @sveltejs/package ^2.2.1
  • @typescript-eslint/eslint-plugin ^6.4.0
  • @typescript-eslint/parser ^6.4.0
  • @webstone/gluegun 0.0.5
  • eslint ^8.47.0
  • eslint-config-prettier ^9.0.0
  • eslint-plugin-svelte ^2.32.4
  • fs-jetpack ^5.1.0
  • nodemon ^3.0.1
  • npm-run-all ^4.1.5
  • prettier ^3.0.2
  • prettier-plugin-svelte ^3.0.3
  • publint ^0.2.1
  • rimraf ^5.0.1
  • svelte ^4.2.0
  • svelte-check ^3.5.0
  • tslib ^2.6.2
  • tsup ^7.2.0
  • typescript ^5.1.6
  • vite ^4.4.9
  • vitest ^0.34.2
  • svelte ^4.0.0
packages/plugin-trpc/cli/package.json
  • @mrleebo/prisma-ast ^0.4.3
  • ts-morph ^17.0.1
  • @webstone/gluegun ^0.0.5
  • copyfiles ^2.4.1
  • npm-run-all ^4.1.5
  • npm-watch ^0.11.0
  • prettier ^2.8.8
  • rimraf ^3.0.2
  • typescript ^4.7.4
packages/plugin-trpc/web/package.json
  • @trpc/client ^10.37.1
  • @trpc/server ^10.37.1
  • zod ^3.21.4
  • @playwright/test ^1.37.0
  • @sveltejs/adapter-auto ^2.1.0
  • @sveltejs/kit ^1.22.5
  • @sveltejs/package ^2.2.1
  • @typescript-eslint/eslint-plugin ^6.3.0
  • @typescript-eslint/parser ^6.3.0
  • eslint ^8.46.0
  • eslint-config-prettier ^9.0.0
  • eslint-plugin-svelte3 ^4.0.0
  • prettier ^3.0.1
  • prettier-plugin-svelte ^3.0.3
  • svelte ^4.1.2
  • svelte-check ^3.4.6
  • tslib ^2.6.1
  • typescript ^5.1.6
  • vite ^4.4.9

  • Check this box to trigger a request for Renovate to run again on this repository

Switch to pnpm

Fixes the broken release workflow for #4 and makes monorepo management easier.

Document the CLI command & sub-command hierarchy

Blocked by #87

Before we dive into developing the API, let's define & document its hierarchy. Due to its complexity in later versions, there is likely not a single pattern we can follow.

Requirements

  • As few keystrokes as possible (i.e. provide an alias wherever possible)
  • Smart defaults, can be overwritten via CLI flags
  • Each error must provide a link to docs explaining the error and how to resolve it

Service commands
Commands specific to a given service (located in services/*)

Pattern: webstone <service> <action> <arguments>
Examples:

  • webstone web svelte-add tailwind|mdsvex|auth|payment
  • webstone web create page about-us
  • webstone db create model team
  • webstone db update model team
  • webstone db delete model team
  • webstone api create team

Development commands
Commands solely related to development, either for Webstone itself or for a Webstone app

Pattern: webstone dev <category> <action>
Examples:

  • webstone dev [service]
  • webstone dev gitpod web-patch-svelte-config-js
  • webstone dev stats [service]
    • Various "fun fact" statistics about the application. Things like # of routes, # of DB models, total web bundle size for different routes, ...

Deployment commands
Commands needed to deploy a Webstone app

Pattern: webstone deploy [service]
Examples:

  • webstone deploy
  • webstone deploy web

Develop `webstone web configure deployment <name>`

  • Read <name> or provide choices to pick from if <name> is missing
  • If an adapter is already installed, prompt the user to replace it and do so automatically if confirmed by the user
  • Install the correct adapter NPM package
  • Display a post-install link to the adapter's configuration docs. The steps differ among adapters, let a human do it

Challenge
When the CLI is linked into the webstone-dev-app project, the link is overwritten when the CLI runs a pnpm add command.

  • Figure out a way to execute the pnpm link command in development mode after a pnpm add
    • Solution: Use pnpm add -w -D ../webstone/packages/cli instead

Add the Webstone CLI to the app template

Tasks

  • Add the @webstone/cli dependency to the @webstone/core package
  • Add the @webstone/core dependency to the web app template package.json
    • This needs to be done in the create-webstone-app init script after the Sveltekit init script completes
  • Add a dev script to the app template package.json that starts the web (and later the api) services
    • Something like "dev": "webstone dev"

Extend `@webstone/cli` to wrap `svelte-add`

The svelte-add project (repo link) is a convenient way to configure various things in SvelteKit apps, e.g. Tailwind CSS, mdsvex, etc.

The Webstone CLI should provide a command which acts as a thin wrapper around svelte-add. For example, webstone web configure tailwind is a wrapper for npx svelte-add@latest tailwindcss (docs).

Update: Since this is the first CLI command, let's also set us up for success as we add more commands. See best practices docs.

Update the `README.md` files

Some of the README.md files are a bit stale and need an update. It's best to review each one, clean up spelling errors and ensure everything is well documented and explained.

  • CONTRIBUTING.md
  • README.md
  • packages/cli/README.md
  • packages/core/README.md
  • packages/create-webstone-app/README.md
  • packages/create-webstone-app/template/README.md
  • Plugins ecosystem

Develop the `@webstone/cli` package and start the `web` service

In this initial version of the Webstone CLI, the focus is:

  • Write the package README.md
  • Connect the CLI to the template, via the @webstone/core package
  • Develop the webstone dev command (which for now starts the web service)
    • Instead, we leverage pnpm and dev scripts in the services' package.json file. This may turn out to be confusing or not powerful enough, at which time we can revisit this decision.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.