feat: Handle site dependencies
This commit is contained in:
parent
47035505c4
commit
facace58d1
17 changed files with 1090 additions and 910 deletions
|
@ -992,6 +992,12 @@
|
|||
|
||||
- Fix bug in Svg.escapeText() that only escaped the first quote
|
||||
|
||||
### backend
|
||||
|
||||
#### Fixed
|
||||
|
||||
- Mitigate risk of denial-of-service attacks in catch-all route
|
||||
|
||||
|
||||
## 2.20.4 (2022-01-28)
|
||||
|
||||
|
|
|
@ -55,9 +55,9 @@ core:
|
|||
'bezier-js': '^6.1.0'
|
||||
'bin-pack': '^1.0.2'
|
||||
'hooks': '^0.3.2'
|
||||
'lodash.get': '^4.4.2'
|
||||
'lodash.set': '^4.3.2'
|
||||
'lodash.unset': '^4.5.2'
|
||||
'lodash.get': &_get '4.4.2'
|
||||
'lodash.set': &_set '4.3.2'
|
||||
'lodash.unset': &_unset '4.5.2'
|
||||
dev:
|
||||
'eslint': '^8.23.1'
|
||||
'nyc': '^15.1.0'
|
||||
|
@ -156,9 +156,11 @@ rehype-highlight-lines:
|
|||
_:
|
||||
'unist-util-remove': '^3.1.0'
|
||||
sandy:
|
||||
'@freesewing/snapseries': *freesewing
|
||||
peer:
|
||||
'@freesewing/snapseries': *freesewing
|
||||
shin:
|
||||
'@freesewing/snapseries': *freesewing
|
||||
peer:
|
||||
'@freesewing/snapseries': *freesewing
|
||||
simon:
|
||||
peer:
|
||||
'@freesewing/brian': *freesewing
|
||||
|
@ -182,9 +184,11 @@ teagan:
|
|||
'@freesewing/brian': *freesewing
|
||||
'@freesewing/plugin-bust': *freesewing
|
||||
titan:
|
||||
'@freesewing/snapseries': *freesewing
|
||||
peer:
|
||||
'@freesewing/snapseries': *freesewing
|
||||
trayvon:
|
||||
'@freesewing/snapseries': *freesewing
|
||||
peer:
|
||||
'@freesewing/snapseries': *freesewing
|
||||
wahid:
|
||||
peer:
|
||||
'@freesewing/brian': *freesewing
|
||||
|
@ -193,3 +197,187 @@ yuri:
|
|||
peer:
|
||||
'@freesewing/brian': *freesewing
|
||||
'@freesewing/plugin-bust': *freesewing
|
||||
|
||||
# Sites go here
|
||||
|
||||
backend:
|
||||
_:
|
||||
'@aws-sdk/client-sesv2': '^3.200.0'
|
||||
'@prisma/client': '4.7.1'
|
||||
'bcryptjs': '^2.4.3'
|
||||
'crypto': '^1.0.1'
|
||||
'express': '4.18.2'
|
||||
'mustache': '^4.2.0'
|
||||
'otplib': '^12.0.1'
|
||||
'passport': '^0.6.0'
|
||||
'passport-http': '^0.3.0'
|
||||
'passport-jwt': '^4.0.0'
|
||||
'pino': '^8.7.0'
|
||||
'qrcode': '^1.5.1'
|
||||
dev:
|
||||
'chai': *chai
|
||||
'chai-http': '^4.3.0'
|
||||
'mocha': *mocha
|
||||
'mocha-steps': '^1.3.0'
|
||||
'prisma': '4.7.1'
|
||||
|
||||
dev:
|
||||
_:
|
||||
'@mdx-js/loader': &mdx '2.2.1'
|
||||
'@mdx-js/mdx': *mdx
|
||||
'@mdx-js/react': *mdx
|
||||
'@mdx-js/runtime': &mdxRuntime '2.0.0-next.9'
|
||||
'@next/bundle-analyzer': &next '13.0.7'
|
||||
'@tailwindcss/typography': '0.5.8'
|
||||
'algoliasearch': '^4.11.0'
|
||||
'daisyui': &daisyui '2.45.0'
|
||||
'lodash.get': *_get
|
||||
'lodash.orderby': &_orderby '4.6.0'
|
||||
'lodash.set': *_set
|
||||
'next': *next
|
||||
'react': &react '18.2.0'
|
||||
'react-copy-to-clipboard': &reactCopyToClipboard '5.1.0'
|
||||
'react-dom': *react
|
||||
'react-hotkeys-hook': &reactHotkeysHook '4.0.6'
|
||||
'react-instantsearch-dom': &reactInstantsearchDom '6.38.1'
|
||||
'react-markdown': &reactMarkdown '8.0.4'
|
||||
'react-swipeable': &reactSwipeable '7.0.0'
|
||||
'react-timeago': &reactTimeago '7.1.0'
|
||||
'rehype-autolink-headings': &rehypeAutolinkHeadings '6.1.1'
|
||||
'rehype-highlight': &rehypeHighlight '6.0.0'
|
||||
'rehype-sanitize': &rehypeSanitize '5.0.1'
|
||||
'rehype-slug': &rehypeSlug '5.1.0'
|
||||
'rehype-stringify': &rehypeStringify '9.0.3'
|
||||
'remark-copy-linked-files': &remarkCopyLinkedFiles 'https://github.com/joostdecock/remark-copy-linked-files'
|
||||
'remark-gfm': &remarkGfm '3.0.1'
|
||||
dev: &nextSiteDevDependencies
|
||||
'autoprefixer': '10.4.13'
|
||||
'eslint-config-next': *next
|
||||
'js-yaml': &jsYaml '4.1.0'
|
||||
'postcss': &postcss '8.4.20'
|
||||
'remark-extract-frontmatter': '3.2.0'
|
||||
'tailwindcss': &tailwindcss '3.2.4'
|
||||
'yaml-loader': '0.8.0'
|
||||
|
||||
email:
|
||||
_:
|
||||
'@maizzle/framework': '4.3.1'
|
||||
'tailwindcss-box-shadow': '^1.0.0'
|
||||
'tailwindcss-email-variants': '^1.0.0'
|
||||
'tailwindcss-mso': '^1.2.0'
|
||||
|
||||
lab:
|
||||
_:
|
||||
'@headlessui/react': &headlessUiReact '^1.6.6'
|
||||
'@mdx-js/loader': *mdx
|
||||
'@mdx-js/mdx': *mdx
|
||||
'@mdx-js/react': *mdx
|
||||
'@mdx-js/runtime': *mdxRuntime
|
||||
'@tailwindcss/typography': &tailwindTypography '^0.5.0'
|
||||
'algoliasearch': &algoliasearch '4.14.2'
|
||||
'd3-dispatch': '3.0.1'
|
||||
'd3-drag': '3.0.0'
|
||||
'd3-selection': '3.0.0'
|
||||
'daisyui': *daisyui
|
||||
'i18next': &i18next '22.4.5'
|
||||
'lodash.get': *_get
|
||||
'lodash.orderby': *_orderby
|
||||
'lodash.set': *_set
|
||||
'next': *next
|
||||
'next-i18next': &nextI18next '13.0.2'
|
||||
'react': *react
|
||||
'react-copy-to-clipboard': *reactCopyToClipboard
|
||||
'react-hotkeys-hook': *reactHotkeysHook
|
||||
'react-i18next': &reactI18next '12.1.1'
|
||||
'react-instantsearch-dom': *reactInstantsearchDom
|
||||
'react-markdown': *reactMarkdown
|
||||
'react-swipeable': *reactSwipeable
|
||||
'react-timeago': *reactTimeago
|
||||
'rehype-autolink-headings': *rehypeAutolinkHeadings
|
||||
'rehype-highlight': *rehypeHighlight
|
||||
'rehype-sanitize': *rehypeSanitize
|
||||
'rehype-slug': *rehypeSlug
|
||||
'rehype-stringify': *rehypeStringify
|
||||
'remark-copy-linked-files': *remarkCopyLinkedFiles
|
||||
'remark-gfm': *remarkGfm
|
||||
dev: *nextSiteDevDependencies
|
||||
|
||||
org:
|
||||
_:
|
||||
'@mdx-js/loader': *mdx
|
||||
'@mdx-js/mdx': *mdx
|
||||
'@mdx-js/react': *mdx
|
||||
'@mdx-js/runtime': *mdxRuntime
|
||||
'@tailwindcss/typography': *tailwindTypography
|
||||
'algoliasearch': *algoliasearch
|
||||
'daisyui': *daisyui
|
||||
'lodash.get': *_get
|
||||
'lodash.orderby': *_orderby
|
||||
'lodash.set': *_set
|
||||
'next': *next
|
||||
'react-hotkeys-hook': *reactHotkeysHook
|
||||
'react-instantsearch-dom': *reactInstantsearchDom
|
||||
'react-markdown': *reactMarkdown
|
||||
'react-swipeable': *reactSwipeable
|
||||
'react-timeago': *reactTimeago
|
||||
'rehype-autolink-headings': *rehypeAutolinkHeadings
|
||||
'rehype-highlight': *rehypeHighlight
|
||||
'rehype-sanitize': *rehypeSanitize
|
||||
'rehype-slug': *rehypeSlug
|
||||
'rehype-stringify': *rehypeStringify
|
||||
'remark-copy-linked-files': *remarkCopyLinkedFiles
|
||||
'remark-gfm': *remarkGfm
|
||||
dev: *nextSiteDevDependencies
|
||||
|
||||
sanity:
|
||||
_:
|
||||
'@sanity/base': '2.35.0'
|
||||
'@sanity/core': '2.35.0'
|
||||
'@sanity/default-layout': '2.35.0'
|
||||
'@sanity/default-login': '2.35.0'
|
||||
'@sanity/desk-tool': '2.35.0'
|
||||
'@sanity/eslint-config-studio': '2.0.0'
|
||||
'@sanity/vision': '2.35.0'
|
||||
'eslint': '8.6.0'
|
||||
'prop-types': '15.7'
|
||||
'react': *react
|
||||
'react-dom': *react
|
||||
'sanity-plugin-markdown': '3.0.1'
|
||||
'styled-components': '5.2.0'
|
||||
dev:
|
||||
'@sanity/cli': '2.35.0'
|
||||
|
||||
shared:
|
||||
_:
|
||||
'@headlessui/react': *headlessUiReact
|
||||
'@resvg/resvg-js': '^2.1.0'
|
||||
'@tailwindcss/typography': *tailwindTypography
|
||||
'Buffer': '^0.0.0'
|
||||
'd3-dispatch': '^3.0.1'
|
||||
'd3-drag': '^3.0.0'
|
||||
'd3-selection': '^3.0.0'
|
||||
'daisyui': *daisyui
|
||||
'feed': '^4.2.2'
|
||||
'file-saver': '^2.0.5'
|
||||
'front-matter': '^4.0.2'
|
||||
'highlight.js': '^11.4.0'
|
||||
'lodash.clonedeep': '^4.5.0'
|
||||
'lodash.orderby': *_orderby
|
||||
'lodash.unset': *_unset
|
||||
'mdast-util-toc': '6.1.0'
|
||||
'pdfkit': '0.13.0'
|
||||
'postcss-for': '2.1.1'
|
||||
'react': *react
|
||||
'react-dom': *react
|
||||
'react-markdown': *reactMarkdown
|
||||
'react-sizeme': '^3.0.2'
|
||||
'react-timeago': *reactTimeago
|
||||
'react-zoom-pan-pinch': '^2.1.3'
|
||||
'rehype-autolink-headings': *rehypeAutolinkHeadings
|
||||
'rehype-highlight': *rehypeHighlight
|
||||
'remark-smartypants': '^2.0.0'
|
||||
'sharp': '^0.31.1'
|
||||
'svg-to-pdfkit': '^0.1.8'
|
||||
'to-vfile': '^7.2.2'
|
||||
'unist-util-visit': '^4.1.0'
|
||||
'web-worker': '^1.2.0'
|
||||
|
|
|
@ -11,6 +11,8 @@ customBuild:
|
|||
skipTests:
|
||||
- theo
|
||||
packageJson:
|
||||
backend:
|
||||
name: backend.freesewing.org
|
||||
bee:
|
||||
author: bobgeorgethe3rd (https://github.com/bobgeorgethe3rd)
|
||||
benjamin:
|
||||
|
|
|
@ -46,5 +46,52 @@ rehype-jargon:
|
|||
lint: "npx eslint 'src/*.mjs'"
|
||||
snapseries:
|
||||
lint: "npx eslint 'src/*.mjs'"
|
||||
|
||||
# Sites go here
|
||||
backend:
|
||||
lint: '!'
|
||||
dev: 'nodemon src/index.mjs'
|
||||
initdb: 'npx prisma db push'
|
||||
newdb: 'node ./scripts/newdb.mjs'
|
||||
prettier: "npx prettier --write 'src/*.mjs' 'tests/*.mjs'"
|
||||
rmdb: 'node ./scripts/rmdb.mjs'
|
||||
test: 'npx mocha --require mocha-steps tests/index.mjs'
|
||||
|
||||
dev:
|
||||
build: &nextBuild 'node --experimental-json-modules ../../node_modules/next/dist/bin/next build'
|
||||
cibuild: 'yarn build && node scripts/algolia.mjs'
|
||||
dev: &nextDev 'node --experimental-json-modules ../../node_modules/next/dist/bin/next dev -p 8000'
|
||||
develop: *nextDev
|
||||
lint: &nextLint '../../node_modules/next/dist/bin/next lint'
|
||||
prebuild: 'SITE=dev node --experimental-json-modules ../shared/prebuild/index.mjs'
|
||||
serve: "pm2 start npm --name 'dev' -- run start"
|
||||
start: &nextStart 'yarn prebuild && yarn dev'
|
||||
|
||||
email:
|
||||
build: 'maizzle build production'
|
||||
dev: 'maizzle serve'
|
||||
|
||||
lab:
|
||||
build: *nextBuild
|
||||
cibuild: 'yarn build'
|
||||
clean: 'rimraf pages/*.mjs && rimraf pages/*/*.mjs && rimraf pages/v/*/*.mjs'
|
||||
dev: *nextDev
|
||||
develop: *nextDev
|
||||
lint: *nextLint
|
||||
prebuild: 'SITE=lab node --experimental-json-modules ../shared/prebuild/index.mjs'
|
||||
start: *nextStart
|
||||
|
||||
org:
|
||||
build: *nextBuild
|
||||
cibuild: 'yarn build'
|
||||
clean: 'rimraf pages/*.mjs && rimraf pages/*/*.mjs && rimraf pages/v/*/*.mjs'
|
||||
dev: *nextDev
|
||||
develop: *nextDev
|
||||
i18n: 'SITE=org node ../shared/prebuild/i18n-only.mjs'
|
||||
lint: *nextLint
|
||||
prebuild: 'SITE=org node --experimental-json-modules ../shared/prebuild/index.mjs'
|
||||
start: *nextStart
|
||||
|
||||
sanity:
|
||||
start: 'sanity start'
|
||||
test: 'sanity check'
|
||||
build: 'sanity build -y'
|
||||
|
|
6
scripts/build-backend-container.sh
Executable file
6
scripts/build-backend-container.sh
Executable file
|
@ -0,0 +1,6 @@
|
|||
#!/bin/bash
|
||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
|
||||
VERSION=`sed 's/version/VERSION/' $DIR/../package.json | grep VERSION | tr -d 'VERSION [:blank:] ["] [:] [,]'`
|
||||
docker build \
|
||||
./sites/backend/.
|
||||
|
|
@ -7,7 +7,7 @@ import mustache from 'mustache'
|
|||
import conf from '../lerna.json' assert { type: 'json' }
|
||||
const { version } = conf
|
||||
import {
|
||||
publishedSoftware as software,
|
||||
software as software,
|
||||
publishedTypes as types,
|
||||
designs,
|
||||
plugins,
|
||||
|
@ -73,15 +73,17 @@ for (const pkg of Object.values(software)) {
|
|||
path.join(cwd, pkg.folder, pkg.name, 'package.json'),
|
||||
JSON.stringify(packageJson(pkg), null, 2) + '\n'
|
||||
)
|
||||
fs.writeFileSync(
|
||||
path.join(cwd, pkg.folder, pkg.name, 'data.mjs'),
|
||||
mustache.render(repo.templates.data, { name: fullName(pkg.name), version })
|
||||
)
|
||||
fs.writeFileSync(path.join(cwd, pkg.folder, pkg.name, 'README.md'), readme(pkg))
|
||||
if (repo.exceptions.customBuild.indexOf(pkg.name) === -1) {
|
||||
fs.writeFileSync(path.join(cwd, pkg.folder, pkg.name, 'build.mjs'), repo.templates.build)
|
||||
if (pkg.type !== 'site') {
|
||||
fs.writeFileSync(
|
||||
path.join(cwd, pkg.folder, pkg.name, 'data.mjs'),
|
||||
mustache.render(repo.templates.data, { name: fullName(pkg.name), version })
|
||||
)
|
||||
fs.writeFileSync(path.join(cwd, pkg.folder, pkg.name, 'README.md'), readme(pkg))
|
||||
if (repo.exceptions.customBuild.indexOf(pkg.name) === -1) {
|
||||
fs.writeFileSync(path.join(cwd, pkg.folder, pkg.name, 'build.mjs'), repo.templates.build)
|
||||
}
|
||||
fs.writeFileSync(path.join(cwd, pkg.folder, pkg.name, 'CHANGELOG.md'), changelog(pkg))
|
||||
}
|
||||
fs.writeFileSync(path.join(cwd, pkg.folder, pkg.name, 'CHANGELOG.md'), changelog(pkg))
|
||||
}
|
||||
log.write(chalk.green(' Done\n'))
|
||||
|
||||
|
@ -168,6 +170,7 @@ function readInfoFile(pkg) {
|
|||
* Returns an array of keywords for a package
|
||||
*/
|
||||
function keywords(pkg) {
|
||||
if (pkg.type === 'site') return []
|
||||
if (typeof repo.keywords[pkg.name] !== 'undefined') return repo.keywords[pkg.name]
|
||||
if (typeof repo.keywords[pkg.type] !== 'undefined') return repo.keywords[pkg.type]
|
||||
else {
|
||||
|
@ -184,10 +187,12 @@ function keywords(pkg) {
|
|||
*/
|
||||
function scripts(pkg) {
|
||||
let runScripts = {}
|
||||
for (const key of Object.keys(repo.scripts._)) {
|
||||
runScripts[key] = mustache.render(repo.scripts._[key], {
|
||||
name: pkg.name,
|
||||
})
|
||||
if (pkg.type !== 'site') {
|
||||
for (const key of Object.keys(repo.scripts._)) {
|
||||
runScripts[key] = mustache.render(repo.scripts._[key], {
|
||||
name: pkg.name,
|
||||
})
|
||||
}
|
||||
}
|
||||
if (typeof repo.scripts._types[pkg.type] !== 'undefined') {
|
||||
for (const key of Object.keys(repo.scripts._types[pkg.type])) {
|
||||
|
@ -282,6 +287,16 @@ function packageJson(pkg) {
|
|||
}
|
||||
}
|
||||
|
||||
if (pkg.type === 'site') {
|
||||
delete pkgConf.keywords
|
||||
delete pkgConf.type
|
||||
delete pkgConf.module
|
||||
delete pkgConf.exports
|
||||
delete pkgConf.files
|
||||
delete pkgConf.publishConfig
|
||||
pkgConf.private = true
|
||||
}
|
||||
|
||||
return pkgConf
|
||||
}
|
||||
|
||||
|
|
37
sites/backend/Dockerfile
Normal file
37
sites/backend/Dockerfile
Normal file
|
@ -0,0 +1,37 @@
|
|||
## Stage 1: Builder
|
||||
FROM node:alpine as builder
|
||||
|
||||
## Set workdir
|
||||
WORKDIR /backend
|
||||
|
||||
## Install build toolchain
|
||||
#RUN apk add --no-cache python make g++
|
||||
|
||||
## Install node dependencies
|
||||
COPY package* ./
|
||||
RUN npm install pm2 && npm ci
|
||||
|
||||
## Build app
|
||||
COPY package.json package.json
|
||||
COPY src src
|
||||
RUN npm run build
|
||||
|
||||
## Stage 2: App
|
||||
FROM node:alpine as app
|
||||
|
||||
## Set workdir
|
||||
WORKDIR /backend
|
||||
|
||||
## Copy built node modules and binaries without including the toolchain
|
||||
COPY --from=builder /backend/node_modules/ /backend/node_modules/
|
||||
COPY --from=builder /backend/build/ /backend/build/
|
||||
COPY --from=builder /backend/package.json /backend/package.json
|
||||
|
||||
## Add a user to run the app
|
||||
RUN addgroup -S freesewing \
|
||||
&& adduser -S freesewing \
|
||||
&& chown -R freesewing /backend
|
||||
|
||||
## Drop privleges and run app
|
||||
USER freesewing
|
||||
CMD ["./node_modules/.bin/pm2-runtime", "./build/main.js"]
|
|
@ -1,12 +1,11 @@
|
|||
{
|
||||
"private": true,
|
||||
"name": "backend.freesewing.org",
|
||||
"version": "0.0.1",
|
||||
"license": "MIT",
|
||||
"description": "The FreeSewing backend REST API",
|
||||
"version": "3.0.0-alpha.2",
|
||||
"description": "FreeSewing backend",
|
||||
"author": "Joost De Cock <joost@joost.at> (https://github.com/joostdecock)",
|
||||
"homepage": "https://freesewing.org/",
|
||||
"repository": "github:freesewing/freesewing",
|
||||
"license": "MIT",
|
||||
"bugs": {
|
||||
"url": "https://github.com/freesewing/freesewing/issues"
|
||||
},
|
||||
|
@ -16,12 +15,13 @@
|
|||
},
|
||||
"scripts": {
|
||||
"dev": "nodemon src/index.mjs",
|
||||
"test": "npx mocha --require mocha-steps tests/index.mjs",
|
||||
"initdb": "npx prisma db push",
|
||||
"newdb": "node ./scripts/newdb.mjs",
|
||||
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
|
||||
"rmdb": "node ./scripts/rmdb.mjs",
|
||||
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'"
|
||||
"test": "npx mocha --require mocha-steps tests/index.mjs"
|
||||
},
|
||||
"peerDependencies": {},
|
||||
"dependencies": {
|
||||
"@aws-sdk/client-sesv2": "^3.200.0",
|
||||
"@prisma/client": "4.7.1",
|
||||
|
@ -37,12 +37,15 @@
|
|||
"qrcode": "^1.5.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"chai": "^4.2.0",
|
||||
"chai-http": "^4.3.0",
|
||||
"mocha": "^10.1.0",
|
||||
"mocha": "^10.0.0",
|
||||
"mocha-steps": "^1.3.0",
|
||||
"prisma": "4.7.1"
|
||||
},
|
||||
"prisma": {
|
||||
"seed": "node prisma/seed.mjs"
|
||||
}
|
||||
"engines": {
|
||||
"node": ">=16.0.0",
|
||||
"npm": ">=8"
|
||||
},
|
||||
"private": true
|
||||
}
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
{
|
||||
"private": true,
|
||||
"name": "freesewing.dev",
|
||||
"name": "@freesewing/dev",
|
||||
"version": "3.0.0-alpha.2",
|
||||
"description": "Source code for the FreeSewing.dev website",
|
||||
"description": "FreeSewing website with documentation for contributors & developers",
|
||||
"author": "Joost De Cock <joost@joost.at> (https://github.com/joostdecock)",
|
||||
"homepage": "https://freesewing.org/",
|
||||
"repository": "github:freesewing/freesewing",
|
||||
|
@ -15,51 +14,57 @@
|
|||
"url": "https://freesewing.org/patrons/join"
|
||||
},
|
||||
"scripts": {
|
||||
"dev": "node --experimental-json-modules ./node_modules/.bin/next dev -p 8000",
|
||||
"develop": "next dev -p 3002",
|
||||
"build": "node --experimental-json-modules ../../node_modules/next/dist/bin/next build",
|
||||
"cibuild": "yarn build && node scripts/algolia.mjs",
|
||||
"dev": "node --experimental-json-modules ../../node_modules/next/dist/bin/next dev -p 8000",
|
||||
"develop": "node --experimental-json-modules ../../node_modules/next/dist/bin/next dev -p 8000",
|
||||
"lint": "../../node_modules/next/dist/bin/next lint",
|
||||
"prebuild": "SITE=dev node --experimental-json-modules ../shared/prebuild/index.mjs",
|
||||
"build": "node --experimental-json-modules ./node_modules/.bin/next build",
|
||||
"cibuild": "yarn prebuild && node --experimental-json-modules ./node_modules/.bin/next build && node scripts/algolia.mjs",
|
||||
"start": "yarn prebuild && node --experimental-json-modules ./node_modules/.bin/next dev -p 8000",
|
||||
"lint": "next lint",
|
||||
"serve": "pm2 start npm --name 'dev' -- run start"
|
||||
"serve": "pm2 start npm --name 'dev' -- run start",
|
||||
"start": "yarn prebuild && yarn dev"
|
||||
},
|
||||
"peerDependencies": {},
|
||||
"dependencies": {
|
||||
"@heroicons/react": "latest",
|
||||
"@mdx-js/loader": "latest",
|
||||
"@mdx-js/mdx": "latest",
|
||||
"@mdx-js/react": "latest",
|
||||
"@mdx-js/runtime": "latest",
|
||||
"@next/bundle-analyzer": "^13",
|
||||
"@tailwindcss/typography": "latest",
|
||||
"@mdx-js/loader": "2.2.1",
|
||||
"@mdx-js/mdx": "2.2.1",
|
||||
"@mdx-js/react": "2.2.1",
|
||||
"@mdx-js/runtime": "2.0.0-next.9",
|
||||
"@next/bundle-analyzer": "13.0.7",
|
||||
"@tailwindcss/typography": "0.5.8",
|
||||
"algoliasearch": "^4.11.0",
|
||||
"daisyui": "^2.0.6",
|
||||
"lodash.get": "^4.4.2",
|
||||
"lodash.orderby": "^4.6.0",
|
||||
"lodash.set": "^4.3.2",
|
||||
"next": "^13.0.0",
|
||||
"react": "^18.2.0",
|
||||
"react-copy-to-clipboard": "^5.0.4",
|
||||
"react-dom": "^18.2.0",
|
||||
"react-hotkeys-hook": "^4.0.4",
|
||||
"react-instantsearch-dom": "^6.18.0",
|
||||
"react-markdown": "^8.0.3",
|
||||
"react-swipeable": "^7.0.0",
|
||||
"react-timeago": "^7.1.0",
|
||||
"rehype-autolink-headings": "^6.1.1",
|
||||
"rehype-highlight": "^6.0.0",
|
||||
"rehype-sanitize": "^5.0.1",
|
||||
"rehype-slug": "^5.0.1",
|
||||
"rehype-stringify": "^9.0.2",
|
||||
"daisyui": "2.45.0",
|
||||
"lodash.get": "4.4.2",
|
||||
"lodash.orderby": "4.6.0",
|
||||
"lodash.set": "4.3.2",
|
||||
"next": "13.0.7",
|
||||
"react": "18.2.0",
|
||||
"react-copy-to-clipboard": "5.1.0",
|
||||
"react-dom": "18.2.0",
|
||||
"react-hotkeys-hook": "4.0.6",
|
||||
"react-instantsearch-dom": "6.38.1",
|
||||
"react-markdown": "8.0.4",
|
||||
"react-swipeable": "7.0.0",
|
||||
"react-timeago": "7.1.0",
|
||||
"rehype-autolink-headings": "6.1.1",
|
||||
"rehype-highlight": "6.0.0",
|
||||
"rehype-sanitize": "5.0.1",
|
||||
"rehype-slug": "5.1.0",
|
||||
"rehype-stringify": "9.0.3",
|
||||
"remark-copy-linked-files": "https://github.com/joostdecock/remark-copy-linked-files",
|
||||
"remark-gfm": "^3.0.1"
|
||||
"remark-gfm": "3.0.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"autoprefixer": "^10.4.0",
|
||||
"eslint-config-next": "13.0.6",
|
||||
"js-yaml": "^4.1.0",
|
||||
"postcss": "^8.4.4",
|
||||
"tailwindcss": "^3.0.1",
|
||||
"yaml-loader": "^0.8.0"
|
||||
}
|
||||
"autoprefixer": "10.4.13",
|
||||
"eslint-config-next": "13.0.7",
|
||||
"js-yaml": "4.1.0",
|
||||
"postcss": "8.4.20",
|
||||
"remark-extract-frontmatter": "3.2.0",
|
||||
"tailwindcss": "3.2.4",
|
||||
"yaml-loader": "0.8.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=16.0.0",
|
||||
"npm": ">=8"
|
||||
},
|
||||
"private": true
|
||||
}
|
||||
|
|
|
@ -1,9 +1,7 @@
|
|||
{
|
||||
"name": "freesewing.email",
|
||||
"private": true,
|
||||
"name": "@freesewing/email",
|
||||
"version": "3.0.0-alpha.2",
|
||||
"name": "email",
|
||||
"description": "Holds a maizzle instance for generating FreeSewing's email templates",
|
||||
"description": "Holds maizzle instance to generate the FreeSewing email templates",
|
||||
"author": "Joost De Cock <joost@joost.at> (https://github.com/joostdecock)",
|
||||
"homepage": "https://freesewing.org/",
|
||||
"repository": "github:freesewing/freesewing",
|
||||
|
@ -16,13 +14,20 @@
|
|||
"url": "https://freesewing.org/patrons/join"
|
||||
},
|
||||
"scripts": {
|
||||
"dev": "maizzle serve",
|
||||
"build": "maizzle build production"
|
||||
"build": "maizzle build production",
|
||||
"dev": "maizzle serve"
|
||||
},
|
||||
"peerDependencies": {},
|
||||
"dependencies": {
|
||||
"@maizzle/framework": "latest",
|
||||
"@maizzle/framework": "4.3.1",
|
||||
"tailwindcss-box-shadow": "^1.0.0",
|
||||
"tailwindcss-email-variants": "^1.0.0",
|
||||
"tailwindcss-mso": "^1.2.0"
|
||||
}
|
||||
},
|
||||
"devDependencies": {},
|
||||
"engines": {
|
||||
"node": ">=16.0.0",
|
||||
"npm": ">=8"
|
||||
},
|
||||
"private": true
|
||||
}
|
||||
|
|
|
@ -1,9 +0,0 @@
|
|||
# Change log for: @freesewing/freesewing.lab
|
||||
|
||||
|
||||
|
||||
This is the **initial release**, and the start of this change log.
|
||||
|
||||
> Prior to version 2, FreeSewing was not a JavaScript project.
|
||||
> As such, that history is out of scope for this change log.
|
||||
|
|
@ -1,8 +1,7 @@
|
|||
{
|
||||
"private": true,
|
||||
"name": "freesewing.lab",
|
||||
"name": "@freesewing/lab",
|
||||
"version": "3.0.0-alpha.2",
|
||||
"description": "Source code for the lab.FreeSewing.dev website",
|
||||
"description": "FreeSewing website to test various patterns",
|
||||
"author": "Joost De Cock <joost@joost.at> (https://github.com/joostdecock)",
|
||||
"homepage": "https://freesewing.org/",
|
||||
"repository": "github:freesewing/freesewing",
|
||||
|
@ -15,60 +14,62 @@
|
|||
"url": "https://freesewing.org/patrons/join"
|
||||
},
|
||||
"scripts": {
|
||||
"build": "node --experimental-json-modules ../../node_modules/next/dist/bin/next build",
|
||||
"cibuild": "yarn build",
|
||||
"clean": "rimraf pages/*.mjs && rimraf pages/*/*.mjs && rimraf pages/v/*/*.mjs",
|
||||
"dev": "node --experimental-json-modules ../../node_modules/next/dist/bin/next dev -p 8000",
|
||||
"develop": "node --experimental-json-modules ../../node_modules/next/dist/bin/next dev -p 8000",
|
||||
"dev-debug": "node --experimental-json-modules ../../node_modules/next/dist/bin/next dev -p 8000",
|
||||
"start": "yarn prebuild && yarn dev",
|
||||
"start-debug": "yarn prebuild && yarn dev-debug",
|
||||
"prebuild": "node --experimental-json-modules ../shared/prebuild/index.mjs",
|
||||
"cibuild": "yarn prebuild && node --experimental-json-modules ../../node_modules/.bin/next build",
|
||||
"build": "node --experimental-json-modules ../../node_modules/.bin/next build",
|
||||
"clean": "rimraf pages/*.mjs && rimraf pages/*/*.mjs && rimraf pages/v/*/*.mjs",
|
||||
"export": "yarn prebuild && next build && next export",
|
||||
"lint": "next lint",
|
||||
"serve": "pm2 start npm --name 'dev' -- run start"
|
||||
"lint": "../../node_modules/next/dist/bin/next lint",
|
||||
"prebuild": "SITE=lab node --experimental-json-modules ../shared/prebuild/index.mjs",
|
||||
"start": "yarn prebuild && yarn dev"
|
||||
},
|
||||
"peerDependencies": {},
|
||||
"dependencies": {
|
||||
"@headlessui/react": "^1.6.6",
|
||||
"@heroicons/react": "^2.0.1",
|
||||
"@mdx-js/loader": "^2.0.0-rc.2",
|
||||
"@mdx-js/mdx": "^2.0.0-rc.2",
|
||||
"@mdx-js/react": "^2.0.0-rc.2",
|
||||
"@mdx-js/runtime": "next",
|
||||
"@mdx-js/loader": "2.2.1",
|
||||
"@mdx-js/mdx": "2.2.1",
|
||||
"@mdx-js/react": "2.2.1",
|
||||
"@mdx-js/runtime": "2.0.0-next.9",
|
||||
"@tailwindcss/typography": "^0.5.0",
|
||||
"algoliasearch": "^4.11.0",
|
||||
"d3-dispatch": "^3.0.1",
|
||||
"d3-drag": "^3.0.0",
|
||||
"d3-selection": "^3.0.0",
|
||||
"daisyui": "^2.0.6",
|
||||
"i18next": "^22.4.0",
|
||||
"lodash.get": "^4.4.2",
|
||||
"lodash.orderby": "^4.6.0",
|
||||
"lodash.set": "^4.3.2",
|
||||
"next": "^13.0.0",
|
||||
"next-i18next": "^13.0.0",
|
||||
"react": "^18.2.0",
|
||||
"react-copy-to-clipboard": "^5.0.4",
|
||||
"react-hotkeys-hook": "^4.0.4",
|
||||
"react-i18next": "^12.1.1",
|
||||
"react-instantsearch-dom": "^6.18.0",
|
||||
"react-markdown": "^8.0.0",
|
||||
"react-swipeable": "^7.0.0",
|
||||
"react-timeago": "^7.1.0",
|
||||
"rehype-highlight": "^6.0.0",
|
||||
"rehype-sanitize": "^5.0.1",
|
||||
"rehype-stringify": "^9.0.2",
|
||||
"algoliasearch": "4.14.2",
|
||||
"d3-dispatch": "3.0.1",
|
||||
"d3-drag": "3.0.0",
|
||||
"d3-selection": "3.0.0",
|
||||
"daisyui": "2.45.0",
|
||||
"i18next": "22.4.5",
|
||||
"lodash.get": "4.4.2",
|
||||
"lodash.orderby": "4.6.0",
|
||||
"lodash.set": "4.3.2",
|
||||
"next": "13.0.7",
|
||||
"next-i18next": "13.0.2",
|
||||
"react": "18.2.0",
|
||||
"react-copy-to-clipboard": "5.1.0",
|
||||
"react-hotkeys-hook": "4.0.6",
|
||||
"react-i18next": "12.1.1",
|
||||
"react-instantsearch-dom": "6.38.1",
|
||||
"react-markdown": "8.0.4",
|
||||
"react-swipeable": "7.0.0",
|
||||
"react-timeago": "7.1.0",
|
||||
"rehype-autolink-headings": "6.1.1",
|
||||
"rehype-highlight": "6.0.0",
|
||||
"rehype-sanitize": "5.0.1",
|
||||
"rehype-slug": "5.1.0",
|
||||
"rehype-stringify": "9.0.3",
|
||||
"remark-copy-linked-files": "https://github.com/joostdecock/remark-copy-linked-files",
|
||||
"remark-gfm": "^3.0.1"
|
||||
"remark-gfm": "3.0.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"autoprefixer": "^10.4.0",
|
||||
"eslint-config-next": "13.0.6",
|
||||
"js-yaml": "^4.1.0",
|
||||
"postcss": "^8.4.4",
|
||||
"tailwindcss": "^3.0.1"
|
||||
"autoprefixer": "10.4.13",
|
||||
"eslint-config-next": "13.0.7",
|
||||
"js-yaml": "4.1.0",
|
||||
"postcss": "8.4.20",
|
||||
"remark-extract-frontmatter": "3.2.0",
|
||||
"tailwindcss": "3.2.4",
|
||||
"yaml-loader": "0.8.0"
|
||||
},
|
||||
"browserslist": [
|
||||
"last 2 versions"
|
||||
]
|
||||
"engines": {
|
||||
"node": ">=16.0.0",
|
||||
"npm": ">=8"
|
||||
},
|
||||
"private": true
|
||||
}
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
{
|
||||
"private": true,
|
||||
"name": "freesewing.org",
|
||||
"name": "@freesewing/org",
|
||||
"version": "3.0.0-alpha.2",
|
||||
"description": "Source code for the FreeSewing.org website",
|
||||
"description": "FreeSewing website",
|
||||
"author": "Joost De Cock <joost@joost.at> (https://github.com/joostdecock)",
|
||||
"homepage": "https://freesewing.org/",
|
||||
"repository": "github:freesewing/freesewing",
|
||||
|
@ -15,48 +14,54 @@
|
|||
"url": "https://freesewing.org/patrons/join"
|
||||
},
|
||||
"scripts": {
|
||||
"dev": "SITE=org node --experimental-json-modules ./node_modules/.bin/next dev -p 8000",
|
||||
"prebuild": "SITE=org node ../shared/prebuild/index.mjs",
|
||||
"i18n": "SITE=org node ../freesewing.shared/prebuild/i18n-only.mjs",
|
||||
"build": "next build",
|
||||
"cibuild": "yarn prebuild && node --experimental-json-modules ./node_modules/.bin/next build",
|
||||
"export": "yarn prebuild && next build && next export",
|
||||
"start": "next start -p 3002",
|
||||
"lint": "next lint",
|
||||
"testdeploy": "next build && next export && netlify-cli deploy",
|
||||
"deploy": "next build && next export && netlify-cli deploy --prod",
|
||||
"serve": "pm2 start npm --name 'freesewing.org' -- run start"
|
||||
"build": "node --experimental-json-modules ../../node_modules/next/dist/bin/next build",
|
||||
"cibuild": "yarn build",
|
||||
"clean": "rimraf pages/*.mjs && rimraf pages/*/*.mjs && rimraf pages/v/*/*.mjs",
|
||||
"dev": "node --experimental-json-modules ../../node_modules/next/dist/bin/next dev -p 8000",
|
||||
"develop": "node --experimental-json-modules ../../node_modules/next/dist/bin/next dev -p 8000",
|
||||
"i18n": "SITE=org node ../shared/prebuild/i18n-only.mjs",
|
||||
"lint": "../../node_modules/next/dist/bin/next lint",
|
||||
"prebuild": "SITE=org node --experimental-json-modules ../shared/prebuild/index.mjs",
|
||||
"start": "yarn prebuild && yarn dev"
|
||||
},
|
||||
"peerDependencies": {},
|
||||
"dependencies": {
|
||||
"@heroicons/react": "latest",
|
||||
"@mdx-js/loader": "latest",
|
||||
"@mdx-js/mdx": "latest",
|
||||
"@mdx-js/react": "latest",
|
||||
"@mdx-js/runtime": "latest",
|
||||
"@mdx-js/loader": "2.2.1",
|
||||
"@mdx-js/mdx": "2.2.1",
|
||||
"@mdx-js/react": "2.2.1",
|
||||
"@mdx-js/runtime": "2.0.0-next.9",
|
||||
"@tailwindcss/typography": "^0.5.0",
|
||||
"algoliasearch": "^4.11.0",
|
||||
"daisyui": "^2.0.6",
|
||||
"front-matter": "^4.0.2",
|
||||
"lodash.get": "^4.4.2",
|
||||
"lodash.orderby": "^4.6.0",
|
||||
"lodash.set": "^4.3.2",
|
||||
"next": "^13.0.0",
|
||||
"react-hotkeys-hook": "^4.0.4",
|
||||
"react-instantsearch-dom": "^6.18.0",
|
||||
"react-markdown": "^8.0.3",
|
||||
"react-swipeable": "^7.0.0",
|
||||
"react-timeago": "^7.1.0",
|
||||
"rehype-highlight": "^6.0.0",
|
||||
"rehype-sanitize": "^5.0.1",
|
||||
"rehype-stringify": "^9.0.2",
|
||||
"algoliasearch": "4.14.2",
|
||||
"daisyui": "2.45.0",
|
||||
"lodash.get": "4.4.2",
|
||||
"lodash.orderby": "4.6.0",
|
||||
"lodash.set": "4.3.2",
|
||||
"next": "13.0.7",
|
||||
"react-hotkeys-hook": "4.0.6",
|
||||
"react-instantsearch-dom": "6.38.1",
|
||||
"react-markdown": "8.0.4",
|
||||
"react-swipeable": "7.0.0",
|
||||
"react-timeago": "7.1.0",
|
||||
"rehype-autolink-headings": "6.1.1",
|
||||
"rehype-highlight": "6.0.0",
|
||||
"rehype-sanitize": "5.0.1",
|
||||
"rehype-slug": "5.1.0",
|
||||
"rehype-stringify": "9.0.3",
|
||||
"remark-copy-linked-files": "https://github.com/joostdecock/remark-copy-linked-files",
|
||||
"remark-gfm": "^3.0.1"
|
||||
"remark-gfm": "3.0.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"autoprefixer": "^10.4.0",
|
||||
"eslint-config-next": "13.0.6",
|
||||
"js-yaml": "^4.1.0",
|
||||
"postcss": "^8.4.4",
|
||||
"tailwindcss": "^3.0.1"
|
||||
}
|
||||
"autoprefixer": "10.4.13",
|
||||
"eslint-config-next": "13.0.7",
|
||||
"js-yaml": "4.1.0",
|
||||
"postcss": "8.4.20",
|
||||
"remark-extract-frontmatter": "3.2.0",
|
||||
"tailwindcss": "3.2.4",
|
||||
"yaml-loader": "0.8.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=16.0.0",
|
||||
"npm": ">=8"
|
||||
},
|
||||
"private": true
|
||||
}
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
{
|
||||
"private": true,
|
||||
"name": "FreeSewing",
|
||||
"version": "1.0.0",
|
||||
"description": "Sanity config and instance hosted on cms.FreeSewing.org",
|
||||
"name": "@freesewing/sanity",
|
||||
"version": "3.0.0-alpha.2",
|
||||
"description": "Code for the sanity.io CMS",
|
||||
"author": "Joost De Cock <joost@joost.at> (https://github.com/joostdecock)",
|
||||
"homepage": "https://freesewing.org/",
|
||||
"repository": "github:freesewing/freesewing",
|
||||
|
@ -14,33 +13,33 @@
|
|||
"type": "individual",
|
||||
"url": "https://freesewing.org/patrons/join"
|
||||
},
|
||||
"main": "package.json",
|
||||
"author": "Joost De Cock <joost@joost.at>",
|
||||
"license": "UNLICENSED",
|
||||
"scripts": {
|
||||
"start": "sanity start",
|
||||
"test": "sanity check",
|
||||
"build": "sanity build -y"
|
||||
},
|
||||
"keywords": [
|
||||
"sanity"
|
||||
],
|
||||
"peerDependencies": {},
|
||||
"dependencies": {
|
||||
"@sanity/base": "^2.35.0",
|
||||
"@sanity/core": "^2.35.0",
|
||||
"@sanity/default-layout": "^2.35.0",
|
||||
"@sanity/default-login": "^2.35.0",
|
||||
"@sanity/desk-tool": "^2.35.0",
|
||||
"@sanity/eslint-config-studio": "^2.0.0",
|
||||
"@sanity/vision": "^2.35.0",
|
||||
"eslint": "^8.6.0",
|
||||
"prop-types": "^15.7",
|
||||
"react": "^18.2.0",
|
||||
"react-dom": "^18.2.0",
|
||||
"sanity-plugin-markdown": "^3.0.1",
|
||||
"styled-components": "^5.2.0"
|
||||
"@sanity/base": "2.35.0",
|
||||
"@sanity/core": "2.35.0",
|
||||
"@sanity/default-layout": "2.35.0",
|
||||
"@sanity/default-login": "2.35.0",
|
||||
"@sanity/desk-tool": "2.35.0",
|
||||
"@sanity/eslint-config-studio": "2.0.0",
|
||||
"@sanity/vision": "2.35.0",
|
||||
"eslint": "8.6.0",
|
||||
"prop-types": "15.7",
|
||||
"react": "18.2.0",
|
||||
"react-dom": "18.2.0",
|
||||
"sanity-plugin-markdown": "3.0.1",
|
||||
"styled-components": "5.2.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@sanity/cli": "^2.35.0"
|
||||
}
|
||||
"@sanity/cli": "2.35.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=16.0.0",
|
||||
"npm": ">=8"
|
||||
},
|
||||
"private": true
|
||||
}
|
||||
|
|
|
@ -1,9 +0,0 @@
|
|||
# Change log for: freesewing.shared
|
||||
|
||||
|
||||
|
||||
This is the **initial release**, and the start of this change log.
|
||||
|
||||
> Prior to version 2, FreeSewing was not a JavaScript project.
|
||||
> As such, that history is out of scope for this change log.
|
||||
|
|
@ -1,8 +1,7 @@
|
|||
{
|
||||
"private": true,
|
||||
"name": "freesewing.shared",
|
||||
"name": "@freesewing/shared",
|
||||
"version": "3.0.0-alpha.2",
|
||||
"description": "Shared code for various FreeSewing web projects",
|
||||
"description": "Shared code and React components for different websites",
|
||||
"author": "Joost De Cock <joost@joost.at> (https://github.com/joostdecock)",
|
||||
"homepage": "https://freesewing.org/",
|
||||
"repository": "github:freesewing/freesewing",
|
||||
|
@ -14,16 +13,8 @@
|
|||
"type": "individual",
|
||||
"url": "https://freesewing.org/patrons/join"
|
||||
},
|
||||
"scripts": {
|
||||
"dev": "next dev -p 3002",
|
||||
"develop": "next dev -p 3002",
|
||||
"prebuild": "SITE=dev LANG=en node ../shared/prebuild/index.mjs",
|
||||
"build": "next build",
|
||||
"export": "next build && next export",
|
||||
"start": "next start -p 3002",
|
||||
"serve": "pm2 start npm --name 'freesewing.dev' -- run start",
|
||||
"strapiqa": "node strapi/qa.mjs"
|
||||
},
|
||||
"scripts": {},
|
||||
"peerDependencies": {},
|
||||
"dependencies": {
|
||||
"@headlessui/react": "^1.6.6",
|
||||
"@resvg/resvg-js": "^2.1.0",
|
||||
|
@ -32,27 +23,25 @@
|
|||
"d3-dispatch": "^3.0.1",
|
||||
"d3-drag": "^3.0.0",
|
||||
"d3-selection": "^3.0.0",
|
||||
"daisyui": "^2.0.6",
|
||||
"daisyui": "2.45.0",
|
||||
"feed": "^4.2.2",
|
||||
"file-saver": "^2.0.5",
|
||||
"front-matter": "^4.0.2",
|
||||
"highlight.js": "^11.4.0",
|
||||
"lodash.clonedeep": "^4.5.0",
|
||||
"lodash.orderby": "^4.6.0",
|
||||
"lodash.unset": "^4.5.2",
|
||||
"mdast-util-toc": "^6.1.0",
|
||||
"pdfkit": "^0.13.0",
|
||||
"postcss-for": "^2.1.1",
|
||||
"react": "^18.2.0",
|
||||
"react-dom": "^18.2.0",
|
||||
"react-markdown": "^8.0.0",
|
||||
"lodash.orderby": "4.6.0",
|
||||
"lodash.unset": "4.5.2",
|
||||
"mdast-util-toc": "6.1.0",
|
||||
"pdfkit": "0.13.0",
|
||||
"postcss-for": "2.1.1",
|
||||
"react": "18.2.0",
|
||||
"react-dom": "18.2.0",
|
||||
"react-markdown": "8.0.4",
|
||||
"react-sizeme": "^3.0.2",
|
||||
"react-timeago": "^7.1.0",
|
||||
"react-timeago": "7.1.0",
|
||||
"react-zoom-pan-pinch": "^2.1.3",
|
||||
"rehype-autolink-headings": "^6.1.1",
|
||||
"rehype-highlight": "^6.0.0",
|
||||
"remark-extract-frontmatter": "^3.2.0",
|
||||
"remark-frontmatter": "^4.0.1",
|
||||
"rehype-autolink-headings": "6.1.1",
|
||||
"rehype-highlight": "6.0.0",
|
||||
"remark-smartypants": "^2.0.0",
|
||||
"sharp": "^0.31.1",
|
||||
"svg-to-pdfkit": "^0.1.8",
|
||||
|
@ -60,13 +49,10 @@
|
|||
"unist-util-visit": "^4.1.0",
|
||||
"web-worker": "^1.2.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"autoprefixer": "^10.4.0",
|
||||
"eslint": "^8.23.1",
|
||||
"eslint-plugin-react": "^7.31.8",
|
||||
"lodash.set": "^4.3.2",
|
||||
"postcss": "^8.4.4",
|
||||
"tailwindcss": "^3.0.1",
|
||||
"tailwindcss-open-variant": "^1.0.0"
|
||||
}
|
||||
"devDependencies": {},
|
||||
"engines": {
|
||||
"node": ">=16.0.0",
|
||||
"npm": ">=8"
|
||||
},
|
||||
"private": true
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue