mirror of
https://github.com/Raghu-Ch/angular-challenges.git
synced 2026-02-10 12:53:03 -05:00
feat: add collection for authors
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
# Anchor Navigation
|
# Anchor Navigation
|
||||||
|
|
||||||
> Author: Thomas Laforge
|
> author: thomas-laforge
|
||||||
|
|
||||||
### Run Application
|
### Run Application
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Change Detection Bug
|
# Change Detection Bug
|
||||||
|
|
||||||
> Author: Thomas Laforge
|
> author: thomas-laforge
|
||||||
|
|
||||||
### Run Application
|
### Run Application
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Typed ContextOutlet
|
# Typed ContextOutlet
|
||||||
|
|
||||||
> Author: Thomas Laforge
|
> author: thomas-laforge
|
||||||
|
|
||||||
### Run Application
|
### Run Application
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Crud application
|
# Crud application
|
||||||
|
|
||||||
> Author: Thomas Laforge
|
> author: thomas-laforge
|
||||||
|
|
||||||
### Run Application
|
### Run Application
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Decoupling Components
|
# Decoupling Components
|
||||||
|
|
||||||
> Author: Thomas Laforge
|
> author: thomas-laforge
|
||||||
|
|
||||||
### Run Application
|
### Run Application
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Master Dependancy Injection
|
# Master Dependancy Injection
|
||||||
|
|
||||||
> Author: Thomas Laforge
|
> author: thomas-laforge
|
||||||
|
|
||||||
### Run Application
|
### Run Application
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# InjectionToken
|
# InjectionToken
|
||||||
|
|
||||||
> Author: Thomas Laforge
|
> author: thomas-laforge
|
||||||
|
|
||||||
### Run Application
|
### Run Application
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Interoperability Rxjs/Signal
|
# Interoperability Rxjs/Signal
|
||||||
|
|
||||||
> Author: Thomas Laforge
|
> author: thomas-laforge
|
||||||
|
|
||||||
### Run Application
|
### Run Application
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Module to Standalone
|
# Module to Standalone
|
||||||
|
|
||||||
> Author: Thomas Laforge
|
> author: thomas-laforge
|
||||||
|
|
||||||
### Run Application
|
### Run Application
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Directive Enhancement
|
# Directive Enhancement
|
||||||
|
|
||||||
> Author: Thomas Laforge
|
> author: thomas-laforge
|
||||||
|
|
||||||
### Run Application
|
### Run Application
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Structural Directive
|
# Structural Directive
|
||||||
|
|
||||||
> Author: Thomas Laforge
|
> author: thomas-laforge
|
||||||
|
|
||||||
### Run Application
|
### Run Application
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Pure Pipe
|
# Pure Pipe
|
||||||
|
|
||||||
> Author: Thomas Laforge
|
> author: thomas-laforge
|
||||||
|
|
||||||
### Run Application
|
### Run Application
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Utility Wrapper Pipe
|
# Utility Wrapper Pipe
|
||||||
|
|
||||||
> Author: Thomas Laforge
|
> author: thomas-laforge
|
||||||
|
|
||||||
### Run Application
|
### Run Application
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Wrap Function Pipe
|
# Wrap Function Pipe
|
||||||
|
|
||||||
> Author: Thomas Laforge
|
> author: thomas-laforge
|
||||||
|
|
||||||
### Run Application
|
### Run Application
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Projection
|
# Projection
|
||||||
|
|
||||||
> Author: Thomas Laforge
|
> author: thomas-laforge
|
||||||
|
|
||||||
### Run Application
|
### Run Application
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# @RouterInput()
|
# @RouterInput()
|
||||||
|
|
||||||
> Author: Thomas Laforge
|
> author: thomas-laforge
|
||||||
|
|
||||||
### Run Application
|
### Run Application
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Highly Customizable CSS
|
# Highly Customizable CSS
|
||||||
|
|
||||||
> Author: Thomas Laforge
|
> author: thomas-laforge
|
||||||
|
|
||||||
### Run Application
|
### Run Application
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Effect vs Selector
|
# Effect vs Selector
|
||||||
|
|
||||||
> Author: Thomas Laforge
|
> author: thomas-laforge
|
||||||
|
|
||||||
### Run Application
|
### Run Application
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Power of Effect
|
# Power of Effect
|
||||||
|
|
||||||
> Author: Thomas Laforge
|
> author: thomas-laforge
|
||||||
|
|
||||||
### Run Application
|
### Run Application
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Default vs OnPush
|
# Default vs OnPush
|
||||||
|
|
||||||
> Author: Thomas Laforge
|
> author: thomas-laforge
|
||||||
|
|
||||||
### Run Application
|
### Run Application
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Memoization
|
# Memoization
|
||||||
|
|
||||||
> Author: Thomas Laforge
|
> author: thomas-laforge
|
||||||
|
|
||||||
### Run Application
|
### Run Application
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# NgFor optimize big list
|
# NgFor optimize big list
|
||||||
|
|
||||||
> Author: Thomas Laforge
|
> author: thomas-laforge
|
||||||
|
|
||||||
### Run Application
|
### Run Application
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# NgFor Optimization
|
# NgFor Optimization
|
||||||
|
|
||||||
> Author: Thomas Laforge
|
> author: thomas-laforge
|
||||||
|
|
||||||
### Run Application
|
### Run Application
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Optimize Change Detection
|
# Optimize Change Detection
|
||||||
|
|
||||||
> Author: Thomas Laforge
|
> author: thomas-laforge
|
||||||
|
|
||||||
### Run Application
|
### Run Application
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# High Order Operator Bug
|
# High Order Operator Bug
|
||||||
|
|
||||||
> Author: Thomas Laforge
|
> author: thomas-laforge
|
||||||
|
|
||||||
### Run Application
|
### Run Application
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Race Condition
|
# Race Condition
|
||||||
|
|
||||||
> Author: Thomas Laforge
|
> author: thomas-laforge
|
||||||
|
|
||||||
### Run Application
|
### Run Application
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Checkbox
|
# Checkbox
|
||||||
|
|
||||||
> Author: Thomas Laforge
|
> author: thomas-laforge
|
||||||
|
|
||||||
### Run Application
|
### Run Application
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Harness Creation
|
# Harness Creation
|
||||||
|
|
||||||
> Author: Thomas Laforge
|
> author: thomas-laforge
|
||||||
|
|
||||||
### Run Application
|
### Run Application
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Harness
|
# Harness
|
||||||
|
|
||||||
> Author: Thomas Laforge
|
> author: thomas-laforge
|
||||||
|
|
||||||
### Run Application
|
### Run Application
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Input Output
|
# Input Output
|
||||||
|
|
||||||
> Author: Thomas Laforge
|
> author: thomas-laforge
|
||||||
|
|
||||||
### Run Application
|
### Run Application
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Modal
|
# Modal
|
||||||
|
|
||||||
> Author: Thomas Laforge
|
> author: thomas-laforge
|
||||||
|
|
||||||
### Run Application
|
### Run Application
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Nested Components
|
# Nested Components
|
||||||
|
|
||||||
> Author: Thomas Laforge
|
> author: thomas-laforge
|
||||||
|
|
||||||
### Run Application
|
### Run Application
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Router
|
# Router
|
||||||
|
|
||||||
> Author: Thomas Laforge
|
> author: thomas-laforge
|
||||||
|
|
||||||
### Run Application
|
### Run Application
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<h1>Table testing</h1>
|
<h1>Table testing</h1>
|
||||||
|
|
||||||
> Author: Thomas Laforge
|
> author: thomas-laforge
|
||||||
|
|
||||||
## Statement:
|
## Statement:
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Real-life Application
|
# Real-life Application
|
||||||
|
|
||||||
> Author: Thomas Laforge
|
> author: thomas-laforge
|
||||||
|
|
||||||
### Run Application
|
### Run Application
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Function Overload
|
# Function Overload
|
||||||
|
|
||||||
> Author: Thomas Laforge
|
> author: thomas-laforge
|
||||||
|
|
||||||
### Run Application
|
### Run Application
|
||||||
|
|
||||||
|
|||||||
41
docs/src/components/Author.astro
Normal file
41
docs/src/components/Author.astro
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
---
|
||||||
|
import { Icon } from '@astrojs/starlight/components';
|
||||||
|
|
||||||
|
interface Props {
|
||||||
|
name: string;
|
||||||
|
twitter?: string;
|
||||||
|
linkedin?: string;
|
||||||
|
github?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
const { name, twitter, linkedin, github } = Astro.props;
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
<p class="author">
|
||||||
|
Created by {name}
|
||||||
|
{twitter && <a href={twitter}><Icon class='icon' name="twitter" size="0.75rem" /></a>}
|
||||||
|
{linkedin && <a href={linkedin}><Icon class='icon' name="linkedin" size="0.75rem" /></a>}
|
||||||
|
{github && <a href={github}><Icon class='icon' name="github" size="0.75rem" /></a>}
|
||||||
|
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.author {
|
||||||
|
display: flex;
|
||||||
|
gap: 0.5rem;
|
||||||
|
align-items: center;
|
||||||
|
margin-top: -1rem;
|
||||||
|
font-size: var(--sl-text-xs);
|
||||||
|
color: var(--sl-color-gray-3);
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon {
|
||||||
|
vertical-align: middle;
|
||||||
|
color: var(--sl-color-gray-3);
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
color: var(--sl-color-accent-high)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -1,15 +1,18 @@
|
|||||||
---
|
---
|
||||||
import ChallengeFooter from './ChallengeFooter.astro'
|
|
||||||
import CommentSection from './CommentSection.astro'
|
|
||||||
import type { Props } from '@astrojs/starlight/props';
|
|
||||||
import Default from '@astrojs/starlight/components/MarkdownContent.astro';
|
import Default from '@astrojs/starlight/components/MarkdownContent.astro';
|
||||||
|
import type { Props } from '@astrojs/starlight/props';
|
||||||
|
import { getEntry } from 'astro:content';
|
||||||
|
import Author from './Author.astro';
|
||||||
|
import ChallengeFooter from './ChallengeFooter.astro';
|
||||||
|
import CommentSection from './CommentSection.astro';
|
||||||
|
|
||||||
const {challengeNumber, author} = Astro.props.entry.data;
|
const {challengeNumber} = Astro.props.entry.data;
|
||||||
|
const author = Astro.props.entry.data.author ? await getEntry(Astro.props.entry.data.author) : null;
|
||||||
const renderCommentSection = !Astro.props.entry.data.noCommentSection;
|
const renderCommentSection = !Astro.props.entry.data.noCommentSection;
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
{ challengeNumber && author && <p class="author">Created by {author}</p> }
|
{ challengeNumber && author && <Author {...author.data}/> }
|
||||||
|
|
||||||
<Default {...Astro.props}><slot /></Default>
|
<Default {...Astro.props}><slot /></Default>
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,11 @@
|
|||||||
---
|
---
|
||||||
|
|
||||||
|
interface Props {
|
||||||
|
link: string;
|
||||||
|
alt: string;
|
||||||
|
flag?: 'FR';
|
||||||
|
}
|
||||||
|
|
||||||
const { link, alt, flag } = Astro.props;
|
const { link, alt, flag } = Astro.props;
|
||||||
const isFR = flag === 'FR';
|
const isFR = flag === 'FR';
|
||||||
---
|
---
|
||||||
|
|||||||
4
docs/src/content/authors/devesh-chaudhari.json
Normal file
4
docs/src/content/authors/devesh-chaudhari.json
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"name": "Devesh Chaudhari",
|
||||||
|
"twitter": "https://twitter.com/DeveshChau"
|
||||||
|
}
|
||||||
6
docs/src/content/authors/thomas-laforge.json
Normal file
6
docs/src/content/authors/thomas-laforge.json
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"name": "Thomas Laforge",
|
||||||
|
"twitter": "https://twitter.com/laforge_toma",
|
||||||
|
"linkedin": "https://www.linkedin.com/in/thomas-laforge-2b05a945/",
|
||||||
|
"github": "https://github.com/tomalaforge"
|
||||||
|
}
|
||||||
@@ -1,23 +1,38 @@
|
|||||||
import { docsSchema, i18nSchema } from '@astrojs/starlight/schema';
|
import { docsSchema, i18nSchema } from '@astrojs/starlight/schema';
|
||||||
import { defineCollection, z } from 'astro:content';
|
import { defineCollection, reference, z } from 'astro:content';
|
||||||
|
|
||||||
|
const authors = defineCollection({
|
||||||
|
type: 'data',
|
||||||
|
schema: z.object({
|
||||||
|
name: z.string(),
|
||||||
|
twitter: z.string().url().optional(),
|
||||||
|
linkedin: z.string().url().optional(),
|
||||||
|
github: z.string().url().optional(),
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
|
||||||
|
const docs = defineCollection({
|
||||||
|
schema: (ctx) =>
|
||||||
|
docsSchema()(ctx).extend({
|
||||||
|
noCommentSection: z.boolean().optional().default(false),
|
||||||
|
challengeNumber: z.union([z.number(), z.boolean()]).default(false),
|
||||||
|
author: reference('authors').optional(),
|
||||||
|
command: z.string().optional(),
|
||||||
|
blogLink: z.string().optional(),
|
||||||
|
videoLink: z
|
||||||
|
.object({
|
||||||
|
link: z.string(),
|
||||||
|
alt: z.string(),
|
||||||
|
flag: z.enum(['FR']).optional(),
|
||||||
|
})
|
||||||
|
.optional(),
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
|
||||||
|
const i18n = defineCollection({ type: 'data', schema: i18nSchema() });
|
||||||
|
|
||||||
export const collections = {
|
export const collections = {
|
||||||
docs: defineCollection({
|
docs: docs,
|
||||||
schema: (ctx) =>
|
i18n: i18n,
|
||||||
docsSchema()(ctx).extend({
|
authors: authors,
|
||||||
noCommentSection: z.boolean().optional().default(false),
|
|
||||||
challengeNumber: z.union([z.number(), z.boolean()]).default(false),
|
|
||||||
author: z.string().optional(),
|
|
||||||
command: z.string().optional(),
|
|
||||||
blogLink: z.string().optional(),
|
|
||||||
videoLink: z
|
|
||||||
.object({
|
|
||||||
link: z.string(),
|
|
||||||
alt: z.string(),
|
|
||||||
flag: z.enum(['FR']).optional(),
|
|
||||||
})
|
|
||||||
.optional(),
|
|
||||||
}),
|
|
||||||
}),
|
|
||||||
i18n: defineCollection({ type: 'data', schema: i18nSchema() }),
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
title: 🟢 Projection
|
title: 🟢 Projection
|
||||||
description: Challenge 1 is about learning how to project DOM element through components
|
description: Challenge 1 is about learning how to project DOM element through components
|
||||||
author: Thomas Laforge
|
author: thomas-laforge
|
||||||
challengeNumber: 1
|
challengeNumber: 1
|
||||||
command: angular-projection
|
command: angular-projection
|
||||||
blogLink: https://medium.com/@thomas.laforge/create-a-highly-customizable-component-cc3a9805e4c5
|
blogLink: https://medium.com/@thomas.laforge/create-a-highly-customizable-component-cc3a9805e4c5
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
title: 🔴 Utility Wrapper Pipe
|
title: 🔴 Utility Wrapper Pipe
|
||||||
description: Challenge 10 is about creating a pipe to wrap utilities
|
description: Challenge 10 is about creating a pipe to wrap utilities
|
||||||
author: Thomas Laforge
|
author: thomas-laforge
|
||||||
challengeNumber: 10
|
challengeNumber: 10
|
||||||
command: angular-pipe-hard
|
command: angular-pipe-hard
|
||||||
sidebar:
|
sidebar:
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
title: 🟠 Highly Customizable CSS
|
title: 🟠 Highly Customizable CSS
|
||||||
description: Challenge 13 is about creating highly customizable CSS styles
|
description: Challenge 13 is about creating highly customizable CSS styles
|
||||||
author: Thomas Laforge
|
author: thomas-laforge
|
||||||
challengeNumber: 13
|
challengeNumber: 13
|
||||||
command: angular-styling
|
command: angular-styling
|
||||||
sidebar:
|
sidebar:
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
title: 🔴 Master Dependancy Injection
|
title: 🔴 Master Dependancy Injection
|
||||||
description: Challenge 16 is about masjering how dependancy injection works
|
description: Challenge 16 is about masjering how dependancy injection works
|
||||||
author: Thomas Laforge
|
author: thomas-laforge
|
||||||
challengeNumber: 16
|
challengeNumber: 16
|
||||||
command: angular-di
|
command: angular-di
|
||||||
sidebar:
|
sidebar:
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
title: 🟢 Anchor Navigation
|
title: 🟢 Anchor Navigation
|
||||||
description: Challenge 21 is about navigating inside the page with anchor
|
description: Challenge 21 is about navigating inside the page with anchor
|
||||||
author: Thomas Laforge
|
author: thomas-laforge
|
||||||
challengeNumber: 21
|
challengeNumber: 21
|
||||||
command: angular-anchor-scrolling
|
command: angular-anchor-scrolling
|
||||||
sidebar:
|
sidebar:
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
title: 🟢 @RouterInput()
|
title: 🟢 @RouterInput()
|
||||||
description: Challenge 22 is about using the @Input decorator to retreive router params.
|
description: Challenge 22 is about using the @Input decorator to retreive router params.
|
||||||
author: Thomas Laforge
|
author: thomas-laforge
|
||||||
challengeNumber: 22
|
challengeNumber: 22
|
||||||
command: angular-router-input
|
command: angular-router-input
|
||||||
blogLink: https://medium.com/ngconf/accessing-route-params-in-angular-1f8e12770617
|
blogLink: https://medium.com/ngconf/accessing-route-params-in-angular-1f8e12770617
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
title: 🟠 Directive Enhancement
|
title: 🟠 Directive Enhancement
|
||||||
description: Challenge 3 is about enhancing a built-in directive
|
description: Challenge 3 is about enhancing a built-in directive
|
||||||
author: Thomas Laforge
|
author: thomas-laforge
|
||||||
challengeNumber: 3
|
challengeNumber: 3
|
||||||
command: angular-ngfor-enhancement
|
command: angular-ngfor-enhancement
|
||||||
blogLink: https://medium.com/@thomas.laforge/ngfor-enhancement-716b44656a6c
|
blogLink: https://medium.com/@thomas.laforge/ngfor-enhancement-716b44656a6c
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
title: 🔴 Interoperability Rxjs/Signal
|
title: 🔴 Interoperability Rxjs/Signal
|
||||||
description: Challenge 30 is about learning how to mix signal with Rxjs
|
description: Challenge 30 is about learning how to mix signal with Rxjs
|
||||||
author: Thomas Laforge
|
author: thomas-laforge
|
||||||
challengeNumber: 30
|
challengeNumber: 30
|
||||||
command: angular-interop-rxjs-signal
|
command: angular-interop-rxjs-signal
|
||||||
sidebar:
|
sidebar:
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
title: 🟢 Module to Standalone
|
title: 🟢 Module to Standalone
|
||||||
description: Challenge 31 is about migrating a module based application to a standalone application.
|
description: Challenge 31 is about migrating a module based application to a standalone application.
|
||||||
author: Thomas Laforge
|
author: thomas-laforge
|
||||||
challengeNumber: 31
|
challengeNumber: 31
|
||||||
command: angular-module-to-standalone
|
command: angular-module-to-standalone
|
||||||
sidebar:
|
sidebar:
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
title: 🟠 Change Detection Bug
|
title: 🟠 Change Detection Bug
|
||||||
description: Challenge 32 is about debugging an application that has issue when change detection is triggered
|
description: Challenge 32 is about debugging an application that has issue when change detection is triggered
|
||||||
author: Thomas Laforge
|
author: thomas-laforge
|
||||||
challengeNumber: 32
|
challengeNumber: 32
|
||||||
command: angular-bug-cd
|
command: angular-bug-cd
|
||||||
blogLink: https://medium.com/ngconf/function-calls-inside-template-are-dangerous-15f9822a6629
|
blogLink: https://medium.com/ngconf/function-calls-inside-template-are-dangerous-15f9822a6629
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
title: 🟠 Decoupling Components
|
title: 🟠 Decoupling Components
|
||||||
description: Challenge 33 is about decoupling two strongly coupled components using Injection Token
|
description: Challenge 33 is about decoupling two strongly coupled components using Injection Token
|
||||||
author: Thomas Laforge
|
author: thomas-laforge
|
||||||
challengeNumber: 33
|
challengeNumber: 33
|
||||||
command: angular-decoupling
|
command: angular-decoupling
|
||||||
sidebar:
|
sidebar:
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
title: 🟠 InjectionToken
|
title: 🟠 InjectionToken
|
||||||
description: Challenge 39 is about learning the power of dependancy injection
|
description: Challenge 39 is about learning the power of dependancy injection
|
||||||
author: Thomas Laforge
|
author: thomas-laforge
|
||||||
challengeNumber: 39
|
challengeNumber: 39
|
||||||
command: angular-injection-token
|
command: angular-injection-token
|
||||||
sidebar:
|
sidebar:
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
title: 🔴 Typed ContextOutlet
|
title: 🔴 Typed ContextOutlet
|
||||||
description: Challenge 4 is about strongly typing ngContextOutlet directives
|
description: Challenge 4 is about strongly typing ngContextOutlet directives
|
||||||
author: Thomas Laforge
|
author: thomas-laforge
|
||||||
challengeNumber: 4
|
challengeNumber: 4
|
||||||
command: angular-context-outlet-type
|
command: angular-context-outlet-type
|
||||||
blogLink: https://medium.com/@thomas.laforge/ngtemplateoutlet-type-checking-5d2dcb07a2c6
|
blogLink: https://medium.com/@thomas.laforge/ngtemplateoutlet-type-checking-5d2dcb07a2c6
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
title: 🟢 Crud application
|
title: 🟢 Crud application
|
||||||
description: Challenge 5 is about refactoring a crud application
|
description: Challenge 5 is about refactoring a crud application
|
||||||
author: Thomas Laforge
|
author: thomas-laforge
|
||||||
challengeNumber: 5
|
challengeNumber: 5
|
||||||
command: angular-crud
|
command: angular-crud
|
||||||
sidebar:
|
sidebar:
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
title: 🟠 Structural Directive
|
title: 🟠 Structural Directive
|
||||||
description: Challenge 6 is about creating a structural directive to handle permissions
|
description: Challenge 6 is about creating a structural directive to handle permissions
|
||||||
author: Thomas Laforge
|
author: thomas-laforge
|
||||||
challengeNumber: 6
|
challengeNumber: 6
|
||||||
command: angular-permissions
|
command: angular-permissions
|
||||||
blogLink: https://medium.com/@thomas.laforge/create-a-custom-structural-directive-to-manage-permissions-like-a-pro-11a1acad30ad
|
blogLink: https://medium.com/@thomas.laforge/create-a-custom-structural-directive-to-manage-permissions-like-a-pro-11a1acad30ad
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
title: 🟢 Pure Pipe
|
title: 🟢 Pure Pipe
|
||||||
description: Challenge 8 is about creating a pure pipe
|
description: Challenge 8 is about creating a pure pipe
|
||||||
author: Thomas Laforge
|
author: thomas-laforge
|
||||||
challengeNumber: 8
|
challengeNumber: 8
|
||||||
command: angular-pipe-easy
|
command: angular-pipe-easy
|
||||||
blogLink: https://medium.com/ngconf/deep-dive-into-angular-pipes-c040588cd15d
|
blogLink: https://medium.com/ngconf/deep-dive-into-angular-pipes-c040588cd15d
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
title: 🟠 Wrap Function Pipe
|
title: 🟠 Wrap Function Pipe
|
||||||
description: Challenge 9 is about creating a pipe to wrap component fonctions
|
description: Challenge 9 is about creating a pipe to wrap component fonctions
|
||||||
author: Thomas Laforge
|
author: thomas-laforge
|
||||||
challengeNumber: 9
|
challengeNumber: 9
|
||||||
command: angular-pipe-intermediate
|
command: angular-pipe-intermediate
|
||||||
blogLink: https://medium.com/ngconf/boost-your-apps-performance-by-wrapping-your-functions-inside-a-pipe-7e889a901d1d
|
blogLink: https://medium.com/ngconf/boost-your-apps-performance-by-wrapping-your-functions-inside-a-pipe-7e889a901d1d
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
title: 🟠 Effect vs Selector
|
title: 🟠 Effect vs Selector
|
||||||
description: Challenge 2 is about learning the difference between effects and selectors in NgRx
|
description: Challenge 2 is about learning the difference between effects and selectors in NgRx
|
||||||
author: Thomas Laforge
|
author: thomas-laforge
|
||||||
challengeNumber: 2
|
challengeNumber: 2
|
||||||
command: ngrx-effect-selector
|
command: ngrx-effect-selector
|
||||||
blogLink: https://medium.com/@thomas.laforge/ngrx-effect-vs-reducer-vs-selector-58337ab59043
|
blogLink: https://medium.com/@thomas.laforge/ngrx-effect-vs-reducer-vs-selector-58337ab59043
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
title: 🔴 Power of Effect
|
title: 🔴 Power of Effect
|
||||||
description: Challenge 7 is about creating an Ngrx effect with another Rxjs Hot observable
|
description: Challenge 7 is about creating an Ngrx effect with another Rxjs Hot observable
|
||||||
author: Thomas Laforge
|
author: thomas-laforge
|
||||||
challengeNumber: 7
|
challengeNumber: 7
|
||||||
command: ngrx-notification
|
command: ngrx-notification
|
||||||
sidebar:
|
sidebar:
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
title: 🔴 Extend Lib Generator
|
title: 🔴 Extend Lib Generator
|
||||||
description: Challenge 25 is about creating a Nx generator to extend the built-in Library Generator
|
description: Challenge 25 is about creating a Nx generator to extend the built-in Library Generator
|
||||||
author: Thomas Laforge
|
author: thomas-laforge
|
||||||
challengeNumber: 25
|
challengeNumber: 25
|
||||||
sidebar:
|
sidebar:
|
||||||
order: 207
|
order: 207
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
title: 🟠 Component Generator
|
title: 🟠 Component Generator
|
||||||
description: Challenge 26 is about creating a Nx generator to create a custom component
|
description: Challenge 26 is about creating a Nx generator to create a custom component
|
||||||
author: Thomas Laforge
|
author: thomas-laforge
|
||||||
challengeNumber: 26
|
challengeNumber: 26
|
||||||
sidebar:
|
sidebar:
|
||||||
order: 116
|
order: 116
|
||||||
@@ -88,7 +88,7 @@ export class UserStore extends ComponentStore<UserState> implements OnStateInit,
|
|||||||
loading: this.loading$,
|
loading: this.loading$,
|
||||||
error: this.error$,
|
error: this.error$,
|
||||||
},
|
},
|
||||||
{ debounce: true }
|
{ debounce: true },
|
||||||
);
|
);
|
||||||
|
|
||||||
ngrxOnStateInit() {
|
ngrxOnStateInit() {
|
||||||
@@ -106,11 +106,11 @@ export class UserStore extends ComponentStore<UserState> implements OnStateInit,
|
|||||||
this.userService.loadUsers().pipe(
|
this.userService.loadUsers().pipe(
|
||||||
tapResponse(
|
tapResponse(
|
||||||
(users) => this.patchState({ users, loading: false }),
|
(users) => this.patchState({ users, loading: false }),
|
||||||
(err: string) => this.patchState({ error: err, loading: false })
|
(err: string) => this.patchState({ error: err, loading: false }),
|
||||||
)
|
),
|
||||||
)
|
),
|
||||||
)
|
),
|
||||||
)
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
title: 🟢 Custom Eslint Rule
|
title: 🟢 Custom Eslint Rule
|
||||||
description: Challenge 27 is about creating a custom Eslint Rule to forbid enums
|
description: Challenge 27 is about creating a custom Eslint Rule to forbid enums
|
||||||
author: Thomas Laforge
|
author: thomas-laforge
|
||||||
challengeNumber: 27
|
challengeNumber: 27
|
||||||
sidebar:
|
sidebar:
|
||||||
order: 12
|
order: 12
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
title: 🟠 Optimize Change Detection
|
title: 🟠 Optimize Change Detection
|
||||||
description: Challenge 12 about optimizing the number of change detection cycle while scrolling
|
description: Challenge 12 about optimizing the number of change detection cycle while scrolling
|
||||||
author: Thomas Laforge
|
author: thomas-laforge
|
||||||
challengeNumber: 12
|
challengeNumber: 12
|
||||||
command: performance-scroll-cd
|
command: performance-scroll-cd
|
||||||
sidebar:
|
sidebar:
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
title: 🟢 Default vs OnPush
|
title: 🟢 Default vs OnPush
|
||||||
description: Challenge 34 is about learning the difference between Default and OnPush Change Detection Strategy.
|
description: Challenge 34 is about learning the difference between Default and OnPush Change Detection Strategy.
|
||||||
author: Thomas Laforge
|
author: thomas-laforge
|
||||||
challengeNumber: 34
|
challengeNumber: 34
|
||||||
command: performance-default-onpush
|
command: performance-default-onpush
|
||||||
sidebar:
|
sidebar:
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
title: 🟢 Memoization
|
title: 🟢 Memoization
|
||||||
description: Challenge 35 is about learning how pure pipe works
|
description: Challenge 35 is about learning how pure pipe works
|
||||||
author: Thomas Laforge
|
author: thomas-laforge
|
||||||
challengeNumber: 35
|
challengeNumber: 35
|
||||||
command: performance-memoized
|
command: performance-memoized
|
||||||
sidebar:
|
sidebar:
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
title: 🟢 NgFor Optimization
|
title: 🟢 NgFor Optimization
|
||||||
description: Challenge 36 is about learning how trackby works
|
description: Challenge 36 is about learning how trackby works
|
||||||
author: Thomas Laforge
|
author: thomas-laforge
|
||||||
challengeNumber: 36
|
challengeNumber: 36
|
||||||
command: performance-ngfor-optimize
|
command: performance-ngfor-optimize
|
||||||
sidebar:
|
sidebar:
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
title: 🟠 Optimize Big List
|
title: 🟠 Optimize Big List
|
||||||
description: Challenge 37 is about learning how virtualization optimize big list rendering
|
description: Challenge 37 is about learning how virtualization optimize big list rendering
|
||||||
author: Thomas Laforge
|
author: thomas-laforge
|
||||||
challengeNumber: 37
|
challengeNumber: 37
|
||||||
command: performance-ngfor-biglist
|
command: performance-ngfor-biglist
|
||||||
sidebar:
|
sidebar:
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
title: 🟠 High Order Operator Bug
|
title: 🟠 High Order Operator Bug
|
||||||
description: Challenge 11 is about resolving a Rxjs bug because of high order operators
|
description: Challenge 11 is about resolving a Rxjs bug because of high order operators
|
||||||
author: Thomas Laforge
|
author: thomas-laforge
|
||||||
challengeNumber: 11
|
challengeNumber: 11
|
||||||
command: rxjs-pipe-bug
|
command: rxjs-pipe-bug
|
||||||
sidebar:
|
sidebar:
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
title: 🟢 Race Condition
|
title: 🟢 Race Condition
|
||||||
description: Challenge 14 is about race condition in Rxjs
|
description: Challenge 14 is about race condition in Rxjs
|
||||||
author: Thomas Laforge
|
author: thomas-laforge
|
||||||
challengeNumber: 14
|
challengeNumber: 14
|
||||||
command: rxjs-race-condition
|
command: rxjs-race-condition
|
||||||
sidebar:
|
sidebar:
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
title: 🟢 catchError
|
title: 🟢 catchError
|
||||||
description: Challenge 38 is about learning obervable completion.
|
description: Challenge 38 is about learning obervable completion.
|
||||||
author: Devesh Chaudhari
|
author: devesh-chaudhari
|
||||||
command: rxjs-catch-error
|
command: rxjs-catch-error
|
||||||
challengeNumber: 38
|
challengeNumber: 38
|
||||||
sidebar:
|
sidebar:
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
title: 🟠 Router
|
title: 🟠 Router
|
||||||
description: Challenge 17 is about testing the router
|
description: Challenge 17 is about testing the router
|
||||||
author: Thomas Laforge
|
author: thomas-laforge
|
||||||
challengeNumber: 17
|
challengeNumber: 17
|
||||||
command: testing-router-outlet
|
command: testing-router-outlet
|
||||||
sidebar:
|
sidebar:
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
title: 🟠 Nested Components
|
title: 🟠 Nested Components
|
||||||
description: Challenge 18 is about testing nested components
|
description: Challenge 18 is about testing nested components
|
||||||
author: Thomas Laforge
|
author: thomas-laforge
|
||||||
challengeNumber: 18
|
challengeNumber: 18
|
||||||
command: testing-nested
|
command: testing-nested
|
||||||
sidebar:
|
sidebar:
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
title: 🟠 Input Output
|
title: 🟠 Input Output
|
||||||
description: Challenge 19 is about testing inputs and ouputs
|
description: Challenge 19 is about testing inputs and ouputs
|
||||||
author: Thomas Laforge
|
author: thomas-laforge
|
||||||
challengeNumber: 19
|
challengeNumber: 19
|
||||||
command: testing-input-output
|
command: testing-input-output
|
||||||
sidebar:
|
sidebar:
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
title: 🟠 Modal
|
title: 🟠 Modal
|
||||||
description: Challenge 20 is about testing modals
|
description: Challenge 20 is about testing modals
|
||||||
author: Thomas Laforge
|
author: thomas-laforge
|
||||||
challengeNumber: 20
|
challengeNumber: 20
|
||||||
command: testing-modal
|
command: testing-modal
|
||||||
sidebar:
|
sidebar:
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
title: 🟢 Harness
|
title: 🟢 Harness
|
||||||
description: Challenge 23 is about testing with component harnesses
|
description: Challenge 23 is about testing with component harnesses
|
||||||
author: Thomas Laforge
|
author: thomas-laforge
|
||||||
challengeNumber: 23
|
challengeNumber: 23
|
||||||
command: testing-harness
|
command: testing-harness
|
||||||
sidebar:
|
sidebar:
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
title: 🟠 Harness Creation
|
title: 🟠 Harness Creation
|
||||||
description: Challenge 24 is about creating a component harness.
|
description: Challenge 24 is about creating a component harness.
|
||||||
author: Thomas Laforge
|
author: thomas-laforge
|
||||||
challengeNumber: 24
|
challengeNumber: 24
|
||||||
command: testing-create-harness
|
command: testing-create-harness
|
||||||
sidebar:
|
sidebar:
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
title: 🟢 Checkbox
|
title: 🟢 Checkbox
|
||||||
description: Challenge 28 is about testing a simple checkbox
|
description: Challenge 28 is about testing a simple checkbox
|
||||||
author: Thomas Laforge
|
author: thomas-laforge
|
||||||
challengeNumber: 28
|
challengeNumber: 28
|
||||||
command: testing-checkbox
|
command: testing-checkbox
|
||||||
sidebar:
|
sidebar:
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
title: 🔴 Real-life Application
|
title: 🔴 Real-life Application
|
||||||
description: Challenge 29 is about testing a real-life application
|
description: Challenge 29 is about testing a real-life application
|
||||||
author: Thomas Laforge
|
author: thomas-laforge
|
||||||
challengeNumber: 29
|
challengeNumber: 29
|
||||||
command: testing-todos-list
|
command: testing-todos-list
|
||||||
sidebar:
|
sidebar:
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
title: 🟠 Function Overload
|
title: 🟠 Function Overload
|
||||||
description: Challenge 15 is about creating overload functions
|
description: Challenge 15 is about creating overload functions
|
||||||
author: Thomas Laforge
|
author: thomas-laforge
|
||||||
challengeNumber: 15
|
challengeNumber: 15
|
||||||
command: typescript-overload
|
command: typescript-overload
|
||||||
blogLink: https://medium.com/ngconf/function-overloading-in-typescript-8236706b2c05
|
blogLink: https://medium.com/ngconf/function-overloading-in-typescript-8236706b2c05
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
title: 🟢 Proyección
|
title: 🟢 Proyección
|
||||||
description: Desafio 1 trata sobre aprender a proyectar elementos del DOM a través de componentes,
|
description: Desafio 1 trata sobre aprender a proyectar elementos del DOM a través de componentes,
|
||||||
author: Thomas Laforge
|
author: thomas-laforge
|
||||||
challengeNumber: 1
|
challengeNumber: 1
|
||||||
command: angular-projection
|
command: angular-projection
|
||||||
blogLink: https://medium.com/@thomas.laforge/create-a-highly-customizable-component-cc3a9805e4c5
|
blogLink: https://medium.com/@thomas.laforge/create-a-highly-customizable-component-cc3a9805e4c5
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
title: 🟠 InjectionToken
|
title: 🟠 InjectionToken
|
||||||
description: Desafio de Angular 39 para aprender sobre el poder del InjectionToken
|
description: Desafio de Angular 39 para aprender sobre el poder del InjectionToken
|
||||||
author: Thomas Laforge
|
author: thomas-laforge
|
||||||
challengeNumber: 39
|
challengeNumber: 39
|
||||||
command: angular-injection-token
|
command: angular-injection-token
|
||||||
sidebar:
|
sidebar:
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# <%= title %>
|
# <%= title %>
|
||||||
|
|
||||||
> Author: Thomas Laforge
|
> author: thomas-laforge
|
||||||
|
|
||||||
### Run Application
|
### Run Application
|
||||||
|
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ function findDocFile(
|
|||||||
tree: Tree,
|
tree: Tree,
|
||||||
path: string,
|
path: string,
|
||||||
number: string,
|
number: string,
|
||||||
result: string[]
|
result: string[],
|
||||||
) {
|
) {
|
||||||
if (!tree.isFile(path)) {
|
if (!tree.isFile(path)) {
|
||||||
tree.children(path).forEach((child) => {
|
tree.children(path).forEach((child) => {
|
||||||
@@ -59,13 +59,13 @@ async function rewriteFile(tree: Tree, file: string) {
|
|||||||
tree,
|
tree,
|
||||||
'./docs/src/content/docs/challenges',
|
'./docs/src/content/docs/challenges',
|
||||||
String(number),
|
String(number),
|
||||||
result
|
result,
|
||||||
);
|
);
|
||||||
const docFile = result[0];
|
const docFile = result[0];
|
||||||
|
|
||||||
const pathElts = docFile.split('/');
|
const pathElts = docFile.split('/');
|
||||||
const link = `https://angular-challenges.vercel.app/challenges/${pathElts.at(
|
const link = `https://angular-challenges.vercel.app/challenges/${pathElts.at(
|
||||||
-2
|
-2,
|
||||||
)}/${pathElts.at(-1)}/`;
|
)}/${pathElts.at(-1)}/`;
|
||||||
|
|
||||||
const doc = tree.read(docFile);
|
const doc = tree.read(docFile);
|
||||||
@@ -89,7 +89,7 @@ async function rewriteFile(tree: Tree, file: string) {
|
|||||||
|
|
||||||
const finalText = `# ${title}
|
const finalText = `# ${title}
|
||||||
|
|
||||||
> Author: Thomas Laforge
|
> author: thomas-laforge
|
||||||
|
|
||||||
### Run Application
|
### Run Application
|
||||||
|
|
||||||
@@ -154,14 +154,14 @@ Your PR title must start with <b>Answer:${number}</b>.
|
|||||||
console.log('header', header);
|
console.log('header', header);
|
||||||
|
|
||||||
const regexContent = new RegExp(
|
const regexContent = new RegExp(
|
||||||
/Author: Thomas Laforge([\s\S]*?)### Submitting your work/
|
/author: thomas-laforge([\s\S]*?)### Submitting your work/,
|
||||||
);
|
);
|
||||||
const matchContent = buffer.toString().match(regexContent);
|
const matchContent = buffer.toString().match(regexContent);
|
||||||
|
|
||||||
let content = '';
|
let content = '';
|
||||||
if (!matchContent) {
|
if (!matchContent) {
|
||||||
const regexOldContent = new RegExp(
|
const regexOldContent = new RegExp(
|
||||||
/Author: Thomas Laforge([\s\S]*?)## Submitting your work/
|
/author: thomas-laforge([\s\S]*?)## Submitting your work/,
|
||||||
);
|
);
|
||||||
content = buffer.toString().match(regexOldContent)[1];
|
content = buffer.toString().match(regexOldContent)[1];
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Extend Lib Generator
|
# Extend Lib Generator
|
||||||
|
|
||||||
> Author: Thomas Laforge
|
> author: thomas-laforge
|
||||||
|
|
||||||
### Documentation and Instruction
|
### Documentation and Instruction
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Component Generator
|
# Component Generator
|
||||||
|
|
||||||
> Author: Thomas Laforge
|
> author: thomas-laforge
|
||||||
|
|
||||||
### Documentation and Instruction
|
### Documentation and Instruction
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Custom Eslint Rule
|
# Custom Eslint Rule
|
||||||
|
|
||||||
> Author: Thomas Laforge
|
> author: thomas-laforge
|
||||||
|
|
||||||
### Run Application
|
### Run Application
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user