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
|
- 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)
|
## 2.20.4 (2022-01-28)
|
||||||
|
|
||||||
|
|
|
@ -55,9 +55,9 @@ core:
|
||||||
'bezier-js': '^6.1.0'
|
'bezier-js': '^6.1.0'
|
||||||
'bin-pack': '^1.0.2'
|
'bin-pack': '^1.0.2'
|
||||||
'hooks': '^0.3.2'
|
'hooks': '^0.3.2'
|
||||||
'lodash.get': '^4.4.2'
|
'lodash.get': &_get '4.4.2'
|
||||||
'lodash.set': '^4.3.2'
|
'lodash.set': &_set '4.3.2'
|
||||||
'lodash.unset': '^4.5.2'
|
'lodash.unset': &_unset '4.5.2'
|
||||||
dev:
|
dev:
|
||||||
'eslint': '^8.23.1'
|
'eslint': '^8.23.1'
|
||||||
'nyc': '^15.1.0'
|
'nyc': '^15.1.0'
|
||||||
|
@ -156,9 +156,11 @@ rehype-highlight-lines:
|
||||||
_:
|
_:
|
||||||
'unist-util-remove': '^3.1.0'
|
'unist-util-remove': '^3.1.0'
|
||||||
sandy:
|
sandy:
|
||||||
'@freesewing/snapseries': *freesewing
|
peer:
|
||||||
|
'@freesewing/snapseries': *freesewing
|
||||||
shin:
|
shin:
|
||||||
'@freesewing/snapseries': *freesewing
|
peer:
|
||||||
|
'@freesewing/snapseries': *freesewing
|
||||||
simon:
|
simon:
|
||||||
peer:
|
peer:
|
||||||
'@freesewing/brian': *freesewing
|
'@freesewing/brian': *freesewing
|
||||||
|
@ -182,9 +184,11 @@ teagan:
|
||||||
'@freesewing/brian': *freesewing
|
'@freesewing/brian': *freesewing
|
||||||
'@freesewing/plugin-bust': *freesewing
|
'@freesewing/plugin-bust': *freesewing
|
||||||
titan:
|
titan:
|
||||||
'@freesewing/snapseries': *freesewing
|
peer:
|
||||||
|
'@freesewing/snapseries': *freesewing
|
||||||
trayvon:
|
trayvon:
|
||||||
'@freesewing/snapseries': *freesewing
|
peer:
|
||||||
|
'@freesewing/snapseries': *freesewing
|
||||||
wahid:
|
wahid:
|
||||||
peer:
|
peer:
|
||||||
'@freesewing/brian': *freesewing
|
'@freesewing/brian': *freesewing
|
||||||
|
@ -193,3 +197,187 @@ yuri:
|
||||||
peer:
|
peer:
|
||||||
'@freesewing/brian': *freesewing
|
'@freesewing/brian': *freesewing
|
||||||
'@freesewing/plugin-bust': *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:
|
skipTests:
|
||||||
- theo
|
- theo
|
||||||
packageJson:
|
packageJson:
|
||||||
|
backend:
|
||||||
|
name: backend.freesewing.org
|
||||||
bee:
|
bee:
|
||||||
author: bobgeorgethe3rd (https://github.com/bobgeorgethe3rd)
|
author: bobgeorgethe3rd (https://github.com/bobgeorgethe3rd)
|
||||||
benjamin:
|
benjamin:
|
||||||
|
|
|
@ -46,5 +46,52 @@ rehype-jargon:
|
||||||
lint: "npx eslint 'src/*.mjs'"
|
lint: "npx eslint 'src/*.mjs'"
|
||||||
snapseries:
|
snapseries:
|
||||||
lint: "npx eslint 'src/*.mjs'"
|
lint: "npx eslint 'src/*.mjs'"
|
||||||
|
|
||||||
|
# Sites go here
|
||||||
backend:
|
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' }
|
import conf from '../lerna.json' assert { type: 'json' }
|
||||||
const { version } = conf
|
const { version } = conf
|
||||||
import {
|
import {
|
||||||
publishedSoftware as software,
|
software as software,
|
||||||
publishedTypes as types,
|
publishedTypes as types,
|
||||||
designs,
|
designs,
|
||||||
plugins,
|
plugins,
|
||||||
|
@ -73,15 +73,17 @@ for (const pkg of Object.values(software)) {
|
||||||
path.join(cwd, pkg.folder, pkg.name, 'package.json'),
|
path.join(cwd, pkg.folder, pkg.name, 'package.json'),
|
||||||
JSON.stringify(packageJson(pkg), null, 2) + '\n'
|
JSON.stringify(packageJson(pkg), null, 2) + '\n'
|
||||||
)
|
)
|
||||||
fs.writeFileSync(
|
if (pkg.type !== 'site') {
|
||||||
path.join(cwd, pkg.folder, pkg.name, 'data.mjs'),
|
fs.writeFileSync(
|
||||||
mustache.render(repo.templates.data, { name: fullName(pkg.name), version })
|
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, 'README.md'), readme(pkg))
|
||||||
fs.writeFileSync(path.join(cwd, pkg.folder, pkg.name, 'build.mjs'), repo.templates.build)
|
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'))
|
log.write(chalk.green(' Done\n'))
|
||||||
|
|
||||||
|
@ -168,6 +170,7 @@ function readInfoFile(pkg) {
|
||||||
* Returns an array of keywords for a package
|
* Returns an array of keywords for a package
|
||||||
*/
|
*/
|
||||||
function keywords(pkg) {
|
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.name] !== 'undefined') return repo.keywords[pkg.name]
|
||||||
if (typeof repo.keywords[pkg.type] !== 'undefined') return repo.keywords[pkg.type]
|
if (typeof repo.keywords[pkg.type] !== 'undefined') return repo.keywords[pkg.type]
|
||||||
else {
|
else {
|
||||||
|
@ -184,10 +187,12 @@ function keywords(pkg) {
|
||||||
*/
|
*/
|
||||||
function scripts(pkg) {
|
function scripts(pkg) {
|
||||||
let runScripts = {}
|
let runScripts = {}
|
||||||
for (const key of Object.keys(repo.scripts._)) {
|
if (pkg.type !== 'site') {
|
||||||
runScripts[key] = mustache.render(repo.scripts._[key], {
|
for (const key of Object.keys(repo.scripts._)) {
|
||||||
name: pkg.name,
|
runScripts[key] = mustache.render(repo.scripts._[key], {
|
||||||
})
|
name: pkg.name,
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (typeof repo.scripts._types[pkg.type] !== 'undefined') {
|
if (typeof repo.scripts._types[pkg.type] !== 'undefined') {
|
||||||
for (const key of Object.keys(repo.scripts._types[pkg.type])) {
|
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
|
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",
|
"name": "backend.freesewing.org",
|
||||||
"version": "0.0.1",
|
"version": "3.0.0-alpha.2",
|
||||||
"license": "MIT",
|
"description": "FreeSewing backend",
|
||||||
"description": "The FreeSewing backend REST API",
|
|
||||||
"author": "Joost De Cock <joost@joost.at> (https://github.com/joostdecock)",
|
"author": "Joost De Cock <joost@joost.at> (https://github.com/joostdecock)",
|
||||||
"homepage": "https://freesewing.org/",
|
"homepage": "https://freesewing.org/",
|
||||||
"repository": "github:freesewing/freesewing",
|
"repository": "github:freesewing/freesewing",
|
||||||
|
"license": "MIT",
|
||||||
"bugs": {
|
"bugs": {
|
||||||
"url": "https://github.com/freesewing/freesewing/issues"
|
"url": "https://github.com/freesewing/freesewing/issues"
|
||||||
},
|
},
|
||||||
|
@ -16,12 +15,13 @@
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "nodemon src/index.mjs",
|
"dev": "nodemon src/index.mjs",
|
||||||
"test": "npx mocha --require mocha-steps tests/index.mjs",
|
|
||||||
"initdb": "npx prisma db push",
|
"initdb": "npx prisma db push",
|
||||||
"newdb": "node ./scripts/newdb.mjs",
|
"newdb": "node ./scripts/newdb.mjs",
|
||||||
|
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
|
||||||
"rmdb": "node ./scripts/rmdb.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": {
|
"dependencies": {
|
||||||
"@aws-sdk/client-sesv2": "^3.200.0",
|
"@aws-sdk/client-sesv2": "^3.200.0",
|
||||||
"@prisma/client": "4.7.1",
|
"@prisma/client": "4.7.1",
|
||||||
|
@ -37,12 +37,15 @@
|
||||||
"qrcode": "^1.5.1"
|
"qrcode": "^1.5.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"chai": "^4.2.0",
|
||||||
"chai-http": "^4.3.0",
|
"chai-http": "^4.3.0",
|
||||||
"mocha": "^10.1.0",
|
"mocha": "^10.0.0",
|
||||||
"mocha-steps": "^1.3.0",
|
"mocha-steps": "^1.3.0",
|
||||||
"prisma": "4.7.1"
|
"prisma": "4.7.1"
|
||||||
},
|
},
|
||||||
"prisma": {
|
"engines": {
|
||||||
"seed": "node prisma/seed.mjs"
|
"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",
|
"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)",
|
"author": "Joost De Cock <joost@joost.at> (https://github.com/joostdecock)",
|
||||||
"homepage": "https://freesewing.org/",
|
"homepage": "https://freesewing.org/",
|
||||||
"repository": "github:freesewing/freesewing",
|
"repository": "github:freesewing/freesewing",
|
||||||
|
@ -15,51 +14,57 @@
|
||||||
"url": "https://freesewing.org/patrons/join"
|
"url": "https://freesewing.org/patrons/join"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "node --experimental-json-modules ./node_modules/.bin/next dev -p 8000",
|
"build": "node --experimental-json-modules ../../node_modules/next/dist/bin/next build",
|
||||||
"develop": "next dev -p 3002",
|
"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",
|
"prebuild": "SITE=dev node --experimental-json-modules ../shared/prebuild/index.mjs",
|
||||||
"build": "node --experimental-json-modules ./node_modules/.bin/next build",
|
"serve": "pm2 start npm --name 'dev' -- run start",
|
||||||
"cibuild": "yarn prebuild && node --experimental-json-modules ./node_modules/.bin/next build && node scripts/algolia.mjs",
|
"start": "yarn prebuild && yarn dev"
|
||||||
"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"
|
|
||||||
},
|
},
|
||||||
|
"peerDependencies": {},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@heroicons/react": "latest",
|
"@mdx-js/loader": "2.2.1",
|
||||||
"@mdx-js/loader": "latest",
|
"@mdx-js/mdx": "2.2.1",
|
||||||
"@mdx-js/mdx": "latest",
|
"@mdx-js/react": "2.2.1",
|
||||||
"@mdx-js/react": "latest",
|
"@mdx-js/runtime": "2.0.0-next.9",
|
||||||
"@mdx-js/runtime": "latest",
|
"@next/bundle-analyzer": "13.0.7",
|
||||||
"@next/bundle-analyzer": "^13",
|
"@tailwindcss/typography": "0.5.8",
|
||||||
"@tailwindcss/typography": "latest",
|
|
||||||
"algoliasearch": "^4.11.0",
|
"algoliasearch": "^4.11.0",
|
||||||
"daisyui": "^2.0.6",
|
"daisyui": "2.45.0",
|
||||||
"lodash.get": "^4.4.2",
|
"lodash.get": "4.4.2",
|
||||||
"lodash.orderby": "^4.6.0",
|
"lodash.orderby": "4.6.0",
|
||||||
"lodash.set": "^4.3.2",
|
"lodash.set": "4.3.2",
|
||||||
"next": "^13.0.0",
|
"next": "13.0.7",
|
||||||
"react": "^18.2.0",
|
"react": "18.2.0",
|
||||||
"react-copy-to-clipboard": "^5.0.4",
|
"react-copy-to-clipboard": "5.1.0",
|
||||||
"react-dom": "^18.2.0",
|
"react-dom": "18.2.0",
|
||||||
"react-hotkeys-hook": "^4.0.4",
|
"react-hotkeys-hook": "4.0.6",
|
||||||
"react-instantsearch-dom": "^6.18.0",
|
"react-instantsearch-dom": "6.38.1",
|
||||||
"react-markdown": "^8.0.3",
|
"react-markdown": "8.0.4",
|
||||||
"react-swipeable": "^7.0.0",
|
"react-swipeable": "7.0.0",
|
||||||
"react-timeago": "^7.1.0",
|
"react-timeago": "7.1.0",
|
||||||
"rehype-autolink-headings": "^6.1.1",
|
"rehype-autolink-headings": "6.1.1",
|
||||||
"rehype-highlight": "^6.0.0",
|
"rehype-highlight": "6.0.0",
|
||||||
"rehype-sanitize": "^5.0.1",
|
"rehype-sanitize": "5.0.1",
|
||||||
"rehype-slug": "^5.0.1",
|
"rehype-slug": "5.1.0",
|
||||||
"rehype-stringify": "^9.0.2",
|
"rehype-stringify": "9.0.3",
|
||||||
"remark-copy-linked-files": "https://github.com/joostdecock/remark-copy-linked-files",
|
"remark-copy-linked-files": "https://github.com/joostdecock/remark-copy-linked-files",
|
||||||
"remark-gfm": "^3.0.1"
|
"remark-gfm": "3.0.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"autoprefixer": "^10.4.0",
|
"autoprefixer": "10.4.13",
|
||||||
"eslint-config-next": "13.0.6",
|
"eslint-config-next": "13.0.7",
|
||||||
"js-yaml": "^4.1.0",
|
"js-yaml": "4.1.0",
|
||||||
"postcss": "^8.4.4",
|
"postcss": "8.4.20",
|
||||||
"tailwindcss": "^3.0.1",
|
"remark-extract-frontmatter": "3.2.0",
|
||||||
"yaml-loader": "^0.8.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",
|
"name": "@freesewing/email",
|
||||||
"private": true,
|
|
||||||
"version": "3.0.0-alpha.2",
|
"version": "3.0.0-alpha.2",
|
||||||
"name": "email",
|
"description": "Holds maizzle instance to generate the FreeSewing email templates",
|
||||||
"description": "Holds a maizzle instance for generating FreeSewing's email templates",
|
|
||||||
"author": "Joost De Cock <joost@joost.at> (https://github.com/joostdecock)",
|
"author": "Joost De Cock <joost@joost.at> (https://github.com/joostdecock)",
|
||||||
"homepage": "https://freesewing.org/",
|
"homepage": "https://freesewing.org/",
|
||||||
"repository": "github:freesewing/freesewing",
|
"repository": "github:freesewing/freesewing",
|
||||||
|
@ -16,13 +14,20 @@
|
||||||
"url": "https://freesewing.org/patrons/join"
|
"url": "https://freesewing.org/patrons/join"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "maizzle serve",
|
"build": "maizzle build production",
|
||||||
"build": "maizzle build production"
|
"dev": "maizzle serve"
|
||||||
},
|
},
|
||||||
|
"peerDependencies": {},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@maizzle/framework": "latest",
|
"@maizzle/framework": "4.3.1",
|
||||||
"tailwindcss-box-shadow": "^1.0.0",
|
"tailwindcss-box-shadow": "^1.0.0",
|
||||||
"tailwindcss-email-variants": "^1.0.0",
|
"tailwindcss-email-variants": "^1.0.0",
|
||||||
"tailwindcss-mso": "^1.2.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",
|
"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)",
|
"author": "Joost De Cock <joost@joost.at> (https://github.com/joostdecock)",
|
||||||
"homepage": "https://freesewing.org/",
|
"homepage": "https://freesewing.org/",
|
||||||
"repository": "github:freesewing/freesewing",
|
"repository": "github:freesewing/freesewing",
|
||||||
|
@ -15,60 +14,62 @@
|
||||||
"url": "https://freesewing.org/patrons/join"
|
"url": "https://freesewing.org/patrons/join"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"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",
|
"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",
|
"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",
|
"lint": "../../node_modules/next/dist/bin/next lint",
|
||||||
"start": "yarn prebuild && yarn dev",
|
"prebuild": "SITE=lab node --experimental-json-modules ../shared/prebuild/index.mjs",
|
||||||
"start-debug": "yarn prebuild && yarn dev-debug",
|
"start": "yarn prebuild && yarn dev"
|
||||||
"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"
|
|
||||||
},
|
},
|
||||||
|
"peerDependencies": {},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@headlessui/react": "^1.6.6",
|
"@headlessui/react": "^1.6.6",
|
||||||
"@heroicons/react": "^2.0.1",
|
"@mdx-js/loader": "2.2.1",
|
||||||
"@mdx-js/loader": "^2.0.0-rc.2",
|
"@mdx-js/mdx": "2.2.1",
|
||||||
"@mdx-js/mdx": "^2.0.0-rc.2",
|
"@mdx-js/react": "2.2.1",
|
||||||
"@mdx-js/react": "^2.0.0-rc.2",
|
"@mdx-js/runtime": "2.0.0-next.9",
|
||||||
"@mdx-js/runtime": "next",
|
|
||||||
"@tailwindcss/typography": "^0.5.0",
|
"@tailwindcss/typography": "^0.5.0",
|
||||||
"algoliasearch": "^4.11.0",
|
"algoliasearch": "4.14.2",
|
||||||
"d3-dispatch": "^3.0.1",
|
"d3-dispatch": "3.0.1",
|
||||||
"d3-drag": "^3.0.0",
|
"d3-drag": "3.0.0",
|
||||||
"d3-selection": "^3.0.0",
|
"d3-selection": "3.0.0",
|
||||||
"daisyui": "^2.0.6",
|
"daisyui": "2.45.0",
|
||||||
"i18next": "^22.4.0",
|
"i18next": "22.4.5",
|
||||||
"lodash.get": "^4.4.2",
|
"lodash.get": "4.4.2",
|
||||||
"lodash.orderby": "^4.6.0",
|
"lodash.orderby": "4.6.0",
|
||||||
"lodash.set": "^4.3.2",
|
"lodash.set": "4.3.2",
|
||||||
"next": "^13.0.0",
|
"next": "13.0.7",
|
||||||
"next-i18next": "^13.0.0",
|
"next-i18next": "13.0.2",
|
||||||
"react": "^18.2.0",
|
"react": "18.2.0",
|
||||||
"react-copy-to-clipboard": "^5.0.4",
|
"react-copy-to-clipboard": "5.1.0",
|
||||||
"react-hotkeys-hook": "^4.0.4",
|
"react-hotkeys-hook": "4.0.6",
|
||||||
"react-i18next": "^12.1.1",
|
"react-i18next": "12.1.1",
|
||||||
"react-instantsearch-dom": "^6.18.0",
|
"react-instantsearch-dom": "6.38.1",
|
||||||
"react-markdown": "^8.0.0",
|
"react-markdown": "8.0.4",
|
||||||
"react-swipeable": "^7.0.0",
|
"react-swipeable": "7.0.0",
|
||||||
"react-timeago": "^7.1.0",
|
"react-timeago": "7.1.0",
|
||||||
"rehype-highlight": "^6.0.0",
|
"rehype-autolink-headings": "6.1.1",
|
||||||
"rehype-sanitize": "^5.0.1",
|
"rehype-highlight": "6.0.0",
|
||||||
"rehype-stringify": "^9.0.2",
|
"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-copy-linked-files": "https://github.com/joostdecock/remark-copy-linked-files",
|
||||||
"remark-gfm": "^3.0.1"
|
"remark-gfm": "3.0.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"autoprefixer": "^10.4.0",
|
"autoprefixer": "10.4.13",
|
||||||
"eslint-config-next": "13.0.6",
|
"eslint-config-next": "13.0.7",
|
||||||
"js-yaml": "^4.1.0",
|
"js-yaml": "4.1.0",
|
||||||
"postcss": "^8.4.4",
|
"postcss": "8.4.20",
|
||||||
"tailwindcss": "^3.0.1"
|
"remark-extract-frontmatter": "3.2.0",
|
||||||
|
"tailwindcss": "3.2.4",
|
||||||
|
"yaml-loader": "0.8.0"
|
||||||
},
|
},
|
||||||
"browserslist": [
|
"engines": {
|
||||||
"last 2 versions"
|
"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",
|
"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)",
|
"author": "Joost De Cock <joost@joost.at> (https://github.com/joostdecock)",
|
||||||
"homepage": "https://freesewing.org/",
|
"homepage": "https://freesewing.org/",
|
||||||
"repository": "github:freesewing/freesewing",
|
"repository": "github:freesewing/freesewing",
|
||||||
|
@ -15,48 +14,54 @@
|
||||||
"url": "https://freesewing.org/patrons/join"
|
"url": "https://freesewing.org/patrons/join"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "SITE=org node --experimental-json-modules ./node_modules/.bin/next dev -p 8000",
|
"build": "node --experimental-json-modules ../../node_modules/next/dist/bin/next build",
|
||||||
"prebuild": "SITE=org node ../shared/prebuild/index.mjs",
|
"cibuild": "yarn build",
|
||||||
"i18n": "SITE=org node ../freesewing.shared/prebuild/i18n-only.mjs",
|
"clean": "rimraf pages/*.mjs && rimraf pages/*/*.mjs && rimraf pages/v/*/*.mjs",
|
||||||
"build": "next build",
|
"dev": "node --experimental-json-modules ../../node_modules/next/dist/bin/next dev -p 8000",
|
||||||
"cibuild": "yarn prebuild && node --experimental-json-modules ./node_modules/.bin/next build",
|
"develop": "node --experimental-json-modules ../../node_modules/next/dist/bin/next dev -p 8000",
|
||||||
"export": "yarn prebuild && next build && next export",
|
"i18n": "SITE=org node ../shared/prebuild/i18n-only.mjs",
|
||||||
"start": "next start -p 3002",
|
"lint": "../../node_modules/next/dist/bin/next lint",
|
||||||
"lint": "next lint",
|
"prebuild": "SITE=org node --experimental-json-modules ../shared/prebuild/index.mjs",
|
||||||
"testdeploy": "next build && next export && netlify-cli deploy",
|
"start": "yarn prebuild && yarn dev"
|
||||||
"deploy": "next build && next export && netlify-cli deploy --prod",
|
|
||||||
"serve": "pm2 start npm --name 'freesewing.org' -- run start"
|
|
||||||
},
|
},
|
||||||
|
"peerDependencies": {},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@heroicons/react": "latest",
|
"@mdx-js/loader": "2.2.1",
|
||||||
"@mdx-js/loader": "latest",
|
"@mdx-js/mdx": "2.2.1",
|
||||||
"@mdx-js/mdx": "latest",
|
"@mdx-js/react": "2.2.1",
|
||||||
"@mdx-js/react": "latest",
|
"@mdx-js/runtime": "2.0.0-next.9",
|
||||||
"@mdx-js/runtime": "latest",
|
|
||||||
"@tailwindcss/typography": "^0.5.0",
|
"@tailwindcss/typography": "^0.5.0",
|
||||||
"algoliasearch": "^4.11.0",
|
"algoliasearch": "4.14.2",
|
||||||
"daisyui": "^2.0.6",
|
"daisyui": "2.45.0",
|
||||||
"front-matter": "^4.0.2",
|
"lodash.get": "4.4.2",
|
||||||
"lodash.get": "^4.4.2",
|
"lodash.orderby": "4.6.0",
|
||||||
"lodash.orderby": "^4.6.0",
|
"lodash.set": "4.3.2",
|
||||||
"lodash.set": "^4.3.2",
|
"next": "13.0.7",
|
||||||
"next": "^13.0.0",
|
"react-hotkeys-hook": "4.0.6",
|
||||||
"react-hotkeys-hook": "^4.0.4",
|
"react-instantsearch-dom": "6.38.1",
|
||||||
"react-instantsearch-dom": "^6.18.0",
|
"react-markdown": "8.0.4",
|
||||||
"react-markdown": "^8.0.3",
|
"react-swipeable": "7.0.0",
|
||||||
"react-swipeable": "^7.0.0",
|
"react-timeago": "7.1.0",
|
||||||
"react-timeago": "^7.1.0",
|
"rehype-autolink-headings": "6.1.1",
|
||||||
"rehype-highlight": "^6.0.0",
|
"rehype-highlight": "6.0.0",
|
||||||
"rehype-sanitize": "^5.0.1",
|
"rehype-sanitize": "5.0.1",
|
||||||
"rehype-stringify": "^9.0.2",
|
"rehype-slug": "5.1.0",
|
||||||
|
"rehype-stringify": "9.0.3",
|
||||||
"remark-copy-linked-files": "https://github.com/joostdecock/remark-copy-linked-files",
|
"remark-copy-linked-files": "https://github.com/joostdecock/remark-copy-linked-files",
|
||||||
"remark-gfm": "^3.0.1"
|
"remark-gfm": "3.0.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"autoprefixer": "^10.4.0",
|
"autoprefixer": "10.4.13",
|
||||||
"eslint-config-next": "13.0.6",
|
"eslint-config-next": "13.0.7",
|
||||||
"js-yaml": "^4.1.0",
|
"js-yaml": "4.1.0",
|
||||||
"postcss": "^8.4.4",
|
"postcss": "8.4.20",
|
||||||
"tailwindcss": "^3.0.1"
|
"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/sanity",
|
||||||
"name": "FreeSewing",
|
"version": "3.0.0-alpha.2",
|
||||||
"version": "1.0.0",
|
"description": "Code for the sanity.io CMS",
|
||||||
"description": "Sanity config and instance hosted on cms.FreeSewing.org",
|
|
||||||
"author": "Joost De Cock <joost@joost.at> (https://github.com/joostdecock)",
|
"author": "Joost De Cock <joost@joost.at> (https://github.com/joostdecock)",
|
||||||
"homepage": "https://freesewing.org/",
|
"homepage": "https://freesewing.org/",
|
||||||
"repository": "github:freesewing/freesewing",
|
"repository": "github:freesewing/freesewing",
|
||||||
|
@ -14,33 +13,33 @@
|
||||||
"type": "individual",
|
"type": "individual",
|
||||||
"url": "https://freesewing.org/patrons/join"
|
"url": "https://freesewing.org/patrons/join"
|
||||||
},
|
},
|
||||||
"main": "package.json",
|
|
||||||
"author": "Joost De Cock <joost@joost.at>",
|
|
||||||
"license": "UNLICENSED",
|
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "sanity start",
|
"start": "sanity start",
|
||||||
"test": "sanity check",
|
"test": "sanity check",
|
||||||
"build": "sanity build -y"
|
"build": "sanity build -y"
|
||||||
},
|
},
|
||||||
"keywords": [
|
"peerDependencies": {},
|
||||||
"sanity"
|
|
||||||
],
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@sanity/base": "^2.35.0",
|
"@sanity/base": "2.35.0",
|
||||||
"@sanity/core": "^2.35.0",
|
"@sanity/core": "2.35.0",
|
||||||
"@sanity/default-layout": "^2.35.0",
|
"@sanity/default-layout": "2.35.0",
|
||||||
"@sanity/default-login": "^2.35.0",
|
"@sanity/default-login": "2.35.0",
|
||||||
"@sanity/desk-tool": "^2.35.0",
|
"@sanity/desk-tool": "2.35.0",
|
||||||
"@sanity/eslint-config-studio": "^2.0.0",
|
"@sanity/eslint-config-studio": "2.0.0",
|
||||||
"@sanity/vision": "^2.35.0",
|
"@sanity/vision": "2.35.0",
|
||||||
"eslint": "^8.6.0",
|
"eslint": "8.6.0",
|
||||||
"prop-types": "^15.7",
|
"prop-types": "15.7",
|
||||||
"react": "^18.2.0",
|
"react": "18.2.0",
|
||||||
"react-dom": "^18.2.0",
|
"react-dom": "18.2.0",
|
||||||
"sanity-plugin-markdown": "^3.0.1",
|
"sanity-plugin-markdown": "3.0.1",
|
||||||
"styled-components": "^5.2.0"
|
"styled-components": "5.2.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"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",
|
"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)",
|
"author": "Joost De Cock <joost@joost.at> (https://github.com/joostdecock)",
|
||||||
"homepage": "https://freesewing.org/",
|
"homepage": "https://freesewing.org/",
|
||||||
"repository": "github:freesewing/freesewing",
|
"repository": "github:freesewing/freesewing",
|
||||||
|
@ -14,16 +13,8 @@
|
||||||
"type": "individual",
|
"type": "individual",
|
||||||
"url": "https://freesewing.org/patrons/join"
|
"url": "https://freesewing.org/patrons/join"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {},
|
||||||
"dev": "next dev -p 3002",
|
"peerDependencies": {},
|
||||||
"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"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@headlessui/react": "^1.6.6",
|
"@headlessui/react": "^1.6.6",
|
||||||
"@resvg/resvg-js": "^2.1.0",
|
"@resvg/resvg-js": "^2.1.0",
|
||||||
|
@ -32,27 +23,25 @@
|
||||||
"d3-dispatch": "^3.0.1",
|
"d3-dispatch": "^3.0.1",
|
||||||
"d3-drag": "^3.0.0",
|
"d3-drag": "^3.0.0",
|
||||||
"d3-selection": "^3.0.0",
|
"d3-selection": "^3.0.0",
|
||||||
"daisyui": "^2.0.6",
|
"daisyui": "2.45.0",
|
||||||
"feed": "^4.2.2",
|
"feed": "^4.2.2",
|
||||||
"file-saver": "^2.0.5",
|
"file-saver": "^2.0.5",
|
||||||
"front-matter": "^4.0.2",
|
"front-matter": "^4.0.2",
|
||||||
"highlight.js": "^11.4.0",
|
"highlight.js": "^11.4.0",
|
||||||
"lodash.clonedeep": "^4.5.0",
|
"lodash.clonedeep": "^4.5.0",
|
||||||
"lodash.orderby": "^4.6.0",
|
"lodash.orderby": "4.6.0",
|
||||||
"lodash.unset": "^4.5.2",
|
"lodash.unset": "4.5.2",
|
||||||
"mdast-util-toc": "^6.1.0",
|
"mdast-util-toc": "6.1.0",
|
||||||
"pdfkit": "^0.13.0",
|
"pdfkit": "0.13.0",
|
||||||
"postcss-for": "^2.1.1",
|
"postcss-for": "2.1.1",
|
||||||
"react": "^18.2.0",
|
"react": "18.2.0",
|
||||||
"react-dom": "^18.2.0",
|
"react-dom": "18.2.0",
|
||||||
"react-markdown": "^8.0.0",
|
"react-markdown": "8.0.4",
|
||||||
"react-sizeme": "^3.0.2",
|
"react-sizeme": "^3.0.2",
|
||||||
"react-timeago": "^7.1.0",
|
"react-timeago": "7.1.0",
|
||||||
"react-zoom-pan-pinch": "^2.1.3",
|
"react-zoom-pan-pinch": "^2.1.3",
|
||||||
"rehype-autolink-headings": "^6.1.1",
|
"rehype-autolink-headings": "6.1.1",
|
||||||
"rehype-highlight": "^6.0.0",
|
"rehype-highlight": "6.0.0",
|
||||||
"remark-extract-frontmatter": "^3.2.0",
|
|
||||||
"remark-frontmatter": "^4.0.1",
|
|
||||||
"remark-smartypants": "^2.0.0",
|
"remark-smartypants": "^2.0.0",
|
||||||
"sharp": "^0.31.1",
|
"sharp": "^0.31.1",
|
||||||
"svg-to-pdfkit": "^0.1.8",
|
"svg-to-pdfkit": "^0.1.8",
|
||||||
|
@ -60,13 +49,10 @@
|
||||||
"unist-util-visit": "^4.1.0",
|
"unist-util-visit": "^4.1.0",
|
||||||
"web-worker": "^1.2.0"
|
"web-worker": "^1.2.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {},
|
||||||
"autoprefixer": "^10.4.0",
|
"engines": {
|
||||||
"eslint": "^8.23.1",
|
"node": ">=16.0.0",
|
||||||
"eslint-plugin-react": "^7.31.8",
|
"npm": ">=8"
|
||||||
"lodash.set": "^4.3.2",
|
},
|
||||||
"postcss": "^8.4.4",
|
"private": true
|
||||||
"tailwindcss": "^3.0.1",
|
|
||||||
"tailwindcss-open-variant": "^1.0.0"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue