491 Commits

Author SHA1 Message Date
John Hildenbiddle
ff2a66f127
fix: isExternal check with malformed URL + tests (#1510)
Fix #1477. Fix #1126. Follow-up to #1489.
2021-02-18 20:06:44 +08:00
John Hildenbiddle
a0f61b2af7
fix: Replace ES6 usage for IE11 compatibility (#1500)
* Remove ES6 syntax for IE11 compatibility

* Replace unsupported methods (IE11)
2021-02-08 23:42:31 -06:00
John Hildenbiddle
06cbebfc0d
fix: Use legacy-compatible methods for IE11 (#1495) 2021-02-07 10:44:18 -06:00
Ricardo Gladwell
759ffac992
fix: Unable to navigate on server without default index support (#1372)
* Fix: Cannot serve off `/.../index.html`

Docsify must be hosted on a server that supports a default directory
index (i.e. maps `/.../` -> `/.../index.html`).

Some platforms do not support this, however. For example, HTML apps
hosted on the popular game/software platform, Itch.io.

This change supports hosting Docsify off an explicit path file, such as
`/index.html`. It does this by:

 1. Adding handling for paths like `index.html#/blah`, and
 2. Normalising paths with fragments back to markdown paths

For example, `http://example.org/index.html#/blah` would be mapped to
`http://example.org/blah.md`.

This fixes:

https://github.com/docsifyjs/docsify/issues/427

* Add end-to-end test for index file hosting

* Add code comments for explicit file changes

* Add additional tests for index file hosting

* Add additional tests for index file hosting

* [wip] Attempt to switch tests to Jest

* Add e2e test for new Jest test framework

* Verify sidebar links use file hosting

* Fix: endsWith() not supported for IE11

* Refactor: utility method moved to utility file

* Fix IE11 error from use of String.includes()

Co-authored-by: John Hildenbiddle <jhildenbiddle@users.noreply.github.com>
2021-02-07 10:25:37 -06:00
John Hildenbiddle
14ce7f3d86
fix: Prevent loading remote content via URL hash (#1489)
* Prevent loading remote content via URL hash

Fixes #1477. Fixes #1126.

* Restore ability to execute remote content scripts

Co-authored-by: 沈唁 <52o@qq52o.cn>
Co-authored-by: Koy <koy@ko8e24.top>
2021-02-05 13:56:28 +08:00
沈唁
8968a744ce
feat: search ignore diacritical marks (#1434)
* feat: search ignore diacritical marks

* Check if normalize is supported

* Update docs

* Fix escape

* remove escapeHtml

Co-authored-by: John Hildenbiddle <jhildenbiddle@users.noreply.github.com>
2021-02-05 13:40:26 +08:00
Yash Singh
c7f4c7cf9b
Fix font-size changing for code in headings (#1456)
Co-authored-by: Koy <koy@ko8e24.top>
Co-authored-by: Anix <anik220798@gmail.com>
Co-authored-by: 沈唁 <52o@qq52o.cn>
2021-02-04 22:51:22 -06:00
Matej Simek
dcf5a644eb
fix: sidebar active class and expand don't work as expect when use "space" in markdown filename (#1454)
* fix: decode href in sidebar (#1032)

* Create sidebar.test.js

Co-authored-by: 沈唁 <52o@qq52o.cn>
2020-12-20 12:49:36 +08:00
沈唁
76c5e685d7
fix: slugs are still broken when headings contain html (#1443) 2020-12-18 08:09:33 +08:00
沈唁
7c3bf98df8
fix: duplicate search content when /README or / exists in the sidebar (#1403)
* fix: duplicate search content when `/readme` or `/` exists in the sidebar

* Update

* add test

* Reset local storage before each e2e test

* Reset Playwright context instead of page

* Update playwright dependencies

Co-authored-by: John Hildenbiddle <john@hildenbiddle.com>
2020-11-28 16:35:43 +08:00
沈唁
90b67e2dc6
Merge branch 'develop' into feat/vue-options 2020-11-23 08:38:40 +08:00
沈唁
8ccc202251
fix: title error when sidebar link exists with html tag (#1404)
* fix: title error when sidebar link exists with image

* fix #1408

* add test

* Update
2020-11-23 06:23:36 +08:00
John Hildenbiddle
9a1935ac64 Add support for Vue shorthand directive syntax 2020-11-15 13:34:03 -06:00
John Hildenbiddle
727ee8fc6d Rename vueMountOptions to vueMounts 2020-11-11 16:24:50 -06:00
John Hildenbiddle
4e5dae7d41 Squashed commit of the following:
commit a2ebb2192ac73211a8924111d736df9574abf61b
Author: 沈唁 <52o@qq52o.cn>
Date:   Sun Nov 8 16:48:43 2020 +0800

    fix: search titles containing ignored characters (#1395)

    * fix: search titles containing ignored characters

    * fix

    * add default value

    * add test

    * fix test

    Co-authored-by: Koy <koy@ko8e24.top>

commit 58fbca00ebd12f636c213d386761df9ebfb2bd4c
Author: Snyk bot <snyk-bot@snyk.io>
Date:   Thu Nov 5 03:04:19 2020 +0200

    fix: packages/docsify-server-renderer/package.json & packages/docsify-server-renderer/package-lock.json to reduce vulnerabilities (#1418)

    The following vulnerabilities are fixed with an upgrade:
    - https://snyk.io/vuln/SNYK-JS-DOMPURIFY-1035544
2020-11-10 18:38:00 -06:00
沈唁
a2ebb2192a
fix: search titles containing ignored characters (#1395)
* fix: search titles containing ignored characters

* fix

* add default value

* add test

* fix test

Co-authored-by: Koy <koy@ko8e24.top>
2020-11-08 16:48:43 +08:00
John Hildenbiddle
a9be6f20d2 Merge branch 'develop' into feat/vue-options 2020-10-25 23:10:02 -05:00
John Hildenbiddle
6a5e84bf3c Update directive detection (data vs static) 2020-10-23 13:12:56 -05:00
John Hildenbiddle
86dae610de Rename vueOptions to vueMountOptions 2020-10-21 13:14:07 -05:00
John Hildenbiddle
8a56f7241f Fix directive detection 2020-10-18 18:35:24 -05:00
John Hildenbiddle
758538c162 Add <output>. Refactor <pre> and <code>. 2020-10-17 01:49:53 -05:00
John Hildenbiddle
6d152e2bec Refactor regular expression usage 2020-10-17 01:46:41 -05:00
John Hildenbiddle
bc2e091937 Ignore el property in Vue configs for Vue v2 2020-10-16 00:06:42 -05:00
John Hildenbiddle
a2386e5a59 Add vueComponents support 2020-10-15 23:25:02 -05:00
Koy
c9d4f7abc9
fix: the sidebar links to another site. (#1336)
* fix : the sidebar links to another site
2020-10-15 09:13:35 +08:00
John Hildenbiddle
5fa79ebcdb Fix Vue content detection and global options
- Add detection of Vue HTML directives to trigger mounting
- Fix bug that processed markdown child nodes as global Vue instances even if vueGlobalOptions is not specified
- Fix bug that prevented passing vueGlobalOptions to global instances if `data()` prop did not exist
- Update Vue config check to test for existence of object keys instead of just the existence object
- Update tests
2020-10-14 19:11:54 -05:00
沈唁
25bc9b7eb7
fix: Can't search homepage content (#1391)
* fix: Can't search homepage content

* fix: when pathNamespaces does not exist

* add test

* update test to fix windows ci
2020-10-14 12:39:56 +08:00
John Hildenbiddle
cd8f2d3efc Fix vueGlobalOptions.data checks 2020-10-10 01:45:02 -05:00
John Hildenbiddle
35ad5c559b Add vueOptions and vueGlobalOptions
Fixed #752
2020-10-09 23:14:57 -05:00
John Hildenbiddle
0afbf96701
Fix eslint warnings (#1388) 2020-10-08 21:58:30 -05:00
John Hildenbiddle
b135f8417d Add Vue 3 compatibility
- Update docs
- Update tests
- Add Vue 2 to docs site
- Add Vue 2 & 3 dependencies for tests
2020-10-07 13:13:03 -05:00
John Hildenbiddle
78c2a9d7b8 Merge remote-tracking branch 'origin/develop' into fix-790
# Conflicts:
#	cypress/fixtures/tpl/docs.index.html
#	cypress/integration/sidebar/config.spec.js
#	docs/index.html
#	index.html
2020-10-05 14:52:41 -05:00
John Hildenbiddle
b45f444426
Merge branch 'develop' into fix/1383 2020-10-05 14:21:38 -05:00
John Hildenbiddle
7f0c42eda5
Jest + Playwright Testing (#1276)
* Initial Jest+Playwright setup

* Fix eslint warnings

* Add placeholder for common options

* Fix load order of scriptURLs

* Add docsifyURL and waitForSelector options

* Add executeScript scenarios

* Enable firefox and webkit tests by default

* Prevent prettier from reformatting browsers list

* Update options and add JSDoc comments

* Initial commit

* Complete initial example tests

* Minor tweaks

* Change suite name

* Rename file

* Add npm script to run jest+playwright example test

* Clean up server properties

* Isolate e2e, integration, and unit test environments

- Setup projects for e2e, integration, and unit tests in Jest configuration
- Setup /tests/e2e/ tests for Jest+PlayWright
- Setup /tests/integration/ tests for Jest
- Setup /tests/unit/ tests for Jest
- Setup eslint for Jest and Jest+Playwright environments
- Move e2e configuration files into separate folder
- Update e2e example tests
- Update unit example tests
- Update HTML fixtures

* Update docsifyInit helper

- Add `debug` option
- Append `Markdown` suffix to markdown-related options
- Reorder options alphabetically

* Add jestPlaywright.debug() to e2e examples

* Removed need to pass page as arg to docsifyInit()

* Add VSCode debug configurations

* Change test server port from 8080 to 3001

* Clean up test names and expect() order

* Update npm scripts to ignore example tests

* Add CLI commands and resources section

* Add Jest unit test snapshot example

* Added Jest unit and e2e tests to Github workflows

* Add npm script to run Jest examples

Added for new devs who are exploring the examples, as the need for passing --testPathIgnorePatterns is not obvious. This flag is required because the example tests are excluded by default.

* Remove node 10.x and add 14.x from tests

Required for jest+playwright testitng

* Temporarily disable testPathIgnorePatterns for ci

* Temporarily remove node 14 from matrix

Cypress fails on node 14.x

* Alternate workflow setup for new test env

* Update workflow platforms and node versions

Also cleaning up naming

* Restoring original workflow names

* Remove Cypress tests

* Remove/Reset GitHub actions

* Restore/reset workflows

* Bump actions/checkout@v1 to v2

* Use playright GH action

* Update playwright GH action configuration

* Remove unnecessary steps and update checkout version

* Add install step

* Add --ignore-scripts flag

Linting does not require running scripts automatically executred after install.

* Swicth from ci to i for install

* Add new Build & Test workflow

* Add OS tests

* Wait for network idle for more reliable ready state

* Configure image snapshot testing and add example

* Remove example fixture file

* Adjust image snapshot threshold for local & CI tests

* Upload diff-output artifact

* Add failure() check to upload-artifact

* Bump image snapshot threshold for local & CI tests

* Set diffDirection

* Fix XHR caching in playwright tests

* Update image snapshot example and theshold

* Bump image snapshot threshold for local & CI tests

* Remove old workflows

* Bump image snapshot threshold for local & CI tests

* Bump image snapshot failureThreshold for local & CI tests

* Set failureThresholdType to percent

* Change image snapshot comparisonMethod to ssim

* Remove pixelMatch options (incompatible with ssim)

* Bump image snapshot failureThreshold

* Bump image snapshot failureThreshold

* Disable fast-fail to allow all checks to complete

* Rename workflow

* Disable fast-fail to allow all checks to complete

* Store pixel and ssim comparison configs

* Add link to image snapshot test

* Fix CI errors on Windows due to image size mismatch

* Attempt to fix macos e2e exit code 134 issue

* Update test.yml

* Update test.yml

* Update test.yml

* Fix --ci flag

* Set Jets to use --runInBand for macOS e2e

* Remove unnecessary macOS check

* Set image snapshot to runInProcess (macOS CI fix)

* Update test.yml

* Temporary failureThreshold change for debugging

* Upload os+node-specific diff artifacts

* Remove node version from diff artifact

* Revert "Remove node version from diff artifact"

This reverts commit 9cfcc4342bb22f18da30363a4c52758f13ba0cc9.

* Revert "Revert "Remove node version from diff artifact""

This reverts commit ad6c1891e48c70c9973a5c0d7b876b2d4621f3b9.

* Restoring failureThreshold after debugging

* Remove runInProcess option

* Revert "Remove runInProcess option"

This reverts commit 667ed6c870fc56f0349fc5eccc2cdeead3eff4ea.

* Add node-specific artifact uploads

* Set ssim mode to fast and restore runInProcess

* Set failureThreshold to 0.01

* Updating to playwright@next for webkit fix

* Restore optimal ssim configuration

* Testing pixel vs. ssim image comparison

* Move shared test setup to unit/int/e2e setups

* Refactor test server setup

* Replace live-server with browser-sync

* Update script for running local docs site

- Only init GA plugin on public site
- Only init Gitter plugin on public site
- Only init Matomo plugin on public site

NOTE: Large diff is a result of initial Prettier formatting. Actual change limited to last <script> block on page.

* Allow launching test server preview with --start

* Add integration tests and refactor unit + e2e

* Unify docsifyInit() and cleanup

- Create unified docsifyInit() for jest and playwright
- Move shared helpers to /tests/helpers
- Update tests
- Update globals

* Fixed webkit routes by specifying ContentType

* Update snapshot

* Update dependencies

* Update tests to use unified docsifyInit()

* Remove Cypress (old e2e test environment)

* Update tests to run (unit/integration/e2e)

- Add new integration tests (Jest)
- Remove old unit tests (mocha+jsdom)
- Remove old e2e tests (Cypress)

* Remove Cypress-related dependency

* Remove mocha+chai+jsdom (old unit/int test env)

* Rename testing directories and scripts

- Rename /tests/ directory to /test/
- Rename script/task names by removing “jest” identifier
- Remove “test:jest-examples” script

* - Configure test server for availability with all tests (previously e2e only)
- Create identical docsifyInit() tests using Jest (integration) and Playwright (e2e)
- Update docsifyInit() to convert relative URLs to absolute URLs to work in both JSDOM and Playwright
- Update docsifyInit() to append style- and js-related tags using createElement instead of insertAdjacentHTML
- Update paths in test files to use unified docsifyInit()
- Added option to docsifyInit() to enable/disable formatted HTML output to console
- Removed vue.css as default docsify theme from docsifyInit()
- Removed outdated files

* Reorganize test files

* Fix basePath option

* Replace do-mock-ajax with xhr-mock

- Allows mocking all XMLHttpRequests instead of just those initiated via /src/core/fetch/ajax.js
- Allows JSDOM tests to use /lib/docsify.js instead of /src/core/index.js (same as Playwright tests)
- Allows JSDOM tests to use /docs site as test content

* Added new waitFor helpers

* Clean up globals

- Import globals from various files instead of manually adding them to ensure they are availability in Jest and eslint configurations
- Add middleware to server configuration for serving virtual “_blank.html” file
- Add BLANK_URL
- Rename TEST_URL to TEST_HOST
- Removed ./test/fixtures/ directory (blank page now served via server.js middleware)
- Added page.goto(BLANK_URL) call to global Playwright beforeEach() setup

* Add try/catch for waitForFunction callback

* Move playwright config into jest.config.js

* Add runInBand option to tests for reliability

* Remove unnecessary XHR Mock teardown

* Add —runInBand to test script

* Merge develop

* Cleanup

- Relocate carbon plugin script with other scripts
- Update zh-cn docs URL to align with other translatins (GitHub, not jsdelivr)
- Add major version locks to URLs

* Removed fixed host value from docs

* Updated test after merge (docsify version change)

* Added startPath for manual instance

* Remove Node 10 from CI tests

* Remove Node 10 from CI lint tests
2020-10-05 14:10:30 -05:00
John Hildenbiddle
04bf1ea5f4 Fix scroll event end value
Fixes #1383
2020-10-02 14:20:57 -05:00
沈唁
8d17dcbe68
fix: cannot search list content (#1361) 2020-09-03 10:34:28 +08:00
沈唁
4807e58cb9
fix: Cannot read property level of undefined (#1357)
Co-authored-by: Anix <anik220798@gmail.com>
2020-09-01 15:04:27 +05:30
Dominik Lubański
f35bf99d9c
fix: add missing argument for highlighting code (#1365) 2020-09-01 13:59:57 +05:30
沈唁
9351729634
fix: Cannot read property 'startsWith' of undefined (#1358)
* fix: Cannot read property 'startsWith' of undefined

* Update search.js

* update

* Update search.js
2020-08-28 09:05:47 +08:00
沈唁
2100fc318b
fix: sidebar title error (#1360)
* fix: sidebar title error

* Update sidebar.js
2020-08-27 07:43:07 +08:00
沈唁
ce316075e0
fix : add patch for {docsify-ignore} and {docsify-ignore-all} (#1351)
* revert: Convert {docsify-ignore} and {docsify-ignore-all} to HTML comments

This reverts commit 90d283d340502456a5d8495df596bb4a02ceb39b

* fix: patch for docsify-ignore

* fix test

* fix test
2020-08-22 19:24:56 +08:00
Snyk bot
086c2859ad
[Snyk] Security upgrade marked from 0.7.0 to 1.1.1 (#1313)
* fix: package.json & package-lock.json to reduce vulnerabilities

The following vulnerabilities are fixed with an upgrade:
- https://snyk.io/vuln/SNYK-JS-MARKED-584281

* fix: fix CompileError

* fix: embed files error

Co-authored-by: Koy <369491420@qq.com>
Co-authored-by: 沈唁 <52o@qq52o.cn>
2020-08-14 07:53:23 +08:00
Vladimir Dementyev
2bceabcb8e
fix: fallback page should use path not file location (#1301)
* fix: fallback page should use path not file location

When resolving fallback page for the path (`fallbackLanguages` option), we should consider the original path, not the file location (which could be different when aliases are used).

* fix: use router.getFile to resolve fallback url

* specs: add cypress test for fallbackLanguages

Co-authored-by: 沈唁 <52o@qq52o.cn>
2020-08-04 14:47:03 +05:30
Mattia Astorino
90d283d340
fix: convert {docsify-ignore} and {docsify-ignore-all} to HTML comments (#1318)
* breaking: convert {docsify-ignore} and {docsify-ignore-all} to HTML comments

Close https://github.com/docsifyjs/docsify/issues/441

* chore: add ignore and ignore-all unit tests

Co-authored-by: 沈唁 <52o@qq52o.cn>
2020-07-30 18:11:04 +08:00
沈唁
952f4c921b
fix: the uncaught typeerror when el is null (#1308) 2020-07-30 17:58:45 +08:00
Vladimir Dementyev
d179dde1c7 feat(search): add pathNamespaces option
This option allows to dynamically choose the index path depending on the path prefixes in auto mode. Thus, different path namespace could avoid index intersection (e.g., when having multiple locales)
2020-07-24 11:43:06 +03:00
黄朝晖
78775b6ee7
fix: Search plugin: matched text is replaced with search text (#1298)
* Fix search plugin will replace matching text

* Fix bug that will replace a unexpected text

* Fix bug that will replace a unexpected text

* Optimized

Co-authored-by: 沈唁 <52o@qq52o.cn>
2020-07-24 10:22:54 +08:00
Vladimir Dementyev
9f4f79e0f7
fix typo (#1302) 2020-07-23 18:16:19 +08:00
沈唁
b869019900
fix: Fix search error when exist translations documents (#1300) 2020-07-22 15:01:13 +08:00
沈唁
6f9baab616
style: Update index.html and scroll.js (#1292) 2020-07-20 08:54:54 +08:00