├── .gitignore
├── README.md
├── packages
├── core
│ ├── package.json
│ ├── src
│ │ ├── index.tsx
│ │ └── queries.ts
│ └── tsconfig.json
├── example
│ ├── next-env.d.ts
│ ├── next.config.js
│ ├── package.json
│ ├── pages
│ │ ├── [...path].tsx
│ │ ├── _app.tsx
│ │ ├── _document.tsx
│ │ ├── api
│ │ │ └── rss.ts
│ │ └── index.tsx
│ ├── sairin.config.ts
│ └── tsconfig.json
└── sairin-theme-minimal
│ ├── package.json
│ ├── src
│ ├── Footer.tsx
│ ├── Head.tsx
│ ├── Home.tsx
│ ├── OpenGraph.tsx
│ ├── Post.tsx
│ ├── index.ts
│ └── style.css
│ ├── tailwind.config.js
│ └── tsconfig.json
├── pnpm-lock.yaml
└── pnpm-workspace.yaml
/.gitignore:
--------------------------------------------------------------------------------
1 | # File created using '.gitignore Generator' for Visual Studio Code: https://bit.ly/vscode-gig
2 |
3 | # Created by https://www.toptal.com/developers/gitignore/api/visualstudiocode,macos,node
4 | # Edit at https://www.toptal.com/developers/gitignore?templates=visualstudiocode,macos,node
5 |
6 | ### macOS ###
7 | # General
8 | .DS_Store
9 | .AppleDouble
10 | .LSOverride
11 |
12 | # Icon must end with two \r
13 | Icon
14 |
15 |
16 | # Thumbnails
17 | ._*
18 |
19 | # Files that might appear in the root of a volume
20 | .DocumentRevisions-V100
21 | .fseventsd
22 | .Spotlight-V100
23 | .TemporaryItems
24 | .Trashes
25 | .VolumeIcon.icns
26 | .com.apple.timemachine.donotpresent
27 |
28 | # Directories potentially created on remote AFP share
29 | .AppleDB
30 | .AppleDesktop
31 | Network Trash Folder
32 | Temporary Items
33 | .apdisk
34 |
35 | ### Node ###
36 | # Logs
37 | logs
38 | *.log
39 | npm-debug.log*
40 | yarn-debug.log*
41 | yarn-error.log*
42 | lerna-debug.log*
43 | .pnpm-debug.log*
44 |
45 | # Diagnostic reports (https://nodejs.org/api/report.html)
46 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
47 |
48 | # Runtime data
49 | pids
50 | *.pid
51 | *.seed
52 | *.pid.lock
53 |
54 | # Directory for instrumented libs generated by jscoverage/JSCover
55 | lib-cov
56 |
57 | # Coverage directory used by tools like istanbul
58 | coverage
59 | *.lcov
60 |
61 | # nyc test coverage
62 | .nyc_output
63 |
64 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
65 | .grunt
66 |
67 | # Bower dependency directory (https://bower.io/)
68 | bower_components
69 |
70 | # node-waf configuration
71 | .lock-wscript
72 |
73 | # Compiled binary addons (https://nodejs.org/api/addons.html)
74 | build/Release
75 |
76 | # Dependency directories
77 | node_modules/
78 | jspm_packages/
79 |
80 | # Snowpack dependency directory (https://snowpack.dev/)
81 | web_modules/
82 |
83 | # TypeScript cache
84 | *.tsbuildinfo
85 |
86 | # Optional npm cache directory
87 | .npm
88 |
89 | # Optional eslint cache
90 | .eslintcache
91 |
92 | # Optional stylelint cache
93 | .stylelintcache
94 |
95 | # Microbundle cache
96 | .rpt2_cache/
97 | .rts2_cache_cjs/
98 | .rts2_cache_es/
99 | .rts2_cache_umd/
100 |
101 | # Optional REPL history
102 | .node_repl_history
103 |
104 | # Output of 'npm pack'
105 | *.tgz
106 |
107 | # Yarn Integrity file
108 | .yarn-integrity
109 |
110 | # dotenv environment variable files
111 | .env
112 | .env.development.local
113 | .env.test.local
114 | .env.production.local
115 | .env.local
116 |
117 | # parcel-bundler cache (https://parceljs.org/)
118 | .cache
119 | .parcel-cache
120 |
121 | # Next.js build output
122 | .next
123 | out
124 |
125 | # Nuxt.js build / generate output
126 | .nuxt
127 | dist
128 |
129 | # Gatsby files
130 | .cache/
131 | # Comment in the public line in if your project uses Gatsby and not Next.js
132 | # https://nextjs.org/blog/next-9-1#public-directory-support
133 | # public
134 |
135 | # vuepress build output
136 | .vuepress/dist
137 |
138 | # vuepress v2.x temp and cache directory
139 | .temp
140 |
141 | # Docusaurus cache and generated files
142 | .docusaurus
143 |
144 | # Serverless directories
145 | .serverless/
146 |
147 | # FuseBox cache
148 | .fusebox/
149 |
150 | # DynamoDB Local files
151 | .dynamodb/
152 |
153 | # TernJS port file
154 | .tern-port
155 |
156 | # Stores VSCode versions used for testing VSCode extensions
157 | .vscode-test
158 |
159 | # yarn v2
160 | .yarn/cache
161 | .yarn/unplugged
162 | .yarn/build-state.yml
163 | .yarn/install-state.gz
164 | .pnp.*
165 |
166 | ### Node Patch ###
167 | # Serverless Webpack directories
168 | .webpack/
169 |
170 | # Optional stylelint cache
171 |
172 | # SvelteKit build / generate output
173 | .svelte-kit
174 |
175 | ### VisualStudioCode ###
176 | .vscode/*
177 | !.vscode/settings.json
178 | !.vscode/tasks.json
179 | !.vscode/launch.json
180 | !.vscode/extensions.json
181 | !.vscode/*.code-snippets
182 |
183 | # Local History for Visual Studio Code
184 | .history/
185 |
186 | # Built Visual Studio Code Extensions
187 | *.vsix
188 |
189 | ### VisualStudioCode Patch ###
190 | # Ignore all local history of files
191 | .history
192 | .ionide
193 |
194 | # Support for Project snippet scope
195 |
196 | # End of https://www.toptal.com/developers/gitignore/api/visualstudiocode,macos,node
197 |
198 | # Custom rules (everything added below won't be overriden by 'Generate .gitignore File' if you use 'Update' option)
199 |
200 | packages/**/lib
201 |
202 | packages/**/style.css
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | # Sairin
8 |
9 | Generate a blog from GitHub issue.
10 |
11 | ## One Click Deploy
12 |
13 |
14 |
15 | ## Get started
16 |
17 | 1. Clone the [starter template](https://github.com/djyde/sairin-starter)
18 |
19 | ```bash
20 | $ git clone https://github.com/djyde/sairin-starter.git your_blog
21 |
22 | $ cd your_blog && rm .git
23 |
24 | # install dependencies
25 |
26 | $ npm i
27 | ```
28 |
29 | 2. Run the blog
30 |
31 | Before running, you need to set these environment variable by creating a `.env`:
32 |
33 | - `REPO`: The GitHub repo name. Like `user/repo`
34 | - `GITHUB_TOKEN`: The [personal access token](https://github.com/settings/tokens)
35 |
36 | ```bash
37 | # run the blog
38 |
39 | $ npm run dev
40 | ```
41 |
42 | 3. Export the blog as a static site
43 |
44 | ```bash
45 | $ npm run export
46 | ```
47 |
48 | The static site will be ouput to `/out`
49 |
50 | ## Documentation
51 |
52 | ### sairin.config.ts
53 |
54 | - `siteConfig`
55 | - `title` (required) Your blog title
56 | - `author` The author name of your blog. The repo owner login id will be set by default
57 | - `url` The URL of your blog. Start with `http://` or `https://`. This field is required if you want to enable RSS.
58 | - `theme` (required)
59 | - `themeConfig` A config object passed to the theme
60 | - `allowUsers` string[] An array of GitHub user login id that allowed to publish blog post. By default, only issues created by the repo owner will be published on the blog.
61 |
62 | ### Environment Variables
63 |
64 | - `GITHUB_TOKEN` (required) [Personal Access Token](https://github.com/settings/tokens) to call GitHub API
65 | - `REPO` The repository which will be fetch blog posts from (e.g `owner/repo`). By default it will use the repo that created by Vercel.
66 |
67 | ## RSS Support
68 |
69 | Sairin support RSS out of the box. You need to set `url` on the `sairin.config.ts` to enable it:
70 |
71 | ```diff
72 | // sairin.config.ts
73 |
74 | export default {
75 | siteConfig: {
76 | title: 'Sairin',
77 | + url: 'http://your-site.com'
78 | },
79 | } as SairinConfig;
80 | ```
81 |
82 | The RSS feed is on `http://your-site.com/rss.xml`.
83 |
84 | ## FAQ
85 |
86 | ### Need I redeploy the Vercel project after the issue updated?
87 |
88 | No.
89 |
90 | ### How long will take to update the latest content after the issue content update?
91 |
92 | Blog will be updated every 1 minute.
93 |
94 | ## Theme Development
95 |
96 | Sairin supports custom theme. But the API is not stable now. If you still want to try to develope a theme, you could see the source code of the built-in theme [sairin-theme-minimal](https://github.com/djyde/sairin/tree/master/packages/sairin-theme-minimal).
97 |
98 | # Build
99 |
100 | ## Development
101 |
102 | > Sairin use [pnpm](https://pnpm.io) to organize the packages, you need to install pnpm first.
103 |
104 | Install the dependencies:
105 |
106 | ```bash
107 | $ pnpm i
108 | ```
109 |
110 | Create a `.env` file on `example/`:
111 |
112 | ```bash
113 | GITHUB_TOKEN= # need to provide a GitHub access token when developing, or it will reach the API request rate limit.
114 | REPO=djyde/sairin # you can change to any repo for debugging
115 | ```
116 |
117 | Run dev command:
118 |
119 | ```bash
120 | $ pnpm run dev --filter "*" --parallel
121 | ```
122 |
123 | This command will run a blog on localhost.
124 |
--------------------------------------------------------------------------------
/packages/core/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@sairinjs/core",
3 | "version": "1.1.1",
4 | "main": "lib/index.js",
5 | "scripts": {
6 | "dev": "tsc --watch",
7 | "build": "tsc",
8 | "prepublish": "npm run build"
9 | },
10 | "devDependencies": {
11 | "@types/lodash": "^4.14.178",
12 | "typescript": "^4.5.5"
13 | },
14 | "dependencies": {
15 | "@types/react": "^17.0.39",
16 | "axios": "^0.26.0",
17 | "debug": "^4.3.3",
18 | "feed": "^4.2.2",
19 | "front-matter": "^4.0.2",
20 | "lodash": "^4.17.21",
21 | "marked": "^4.0.12",
22 | "prismjs": "^1.27.0"
23 | }
24 | }
--------------------------------------------------------------------------------
/packages/core/src/index.tsx:
--------------------------------------------------------------------------------
1 | import axios from "axios";
2 | import { marked } from "marked";
3 | import fm from "front-matter";
4 | import { omit, pick } from 'lodash'
5 | import { Feed } from 'feed'
6 |
7 | import * as prism from 'prismjs'
8 | import { GetPostQueryProps, GetPostsQuery } from "./queries";
9 |
10 | export type FrontMatter = {
11 | path: string
12 | }
13 |
14 | export type SairinConfig = {
15 | siteConfig: {
16 | title: string,
17 | author?: string,
18 | url?: string,
19 | },
20 | theme: any;
21 | themeConfig: Record;
22 | allowUsers?: string[]
23 | };
24 |
25 | export class Sairin {
26 |
27 | resolvedConfig = (() => {
28 | const ghToken = (process.env.GITHUB_TOKEN as string) || undefined;
29 | const repo =
30 | process.env.REPO ||
31 | (`${process.env.VERCEL_GIT_REPO_OWNER}/${process.env.VERCEL_GIT_REPO_SLUG}` as string);
32 |
33 | const [ghUserName, repoSlug] = repo.split("/")
34 |
35 | return {
36 | ghToken,
37 | repo,
38 | ghUserName,
39 | repoSlug
40 | };
41 | })();
42 |
43 | private PAGE_PATH_PLACEHOLDER = 'path'
44 |
45 | private REVALIDATE = 60
46 |
47 | private allowUsers: string[] = [this.resolvedConfig.ghUserName].concat(this.config?.allowUsers || [])
48 |
49 | private authHeaders = this.resolvedConfig.ghToken
50 | ? {
51 | Authorization: `bearer ${this.resolvedConfig.ghToken}`,
52 | }
53 | : ({} as any);
54 |
55 | private async request(query: {
56 | query: string,
57 | variables: any
58 | }) {
59 | const res = await axios.post('https://api.github.com/graphql', query, {
60 | headers: this.authHeaders
61 | })
62 | return res.data.data as T
63 | }
64 |
65 | constructor(public config: SairinConfig) {
66 | }
67 |
68 | getPostList = async () => {
69 |
70 | const result = await this.request(GetPostsQuery({
71 | owner: this.resolvedConfig.ghUserName,
72 | repo: this.resolvedConfig.repoSlug,
73 | }))
74 |
75 | const posts = result.repository.issues.nodes.filter(post => {
76 | return this.allowUsers.indexOf(post.author.login) !== -1
77 | }).map((post) => {
78 | const { html, attributes } = this.processBody(post.body);
79 | post.comments.nodes = post.comments.nodes.map(comment => {
80 | const { html } = this.processBody(comment.body)
81 | return {
82 | ...comment,
83 | html
84 | }
85 | })
86 |
87 | return {
88 | ...post,
89 | html,
90 | attributes,
91 | };
92 | });
93 |
94 | return posts;
95 | }
96 |
97 | private processBody(body: string) {
98 | const { body: rawBody, attributes } = fm(body);
99 | marked.use({
100 | renderer: {
101 | code(code, lang, escaped) {
102 | code = this.options.highlight(code, lang);
103 | if (!lang) {
104 | return `${code}
`;
105 | }
106 |
107 | var langClass = "language-" + lang;
108 | return `${code}
`;
109 | }
110 | }
111 | })
112 | const parsed = marked.parse(rawBody, {
113 | highlight: (code, lang) => {
114 | if (prism.languages[lang]) {
115 | return prism.highlight(code, prism.languages[lang], lang);
116 | } else {
117 | return code;
118 | }
119 | },
120 | })
121 | return {
122 | html: parsed,
123 | attributes,
124 | };
125 | }
126 |
127 | private async getUser(username: string) {
128 | const res = await axios.get(`https://api.github.com/users/${username}`);
129 | return res.data;
130 | }
131 |
132 | getStaticPaths = async () => {
133 | const posts = await this.getPostList()
134 | return {
135 | paths: posts.map(p => {
136 | // TODO: the fallback path should be issue id
137 | return `/${p.attributes.path || ''}`
138 | }),
139 | fallback: true
140 | }
141 | }
142 |
143 | getHomePageStaticProps = async () => {
144 | const posts = (await this.getPostList()).map(post => {
145 | return omit(post, ['body', 'html'])
146 | })
147 |
148 | return {
149 | props: {
150 | // TODO: reduce post body size
151 | posts,
152 | themeConfig: this.config.themeConfig || {}
153 | },
154 | revalidate: this.REVALIDATE
155 | }
156 | }
157 |
158 | getPostPageStaticProps = async (ctx) => {
159 | const posts = await this.getPostList()
160 | const post = posts.find(p => p.attributes.path === ctx.params[this.PAGE_PATH_PLACEHOLDER].join('/')) || null
161 | return {
162 | props: {
163 | post,
164 | themeConfig: this.config?.themeConfig || {},
165 | },
166 | revalidate: this.REVALIDATE,
167 | };
168 | }
169 |
170 | private generateFeed = async () => {
171 |
172 | const feed = new Feed({
173 | title: this.config.siteConfig.title,
174 | copyright: this.config.siteConfig.title,
175 | id: this.config.siteConfig.title,
176 | author: {
177 | name: this.config.siteConfig.author || this.resolvedConfig.ghUserName,
178 | }
179 | })
180 |
181 | if (!this.config.siteConfig.url) {
182 | return feed.atom1()
183 | }
184 |
185 | const posts = await this.getPostList()
186 |
187 | posts.forEach(post => {
188 | feed.addItem({
189 | date: new Date(post.updatedAt),
190 | link: `${this.config.siteConfig.url}/${post.attributes.path}`,
191 | title: post.title,
192 | content: post.html,
193 | })
194 | })
195 |
196 | return feed.atom1()
197 | }
198 |
199 | rssHandler = async (req, res) => {
200 | res.setHeader("Content-Type", "application/xml");
201 | // https://vercel.com/docs/concepts/edge-network/caching#stale-while-revalidate
202 | res.setHeader('Cache-Control', `s-maxage=1 stale-while-revalidate=${10 * 60}`)
203 | res.send(await this.generateFeed())
204 | }
205 |
206 | DocumentHead = () => <>
207 | {this.config?.theme.Head && }
208 | >
209 | }
210 |
211 |
212 | export type HomePageThemeProps = Awaited>['props']
213 | export type PostPageThemeProps = Awaited>['props']
214 |
--------------------------------------------------------------------------------
/packages/core/src/queries.ts:
--------------------------------------------------------------------------------
1 |
2 | export type GetPostQueryVar = {
3 | owner: string,
4 | repo: string
5 | }
6 | export type GetPostQueryProps = {
7 | repository: {
8 | issues: {
9 | nodes: {
10 | id: string;
11 | title: string;
12 | url: string;
13 | createdAt: string;
14 | updatedAt: string;
15 | body: string;
16 | comments: {
17 | nodes: {
18 | url: string,
19 | createdAt: string,
20 | author: {
21 | login: string;
22 | url: string;
23 | avatarUrl: string;
24 | };
25 | body: string;
26 | }[];
27 | };
28 | reactionGroups: {
29 | content: string;
30 | reactors: {
31 | totalCount: number;
32 | };
33 | }[];
34 | author: {
35 | login: string;
36 | url: string;
37 | avatarUrl;
38 | };
39 | }[];
40 | };
41 | };
42 | };
43 | export const GetPostsQuery = (variables: GetPostQueryVar) => ({
44 | query: `
45 | query GetPosts($owner: String!, $repo: String!) {
46 | repository(owner: $owner, name: $repo) {
47 | issues(first: 100, orderBy: {
48 | field: CREATED_AT, direction: DESC
49 | }, labels: ["published"]) {
50 | nodes {
51 | id,
52 | url,
53 | title,
54 | updatedAt,
55 | createdAt,
56 | body,
57 | comments (first: 100) {
58 | nodes {
59 | createdAt,
60 | url,
61 | author {
62 | login,
63 | url,
64 | avatarUrl,
65 | },
66 | body
67 | }
68 | },
69 | reactionGroups {
70 | content,
71 | reactors {
72 | totalCount,
73 | }
74 | },
75 | author {
76 | login,
77 | url,
78 | avatarUrl
79 | }
80 | }
81 | }
82 | }
83 | }
84 | `,
85 | variables,
86 | });
--------------------------------------------------------------------------------
/packages/core/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | /* Visit https://aka.ms/tsconfig.json to read more about this file */
4 |
5 | "rootDir": "src",
6 | "outDir": "lib",
7 |
8 | /* Projects */
9 | // "incremental": true, /* Enable incremental compilation */
10 | // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */
11 | // "tsBuildInfoFile": "./", /* Specify the folder for .tsbuildinfo incremental compilation files. */
12 | // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects */
13 | // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */
14 | // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */
15 |
16 | /* Language and Environment */
17 | "target": "es2016", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */
18 | // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */
19 | "jsx": "react-jsx",
20 | // "jsx": "preserve", /* Specify what JSX code is generated. */
21 | // "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */
22 | // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */
23 | // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h' */
24 | // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */
25 | // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using `jsx: react-jsx*`.` */
26 | // "reactNamespace": "", /* Specify the object invoked for `createElement`. This only applies when targeting `react` JSX emit. */
27 | // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */
28 | // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */
29 |
30 | /* Modules */
31 | "module": "commonjs", /* Specify what module code is generated. */
32 | // "rootDir": "./", /* Specify the root folder within your source files. */
33 | // "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */
34 | // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */
35 | // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */
36 | // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */
37 | // "typeRoots": [], /* Specify multiple folders that act like `./node_modules/@types`. */
38 | // "types": [], /* Specify type package names to be included without being referenced in a source file. */
39 | // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */
40 | // "resolveJsonModule": true, /* Enable importing .json files */
41 | // "noResolve": true, /* Disallow `import`s, `require`s or ``s from expanding the number of files TypeScript should add to a project. */
42 |
43 | /* JavaScript Support */
44 | // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */
45 | // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */
46 | // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from `node_modules`. Only applicable with `allowJs`. */
47 |
48 | /* Emit */
49 | "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */
50 | // "declarationMap": true, /* Create sourcemaps for d.ts files. */
51 | // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */
52 | // "sourceMap": true, /* Create source map files for emitted JavaScript files. */
53 | // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If `declaration` is true, also designates a file that bundles all .d.ts output. */
54 | // "outDir": "./", /* Specify an output folder for all emitted files. */
55 | // "removeComments": true, /* Disable emitting comments. */
56 | // "noEmit": true, /* Disable emitting files from a compilation. */
57 | // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */
58 | // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types */
59 | // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */
60 | // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */
61 | // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
62 | // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */
63 | // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */
64 | // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */
65 | // "newLine": "crlf", /* Set the newline character for emitting files. */
66 | // "stripInternal": true, /* Disable emitting declarations that have `@internal` in their JSDoc comments. */
67 | // "noEmitHelpers": true, /* Disable generating custom helper functions like `__extends` in compiled output. */
68 | // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */
69 | // "preserveConstEnums": true, /* Disable erasing `const enum` declarations in generated code. */
70 | // "declarationDir": "./", /* Specify the output directory for generated declaration files. */
71 | // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */
72 |
73 | /* Interop Constraints */
74 | // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */
75 | // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */
76 | "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility. */
77 | // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */
78 | "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */
79 |
80 | /* Type Checking */
81 | // "strict": true, /* Enable all strict type-checking options. */
82 | // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied `any` type.. */
83 | "strictNullChecks": true, /* When type checking, take into account `null` and `undefined`. */
84 | // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */
85 | // "strictBindCallApply": true, /* Check that the arguments for `bind`, `call`, and `apply` methods match the original function. */
86 | // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */
87 | // "noImplicitThis": true, /* Enable error reporting when `this` is given the type `any`. */
88 | // "useUnknownInCatchVariables": true, /* Type catch clause variables as 'unknown' instead of 'any'. */
89 | // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */
90 | // "noUnusedLocals": true, /* Enable error reporting when a local variables aren't read. */
91 | // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read */
92 | // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */
93 | // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */
94 | // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */
95 | // "noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */
96 | // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */
97 | // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type */
98 | // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */
99 | // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */
100 |
101 | /* Completeness */
102 | // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */
103 | "skipLibCheck": true /* Skip type checking all .d.ts files. */
104 | }
105 | }
106 |
--------------------------------------------------------------------------------
/packages/example/next-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 |
4 | // NOTE: This file should not be edited
5 | // see https://nextjs.org/docs/basic-features/typescript for more information.
6 |
--------------------------------------------------------------------------------
/packages/example/next.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | async rewrites() {
3 | return [
4 | {
5 | source: "/rss.xml",
6 | destination: "/api/rss",
7 | },
8 | ];
9 | },
10 | };
11 |
--------------------------------------------------------------------------------
/packages/example/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@sairinjs/example",
3 | "version": "0.1.0",
4 | "scripts": {
5 | "dev": "next dev",
6 | "build": "next build",
7 | "export": "npm run build && next export"
8 | },
9 | "dependencies": {
10 | "@sairinjs/core": "workspace:*",
11 | "@sairinjs/sairin-theme-minimal": "workspace:*",
12 | "next": "^12.1.0",
13 | "react": "^17.0.2",
14 | "react-dom": "^17.0.2"
15 | },
16 | "devDependencies": {
17 | "@types/node": "^17.0.19",
18 | "@types/react": "^17.0.39",
19 | "typescript": "^4.5.5"
20 | }
21 | }
--------------------------------------------------------------------------------
/packages/example/pages/[...path].tsx:
--------------------------------------------------------------------------------
1 | import { sairin } from "./_app"
2 |
3 | export default sairin.config.theme.Post
4 | export const getStaticProps = sairin.getPostPageStaticProps
5 | export const getStaticPaths = sairin.getStaticPaths
6 |
--------------------------------------------------------------------------------
/packages/example/pages/_app.tsx:
--------------------------------------------------------------------------------
1 | import { Sairin } from '@sairinjs/core'
2 |
3 | import sairinConfig from '../sairin.config'
4 |
5 | // import theme style
6 | import "@sairinjs/sairin-theme-minimal/style.css";
7 |
8 | export const sairin = new Sairin(sairinConfig)
9 |
10 | function MyApp({ Component, pageProps }) {
11 | return
12 | }
13 |
14 | export default MyApp
--------------------------------------------------------------------------------
/packages/example/pages/_document.tsx:
--------------------------------------------------------------------------------
1 | import { Html, Head, Main, NextScript } from 'next/document'
2 | import { sairin } from './_app'
3 |
4 | export default function Document() {
5 | return (
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | )
16 | }
--------------------------------------------------------------------------------
/packages/example/pages/api/rss.ts:
--------------------------------------------------------------------------------
1 | import { sairin } from "../_app";
2 |
3 | export default sairin.rssHandler
--------------------------------------------------------------------------------
/packages/example/pages/index.tsx:
--------------------------------------------------------------------------------
1 | import { sairin } from "./_app"
2 |
3 | export default sairin.config.theme.Home
4 |
5 | export const getStaticProps = sairin.getHomePageStaticProps
--------------------------------------------------------------------------------
/packages/example/sairin.config.ts:
--------------------------------------------------------------------------------
1 | // theme
2 | import { SairinConfig } from "@sairinjs/core";
3 | import BlogTheme from "@sairinjs/sairin-theme-minimal";
4 |
5 | export default {
6 | siteConfig: {
7 | title: "Sairin",
8 | url: "https://blog.sairinjs.com",
9 | },
10 | theme: BlogTheme,
11 | themeConfig: {
12 | title: `Sairin`,
13 | umami: {
14 | id: "75f22837-2714-4cec-b17f-5813a7950fcc",
15 | src: "https://a.taonan.lu/umami.js",
16 | },
17 | links: [
18 | {
19 | title: "GitHub",
20 | url: "https://github.com/djyde/sairin",
21 | },
22 | {
23 | title: "Twitter",
24 | url: "https://twitter.com/randyloop",
25 | },
26 | ],
27 | },
28 | } as SairinConfig;
29 |
--------------------------------------------------------------------------------
/packages/example/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "es5",
4 | "lib": [
5 | "dom",
6 | "dom.iterable",
7 | "esnext"
8 | ],
9 | "allowJs": true,
10 | "skipLibCheck": true,
11 | "strict": false,
12 | "forceConsistentCasingInFileNames": true,
13 | "noEmit": true,
14 | "incremental": true,
15 | "esModuleInterop": true,
16 | "module": "esnext",
17 | "moduleResolution": "node",
18 | "resolveJsonModule": true,
19 | "isolatedModules": true,
20 | "jsx": "preserve"
21 | },
22 | "include": [
23 | "next-env.d.ts",
24 | "**/*.ts",
25 | "**/*.tsx"
26 | ],
27 | "exclude": [
28 | "node_modules"
29 | ]
30 | }
31 |
--------------------------------------------------------------------------------
/packages/sairin-theme-minimal/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@sairinjs/sairin-theme-minimal",
3 | "version": "1.1.1",
4 | "main": "lib/index.js",
5 | "scripts": {
6 | "dev": "concurrently npm:dev-theme npm:dev-style",
7 | "dev-theme": "tsc --watch",
8 | "dev-style": "tailwind -i ./src/style.css -o ./style.css --watch",
9 | "build-theme": "tsc",
10 | "build-style": "tailwind -i ./src/style.css -o ./style.css",
11 | "build": "concurrently npm:build-theme npm:build-style",
12 | "prepublish": "npm run build"
13 | },
14 | "devDependencies": {
15 | "@sairinjs/core": "workspace:*",
16 | "autoprefixer": "^10.4.2",
17 | "concurrently": "^7.0.0",
18 | "next": "^12.1.0",
19 | "postcss": "^8.4.6",
20 | "tailwindcss": "^3.0.23",
21 | "typescript": "^4.5.5"
22 | },
23 | "peerDependencies": {
24 | "next": "^12.1.0"
25 | },
26 | "dependencies": {
27 | "dayjs": "^1.10.7"
28 | }
29 | }
--------------------------------------------------------------------------------
/packages/sairin-theme-minimal/src/Footer.tsx:
--------------------------------------------------------------------------------
1 | export function Footer () {
2 | return (
3 |
6 | )
7 | }
--------------------------------------------------------------------------------
/packages/sairin-theme-minimal/src/Head.tsx:
--------------------------------------------------------------------------------
1 | export default function Head (props: {
2 | sairinConfig: any
3 | }) {
4 | return (
5 | <>
6 |
7 |
8 |
9 |
10 | {props.sairinConfig.themeConfig.umami && }
11 |
12 | >
13 | )
14 | }
--------------------------------------------------------------------------------
/packages/sairin-theme-minimal/src/Home.tsx:
--------------------------------------------------------------------------------
1 | import Head from "next/head"
2 | import Link from "next/link"
3 | import dayjs from 'dayjs'
4 | import { Footer } from "./Footer"
5 |
6 | import { HomePageThemeProps } from '@sairinjs/core'
7 |
8 | export default function Home(props: HomePageThemeProps) {
9 | return (
10 | <>
11 |
12 | {props.themeConfig.title}
13 |
14 |
15 |
16 | {props.themeConfig.title}
17 |
18 |
19 |
20 |
21 |
22 | {props.themeConfig.links?.map((link, index) => {
23 | return (
24 | <>
25 |
26 | {link.title}
27 |
28 | {index !== props.themeConfig.links.length - 1 && '•'}
29 | >
30 | )
31 | })}
32 |
33 |
34 |
35 |
36 |
37 | {props.posts.map(post => {
38 | return (
39 |
50 | )
51 | })}
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 | >
61 | )
62 | }
--------------------------------------------------------------------------------
/packages/sairin-theme-minimal/src/OpenGraph.tsx:
--------------------------------------------------------------------------------
1 | import { PostPageThemeProps } from "@sairinjs/core"
2 |
3 | export function OpenGraph(props: {
4 | post: PostPageThemeProps['post']
5 | }) {
6 |
7 | if (!props.post) {
8 | return null
9 | }
10 |
11 | const ogImage = `
12 | https://og-image.vercel.app/${props.post.title}.png?theme=light&md=1&fontSize=100px&images=https%3A%2F%2Fassets.vercel.com%2Fimage%2Fupload%2Ffront%2Fassets%2Fdesign%2Fvercel-triangle-black.svg
13 | `
14 | return (
15 | <>
16 |
17 | {/* */}
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 | >
30 | )
31 | }
--------------------------------------------------------------------------------
/packages/sairin-theme-minimal/src/Post.tsx:
--------------------------------------------------------------------------------
1 | import { PostPageThemeProps } from '@sairinjs/core'
2 | import dayjs from 'dayjs'
3 | import Head from 'next/head'
4 | import Link from 'next/link'
5 | import { Footer } from './Footer'
6 | import { OpenGraph } from './OpenGraph'
7 |
8 | export default function Post(props: PostPageThemeProps) {
9 |
10 | if (!props.post) {
11 | return null
12 | }
13 |
14 | return (
15 |
16 |
17 |
18 |
{props.post.title} - {props.themeConfig.title}
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 | {props.themeConfig.title}
27 |
28 |
29 |
30 |
31 |
32 | {props.post.title}
33 |
34 |
35 |
43 |
44 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 | {/*
🗣 Comments
*/}
79 |
80 |
83 |
84 | {props.post.comments.nodes.map(comment => {
85 | return (
86 |
87 |
88 |

89 |
90 |
{comment.author.login}
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
Reply
99 |
•
100 |
{dayjs(comment.createdAt).format('YYYY-MM-DD')}
101 |
102 |
103 |
104 | )
105 | })}
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 | )
118 | }
--------------------------------------------------------------------------------
/packages/sairin-theme-minimal/src/index.ts:
--------------------------------------------------------------------------------
1 | import Home from './Home'
2 | import Post from './Post'
3 | import Head from './Head'
4 |
5 | export default {
6 | Home,
7 | Post,
8 | Head
9 | }
--------------------------------------------------------------------------------
/packages/sairin-theme-minimal/src/style.css:
--------------------------------------------------------------------------------
1 | @tailwind base;
2 | @tailwind components;
3 | @tailwind utilities;
4 |
5 | /* prism begin*/
6 |
7 |
8 | code[class*="language-"],
9 | pre[class*="language-"] {
10 | font-family: Consolas, Menlo, Monaco, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", "Courier New", Courier, monospace;
11 | font-size: 14px;
12 | line-height: 1.375;
13 | direction: ltr;
14 | text-align: left;
15 | white-space: pre;
16 | word-spacing: normal;
17 | word-break: normal;
18 |
19 | -moz-tab-size: 4;
20 | -o-tab-size: 4;
21 | tab-size: 4;
22 |
23 | -webkit-hyphens: none;
24 | -moz-hyphens: none;
25 | -ms-hyphens: none;
26 | hyphens: none;
27 | background: #faf8f5;
28 | color: #728fcb;
29 | }
30 |
31 | pre > code[class*="language-"] {
32 | font-size: 1em;
33 | }
34 | /*
35 | pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection,
36 | code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection {
37 | text-shadow: none;
38 | background: #faf8f5;
39 | }
40 |
41 | pre[class*="language-"]::selection, pre[class*="language-"] ::selection,
42 | code[class*="language-"]::selection, code[class*="language-"] ::selection {
43 | text-shadow: none;
44 | background: #faf8f5;
45 | } */
46 |
47 | /* Code blocks */
48 | pre[class*="language-"] {
49 | padding: 1em;
50 | margin: .5em 0;
51 | overflow: auto;
52 | }
53 |
54 | /* Inline code */
55 | :not(pre) > code[class*="language-"] {
56 | padding: .1em;
57 | border-radius: .3em;
58 | }
59 |
60 | .token.comment,
61 | .token.prolog,
62 | .token.doctype,
63 | .token.cdata {
64 | color: #b6ad9a;
65 | }
66 |
67 | .token.punctuation {
68 | color: #b6ad9a;
69 | }
70 |
71 | .token.namespace {
72 | opacity: .7;
73 | }
74 |
75 | .token.tag,
76 | .token.operator,
77 | .token.number {
78 | color: #063289;
79 | }
80 |
81 | .token.property,
82 | .token.function {
83 | color: #b29762;
84 | }
85 |
86 | .token.tag-id,
87 | .token.selector,
88 | .token.atrule-id {
89 | color: #2d2006;
90 | }
91 |
92 | code.language-javascript,
93 | .token.attr-name {
94 | color: #896724;
95 | }
96 |
97 | code.language-css,
98 | code.language-scss,
99 | .token.boolean,
100 | .token.string,
101 | .token.entity,
102 | .token.url,
103 | .language-css .token.string,
104 | .language-scss .token.string,
105 | .style .token.string,
106 | .token.attr-value,
107 | .token.keyword,
108 | .token.control,
109 | .token.directive,
110 | .token.unit,
111 | .token.statement,
112 | .token.regex,
113 | .token.atrule {
114 | color: #728fcb;
115 | }
116 |
117 | .token.placeholder,
118 | .token.variable {
119 | color: #93abdc;
120 | }
121 |
122 | .token.deleted {
123 | text-decoration: line-through;
124 | }
125 |
126 | .token.inserted {
127 | border-bottom: 1px dotted #2d2006;
128 | text-decoration: none;
129 | }
130 |
131 | .token.italic {
132 | font-style: italic;
133 | }
134 |
135 | .token.important,
136 | .token.bold {
137 | font-weight: bold;
138 | }
139 |
140 | .token.important {
141 | color: #896724;
142 | }
143 |
144 | .token.entity {
145 | cursor: help;
146 | }
147 |
148 | pre > code.highlight {
149 | outline: .4em solid #896724;
150 | outline-offset: .4em;
151 | }
152 |
153 | /* overrides color-values for the Line Numbers plugin
154 | * http://prismjs.com/plugins/line-numbers/
155 | */
156 | .line-numbers.line-numbers .line-numbers-rows {
157 | border-right-color: #ece8de;
158 | }
159 |
160 | .line-numbers .line-numbers-rows > span:before {
161 | color: #cdc4b1;
162 | }
163 |
164 | /* overrides color-values for the Line Highlight plugin
165 | * http://prismjs.com/plugins/line-highlight/
166 | */
167 | .line-highlight.line-highlight {
168 | background: rgba(45, 32, 6, 0.2);
169 | background: -webkit-linear-gradient(left, rgba(45, 32, 6, 0.2) 70%, rgba(45, 32, 6, 0));
170 | background: linear-gradient(to right, rgba(45, 32, 6, 0.2) 70%, rgba(45, 32, 6, 0));
171 | }
172 | /* prism end */
173 |
174 | body {
175 | font-family: 'IBM Plex Serif', serif;
176 | }
177 |
178 | .post-body p, pre {
179 | @apply mb-4 leading-loose;
180 | }
181 |
182 | .post-body p > code {
183 | @apply bg-gray-100 text-gray-900 text-sm p-1 rounded;
184 | }
185 |
186 | .post-body a {
187 | @apply underline;
188 | }
189 |
190 | .post-body h1, h2, h3, h4, h5, h6 {
191 | @apply mt-12 mb-6 font-medium;
192 | }
193 |
194 | .post-body h2 {
195 | @apply text-3xl;
196 | }
197 |
198 | .post-body h3 {
199 | @apply text-2xl;
200 | }
201 |
202 | .post-body h4 {
203 | @apply text-xl;
204 | }
205 |
206 | .post-body a img {
207 | display: inline-block;
208 | }
209 |
210 | .post-body img {
211 | @apply max-w-full inline-block my-8 ;
212 | }
213 |
214 | .post-body blockquote {
215 | @apply border-l-8 border-gray-300 pl-4 my-12;
216 | }
217 |
--------------------------------------------------------------------------------
/packages/sairin-theme-minimal/tailwind.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | content: ["./src/**/*.{html,js,tsx,css}"],
3 | theme: {
4 | extend: {},
5 | },
6 | plugins: [],
7 | };
--------------------------------------------------------------------------------
/packages/sairin-theme-minimal/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | /* Visit https://aka.ms/tsconfig.json to read more about this file */
4 |
5 | "rootDir": "src",
6 | "outDir": "lib",
7 |
8 | /* Projects */
9 | // "incremental": true, /* Enable incremental compilation */
10 | // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */
11 | // "tsBuildInfoFile": "./", /* Specify the folder for .tsbuildinfo incremental compilation files. */
12 | // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects */
13 | // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */
14 | // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */
15 |
16 | /* Language and Environment */
17 | "target": "es2016", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */
18 | // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */
19 | "jsx": "react-jsx", /* Specify what JSX code is generated. */
20 | // "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */
21 | // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */
22 | // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h' */
23 | // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */
24 | // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using `jsx: react-jsx*`.` */
25 | // "reactNamespace": "", /* Specify the object invoked for `createElement`. This only applies when targeting `react` JSX emit. */
26 | // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */
27 | // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */
28 |
29 | /* Modules */
30 | "module": "commonjs", /* Specify what module code is generated. */
31 | // "rootDir": "./", /* Specify the root folder within your source files. */
32 | // "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */
33 | // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */
34 | // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */
35 | // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */
36 | // "typeRoots": [], /* Specify multiple folders that act like `./node_modules/@types`. */
37 | // "types": [], /* Specify type package names to be included without being referenced in a source file. */
38 | // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */
39 | // "resolveJsonModule": true, /* Enable importing .json files */
40 | // "noResolve": true, /* Disallow `import`s, `require`s or ``s from expanding the number of files TypeScript should add to a project. */
41 |
42 | /* JavaScript Support */
43 | // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */
44 | // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */
45 | // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from `node_modules`. Only applicable with `allowJs`. */
46 |
47 | /* Emit */
48 | "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */
49 | // "declarationMap": true, /* Create sourcemaps for d.ts files. */
50 | // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */
51 | // "sourceMap": true, /* Create source map files for emitted JavaScript files. */
52 | // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If `declaration` is true, also designates a file that bundles all .d.ts output. */
53 | // "outDir": "./", /* Specify an output folder for all emitted files. */
54 | // "removeComments": true, /* Disable emitting comments. */
55 | // "noEmit": true, /* Disable emitting files from a compilation. */
56 | // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */
57 | // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types */
58 | // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */
59 | // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */
60 | // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
61 | // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */
62 | // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */
63 | // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */
64 | // "newLine": "crlf", /* Set the newline character for emitting files. */
65 | // "stripInternal": true, /* Disable emitting declarations that have `@internal` in their JSDoc comments. */
66 | // "noEmitHelpers": true, /* Disable generating custom helper functions like `__extends` in compiled output. */
67 | // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */
68 | // "preserveConstEnums": true, /* Disable erasing `const enum` declarations in generated code. */
69 | // "declarationDir": "./", /* Specify the output directory for generated declaration files. */
70 | // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */
71 |
72 | /* Interop Constraints */
73 | // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */
74 | // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */
75 | "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility. */
76 | // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */
77 | "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */
78 |
79 | /* Type Checking */
80 | // "strict": true, /* Enable all strict type-checking options. */
81 | // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied `any` type.. */
82 | "strictNullChecks": true, /* When type checking, take into account `null` and `undefined`. */
83 | // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */
84 | // "strictBindCallApply": true, /* Check that the arguments for `bind`, `call`, and `apply` methods match the original function. */
85 | // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */
86 | // "noImplicitThis": true, /* Enable error reporting when `this` is given the type `any`. */
87 | // "useUnknownInCatchVariables": true, /* Type catch clause variables as 'unknown' instead of 'any'. */
88 | // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */
89 | // "noUnusedLocals": true, /* Enable error reporting when a local variables aren't read. */
90 | // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read */
91 | // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */
92 | // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */
93 | // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */
94 | // "noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */
95 | // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */
96 | // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type */
97 | // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */
98 | // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */
99 |
100 | /* Completeness */
101 | // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */
102 | "skipLibCheck": true /* Skip type checking all .d.ts files. */
103 | }
104 | }
105 |
--------------------------------------------------------------------------------
/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: 5.3
2 |
3 | importers:
4 |
5 | packages/core:
6 | specifiers:
7 | '@types/lodash': ^4.14.178
8 | '@types/react': ^17.0.39
9 | axios: ^0.26.0
10 | debug: ^4.3.3
11 | feed: ^4.2.2
12 | front-matter: ^4.0.2
13 | lodash: ^4.17.21
14 | marked: ^4.0.12
15 | prismjs: ^1.27.0
16 | typescript: ^4.5.5
17 | dependencies:
18 | '@types/react': 17.0.39
19 | axios: 0.26.0_debug@4.3.3
20 | debug: 4.3.3
21 | feed: 4.2.2
22 | front-matter: 4.0.2
23 | lodash: 4.17.21
24 | marked: 4.0.12
25 | prismjs: 1.27.0
26 | devDependencies:
27 | '@types/lodash': 4.14.178
28 | typescript: 4.5.5
29 |
30 | packages/example:
31 | specifiers:
32 | '@sairinjs/core': workspace:*
33 | '@sairinjs/sairin-theme-minimal': workspace:*
34 | '@types/node': ^17.0.19
35 | '@types/react': ^17.0.39
36 | next: ^12.1.0
37 | react: ^17.0.2
38 | react-dom: ^17.0.2
39 | typescript: ^4.5.5
40 | dependencies:
41 | '@sairinjs/core': link:../core
42 | '@sairinjs/sairin-theme-minimal': link:../sairin-theme-minimal
43 | next: 12.1.0_react-dom@17.0.2+react@17.0.2
44 | react: 17.0.2
45 | react-dom: 17.0.2_react@17.0.2
46 | devDependencies:
47 | '@types/node': 17.0.19
48 | '@types/react': 17.0.39
49 | typescript: 4.5.5
50 |
51 | packages/sairin-theme-minimal:
52 | specifiers:
53 | '@sairinjs/core': workspace:*
54 | autoprefixer: ^10.4.2
55 | concurrently: ^7.0.0
56 | dayjs: ^1.10.7
57 | next: ^12.1.0
58 | postcss: ^8.4.6
59 | tailwindcss: ^3.0.23
60 | typescript: ^4.5.5
61 | dependencies:
62 | dayjs: 1.10.7
63 | devDependencies:
64 | '@sairinjs/core': link:../core
65 | autoprefixer: 10.4.2_postcss@8.4.6
66 | concurrently: 7.0.0
67 | next: 12.1.0
68 | postcss: 8.4.6
69 | tailwindcss: 3.0.23_autoprefixer@10.4.2
70 | typescript: 4.5.5
71 |
72 | packages:
73 |
74 | /@babel/code-frame/7.16.7:
75 | resolution: {integrity: sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==}
76 | engines: {node: '>=6.9.0'}
77 | dependencies:
78 | '@babel/highlight': 7.16.10
79 | dev: true
80 |
81 | /@babel/helper-validator-identifier/7.16.7:
82 | resolution: {integrity: sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==}
83 | engines: {node: '>=6.9.0'}
84 | dev: true
85 |
86 | /@babel/highlight/7.16.10:
87 | resolution: {integrity: sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==}
88 | engines: {node: '>=6.9.0'}
89 | dependencies:
90 | '@babel/helper-validator-identifier': 7.16.7
91 | chalk: 2.4.2
92 | js-tokens: 4.0.0
93 | dev: true
94 |
95 | /@next/env/12.1.0:
96 | resolution: {integrity: sha512-nrIgY6t17FQ9xxwH3jj0a6EOiQ/WDHUos35Hghtr+SWN/ntHIQ7UpuvSi0vaLzZVHQWaDupKI+liO5vANcDeTQ==}
97 |
98 | /@next/swc-android-arm64/12.1.0:
99 | resolution: {integrity: sha512-/280MLdZe0W03stA69iL+v6I+J1ascrQ6FrXBlXGCsGzrfMaGr7fskMa0T5AhQIVQD4nA/46QQWxG//DYuFBcA==}
100 | engines: {node: '>= 10'}
101 | cpu: [arm64]
102 | os: [android]
103 | requiresBuild: true
104 | optional: true
105 |
106 | /@next/swc-darwin-arm64/12.1.0:
107 | resolution: {integrity: sha512-R8vcXE2/iONJ1Unf5Ptqjk6LRW3bggH+8drNkkzH4FLEQkHtELhvcmJwkXcuipyQCsIakldAXhRbZmm3YN1vXg==}
108 | engines: {node: '>= 10'}
109 | cpu: [arm64]
110 | os: [darwin]
111 | requiresBuild: true
112 | optional: true
113 |
114 | /@next/swc-darwin-x64/12.1.0:
115 | resolution: {integrity: sha512-ieAz0/J0PhmbZBB8+EA/JGdhRHBogF8BWaeqR7hwveb6SYEIJaDNQy0I+ZN8gF8hLj63bEDxJAs/cEhdnTq+ug==}
116 | engines: {node: '>= 10'}
117 | cpu: [x64]
118 | os: [darwin]
119 | requiresBuild: true
120 | optional: true
121 |
122 | /@next/swc-linux-arm-gnueabihf/12.1.0:
123 | resolution: {integrity: sha512-njUd9hpl6o6A5d08dC0cKAgXKCzm5fFtgGe6i0eko8IAdtAPbtHxtpre3VeSxdZvuGFh+hb0REySQP9T1ttkog==}
124 | engines: {node: '>= 10'}
125 | cpu: [arm]
126 | os: [linux]
127 | requiresBuild: true
128 | optional: true
129 |
130 | /@next/swc-linux-arm64-gnu/12.1.0:
131 | resolution: {integrity: sha512-OqangJLkRxVxMhDtcb7Qn1xjzFA3s50EIxY7mljbSCLybU+sByPaWAHY4px97ieOlr2y4S0xdPKkQ3BCAwyo6Q==}
132 | engines: {node: '>= 10'}
133 | cpu: [arm64]
134 | os: [linux]
135 | requiresBuild: true
136 | optional: true
137 |
138 | /@next/swc-linux-arm64-musl/12.1.0:
139 | resolution: {integrity: sha512-hB8cLSt4GdmOpcwRe2UzI5UWn6HHO/vLkr5OTuNvCJ5xGDwpPXelVkYW/0+C3g5axbDW2Tym4S+MQCkkH9QfWA==}
140 | engines: {node: '>= 10'}
141 | cpu: [arm64]
142 | os: [linux]
143 | requiresBuild: true
144 | optional: true
145 |
146 | /@next/swc-linux-x64-gnu/12.1.0:
147 | resolution: {integrity: sha512-OKO4R/digvrVuweSw/uBM4nSdyzsBV5EwkUeeG4KVpkIZEe64ZwRpnFB65bC6hGwxIBnTv5NMSnJ+0K/WmG78A==}
148 | engines: {node: '>= 10'}
149 | cpu: [x64]
150 | os: [linux]
151 | requiresBuild: true
152 | optional: true
153 |
154 | /@next/swc-linux-x64-musl/12.1.0:
155 | resolution: {integrity: sha512-JohhgAHZvOD3rQY7tlp7NlmvtvYHBYgY0x5ZCecUT6eCCcl9lv6iV3nfu82ErkxNk1H893fqH0FUpznZ/H3pSw==}
156 | engines: {node: '>= 10'}
157 | cpu: [x64]
158 | os: [linux]
159 | requiresBuild: true
160 | optional: true
161 |
162 | /@next/swc-win32-arm64-msvc/12.1.0:
163 | resolution: {integrity: sha512-T/3gIE6QEfKIJ4dmJk75v9hhNiYZhQYAoYm4iVo1TgcsuaKLFa+zMPh4056AHiG6n9tn2UQ1CFE8EoybEsqsSw==}
164 | engines: {node: '>= 10'}
165 | cpu: [arm64]
166 | os: [win32]
167 | requiresBuild: true
168 | optional: true
169 |
170 | /@next/swc-win32-ia32-msvc/12.1.0:
171 | resolution: {integrity: sha512-iwnKgHJdqhIW19H9PRPM9j55V6RdcOo6rX+5imx832BCWzkDbyomWnlzBfr6ByUYfhohb8QuH4hSGEikpPqI0Q==}
172 | engines: {node: '>= 10'}
173 | cpu: [ia32]
174 | os: [win32]
175 | requiresBuild: true
176 | optional: true
177 |
178 | /@next/swc-win32-x64-msvc/12.1.0:
179 | resolution: {integrity: sha512-aBvcbMwuanDH4EMrL2TthNJy+4nP59Bimn8egqv6GHMVj0a44cU6Au4PjOhLNqEh9l+IpRGBqMTzec94UdC5xg==}
180 | engines: {node: '>= 10'}
181 | cpu: [x64]
182 | os: [win32]
183 | requiresBuild: true
184 | optional: true
185 |
186 | /@nodelib/fs.scandir/2.1.5:
187 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
188 | engines: {node: '>= 8'}
189 | dependencies:
190 | '@nodelib/fs.stat': 2.0.5
191 | run-parallel: 1.2.0
192 | dev: true
193 |
194 | /@nodelib/fs.stat/2.0.5:
195 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
196 | engines: {node: '>= 8'}
197 | dev: true
198 |
199 | /@nodelib/fs.walk/1.2.8:
200 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
201 | engines: {node: '>= 8'}
202 | dependencies:
203 | '@nodelib/fs.scandir': 2.1.5
204 | fastq: 1.13.0
205 | dev: true
206 |
207 | /@types/lodash/4.14.178:
208 | resolution: {integrity: sha512-0d5Wd09ItQWH1qFbEyQ7oTQ3GZrMfth5JkbN3EvTKLXcHLRDSXeLnlvlOn0wvxVIwK5o2M8JzP/OWz7T3NRsbw==}
209 | dev: true
210 |
211 | /@types/node/17.0.19:
212 | resolution: {integrity: sha512-PfeQhvcMR4cPFVuYfBN4ifG7p9c+Dlh3yUZR6k+5yQK7wX3gDgVxBly4/WkBRs9x4dmcy1TVl08SY67wwtEvmA==}
213 | dev: true
214 |
215 | /@types/parse-json/4.0.0:
216 | resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==}
217 | dev: true
218 |
219 | /@types/prop-types/15.7.4:
220 | resolution: {integrity: sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==}
221 |
222 | /@types/react/17.0.39:
223 | resolution: {integrity: sha512-UVavlfAxDd/AgAacMa60Azl7ygyQNRwC/DsHZmKgNvPmRR5p70AJ5Q9EAmL2NWOJmeV+vVUI4IAP7GZrN8h8Ug==}
224 | dependencies:
225 | '@types/prop-types': 15.7.4
226 | '@types/scheduler': 0.16.2
227 | csstype: 3.0.10
228 |
229 | /@types/scheduler/0.16.2:
230 | resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==}
231 |
232 | /acorn-node/1.8.2:
233 | resolution: {integrity: sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==}
234 | dependencies:
235 | acorn: 7.4.1
236 | acorn-walk: 7.2.0
237 | xtend: 4.0.2
238 | dev: true
239 |
240 | /acorn-walk/7.2.0:
241 | resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==}
242 | engines: {node: '>=0.4.0'}
243 | dev: true
244 |
245 | /acorn/7.4.1:
246 | resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==}
247 | engines: {node: '>=0.4.0'}
248 | hasBin: true
249 | dev: true
250 |
251 | /ansi-regex/5.0.1:
252 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
253 | engines: {node: '>=8'}
254 | dev: true
255 |
256 | /ansi-styles/3.2.1:
257 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
258 | engines: {node: '>=4'}
259 | dependencies:
260 | color-convert: 1.9.3
261 | dev: true
262 |
263 | /ansi-styles/4.3.0:
264 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
265 | engines: {node: '>=8'}
266 | dependencies:
267 | color-convert: 2.0.1
268 | dev: true
269 |
270 | /anymatch/3.1.2:
271 | resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==}
272 | engines: {node: '>= 8'}
273 | dependencies:
274 | normalize-path: 3.0.0
275 | picomatch: 2.3.1
276 | dev: true
277 |
278 | /arg/5.0.1:
279 | resolution: {integrity: sha512-e0hDa9H2Z9AwFkk2qDlwhoMYE4eToKarchkQHovNdLTCYMHZHeRjI71crOh+dio4K6u1IcwubQqo79Ga4CyAQA==}
280 | dev: true
281 |
282 | /argparse/1.0.10:
283 | resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
284 | dependencies:
285 | sprintf-js: 1.0.3
286 | dev: false
287 |
288 | /autoprefixer/10.4.2_postcss@8.4.6:
289 | resolution: {integrity: sha512-9fOPpHKuDW1w/0EKfRmVnxTDt8166MAnLI3mgZ1JCnhNtYWxcJ6Ud5CO/AVOZi/AvFa8DY9RTy3h3+tFBlrrdQ==}
290 | engines: {node: ^10 || ^12 || >=14}
291 | hasBin: true
292 | peerDependencies:
293 | postcss: ^8.1.0
294 | dependencies:
295 | browserslist: 4.19.3
296 | caniuse-lite: 1.0.30001312
297 | fraction.js: 4.1.3
298 | normalize-range: 0.1.2
299 | picocolors: 1.0.0
300 | postcss: 8.4.6
301 | postcss-value-parser: 4.2.0
302 | dev: true
303 |
304 | /axios/0.26.0_debug@4.3.3:
305 | resolution: {integrity: sha512-lKoGLMYtHvFrPVt3r+RBMp9nh34N0M8zEfCWqdWZx6phynIEhQqAdydpyBAAG211zlhX9Rgu08cOamy6XjE5Og==}
306 | dependencies:
307 | follow-redirects: 1.14.9_debug@4.3.3
308 | transitivePeerDependencies:
309 | - debug
310 | dev: false
311 |
312 | /binary-extensions/2.2.0:
313 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
314 | engines: {node: '>=8'}
315 | dev: true
316 |
317 | /braces/3.0.2:
318 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
319 | engines: {node: '>=8'}
320 | dependencies:
321 | fill-range: 7.0.1
322 | dev: true
323 |
324 | /browserslist/4.19.3:
325 | resolution: {integrity: sha512-XK3X4xtKJ+Txj8G5c30B4gsm71s69lqXlkYui4s6EkKxuv49qjYlY6oVd+IFJ73d4YymtM3+djvvt/R/iJwwDg==}
326 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
327 | hasBin: true
328 | dependencies:
329 | caniuse-lite: 1.0.30001312
330 | electron-to-chromium: 1.4.71
331 | escalade: 3.1.1
332 | node-releases: 2.0.2
333 | picocolors: 1.0.0
334 | dev: true
335 |
336 | /callsites/3.1.0:
337 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
338 | engines: {node: '>=6'}
339 | dev: true
340 |
341 | /camelcase-css/2.0.1:
342 | resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==}
343 | engines: {node: '>= 6'}
344 | dev: true
345 |
346 | /caniuse-lite/1.0.30001312:
347 | resolution: {integrity: sha512-Wiz1Psk2MEK0pX3rUzWaunLTZzqS2JYZFzNKqAiJGiuxIjRPLgV6+VDPOg6lQOUxmDwhTlh198JsTTi8Hzw6aQ==}
348 |
349 | /chalk/2.4.2:
350 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
351 | engines: {node: '>=4'}
352 | dependencies:
353 | ansi-styles: 3.2.1
354 | escape-string-regexp: 1.0.5
355 | supports-color: 5.5.0
356 | dev: true
357 |
358 | /chalk/4.1.2:
359 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
360 | engines: {node: '>=10'}
361 | dependencies:
362 | ansi-styles: 4.3.0
363 | supports-color: 7.2.0
364 | dev: true
365 |
366 | /chokidar/3.5.3:
367 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
368 | engines: {node: '>= 8.10.0'}
369 | dependencies:
370 | anymatch: 3.1.2
371 | braces: 3.0.2
372 | glob-parent: 5.1.2
373 | is-binary-path: 2.1.0
374 | is-glob: 4.0.3
375 | normalize-path: 3.0.0
376 | readdirp: 3.6.0
377 | optionalDependencies:
378 | fsevents: 2.3.2
379 | dev: true
380 |
381 | /cliui/7.0.4:
382 | resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==}
383 | dependencies:
384 | string-width: 4.2.3
385 | strip-ansi: 6.0.1
386 | wrap-ansi: 7.0.0
387 | dev: true
388 |
389 | /color-convert/1.9.3:
390 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
391 | dependencies:
392 | color-name: 1.1.3
393 | dev: true
394 |
395 | /color-convert/2.0.1:
396 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
397 | engines: {node: '>=7.0.0'}
398 | dependencies:
399 | color-name: 1.1.4
400 | dev: true
401 |
402 | /color-name/1.1.3:
403 | resolution: {integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=}
404 | dev: true
405 |
406 | /color-name/1.1.4:
407 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
408 | dev: true
409 |
410 | /concurrently/7.0.0:
411 | resolution: {integrity: sha512-WKM7PUsI8wyXpF80H+zjHP32fsgsHNQfPLw/e70Z5dYkV7hF+rf8q3D+ScWJIEr57CpkO3OWBko6hwhQLPR8Pw==}
412 | engines: {node: ^12.20.0 || ^14.13.0 || >=16.0.0}
413 | hasBin: true
414 | dependencies:
415 | chalk: 4.1.2
416 | date-fns: 2.28.0
417 | lodash: 4.17.21
418 | rxjs: 6.6.7
419 | spawn-command: 0.0.2-1
420 | supports-color: 8.1.1
421 | tree-kill: 1.2.2
422 | yargs: 16.2.0
423 | dev: true
424 |
425 | /cosmiconfig/7.0.1:
426 | resolution: {integrity: sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==}
427 | engines: {node: '>=10'}
428 | dependencies:
429 | '@types/parse-json': 4.0.0
430 | import-fresh: 3.3.0
431 | parse-json: 5.2.0
432 | path-type: 4.0.0
433 | yaml: 1.10.2
434 | dev: true
435 |
436 | /cssesc/3.0.0:
437 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
438 | engines: {node: '>=4'}
439 | hasBin: true
440 | dev: true
441 |
442 | /csstype/3.0.10:
443 | resolution: {integrity: sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==}
444 |
445 | /date-fns/2.28.0:
446 | resolution: {integrity: sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw==}
447 | engines: {node: '>=0.11'}
448 | dev: true
449 |
450 | /dayjs/1.10.7:
451 | resolution: {integrity: sha512-P6twpd70BcPK34K26uJ1KT3wlhpuOAPoMwJzpsIWUxHZ7wpmbdZL/hQqBDfz7hGurYSa5PhzdhDHtt319hL3ig==}
452 | dev: false
453 |
454 | /debug/4.3.3:
455 | resolution: {integrity: sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==}
456 | engines: {node: '>=6.0'}
457 | peerDependencies:
458 | supports-color: '*'
459 | peerDependenciesMeta:
460 | supports-color:
461 | optional: true
462 | dependencies:
463 | ms: 2.1.2
464 | dev: false
465 |
466 | /defined/1.0.0:
467 | resolution: {integrity: sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=}
468 | dev: true
469 |
470 | /detective/5.2.0:
471 | resolution: {integrity: sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==}
472 | engines: {node: '>=0.8.0'}
473 | hasBin: true
474 | dependencies:
475 | acorn-node: 1.8.2
476 | defined: 1.0.0
477 | minimist: 1.2.5
478 | dev: true
479 |
480 | /didyoumean/1.2.2:
481 | resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
482 | dev: true
483 |
484 | /dlv/1.1.3:
485 | resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==}
486 | dev: true
487 |
488 | /electron-to-chromium/1.4.71:
489 | resolution: {integrity: sha512-Hk61vXXKRb2cd3znPE9F+2pLWdIOmP7GjiTj45y6L3W/lO+hSnUSUhq+6lEaERWBdZOHbk2s3YV5c9xVl3boVw==}
490 | dev: true
491 |
492 | /emoji-regex/8.0.0:
493 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
494 | dev: true
495 |
496 | /error-ex/1.3.2:
497 | resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
498 | dependencies:
499 | is-arrayish: 0.2.1
500 | dev: true
501 |
502 | /escalade/3.1.1:
503 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
504 | engines: {node: '>=6'}
505 | dev: true
506 |
507 | /escape-string-regexp/1.0.5:
508 | resolution: {integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=}
509 | engines: {node: '>=0.8.0'}
510 | dev: true
511 |
512 | /esprima/4.0.1:
513 | resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
514 | engines: {node: '>=4'}
515 | hasBin: true
516 | dev: false
517 |
518 | /fast-glob/3.2.11:
519 | resolution: {integrity: sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==}
520 | engines: {node: '>=8.6.0'}
521 | dependencies:
522 | '@nodelib/fs.stat': 2.0.5
523 | '@nodelib/fs.walk': 1.2.8
524 | glob-parent: 5.1.2
525 | merge2: 1.4.1
526 | micromatch: 4.0.4
527 | dev: true
528 |
529 | /fastq/1.13.0:
530 | resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==}
531 | dependencies:
532 | reusify: 1.0.4
533 | dev: true
534 |
535 | /feed/4.2.2:
536 | resolution: {integrity: sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ==}
537 | engines: {node: '>=0.4.0'}
538 | dependencies:
539 | xml-js: 1.6.11
540 | dev: false
541 |
542 | /fill-range/7.0.1:
543 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
544 | engines: {node: '>=8'}
545 | dependencies:
546 | to-regex-range: 5.0.1
547 | dev: true
548 |
549 | /follow-redirects/1.14.9_debug@4.3.3:
550 | resolution: {integrity: sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==}
551 | engines: {node: '>=4.0'}
552 | peerDependencies:
553 | debug: '*'
554 | peerDependenciesMeta:
555 | debug:
556 | optional: true
557 | dependencies:
558 | debug: 4.3.3
559 | dev: false
560 |
561 | /fraction.js/4.1.3:
562 | resolution: {integrity: sha512-pUHWWt6vHzZZiQJcM6S/0PXfS+g6FM4BF5rj9wZyreivhQPdsh5PpE25VtSNxq80wHS5RfY51Ii+8Z0Zl/pmzg==}
563 | dev: true
564 |
565 | /front-matter/4.0.2:
566 | resolution: {integrity: sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg==}
567 | dependencies:
568 | js-yaml: 3.14.1
569 | dev: false
570 |
571 | /fsevents/2.3.2:
572 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
573 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
574 | os: [darwin]
575 | requiresBuild: true
576 | dev: true
577 | optional: true
578 |
579 | /function-bind/1.1.1:
580 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
581 | dev: true
582 |
583 | /get-caller-file/2.0.5:
584 | resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
585 | engines: {node: 6.* || 8.* || >= 10.*}
586 | dev: true
587 |
588 | /glob-parent/5.1.2:
589 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
590 | engines: {node: '>= 6'}
591 | dependencies:
592 | is-glob: 4.0.3
593 | dev: true
594 |
595 | /glob-parent/6.0.2:
596 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
597 | engines: {node: '>=10.13.0'}
598 | dependencies:
599 | is-glob: 4.0.3
600 | dev: true
601 |
602 | /has-flag/3.0.0:
603 | resolution: {integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0=}
604 | engines: {node: '>=4'}
605 | dev: true
606 |
607 | /has-flag/4.0.0:
608 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
609 | engines: {node: '>=8'}
610 | dev: true
611 |
612 | /has/1.0.3:
613 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
614 | engines: {node: '>= 0.4.0'}
615 | dependencies:
616 | function-bind: 1.1.1
617 | dev: true
618 |
619 | /import-fresh/3.3.0:
620 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
621 | engines: {node: '>=6'}
622 | dependencies:
623 | parent-module: 1.0.1
624 | resolve-from: 4.0.0
625 | dev: true
626 |
627 | /is-arrayish/0.2.1:
628 | resolution: {integrity: sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=}
629 | dev: true
630 |
631 | /is-binary-path/2.1.0:
632 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
633 | engines: {node: '>=8'}
634 | dependencies:
635 | binary-extensions: 2.2.0
636 | dev: true
637 |
638 | /is-core-module/2.8.1:
639 | resolution: {integrity: sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==}
640 | dependencies:
641 | has: 1.0.3
642 | dev: true
643 |
644 | /is-extglob/2.1.1:
645 | resolution: {integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=}
646 | engines: {node: '>=0.10.0'}
647 | dev: true
648 |
649 | /is-fullwidth-code-point/3.0.0:
650 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
651 | engines: {node: '>=8'}
652 | dev: true
653 |
654 | /is-glob/4.0.3:
655 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
656 | engines: {node: '>=0.10.0'}
657 | dependencies:
658 | is-extglob: 2.1.1
659 | dev: true
660 |
661 | /is-number/7.0.0:
662 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
663 | engines: {node: '>=0.12.0'}
664 | dev: true
665 |
666 | /js-tokens/4.0.0:
667 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
668 |
669 | /js-yaml/3.14.1:
670 | resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==}
671 | hasBin: true
672 | dependencies:
673 | argparse: 1.0.10
674 | esprima: 4.0.1
675 | dev: false
676 |
677 | /json-parse-even-better-errors/2.3.1:
678 | resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
679 | dev: true
680 |
681 | /lilconfig/2.0.4:
682 | resolution: {integrity: sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA==}
683 | engines: {node: '>=10'}
684 | dev: true
685 |
686 | /lines-and-columns/1.2.4:
687 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
688 | dev: true
689 |
690 | /lodash/4.17.21:
691 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
692 |
693 | /loose-envify/1.4.0:
694 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
695 | hasBin: true
696 | dependencies:
697 | js-tokens: 4.0.0
698 | dev: false
699 |
700 | /marked/4.0.12:
701 | resolution: {integrity: sha512-hgibXWrEDNBWgGiK18j/4lkS6ihTe9sxtV4Q1OQppb/0zzyPSzoFANBa5MfsG/zgsWklmNnhm0XACZOH/0HBiQ==}
702 | engines: {node: '>= 12'}
703 | hasBin: true
704 | dev: false
705 |
706 | /merge2/1.4.1:
707 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
708 | engines: {node: '>= 8'}
709 | dev: true
710 |
711 | /micromatch/4.0.4:
712 | resolution: {integrity: sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==}
713 | engines: {node: '>=8.6'}
714 | dependencies:
715 | braces: 3.0.2
716 | picomatch: 2.3.1
717 | dev: true
718 |
719 | /minimist/1.2.5:
720 | resolution: {integrity: sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==}
721 | dev: true
722 |
723 | /ms/2.1.2:
724 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
725 | dev: false
726 |
727 | /nanoid/3.3.1:
728 | resolution: {integrity: sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==}
729 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
730 | hasBin: true
731 |
732 | /next/12.1.0:
733 | resolution: {integrity: sha512-s885kWvnIlxsUFHq9UGyIyLiuD0G3BUC/xrH0CEnH5lHEWkwQcHOORgbDF0hbrW9vr/7am4ETfX4A7M6DjrE7Q==}
734 | engines: {node: '>=12.22.0'}
735 | hasBin: true
736 | peerDependencies:
737 | fibers: '>= 3.1.0'
738 | node-sass: ^6.0.0 || ^7.0.0
739 | react: ^17.0.2 || ^18.0.0-0
740 | react-dom: ^17.0.2 || ^18.0.0-0
741 | sass: ^1.3.0
742 | peerDependenciesMeta:
743 | fibers:
744 | optional: true
745 | node-sass:
746 | optional: true
747 | sass:
748 | optional: true
749 | dependencies:
750 | '@next/env': 12.1.0
751 | caniuse-lite: 1.0.30001312
752 | postcss: 8.4.5
753 | styled-jsx: 5.0.0
754 | use-subscription: 1.5.1
755 | optionalDependencies:
756 | '@next/swc-android-arm64': 12.1.0
757 | '@next/swc-darwin-arm64': 12.1.0
758 | '@next/swc-darwin-x64': 12.1.0
759 | '@next/swc-linux-arm-gnueabihf': 12.1.0
760 | '@next/swc-linux-arm64-gnu': 12.1.0
761 | '@next/swc-linux-arm64-musl': 12.1.0
762 | '@next/swc-linux-x64-gnu': 12.1.0
763 | '@next/swc-linux-x64-musl': 12.1.0
764 | '@next/swc-win32-arm64-msvc': 12.1.0
765 | '@next/swc-win32-ia32-msvc': 12.1.0
766 | '@next/swc-win32-x64-msvc': 12.1.0
767 | transitivePeerDependencies:
768 | - '@babel/core'
769 | - babel-plugin-macros
770 | dev: true
771 |
772 | /next/12.1.0_react-dom@17.0.2+react@17.0.2:
773 | resolution: {integrity: sha512-s885kWvnIlxsUFHq9UGyIyLiuD0G3BUC/xrH0CEnH5lHEWkwQcHOORgbDF0hbrW9vr/7am4ETfX4A7M6DjrE7Q==}
774 | engines: {node: '>=12.22.0'}
775 | hasBin: true
776 | peerDependencies:
777 | fibers: '>= 3.1.0'
778 | node-sass: ^6.0.0 || ^7.0.0
779 | react: ^17.0.2 || ^18.0.0-0
780 | react-dom: ^17.0.2 || ^18.0.0-0
781 | sass: ^1.3.0
782 | peerDependenciesMeta:
783 | fibers:
784 | optional: true
785 | node-sass:
786 | optional: true
787 | sass:
788 | optional: true
789 | dependencies:
790 | '@next/env': 12.1.0
791 | caniuse-lite: 1.0.30001312
792 | postcss: 8.4.5
793 | react: 17.0.2
794 | react-dom: 17.0.2_react@17.0.2
795 | styled-jsx: 5.0.0_react@17.0.2
796 | use-subscription: 1.5.1_react@17.0.2
797 | optionalDependencies:
798 | '@next/swc-android-arm64': 12.1.0
799 | '@next/swc-darwin-arm64': 12.1.0
800 | '@next/swc-darwin-x64': 12.1.0
801 | '@next/swc-linux-arm-gnueabihf': 12.1.0
802 | '@next/swc-linux-arm64-gnu': 12.1.0
803 | '@next/swc-linux-arm64-musl': 12.1.0
804 | '@next/swc-linux-x64-gnu': 12.1.0
805 | '@next/swc-linux-x64-musl': 12.1.0
806 | '@next/swc-win32-arm64-msvc': 12.1.0
807 | '@next/swc-win32-ia32-msvc': 12.1.0
808 | '@next/swc-win32-x64-msvc': 12.1.0
809 | transitivePeerDependencies:
810 | - '@babel/core'
811 | - babel-plugin-macros
812 | dev: false
813 |
814 | /node-releases/2.0.2:
815 | resolution: {integrity: sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==}
816 | dev: true
817 |
818 | /normalize-path/3.0.0:
819 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
820 | engines: {node: '>=0.10.0'}
821 | dev: true
822 |
823 | /normalize-range/0.1.2:
824 | resolution: {integrity: sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=}
825 | engines: {node: '>=0.10.0'}
826 | dev: true
827 |
828 | /object-assign/4.1.1:
829 | resolution: {integrity: sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=}
830 | engines: {node: '>=0.10.0'}
831 |
832 | /object-hash/2.2.0:
833 | resolution: {integrity: sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==}
834 | engines: {node: '>= 6'}
835 | dev: true
836 |
837 | /parent-module/1.0.1:
838 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
839 | engines: {node: '>=6'}
840 | dependencies:
841 | callsites: 3.1.0
842 | dev: true
843 |
844 | /parse-json/5.2.0:
845 | resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
846 | engines: {node: '>=8'}
847 | dependencies:
848 | '@babel/code-frame': 7.16.7
849 | error-ex: 1.3.2
850 | json-parse-even-better-errors: 2.3.1
851 | lines-and-columns: 1.2.4
852 | dev: true
853 |
854 | /path-parse/1.0.7:
855 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
856 | dev: true
857 |
858 | /path-type/4.0.0:
859 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
860 | engines: {node: '>=8'}
861 | dev: true
862 |
863 | /picocolors/1.0.0:
864 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
865 |
866 | /picomatch/2.3.1:
867 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
868 | engines: {node: '>=8.6'}
869 | dev: true
870 |
871 | /postcss-js/4.0.0_postcss@8.4.6:
872 | resolution: {integrity: sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==}
873 | engines: {node: ^12 || ^14 || >= 16}
874 | peerDependencies:
875 | postcss: ^8.3.3
876 | dependencies:
877 | camelcase-css: 2.0.1
878 | postcss: 8.4.6
879 | dev: true
880 |
881 | /postcss-load-config/3.1.3:
882 | resolution: {integrity: sha512-5EYgaM9auHGtO//ljHH+v/aC/TQ5LHXtL7bQajNAUBKUVKiYE8rYpFms7+V26D9FncaGe2zwCoPQsFKb5zF/Hw==}
883 | engines: {node: '>= 10'}
884 | peerDependencies:
885 | ts-node: '>=9.0.0'
886 | peerDependenciesMeta:
887 | ts-node:
888 | optional: true
889 | dependencies:
890 | lilconfig: 2.0.4
891 | yaml: 1.10.2
892 | dev: true
893 |
894 | /postcss-nested/5.0.6_postcss@8.4.6:
895 | resolution: {integrity: sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==}
896 | engines: {node: '>=12.0'}
897 | peerDependencies:
898 | postcss: ^8.2.14
899 | dependencies:
900 | postcss: 8.4.6
901 | postcss-selector-parser: 6.0.9
902 | dev: true
903 |
904 | /postcss-selector-parser/6.0.9:
905 | resolution: {integrity: sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ==}
906 | engines: {node: '>=4'}
907 | dependencies:
908 | cssesc: 3.0.0
909 | util-deprecate: 1.0.2
910 | dev: true
911 |
912 | /postcss-value-parser/4.2.0:
913 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
914 | dev: true
915 |
916 | /postcss/8.4.5:
917 | resolution: {integrity: sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==}
918 | engines: {node: ^10 || ^12 || >=14}
919 | dependencies:
920 | nanoid: 3.3.1
921 | picocolors: 1.0.0
922 | source-map-js: 1.0.2
923 |
924 | /postcss/8.4.6:
925 | resolution: {integrity: sha512-OovjwIzs9Te46vlEx7+uXB0PLijpwjXGKXjVGGPIGubGpq7uh5Xgf6D6FiJ/SzJMBosHDp6a2hiXOS97iBXcaA==}
926 | engines: {node: ^10 || ^12 || >=14}
927 | dependencies:
928 | nanoid: 3.3.1
929 | picocolors: 1.0.0
930 | source-map-js: 1.0.2
931 | dev: true
932 |
933 | /prismjs/1.27.0:
934 | resolution: {integrity: sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA==}
935 | engines: {node: '>=6'}
936 | dev: false
937 |
938 | /queue-microtask/1.2.3:
939 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
940 | dev: true
941 |
942 | /quick-lru/5.1.1:
943 | resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==}
944 | engines: {node: '>=10'}
945 | dev: true
946 |
947 | /react-dom/17.0.2_react@17.0.2:
948 | resolution: {integrity: sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==}
949 | peerDependencies:
950 | react: 17.0.2
951 | dependencies:
952 | loose-envify: 1.4.0
953 | object-assign: 4.1.1
954 | react: 17.0.2
955 | scheduler: 0.20.2
956 | dev: false
957 |
958 | /react/17.0.2:
959 | resolution: {integrity: sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==}
960 | engines: {node: '>=0.10.0'}
961 | dependencies:
962 | loose-envify: 1.4.0
963 | object-assign: 4.1.1
964 | dev: false
965 |
966 | /readdirp/3.6.0:
967 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
968 | engines: {node: '>=8.10.0'}
969 | dependencies:
970 | picomatch: 2.3.1
971 | dev: true
972 |
973 | /require-directory/2.1.1:
974 | resolution: {integrity: sha1-jGStX9MNqxyXbiNE/+f3kqam30I=}
975 | engines: {node: '>=0.10.0'}
976 | dev: true
977 |
978 | /resolve-from/4.0.0:
979 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
980 | engines: {node: '>=4'}
981 | dev: true
982 |
983 | /resolve/1.22.0:
984 | resolution: {integrity: sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==}
985 | hasBin: true
986 | dependencies:
987 | is-core-module: 2.8.1
988 | path-parse: 1.0.7
989 | supports-preserve-symlinks-flag: 1.0.0
990 | dev: true
991 |
992 | /reusify/1.0.4:
993 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
994 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
995 | dev: true
996 |
997 | /run-parallel/1.2.0:
998 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
999 | dependencies:
1000 | queue-microtask: 1.2.3
1001 | dev: true
1002 |
1003 | /rxjs/6.6.7:
1004 | resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==}
1005 | engines: {npm: '>=2.0.0'}
1006 | dependencies:
1007 | tslib: 1.14.1
1008 | dev: true
1009 |
1010 | /sax/1.2.4:
1011 | resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==}
1012 | dev: false
1013 |
1014 | /scheduler/0.20.2:
1015 | resolution: {integrity: sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==}
1016 | dependencies:
1017 | loose-envify: 1.4.0
1018 | object-assign: 4.1.1
1019 | dev: false
1020 |
1021 | /source-map-js/1.0.2:
1022 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
1023 | engines: {node: '>=0.10.0'}
1024 |
1025 | /spawn-command/0.0.2-1:
1026 | resolution: {integrity: sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A=}
1027 | dev: true
1028 |
1029 | /sprintf-js/1.0.3:
1030 | resolution: {integrity: sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=}
1031 | dev: false
1032 |
1033 | /string-width/4.2.3:
1034 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
1035 | engines: {node: '>=8'}
1036 | dependencies:
1037 | emoji-regex: 8.0.0
1038 | is-fullwidth-code-point: 3.0.0
1039 | strip-ansi: 6.0.1
1040 | dev: true
1041 |
1042 | /strip-ansi/6.0.1:
1043 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
1044 | engines: {node: '>=8'}
1045 | dependencies:
1046 | ansi-regex: 5.0.1
1047 | dev: true
1048 |
1049 | /styled-jsx/5.0.0:
1050 | resolution: {integrity: sha512-qUqsWoBquEdERe10EW8vLp3jT25s/ssG1/qX5gZ4wu15OZpmSMFI2v+fWlRhLfykA5rFtlJ1ME8A8pm/peV4WA==}
1051 | engines: {node: '>= 12.0.0'}
1052 | peerDependencies:
1053 | '@babel/core': '*'
1054 | babel-plugin-macros: '*'
1055 | react: '>= 16.8.0 || 17.x.x || 18.x.x'
1056 | peerDependenciesMeta:
1057 | '@babel/core':
1058 | optional: true
1059 | babel-plugin-macros:
1060 | optional: true
1061 | dev: true
1062 |
1063 | /styled-jsx/5.0.0_react@17.0.2:
1064 | resolution: {integrity: sha512-qUqsWoBquEdERe10EW8vLp3jT25s/ssG1/qX5gZ4wu15OZpmSMFI2v+fWlRhLfykA5rFtlJ1ME8A8pm/peV4WA==}
1065 | engines: {node: '>= 12.0.0'}
1066 | peerDependencies:
1067 | '@babel/core': '*'
1068 | babel-plugin-macros: '*'
1069 | react: '>= 16.8.0 || 17.x.x || 18.x.x'
1070 | peerDependenciesMeta:
1071 | '@babel/core':
1072 | optional: true
1073 | babel-plugin-macros:
1074 | optional: true
1075 | dependencies:
1076 | react: 17.0.2
1077 | dev: false
1078 |
1079 | /supports-color/5.5.0:
1080 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
1081 | engines: {node: '>=4'}
1082 | dependencies:
1083 | has-flag: 3.0.0
1084 | dev: true
1085 |
1086 | /supports-color/7.2.0:
1087 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
1088 | engines: {node: '>=8'}
1089 | dependencies:
1090 | has-flag: 4.0.0
1091 | dev: true
1092 |
1093 | /supports-color/8.1.1:
1094 | resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==}
1095 | engines: {node: '>=10'}
1096 | dependencies:
1097 | has-flag: 4.0.0
1098 | dev: true
1099 |
1100 | /supports-preserve-symlinks-flag/1.0.0:
1101 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
1102 | engines: {node: '>= 0.4'}
1103 | dev: true
1104 |
1105 | /tailwindcss/3.0.23_autoprefixer@10.4.2:
1106 | resolution: {integrity: sha512-+OZOV9ubyQ6oI2BXEhzw4HrqvgcARY38xv3zKcjnWtMIZstEsXdI9xftd1iB7+RbOnj2HOEzkA0OyB5BaSxPQA==}
1107 | engines: {node: '>=12.13.0'}
1108 | hasBin: true
1109 | peerDependencies:
1110 | autoprefixer: ^10.0.2
1111 | dependencies:
1112 | arg: 5.0.1
1113 | autoprefixer: 10.4.2_postcss@8.4.6
1114 | chalk: 4.1.2
1115 | chokidar: 3.5.3
1116 | color-name: 1.1.4
1117 | cosmiconfig: 7.0.1
1118 | detective: 5.2.0
1119 | didyoumean: 1.2.2
1120 | dlv: 1.1.3
1121 | fast-glob: 3.2.11
1122 | glob-parent: 6.0.2
1123 | is-glob: 4.0.3
1124 | normalize-path: 3.0.0
1125 | object-hash: 2.2.0
1126 | postcss: 8.4.6
1127 | postcss-js: 4.0.0_postcss@8.4.6
1128 | postcss-load-config: 3.1.3
1129 | postcss-nested: 5.0.6_postcss@8.4.6
1130 | postcss-selector-parser: 6.0.9
1131 | postcss-value-parser: 4.2.0
1132 | quick-lru: 5.1.1
1133 | resolve: 1.22.0
1134 | transitivePeerDependencies:
1135 | - ts-node
1136 | dev: true
1137 |
1138 | /to-regex-range/5.0.1:
1139 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
1140 | engines: {node: '>=8.0'}
1141 | dependencies:
1142 | is-number: 7.0.0
1143 | dev: true
1144 |
1145 | /tree-kill/1.2.2:
1146 | resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==}
1147 | hasBin: true
1148 | dev: true
1149 |
1150 | /tslib/1.14.1:
1151 | resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
1152 | dev: true
1153 |
1154 | /typescript/4.5.5:
1155 | resolution: {integrity: sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==}
1156 | engines: {node: '>=4.2.0'}
1157 | hasBin: true
1158 | dev: true
1159 |
1160 | /use-subscription/1.5.1:
1161 | resolution: {integrity: sha512-Xv2a1P/yReAjAbhylMfFplFKj9GssgTwN7RlcTxBujFQcloStWNDQdc4g4NRWH9xS4i/FDk04vQBptAXoF3VcA==}
1162 | peerDependencies:
1163 | react: ^16.8.0 || ^17.0.0
1164 | dependencies:
1165 | object-assign: 4.1.1
1166 | dev: true
1167 |
1168 | /use-subscription/1.5.1_react@17.0.2:
1169 | resolution: {integrity: sha512-Xv2a1P/yReAjAbhylMfFplFKj9GssgTwN7RlcTxBujFQcloStWNDQdc4g4NRWH9xS4i/FDk04vQBptAXoF3VcA==}
1170 | peerDependencies:
1171 | react: ^16.8.0 || ^17.0.0
1172 | dependencies:
1173 | object-assign: 4.1.1
1174 | react: 17.0.2
1175 | dev: false
1176 |
1177 | /util-deprecate/1.0.2:
1178 | resolution: {integrity: sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=}
1179 | dev: true
1180 |
1181 | /wrap-ansi/7.0.0:
1182 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
1183 | engines: {node: '>=10'}
1184 | dependencies:
1185 | ansi-styles: 4.3.0
1186 | string-width: 4.2.3
1187 | strip-ansi: 6.0.1
1188 | dev: true
1189 |
1190 | /xml-js/1.6.11:
1191 | resolution: {integrity: sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==}
1192 | hasBin: true
1193 | dependencies:
1194 | sax: 1.2.4
1195 | dev: false
1196 |
1197 | /xtend/4.0.2:
1198 | resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==}
1199 | engines: {node: '>=0.4'}
1200 | dev: true
1201 |
1202 | /y18n/5.0.8:
1203 | resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
1204 | engines: {node: '>=10'}
1205 | dev: true
1206 |
1207 | /yaml/1.10.2:
1208 | resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
1209 | engines: {node: '>= 6'}
1210 | dev: true
1211 |
1212 | /yargs-parser/20.2.9:
1213 | resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==}
1214 | engines: {node: '>=10'}
1215 | dev: true
1216 |
1217 | /yargs/16.2.0:
1218 | resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==}
1219 | engines: {node: '>=10'}
1220 | dependencies:
1221 | cliui: 7.0.4
1222 | escalade: 3.1.1
1223 | get-caller-file: 2.0.5
1224 | require-directory: 2.1.1
1225 | string-width: 4.2.3
1226 | y18n: 5.0.8
1227 | yargs-parser: 20.2.9
1228 | dev: true
1229 |
--------------------------------------------------------------------------------
/pnpm-workspace.yaml:
--------------------------------------------------------------------------------
1 | packages:
2 | - 'packages/**'
--------------------------------------------------------------------------------