Commit 7f2332f3 authored by root's avatar root

initial commit

parent 03b80239
{
"comments": false,
"presets": [
[
"@babel/preset-env",
{
"targets": [
"last 2 versions"
]
}
]
],
"plugins": [
[
"@babel/plugin-transform-async-to-generator"
],
[
"@babel/plugin-proposal-class-properties"
],
[
"@babel/plugin-proposal-object-rest-spread"
],
[
"@babel/plugin-transform-runtime",
{
"regenerator": true
}
]
]
}
\ No newline at end of file
node_modules/
# This file contains information which helps Meteor properly upgrade your
# app when you run 'meteor update'. You should check it into version control
# with your project.
notices-for-0.9.0
notices-for-0.9.1
0.9.4-platform-file
notices-for-facebook-graph-api-2
1.2.0-standard-minifiers-package
1.2.0-meteor-platform-split
1.2.0-cordova-changes
1.2.0-breaking-changes
1.3.0-split-minifiers-package
1.4.0-remove-old-dev-bundle-link
1.4.1-add-shell-server-package
1.4.3-split-account-service-packages
1.5-add-dynamic-import-package
1.7-split-underscore-from-meteor-base
1.8.3-split-jquery-from-blaze
# This file contains a token that is unique to your project.
# Check it into your repository along with the rest of this directory.
# It can be used for purposes such as:
# - ensuring you don't accidentally deploy one app on top of another
# - providing package authors with aggregated statistics
dkyt2wdmyw0f.u2415eh8f221
# Meteor packages used by this project, one per line.
# Check this file (and the other files in this directory) into your repository.
#
# 'meteor add' and 'meteor remove' will edit this file for you,
# but you can also edit it by hand.
meteor-base@1.4.0 # Packages every Meteor app needs to have
mobile-experience@1.0.5 # Packages for a great mobile UX
mongo@1.8.0 # The database Meteor supports right now
reactive-var@1.0.11 # Reactive variable for tracker
tracker@1.2.0 # Meteor's client-side reactive programming library
shell-server@0.4.0 # Server-side component of the `meteor shell` command
accounts-password
ardatan:webpack
ardatan:webpack-dev-middleware
\ No newline at end of file
accounts-base@1.5.0
accounts-password@1.5.3
allow-deny@1.1.0
ardatan:webpack@0.0.13
ardatan:webpack-dev-middleware@0.0.13
autoupdate@1.6.0
babel-compiler@7.5.1
babel-runtime@1.5.0
base64@1.0.12
binary-heap@1.0.11
boilerplate-generator@1.6.0
callback-hook@1.3.0
check@1.3.1
ddp@1.4.0
ddp-client@2.3.3
ddp-common@1.4.0
ddp-rate-limiter@1.0.7
ddp-server@2.3.0
diff-sequence@1.1.1
dynamic-import@0.5.1
ecmascript@0.14.1
ecmascript-runtime@0.7.0
ecmascript-runtime-client@0.10.0
ecmascript-runtime-server@0.9.0
ejson@1.1.1
email@1.2.3
es5-shim@4.8.0
fetch@0.1.1
geojson-utils@1.0.10
hot-code-push@1.0.4
id-map@1.1.0
inter-process-messaging@0.1.0
launch-screen@1.1.1
livedata@1.0.18
localstorage@1.2.0
logging@1.1.20
meteor@1.9.3
meteor-base@1.4.0
minimongo@1.4.5
mobile-experience@1.0.5
mobile-status-bar@1.0.14
modern-browsers@0.1.5
modules@0.15.0
modules-runtime@0.12.0
mongo@1.8.0
mongo-decimal@0.1.1
mongo-dev-server@1.1.0
mongo-id@1.0.7
npm-bcrypt@0.9.3
npm-mongo@3.3.0
ordered-dict@1.1.0
promise@0.11.2
random@1.1.0
rate-limit@1.0.9
reactive-var@1.0.11
reload@1.3.0
retry@1.1.0
routepolicy@1.1.0
service-configuration@1.0.11
sha@1.0.9
shell-server@0.4.0
socket-stream-client@0.2.2
srp@1.0.12
tracker@1.2.0
underscore@1.0.10
webapp@1.8.2
webapp-hashing@1.0.9
<template>
<transition name="fade" mode="out-in">
<keep-alive>
<router-view></router-view>
</keep-alive>
</transition>
</template>
<script>
import i18n from "./plugins/i18n";
import { mapGetters } from "vuex";
export default {
data() {
return {};
},
computed: {
...mapGetters(["lang"])
},
methods: {
changeLocale(locale) {
i18n.locale = locale;
this.$vuetify.lang.current = locale;
}
},
watch: {
lang: function(newLang, oldLang) {
if (newLang == "en") {
this.$vuetify.rtl = false;
this.$vuetify.lang.current = "en";
}
if (newLang == "fa") {
this.$vuetify.rtl = true;
this.$vuetify.lang.current = "fa";
}
this.changeLocale(newLang);
}
}
};
</script>
<style>
#inspire {
font-family: "Vazir";
}
.v-messages__message {
font-family: Vazir;
font-size: 0.5rem;
}
html {
overflow-y: auto !important;
}
</style>
\ No newline at end of file
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no, minimal-ui">
<title>Kavosh</title>
</head>
<body>
<div id="app"></div>
</body>
\ No newline at end of file
import Vue from 'vue';
import App from './App.vue';
import { Meteor } from 'meteor/meteor';
import vuetify from './plugins/vuetify';
import VueMeteorTracker from 'vue-meteor-tracker';
Vue.use(VueMeteorTracker);
import VueRouter from 'vue-router';
Vue.use(VueRouter);
import { Plugin } from 'vue-fragment'
Vue.use(Plugin)
import routes from './plugins/routes';
const router = new VueRouter({
mode: 'history',
routes
});
import { store } from './store/store';
import i18n from './plugins/i18n';
Meteor.startup(() => {
new Vue({
i18n,
router,
vuetify,
store,
el: "#app",
render: h => h(App)
});
});
\ No newline at end of file
import Vue from 'vue';
import VueI18n from 'vue-i18n';
Vue.use(VueI18n);
const messages = {
'en': {
WellcomeMessage: "Hello Meteor!"
},
'fa': {
WellcomeMessage: "سلام Meteor!"
}
};
const i18n = new VueI18n({
locale: 'en', // set locale
fallbackLocale: 'fa', // set fallback locale
messages, // set locale messages
});
export default i18n;
\ No newline at end of file
import Home from '../views/Home.vue';
import AppVersion from '../views/AppVersion.vue';
const routes = [{
path: '/',
component: Home,
name: 'Home'
},
{
path: '/appversion',
component: AppVersion,
name: 'AppVersion'
}
];
export default routes;
\ No newline at end of file
// import '@mdi/font/css/materialdesignicons.css';
import 'vuetify/dist/vuetify.min.css';
import '@mdi/font/css/materialdesignicons.css';
import 'material-design-icons-iconfont/dist/material-design-icons.css';
import Vue from 'vue';
import Vuetify from 'vuetify';
import '../../public/fonts/font.css';
Vue.use(Vuetify);
import fa from 'vuetify/es5/locale/fa';
import en from 'vuetify/es5/locale/en';
export default new Vuetify({
lang: {
locales: { fa, en },
current: 'en'
},
icons: {
iconfont: 'mdi', // default - only for display purposes
},
rtl: false,
});
\ No newline at end of file
const state = {
lang: 'en'
}
const mutations = {
'SET_LANG' (state, lang) {
state.lang = lang;
}
}
const actions = {
setLang({ commit }, lang) {
commit('SET_LANG', lang);
},
}
const getters = {
lang: state => {
return state.lang;
}
}
export default {
state,
mutations,
getters,
actions
};
\ No newline at end of file
import Vue from 'vue';
import Vuex from 'vuex';
import appSettings from './modules/appSetting';
Vue.use(Vuex);
export const store = new Vuex.Store({
modules: {
appSettings
}
});
\ No newline at end of file
<template>
<div>
<div>FullVersion: {{FullVersion}}</div>
<div>Version: {{Version}}</div>
<div>CommitHash: {{CommitHash}}</div>
<div>BRANCH: {{Branch}}</div>
<div>MAJOR: {{Major}}</div>
<div>MINOR: {{Minor}}</div>
<div>PATCH: {{Patch}}</div>
</div>
</template>
<script>
export default {
data() {
return {
Version: VERSION,
CommitHash: COMMITHASH,
Branch: BRANCH,
Major: MAJOR,
Minor: MINOR,
Patch: PATCH,
FullVersion: FULLVERSION
};
}
};
</script>
\ No newline at end of file
<template>
<div>
<v-app id="inspire">
<v-content>
<div>{{$t("WellcomeMessage")}}</div>
<v-btn class="primary" @click="setLang('fa')">فارسی</v-btn>
<v-btn class="primary" @click="setLang('en')">English</v-btn>
</v-content>
</v-app>
</div>
</template>
<script>
import { mapActions } from "vuex";
export default {
methods:{
...mapActions(["setLang"])
}
};
</script>
\ No newline at end of file
This diff is collapsed.
{
"name": "core",
"private": true,
"scripts": {
"start": "meteor run",
"test": "meteor test --once --driver-package meteortesting:mocha",
"test-app": "TEST_WATCH=1 meteor test --full-app --driver-package meteortesting:mocha",
"visualize": "meteor --production --extra-packages bundle-visualizer",
"build": "webpack"
},
"dependencies": {
"@babel/plugin-transform-runtime": "^7.5.5",
"@babel/runtime": "^7.5.5",
"bcrypt": "^3.0.6",
"connect-route": "^0.1.5",
"fibers": "^4.0.1",
"git-describe": "^4.0.4",
"meteor-node-stubs": "^1.0.0",
"valid-url": "^1.0.9",
"vue": "^2.6.10",
"vue-fragment": "^1.5.1",
"vue-i18n": "^8.14.0",
"vue-meta": "^2.2.1",
"vue-meteor-tracker": "^2.0.0-beta.5",
"vue-router": "^3.1.2",
"vue-template-compiler": "^2.6.10",
"vuetify": "^2.0.15",
"vuex": "^3.1.1"
},
"devDependencies": {
"@babel/core": "^7.5.5",
"@babel/plugin-proposal-class-properties": "^7.5.5",
"@babel/plugin-proposal-object-rest-spread": "^7.5.5",
"@babel/plugin-transform-arrow-functions": "^7.2.0",
"@babel/plugin-transform-async-to-generator": "^7.5.0",
"@babel/preset-env": "^7.5.5",
"@babel/register": "^7.5.5",
"@mdi/font": "^3.9.97",
"babel-loader": "^8.0.6",
"cross-env": "^5.2.0",
"css-loader": "^3.2.0",
"deepmerge": "^4.0.0",
"file-loader": "^4.2.0",
"git-revision-webpack-plugin": "^3.0.4",
"html-loader": "^0.5.5",
"html-webpack-plugin": "^3.2.0",
"material-design-icons-iconfont": "^5.0.1",
"sass": "^1.22.9",
"sass-loader": "^7.2.0",
"standard-version": "^7.0.0",
"uglifyjs-webpack-plugin": "^2.2.0",
"vue-loader": "^15.7.1",
"vue-style-loader": "^4.1.2",
"vuetify-loader": "^1.3.0",
"webpack": "^4.39.1",
"webpack-cli": "^3.3.6",
"webpack-dev-middleware": "^3.7.0",
"webpack-hot-middleware": "^2.25.0",
"webpack-meteor-externals": "0.0.5"
}
}
/* @font-face {
font-family: FontName;
src: url('FontName.eot');
src: url('FontName.eot?#iefix') format('FontName-opentype'),
url('FontName.woff') format('woff'),
url('FontName.ttf') format('truetype');
font-weight: normal;
font-style: normal;
} */
@font-face {
font-family: Vazir;
src: url('vazir-font-v18.0.0/Vazir.eot');
src: url('vazir-font-v18.0.0/Vazir.eot?#iefix') format('vazir-opentype'), url('vazir-font-v18.0.0/Vazir.woff') format('woff'), url('vazir-font-v18.0.0/Vazir.ttf') format('truetype');
/* font-weight: normal; */
font-style: normal;
}
@font-face {
font-family: Yekan;
src: url('yekan-font/Yekan.eot');
src: url('yekan-font/Yekan.eot?#iefix') format('vazir-opentype'), url('yekan-font/Yekan.woff') format('woff'), url('yekan-font/Yekan.ttf') format('truetype');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: yekan-regular;
src: url('yekan-font/yekan-regular.eot');
src: url('yekan-font/yekan-regular.eot?#iefix') format('vazir-opentype'), url('yekan-font/yekan-regular.woff') format('woff'), url('yekan-font/yekan-regular.ttf') format('truetype');
font-weight: normal;
font-style: normal;
}
\ No newline at end of file
This diff is collapsed.
Changes by Saber Rastikerdar are in public domain.
Glyphs and data from Roboto font are licensed under the Apache License, Version 2.0.
Fonts are (c) Bitstream (see below). DejaVu changes are in public domain.
Bitstream Vera Fonts Copyright
------------------------------
Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is
a trademark of Bitstream, Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy
of the fonts accompanying this license ("Fonts") and associated
documentation files (the "Font Software"), to reproduce and distribute the
Font Software, including without limitation the rights to use, copy, merge,
publish, distribute, and/or sell copies of the Font Software, and to permit
persons to whom the Font Software is furnished to do so, subject to the
following conditions:
The above copyright and trademark notices and this permission notice shall
be included in all copies of one or more of the Font Software typefaces.
The Font Software may be modified, altered, or added to, and in particular
the designs of glyphs or characters in the Fonts may be modified and
additional glyphs or characters may be added to the Fonts, only if the fonts
are renamed to names not containing either the words "Bitstream" or the word
"Vera".
This License becomes null and void to the extent applicable to Fonts or Font
Software that has been modified and is distributed under the "Bitstream
Vera" names.
The Font Software may be sold as part of a larger software package but no
copy of one or more of the Font Software typefaces may be sold by itself.
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT,
TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME
FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING
ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE
FONT SOFTWARE.
Except as contained in this notice, the names of Gnome, the Gnome
Foundation, and Bitstream Inc., shall not be used in advertising or
otherwise to promote the sale, use or other dealings in this Font Software
without prior written authorization from the Gnome Foundation or Bitstream
Inc., respectively. For further information, contact: fonts at gnome dot
org.
\ No newline at end of file
# Vazir-Font
A Persian (Farsi) Font
[![Build Status](https://travis-ci.org/rastikerdar/vazir-font.svg?branch=master)](https://travis-ci.org/rastikerdar/vazir-font)
[![npm version](https://badge.fury.io/js/vazir-font.svg)](https://badge.fury.io/js/vazir-font)
<p dir="rtl">
فونت فارسی وزیر <br />
<p dir="rtl"><a href="http://rastikerdar.github.io/vazir-font/">نمایش فونت</a></p>
<p dir="rtl"><a href="https://github.com/rastikerdar/vazir-font/releases">صفحه دریافت (دانلود) بسته فونت شامل فایل های ttf,woff,eot</a></p> <br />
<p dir="rtl">متن نمونه:</p>
<p align="center">
<img src="./sample.png">
</p>
<br>
<p dir="rtl"> با تشکر از برنامه <a href="https://fontforge.github.io">FontForge</a></p>
<p dir="rtl"> بر مبنای فونت <a href="http://dejavu-fonts.org">DejaVu Sans 2.35</a></p>
</p>
<p lang="fa" dir="rtl" align="right">
نسخه های بدون حروف لاتین یا تمام ارقام فارسی درون بسته فشرده موجود می‌باشد.
</p>
<h1 dir="rtl">
طریقه استفاده در صفحات وب:
</h1>
<p dir="rtl">
کد زیر را در قسمت style یا فایل css وارد نمایید:
</p>
```css
@font-face {
font-family: Vazir;
src: url('Vazir.eot');
src: url('Vazir.eot?#iefix') format('embedded-opentype'),
url('Vazir.woff') format('woff'),
url('Vazir.ttf') format('truetype');
font-weight: normal;
}
@font-face {
font-family: Vazir;
src: url('Vazir-Bold.eot');
src: url('Vazir-Bold.eot?#iefix') format('embedded-opentype'),
url('Vazir-Bold.woff') format('woff'),
url('Vazir-Bold.ttf') format('truetype');
font-weight: bold;
}
@font-face {
font-family: Vazir;
src: url('Vazir-Light.eot');
src: url('Vazir-Light.eot?#iefix') format('embedded-opentype'),
url('Vazir-Light.woff') format('woff'),
url('Vazir-Light.ttf') format('truetype');
font-weight: 300;
}
```
## Install
#### Download
Grab the [latest release](https://github.com/rastikerdar/vazir-font/releases/latest) file.
#### Bower
```
bower install vazir-font --save
```
#### npm
```
npm install vazir-font
```
Fonts will be copied to `node_modules/vazir-font/dist` directory
#### CDN
Link fonts from the [RawGit](https://rawgit.com) CDN:
```html
<link href="https://cdn.rawgit.com/rastikerdar/vazir-font/v[X.Y.Z]/dist/font-face.css" rel="stylesheet" type="text/css" />
```
Replace [X.Y.Z] with the latest version (e.g. 18.0.0) and integrate the font into your CSS:
```
font-family: 'Vazir', sans-serif;
```
#### Homebrew
You can install the font on macOS machines by tapping the caskroom/fonts repo:
```shell
brew tap caskroom/fonts
brew install font-vazir
```
#### Arch Linux
Arch user's could use [vazir-fonts](https://aur.archlinux.org/packages/vazir-fonts/) package from [AUR](https://aur.archlinux.org/) repository to install vazir font.
Use your favourite [AUR helper](https://wiki.archlinux.org/index.php/AUR_helpers) like pacaur or yaourt for installing package:
```shell
pacaur -S vazir-fonts
```
This diff is collapsed.
import { Meteor } from 'meteor/meteor';
Meteor.startup(() => {
// code to run on server at startup
});
import assert from "assert";
describe("core", function () {
it("package.json has correct name", async function () {
const { name } = await import("../package.json");
assert.strictEqual(name, "core");
});
if (Meteor.isClient) {
it("client is not server", function () {
assert.strictEqual(Meteor.isServer, false);
});
}
if (Meteor.isServer) {
it("server is not client", function () {
assert.strictEqual(Meteor.isClient, false);
});
}
});
var path = require('path')
var webpack = require('webpack')
const HtmlWebpackPlugin = require('html-webpack-plugin');
const meteorExternals = require('webpack-meteor-externals');
const VueLoaderPlugin = require('vue-loader/lib/plugin');
const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
// const GitRevisionPlugin = require('git-revision-webpack-plugin');
// const gitRevisionPlugin = new GitRevisionPlugin();
// const { gitDescribe, gitDescribeSync } = require('git-describe');
// const gitInfo = gitDescribeSync(__dirname, {
// longSemver: true,
// dirtySemver: false
// });
const clientConfig = {
entry: './client/main.js',
// output: {
// publicPath: '/',
// filename: 'build.js'
// },
output: {
publicPath: '/',
filename: '[name].[hash].js',
},
mode: "production",
optimization: {
runtimeChunk: 'single',
// minimizer: [new UglifyJsPlugin()],
// minimize: false,
splitChunks: {
chunks: 'all',
maxInitialRequests: Infinity,
minSize: 0,
cacheGroups: {
vendor: {
test: /[\\/]node_modules[\\/]/,
name(module) {
// get the name. E.g. node_modules/packageName/not/this/part.js
// or node_modules/packageName
const packageName = module.context.match(/[\\/]node_modules[\\/](.*?)([\\/]|$)/)[1];
// npm package names are URL-safe, but some servers don't like @ symbols
return `npm.${packageName.replace('@', '')}`;
},
},
},
},
},
module: {
rules: [{
test: /\.js$/,
loader: 'babel-loader',
exclude: /node_modules/,
options: {
plugins: [
"@babel/plugin-syntax-dynamic-import"
]
}
},
{
test: /\.vue$/,
loader: 'vue-loader',
options: {
loaders: {}
// other vue-loader options go here
}
},
{
test: /\.s(c|a)ss$/,
use: [
'vue-style-loader',
'css-loader',
{
loader: 'sass-loader',
options: {
implementation: require('sass'),
fiber: require('fibers'),
indentedSyntax: true // optional
}
}
]
},
{
test: /\.less$/,
use: [
'vue-style-loader',
'css-loader',
'less-loader'
]
},
{
test: /\.(woff(2)?|ttf|eot|svg)(\?v=\d+\.\d+\.\d+)?$/,
use: [{
loader: 'file-loader',
options: {
name: '[name].[ext]',
outputPath: 'fonts/'
}
}]
},
{
test: /\.css$/,
use: [
'vue-style-loader',
'css-loader'
],
},
{
test: /\.(png|jpg|gif|svg)$/,
loader: 'file-loader',
options: {
name: 'images/[name].[ext]?[hash:8]'
}
},
{
test: /\.html$/,
use: [
// {
// loader: "file-loader",
// options: {
// name: "[name].html"
// }
// },
// {
// loader: "extract-loader"// tells webpack to not include html file into mainbundle js
// },
{
loader: "html-loader",
options: {
attrs: ["img:src"] // the src attribute in img element of html is the target
}
}
]
},
]
},
resolve: {
alias: {
'vue$': 'vue/dist/vue.esm.js'
},
extensions: ['*', '.js', '.vue', '.json']
},
externals: [meteorExternals()],
devServer: {
historyApiFallback: true,
noInfo: true,
overlay: true,
hot: true,
open: true
},
performance: {
hints: false
},
devtool: process.env.NODE_ENV == 'production' ? '' : 'source-map',
plugins: [
new webpack.HotModuleReplacementPlugin(),
new HtmlWebpackPlugin({
template: './client/main.html'
}),
new VueLoaderPlugin(),
// new webpack.DefinePlugin({
// 'FULLVERSION': JSON.stringify(gitInfo.semverString),
// 'COMMITHASH': JSON.stringify(gitRevisionPlugin.commithash()),
// 'BRANCH': JSON.stringify(gitRevisionPlugin.branch()),
// 'VERSION': JSON.stringify(gitInfo.semver.version),
// "MAJOR": JSON.stringify(gitInfo.semver.major),
// "MINOR": JSON.stringify(gitInfo.semver.minor),
// "PATCH": JSON.stringify(gitInfo.semver.patch)
// })
]
}
const serverConfig = {
entry: './server/main.js',
target: 'node',
externals: [meteorExternals()],
devServer: {
hot: true,
open: true
},
devtool: 'source-map',
mode: "development",
module: {
rules: [{
test: /\.js$/,
loader: 'babel-loader',
exclude: /node_modules/
}]
}
};
module.exports = [clientConfig, serverConfig];
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment