From 7799b522fde829f386771ed1ecc1543b6c1bc144 Mon Sep 17 00:00:00 2001 From: "Florine W. Dekker" Date: Tue, 9 Aug 2022 19:20:02 +0200 Subject: [PATCH] Add Composer and npm to project --- .editorconfig | 11 ++ .gitattributes | 2 + .gitignore | 133 +++++++++++++++++- Gruntfile.js | 132 +++++++++++++++++ LICENSE | 21 +++ composer.json | 23 +++ composer.lock | Bin 0 -> 3851 bytes package-lock.json | Bin 0 -> 224126 bytes package.json | 32 +++++ src/main/{db.php => Database.php} | 10 +- src/main/api.php | 37 +++-- ...fig.default.ini => config.default.ini.php} | 2 + src/main/index.php | 53 ++++++- src/main/js/Main.ts | 17 +++ tsconfig.json | 11 ++ 15 files changed, 456 insertions(+), 28 deletions(-) create mode 100644 .editorconfig create mode 100644 .gitattributes create mode 100644 Gruntfile.js create mode 100644 LICENSE create mode 100644 composer.json create mode 100644 composer.lock create mode 100644 package-lock.json create mode 100644 package.json rename src/main/{db.php => Database.php} (82%) rename src/main/{config.default.ini => config.default.ini.php} (88%) create mode 100644 src/main/js/Main.ts create mode 100644 tsconfig.json diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..fd1294f --- /dev/null +++ b/.editorconfig @@ -0,0 +1,11 @@ +root = true + +[*] +charset = utf-8 +trim_trailing_whitespace = true + +end_of_line = lf +insert_final_newline = true + +indent_style = space +indent_size = 4 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..ab8dec2 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +composer.lock binary +package-lock.json binary diff --git a/.gitignore b/.gitignore index 33dec3a..a589b70 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,132 @@ +## Node +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* + +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage +*.lcov + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Snowpack dependency directory (https://snowpack.dev/) +web_modules/ + +# TypeScript cache +*.tsbuildinfo + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Microbundle cache +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env +.env.test + +# parcel-bundler cache (https://parceljs.org/) +.cache +.parcel-cache + +# Next.js build output +.next +out + +# Nuxt.js build / generate output +.nuxt +dist + +# Gatsby files +.cache/ +# Comment in the public line in if your project uses Gatsby and not Next.js +# https://nextjs.org/blog/next-9-1#public-directory-support +# public + +# vuepress build output +.vuepress/dist + +# Serverless directories +.serverless/ + +# FuseBox cache +.fusebox/ + +# DynamoDB Local files +.dynamodb/ + +# TernJS port file +.tern-port + +# Stores VSCode versions used for testing VSCode extensions +.vscode-test + +# yarn v2 + +.yarn/cache +.yarn/unplugged +.yarn/build-state.yml +.pnp.* + + +## Composer +composer.phar +/vendor/ + +# Commit your application's lock file https://getcomposer.org/doc/01-basic-usage.md#commit-your-composer-lock-file-to-version-control +# You may choose to ignore a library lock file http://getcomposer.org/doc/02-libraries.md#lock-file +# composer.lock + + +## Custom +dist/ src/main/.death-notifier.db -src/main/config.ini -src/main/mailer +src/main/config.ini.php diff --git a/Gruntfile.js b/Gruntfile.js new file mode 100644 index 0000000..2bde678 --- /dev/null +++ b/Gruntfile.js @@ -0,0 +1,132 @@ +const path = require("path"); + +module.exports = grunt => { + grunt.initConfig({ + pkg: grunt.file.readJSON("package.json"), + clean: { + default: ["dist/"], + }, + copy: { + composer: { + files: [{expand: true, cwd: "./", src: "vendor/**", dest: "dist/", flatten: false}] + }, + css: { + files: [{expand: true, cwd: "src/main/", src: "**/*.css", dest: "dist/", flatten: true}] + }, + html: { + files: [{expand: true, cwd: "src/main/", src: "**/*.html", dest: "dist/", flatten: true}] + }, + php: { + files: [{expand: true, cwd: "src/main/", src: "**/*.php", dest: "dist/", flatten: true}] + }, + }, + focus: { + dev: { + include: ["css", "html", "php", "ts"], + }, + }, + replace: { + dev: { + src: ["./dist/**/*.html", "./dist/**/*.js", "./dist/**/*.php"], + replacements: [ + { + from: "%%VERSION_NUMBER%%", + to: "<%= pkg.version %>+" + new Date().toISOString().slice(0, 19).replace(/[-:T]/g, "") + } + ], + overwrite: true + }, + deploy: { + src: ["./dist/**/*.html", "./dist/**/*.js", "./dist/**/*.php"], + replacements: [ + { + from: "%%VERSION_NUMBER%%", + to: "<%= pkg.version %>" + } + ], + overwrite: true + }, + }, + watch: { + css: { + files: ["src/main/**/*.css"], + tasks: ["copy:css"], + }, + html: { + files: ["src/main/**/*.html"], + tasks: ["copy:html"], + }, + php: { + files: ["src/main/**/*.php"], + tasks: ["copy:php"], + }, + ts: { + files: ["src/main/**/*.ts"], + tasks: ["webpack:dev", "replace:dev"], + }, + }, + webpack: { + options: { + entry: "./src/main/js/Main.ts", + module: { + rules: [ + { + test: /\.ts$/, + use: "ts-loader", + exclude: /node_modules/, + }, + ], + }, + resolve: { + extensions: [".ts"], + }, + output: { + filename: "bundle.js", + path: path.resolve(__dirname, "dist/"), + }, + }, + dev: { + mode: "development", + devtool: "inline-source-map", + }, + deploy: { + mode: "production", + }, + }, + }); + + grunt.loadNpmTasks("grunt-contrib-clean"); + grunt.loadNpmTasks("grunt-contrib-copy"); + grunt.loadNpmTasks("grunt-contrib-watch"); + grunt.loadNpmTasks("grunt-focus"); + grunt.loadNpmTasks("grunt-text-replace"); + grunt.loadNpmTasks("grunt-webpack"); + + grunt.registerTask("dev", [ + // Pre + "clean", + // Copy files + "copy:composer", + "copy:css", + "copy:html", + "copy:php", + // Compile JS + "webpack:dev", + "replace:dev", + ]); + grunt.registerTask("dev:server", ["dev", "focus:dev"]); + grunt.registerTask("deploy", [ + // Pre + "clean", + // Copy files + "copy:composer", + "copy:css", + "copy:html", + "copy:php", + // Compile JS + "webpack:deploy", + "replace:deploy", + ]); + + grunt.registerTask("default", ["dev"]); +}; diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..361b6f7 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 Florine W. Dekker + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..9784c67 --- /dev/null +++ b/composer.json @@ -0,0 +1,23 @@ +{ + "name": "fwdekker/death-notifier", + "description": "Get notified when a famous person dies.", + "version": "0.0.1", + "type": "project", + "license": "MIT", + "homepage": "https://git.fwdekker.com/tools/death-notifier", + "support": { + "issues": "https://git.fwdekker.com/tools/death-notifier/issues", + "source": "https://git.fwdekker.com/tools/death-notifier" + }, + "authors": [ + { + "name": "Florine W. Dekker", + "email": "florine@fwdekker.com" + } + ], + "require": { + "ext-sqlite3": "*", + "phpmailer/phpmailer": "^6.5" + }, + "minimum-stability": "stable" +} diff --git a/composer.lock b/composer.lock new file mode 100644 index 0000000000000000000000000000000000000000..061e9d9c5a8b0417f26a43ae2bc7527d3625e1b1 GIT binary patch literal 3851 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

98|RML$}$3NgXaE6%Ts-Vkr6zr!C96 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 or7nO~w^2CLE!ccZ43bdb->exec("CREATE TABLE users(uuid text primary key not null, email text not null, password text not null);"); + // TODO: Do email verification stuff: `current_email` and `email_is_verified` and stuff + $this->db->exec("CREATE TABLE trackings(user_uuid text not null, person_name text not null, is_deceased int not null)"); } function add_user($uuid, $email, $password): bool diff --git a/src/main/api.php b/src/main/api.php index 6546d86..c3bec4d 100644 --- a/src/main/api.php +++ b/src/main/api.php @@ -1,40 +1,35 @@ exec("CREATE TABLE users(uuid text primary key not null, email text not null, password text not null);"); - // TODO: Do email verification stuff: `current_email` and `email_is_verified` and stuff - $db->exec("CREATE TABLE trackings(user_uuid text not null, person_name text not null, is_deceased int not null)"); - - $db->close(); -} if (!file_exists($config["database"]["filename"])) { - exit(); + (new SQLite3($config["database"]["filename"]))->close(); + + $db = new Database($config["database"]["filename"], SQLITE3_OPEN_READWRITE); + $db->install(); + $db->close(); } session_start(); diff --git a/src/main/config.default.ini b/src/main/config.default.ini.php similarity index 88% rename from src/main/config.default.ini rename to src/main/config.default.ini.php index 7e4dad6..5720bed 100644 --- a/src/main/config.default.ini +++ b/src/main/config.default.ini.php @@ -1,3 +1,5 @@ +; + [database] filename = .death-notifier.db diff --git a/src/main/index.php b/src/main/index.php index c3f8ba1..3619c10 100644 --- a/src/main/index.php +++ b/src/main/index.php @@ -1,9 +1,58 @@ - - + + + + + + + + + + + + + + Death Notifier | FWDekker + + + + + + + + +

+ This website does not function if JavaScript is disabled. + Please check the + instructions on how to enable JavaScript in your web browser. +

+ +
+ +
+ + + +
+ CONTENTS +
+
+ +
+ + + + + + + diff --git a/src/main/js/Main.ts b/src/main/js/Main.ts new file mode 100644 index 0000000..dde0c1e --- /dev/null +++ b/src/main/js/Main.ts @@ -0,0 +1,17 @@ +// @ts-ignore +const {$, doAfterLoad, footer, header, nav} = window.fwdekker; + + +doAfterLoad(() => { + // Initialize template + $("#nav").appendChild(nav("/Tools/Death-Notifier/")); + $("#header").appendChild(header({ + title: "Death Notifier", + description: "Get notified when a famous person dies" + })); + $("#footer").appendChild(footer({ + vcsURL: "https://git.fwdekker.com/tools/death-notifier/", + version: "v%%VERSION_NUMBER%%" + })); + $("main").classList.remove("hidden"); +}); diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..69c22e6 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "target": "es6", + "strict": true, + "rootDir": "./src/main/js/", + "outDir": "./dist/js/" + }, + "include": [ + "src/main/js/**/*.ts" + ] +}