Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
94ffba8
feat(project): setup angular project
AbstractWebDeveloper Oct 21, 2023
a31d2a9
feat(project): configure tsconfig
AbstractWebDeveloper Oct 22, 2023
9816d1d
feat(project): setup additional deps
AbstractWebDeveloper Oct 22, 2023
8d929a8
feat(project): configure commitlint
AbstractWebDeveloper Oct 22, 2023
845426e
feat(project): configure stylelint
AbstractWebDeveloper Oct 22, 2023
c47169a
feat(project): configure prettier
AbstractWebDeveloper Oct 22, 2023
79f3dbd
feat(project): configure husky
AbstractWebDeveloper Oct 22, 2023
3edc140
feat(project): configure eslint
AbstractWebDeveloper Oct 22, 2023
228b81c
refactor(app): applied prettier formatting to app
AbstractWebDeveloper Oct 23, 2023
9a3b8c3
feat(app): created primary project components with interface
AbstractWebDeveloper Oct 23, 2023
60022d3
feat(app): configure routing for project
AbstractWebDeveloper Oct 23, 2023
594754d
refactor(project): change rules for eslint, tsconfig and prettier
AbstractWebDeveloper Oct 30, 2023
16d885d
feat(project): add taiga ui package
AbstractWebDeveloper Oct 30, 2023
a0a7687
feat(app): set favicon
AbstractWebDeveloper Oct 30, 2023
c5fa815
feat(assets): add logo
AbstractWebDeveloper Oct 30, 2023
94e559e
refactor(app): format app files according prettier
AbstractWebDeveloper Oct 30, 2023
ee443ed
feat(main): add response data
AbstractWebDeveloper Oct 30, 2023
4f95821
feat(main): add main-page component
AbstractWebDeveloper Oct 30, 2023
2213e18
feat(main): add cards-container component
AbstractWebDeveloper Oct 30, 2023
84efb4a
feat(main): add card component
AbstractWebDeveloper Oct 30, 2023
0c37179
feat(main): add pipe for sorting / filter video cards
AbstractWebDeveloper Oct 30, 2023
d4b59b9
feat(header): add header component
AbstractWebDeveloper Oct 30, 2023
57ca4ed
feat(header): add search-settings component
AbstractWebDeveloper Oct 30, 2023
7dff192
feat(shared): add button text component
AbstractWebDeveloper Oct 30, 2023
6c3dc2a
feat(shared): add date colorizer directive
AbstractWebDeveloper Oct 30, 2023
603db71
feat(shared): add sort settings interface
AbstractWebDeveloper Oct 30, 2023
134dbc1
refactor(app): add/change semantic for seo & accesability
AbstractWebDeveloper Nov 2, 2023
7740cfc
refactor: rewrite SortSetting interface with SortSettingType enum
AbstractWebDeveloper Nov 2, 2023
2e8c635
feat(project): add refactor command for npm run
AbstractWebDeveloper Nov 2, 2023
4aa9083
refactor(app): rewrite project structure according task requirements
AbstractWebDeveloper Nov 5, 2023
cc884f0
feat(core): implement not-found page
AbstractWebDeveloper Nov 6, 2023
36bcbe1
feat(youtube): add routing for youtube module
AbstractWebDeveloper Nov 6, 2023
41c4373
refactor(app): rename models (add postfix model)
AbstractWebDeveloper Nov 7, 2023
a4c00bf
feat(auth): add auth logic with login page
AbstractWebDeveloper Nov 7, 2023
a4e7118
feat(detail): add detail page logic
AbstractWebDeveloper Nov 7, 2023
8693812
fix(app): add unsibscribe to observables for prevent memoy leak
AbstractWebDeveloper Nov 9, 2023
95e47b1
refactor(app): add rule to for LF end of files
AbstractWebDeveloper Nov 9, 2023
c614ba8
feat: add support for .env
AbstractWebDeveloper Nov 10, 2023
43830ef
refactor(auth): rewrite auth guard and service
AbstractWebDeveloper Nov 11, 2023
9bf2b16
feat(header): add support for search and auth services
AbstractWebDeveloper Nov 12, 2023
54472d9
feat(core): add http request instead mock
AbstractWebDeveloper Nov 12, 2023
1f70396
feat(youtube): implement new service methods to components
AbstractWebDeveloper Nov 12, 2023
7fd745b
feat(core): add interceptor for pass api token youtube
AbstractWebDeveloper Nov 12, 2023
23058a0
feat(project): move deploy to netlify
AbstractWebDeveloper Nov 12, 2023
cd27737
refactor(youtube): move service youtube-http to youtube folder
AbstractWebDeveloper Nov 12, 2023
aa51445
refactor(shared): rewrite interface in models
AbstractWebDeveloper Nov 12, 2023
2a6032b
feat(youtube): add resolver for detail page component
AbstractWebDeveloper Nov 14, 2023
47f174a
refactor(youtube): rewrite search video service
AbstractWebDeveloper Nov 14, 2023
e359092
feat(admin): implement admin page
AbstractWebDeveloper Nov 16, 2023
396be70
feat(auth): update login page validators
AbstractWebDeveloper Nov 16, 2023
bb89e15
Update README.md
AbstractWebDeveloper Nov 19, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Editor configuration, see https://editorconfig.org
root = true

[*]
charset = utf-8
indent_style = space
indent_size = 2
insert_final_newline = true
trim_trailing_whitespace = true

[*.ts]
quote_type = single

[*.md]
max_line_length = off
trim_trailing_whitespace = false
12 changes: 12 additions & 0 deletions .eslintignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
*.js
*.md
dist
build
*.svg
*.html
*.scss
*.json
node_modules
documentation
src/env.d.ts
./.env
354 changes: 354 additions & 0 deletions .eslintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,354 @@
{
"root": true,
"plugins": ["prettier"],
"extends": ["prettier"],
"overrides": [
{
"files": ["*.spec.ts"],
"env": { "jest": true }
},
{
"files": ["*.html"],
"extends": ["plugin:@angular-eslint/template/recommended"],
"rules": {}
},
{
"files": ["*.ts"],
"parser": "@typescript-eslint/parser",
"extends": [
"plugin:@angular-eslint/recommended",
"plugin:@angular-eslint/template/process-inline-templates",
"airbnb-base",
"airbnb-typescript/base"
],
"parserOptions": {
"project": ["tsconfig.*?.json", "tsconfig.json"],
"emitDecoratorMetadata": true
},
"rules": {
"semi": 0,
"@typescript-eslint/semi": 0,
"@angular-eslint/directive-selector": [
2,
{
"type": "attribute",
"prefix": "app",
"style": "camelCase"
}
],
"@angular-eslint/component-selector": [
2,
{
"type": "element",
"prefix": "app",
"style": "kebab-case"
}
],
"@typescript-eslint/await-thenable": 2,
"@typescript-eslint/naming-convention": [
2,
{
"selector": "default",
"format": ["strictCamelCase"],
"leadingUnderscore": "forbid",
"trailingUnderscore": "forbid"
},
{
"selector": "variable",
"format": ["strictCamelCase", "UPPER_CASE"],
"modifiers": ["const"],
"types": ["boolean", "string", "number"],
"leadingUnderscore": "forbid",
"trailingUnderscore": "forbid"
},
{
"selector": "variable",
"modifiers": ["destructured"],
"format": null
},
{
"selector": "objectLiteralProperty",
"format": null,
"leadingUnderscore": "forbid",
"trailingUnderscore": "forbid"
},
{
"selector": "parameter",
"format": ["strictCamelCase"],
"leadingUnderscore": "allow",
"trailingUnderscore": "forbid"
},
{
"selector": "typeLike",
"format": ["PascalCase"],
"leadingUnderscore": "forbid",
"trailingUnderscore": "forbid"
}
],
"no-shadow": 0,
"no-return-await": 0,
"no-use-before-define": 0,
"no-unused-expressions": 0,
"padding-line-between-statements": 0,
"radix": 2,
"curly": 2,
"eqeqeq": [2, "smart"],
"default-case": 2,
"default-case-last": 2,
"object-shorthand": 2,
"require-atomic-updates": 2,
"complexity": [2, 10],
"max-depth": [2, 4],
"max-statements": [2, 20],
"max-params": [2, 3],
"max-nested-callbacks": [2, 4],
"max-lines-per-function": [
2,
{
"max": 100,
"skipBlankLines": true,
"skipComments": true
}
],
"id-match": 2,
"id-denylist": 2,
"no-void": [
"error",
{
"allowAsStatement": true
}
],
"no-eval": 2,
"no-alert": 2,
"no-proto": 2,
"no-labels": 2,
"no-plusplus": 2,
"no-lonely-if": 2,
"no-multi-str": 2,
"no-extra-bind": 2,
"no-new-object": 2,
"no-lone-blocks": 2,
"no-self-compare": 2,
"no-useless-call": 2,
"no-multi-assign": 2,
"no-new-wrappers": 2,
"no-octal-escape": 2,
"no-extend-native": 2,
"no-nested-ternary": 2,
"no-param-reassign": 2,
"no-unreachable-loop": 2,
"no-negated-condition": 2,
"no-implicit-coercion": 2,
"no-constructor-return": 2,
"newline-per-chained-call": 0,
"no-promise-executor-return": 2,
"no-unmodified-loop-condition": 2,
"no-constant-binary-expression": 2,
"prefer-template": 2,
"prefer-object-spread": 2,
"prefer-object-has-own": 2,
"prefer-numeric-literals": 2,
"prefer-exponentiation-operator": 2,
"no-return-assign": [2, "always"],
"no-console": [
1,
{
"allow": ["warn", "error", "debug"]
}
],
"no-sequences": [
2,
{
"allowInParentheses": false
}
],
"no-else-return": [
2,
{
"allowElseIf": false
}
],
"no-unneeded-ternary": [
2,
{
"defaultAssignment": false
}
],
"no-restricted-syntax": [
2,
{
"selector": "LabeledStatement",
"message": "Labels are a form of GOTO; using them makes code confusing and hard to maintain and understand."
},
{
"selector": "WithStatement",
"message": "`with` is disallowed in strict mode because it makes code impossible to predict and optimize."
}
],
"prefer-destructuring": [
2,
{
"array": false,
"object": true
},
{
"enforceForRenamedProperties": false
}
],
"@typescript-eslint/quotes": 0,
"function-paren-newline": 0,
"implicit-arrow-linebreak": 0,
"arrow-parens": 0,
"import/named": 0,
"import/default": 0,
"import/namespace": 0,
"import/prefer-default-export": 0,
"import/no-named-as-default-member": 0,
"import/no-cycle": 2,
"import/first": 2,
"import/no-namespace": 0,
"import/no-unresolved": 2,
"import/no-empty-named-blocks": 2,
"import/no-useless-path-segments": [
2,
{
"noUselessIndex": true
}
],
"import/no-duplicates": [
2,
{
"prefer-inline": true,
"considerQueryString": true
}
],
"import/no-extraneous-dependencies": [
2,
{
"devDependencies": true
}
],
"@typescript-eslint/no-explicit-any": 2,
"@typescript-eslint/triple-slash-reference": [
"error",
{
"lib": "never",
"path": "never",
"types": "never"
}
],
"object-curly-newline": 0,
"lines-between-class-members": 0,
"@typescript-eslint/prefer-includes": 2,
"@typescript-eslint/no-non-null-assertion": 2,
"@typescript-eslint/dot-notation": [2, { "allowIndexSignaturePropertyAccess": true }],
"@typescript-eslint/no-throw-literal": 2,
"@typescript-eslint/no-base-to-string": 2,
"@typescript-eslint/no-dynamic-delete": 2,
"@typescript-eslint/unified-signatures": 2,
"@typescript-eslint/ban-tslint-comment": 2,
"@typescript-eslint/no-invalid-void-type": 2,
"@typescript-eslint/prefer-function-type": 2,
"@typescript-eslint/prefer-optional-chain": 2,
"@typescript-eslint/prefer-ts-expect-error": 2,
"@typescript-eslint/no-unnecessary-condition": 0,
"@typescript-eslint/consistent-type-definitions": 2,
"@typescript-eslint/prefer-reduce-type-parameter": 2,
"@typescript-eslint/consistent-indexed-object-style": 2,
"@typescript-eslint/consistent-generic-constructors": 2,
"@typescript-eslint/no-unnecessary-boolean-literal-compare": 2,
"@typescript-eslint/array-type": [
2,
{
"default": "array-simple"
}
],
"@typescript-eslint/consistent-type-assertions": [
2,
{
"assertionStyle": "as",
"objectLiteralTypeAssertions": "never"
}
],
"@typescript-eslint/prefer-nullish-coalescing": 0,
"@typescript-eslint/no-redeclare": 2,
"@typescript-eslint/method-signature-style": 2,
"@typescript-eslint/switch-exhaustiveness-check": 2,
"@typescript-eslint/no-confusing-void-expression": 2,
"@typescript-eslint/no-redundant-type-constituents": 2,
"@typescript-eslint/consistent-type-imports": 2,
"@typescript-eslint/consistent-type-exports": [
2,
{
"fixMixedExportsWithInlineTypeSpecifier": true
}
],
"@typescript-eslint/strict-boolean-expressions": 0,
"@typescript-eslint/require-array-sort-compare": [
2,
{
"ignoreStringArrays": true
}
],
"@typescript-eslint/no-shadow": [
2,
{
"hoist": "all",
"allow": ["resolve", "reject", "done", "next", "err", "error"],
"ignoreTypeValueShadow": true,
"ignoreFunctionTypeParameterNameValueShadow": true
}
],
"@typescript-eslint/return-await": [2, "in-try-catch"],
"@typescript-eslint/no-use-before-define": [
2,
{
"ignoreTypeReferences": true
}
],
"@typescript-eslint/no-unused-expressions": [
2,
{
"allowShortCircuit": true,
"allowTernary": true,
"allowTaggedTemplates": true,
"enforceForJSX": true
}
],
"@typescript-eslint/padding-line-between-statements": [
2,
{
"blankLine": "always",
"prev": [
"case",
"default",
"block",
"block-like",
"multiline-block-like",
"interface",
"type",
"export"
],
"next": "*"
},
{
"blankLine": "any",
"prev": ["const", "let"],
"next": ["const", "let"]
},
{
"blankLine": "always",
"prev": "*",
"next": ["switch", "while", "try", "return", "if", "interface", "type", "function"]
}
],
"@typescript-eslint/no-extraneous-class": 0
}
}
],
"settings": {
"import/parsers": {
"@typescript-eslint/parser": [".ts"]
}
}
}
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
* text=auto eol=lf
Loading