Skip to content

Instantly share code, notes, and snippets.

@simpulton
Last active June 11, 2021 16:19
Show Gist options
  • Save simpulton/48c4922666c56c432495a319982292d3 to your computer and use it in GitHub Desktop.
Save simpulton/48c4922666c56c432495a319982292d3 to your computer and use it in GitHub Desktop.
VS Code NgRx Snippets
{
"Print to console": {
"prefix": "clog",
"body": [
"console.log('$1', $2)$0"
],
"description": "Log output to console"
},
"NgRx: Single Entity Action": {
"prefix": "ngrx-act-single",
"body": [
"export const ${1:action}${2/(.*)/${1:/capitalize}/} = createAction(",
" '[${2/(.*)/${1:/capitalize}/}s] ${1/(.*)/${1:/capitalize}/} ${2/(.*)/${1:/capitalize}/}',",
" props<{ ${2:model}: ${2/(.*)/${1:/capitalize}/} }>()",
");",
""
],
"description": "NgRx: Single Entity Action"
},
"NgRx: Single Entity Actions": {
"prefix": "ngrx-acts-single",
"body": [
"export const ${1:action}${2/(.*)/${1:/capitalize}/} = createAction(",
" '[${2/(.*)/${1:/capitalize}/}s] ${1/(.*)/${1:/capitalize}/} ${2/(.*)/${1:/capitalize}/}',",
" props<{ ${2:model}: ${2/(.*)/${1:/capitalize}/} }>()",
");",
"",
"export const ${1:action}${2/(.*)/${1:/capitalize}/}Success = createAction(",
" '[${2/(.*)/${1:/capitalize}/}s] ${1/(.*)/${1:/capitalize}/} ${2/(.*)/${1:/capitalize}/} Success',",
" props<{ ${2:model}: ${2/(.*)/${1:/capitalize}/} }>()",
");",
"",
"export const ${1:action}${2/(.*)/${1:/capitalize}/}Failure = createAction(",
" '[${2/(.*)/${1:/capitalize}/}s] ${1/(.*)/${1:/capitalize}/} ${2/(.*)/${1:/capitalize}/} Failure',",
" props<{ error: any }>()",
");",
""
],
"description": "NgRx: Single Entity Actions"
},
"NgRx: Multi Entity Actions": {
"prefix": "ngrx-acts-multi",
"body": [
"export const ${1:action}${2/(.*)/${1:/capitalize}/}s = createAction(",
" '[${2/(.*)/${1:/capitalize}/}s] ${1/(.*)/${1:/capitalize}/} ${2/(.*)/${1:/capitalize}/}s',",
" props<{ ${2:model}s: ${2/(.*)/${1:/capitalize}/}[] }>()",
");",
"",
"export const ${1:action}${2/(.*)/${1:/capitalize}/}sSuccess = createAction(",
" '[${2/(.*)/${1:/capitalize}/}s] ${1/(.*)/${1:/capitalize}/} ${2/(.*)/${1:/capitalize}/}s Success',",
" props<{ ${2:model}s: ${2/(.*)/${1:/capitalize}/}[] }>()",
");",
"",
"export const ${1:action}${2/(.*)/${1:/capitalize}/}sFailure = createAction(",
" '[${2/(.*)/${1:/capitalize}/}s] ${1/(.*)/${1:/capitalize}/} ${2/(.*)/${1:/capitalize}/}s Failure',",
" props<{ error: any }>()",
");",
"${0}"
],
"description": "NgRx: Multi Entity Actions"
},
"NgRx: Single Entity Effect": {
"prefix": "ngrx-fx-single",
"body": [
"@Effect() ${1:action}${2/(.*)/${1:/capitalize}/}$ = this.actions$.pipe(",
" ofType(${2/(.*)/${1:/capitalize}/}sActions.${1:action}${2/(.*)/${1:/capitalize}/}),",
" pessimisticUpdate({",
" run: (action) => this.${2:model}sService.${1:action}(action.${2:model}).pipe(",
" map((${2:model}: ${2/(.*)/${1:/capitalize}/}) => ${2/(.*)/${1:/capitalize}/}sActions.${1:action}${2/(.*)/${1:/capitalize}/}Success({ ${2:model} }))",
" ),",
" onError: (action, error) => ${2/(.*)/${1:/capitalize}/}sActions.${1:action}${2/(.*)/${1:/capitalize}/}Failure({ error })",
" })",
");"
],
"description": "NgRx: Single Entity Effect"
},
"NgRx: Multi Entity Effect": {
"prefix": "ngrx-fx-multi",
"body": [
"@Effect() ${1:action}${2/(.*)/${1:/capitalize}/}s$ = this.actions$.pipe(",
" ofType(${2/(.*)/${1:/capitalize}/}sActions.${1:action}${2/(.*)/${1:/capitalize}/}s),",
" fetch({",
" run: (action) => this.${2:model}sService.all().pipe(",
" map((${2:model}s: ${2/(.*)/${1:/capitalize}/}[]) => ${2/(.*)/${1:/capitalize}/}sActions.${1:action}${2/(.*)/${1:/capitalize}/}sSuccess({ ${2:model}s }))",
" ),",
" onError: (action, error) => ${2/(.*)/${1:/capitalize}/}sActions.${1:action}${2/(.*)/${1:/capitalize}/}sFailure({ error })",
" })",
");",
""
],
"description": "NgRx: Multi Entity Effect"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment