Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .changeset/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Changesets

Run `pnpm changeset` to describe a change. See https://github.com/changesets/changesets.
11 changes: 11 additions & 0 deletions .changeset/config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"$schema": "https://unpkg.com/@changesets/config@4.0.1/schema.json",
"changelog": "@changesets/cli/changelog",
"commit": false,
"fixed": [],
"linked": [],
"access": "public",
"baseBranch": "main",
"updateInternalDependencies": "patch",
"ignore": []
}
9 changes: 9 additions & 0 deletions .changeset/solid-2-support.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
'@solidjs/ogp': minor
---

- Support Solid 2.0. `solid-js` and `@solidjs/web` 2.0 are peer dependencies, and `@solidjs/meta` is no longer one.
- `DynamicImage` compiles to Solid 2.0 server functions (`@solidjs/vite-plugin` with `serverFunctions` on). The `runtime` value `SolidStart` is now `Solid`.
- `OpenGraph` adds its `og:image` tag with `useHead` from `@solidjs/web`.
- `parseSolidJSX` reads Solid 2.0 server-rendered templates and removes every hydration key.
- Node 22 or later is required.
46 changes: 46 additions & 0 deletions .github/workflows/check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
name: Check

on:
pull_request:
# ready_for_review runs the check when a draft is marked ready.
types: [opened, synchronize, reopened, ready_for_review]
# Roadmaps, debates, proposals and decisions are not build inputs.
paths-ignore: ['docs/**']
push:
branches: [main]
paths-ignore: ['docs/**']

# A new push cancels the older run of the same pull request. Runs on main are never cancelled.
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}

permissions:
contents: read

jobs:
check:
name: Check (Node ${{ matrix.node }})
# Drafts are still in review. Skip them so review fixes do not use CI minutes.
if: ${{ !github.event.pull_request.draft }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
node: [22, 24]
steps:
- uses: actions/checkout@v7
with:
persist-credentials: false
- uses: pnpm/action-setup@v6
- uses: actions/setup-node@v7
with:
node-version: ${{ matrix.node }}
package-manager-cache: false
- run: pnpm install --frozen-lockfile
# Type-aware lint and the typecheck read the built declarations of workspace packages.
- run: pnpm build
- run: pnpm lint
- run: pnpm format:check
- run: pnpm typecheck
- run: pnpm test
105 changes: 105 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
name: Release

on:
push:
branches:
- main
# docs/ holds no build inputs and no changesets.
paths-ignore: ['docs/**']

# Only one release runs at a time.
concurrency: ${{ github.workflow }}-${{ github.ref }}

# Each job asks for the permissions it needs.
permissions: {}

jobs:
select-mode:
name: Select mode
runs-on: ubuntu-latest
permissions:
contents: read
outputs:
mode: ${{ steps.select.outputs.mode }}
publish-plan-artifact-id: ${{ steps.select.outputs.publish-plan-artifact-id }}
steps:
- uses: actions/checkout@v7
with:
persist-credentials: false
- uses: pnpm/action-setup@v6
- uses: actions/setup-node@v7
with:
node-version: 24
package-manager-cache: false
- run: pnpm install --frozen-lockfile
- id: select
uses: changesets/action/select-mode@v2

version:
name: Create the version pull request
needs: select-mode
if: needs.select-mode.outputs.mode == 'version'
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- uses: actions/checkout@v7
with:
persist-credentials: false
- uses: pnpm/action-setup@v6
- uses: actions/setup-node@v7
with:
node-version: 24
package-manager-cache: false
- run: pnpm install --frozen-lockfile
- uses: changesets/action/version@v2

pack:
name: Build and pack
needs: select-mode
if: needs.select-mode.outputs.mode == 'publish'
runs-on: ubuntu-latest
permissions:
contents: read
outputs:
pack-dir-artifact-id: ${{ steps.pack.outputs.pack-dir-artifact-id }}
steps:
- uses: actions/checkout@v7
with:
persist-credentials: false
- uses: pnpm/action-setup@v6
- uses: actions/setup-node@v7
with:
node-version: 24
package-manager-cache: false
- run: pnpm install --frozen-lockfile
- run: pnpm build
- run: pnpm test
- id: pack
uses: changesets/action/pack@v2
with:
publish-plan-artifact-id: ${{ needs.select-mode.outputs.publish-plan-artifact-id }}

publish:
name: Publish to npm
needs: pack
runs-on: ubuntu-latest
permissions:
contents: write
# Trusted publishing to npm.
id-token: write
steps:
- uses: actions/checkout@v7
with:
persist-credentials: false
- uses: pnpm/action-setup@v6
- uses: actions/setup-node@v7
with:
node-version: 24
package-manager-cache: false
- run: pnpm install --frozen-lockfile
- uses: changesets/action/publish@v2
with:
pack-dir-artifact-id: ${{ needs.pack.outputs.pack-dir-artifact-id }}
create-github-releases: true
141 changes: 7 additions & 134 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,136 +1,9 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
.pnpm-debug.log*

# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json

# Runtime data
pids
*.pid
*.seed
*.pid.lock

# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov

# Coverage directory used by tools like istanbul
node_modules
dist
coverage
*.lcov

# nyc test coverage
.nyc_output

# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt

# Bower dependency directory (https://bower.io/)
bower_components

# node-waf configuration
.lock-wscript

# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release

# Dependency directories
node_modules/
jspm_packages/

# Snowpack dependency directory (https://snowpack.dev/)
web_modules/

# TypeScript cache
*.tsbuildinfo

# Optional npm cache directory
.npm

# Optional eslint cache
.eslintcache

# Optional stylelint cache
.stylelintcache

# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/

# Optional REPL history
.node_repl_history

# Output of 'npm pack'
*.log
.DS_Store
.vercel
.claude/
.env*
*.tgz

# Yarn Integrity file
.yarn-integrity

# dotenv environment variable files
.env
.env.development.local
.env.test.local
.env.production.local
.env.local

# parcel-bundler cache (https://parceljs.org/)
.cache
.parcel-cache

# Next.js build output
.next
out

# Nuxt.js build / generate output
.nuxt
dist

# Gatsby files
.cache/
# Comment in the public line in if your project uses Gatsby and not Next.js
# https://nextjs.org/blog/next-9-1#public-directory-support
# public

# vuepress build output
.vuepress/dist

# vuepress v2.x temp and cache directory
.temp
.cache

# vitepress build output
**/.vitepress/dist

# vitepress cache directory
**/.vitepress/cache

# Docusaurus cache and generated files
.docusaurus

# Serverless directories
.serverless/

# FuseBox cache
.fusebox/

# DynamoDB Local files
.dynamodb/

# TernJS port file
.tern-port

# Stores VSCode versions used for testing VSCode extensions
.vscode-test

# yarn v2
.yarn/cache
.yarn/unplugged
.yarn/build-state.yml
.yarn/install-state.gz
.pnp.*
4 changes: 0 additions & 4 deletions .prettierrc

This file was deleted.

14 changes: 7 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,13 @@ pnpm install @solidjs/ogp
### Usage

```tsx
import { Title } from '@solidjs/meta'
import Counter from '~/components/Counter'
import { DynamicImage, Image } from '@solidjs/ogp'
import { createSignal } from 'solid-js'
import { Title } from '@solidjs/meta';
import Counter from '~/components/Counter';
import { DynamicImage, Image } from '@solidjs/ogp';
import { createSignal } from 'solid-js';

export default function Home() {
const [count, setCount] = createSignal(0)
const [count, setCount] = createSignal(0);
return (
<main>
<Title>Hello World</Title>
Expand All @@ -41,6 +41,6 @@ export default function Home() {
</DynamicImage>
</Image>
</main>
)
);
}
```
```
7 changes: 7 additions & 0 deletions oxfmt.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import { defineConfig } from 'oxfmt';

export default defineConfig({
singleQuote: true,
// Compiler fixtures are test data: their outputs must match the compiler byte for byte.
ignorePatterns: ['**/tests/fixtures/**'],
});
9 changes: 9 additions & 0 deletions oxlint.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import config from '@lxsmnsyc/oxlint-config';
import { defineConfig } from 'oxlint';

export default defineConfig({
extends: [config],
// Compiler fixtures are test data: their outputs must match the compiler byte for byte.
// Agent worktrees under .claude/ hold other branches' work in progress.
ignorePatterns: ['dist/**', '**/tests/fixtures/**', '.claude/**'],
});
Loading
Loading