Skip to content

Commit 39bb41a

Browse files
committed
setup initial project
1 parent 0caa7ff commit 39bb41a

29 files changed

+845
-0
lines changed

‎.eslintignore

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
vue.config.js
2+
tailwind.config.js
3+
postcss.config.js
4+
jest.config.js
5+
babel.config.js
6+
.eslintrc.js
7+
src/devtools.js

‎.eslintrc.js

+53
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
const path = require("path");
2+
3+
module.exports = {
4+
root: true,
5+
env: {
6+
node: true
7+
},
8+
9+
extends: [
10+
"plugin:vue/vue3-essential",
11+
"eslint:recommended",
12+
"@vue/typescript"
13+
],
14+
parserOptions: {
15+
parser: "@typescript-eslint/parser"
16+
},
17+
18+
rules: {
19+
"@typescript-eslint/semi": ["error"]
20+
},
21+
overrides: [
22+
// Fix no-used-vars when importing ts types in .vue files https://.com/vuejs/eslint-config-typescript/issues/14
23+
{
24+
files: ["*.vue"],
25+
rules: {
26+
"no-unused-vars": "off",
27+
"@typescript-eslint/no-unused-vars": "error"
28+
}
29+
},
30+
{
31+
files: ["src/**/*.ts", "test/**/*.ts"],
32+
parserOptions: {
33+
project: path.resolve(__dirname, "./tsconfig.json"),
34+
parser: "@typescript-eslint/parser"
35+
},
36+
extends: [
37+
"plugin:@typescript-eslint/recommended",
38+
"plugin:@typescript-eslint/recommended-requiring-type-checking"
39+
]
40+
},
41+
{
42+
files: ["build/**/*.ts"],
43+
parserOptions: {
44+
project: path.resolve(__dirname, "./build/tsconfig.json"),
45+
parser: "@typescript-eslint/parser"
46+
},
47+
extends: [
48+
"plugin:@typescript-eslint/recommended",
49+
"plugin:@typescript-eslint/recommended-requiring-type-checking"
50+
]
51+
}
52+
]
53+
};

‎.gitignore

+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
.DS_Store
2+
node_modules
3+
/dist
4+
5+
6+
# local env files
7+
.env.local
8+
.env.*.local
9+
10+
# Log files
11+
npm-debug.log*
12+
yarn-debug.log*
13+
yarn-error.log*
14+
pnpm-debug.log*
15+
16+
# Editor directories and files
17+
.idea
18+
.vscode
19+
*.suo
20+
*.ntvs*
21+
*.njsproj
22+
*.sln
23+
*.sw?
24+
25+
# Test report
26+
junit.xml
27+
28+
# built zip
29+
gist-userscript-manager.zip
30+
31+
# schema
32+
.graphql
33+
34+
# generated graphql ts types
35+
**/__gen_gql/**/*

‎babel.config.js

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
const vueCliPreset = require('@vue/cli-plugin-babel/preset');
2+
3+
/*
4+
* Because browserslist "last 2 Chrome versions" already supports optional chaining and nullish coalescing,
5+
* @vue/cli-plugin-babel/preset will not transpile them. Unfortunately webpack 4 does not support them, that's why we
6+
* are adding them here again. Optional chaining and nullish coalescing are supported in webpack 5, but vue cli does not
7+
* support webpack 5 yet.
8+
*/
9+
const customVuePreset = (context, options = {}) => {
10+
const preset = vueCliPreset(context, options);
11+
preset.overrides[0].plugins.push("@babel/plugin-proposal-nullish-coalescing-operator");
12+
preset.overrides[0].plugins.push("@babel/plugin-proposal-optional-chaining");
13+
return preset;
14+
};
15+
16+
module.exports = {
17+
presets: [
18+
customVuePreset(),
19+
[
20+
'@babel/preset-env',
21+
{
22+
targets: {
23+
node: 'current',
24+
},
25+
},
26+
],
27+
'@babel/preset-typescript'
28+
]
29+
};

‎build/generate-graphql-types/cli.ts

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import download from './download--schema';
2+
import generate from './generate-types';
3+
4+
const main = async () => {
5+
await download();
6+
await generate();
7+
};
8+
9+
void main().catch((e) => {
10+
console.error(e);
11+
process.exit();
12+
});
+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import {join} from "path";
2+
3+
export const SCHEMA_PATH = join(__dirname, '../../.graphql');
4+
export const SCHEMA_URL = 'https://docs..com/public/schema.docs.graphql';
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import {SCHEMA_PATH, SCHEMA_URL} from './config';
2+
import {writeFile} from 'fs/promises';
3+
import fetch from 'node-fetch';
4+
5+
export default async (): Promise<void> => {
6+
console.log('Downloading schema from ...');
7+
await fetch(SCHEMA_URL)
8+
.then(response => response.buffer())
9+
.then(buffer => writeFile(SCHEMA_PATH, buffer))
10+
console.log('Download complete');
11+
}
12+
13+
14+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import {exec, ExecOptions} from "child_process";
2+
import {join} from 'path';
3+
import del from "del";
4+
5+
const execute = async (command: string, options?: ExecOptions): Promise<void> => {
6+
return new Promise((resolve, reject) => {
7+
const childProcess = exec(command, options);
8+
childProcess.addListener('close', (code) => {
9+
if (code === 0) {
10+
resolve();
11+
} else {
12+
reject(code);
13+
}
14+
});
15+
childProcess.stdout?.pipe(process.stdout);
16+
childProcess.stderr?.pipe(process.stderr);
17+
});
18+
};
19+
20+
export default async (): Promise<void> => {
21+
const srcDir = join(__dirname, '../../src');
22+
console.log('delete old generated gql type files');
23+
const deletedPaths = await del('**/__gen_gql/**', {cwd: srcDir});
24+
console.log('deleted files:');
25+
deletedPaths.forEach(path => console.log(path));
26+
27+
console.log('Generating typescript types');
28+
const command = "npx apollo client:codegen --target=typescript __gen_gql --includes=./**/*.gql --localSchemaFile=../.graphql";
29+
await execute(command, {cwd: srcDir});
30+
console.log('Generation complete');
31+
32+
};

‎build/tsconfig.json

+76
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
{
2+
"compilerOptions": {
3+
/* Visit https://aka.ms/tsconfig.json to read more about this file */
4+
5+
/* Basic Options */
6+
// "incremental": true, /* Enable incremental compilation */
7+
"target": "es5", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */
8+
"module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */
9+
// "lib": [], /* Specify library files to be included in the compilation. */
10+
// "allowJs": true, /* Allow javascript files to be compiled. */
11+
// "checkJs": true, /* Report errors in .js files. */
12+
// "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */
13+
// "declaration": true, /* Generates corresponding '.d.ts' file. */
14+
// "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */
15+
// "sourceMap": true, /* Generates corresponding '.map' file. */
16+
// "outFile": "./", /* Concatenate and emit output to single file. */
17+
// "outDir": "./", /* Redirect output structure to the directory. */
18+
// "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */
19+
// "composite": true, /* Enable project compilation */
20+
// "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */
21+
// "removeComments": true, /* Do not emit comments to output. */
22+
// "noEmit": true, /* Do not emit outputs. */
23+
// "importHelpers": true, /* Import emit helpers from 'tslib'. */
24+
// "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */
25+
// "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */
26+
27+
/* Strict Type-Checking Options */
28+
"strict": true, /* Enable all strict type-checking options. */
29+
// "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */
30+
// "strictNullChecks": true, /* Enable strict null checks. */
31+
// "strictFunctionTypes": true, /* Enable strict checking of function types. */
32+
// "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */
33+
// "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */
34+
// "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */
35+
// "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */
36+
37+
/* Additional Checks */
38+
// "noUnusedLocals": true, /* Report errors on unused locals. */
39+
// "noUnusedParameters": true, /* Report errors on unused parameters. */
40+
// "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */
41+
// "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */
42+
// "noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */
43+
44+
/* Module Resolution Options */
45+
// "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */
46+
// "baseUrl": "./", /* Base directory to resolve non-absolute module names. */
47+
// "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */
48+
// "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */
49+
// "typeRoots": [], /* List of folders to include type definitions from. */
50+
// "types": [], /* Type declaration files to be included in compilation. */
51+
// "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */
52+
"esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */
53+
// "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */
54+
// "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */
55+
56+
/* Source Map Options */
57+
// "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */
58+
// "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
59+
// "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */
60+
// "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */
61+
62+
/* Experimental Options */
63+
// "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */
64+
// "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */
65+
66+
/* Advanced Options */
67+
"skipLibCheck": true, /* Skip type checking of declaration files. */
68+
"forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */
69+
},
70+
"include": [
71+
"./**/*.ts"
72+
],
73+
"files": [
74+
"./upload-webstore/chrome-webstore-upload.d.ts"
75+
]
76+
}

0 commit comments

Comments
 (0)