diff --git a/.cz-config.js b/.cz-config.js index de37a25e5..e29244ab4 100644 --- a/.cz-config.js +++ b/.cz-config.js @@ -15,8 +15,8 @@ const packages = Object.entries(wp.projects) // console.log(e) } }) - .filter((e) => !!e) - .map((name) => ({ name })); + .filter(e => !!e) + .map(name => ({ name })); module.exports = { types: [ @@ -25,21 +25,21 @@ module.exports = { { value: 'docs', name: 'docs: Documentation only changes' }, { value: 'style', - name: 'style: Changes that do not affect the meaning of the code\n (white-space, formatting, missing semi-colons, etc)', + name: 'style: Changes that do not affect the meaning of the code\n (white-space, formatting, missing semi-colons, etc)' }, { value: 'refactor', name: 'refactor: A code change that neither fixes a bug nor adds a feature' }, { value: 'perf', name: 'perf: A code change that improves performance' }, { value: 'test', name: 'test: Adding missing tests' }, { value: 'chore', - name: 'chore: Changes to the build process or auxiliary tools\n and libraries such as documentation generation', + name: 'chore: Changes to the build process or auxiliary tools\n and libraries such as documentation generation' }, { value: 'revert', name: 'revert: Revert to a commit' }, { value: 'ci', name: 'CI: Add or change CI functions' }, - { value: 'wip', name: 'WIP: Work in progress' }, + { value: 'wip', name: 'WIP: Work in progress' } ], - scopes: [{ name: 'Actions' }, { name: 'docsWeb' }, { name: 'monorepo' }].concat(packages), + scopes: [{ name: 'actions' }, { name: 'docsweb' }, { name: 'monorepo' }].concat(packages), // it needs to match the value for field type. Eg.: 'fix' /* @@ -62,12 +62,12 @@ module.exports = { body: 'Provide a LONGER description of the change (optional). Use "|" to break new line:\n', breaking: 'List any BREAKING CHANGES (optional):\n', footer: 'List any ISSUES CLOSED by this change (optional). E.g.: #31, #34:\n', - confirmCommit: 'Are you sure you want to proceed with the commit above?', + confirmCommit: 'Are you sure you want to proceed with the commit above?' }, allowCustomScopes: true, allowBreakingChanges: ['feat', 'fix', 'perf'], // limit subject length - subjectLimit: 100, + subjectLimit: 100 }; diff --git a/.firebase/hosting.ZGlzdFxzdGF0aWNcZG9jLXNpdGVz.cache b/.firebase/hosting.ZGlzdFxzdGF0aWNcZG9jLXNpdGVz.cache index 314a09a9b..a409902fc 100644 --- a/.firebase/hosting.ZGlzdFxzdGF0aWNcZG9jLXNpdGVz.cache +++ b/.firebase/hosting.ZGlzdFxzdGF0aWNcZG9jLXNpdGVz.cache @@ -70,7 +70,7 @@ docs/learn/plugins/built-in-plugins/contentFolder/index.html,1596568073818,77c91 docs/learn/plugins/built-in-plugins/json/index.html,1596568073463,55489660f9b8004978948fc26db370c6355bce308f9c995a73decd4c9b6e580f docs/learn/plugins/built-in-plugins/md/index.html,1596568073596,fa4befb3f162a18827a62a3acbd09df7858ba43bbde7502d549ceecbb3ec0628 docs/learn/plugins/built-in-plugins/router-/index.html,1596568073823,e938b38eebcca70115c859042157300ca2da167a4e1b39a2ec042c73152ee969 -docs/learn/plugins/built-in-plugins/seoHrefOptimize/index.html,1596568073506,cdd031510ac8e5f37e2a4eaf72f7d29904688f70c8289aa0a38d4b9b7c33be39 +docs/learn/plugins/built-in-plugins/seoHrefOptimise/index.html,1596568073506,cdd031510ac8e5f37e2a4eaf72f7d29904688f70c8289aa0a38d4b9b7c33be39 docs/learn/plugins/community-plugins/disableAngular/index.html,1596568073710,1f836ad6c20b429f511c263d0fa0f1634cf393fcbea4cf9b76be50c85d2acc64 docs/learn/plugins/community-plugins/lazyImages/index.html,1596568074358,b74028559821edadf01532e8fc429305889e701a9facf65770f0189f927a30ac docs/learn/plugins/community-plugins/fouc/index.html,1596568073560,8a965028230d041542eab3f153944323ada7bebef9b64c7d3b404143998ec5bd diff --git a/.github/build-artifacts/action.yml b/.github/build-artifacts/action.yml index ef58587eb..24261c2e3 100644 --- a/.github/build-artifacts/action.yml +++ b/.github/build-artifacts/action.yml @@ -20,7 +20,7 @@ runs: key: dist-${{ inputs.node-version }}-${{ github.run_id }} - name: Build the dist artifacts, when not yet cached for this workflow if: steps.cache-dist.outputs.cache-hit != 'true' - run: npm run build:code + run: npx nx run-many --target=build --all=true --parallel=true --max-parallel=8 --configuration production shell: bash - name: create symlinks as those are needed in all other workflows run: npm run symlinks diff --git a/.github/test-build-verdaccio/action.yml b/.github/test-build-verdaccio/action.yml index be2dd35bc..1b0bbfefd 100644 --- a/.github/test-build-verdaccio/action.yml +++ b/.github/test-build-verdaccio/action.yml @@ -18,7 +18,7 @@ runs: uses: verdaccio/github-actions/publish@v0.1.0 with: args: -d - - name : Test if angular builds using local register + - name: Test if angular builds using local register env: CI: true NG_CLI_ANALYTICS: false false diff --git a/.github/test-build/action.yml b/.github/test-build/action.yml index 265cbdc49..d836b260f 100644 --- a/.github/test-build/action.yml +++ b/.github/test-build/action.yml @@ -48,7 +48,7 @@ runs: npm i rxjs@7 --legacy-peer-deps --force --quiet --silent echo "$scullyFolder" cp ../scully/*.tgz . - for f in scullyio-scully-2*.tgz; do + for f in scullyio-scully-3*.tgz; do echo "install package $f" npm install $f --force --legacy-peer-deps --quiet --silent done @@ -78,4 +78,4 @@ runs: npx browserslist "> 10%" > .browserslistrc npx ng build echo "run Scully" - npx scully --noPrompt + npx --node-options='--experimental-specifier-resolution=node' scully --noPrompt diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 721eb2614..a87a8539d 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -1,12 +1,12 @@ -name: "CodeQL analysis" +name: 'CodeQL analysis' on: push: - branches: [ main ] + branches: [main] pull_request: - branches: [ main ] + branches: [main] schedule: - # every wednesday ay 2.29 + # every wednesday ay 2.29 - cron: '29 2 * * 3' jobs: @@ -21,30 +21,30 @@ jobs: strategy: fail-fast: false matrix: - language: [ 'javascript', 'typescript' ] + language: ['javascript', 'typescript'] steps: - - name: Checkout repository - uses: actions/checkout@v2 - - name: Initialize CodeQL - uses: github/codeql-action/init@v1 - with: - languages: ${{ matrix.language }} - # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). - # If this step fails, then you should remove it and run the build manually (see below) - - name: Autobuild - uses: github/codeql-action/autobuild@v1 - - # ℹ️ Command-line programs to run using the OS shell. - # 📚 https://git.io/JvXDl - - # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines - # and modify them (or add more) to build your code if your project - # uses a compiled language - - #- run: | - # make bootstrap - # make release - - - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v1 + - name: Checkout repository + uses: actions/checkout@v2 + - name: Initialize CodeQL + uses: github/codeql-action/init@v1 + with: + languages: ${{ matrix.language }} + # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). + # If this step fails, then you should remove it and run the build manually (see below) + - name: Autobuild + uses: github/codeql-action/autobuild@v1 + + # ℹ️ Command-line programs to run using the OS shell. + # 📚 https://git.io/JvXDl + + # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines + # and modify them (or add more) to build your code if your project + # uses a compiled language + + #- run: | + # make bootstrap + # make release + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v1 diff --git a/.github/workflows/workflow.yml b/.github/workflows/workflow.yml index 506cd8bc4..83d2c8ec9 100644 --- a/.github/workflows/workflow.yml +++ b/.github/workflows/workflow.yml @@ -1,11 +1,12 @@ name: Scully build, test, package, and deploy on: - # Trigger the workflow on any updates of the PR, but not on push to main. - # as that would only result in testing code that has just finnished testing - # but only for the main branch + # Trigger the workflow on any updates of the PR, but not on push to main/next. + # as that would only result in testing code that has just finished testing + # but only for the main and next branch pull_request: types: [opened, synchronize, reopened, labeled] + branch: [main, next] jobs: prepare: @@ -13,7 +14,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - node: [16.x, 14.x] + node: [16.13.2, 14.x] steps: - name: Checkout branch uses: actions/checkout@v2 @@ -29,7 +30,7 @@ jobs: strategy: matrix: - node: [16.x] + node: [16.13.2] renderer: [sps, ppt, pw] steps: @@ -41,7 +42,7 @@ jobs: node-version: ${{ matrix.node }} - name: build sample-blog run: | - node ./dist/libs/scully/src/scully --tds --project=sample-blog --404=index --scan + node --experimental-specifier-resolution=node ./dist/libs/scully/src/scully --tds --project=sample-blog --404=index --scan env: SCULLY_VAULT_DEMO_KEY: ${{ secrets.SCULLY_VAULT_DEMO_KEY }} SCULLY_rnd: ${{ matrix.renderer }} @@ -58,7 +59,7 @@ jobs: strategy: matrix: - node: [16.x] + node: [16.13.2] renderer: [sps, ppt, pw] steps: @@ -72,15 +73,13 @@ jobs: env: SCULLY_rnd: ${{ matrix.renderer }} run: | - node ./dist/libs/scully/src/scully --tds --project=scully-docs --404=index + node --experimental-specifier-resolution=node ./dist/libs/scully/src/scully --tds --project=scully-docs --404=index - name: Store docs-site uses: actions/upload-artifact@v2 with: name: static-sites-docs-${{ matrix.renderer }} path: dist/static/doc-sites - - jest-test: name: Run Jest tests needs: [buildDocs, buildSample] @@ -88,7 +87,7 @@ jobs: strategy: matrix: - node: [16.x] + node: [16.13.2] renderer: [sps, ppt, pw] steps: @@ -120,7 +119,7 @@ jobs: strategy: matrix: - node: [16.x] + node: [16.13.2] renderer: [sps, ppt, pw] steps: @@ -141,20 +140,19 @@ jobs: path: dist/static/sample-blog - name: Run the tests run: | - node ./dist/libs/scully/src/scully prepServe --project=sample-blog + node --experimental-specifier-resolution=node ./dist/libs/scully/src/scully.mjs prepServe --project=sample-blog npm run cypress:e2e:server env: CI: true - testnewApp: name: Test if we can create a new app needs: [prepare] runs-on: ubuntu-latest strategy: matrix: - node: [16.x, 14.x] - angular: [12, 13] + node: [16.13.2, 14.x] + angular: [12, 13, next] steps: - name: Checkout branch uses: actions/checkout@v2 diff --git a/.gitignore b/.gitignore index f4a27e05f..6852434e2 100644 --- a/.gitignore +++ b/.gitignore @@ -28,6 +28,7 @@ apps/**/node_modules !.vscode/extensions.json # misc +/.angular/cache /.sass-cache /connect.lock /coverage @@ -54,11 +55,12 @@ test_for_zoneJS.ts migrations.* testDocs -scully/tsconfig.sps-sample.json adsample.js bs.sh consoleProxy.ts .angular +scully.sample-blog.config.mjs +scully.scully-docs.config.mjs *.tgz testCreate.sh scully/runtime diff --git a/.husky/commit-msg b/.husky/commit-msg old mode 100644 new mode 100755 diff --git a/.prettierrc b/.prettierrc index 544138be4..8a45dc88e 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,3 +1,6 @@ { - "singleQuote": true + "singleQuote": true, + "trailingComma": "none", + "printWidth": 132, + "arrowParens": "avoid" } diff --git a/README.md b/README.md index 316b645d5..dcdf6060e 100644 --- a/README.md +++ b/README.md @@ -45,6 +45,7 @@ wrote a [free book about the Jamstack](https://www.netlify.com/pdf/oreilly-moder Check that out today. > ### NOTE! +> > Please notice that with the release of Scully version 2, support for Angular versions lower as 12 is deprecated. > for older versions, you can keep on using the existing 1.1.1 version, which will only receive security updates from now on. diff --git a/apps/sample-blog/.vscode/settings.json b/apps/sample-blog/.vscode/settings.json new file mode 100644 index 000000000..08bd4b28d --- /dev/null +++ b/apps/sample-blog/.vscode/settings.json @@ -0,0 +1,18 @@ +{ + "workbench.colorCustomizations": { + "activityBar.activeBackground": "#fcfaff", + "activityBar.activeBorder": "#ff8c40", + "activityBar.background": "#fcfaff", + "activityBar.foreground": "#15202b", + "activityBar.inactiveForeground": "#15202b99", + "activityBarBadge.background": "#ff8c40", + "activityBarBadge.foreground": "#15202b", + "sash.hoverBorder": "#fcfaff", + "statusBar.background": "#ddccfa", + "statusBar.foreground": "#15202b", + "statusBarItem.hoverBackground": "#be9ef5", + "statusBarItem.remoteBackground": "#ddccfa", + "statusBarItem.remoteForeground": "#15202b" + }, + "peacock.color": "#ddccfa" +} diff --git a/apps/sample-blog/src/app/about/about.component.ts b/apps/sample-blog/src/app/about/about.component.ts index 9b495610d..914a6c40c 100644 --- a/apps/sample-blog/src/app/about/about.component.ts +++ b/apps/sample-blog/src/app/about/about.component.ts @@ -11,7 +11,7 @@ export class AboutComponent implements OnInit { constructor(private srs: ScullyRoutesService) {} async ngOnInit() { - const cur = await firstValueFrom(this.srs.getCurrent()) + const cur = await firstValueFrom(this.srs.getCurrent()); console.log(cur); } } diff --git a/apps/sample-blog/src/app/app.component.ts b/apps/sample-blog/src/app/app.component.ts index de9d74cb3..0bb8a986d 100644 --- a/apps/sample-blog/src/app/app.component.ts +++ b/apps/sample-blog/src/app/app.component.ts @@ -1,9 +1,8 @@ -import { Component } from '@angular/core'; -import { - IdleMonitorService, - isScullyGenerated, - isScullyRunning -} from '@scullyio/ng-lib'; +import { ApplicationRef, Component } from '@angular/core'; +import { Location, LocationStrategy } from '@angular/common'; +import { ActivatedRoute, Router } from '@angular/router'; +import { IdleMonitorService, isScullyGenerated, isScullyRunning } from '@scullyio/ng-lib'; +import { tap } from 'rxjs'; @Component({ selector: 'app-root', @@ -11,10 +10,27 @@ import { styleUrls: ['./app.component.css'] }) export class AppComponent { - currentState = isScullyRunning() - ? 'rendering inside scully' - : isScullyGenerated() - ? 'Loaded from static HTML' - : 'SPA mode'; - constructor() {} + currentState = isScullyRunning() ? 'rendering inside scully' : isScullyGenerated() ? 'Loaded from static HTML' : 'SPA mode'; + constructor( + private im: IdleMonitorService, + private route: ActivatedRoute, + private loc: Location, + private router: Router, + platformStrategy: LocationStrategy, + private appRef: ApplicationRef + ) { + im.init(); + appRef.isStable.pipe( + tap(stable => { + console.log(` + stable: ${stable} + AppComponent: ${this.currentState} + loc: ${this.loc.path(true)} + url: ${this.route.snapshot.pathFromRoot.map(x => x.url).join('/')} + route: ${this.router.url}, + ps: ${platformStrategy.constructor.name} + `); + }) + ); //.subscribe(); + } } diff --git a/apps/sample-blog/src/app/app.module.ts b/apps/sample-blog/src/app/app.module.ts index 9c9e33b27..7d68a2b26 100644 --- a/apps/sample-blog/src/app/app.module.ts +++ b/apps/sample-blog/src/app/app.module.ts @@ -11,10 +11,8 @@ import { AppComponent } from './app.component'; BrowserModule, //.withServerTransition({ appId: 'sampleBlog' }), HttpClientModule, AppRoutingModule, - ScullyLibModule - .forRoot({ useTransferState: true, alwaysMonitor: true }) + ScullyLibModule.forRoot({ useTransferState: true, alwaysMonitor: true }) ], bootstrap: [AppComponent] }) -export class AppModule { } - +export class AppModule {} diff --git a/apps/sample-blog/src/app/app.sps.module.ts b/apps/sample-blog/src/app/app.sps.module.ts index 2c91fee01..6bb40d68e 100644 --- a/apps/sample-blog/src/app/app.sps.module.ts +++ b/apps/sample-blog/src/app/app.sps.module.ts @@ -1,23 +1,17 @@ import { enableProdMode, NgModule } from '@angular/core'; +import { BrowserModule } from '@angular/platform-browser'; +import { ScullyPlatformServerModule } from '@scullyio/platform-server'; import { AppComponent } from './app.component'; import { AppModule } from './app.module'; -import { ScullyPlatformServerModule } from '@scullyio/platform-server' -import { BrowserModule } from '@angular/platform-browser'; - /** * the platform server should be running in production mode. */ enableProdMode(); - @NgModule({ - imports: [ - BrowserModule.withServerTransition({ appId: 'serverApp' }), - AppModule, - ScullyPlatformServerModule, - ], - providers: [], - bootstrap: [AppComponent], + imports: [BrowserModule.withServerTransition({ appId: 'serverApp' }), AppModule, ScullyPlatformServerModule], + // providers: [{ provide: XhrFactory, useClass: ScullyXhrFactory }], + bootstrap: [AppComponent] }) export default class AppSPSModule {} diff --git a/apps/sample-blog/src/app/basehref/basehref.module.ts b/apps/sample-blog/src/app/basehref/basehref.module.ts index 90b642cd0..7ab28e4bb 100644 --- a/apps/sample-blog/src/app/basehref/basehref.module.ts +++ b/apps/sample-blog/src/app/basehref/basehref.module.ts @@ -3,16 +3,12 @@ import { ScullyLibModule } from '@scullyio/ng-lib'; import { Routes, RouterModule } from '@angular/router'; @Component({ - template: ` -

Base Href component

- ` + template: `

Base Href component

` }) class BaseHrefComponent {} @Component({ - template: ` -

Base Href rewritten component

- ` + template: `

Base Href rewritten component

` }) class BaseHrefRewrittenComponent implements OnInit { ngOnInit() { @@ -24,9 +20,7 @@ class BaseHrefRewrittenComponent implements OnInit { } } @Component({ - template: ` -

Base Href removed component

- ` + template: `

Base Href removed component

` }) class BaseHrefRemovedComponent implements OnInit { ngOnInit() { diff --git a/apps/sample-blog/src/app/blog/blog-holder.component.ts b/apps/sample-blog/src/app/blog/blog-holder.component.ts index b2f602026..45499771a 100644 --- a/apps/sample-blog/src/app/blog/blog-holder.component.ts +++ b/apps/sample-blog/src/app/blog/blog-holder.component.ts @@ -20,14 +20,14 @@ import { map } from 'rxjs'; Route to Page 4 Fragment - `, + ` }) export class BlogHolderComponent { blogs$ = this.sts.useScullyTransferState( 'blogRoutes', this.srs.available$.pipe( - map((routeList) => routeList.filter((route: ScullyRoute) => route.route.startsWith(`/blog/`))), - map((blogs) => blogs.sort((a, b) => (a.date < b.date ? -1 : 1))) + map(routeList => routeList.filter((route: ScullyRoute) => route.route.startsWith(`/blog/`))), + map(blogs => blogs.sort((a, b) => (a.date < b.date ? -1 : 1))) ) ); diff --git a/apps/sample-blog/src/app/blog/blog-list/blog-list.component.spec.ts b/apps/sample-blog/src/app/blog/blog-list/blog-list.component.spec.ts index fd24236fe..b46b6af32 100644 --- a/apps/sample-blog/src/app/blog/blog-list/blog-list.component.spec.ts +++ b/apps/sample-blog/src/app/blog/blog-list/blog-list.component.spec.ts @@ -9,7 +9,7 @@ describe('BlogListComponent', () => { beforeEach( waitForAsync(() => { TestBed.configureTestingModule({ - declarations: [BlogListComponent], + declarations: [BlogListComponent] }).compileComponents(); }) ); diff --git a/apps/sample-blog/src/app/blog/blog-list/blog-list.component.ts b/apps/sample-blog/src/app/blog/blog-list/blog-list.component.ts index f4bf341ef..ef18c468e 100644 --- a/apps/sample-blog/src/app/blog/blog-list/blog-list.component.ts +++ b/apps/sample-blog/src/app/blog/blog-list/blog-list.component.ts @@ -9,9 +9,7 @@ import { map } from 'rxjs'; }) export class BlogListComponent implements OnInit { blogs$ = this.srs.available$.pipe( - map(routeList => - routeList.filter((route: ScullyRoute) => route.route.startsWith(`/blog/`)) - ), + map(routeList => routeList.filter((route: ScullyRoute) => route.route.startsWith(`/blog/`))), map(blogs => blogs.sort((a, b) => (a.date < b.date ? -1 : 1))) ); diff --git a/apps/sample-blog/src/app/blog/blog-routing.module.ts b/apps/sample-blog/src/app/blog/blog-routing.module.ts index c18aa3cf1..9400e8129 100644 --- a/apps/sample-blog/src/app/blog/blog-routing.module.ts +++ b/apps/sample-blog/src/app/blog/blog-routing.module.ts @@ -12,18 +12,18 @@ const routes: Routes = [ children: [ { path: ':slug', - component: BlogComponent, + component: BlogComponent }, { path: '**', - component: BlogComponent, - }, - ], - }, + component: BlogComponent + } + ] + } ]; @NgModule({ imports: [RouterModule.forChild(routes)], - exports: [RouterModule], + exports: [RouterModule] }) export class BlogRoutingModule {} diff --git a/apps/sample-blog/src/app/blog/blog.component.spec.ts b/apps/sample-blog/src/app/blog/blog.component.spec.ts index 4f8c0f27a..2edf87ac8 100644 --- a/apps/sample-blog/src/app/blog/blog.component.spec.ts +++ b/apps/sample-blog/src/app/blog/blog.component.spec.ts @@ -9,7 +9,7 @@ describe('BlogComponent', () => { beforeEach( waitForAsync(() => { TestBed.configureTestingModule({ - declarations: [BlogComponent], + declarations: [BlogComponent] }).compileComponents(); }) ); diff --git a/apps/sample-blog/src/app/blog/blog.component.ts b/apps/sample-blog/src/app/blog/blog.component.ts index b6409f361..f701bb7e2 100644 --- a/apps/sample-blog/src/app/blog/blog.component.ts +++ b/apps/sample-blog/src/app/blog/blog.component.ts @@ -7,6 +7,6 @@ declare var window: any; templateUrl: './blog.component.html', styleUrls: ['./blog.component.css'], preserveWhitespaces: true, - encapsulation: ViewEncapsulation.Emulated, + encapsulation: ViewEncapsulation.Emulated }) export class BlogComponent {} diff --git a/apps/sample-blog/src/app/blog/blog.module.ts b/apps/sample-blog/src/app/blog/blog.module.ts index cf682764f..ed5d54b34 100644 --- a/apps/sample-blog/src/app/blog/blog.module.ts +++ b/apps/sample-blog/src/app/blog/blog.module.ts @@ -8,6 +8,6 @@ import { BlogHolderComponent } from './blog-holder.component'; @NgModule({ declarations: [BlogComponent, BlogListComponent, BlogHolderComponent], - imports: [CommonModule, BlogRoutingModule, ScullyLibModule], + imports: [CommonModule, BlogRoutingModule, ScullyLibModule] }) export class BlogModule {} diff --git a/apps/sample-blog/src/app/content/content.component.ts b/apps/sample-blog/src/app/content/content.component.ts index 0009d06c9..4ed8b7134 100644 --- a/apps/sample-blog/src/app/content/content.component.ts +++ b/apps/sample-blog/src/app/content/content.component.ts @@ -3,7 +3,7 @@ import { Component, OnInit } from '@angular/core'; @Component({ selector: 'app-content-component', template: `

Content component

- `, + ` }) export class ContentComponent implements OnInit { constructor() {} diff --git a/apps/sample-blog/src/app/content/content.module.ts b/apps/sample-blog/src/app/content/content.module.ts index 6fa18d7da..64abdb077 100644 --- a/apps/sample-blog/src/app/content/content.module.ts +++ b/apps/sample-blog/src/app/content/content.module.ts @@ -8,16 +8,16 @@ import { Routes, RouterModule } from '@angular/router'; const routes: Routes = [ { path: ':slug', - component: ContentComponent, + component: ContentComponent }, { path: '**', - component: ContentComponent, - }, + component: ContentComponent + } ]; @NgModule({ imports: [CommonModule, ScullyLibModule, RouterModule.forChild(routes)], - declarations: [ContentComponent], + declarations: [ContentComponent] }) export class ContentModule {} diff --git a/apps/sample-blog/src/app/demo/demo.component.spec.ts b/apps/sample-blog/src/app/demo/demo.component.spec.ts index 0e8e15cab..c8761f2a9 100644 --- a/apps/sample-blog/src/app/demo/demo.component.spec.ts +++ b/apps/sample-blog/src/app/demo/demo.component.spec.ts @@ -9,7 +9,7 @@ describe('DemoComponent', () => { beforeEach( waitForAsync(() => { TestBed.configureTestingModule({ - declarations: [DemoComponent], + declarations: [DemoComponent] }).compileComponents(); }) ); diff --git a/apps/sample-blog/src/app/exclude/exclude.component.spec.ts b/apps/sample-blog/src/app/exclude/exclude.component.spec.ts index d486e6e30..d60199484 100644 --- a/apps/sample-blog/src/app/exclude/exclude.component.spec.ts +++ b/apps/sample-blog/src/app/exclude/exclude.component.spec.ts @@ -9,7 +9,7 @@ describe('ExcludeComponent', () => { beforeEach( waitForAsync(() => { TestBed.configureTestingModule({ - declarations: [ExcludeComponent], + declarations: [ExcludeComponent] }).compileComponents(); }) ); diff --git a/apps/sample-blog/src/app/exclude/exclude.component.ts b/apps/sample-blog/src/app/exclude/exclude.component.ts index bc3f3909b..f5a44d742 100644 --- a/apps/sample-blog/src/app/exclude/exclude.component.ts +++ b/apps/sample-blog/src/app/exclude/exclude.component.ts @@ -2,9 +2,7 @@ import { Component, OnInit } from '@angular/core'; @Component({ selector: 'app-exclude', - template: ` -

exclude works!

- `, + template: `

exclude works!

`, styles: [``] }) export class ExcludeComponent implements OnInit { diff --git a/apps/sample-blog/src/app/manual-idle/manual-idle.component.spec.ts b/apps/sample-blog/src/app/manual-idle/manual-idle.component.spec.ts index 61824ab74..427250a93 100644 --- a/apps/sample-blog/src/app/manual-idle/manual-idle.component.spec.ts +++ b/apps/sample-blog/src/app/manual-idle/manual-idle.component.spec.ts @@ -9,7 +9,7 @@ describe('ManualIdleComponent', () => { beforeEach( waitForAsync(() => { TestBed.configureTestingModule({ - declarations: [ManualIdleComponent], + declarations: [ManualIdleComponent] }).compileComponents(); }) ); diff --git a/apps/sample-blog/src/app/noscript/noscript.module.ts b/apps/sample-blog/src/app/noscript/noscript.module.ts index 3c7e37a02..e775ec9bd 100644 --- a/apps/sample-blog/src/app/noscript/noscript.module.ts +++ b/apps/sample-blog/src/app/noscript/noscript.module.ts @@ -12,12 +12,12 @@ import { User } from '../user/user.component';
  1. {{ user.name }}
- `, + ` }) class NoScriptComponent { users$ = this.tss.useScullyTransferState( 'noScriptUser', - this.http.get(`/api/users`).pipe(map((users) => users.map((user) => ({ name: user.name })))) + this.http.get(`/api/users`).pipe(map(users => users.map(user => ({ name: user.name })))) ); constructor(private tss: TransferStateService, private http: HttpClient) {} } @@ -25,12 +25,12 @@ class NoScriptComponent { const routes: Routes = [ { path: '', - component: NoScriptComponent, - }, + component: NoScriptComponent + } ]; @NgModule({ imports: [CommonModule, ScullyLibModule, RouterModule.forChild(routes)], - declarations: [NoScriptComponent], + declarations: [NoScriptComponent] }) export class NoScriptModule {} diff --git a/apps/sample-blog/src/app/pagenotfound/pagenotfound.component.spec.ts b/apps/sample-blog/src/app/pagenotfound/pagenotfound.component.spec.ts index 557b107c8..6e4d7de46 100644 --- a/apps/sample-blog/src/app/pagenotfound/pagenotfound.component.spec.ts +++ b/apps/sample-blog/src/app/pagenotfound/pagenotfound.component.spec.ts @@ -9,7 +9,7 @@ describe('PagenotfoundComponent', () => { beforeEach( waitForAsync(() => { TestBed.configureTestingModule({ - declarations: [PagenotfoundComponent], + declarations: [PagenotfoundComponent] }).compileComponents(); }) ); diff --git a/apps/sample-blog/src/app/slow/slow.component.spec.ts b/apps/sample-blog/src/app/slow/slow.component.spec.ts index 5ef8027c1..bfa6fbffc 100644 --- a/apps/sample-blog/src/app/slow/slow.component.spec.ts +++ b/apps/sample-blog/src/app/slow/slow.component.spec.ts @@ -9,7 +9,7 @@ describe('SlowComponent', () => { beforeEach( waitForAsync(() => { TestBed.configureTestingModule({ - declarations: [SlowComponent], + declarations: [SlowComponent] }).compileComponents(); }) ); diff --git a/apps/sample-blog/src/app/slow/slow.component.ts b/apps/sample-blog/src/app/slow/slow.component.ts index e67e34e02..2db3f10f8 100644 --- a/apps/sample-blog/src/app/slow/slow.component.ts +++ b/apps/sample-blog/src/app/slow/slow.component.ts @@ -10,7 +10,7 @@ import { first } from 'rxjs';

Scully Not Generated

Scully Generated

`, - styles: [``], + styles: [``] }) export class SlowComponent { isGenerated = isScullyGenerated(); diff --git a/apps/sample-blog/src/app/static/static.component.html b/apps/sample-blog/src/app/static/static.component.html index abaca58f0..422949271 100644 --- a/apps/sample-blog/src/app/static/static.component.html +++ b/apps/sample-blog/src/app/static/static.component.html @@ -1,18 +1,9 @@

{{ title$ | async }}

-Top level routes only -All routes -Unpublished routes +Top level routes only +All routes +Unpublished routes - `, + ` }) export class FooterComponent {} diff --git a/apps/scully-docs/src/app/components/footer/footer.module.ts b/apps/scully-docs/src/app/components/footer/footer.module.ts index 2d00fb291..753516fdc 100644 --- a/apps/scully-docs/src/app/components/footer/footer.module.ts +++ b/apps/scully-docs/src/app/components/footer/footer.module.ts @@ -6,6 +6,6 @@ import { FooterComponent } from './component/footer.component'; @NgModule({ declarations: [FooterComponent], exports: [FooterComponent], - imports: [CommonModule, RouterModule], + imports: [CommonModule, RouterModule] }) export class FooterModule {} diff --git a/apps/scully-docs/src/app/components/header/component/nav-header/nav-header.component.spec.ts b/apps/scully-docs/src/app/components/header/component/nav-header/nav-header.component.spec.ts index e7c37e4b9..a58bc3844 100644 --- a/apps/scully-docs/src/app/components/header/component/nav-header/nav-header.component.spec.ts +++ b/apps/scully-docs/src/app/components/header/component/nav-header/nav-header.component.spec.ts @@ -9,7 +9,7 @@ describe('NavHeaderComponent', () => { beforeEach( waitForAsync(() => { TestBed.configureTestingModule({ - declarations: [NavHeaderComponent], + declarations: [NavHeaderComponent] }).compileComponents(); }) ); diff --git a/apps/scully-docs/src/app/components/header/component/nav-header/nav-header.component.ts b/apps/scully-docs/src/app/components/header/component/nav-header/nav-header.component.ts index 2b9dc3639..b76e0388e 100644 --- a/apps/scully-docs/src/app/components/header/component/nav-header/nav-header.component.ts +++ b/apps/scully-docs/src/app/components/header/component/nav-header/nav-header.component.ts @@ -15,7 +15,7 @@ import { Component, ViewEncapsulation, Input, HostBinding } from '@angular/core'
  • Support
  • - `, + ` }) export class NavHeaderComponent { themes = { dark: 'dark' }; diff --git a/apps/scully-docs/src/app/components/header/header.module.ts b/apps/scully-docs/src/app/components/header/header.module.ts index 7035eec87..3493c0f28 100644 --- a/apps/scully-docs/src/app/components/header/header.module.ts +++ b/apps/scully-docs/src/app/components/header/header.module.ts @@ -7,6 +7,6 @@ import { NavHeaderComponent } from './component/nav-header/nav-header.component' @NgModule({ declarations: [NavHeaderComponent], exports: [NavHeaderComponent], - imports: [CommonModule, RouterModule], + imports: [CommonModule, RouterModule] }) export class HeaderModule {} diff --git a/apps/scully-docs/src/app/components/lang-select/component/lang-select/lang-select.component.spec.ts b/apps/scully-docs/src/app/components/lang-select/component/lang-select/lang-select.component.spec.ts index b1113ec67..f5711076c 100644 --- a/apps/scully-docs/src/app/components/lang-select/component/lang-select/lang-select.component.spec.ts +++ b/apps/scully-docs/src/app/components/lang-select/component/lang-select/lang-select.component.spec.ts @@ -9,7 +9,7 @@ describe('LangSelectComponent', () => { beforeEach( waitForAsync(() => { TestBed.configureTestingModule({ - declarations: [LangSelectComponent], + declarations: [LangSelectComponent] }).compileComponents(); }) ); diff --git a/apps/scully-docs/src/app/components/lang-select/component/lang-select/lang-select.component.ts b/apps/scully-docs/src/app/components/lang-select/component/lang-select/lang-select.component.ts index 181682130..8a2cdbcba 100644 --- a/apps/scully-docs/src/app/components/lang-select/component/lang-select/lang-select.component.ts +++ b/apps/scully-docs/src/app/components/lang-select/component/lang-select/lang-select.component.ts @@ -6,12 +6,12 @@ import { pluck, take } from 'rxjs'; const langs = { es: { lang: 'Español', - url: '/docs/learn/overview_es', + url: '/docs/learn/overview_es' }, en: { lang: 'English', - url: '/docs/learn/overview', - }, + url: '/docs/learn/overview' + } }; @Component({ @@ -28,7 +28,7 @@ const langs = { {{ langs[langRoutes].lang }} - `, + ` }) export class LangSelectComponent { langs = langs; diff --git a/apps/scully-docs/src/app/components/lang-select/lang-select.module.ts b/apps/scully-docs/src/app/components/lang-select/lang-select.module.ts index 90f38d02e..01f5f8425 100644 --- a/apps/scully-docs/src/app/components/lang-select/lang-select.module.ts +++ b/apps/scully-docs/src/app/components/lang-select/lang-select.module.ts @@ -7,6 +7,6 @@ import { LangSelectComponent } from './component/lang-select/lang-select.compone @NgModule({ declarations: [LangSelectComponent], exports: [LangSelectComponent], - imports: [CommonModule, RouterModule], + imports: [CommonModule, RouterModule] }) export class LangSelectModule {} diff --git a/apps/scully-docs/src/app/components/nav-list/nav-list.module.ts b/apps/scully-docs/src/app/components/nav-list/nav-list.module.ts index 3f8521d0d..8d24c0eab 100644 --- a/apps/scully-docs/src/app/components/nav-list/nav-list.module.ts +++ b/apps/scully-docs/src/app/components/nav-list/nav-list.module.ts @@ -6,6 +6,6 @@ import { NavItemComponent } from './navitem'; @NgModule({ declarations: [NavItemComponent], exports: [NavItemComponent], - imports: [CommonModule, RouterModule], + imports: [CommonModule, RouterModule] }) export class NavListModule {} diff --git a/apps/scully-docs/src/app/components/nav-list/nav-list.service.ts b/apps/scully-docs/src/app/components/nav-list/nav-list.service.ts index c273dfd3b..b3da29825 100644 --- a/apps/scully-docs/src/app/components/nav-list/nav-list.service.ts +++ b/apps/scully-docs/src/app/components/nav-list/nav-list.service.ts @@ -17,7 +17,7 @@ export class NavListService { docTree$: Observable = forkJoin([this.scully.available$.pipe(take(1)), this.scully.getCurrent().pipe(take(1))]).pipe( map(([routes, currentPage]) => { /** only select currently activated language */ - routes = routes.filter((r) => r.lang === currentPage.lang).sort((a, b) => (a.route < b.route ? -1 : 1)); + routes = routes.filter(r => r.lang === currentPage.lang).sort((a, b) => (a.route < b.route ? -1 : 1)); const docTree = createTreeFromRoutes(routes); /** add an array with the children in the correct order on each tree level. */ @@ -32,7 +32,7 @@ export class NavListService { /** return the currently document in view */ currentDoc$: Observable = combineLatest([this.scully.getCurrent(), this.docTree$]).pipe( map(([route, docTree]) => - flattenTree(docTree).find((d) => { + flattenTree(docTree).find(d => { return d._route?.route === route.route; }) ) @@ -40,9 +40,9 @@ export class NavListService { languages$ = this.scully.available$.pipe( take(1), - map((routes) => + map(routes => routes - .filter((r) => r.lang) + .filter(r => r.lang) .reduce((lang, cur) => { if (!lang.includes(cur.lang)) { lang.push(cur.lang); @@ -95,7 +95,7 @@ function addOrdering(docTree: DocTree) { /** get rid of 'empty' routes, and skip the _own route_ */ .filter(([name, route]: [string, DocTree]) => name !== '_route' && route._route) /** only use the docTree from heer */ - .map(([name, route]) => (route as unknown) as DocTree) + .map(([name, route]) => route as unknown as DocTree) /** sort on position && title (inside current level only!) */ .sort((a: DocTree, b: DocTree) => { // console.log(a?._route?.position.toString().padStart(5, '0'),b?._route?.position.toString().padStart(5, '0')) @@ -111,7 +111,7 @@ function addOrdering(docTree: DocTree) { /** helper to quickly flatten out a docs-tree to make it easier to find /modify stuff */ function flattenTree(docTree: DocTree, list = []) { list.push(docTree); - docTree.inOrder.forEach((row) => { + docTree.inOrder.forEach(row => { flattenTree(row, list); }); return list; diff --git a/apps/scully-docs/src/app/components/nav-list/navitem.ts b/apps/scully-docs/src/app/components/nav-list/navitem.ts index 4c4a70bc9..bf1ddf9e4 100644 --- a/apps/scully-docs/src/app/components/nav-list/navitem.ts +++ b/apps/scully-docs/src/app/components/nav-list/navitem.ts @@ -16,7 +16,7 @@ import { NavListService } from './nav-list.service'; >
      - `, + ` }) export class NavItemComponent implements OnInit { elm = this.elmRef.nativeElement; diff --git a/apps/scully-docs/src/app/page-not-found.component.ts b/apps/scully-docs/src/app/page-not-found.component.ts index c1f8d1302..96b1507b5 100644 --- a/apps/scully-docs/src/app/page-not-found.component.ts +++ b/apps/scully-docs/src/app/page-not-found.component.ts @@ -5,7 +5,7 @@ import { Component, OnInit } from '@angular/core'; template: `

      Page not found

      - `, + ` }) export class PageNotFoundComponent implements OnInit { constructor() {} diff --git a/apps/scully-docs/src/app/pages/docs/docs-routing.module.ts b/apps/scully-docs/src/app/pages/docs/docs-routing.module.ts index 524977f57..370b217fe 100644 --- a/apps/scully-docs/src/app/pages/docs/docs-routing.module.ts +++ b/apps/scully-docs/src/app/pages/docs/docs-routing.module.ts @@ -9,13 +9,13 @@ const routes: Routes = [ component: DocsPageComponent, children: [ { path: ':slug', component: DocsPageComponent }, - { path: '**', component: DocsPageComponent }, - ], - }, + { path: '**', component: DocsPageComponent } + ] + } ]; @NgModule({ imports: [RouterModule.forChild(routes)], - exports: [RouterModule], + exports: [RouterModule] }) export class DocsRoutingModule {} diff --git a/apps/scully-docs/src/app/pages/docs/docs.module.ts b/apps/scully-docs/src/app/pages/docs/docs.module.ts index ff3418037..0f42627e2 100644 --- a/apps/scully-docs/src/app/pages/docs/docs.module.ts +++ b/apps/scully-docs/src/app/pages/docs/docs.module.ts @@ -9,6 +9,6 @@ import { DocsPageComponent } from './page/docs.page.component'; @NgModule({ declarations: [DocsPageComponent], - imports: [CommonModule, ScullyLibModule, FooterModule, DocsRoutingModule], + imports: [CommonModule, ScullyLibModule, FooterModule, DocsRoutingModule] }) export class DocsModule {} diff --git a/apps/scully-docs/src/app/pages/docs/page/docs.page.component.spec.ts b/apps/scully-docs/src/app/pages/docs/page/docs.page.component.spec.ts index 1e99e4235..fe04647de 100644 --- a/apps/scully-docs/src/app/pages/docs/page/docs.page.component.spec.ts +++ b/apps/scully-docs/src/app/pages/docs/page/docs.page.component.spec.ts @@ -9,7 +9,7 @@ describe('DocsPageComponent', () => { beforeEach( waitForAsync(() => { TestBed.configureTestingModule({ - declarations: [DocsPageComponent], + declarations: [DocsPageComponent] }).compileComponents(); }) ); diff --git a/apps/scully-docs/src/app/pages/docs/page/docs.page.component.ts b/apps/scully-docs/src/app/pages/docs/page/docs.page.component.ts index b63f1b946..9058c82c7 100644 --- a/apps/scully-docs/src/app/pages/docs/page/docs.page.component.ts +++ b/apps/scully-docs/src/app/pages/docs/page/docs.page.component.ts @@ -29,13 +29,13 @@ export class DocsPageComponent { currentPage$ = this.nav.currentDoc$.pipe( tap((cur) => { const title = cur?._route?.title as string; - if (title) { + if (!!title) { this.title.setTitle(title + ' - Scully'); } else { this.title.setTitle('Scully Documentation'); } }), - filter(cur => cur?._route !== undefined), + filter(cur => cur?._route !== undefined && cur?._next !== undefined), map((cur) => ({ next: cur._next, prev: cur._prev, suggestEditLink: this.githubEditLink(cur?._route?.route) })), /** note, this is for testing only, as in the docs site _no_ code will not be there anyway! */ catchError((e) => { diff --git a/apps/scully-docs/src/app/pages/extraPages/extra-page.module.ts b/apps/scully-docs/src/app/pages/extraPages/extra-page.module.ts index e8872e7f7..bcc831f6f 100644 --- a/apps/scully-docs/src/app/pages/extraPages/extra-page.module.ts +++ b/apps/scully-docs/src/app/pages/extraPages/extra-page.module.ts @@ -14,7 +14,7 @@ import { FooterComponent } from '../../components/footer/component/footer.compon
      - `, + ` }) export class ExtraPageComponent {} @@ -37,8 +37,8 @@ export class ExtraPageComponent {} FooterModule, RouterModule.forChild([ { path: '', component: ExtraPageComponent }, - { path: '**', component: ExtraPageComponent }, - ]), - ], + { path: '**', component: ExtraPageComponent } + ]) + ] }) export class ExtraPageModule {} diff --git a/apps/scully-docs/src/app/pages/landing/components/features/features.component.spec.ts b/apps/scully-docs/src/app/pages/landing/components/features/features.component.spec.ts index 8878da167..25d6e852a 100644 --- a/apps/scully-docs/src/app/pages/landing/components/features/features.component.spec.ts +++ b/apps/scully-docs/src/app/pages/landing/components/features/features.component.spec.ts @@ -9,7 +9,7 @@ describe('LandingFeaturesComponent', () => { beforeEach( waitForAsync(() => { TestBed.configureTestingModule({ - declarations: [LandingFeaturesComponent], + declarations: [LandingFeaturesComponent] }).compileComponents(); }) ); diff --git a/apps/scully-docs/src/app/pages/landing/components/features/features.component.ts b/apps/scully-docs/src/app/pages/landing/components/features/features.component.ts index 35856015b..bd5ff1740 100644 --- a/apps/scully-docs/src/app/pages/landing/components/features/features.component.ts +++ b/apps/scully-docs/src/app/pages/landing/components/features/features.component.ts @@ -38,6 +38,6 @@ import { Component, ViewEncapsulation } from '@angular/core';

      - `, + ` }) export class LandingFeaturesComponent {} diff --git a/apps/scully-docs/src/app/pages/landing/components/intro/intro.component.spec.ts b/apps/scully-docs/src/app/pages/landing/components/intro/intro.component.spec.ts index 9a4fdad03..07572f8d0 100644 --- a/apps/scully-docs/src/app/pages/landing/components/intro/intro.component.spec.ts +++ b/apps/scully-docs/src/app/pages/landing/components/intro/intro.component.spec.ts @@ -9,7 +9,7 @@ describe('LandingIntroComponent', () => { beforeEach( waitForAsync(() => { TestBed.configureTestingModule({ - declarations: [LandingIntroComponent], + declarations: [LandingIntroComponent] }).compileComponents(); }) ); diff --git a/apps/scully-docs/src/app/pages/landing/components/intro/intro.component.ts b/apps/scully-docs/src/app/pages/landing/components/intro/intro.component.ts index a60f76473..2a7926134 100644 --- a/apps/scully-docs/src/app/pages/landing/components/intro/intro.component.ts +++ b/apps/scully-docs/src/app/pages/landing/components/intro/intro.component.ts @@ -22,6 +22,6 @@ import { Component, ViewEncapsulation } from '@angular/core'; ng add @scullyio/init - `, + ` }) export class LandingIntroComponent {} diff --git a/apps/scully-docs/src/app/pages/landing/components/quote/quote.component.spec.ts b/apps/scully-docs/src/app/pages/landing/components/quote/quote.component.spec.ts index 4ecbfce62..91b028a70 100644 --- a/apps/scully-docs/src/app/pages/landing/components/quote/quote.component.spec.ts +++ b/apps/scully-docs/src/app/pages/landing/components/quote/quote.component.spec.ts @@ -9,7 +9,7 @@ describe('LandingQuoteComponent', () => { beforeEach( waitForAsync(() => { TestBed.configureTestingModule({ - declarations: [LandingQuoteComponent], + declarations: [LandingQuoteComponent] }).compileComponents(); }) ); diff --git a/apps/scully-docs/src/app/pages/landing/components/quote/quote.component.ts b/apps/scully-docs/src/app/pages/landing/components/quote/quote.component.ts index 9cf6af046..9a0211c77 100644 --- a/apps/scully-docs/src/app/pages/landing/components/quote/quote.component.ts +++ b/apps/scully-docs/src/app/pages/landing/components/quote/quote.component.ts @@ -11,6 +11,6 @@ import { Component, ViewEncapsulation } from '@angular/core';

      - Aaron Frost

      Scully Core Team Member

      - `, + ` }) export class LandingQuoteComponent {} diff --git a/apps/scully-docs/src/app/pages/landing/components/resources/resources.component.spec.ts b/apps/scully-docs/src/app/pages/landing/components/resources/resources.component.spec.ts index 2073163d6..0c5bb9b87 100644 --- a/apps/scully-docs/src/app/pages/landing/components/resources/resources.component.spec.ts +++ b/apps/scully-docs/src/app/pages/landing/components/resources/resources.component.spec.ts @@ -9,7 +9,7 @@ describe('LandingResourcesComponent', () => { beforeEach( waitForAsync(() => { TestBed.configureTestingModule({ - declarations: [LandingResourcesComponent], + declarations: [LandingResourcesComponent] }).compileComponents(); }) ); diff --git a/apps/scully-docs/src/app/pages/landing/components/resources/resources.component.ts b/apps/scully-docs/src/app/pages/landing/components/resources/resources.component.ts index 078df5b65..cc3d7c423 100644 --- a/apps/scully-docs/src/app/pages/landing/components/resources/resources.component.ts +++ b/apps/scully-docs/src/app/pages/landing/components/resources/resources.component.ts @@ -19,6 +19,6 @@ import { Component, ViewEncapsulation } from '@angular/core';

      Create your own static Angular blog in 5 minutes.

      - `, + ` }) export class LandingResourcesComponent {} diff --git a/apps/scully-docs/src/app/pages/landing/landing-routing.module.ts b/apps/scully-docs/src/app/pages/landing/landing-routing.module.ts index c6412adb1..87377ec7b 100644 --- a/apps/scully-docs/src/app/pages/landing/landing-routing.module.ts +++ b/apps/scully-docs/src/app/pages/landing/landing-routing.module.ts @@ -7,6 +7,6 @@ const routes: Routes = [{ path: '', component: LandingPageComponent }]; @NgModule({ imports: [RouterModule.forChild(routes)], - exports: [RouterModule], + exports: [RouterModule] }) export class LandingRoutingModule {} diff --git a/apps/scully-docs/src/app/pages/landing/landing.module.ts b/apps/scully-docs/src/app/pages/landing/landing.module.ts index f3855856a..9038469e9 100644 --- a/apps/scully-docs/src/app/pages/landing/landing.module.ts +++ b/apps/scully-docs/src/app/pages/landing/landing.module.ts @@ -16,8 +16,8 @@ import { LandingResourcesComponent } from './components/resources/resources.comp LandingIntroComponent, LandingPageComponent, LandingQuoteComponent, - LandingResourcesComponent, + LandingResourcesComponent ], - imports: [CommonModule, FooterModule, LandingRoutingModule], + imports: [CommonModule, FooterModule, LandingRoutingModule] }) export class LandingModule {} diff --git a/apps/scully-docs/src/app/pages/landing/page/landing.component.spec.ts b/apps/scully-docs/src/app/pages/landing/page/landing.component.spec.ts index 5dfe2d9eb..167194240 100644 --- a/apps/scully-docs/src/app/pages/landing/page/landing.component.spec.ts +++ b/apps/scully-docs/src/app/pages/landing/page/landing.component.spec.ts @@ -9,7 +9,7 @@ describe('LandingPageComponent', () => { beforeEach( waitForAsync(() => { TestBed.configureTestingModule({ - declarations: [LandingPageComponent], + declarations: [LandingPageComponent] }).compileComponents(); }) ); diff --git a/apps/scully-docs/src/app/pages/landing/page/landing.component.ts b/apps/scully-docs/src/app/pages/landing/page/landing.component.ts index abecac1e1..566ef6c9e 100644 --- a/apps/scully-docs/src/app/pages/landing/page/landing.component.ts +++ b/apps/scully-docs/src/app/pages/landing/page/landing.component.ts @@ -9,6 +9,6 @@ import { Component, ViewEncapsulation } from '@angular/core';
      - `, + ` }) export class LandingPageComponent {} diff --git a/apps/scully-docs/src/assets/clipboard.min.js b/apps/scully-docs/src/assets/clipboard.min.js index 91395d65f..90cbeef29 100644 --- a/apps/scully-docs/src/assets/clipboard.min.js +++ b/apps/scully-docs/src/assets/clipboard.min.js @@ -15,457 +15,459 @@ })(this, function () { return ( (o = {}), - (r.m = n = [ - function (t, e) { - t.exports = function (t) { - var e; - if ('SELECT' === t.nodeName) t.focus(), (e = t.value); - else if ('INPUT' === t.nodeName || 'TEXTAREA' === t.nodeName) { - var n = t.hasAttribute('readonly'); - n || t.setAttribute('readonly', ''), - t.select(), - t.setSelectionRange(0, t.value.length), - n || t.removeAttribute('readonly'), - (e = t.value); - } else { - t.hasAttribute('contenteditable') && t.focus(); - var o = window.getSelection(), - r = document.createRange(); - r.selectNodeContents(t), o.removeAllRanges(), o.addRange(r), (e = o.toString()); - } - return e; - }; - }, - function (t, e) { - function n() {} - (n.prototype = { - on: function (t, e, n) { - var o = this.e || (this.e = {}); - return (o[t] || (o[t] = [])).push({ fn: e, ctx: n }), this; - }, - once: function (t, e, n) { - var o = this; - function r() { - o.off(t, r), e.apply(n, arguments); + (r.m = n = + [ + function (t, e) { + t.exports = function (t) { + var e; + if ('SELECT' === t.nodeName) t.focus(), (e = t.value); + else if ('INPUT' === t.nodeName || 'TEXTAREA' === t.nodeName) { + var n = t.hasAttribute('readonly'); + n || t.setAttribute('readonly', ''), + t.select(), + t.setSelectionRange(0, t.value.length), + n || t.removeAttribute('readonly'), + (e = t.value); + } else { + t.hasAttribute('contenteditable') && t.focus(); + var o = window.getSelection(), + r = document.createRange(); + r.selectNodeContents(t), o.removeAllRanges(), o.addRange(r), (e = o.toString()); } - return (r._ = e), this.on(t, r, n); - }, - emit: function (t) { - for ( - var e = [].slice.call(arguments, 1), n = ((this.e || (this.e = {}))[t] || []).slice(), o = 0, r = n.length; - o < r; - o++ - ) - n[o].fn.apply(n[o].ctx, e); - return this; - }, - off: function (t, e) { - var n = this.e || (this.e = {}), - o = n[t], - r = []; - if (o && e) for (var i = 0, a = o.length; i < a; i++) o[i].fn !== e && o[i].fn._ !== e && r.push(o[i]); - return r.length ? (n[t] = r) : delete n[t], this; - }, - }), - (t.exports = n), - (t.exports.TinyEmitter = n); - }, - function (t, e, n) { - var d = n(3), - h = n(4); - t.exports = function (t, e, n) { - if (!t && !e && !n) throw new Error('Missing required arguments'); - if (!d.string(e)) throw new TypeError('Second argument must be a String'); - if (!d.fn(n)) throw new TypeError('Third argument must be a Function'); - if (d.node(t)) - return ( - (s = e), - (f = n), - (u = t).addEventListener(s, f), - { - destroy: function () { - u.removeEventListener(s, f); - }, + return e; + }; + }, + function (t, e) { + function n() {} + (n.prototype = { + on: function (t, e, n) { + var o = this.e || (this.e = {}); + return (o[t] || (o[t] = [])).push({ fn: e, ctx: n }), this; + }, + once: function (t, e, n) { + var o = this; + function r() { + o.off(t, r), e.apply(n, arguments); } - ); - if (d.nodeList(t)) + return (r._ = e), this.on(t, r, n); + }, + emit: function (t) { + for ( + var e = [].slice.call(arguments, 1), n = ((this.e || (this.e = {}))[t] || []).slice(), o = 0, r = n.length; + o < r; + o++ + ) + n[o].fn.apply(n[o].ctx, e); + return this; + }, + off: function (t, e) { + var n = this.e || (this.e = {}), + o = n[t], + r = []; + if (o && e) for (var i = 0, a = o.length; i < a; i++) o[i].fn !== e && o[i].fn._ !== e && r.push(o[i]); + return r.length ? (n[t] = r) : delete n[t], this; + } + }), + (t.exports = n), + (t.exports.TinyEmitter = n); + }, + function (t, e, n) { + var d = n(3), + h = n(4); + t.exports = function (t, e, n) { + if (!t && !e && !n) throw new Error('Missing required arguments'); + if (!d.string(e)) throw new TypeError('Second argument must be a String'); + if (!d.fn(n)) throw new TypeError('Third argument must be a Function'); + if (d.node(t)) + return ( + (s = e), + (f = n), + (u = t).addEventListener(s, f), + { + destroy: function () { + u.removeEventListener(s, f); + } + } + ); + if (d.nodeList(t)) + return ( + (a = t), + (c = e), + (l = n), + Array.prototype.forEach.call(a, function (t) { + t.addEventListener(c, l); + }), + { + destroy: function () { + Array.prototype.forEach.call(a, function (t) { + t.removeEventListener(c, l); + }); + } + } + ); + if (d.string(t)) return (o = t), (r = e), (i = n), h(document.body, o, r, i); + throw new TypeError('First argument must be a String, HTMLElement, HTMLCollection, or NodeList'); + var o, r, i, a, c, l, u, s, f; + }; + }, + function (t, n) { + (n.node = function (t) { + return void 0 !== t && t instanceof HTMLElement && 1 === t.nodeType; + }), + (n.nodeList = function (t) { + var e = Object.prototype.toString.call(t); + return ( + void 0 !== t && + ('[object NodeList]' === e || '[object HTMLCollection]' === e) && + 'length' in t && + (0 === t.length || n.node(t[0])) + ); + }), + (n.string = function (t) { + return 'string' == typeof t || t instanceof String; + }), + (n.fn = function (t) { + return '[object Function]' === Object.prototype.toString.call(t); + }); + }, + function (t, e, n) { + var a = n(5); + function i(t, e, n, o, r) { + var i = function (e, n, t, o) { + return function (t) { + (t.delegateTarget = a(t.target, n)), t.delegateTarget && o.call(e, t); + }; + }.apply(this, arguments); return ( - (a = t), - (c = e), - (l = n), - Array.prototype.forEach.call(a, function (t) { - t.addEventListener(c, l); - }), + t.addEventListener(n, i, r), { destroy: function () { - Array.prototype.forEach.call(a, function (t) { - t.removeEventListener(c, l); - }); - }, + t.removeEventListener(n, i, r); + } } ); - if (d.string(t)) return (o = t), (r = e), (i = n), h(document.body, o, r, i); - throw new TypeError('First argument must be a String, HTMLElement, HTMLCollection, or NodeList'); - var o, r, i, a, c, l, u, s, f; - }; - }, - function (t, n) { - (n.node = function (t) { - return void 0 !== t && t instanceof HTMLElement && 1 === t.nodeType; - }), - (n.nodeList = function (t) { - var e = Object.prototype.toString.call(t); - return ( - void 0 !== t && - ('[object NodeList]' === e || '[object HTMLCollection]' === e) && - 'length' in t && - (0 === t.length || n.node(t[0])) - ); - }), - (n.string = function (t) { - return 'string' == typeof t || t instanceof String; - }), - (n.fn = function (t) { - return '[object Function]' === Object.prototype.toString.call(t); - }); - }, - function (t, e, n) { - var a = n(5); - function i(t, e, n, o, r) { - var i = function (e, n, t, o) { - return function (t) { - (t.delegateTarget = a(t.target, n)), t.delegateTarget && o.call(e, t); - }; - }.apply(this, arguments); - return ( - t.addEventListener(n, i, r), - { - destroy: function () { - t.removeEventListener(n, i, r); - }, + } + t.exports = function (t, e, n, o, r) { + return 'function' == typeof t.addEventListener + ? i.apply(null, arguments) + : 'function' == typeof n + ? i.bind(null, document).apply(null, arguments) + : ('string' == typeof t && (t = document.querySelectorAll(t)), + Array.prototype.map.call(t, function (t) { + return i(t, e, n, o, r); + })); + }; + }, + function (t, e) { + if ('undefined' != typeof Element && !Element.prototype.matches) { + var n = Element.prototype; + n.matches = + n.matchesSelector || n.mozMatchesSelector || n.msMatchesSelector || n.oMatchesSelector || n.webkitMatchesSelector; + } + t.exports = function (t, e) { + for (; t && 9 !== t.nodeType; ) { + if ('function' == typeof t.matches && t.matches(e)) return t; + t = t.parentNode; + } + }; + }, + function (t, e, n) { + 'use strict'; + n.r(e); + var o = n(0), + r = n.n(o), + i = + 'function' == typeof Symbol && 'symbol' == typeof Symbol.iterator + ? function (t) { + return typeof t; + } + : function (t) { + return t && 'function' == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype + ? 'symbol' + : typeof t; + }; + function a(t, e) { + for (var n = 0; n < e.length; n++) { + var o = e[n]; + (o.enumerable = o.enumerable || !1), + (o.configurable = !0), + 'value' in o && (o.writable = !0), + Object.defineProperty(t, o.key, o); } - ); - } - t.exports = function (t, e, n, o, r) { - return 'function' == typeof t.addEventListener - ? i.apply(null, arguments) - : 'function' == typeof n - ? i.bind(null, document).apply(null, arguments) - : ('string' == typeof t && (t = document.querySelectorAll(t)), - Array.prototype.map.call(t, function (t) { - return i(t, e, n, o, r); - })); - }; - }, - function (t, e) { - if ('undefined' != typeof Element && !Element.prototype.matches) { - var n = Element.prototype; - n.matches = - n.matchesSelector || n.mozMatchesSelector || n.msMatchesSelector || n.oMatchesSelector || n.webkitMatchesSelector; - } - t.exports = function (t, e) { - for (; t && 9 !== t.nodeType; ) { - if ('function' == typeof t.matches && t.matches(e)) return t; - t = t.parentNode; } - }; - }, - function (t, e, n) { - 'use strict'; - n.r(e); - var o = n(0), - r = n.n(o), - i = - 'function' == typeof Symbol && 'symbol' == typeof Symbol.iterator - ? function (t) { - return typeof t; - } - : function (t) { - return t && 'function' == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype - ? 'symbol' - : typeof t; - }; - function a(t, e) { - for (var n = 0; n < e.length; n++) { - var o = e[n]; - (o.enumerable = o.enumerable || !1), - (o.configurable = !0), - 'value' in o && (o.writable = !0), - Object.defineProperty(t, o.key, o); + function c(t) { + !(function (t, e) { + if (!(t instanceof e)) throw new TypeError('Cannot call a class as a function'); + })(this, c), + this.resolveOptions(t), + this.initSelection(); } - } - function c(t) { - !(function (t, e) { - if (!(t instanceof e)) throw new TypeError('Cannot call a class as a function'); - })(this, c), - this.resolveOptions(t), - this.initSelection(); - } - var l = - ((function (t, e, n) { - return e && a(t.prototype, e), n && a(t, n), t; - })(c, [ - { - key: 'resolveOptions', - value: function (t) { - var e = 0 < arguments.length && void 0 !== t ? t : {}; - (this.action = e.action), - (this.container = e.container), - (this.emitter = e.emitter), - (this.target = e.target), - (this.text = e.text), - (this.trigger = e.trigger), - (this.selectedText = ''); - }, - }, - { - key: 'initSelection', - value: function () { - this.text ? this.selectFake() : this.target && this.selectTarget(); - }, - }, - { - key: 'selectFake', - value: function () { - var t = this, - e = 'rtl' == document.documentElement.getAttribute('dir'); - this.removeFake(), - (this.fakeHandlerCallback = function () { - return t.removeFake(); - }), - (this.fakeHandler = this.container.addEventListener('click', this.fakeHandlerCallback) || !0), - (this.fakeElem = document.createElement('textarea')), - (this.fakeElem.style.fontSize = '12pt'), - (this.fakeElem.style.border = '0'), - (this.fakeElem.style.padding = '0'), - (this.fakeElem.style.margin = '0'), - (this.fakeElem.style.position = 'absolute'), - (this.fakeElem.style[e ? 'right' : 'left'] = '-9999px'); - var n = window.pageYOffset || document.documentElement.scrollTop; - (this.fakeElem.style.top = n + 'px'), - this.fakeElem.setAttribute('readonly', ''), - (this.fakeElem.value = this.text), - this.container.appendChild(this.fakeElem), - (this.selectedText = r()(this.fakeElem)), - this.copyText(); - }, - }, - { - key: 'removeFake', - value: function () { - this.fakeHandler && - (this.container.removeEventListener('click', this.fakeHandlerCallback), - (this.fakeHandler = null), - (this.fakeHandlerCallback = null)), - this.fakeElem && (this.container.removeChild(this.fakeElem), (this.fakeElem = null)); + var l = + ((function (t, e, n) { + return e && a(t.prototype, e), n && a(t, n), t; + })(c, [ + { + key: 'resolveOptions', + value: function (t) { + var e = 0 < arguments.length && void 0 !== t ? t : {}; + (this.action = e.action), + (this.container = e.container), + (this.emitter = e.emitter), + (this.target = e.target), + (this.text = e.text), + (this.trigger = e.trigger), + (this.selectedText = ''); + } }, - }, - { - key: 'selectTarget', - value: function () { - (this.selectedText = r()(this.target)), this.copyText(); + { + key: 'initSelection', + value: function () { + this.text ? this.selectFake() : this.target && this.selectTarget(); + } }, - }, - { - key: 'copyText', - value: function () { - var e = void 0; - try { - e = document.execCommand(this.action); - } catch (t) { - e = !1; + { + key: 'selectFake', + value: function () { + var t = this, + e = 'rtl' == document.documentElement.getAttribute('dir'); + this.removeFake(), + (this.fakeHandlerCallback = function () { + return t.removeFake(); + }), + (this.fakeHandler = this.container.addEventListener('click', this.fakeHandlerCallback) || !0), + (this.fakeElem = document.createElement('textarea')), + (this.fakeElem.style.fontSize = '12pt'), + (this.fakeElem.style.border = '0'), + (this.fakeElem.style.padding = '0'), + (this.fakeElem.style.margin = '0'), + (this.fakeElem.style.position = 'absolute'), + (this.fakeElem.style[e ? 'right' : 'left'] = '-9999px'); + var n = window.pageYOffset || document.documentElement.scrollTop; + (this.fakeElem.style.top = n + 'px'), + this.fakeElem.setAttribute('readonly', ''), + (this.fakeElem.value = this.text), + this.container.appendChild(this.fakeElem), + (this.selectedText = r()(this.fakeElem)), + this.copyText(); } - this.handleResult(e); }, - }, - { - key: 'handleResult', - value: function (t) { - this.emitter.emit(t ? 'success' : 'error', { - action: this.action, - text: this.selectedText, - trigger: this.trigger, - clearSelection: this.clearSelection.bind(this), - }); + { + key: 'removeFake', + value: function () { + this.fakeHandler && + (this.container.removeEventListener('click', this.fakeHandlerCallback), + (this.fakeHandler = null), + (this.fakeHandlerCallback = null)), + this.fakeElem && (this.container.removeChild(this.fakeElem), (this.fakeElem = null)); + } }, - }, - { - key: 'clearSelection', - value: function () { - this.trigger && this.trigger.focus(), document.activeElement.blur(), window.getSelection().removeAllRanges(); + { + key: 'selectTarget', + value: function () { + (this.selectedText = r()(this.target)), this.copyText(); + } }, - }, - { - key: 'destroy', - value: function () { - this.removeFake(); + { + key: 'copyText', + value: function () { + var e = void 0; + try { + e = document.execCommand(this.action); + } catch (t) { + e = !1; + } + this.handleResult(e); + } }, - }, - { - key: 'action', - set: function (t) { - var e = 0 < arguments.length && void 0 !== t ? t : 'copy'; - if (((this._action = e), 'copy' !== this._action && 'cut' !== this._action)) - throw new Error('Invalid "action" value, use either "copy" or "cut"'); + { + key: 'handleResult', + value: function (t) { + this.emitter.emit(t ? 'success' : 'error', { + action: this.action, + text: this.selectedText, + trigger: this.trigger, + clearSelection: this.clearSelection.bind(this) + }); + } }, - get: function () { - return this._action; + { + key: 'clearSelection', + value: function () { + this.trigger && this.trigger.focus(), document.activeElement.blur(), window.getSelection().removeAllRanges(); + } }, - }, - { - key: 'target', - set: function (t) { - if (void 0 !== t) { - if (!t || 'object' !== (void 0 === t ? 'undefined' : i(t)) || 1 !== t.nodeType) - throw new Error('Invalid "target" value, use a valid Element'); - if ('copy' === this.action && t.hasAttribute('disabled')) - throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute'); - if ('cut' === this.action && (t.hasAttribute('readonly') || t.hasAttribute('disabled'))) - throw new Error( - 'Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes' - ); - this._target = t; + { + key: 'destroy', + value: function () { + this.removeFake(); } }, - get: function () { - return this._target; + { + key: 'action', + set: function (t) { + var e = 0 < arguments.length && void 0 !== t ? t : 'copy'; + if (((this._action = e), 'copy' !== this._action && 'cut' !== this._action)) + throw new Error('Invalid "action" value, use either "copy" or "cut"'); + }, + get: function () { + return this._action; + } }, - }, - ]), - c), - u = n(1), - s = n.n(u), - f = n(2), - d = n.n(f), - h = - 'function' == typeof Symbol && 'symbol' == typeof Symbol.iterator - ? function (t) { - return typeof t; + { + key: 'target', + set: function (t) { + if (void 0 !== t) { + if (!t || 'object' !== (void 0 === t ? 'undefined' : i(t)) || 1 !== t.nodeType) + throw new Error('Invalid "target" value, use a valid Element'); + if ('copy' === this.action && t.hasAttribute('disabled')) + throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute'); + if ('cut' === this.action && (t.hasAttribute('readonly') || t.hasAttribute('disabled'))) + throw new Error( + 'Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes' + ); + this._target = t; + } + }, + get: function () { + return this._target; + } } - : function (t) { - return t && 'function' == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype - ? 'symbol' - : typeof t; - }, - p = function (t, e, n) { - return e && y(t.prototype, e), n && y(t, n), t; - }; - function y(t, e) { - for (var n = 0; n < e.length; n++) { - var o = e[n]; - (o.enumerable = o.enumerable || !1), - (o.configurable = !0), - 'value' in o && (o.writable = !0), - Object.defineProperty(t, o.key, o); + ]), + c), + u = n(1), + s = n.n(u), + f = n(2), + d = n.n(f), + h = + 'function' == typeof Symbol && 'symbol' == typeof Symbol.iterator + ? function (t) { + return typeof t; + } + : function (t) { + return t && 'function' == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype + ? 'symbol' + : typeof t; + }, + p = function (t, e, n) { + return e && y(t.prototype, e), n && y(t, n), t; + }; + function y(t, e) { + for (var n = 0; n < e.length; n++) { + var o = e[n]; + (o.enumerable = o.enumerable || !1), + (o.configurable = !0), + 'value' in o && (o.writable = !0), + Object.defineProperty(t, o.key, o); + } } - } - var m = - ((function (t, e) { - if ('function' != typeof e && null !== e) - throw new TypeError('Super expression must either be null or a function, not ' + typeof e); - (t.prototype = Object.create(e && e.prototype, { - constructor: { value: t, enumerable: !1, writable: !0, configurable: !0 }, - })), - e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : (t.__proto__ = e)); - })(v, s.a), - p( - v, - [ - { - key: 'resolveOptions', - value: function (t) { - var e = 0 < arguments.length && void 0 !== t ? t : {}; - (this.action = 'function' == typeof e.action ? e.action : this.defaultAction), - (this.target = 'function' == typeof e.target ? e.target : this.defaultTarget), - (this.text = 'function' == typeof e.text ? e.text : this.defaultText), - (this.container = 'object' === h(e.container) ? e.container : document.body); - }, - }, - { - key: 'listenClick', - value: function (t) { - var e = this; - this.listener = d()(t, 'click', function (t) { - return e.onClick(t); - }); - }, - }, - { - key: 'onClick', - value: function (t) { - var e = t.delegateTarget || t.currentTarget; - this.clipboardAction && (this.clipboardAction = null), - (this.clipboardAction = new l({ - action: this.action(e), - target: this.target(e), - text: this.text(e), - container: this.container, - trigger: e, - emitter: this, - })); + var m = + ((function (t, e) { + if ('function' != typeof e && null !== e) + throw new TypeError('Super expression must either be null or a function, not ' + typeof e); + (t.prototype = Object.create(e && e.prototype, { + constructor: { value: t, enumerable: !1, writable: !0, configurable: !0 } + })), + e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : (t.__proto__ = e)); + })(v, s.a), + p( + v, + [ + { + key: 'resolveOptions', + value: function (t) { + var e = 0 < arguments.length && void 0 !== t ? t : {}; + (this.action = 'function' == typeof e.action ? e.action : this.defaultAction), + (this.target = 'function' == typeof e.target ? e.target : this.defaultTarget), + (this.text = 'function' == typeof e.text ? e.text : this.defaultText), + (this.container = 'object' === h(e.container) ? e.container : document.body); + } }, - }, - { - key: 'defaultAction', - value: function (t) { - return b('action', t); + { + key: 'listenClick', + value: function (t) { + var e = this; + this.listener = d()(t, 'click', function (t) { + return e.onClick(t); + }); + } }, - }, - { - key: 'defaultTarget', - value: function (t) { - var e = b('target', t); - if (e) return document.querySelector(e); + { + key: 'onClick', + value: function (t) { + var e = t.delegateTarget || t.currentTarget; + this.clipboardAction && (this.clipboardAction = null), + (this.clipboardAction = new l({ + action: this.action(e), + target: this.target(e), + text: this.text(e), + container: this.container, + trigger: e, + emitter: this + })); + } }, - }, - { - key: 'defaultText', - value: function (t) { - return b('text', t); + { + key: 'defaultAction', + value: function (t) { + return b('action', t); + } }, - }, - { - key: 'destroy', - value: function () { - this.listener.destroy(), this.clipboardAction && (this.clipboardAction.destroy(), (this.clipboardAction = null)); + { + key: 'defaultTarget', + value: function (t) { + var e = b('target', t); + if (e) return document.querySelector(e); + } }, - }, - ], - [ - { - key: 'isSupported', - value: function (t) { - var e = 0 < arguments.length && void 0 !== t ? t : ['copy', 'cut'], - n = 'string' == typeof e ? [e] : e, - o = !!document.queryCommandSupported; - return ( - n.forEach(function (t) { - o = o && !!document.queryCommandSupported(t); - }), - o - ); + { + key: 'defaultText', + value: function (t) { + return b('text', t); + } }, - }, - ] - ), - v); - function v(t, e) { - !(function (t, e) { - if (!(t instanceof e)) throw new TypeError('Cannot call a class as a function'); - })(this, v); - var n = (function (t, e) { - if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - return !e || ('object' != typeof e && 'function' != typeof e) ? t : e; - })(this, (v.__proto__ || Object.getPrototypeOf(v)).call(this)); - return n.resolveOptions(e), n.listenClick(t), n; - } - function b(t, e) { - var n = 'data-clipboard-' + t; - if (e.hasAttribute(n)) return e.getAttribute(n); + { + key: 'destroy', + value: function () { + this.listener.destroy(), + this.clipboardAction && (this.clipboardAction.destroy(), (this.clipboardAction = null)); + } + } + ], + [ + { + key: 'isSupported', + value: function (t) { + var e = 0 < arguments.length && void 0 !== t ? t : ['copy', 'cut'], + n = 'string' == typeof e ? [e] : e, + o = !!document.queryCommandSupported; + return ( + n.forEach(function (t) { + o = o && !!document.queryCommandSupported(t); + }), + o + ); + } + } + ] + ), + v); + function v(t, e) { + !(function (t, e) { + if (!(t instanceof e)) throw new TypeError('Cannot call a class as a function'); + })(this, v); + var n = (function (t, e) { + if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return !e || ('object' != typeof e && 'function' != typeof e) ? t : e; + })(this, (v.__proto__ || Object.getPrototypeOf(v)).call(this)); + return n.resolveOptions(e), n.listenClick(t), n; + } + function b(t, e) { + var n = 'data-clipboard-' + t; + if (e.hasAttribute(n)) return e.getAttribute(n); + } + e.default = m; } - e.default = m; - }, - ]), + ]), (r.c = o), (r.d = function (t, e, n) { r.o(t, e) || Object.defineProperty(t, e, { enumerable: !0, get: n }); diff --git a/apps/scully-docs/src/polyfills.ts b/apps/scully-docs/src/polyfills.ts index 73d18d3c7..9ac276445 100644 --- a/apps/scully-docs/src/polyfills.ts +++ b/apps/scully-docs/src/polyfills.ts @@ -18,16 +18,6 @@ * BROWSER POLYFILLS */ -/** IE10 and IE11 requires the following for NgClass support on SVG elements */ -// import 'classlist.js'; // Run `npm install --save classlist.js`. - -/** - * Web Animations `@angular/platform-browser/animations` - * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari. - * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0). - */ -// import 'web-animations-js'; // Run `npm install --save web-animations-js`. - /** * By default, zone.js will patch all possible macroTask and DomEvents * user can disable parts of macroTask/DomEvents patch by setting following flags diff --git a/apps/scully-docs/src/test.ts b/apps/scully-docs/src/test.ts index c00b624f6..0fc6e7bd8 100644 --- a/apps/scully-docs/src/test.ts +++ b/apps/scully-docs/src/test.ts @@ -2,10 +2,7 @@ import 'zone.js/testing'; import { getTestBed } from '@angular/core/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting -} from '@angular/platform-browser-dynamic/testing'; +import { BrowserDynamicTestingModule, platformBrowserDynamicTesting } from '@angular/platform-browser-dynamic/testing'; declare const require: { context( @@ -19,10 +16,7 @@ declare const require: { }; // First, initialize the Angular testing environment. -getTestBed().initTestEnvironment( - BrowserDynamicTestingModule, - platformBrowserDynamicTesting() -); +getTestBed().initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting()); // Then we find all the tests. const context = require.context('./', true, /\.spec\.ts$/); // And load the modules. diff --git a/apps/sps-sample/.browserslistrc b/apps/sps-sample/.browserslistrc deleted file mode 100644 index bd2bffb17..000000000 --- a/apps/sps-sample/.browserslistrc +++ /dev/null @@ -1,2 +0,0 @@ -and_chr 98 -chrome 97 diff --git a/apps/sps-sample/.eslintrc.json b/apps/sps-sample/.eslintrc.json deleted file mode 100644 index 59fd60166..000000000 --- a/apps/sps-sample/.eslintrc.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "extends": ["../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], - "overrides": [ - { - "files": ["*.ts"], - "extends": [ - "plugin:@nrwl/nx/angular", - "plugin:@angular-eslint/template/process-inline-templates" - ], - "parserOptions": { - "project": ["apps/sps-sample/tsconfig.*?.json"] - }, - "rules": { - "@angular-eslint/directive-selector": [ - "error", - { - "type": "attribute", - "prefix": "scullyio", - "style": "camelCase" - } - ], - "@angular-eslint/component-selector": [ - "error", - { - "type": "element", - "prefix": "scullyio", - "style": "kebab-case" - } - ] - } - }, - { - "files": ["*.html"], - "extends": ["plugin:@nrwl/nx/angular-template"], - "rules": {} - } - ] -} diff --git a/apps/sps-sample/jest.config.js b/apps/sps-sample/jest.config.js deleted file mode 100644 index e38e17733..000000000 --- a/apps/sps-sample/jest.config.js +++ /dev/null @@ -1,17 +0,0 @@ -module.exports = { - displayName: 'sps-sample', - preset: '../../jest.preset.js', - setupFilesAfterEnv: ['/src/test-setup.ts'], - globals: { - 'ts-jest': { - tsconfig: '/tsconfig.spec.json', - stringifyContentPathRegex: '\\.(html|svg)$', - }, - }, - coverageDirectory: '../../coverage/apps/sps-sample', - snapshotSerializers: [ - 'jest-preset-angular/build/serializers/no-ng-attributes', - 'jest-preset-angular/build/serializers/ng-snapshot', - 'jest-preset-angular/build/serializers/html-comment', - ], -}; diff --git a/apps/sps-sample/src/app/about/about-routing.module.ts b/apps/sps-sample/src/app/about/about-routing.module.ts deleted file mode 100644 index 4a61313de..000000000 --- a/apps/sps-sample/src/app/about/about-routing.module.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { NgModule } from '@angular/core'; -import { RouterModule, Routes } from '@angular/router'; -import { AboutComponent } from './about.component'; - -const routes: Routes = [{ path: '', component: AboutComponent }]; - -@NgModule({ - imports: [RouterModule.forChild(routes)], - exports: [RouterModule] -}) -export class AboutRoutingModule { } diff --git a/apps/sps-sample/src/app/about/about.component.css b/apps/sps-sample/src/app/about/about.component.css deleted file mode 100644 index e69de29bb..000000000 diff --git a/apps/sps-sample/src/app/about/about.component.html b/apps/sps-sample/src/app/about/about.component.html deleted file mode 100644 index 6094aa9f5..000000000 --- a/apps/sps-sample/src/app/about/about.component.html +++ /dev/null @@ -1 +0,0 @@ -

      about works!

      diff --git a/apps/sps-sample/src/app/about/about.component.spec.ts b/apps/sps-sample/src/app/about/about.component.spec.ts deleted file mode 100644 index 43a976ab3..000000000 --- a/apps/sps-sample/src/app/about/about.component.spec.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { AboutComponent } from './about.component'; - -xdescribe('AboutComponent', () => { - let component: AboutComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [AboutComponent], - }).compileComponents(); - }); - - beforeEach(() => { - fixture = TestBed.createComponent(AboutComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/apps/sps-sample/src/app/about/about.component.ts b/apps/sps-sample/src/app/about/about.component.ts deleted file mode 100644 index e9f997f30..000000000 --- a/apps/sps-sample/src/app/about/about.component.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Component, OnInit } from '@angular/core'; - -@Component({ - selector: 'scullyio-about', - templateUrl: './about.component.html', - styleUrls: ['./about.component.css'] -}) -export class AboutComponent implements OnInit { - - constructor() { } - - ngOnInit(): void { - } - -} diff --git a/apps/sps-sample/src/app/about/about.module.ts b/apps/sps-sample/src/app/about/about.module.ts deleted file mode 100644 index 131a0d511..000000000 --- a/apps/sps-sample/src/app/about/about.module.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { Routes, RouterModule } from '@angular/router'; - -import { AboutRoutingModule } from './about-routing.module'; -import { AboutComponent } from './about.component'; - -const routes: Routes = [ - { path: '', component: AboutComponent } -]; - -@NgModule({ - declarations: [AboutComponent], - imports: [ - CommonModule, - AboutRoutingModule, - RouterModule.forChild(routes) - ] -}) -export class AboutModule { } diff --git a/apps/sps-sample/src/app/app.component.ts b/apps/sps-sample/src/app/app.component.ts deleted file mode 100644 index 707c53e19..000000000 --- a/apps/sps-sample/src/app/app.component.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { Component } from '@angular/core'; - -@Component({ - selector: 'scullyio-root', - template: ` - - - - `, - - styles: [``], -}) -export class AppComponent { - title = 'sps-sample'; - constructor() {} -} diff --git a/apps/sps-sample/src/app/app.module.ts b/apps/sps-sample/src/app/app.module.ts deleted file mode 100644 index 2a0e07234..000000000 --- a/apps/sps-sample/src/app/app.module.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { HttpClientModule } from '@angular/common/http'; -import { NgModule } from '@angular/core'; -import { BrowserModule } from '@angular/platform-browser'; -import { RouterModule } from '@angular/router'; -import { ScullyLibModule } from '@scullyio/ng-lib'; -import { AppComponent } from './app.component'; - - -const routes = [ - { path: 'demo/:id', loadChildren: () => import('./demo/demo.module').then((m) => m.DemoModule) }, - { path: 'about', loadChildren: () => import('./about/about.module').then((m) => m.AboutModule) }, - { path: 'home', loadChildren: () => import('./home/home.module').then((m) => m.HomeModule) }, - { path: 'user/:id', loadChildren: () => import('./user/user.module').then((m) => m.UserModule) }, - { path: 'docs', loadChildren: () => import('./docs/docs.module').then(m => m.DocsModule) }, -]; -@NgModule({ - declarations: [AppComponent], - imports: [ - BrowserModule.withServerTransition({ appId: 'spsSample' }), - HttpClientModule, - RouterModule.forRoot(routes), - ScullyLibModule, - ], - providers: [], - bootstrap: [AppComponent], -}) -export class AppModule { - -} diff --git a/apps/sps-sample/src/app/app.sps.module.ts b/apps/sps-sample/src/app/app.sps.module.ts deleted file mode 100644 index c3d6aa7a9..000000000 --- a/apps/sps-sample/src/app/app.sps.module.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { enableProdMode, NgModule } from '@angular/core'; -import { AppComponent } from './app.component'; -import { AppModule } from './app.module'; -import { ScullyPlatformServerModule } from '@scullyio/platform-server' - - -/** - * the platform server should be running in production mode. - */ -enableProdMode(); - - -@NgModule({ - imports: [ - AppModule, - ScullyPlatformServerModule, - ], - providers: [], - bootstrap: [AppComponent], -}) -export default class AppSPSModule {} diff --git a/apps/sps-sample/src/app/demo/demo-routing.module.ts b/apps/sps-sample/src/app/demo/demo-routing.module.ts deleted file mode 100644 index 098f52161..000000000 --- a/apps/sps-sample/src/app/demo/demo-routing.module.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { NgModule } from '@angular/core'; -import { RouterModule, Routes } from '@angular/router'; -import { DemoComponent } from './demo.component'; - -const routes: Routes = [{ path: '', component: DemoComponent }]; - -@NgModule({ - imports: [RouterModule.forChild(routes)], - exports: [RouterModule] -}) -export class DemoRoutingModule { } diff --git a/apps/sps-sample/src/app/demo/demo.component.ts b/apps/sps-sample/src/app/demo/demo.component.ts deleted file mode 100644 index 7c8957b6d..000000000 --- a/apps/sps-sample/src/app/demo/demo.component.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { HttpClient } from '@angular/common/http'; -import { Component } from '@angular/core'; -import { ActivatedRoute } from '@angular/router'; -import { combineLatest, map, pluck } from 'rxjs'; - -@Component({ - selector: 'app-demo', - template: `

      {{ pageId$ | async }}

      -
      {{ userName$ | async }}
      - prev -   - next`, - styles: [], -}) -export class DemoComponent { - pageId = this.route.snapshot.params.id; - pageId$ = this.route.params.pipe( - pluck('id'), - map((id) => +id) - // tap(id => (this.pageId = id)) - ); - - userList$ = this.http.get(`http://localhost:8200/users/?delay=100`); - userName$ = combineLatest([this.pageId$, this.userList$]).pipe( - map(([id, users]) => { - const _id = +id % users.length - return users[_id]['name']; - }), - ); - - constructor(private route: ActivatedRoute, private http: HttpClient) { } - -} diff --git a/apps/sps-sample/src/app/demo/demo.module.ts b/apps/sps-sample/src/app/demo/demo.module.ts deleted file mode 100644 index 21c868c35..000000000 --- a/apps/sps-sample/src/app/demo/demo.module.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { Routes, RouterModule } from '@angular/router'; - -import { DemoRoutingModule } from './demo-routing.module'; -import { DemoComponent } from './demo.component'; - -const routes: Routes = [ - { path: '', component: DemoComponent } -]; - -@NgModule({ - declarations: [DemoComponent], - imports: [ - CommonModule, - DemoRoutingModule, - RouterModule.forChild(routes) - ] -}) -export class DemoModule { } diff --git a/apps/sps-sample/src/app/docs/docs-routing.module.ts b/apps/sps-sample/src/app/docs/docs-routing.module.ts deleted file mode 100644 index 283c2de69..000000000 --- a/apps/sps-sample/src/app/docs/docs-routing.module.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { NgModule } from '@angular/core'; -import { RouterModule, Routes } from '@angular/router'; -import { DocsComponent } from './docs.component'; - -const routes: Routes = [ - { path: '/:slug', component: DocsComponent }, - { path: '**', component: DocsComponent }, -]; - -@NgModule({ - imports: [RouterModule.forChild(routes)], - exports: [RouterModule] -}) -export class DocsRoutingModule { } diff --git a/apps/sps-sample/src/app/docs/docs.component.css b/apps/sps-sample/src/app/docs/docs.component.css deleted file mode 100644 index e69de29bb..000000000 diff --git a/apps/sps-sample/src/app/docs/docs.component.html b/apps/sps-sample/src/app/docs/docs.component.html deleted file mode 100644 index 2fa32495f..000000000 --- a/apps/sps-sample/src/app/docs/docs.component.html +++ /dev/null @@ -1,2 +0,0 @@ -

      docs works!

      - diff --git a/apps/sps-sample/src/app/docs/docs.component.spec.ts b/apps/sps-sample/src/app/docs/docs.component.spec.ts deleted file mode 100644 index 3950fa4bb..000000000 --- a/apps/sps-sample/src/app/docs/docs.component.spec.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { DocsComponent } from './docs.component'; - -xdescribe('DocsComponent', () => { - let component: DocsComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [DocsComponent], - }).compileComponents(); - }); - - beforeEach(() => { - fixture = TestBed.createComponent(DocsComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/apps/sps-sample/src/app/docs/docs.component.ts b/apps/sps-sample/src/app/docs/docs.component.ts deleted file mode 100644 index 4995997e4..000000000 --- a/apps/sps-sample/src/app/docs/docs.component.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Component, OnInit } from '@angular/core'; - -@Component({ - selector: 'scullyio-docs', - templateUrl: './docs.component.html', - styleUrls: ['./docs.component.css'] -}) -export class DocsComponent implements OnInit { - - constructor() { } - - ngOnInit(): void { - } - -} diff --git a/apps/sps-sample/src/app/docs/docs.module.ts b/apps/sps-sample/src/app/docs/docs.module.ts deleted file mode 100644 index f4d6f2b59..000000000 --- a/apps/sps-sample/src/app/docs/docs.module.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { Routes, RouterModule } from '@angular/router'; - -import { DocsRoutingModule } from './docs-routing.module'; -import { DocsComponent } from './docs.component'; -import { ScullyLibModule } from '@scullyio/ng-lib'; - -const routes: Routes = [ - { path: ':slug', component: DocsComponent } -]; - -@NgModule({ - declarations: [ - DocsComponent - ], - imports: [ - CommonModule, - DocsRoutingModule, - ScullyLibModule, - RouterModule.forChild(routes) - ] -}) -export class DocsModule { } diff --git a/apps/sps-sample/src/app/home/home-routing.module.ts b/apps/sps-sample/src/app/home/home-routing.module.ts deleted file mode 100644 index b570b4927..000000000 --- a/apps/sps-sample/src/app/home/home-routing.module.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { NgModule } from '@angular/core'; -import { RouterModule, Routes } from '@angular/router'; -import { HomeComponent } from './home.component'; - -const routes: Routes = [{ path: '', component: HomeComponent }]; - -@NgModule({ - imports: [RouterModule.forChild(routes)], - exports: [RouterModule] -}) -export class HomeRoutingModule { } diff --git a/apps/sps-sample/src/app/home/home.component.css b/apps/sps-sample/src/app/home/home.component.css deleted file mode 100644 index e69de29bb..000000000 diff --git a/apps/sps-sample/src/app/home/home.component.html b/apps/sps-sample/src/app/home/home.component.html deleted file mode 100644 index 5f2c53ffd..000000000 --- a/apps/sps-sample/src/app/home/home.component.html +++ /dev/null @@ -1 +0,0 @@ -

      home works!

      diff --git a/apps/sps-sample/src/app/home/home.component.spec.ts b/apps/sps-sample/src/app/home/home.component.spec.ts deleted file mode 100644 index 8e766849e..000000000 --- a/apps/sps-sample/src/app/home/home.component.spec.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { HomeComponent } from './home.component'; - -xdescribe('HomeComponent', () => { - let component: HomeComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [HomeComponent], - }).compileComponents(); - }); - - beforeEach(() => { - fixture = TestBed.createComponent(HomeComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/apps/sps-sample/src/app/home/home.component.ts b/apps/sps-sample/src/app/home/home.component.ts deleted file mode 100644 index 7803ca1b3..000000000 --- a/apps/sps-sample/src/app/home/home.component.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Component, OnInit } from '@angular/core'; - -@Component({ - selector: 'scullyio-home', - templateUrl: './home.component.html', - styleUrls: ['./home.component.css'] -}) -export class HomeComponent implements OnInit { - - constructor() { } - - ngOnInit(): void { - } - -} diff --git a/apps/sps-sample/src/app/home/home.module.ts b/apps/sps-sample/src/app/home/home.module.ts deleted file mode 100644 index 43ed85c95..000000000 --- a/apps/sps-sample/src/app/home/home.module.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { Routes, RouterModule } from '@angular/router'; - -import { HomeRoutingModule } from './home-routing.module'; -import { HomeComponent } from './home.component'; - -const routes: Routes = [ - { path: '', component: HomeComponent } -]; - -@NgModule({ - declarations: [HomeComponent], - imports: [ - CommonModule, - HomeRoutingModule, - RouterModule.forChild(routes) - ] -}) -export class HomeModule { } diff --git a/apps/sps-sample/src/app/user/user-routing.module.ts b/apps/sps-sample/src/app/user/user-routing.module.ts deleted file mode 100644 index 3a55d86e2..000000000 --- a/apps/sps-sample/src/app/user/user-routing.module.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { NgModule } from '@angular/core'; -import { RouterModule, Routes } from '@angular/router'; -import { UserComponent } from './user.component'; - -const routes: Routes = [{ path: '', component: UserComponent }]; - -@NgModule({ - imports: [RouterModule.forChild(routes)], - exports: [RouterModule] -}) -export class UserRoutingModule { } diff --git a/apps/sps-sample/src/app/user/user.component.spec.ts b/apps/sps-sample/src/app/user/user.component.spec.ts deleted file mode 100644 index ab714dff3..000000000 --- a/apps/sps-sample/src/app/user/user.component.spec.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { UserComponent } from './user.component'; - -xdescribe('UserComponent', () => { - let component: UserComponent; - let fixture: ComponentFixture; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [UserComponent], - }).compileComponents(); - }); - - beforeEach(() => { - fixture = TestBed.createComponent(UserComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/apps/sps-sample/src/app/user/user.component.ts b/apps/sps-sample/src/app/user/user.component.ts deleted file mode 100644 index 06efd6f20..000000000 --- a/apps/sps-sample/src/app/user/user.component.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { HttpClient } from '@angular/common/http'; -import { Component } from '@angular/core'; -import { ActivatedRoute } from '@angular/router'; -import { TransferStateService } from '@scullyio/ng-lib'; -import { filter, map, Observable, pluck, shareReplay, switchMap } from 'rxjs'; - -@Component({ - selector: 'app-user', - template: ` -

      user {{ userId$ | async }} works!

      -

      {{ user.name }}

      - prev -   - next - `, - styles: [], -}) -export class UserComponent { - userId$: Observable = this.route.params.pipe( - pluck('id'), - filter((val) => ![undefined, null].includes(val)), - map((val) => parseInt(val, 10)), - // tap(r => console.log(r)), - shareReplay(1) - ); - - userList$ = this.http.get(`http://localhost:8200/users`); - - apiUser$ = this.userId$.pipe( - switchMap((id) => - this.sts.useScullyTransferState(`user-${id}`, this.userList$.pipe(map((list) => list.find((user) => user.id === id)))) - ), - // tap(r => console.log(r)), - shareReplay(1) - ); - - constructor(private route: ActivatedRoute, private http: HttpClient, private sts: TransferStateService) {} - -} diff --git a/apps/sps-sample/src/app/user/user.module.ts b/apps/sps-sample/src/app/user/user.module.ts deleted file mode 100644 index b7b7fe981..000000000 --- a/apps/sps-sample/src/app/user/user.module.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { Routes, RouterModule } from '@angular/router'; - -import { UserRoutingModule } from './user-routing.module'; -import { UserComponent } from './user.component'; - -const routes: Routes = [ - { path: '', component: UserComponent } -]; - -@NgModule({ - declarations: [UserComponent], - imports: [ - CommonModule, - UserRoutingModule, - RouterModule.forChild(routes) - ] -}) -export class UserModule { } diff --git a/apps/sps-sample/src/assets/.gitkeep b/apps/sps-sample/src/assets/.gitkeep deleted file mode 100644 index e69de29bb..000000000 diff --git a/apps/sps-sample/src/environments/environment.prod.ts b/apps/sps-sample/src/environments/environment.prod.ts deleted file mode 100644 index c9669790b..000000000 --- a/apps/sps-sample/src/environments/environment.prod.ts +++ /dev/null @@ -1,3 +0,0 @@ -export const environment = { - production: true, -}; diff --git a/apps/sps-sample/src/environments/environment.ts b/apps/sps-sample/src/environments/environment.ts deleted file mode 100644 index 31cb7855f..000000000 --- a/apps/sps-sample/src/environments/environment.ts +++ /dev/null @@ -1,16 +0,0 @@ -// This file can be replaced during build by using the `fileReplacements` array. -// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`. -// The list of file replacements can be found in `angular.json`. - -export const environment = { - production: false, -}; - -/* - * For easier debugging in development mode, you can import the following file - * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. - * - * This import should be commented out in production mode because it will have a negative impact - * on performance if an error is thrown. - */ -// import 'zone.js/plugins/zone-error'; // Included with Angular CLI. diff --git a/apps/sps-sample/src/favicon.ico b/apps/sps-sample/src/favicon.ico deleted file mode 100644 index 317ebcb23..000000000 Binary files a/apps/sps-sample/src/favicon.ico and /dev/null differ diff --git a/apps/sps-sample/src/index.html b/apps/sps-sample/src/index.html deleted file mode 100644 index 37c163ac2..000000000 --- a/apps/sps-sample/src/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - UniversalSample - - - - - - - - diff --git a/apps/sps-sample/src/main.ts b/apps/sps-sample/src/main.ts deleted file mode 100644 index d9a2e7e4a..000000000 --- a/apps/sps-sample/src/main.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { enableProdMode } from '@angular/core'; -import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; - -import { AppModule } from './app/app.module'; -import { environment } from './environments/environment'; - -if (environment.production) { - enableProdMode(); -} - -platformBrowserDynamic() - .bootstrapModule(AppModule) - .catch((err) => console.error(err)); diff --git a/apps/sps-sample/src/polyfills.ts b/apps/sps-sample/src/polyfills.ts deleted file mode 100644 index d1bde133b..000000000 --- a/apps/sps-sample/src/polyfills.ts +++ /dev/null @@ -1,66 +0,0 @@ -/** - * This file includes polyfills needed by Angular and is loaded before the app. - * You can add your own extra polyfills to this file. - * - * This file is divided into 2 sections: - * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. - * 2. Application imports. Files imported after ZoneJS that should be loaded before your main - * file. - * - * The current setup is for so-called "evergreen" browsers; the last versions of browsers that - * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), - * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. - * - * Learn more in https://angular.io/guide/browser-support - */ - -/*************************************************************************************************** - * BROWSER POLYFILLS - */ - -/** - * IE11 requires the following for NgClass support on SVG elements - */ -// import 'classlist.js'; // Run `npm install --save classlist.js`. - -/** - * Web Animations `@angular/platform-browser/animations` - * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari. - * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0). - */ -// import 'web-animations-js'; // Run `npm install --save web-animations-js`. - -/** - * By default, zone.js will patch all possible macroTask and DomEvents - * user can disable parts of macroTask/DomEvents patch by setting following flags - * because those flags need to be set before `zone.js` being loaded, and webpack - * will put import in the top of bundle, so user need to create a separate file - * in this directory (for example: zone-flags.ts), and put the following flags - * into that file, and then add the following code before importing zone.js. - * import './zone-flags'; - * - * The flags allowed in zone-flags.ts are listed here. - * - * The following flags will work for all browsers. - * - * (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame - * (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick - * (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames - * - * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js - * with the following flag, it will bypass `zone.js` patch for IE/Edge - * - * (window as any).__Zone_enable_cross_context_check = true; - * - */ - -/*************************************************************************************************** - * Zone JS is required by default for Angular itself. - */ -import 'zone.js'; // Included with Angular CLI. -// tslint:disable-next-line: ordered-imports -import 'zone.js/dist/task-tracking'; - -/*************************************************************************************************** - * APPLICATION IMPORTS - */ diff --git a/apps/sps-sample/src/styles.css b/apps/sps-sample/src/styles.css deleted file mode 100644 index 90d4ee007..000000000 --- a/apps/sps-sample/src/styles.css +++ /dev/null @@ -1 +0,0 @@ -/* You can add global styles to this file, and also import other style files */ diff --git a/apps/sps-sample/src/test-setup.ts b/apps/sps-sample/src/test-setup.ts deleted file mode 100644 index 035d640f7..000000000 --- a/apps/sps-sample/src/test-setup.ts +++ /dev/null @@ -1,2 +0,0 @@ -// import 'jest-preset-angular'; -import 'jest-preset-angular/setup-jest'; diff --git a/apps/sps-sample/tsconfig.app.json b/apps/sps-sample/tsconfig.app.json deleted file mode 100644 index e9fa6dfd9..000000000 --- a/apps/sps-sample/tsconfig.app.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "types": [] - }, - "files": ["src/main.ts", "src/polyfills.ts"] -} diff --git a/apps/sps-sample/tsconfig.editor.json b/apps/sps-sample/tsconfig.editor.json deleted file mode 100644 index 20c4afdbf..000000000 --- a/apps/sps-sample/tsconfig.editor.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "extends": "./tsconfig.json", - "include": ["**/*.ts"], - "compilerOptions": { - "types": ["jest", "node"] - } -} diff --git a/apps/sps-sample/tsconfig.json b/apps/sps-sample/tsconfig.json deleted file mode 100644 index 7766f8f1f..000000000 --- a/apps/sps-sample/tsconfig.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.app.json" - }, - { - "path": "./tsconfig.spec.json" - }, - { - "path": "./tsconfig.editor.json" - } - ], - "compilerOptions": { - "forceConsistentCasingInFileNames": true, - "strict": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true - }, - "angularCompilerOptions": { - "strictInjectionParameters": true, - "strictTemplates": true - } -} diff --git a/apps/sps-sample/tsconfig.spec.json b/apps/sps-sample/tsconfig.spec.json deleted file mode 100644 index cfff29a54..000000000 --- a/apps/sps-sample/tsconfig.spec.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "module": "commonjs", - "types": ["jest", "node"] - }, - "files": ["src/test-setup.ts"], - "include": ["**/*.spec.ts", "**/*.d.ts"] -} diff --git a/commitlint.config.js b/commitlint.config.js index 84dcb122a..c34aa79d0 100644 --- a/commitlint.config.js +++ b/commitlint.config.js @@ -1,3 +1,3 @@ module.exports = { - extends: ['@commitlint/config-conventional'], + extends: ['@commitlint/config-conventional'] }; diff --git a/demos/plugins/errorPlugin.js b/demos/plugins/errorPlugin.mjs similarity index 70% rename from demos/plugins/errorPlugin.js rename to demos/plugins/errorPlugin.mjs index a2cef660e..5cf8fcd34 100644 --- a/demos/plugins/errorPlugin.js +++ b/demos/plugins/errorPlugin.mjs @@ -1,4 +1,4 @@ -const { registerPlugin, logWarn } = require('@scullyio/scully'); +import { registerPlugin, logWarn } from '@scullyio/scully'; const errorPlugin = async (html, options) => { try { @@ -9,5 +9,5 @@ const errorPlugin = async (html, options) => { return undefined; }; -const validator = async (config) => []; +const validator = async config => []; registerPlugin('postProcessByHtml', 'errorPlugin', errorPlugin, validator); diff --git a/demos/plugins/newSample.js b/demos/plugins/newSample.mjs similarity index 83% rename from demos/plugins/newSample.js rename to demos/plugins/newSample.mjs index 55e26707b..6a1fc89fb 100644 --- a/demos/plugins/newSample.js +++ b/demos/plugins/newSample.mjs @@ -1,13 +1,11 @@ -const { routeSplit, registerPlugin, httpGet } = require('@scullyio/scully'); +import { routeSplit, registerPlugin, httpGet } from '@scullyio/scully'; const newsSamplePlugin = async (route, config) => { const { createPath } = routeSplit(route); const list = await httpGet('http://localhost:4200/assets/news.json'); const handledRoutes = []; for (item of list) { - const blogData = await httpget( - `http://localhost:4200/assets/news/${list.id}.json` - ); + const blogData = await httpget(`http://localhost:4200/assets/news/${list.id}.json`); handledRoutes.push({ route: createPath(item.id, blogdata.slug), title: blogData.title, diff --git a/demos/plugins/tocPlugin.js b/demos/plugins/tocPlugin.mjs similarity index 77% rename from demos/plugins/tocPlugin.js rename to demos/plugins/tocPlugin.mjs index d2c66d043..ad72de7f4 100644 --- a/demos/plugins/tocPlugin.js +++ b/demos/plugins/tocPlugin.mjs @@ -1,4 +1,7 @@ -const { registerPlugin, configValidator, logWarn, yellow } = require('@scullyio/scully'); +import { logWarn, registerPlugin, yellow } from '@scullyio/scully'; +import { createRequire } from 'module'; + +const require = createRequire(import.meta.url); const jsdom = require('jsdom'); const { JSDOM } = jsdom; @@ -9,8 +12,8 @@ const tocPlugin = async (html, options) => { const h1headers = window.document.querySelectorAll('h1'); const h2headers = window.document.querySelectorAll('h2'); const toc = [...h1headers, ...h2headers] - .map((e) => e.innerHTML) - .map((c) => `
    • ${c}
    • `) + .map(e => e.innerHTML) + .map(c => `
    • ${c}
    • `) .join(''); const insertPoint = window.document.querySelector('main').querySelector('h1'); const list = window.document.createElement('ul'); @@ -24,5 +27,5 @@ const tocPlugin = async (html, options) => { return html; }; -const validator = async (config) => []; +const validator = async config => []; registerPlugin('postProcessByHtml', 'toc', tocPlugin, validator); diff --git a/demos/plugins/voidPlugin.js b/demos/plugins/voidPlugin.mjs similarity index 80% rename from demos/plugins/voidPlugin.js rename to demos/plugins/voidPlugin.mjs index e63f3a82a..383fedb7d 100644 --- a/demos/plugins/voidPlugin.js +++ b/demos/plugins/voidPlugin.mjs @@ -1,4 +1,4 @@ -const { configValidator, registerPlugin } = require('@scullyio/scully'); +import { configValidator, registerPlugin } from '@scullyio/scully'; const voidPlugin = async (route, options) => { /** diff --git a/docs/Reference/config.md b/docs/Reference/config.md index 1ca0283a5..29b34975f 100644 --- a/docs/Reference/config.md +++ b/docs/Reference/config.md @@ -122,11 +122,7 @@ For more information about router plugins read the [Plugins](/docs/Reference/plu Allows developers to add an array of unhandled routes. These routes can exist in AngularJS, React, or any other framework. ```typescript -extraRoutes: [ - '/foo/:id', - new Promise('/bar/:barId'), - new Promise(['/foo/:fooId', '/bar/:id']), -]; +extraRoutes: ['/foo/:id', new Promise('/bar/:barId'), new Promise(['/foo/:fooId', '/bar/:id'])]; ``` #### appPort diff --git a/docs/Reference/config_es.md b/docs/Reference/config_es.md index 6c93581c7..80aad1d0e 100644 --- a/docs/Reference/config_es.md +++ b/docs/Reference/config_es.md @@ -120,11 +120,7 @@ Para mas información sobre complementos router, vista la documentación de [com Permite a los desarrolladores agregar un arreglo de rutas no manejadas. Esas rutas pueden existir en AngularJS, React o cualquier otro framework. ```typescript -extraRoutes: [ - '/foo/:id', - new Promise('/bar/:barId'), - new Promise(['/foo/:fooId', '/bar/:id']), -]; +extraRoutes: ['/foo/:id', new Promise('/bar/:barId'), new Promise(['/foo/:fooId', '/bar/:id'])]; ``` #### appPort diff --git a/docs/Reference/legacy-support/angular-v8_es.md b/docs/Reference/legacy-support/angular-v8_es.md index 26d231988..73490041c 100644 --- a/docs/Reference/legacy-support/angular-v8_es.md +++ b/docs/Reference/legacy-support/angular-v8_es.md @@ -15,7 +15,7 @@ position: 100 - Asegurece que el archivo `package.json` tiene la versión 8 - Compila la aplicación: `ng build @scullyio/ng-lib-v8` - Ejecuta los test -- Presta atención al archivo `package.json` mantenga la versión 8 +- Presta atención al archivo `package.json` mantenga la versión 8 - Si todos los test están correctos, compila la librería: - `ng build @scullyio/ng-lib-v8` - Publica la aplicación: diff --git a/docs/Reference/ngLib/idle-monitor-service.md b/docs/Reference/ngLib/idle-monitor-service.md index a8f3bfea5..3bc2635d9 100644 --- a/docs/Reference/ngLib/idle-monitor-service.md +++ b/docs/Reference/ngLib/idle-monitor-service.md @@ -27,7 +27,7 @@ To disable Scully's ready mechanism and add a custom mechanism, put following co ScullyLibModule.forRoot({ useTransferState: true, alwaysMonitor: false, - manualIdle: true, + manualIdle: true }); ``` diff --git a/docs/Reference/ngLib/idle-monitor-service_es.md b/docs/Reference/ngLib/idle-monitor-service_es.md index 107b8f09d..4fc058fc5 100644 --- a/docs/Reference/ngLib/idle-monitor-service_es.md +++ b/docs/Reference/ngLib/idle-monitor-service_es.md @@ -13,7 +13,7 @@ position: 100 ## Visión General -El [`IdleMonitorService`](https://github.com/scullyio/scully/blob/main/libs/ng-lib/src/lib/idleMonitor/idle-monitor.service.ts) se conecta a Zonejs. Está ubicado en [`ScullyLibModule`](https://github.com/scullyio/scully/blob/main/libs/ng-lib/src/lib/scully-lib.module.ts). +El [`IdleMonitorService`](https://github.com/scullyio/scully/blob/main/libs/ng-lib/src/lib/idleMonitor/idle-monitor.service.ts) se conecta a Zonejs. Está ubicado en [`ScullyLibModule`](https://github.com/scullyio/scully/blob/main/libs/ng-lib/src/lib/scully-lib.module.ts). Cuando Angular queda libre **(más precisamente, cuando todas las peticiones HTTP han finalizado)** Scully dispara Puppeteer para saber cuando está listo para el renderizado. @@ -27,7 +27,7 @@ Para desabilitas los mecanismo de finalizado de Scully y agregar uno personaliza ScullyLibModule.forRoot({ useTransferState: true, alwaysMonitor: false, - manualIdle: true, + manualIdle: true }); ``` diff --git a/docs/Reference/plugins/built-in-plugins/contentFolder.md b/docs/Reference/plugins/built-in-plugins/contentFolder.md index e593cec62..83ac01923 100644 --- a/docs/Reference/plugins/built-in-plugins/contentFolder.md +++ b/docs/Reference/plugins/built-in-plugins/contentFolder.md @@ -29,10 +29,10 @@ const contentFolderconfig = { '/blog/:slug': { type: 'contentFolder', slug: { - folder: './tests/assets/blog-files', - }, - }, - }, + folder: './tests/assets/blog-files' + } + } + } }; ``` diff --git a/docs/Reference/plugins/built-in-plugins/contentFolder_es.md b/docs/Reference/plugins/built-in-plugins/contentFolder_es.md index 7450fd2cf..4638290e4 100644 --- a/docs/Reference/plugins/built-in-plugins/contentFolder_es.md +++ b/docs/Reference/plugins/built-in-plugins/contentFolder_es.md @@ -13,7 +13,7 @@ position: 100 ## Visión Feneral -El complemento `contentFolder` define una **carpeta** en donde Scully debe buscar el contenido a renderizar , una **ruta con parámetros** para asociar los archivos estáticos. +El complemento `contentFolder` define una **carpeta** en donde Scully debe buscar el contenido a renderizar , una **ruta con parámetros** para asociar los archivos estáticos. Es una combinación del [complemento `router`](/docs/Reference/plugins/types/router) y está integrado en Scully. @@ -29,10 +29,10 @@ const contentFolderconfig = { '/blog/:slug': { type: 'contentFolder', slug: { - folder: './tests/assets/blog-files', - }, - }, - }, + folder: './tests/assets/blog-files' + } + } + } }; ``` diff --git a/docs/Reference/plugins/built-in-plugins/criticalcss.md b/docs/Reference/plugins/built-in-plugins/criticalcss.md index a26e2bd57..da00dcf5d 100644 --- a/docs/Reference/plugins/built-in-plugins/criticalcss.md +++ b/docs/Reference/plugins/built-in-plugins/criticalcss.md @@ -33,7 +33,7 @@ export const config: ScullyConfig = { /** more config here */ routes: { /** more config here */ - }, + } }; ``` @@ -58,7 +58,7 @@ You can configure this plugin by using the setPluginConfig helper like this: ```typescript setPluginConfig(criticalCSS, { - inlineImages: false, + inlineImages: false }); ``` diff --git a/docs/Reference/plugins/built-in-plugins/criticalcss_es.md b/docs/Reference/plugins/built-in-plugins/criticalcss_es.md index c74a216b9..e82710ed2 100644 --- a/docs/Reference/plugins/built-in-plugins/criticalcss_es.md +++ b/docs/Reference/plugins/built-in-plugins/criticalcss_es.md @@ -33,7 +33,7 @@ export const config: ScullyConfig = { /** más configuración aquí */ routes: { /** más configuración aquí */ - }, + } }; ``` @@ -58,7 +58,7 @@ Puede configurar este plugin utilizando el ayudante setPluginConfig de esta mane ```typescript setPluginConfig(criticalCSS, { - inlineImages: false, + inlineImages: false }); ``` diff --git a/docs/Reference/plugins/built-in-plugins/flashPrevention.md b/docs/Reference/plugins/built-in-plugins/flashPrevention.md index 27a6fd8fb..175c13d74 100644 --- a/docs/Reference/plugins/built-in-plugins/flashPrevention.md +++ b/docs/Reference/plugins/built-in-plugins/flashPrevention.md @@ -20,18 +20,14 @@ This plugin shows the pre-rendered copy of your app until your app is fully rend Before this plugin, you app would pre-render and then save to file, like this: ```html - - // The entire content of your app here - + // The entire content of your app here ``` After this plugin, you will see the following in your pre-rendered template: ```html - - // The entire content of your app here - + // The entire content of your app here ``` This app-root-scully will be the pre-rendered copy of your app. Prior to your app being rendered fully, app-root will be hidden and app-root-scully will be displayed. diff --git a/docs/Reference/plugins/built-in-plugins/flashPrevention_es.md b/docs/Reference/plugins/built-in-plugins/flashPrevention_es.md index ef043576e..426e96bf1 100644 --- a/docs/Reference/plugins/built-in-plugins/flashPrevention_es.md +++ b/docs/Reference/plugins/built-in-plugins/flashPrevention_es.md @@ -1,11 +1,11 @@ --- -title: Plugin flash prevention +title: Plugin flash prevention published: true lang: es position: 100 --- -# Plugin `flash-prevention` +# Plugin `flash-prevention` ## Información general @@ -20,9 +20,7 @@ Este plugin muestra la copia pre-renderizada de tu aplicación hasta que esté c Antes de este plugin, tu aplicación se pre-renderizaría y luego se guardaría en un archivo, como este: ```html - - // Aquí iría todo el contenido de su aplicación - + // Aquí iría todo el contenido de su aplicación ``` Después de este plugin, verá lo siguiente en su plantilla pre-renderizada: diff --git a/docs/Reference/plugins/built-in-plugins/json.md b/docs/Reference/plugins/built-in-plugins/json.md index 76d3fc584..9e5d7f87b 100644 --- a/docs/Reference/plugins/built-in-plugins/json.md +++ b/docs/Reference/plugins/built-in-plugins/json.md @@ -33,10 +33,10 @@ export const config: ScullyConfig = { type: 'json', userId: { url: 'http://localhost:8200/users', - property: 'id', - }, - }, - }, + property: 'id' + } + } + } }; ``` @@ -110,7 +110,7 @@ export const config: ScullyConfig = { * different type. Error will be thrown if content types do not match. */ expectedContentType: 'application/vnd.api+json', - 'API-KEY': '0123456789', + 'API-KEY': '0123456789' }, /** * resultsHandler: (response: any) => any[] @@ -122,9 +122,9 @@ export const config: ScullyConfig = { * nested inside of the `response.data` property. So the resultsHandler returns * `response.data.users`. */ - resultsHandler: (response) => response.data.users, - }, - }, - }, + resultsHandler: response => response.data.users + } + } + } }; ``` diff --git a/docs/Reference/plugins/built-in-plugins/json_es.md b/docs/Reference/plugins/built-in-plugins/json_es.md index 5ed4b9ac8..cbab287ad 100644 --- a/docs/Reference/plugins/built-in-plugins/json_es.md +++ b/docs/Reference/plugins/built-in-plugins/json_es.md @@ -5,7 +5,7 @@ lang: es position: 100 --- -# Complemento `json` +# Complemento `json`