diff --git a/.eslintignore b/.eslintignore
index 4a113378ce..a0ca1e55c8 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -1,7 +1,14 @@
-src/shared
-shared.js
-store.js
-test/test.js
-test/setup.js
**/_actual.js
-**/expected.js
\ No newline at end of file
+**/expected.js
+test/*/samples/*/output.js
+node_modules
+
+# output files
+animate/*.js
+esing/*.js
+internal/*.js
+motion/*.js
+store/*.js
+transition/*.js
+index.js
+compiler.js
diff --git a/.eslintrc.js b/.eslintrc.js
new file mode 100644
index 0000000000..2c7f2ed1b4
--- /dev/null
+++ b/.eslintrc.js
@@ -0,0 +1,99 @@
+module.exports = {
+ root: true,
+ rules: {
+ indent: 'off',
+ 'no-unused-vars': 'off',
+ semi: [2, 'always'],
+ 'keyword-spacing': [2, { before: true, after: true }],
+ 'space-before-blocks': [2, 'always'],
+ 'no-mixed-spaces-and-tabs': [2, 'smart-tabs'],
+ 'no-cond-assign': 0,
+ 'object-shorthand': [2, 'always'],
+ 'no-const-assign': 2,
+ 'no-class-assign': 2,
+ 'no-this-before-super': 2,
+ 'no-var': 2,
+ 'no-unreachable': 2,
+ 'valid-typeof': 2,
+ 'quote-props': [2, 'as-needed'],
+ 'one-var': [2, 'never'],
+ 'prefer-arrow-callback': 2,
+ 'prefer-const': [2, { destructuring: 'all' }],
+ 'arrow-spacing': 2,
+ 'no-inner-declarations': 0,
+ 'require-atomic-updates': 'off',
+ '@typescript-eslint/indent': [
+ 'error',
+ 'tab',
+ {
+ SwitchCase: 1,
+ ignoredNodes: ['TemplateLiteral']
+ }
+ ],
+ '@typescript-eslint/camelcase': 'off',
+ '@typescript-eslint/no-use-before-define': 'off',
+ '@typescript-eslint/array-type': ['error', 'array-simple'],
+ '@typescript-eslint/explicit-function-return-type': 'off',
+ '@typescript-eslint/no-explicit-any': 'off',
+ '@typescript-eslint/explicit-member-accessibility': 'off',
+ '@typescript-eslint/no-unused-vars': [
+ 'error',
+ {
+ argsIgnorePattern: '^_'
+ }
+ ],
+ '@typescript-eslint/no-object-literal-type-assertion': [
+ 'error',
+ {
+ allowAsParameter: true
+ }
+ ],
+ '@typescript-eslint/no-unused-vars': 'off'
+ },
+ globals: {
+ globalThis: false
+ },
+ env: {
+ es6: true,
+ browser: true,
+ node: true,
+ mocha: true
+ },
+ extends: [
+ 'eslint:recommended',
+ 'plugin:import/errors',
+ 'plugin:import/warnings',
+ 'plugin:import/typescript',
+ 'plugin:@typescript-eslint/recommended'
+ ],
+ parserOptions: {
+ ecmaVersion: 9,
+ sourceType: 'module'
+ },
+ plugins: ['svelte3'],
+ settings: {
+ 'import/core-modules': [
+ 'svelte',
+ 'svelte/internal',
+ 'svelte/store',
+ 'svelte/easing',
+ 'estree'
+ ],
+ 'svelte3/compiler': require('./compiler')
+ },
+ overrides: [
+ {
+ files: ['*.js'],
+ rules: {
+ '@typescript-eslint/no-var-requires': 'off'
+ }
+ },
+ {
+ files: ['*.svelte'],
+ processor: 'svelte3/svelte3',
+ rules: {
+ '@typescript-eslint/indent': 'off'
+ }
+ }
+ ]
+};
diff --git a/.eslintrc.json b/.eslintrc.json
deleted file mode 100644
index 7e8c26382a..0000000000
--- a/.eslintrc.json
+++ /dev/null
@@ -1,44 +0,0 @@
-{
- "root": true,
- "rules": {
- "indent": [2, "tab", { "SwitchCase": 1 }],
- "semi": [2, "always"],
- "keyword-spacing": [2, { "before": true, "after": true }],
- "space-before-blocks": [2, "always"],
- "no-mixed-spaces-and-tabs": [2, "smart-tabs"],
- "no-cond-assign": 0,
- "no-unused-vars": 2,
- "object-shorthand": [2, "always"],
- "no-const-assign": 2,
- "no-class-assign": 2,
- "no-this-before-super": 2,
- "no-var": 2,
- "no-unreachable": 2,
- "valid-typeof": 2,
- "quote-props": [2, "as-needed"],
- "one-var": [2, "never"],
- "prefer-arrow-callback": 2,
- "prefer-const": [2, { "destructuring": "all" }],
- "arrow-spacing": 2,
- "no-inner-declarations": 0
- },
- "env": {
- "es6": true,
- "browser": true,
- "node": true,
- "mocha": true
- },
- "extends": [
- "eslint:recommended",
- "plugin:import/errors",
- "plugin:import/warnings"
- ],
- "parserOptions": {
- "ecmaVersion": 9,
- "sourceType": "module"
- },
- "settings": {
- "import/core-modules": ["svelte"],
- "svelte3/extensions": ["html"]
- }
-}
diff --git a/.flowconfig b/.flowconfig
deleted file mode 100644
index 2ed2b0c713..0000000000
--- a/.flowconfig
+++ /dev/null
@@ -1,9 +0,0 @@
-[ignore]
-/dist/.*
-
-[include]
-
-[libs]
-
-[options]
-strip_root=true
diff --git a/.gitattributes b/.gitattributes
deleted file mode 100644
index eb49e78156..0000000000
--- a/.gitattributes
+++ /dev/null
@@ -1 +0,0 @@
-*.svelte linguist-language=HTML
diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md
index e7bd60d3f4..6871094f5c 100644
--- a/.github/ISSUE_TEMPLATE.md
+++ b/.github/ISSUE_TEMPLATE.md
@@ -1,21 +1,26 @@
-
+Thanks for being part of Svelte!
+-------
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
new file mode 100644
index 0000000000..f5369e9991
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -0,0 +1,52 @@
+---
+name: Bug report
+about: Create a report to help us improve
+title: ''
+labels: 'Bug'
+assignees: ''
+
+---
+
+**Describe the bug**
+A clear and concise description of what the bug is.
+
+**Logs**
+Please include browser console and server logs around the time this bug occurred.
+
+**To Reproduce**
+To help us help you, if you've found a bug please consider the following:
+
+* If you can demonstrate the bug using https://svelte.dev/repl, please do.
+* If that's not possible, we recommend creating a small repo that illustrates the problem.
+* Reproductions should be small, self-contained, correct examples – http://sscce.org.
+
+Occasionally, this won't be possible, and that's fine – we still appreciate you raising the issue. But please understand that Svelte is run by unpaid volunteers in their free time, and issues that follow these instructions will get fixed faster.
+
+**Expected behavior**
+A clear and concise description of what you expected to happen.
+
+**Stacktraces**
+If you have a stack trace to include, we recommend putting inside a `` block for the sake of the thread's readability:
+
+
+ Stack trace
+
+ Stack trace goes here...
+
+
+**Information about your Svelte project:**
+- Your browser and the version: (e.x. Chrome 52.1, Firefox 48.0, IE 10)
+
+- Your operating system: (e.x. OS X 10, Ubuntu Linux 19.10, Windows XP, etc)
+
+- Svelte version (Please check you can reproduce the issue with the latest release!)
+
+- Whether your project uses Webpack or Rollup
+
+**Severity**
+How severe an issue is this bug to you? Is this annoying, blocking some users, blocking an upgrade or blocking your usage of Svelte entirely?
+
+Note: the more honest and specific you are here the more we will take you seriously.
+
+**Additional context**
+Add any other context about the problem here.
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
new file mode 100644
index 0000000000..e533c21c96
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature_request.md
@@ -0,0 +1,23 @@
+---
+name: Feature request
+about: Suggest an idea for this project
+title: ''
+labels: 'New Feature'
+assignees: ''
+
+---
+
+**Is your feature request related to a problem? Please describe.**
+A clear and concise description of what the problem is. For example: I'm always frustrated when [...]
+
+**Describe the solution you'd like**
+A clear and concise description of what you want to happen.
+
+**Describe alternatives you've considered**
+A clear and concise description of any alternative solutions or features you've considered.
+
+**How important is this feature to you?**
+Note: the more honest and specific you are here the more we will take you seriously.
+
+**Additional context**
+Add any other context or screenshots about the feature request here.
diff --git a/.github/ISSUE_TEMPLATE/questions-and-help.md b/.github/ISSUE_TEMPLATE/questions-and-help.md
new file mode 100644
index 0000000000..a6e0dc6e19
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/questions-and-help.md
@@ -0,0 +1,12 @@
+---
+name: Questions and help
+about: If you think you need help with something related to Svelte
+title: ''
+labels: 'Question'
+assignees: ''
+
+---
+
+This issue tracker is intended to collect bug reports and feature requests.
+
+For help with installation, information on how features work, or questions about specific features of Svelte, please come and join us in the [Svelte Discord](https://svelte.dev/chat), or ask your question on [Stack Overflow](https://stackoverflow.com/questions/tagged/svelte). Any issues open for help requests will be closed to keep from clogging up the issue tracker.
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
index d2882acf4a..1e77e0337a 100644
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -1,7 +1,8 @@
-
+
+### Before submitting the PR, please make sure you do the following
+- [ ] It's really useful if your PR relates to an outstanding issue, so please reference it in your PR, or create an explanatory one for discussion. In many cases features are absent for a reason.
+- [ ] This message body should clearly illustrate what problems it solves. If there are related issues, remember to reference them.
+- [ ] Ideally, include a test that fails without this PR but passes with it. PRs will only be merged once they pass CI. (Remember to `npm run lint`!)
+### Tests
+- [ ] Run the tests tests with `npm test` or `yarn test`)
diff --git a/.gitignore b/.gitignore
index 7aa75b29f4..1de9283c03 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,25 +1,28 @@
+.idea
.DS_Store
.nyc_output
node_modules
*.map
-/src/compile/internal-exports.ts
-/compiler.js
-/index.js
-/internal.*
-/store.*
-/easing.js
-/motion.*
-/transition.js
-/animate.js
+/src/compiler/compile/internal_exports.ts
+/compiler.d.ts
+/compiler.*js
+/index.*js
+/internal
+/store
+/easing
+/motion
+/transition
+/animate
/scratch/
/coverage/
-/coverage.lcov/
+/coverage.lcov
/test/sourcemaps/samples/*/output.js
/test/sourcemaps/samples/*/output.js.map
/test/sourcemaps/samples/*/output.css
/test/sourcemaps/samples/*/output.css.map
/yarn-error.log
_actual*.*
+/types
/site/cypress/screenshots/
/site/__sapper__/
@@ -27,5 +30,6 @@ _actual*.*
/site/.sessions
/site/static/svelte-app.json
/site/static/contributors.jpg
+/site/static/workers
/site/scripts/svelte-app
/site/src/routes/_contributors.js
diff --git a/.travis.yml b/.travis.yml
index aeadd48f8d..a4603a26e2 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,7 +1,8 @@
language: node_js
node_js:
- - "node"
-
+ - "8"
+ - "10"
+ - "12"
env:
global:
- BUILD_TIMEOUT=20000
diff --git a/CHANGELOG.md b/CHANGELOG.md
index cf044812a2..bae7373742 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,180 @@
# Svelte changelog
+## 3.8.1
+
+* Set SVG namespace for slotted elements ([#3321](https://github.com/sveltejs/svelte/issues/3321))
+
+## 3.8.0
+
+* Add `self` event modifier ([#3372](https://github.com/sveltejs/svelte/issues/3372))
+* Generate valid code when spreading literal ([#3185](https://github.com/sveltejs/svelte/issues/3185))
+* Coerce tag values to string before checking equality ([#2290](https://github.com/sveltejs/svelte/issues/2290))
+
+## 3.7.1
+
+* Assume `let` variables are dynamic for slots ([#3354](https://github.com/sveltejs/svelte/issues/3354))
+* Allow transition functions to return nothing ([#2246](https://github.com/sveltejs/svelte/pull/2246))
+
+## 3.7.0
+
+* Disable warnings via `svelte-ignore` comments ([#3351](https://github.com/sveltejs/svelte/pull/3351))
+* Throw if `$` or `$$...` is referenced as global ([#3272](https://github.com/sveltejs/svelte/issues/3272))
+* Remount HTML tags correctly ([#3329](https://github.com/sveltejs/svelte/pull/3329))
+* Treat data attributes like other attributes ([#3337](https://github.com/sveltejs/svelte/issues/3337))
+
+## 3.6.11
+
+* Handle reassigned RxJS observables ([#3304](https://github.com/sveltejs/svelte/issues/3304))
+* Remove commas from HTMLified attributes with multiple chunks ([#3341](https://github.com/sveltejs/svelte/issues/3341))
+* Prevent `class` on element with scoped styles from rendering as `undefined` ([#3283](https://github.com/sveltejs/svelte/issues/3283))
+* Allow references to index in key expression ([#3274](https://github.com/sveltejs/svelte/issues/3274))
+* Mark attribute selectors as used if corresponding binding exists ([#3281](https://github.com/sveltejs/svelte/issues/3281))
+* Preserve `async`/`*` when hoisting functions ([#3179](https://github.com/sveltejs/svelte/issues/3179))
+* Make `raf` a noop on server ([#3324](https://github.com/sveltejs/svelte/issues/3324))
+* Prevent erroneous a11y warning for image input with alt attribute ([#3331](https://github.com/sveltejs/svelte/issues/3331))
+* Add several well-known globals ([#3316](https://github.com/sveltejs/svelte/pull/3316))
+
+## 3.6.10
+
+* Use `change` event for file inputs ([#3226](https://github.com/sveltejs/svelte/issues/3226))
+* Always fire reactive declarations with `$$props` ([#3286](https://github.com/sveltejs/svelte/issues/3286))
+* More conservative spread prop updates ([#3289](https://github.com/sveltejs/svelte/issues/3289))
+* Quote props if necessary in SSR mode ([#3312](https://github.com/sveltejs/svelte/issues/3312))
+
+## 3.6.9
+
+* Always update derived stores with a derived input whose value does not change ([#3191](https://github.com/sveltejs/svelte/issues/3191))
+
+## 3.6.8
+
+* Preserve global keyframes that don't match local elements ([#3228](https://github.com/sveltejs/svelte/issues/3228))
+* Fix spread/`class:` combination ([#3242](https://github.com/sveltejs/svelte/pull/3242))
+* Never scope `:root` selector ([#3250](https://github.com/sveltejs/svelte/pull/3250))
+* Prevent trailing commas in function arguments ([#3255](https://github.com/sveltejs/svelte/pull/3260))
+
+## 3.6.7
+
+* Prevent corruption of outro callbacks with nested keyed each blocks ([#3209](https://github.com/sveltejs/svelte/pull/3209))
+* Prevent cursor jumping in bound input in Safari ([#3199](https://github.com/sveltejs/svelte/issues/3199))
+* Make resize listener object unfocusable ([#3206](https://github.com/sveltejs/svelte/issues/3206))
+
+## 3.6.6
+
+* Prevent dynamic components being detached twice ([#3113](https://github.com/sveltejs/svelte/issues/3113), [#2086](https://github.com/sveltejs/svelte/issues/2086))
+
+## 3.6.5
+
+* Handle RxJS-style observables with `get` ([#3153](https://github.com/sveltejs/svelte/issues/3153))
+* Pass `let` values to bindings ([#3140](https://github.com/sveltejs/svelte/issues/3140))
+* Escape `@` symbols in props ([#3173](https://github.com/sveltejs/svelte/issues/3173))
+* Scale crossfaded elements ([#3175](https://github.com/sveltejs/svelte/pull/3175))
+
+## 3.6.4
+
+* Run `onMount` functions in correct order, and before initial `afterUpdate` functions ([#2281](https://github.com/sveltejs/svelte/issues/2281))
+* Fix code transformation for shorthand methods ([#2906](https://github.com/sveltejs/svelte/issues/2906))
+* Fix assignments in inline functions ([#3038](https://github.com/sveltejs/svelte/issues/3038))
+
+## 3.6.3
+
+* Fix await block mounting inside removed if block ([#1496](https://github.com/sveltejs/svelte/issues/1496))
+* Update when element references are removed ([#2034](https://github.com/sveltejs/svelte/issues/2034))
+* Don't attempt to serialize non-string values in server-rendered bindings ([#2135](https://github.com/sveltejs/svelte/issues/2135))
+* Recognise dependencies in function expressions ([#2693](https://github.com/sveltejs/svelte/issues/2693))
+* Scope pseudo-class selectors without class/type ([#1705](https://github.com/sveltejs/svelte/issues/1705))
+* Allow nested at-rules ([#3135](https://github.com/sveltejs/svelte/issues/3135))
+* Allow attributes to contain `=` characters ([#3149](https://github.com/sveltejs/svelte/pull/3149))
+
+## 3.6.2
+
+* Fix placement of each-else block ([#2917](https://github.com/sveltejs/svelte/issues/2917))
+* Make context accessible to `bind:this` ([#2806](https://github.com/sveltejs/svelte/issues/2806))
+* Pass hoisted values to slots ([#2586](https://github.com/sveltejs/svelte/issues/2586))
+
+## 3.6.1
+
+* Fix escaping of `@` in dev mode debug filename ([#3114](https://github.com/sveltejs/svelte/pull/3114))
+
+## 3.6.0
+
+* Add `innerHTML` and `textContent` bindings for `contenteditable` elements ([#2996](https://github.com/sveltejs/svelte/pull/2996))
+* Fix destructuring assignments where targets are member expressions ([#3092](https://github.com/sveltejs/svelte/issues/3092))
+* Deconflict with used globals ([#2963](https://github.com/sveltejs/svelte/pull/2963))
+* Always run `onDestroy` functions, not just for detaching components ([#3058](https://github.com/sveltejs/svelte/issues/3058))
+* Fix scope analysis around catch clauses ([#3064](https://github.com/sveltejs/svelte/issues/3064))
+* Add error constructors to known globals ([#3064](https://github.com/sveltejs/svelte/issues/3064))
+* Always bail out of hoisting on encountering local state in function definition ([#3044](https://github.com/sveltejs/svelte/issues/3044))
+* Fix incorrect merging of top-level text nodes ([#3027](https://github.com/sveltejs/svelte/issues/3027))
+* Handle removal of components in each blocks without props ([#3035](https://github.com/sveltejs/svelte/issues/3035))
+* Only call subscriber once when resubscribing to a store ([#3022](https://github.com/sveltejs/svelte/issues/3022))
+* Check for existence of dynamic component before introing ([#3054](https://github.com/sveltejs/svelte/issues/3054))
+* Sanitize names of bubbled event handlers ([#2923](https://github.com/sveltejs/svelte/issues/2923))
+
+
+## 3.5.4
+
+* Preserve whitespace at the boundaries of `{#each}` blocks ([#713](https://github.com/sveltejs/svelte/issues/713))
+* Fix dynamic `bind:this` on components ([#2333](https://github.com/sveltejs/svelte/issues/2333))
+* Fix binding to values in a component when it uses `$$props` ([#2725](https://github.com/sveltejs/svelte/issues/2725))
+* Fix parsing ambiguous HTML entities ([#3071](https://github.com/sveltejs/svelte/pull/3071))
+
+## 3.5.3
+
+* Don't double-destroy keyed each blocks with outros ([#3055](https://github.com/sveltejs/svelte/issues/3055))
+
+## 3.5.2
+
+* Prevent duplicated outros causing errors ([#3001](https://github.com/sveltejs/svelte/issues/3001))
+* Fix automatic name generation ([#2843](https://github.com/sveltejs/svelte/issues/2843))
+* Fix .d.ts stubs ([#3009](https://github.com/sveltejs/svelte/pull/3009))
+* Don't strip non-breaking spaces ([#3014](https://github.com/sveltejs/svelte/issues/3014))
+* Fix `requestAnimationFrame` context ([#2933](https://github.com/sveltejs/svelte/issues/2933))
+* Allow space before attribute value ([#3026](https://github.com/sveltejs/svelte/issues/3026))
+* Remove null/undefined attributes ([#1434](https://github.com/sveltejs/svelte/issues/1434))
+* Fix whitespace in static markup ([#3030](https://github.com/sveltejs/svelte/pull/3030))
+
+## 3.5.1
+
+* Accommodate webpack idiosyncracies
+
+## 3.5.0
+
+* Update package folder structure ([#2887](https://github.com/sveltejs/svelte/pull/2887))
+* Support `once` modifier on component events ([#2654](https://github.com/sveltejs/svelte/issues/2654))
+* Allow empty `` tags ([#2980](https://github.com/sveltejs/svelte/issues/2980))
+* Render textarea binding values inside element ([#2975](https://github.com/sveltejs/svelte/pull/2975))
+* Fix delayed animation glitch ([#2871](https://github.com/sveltejs/svelte/issues/2871))
+* Solve diamond dependencies problem with stores ([#2660](https://github.com/sveltejs/svelte/issues/2660))
+* Fix missing outros inside each blocks ([#2689](https://github.com/sveltejs/svelte/issues/2689))
+* Support animations without transitions ([#2908](https://github.com/sveltejs/svelte/issues/2908))
+* Add missing transition events ([#2912](https://github.com/sveltejs/svelte/pull/2912))
+
+
+## 3.4.4
+
+* Publish type declaration files ([#2874](https://github.com/sveltejs/svelte/issues/2874))
+* Don't trigger updates for unreferenced values ([#2865](https://github.com/sveltejs/svelte/pull/2865))
+* Omit readonly bindings from SSR output ([#2339](https://github.com/sveltejs/svelte/issues/2339))
+* Prevent outdated animation CSS ([#2871](https://github.com/sveltejs/svelte/issues/2871))
+* Repair dynamic `{@html ...}` in head ([#2880](https://github.com/sveltejs/svelte/pull/2880))
+* Don't create unknown prop warnings for internal props, or if component has `$$props` ([#2881](https://github.com/sveltejs/svelte/pull/2881))
+
+
+## 3.4.3
+
+* Add type declaration files for everything ([#2842](https://github.com/sveltejs/svelte/pull/2842))
+* Prevent `svelte/store` being bundled ([#2786](https://github.com/sveltejs/svelte/issues/2786))
+* Warn on unknown props in dev mode ([#2840](https://github.com/sveltejs/svelte/pull/2840))
+* Treat `requestAnimationFrame` as a no-op on the server ([#2856](https://github.com/sveltejs/svelte/pull/2856))
+* Add `raw` property to AST's `Text` nodes ([#2714](https://github.com/sveltejs/svelte/issues/2714))
+* Add `` ([#2854](https://github.com/sveltejs/svelte/issues/2854))
+
+## 3.4.2
+
+* Use empty string for empty data attributes ([#2804](https://github.com/sveltejs/svelte/pull/2804))
+* Support `customElement: true` with no `` ([#2821](https://github.com/sveltejs/svelte/issues/2821))
+* Add docstrings to `svelte/store` ([#2795](https://github.com/sveltejs/svelte/pull/2795))
+
## 3.4.1
* Handle non-falsy non-function return values from derivers ([#2780](https://github.com/sveltejs/svelte/issues/2780))
diff --git a/README.md b/README.md
index 4d03eca934..dc747668b0 100644
--- a/README.md
+++ b/README.md
@@ -36,11 +36,16 @@ Pull requests are encouraged and always welcome. [Pick an issue](https://github.
To install and work on Svelte locally:
```bash
-git clone git@github.com:sveltejs/svelte.git
+git clone https://github.com/sveltejs/svelte.git
cd svelte
npm install
```
+> Many tests depend on newlines being preserved as ``. On Windows, you can ensure this by cloning with:
+> ```bash
+> git -c core.autocrlf=false clone https://github.com/sveltejs/svelte.git
+> ```
+
To build the compiler, and all the other modules included in the package:
```bash
diff --git a/animate.mjs b/animate.mjs
deleted file mode 100644
index f22fabe401..0000000000
--- a/animate.mjs
+++ /dev/null
@@ -1,25 +0,0 @@
-import { cubicOut } from './easing';
-import { is_function } from './internal';
-
-export function flip(node, animation, params) {
- const style = getComputedStyle(node);
- const transform = style.transform === 'none' ? '' : style.transform;
-
- const dx = animation.from.left - animation.to.left;
- const dy = animation.from.top - animation.to.top;
-
- const d = Math.sqrt(dx * dx + dy * dy);
-
- const {
- delay = 0,
- duration = d => Math.sqrt(d) * 120,
- easing = cubicOut
- } = params;
-
- return {
- delay,
- duration: is_function(duration) ? duration(d) : duration,
- easing,
- css: (t, u) => `transform: ${transform} translate(${u * dx}px, ${u * dy}px);`
- };
-}
\ No newline at end of file
diff --git a/appveyor.yml b/appveyor.yml
index 249f61abf4..23a3ac3505 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -9,12 +9,13 @@ init:
environment:
matrix:
- # node.js
+ - nodejs_version: 8
- nodejs_version: 10
+ - nodejs_version: 12
install:
- - ps: Install-Product node $env:nodejs_version
- - npm install
+ - ps: Update-NodeJsInstallation (Get-NodeJsLatestBuild $env:nodejs_version)
+ - npm ci || npm install
build: off
diff --git a/mocha.coverage.opts b/mocha.coverage.opts
index 5bf853ae30..cfec67a99a 100644
--- a/mocha.coverage.opts
+++ b/mocha.coverage.opts
@@ -1,4 +1,3 @@
---compilers ts-node/register
--require source-map-support/register
--full-trace
--recursive
diff --git a/package-lock.json b/package-lock.json
index bb2b7d7d7e..c84f5146a0 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,22 +1,22 @@
{
"name": "svelte",
- "version": "3.4.0",
+ "version": "3.8.1",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"@babel/code-frame": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz",
- "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==",
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz",
+ "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==",
"dev": true,
"requires": {
"@babel/highlight": "^7.0.0"
}
},
"@babel/highlight": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz",
- "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==",
+ "version": "7.5.0",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz",
+ "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==",
"dev": true,
"requires": {
"chalk": "^2.0.0",
@@ -25,20 +25,16 @@
}
},
"@bcoe/v8-coverage": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.1.0.tgz",
- "integrity": "sha512-UdVB1rSL7H8TS8674fH02p5lRbhfIqQ18YKLxLKEnHFztHUH6bhMqjebMxgSTmWVrs5raS5JSLJIKKHFT4WfPg==",
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.1.tgz",
+ "integrity": "sha512-KioOCsSvSvXx6xUNLiJz+P+VMb7NRcePjoefOr74Y5P6lEKsiOn35eZyZzgpK4XCNJdXTDR7+zykj0lwxRvZ2g==",
"dev": true
},
- "@sveltejs/svelte-repl": {
- "version": "0.0.5",
- "resolved": "https://registry.npmjs.org/@sveltejs/svelte-repl/-/svelte-repl-0.0.5.tgz",
- "integrity": "sha512-SKSX4xkqwH0XcUHQozwTNm3OCqatk66CXYZnqOW9Jf4E1B6opyQUb9f96KwAxh7ghZMbeePRv51oOWsw6n0Yww==",
- "dev": true,
- "requires": {
- "codemirror": "^5.45.0",
- "yootils": "0.0.15"
- }
+ "@types/eslint-visitor-keys": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz",
+ "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==",
+ "dev": true
},
"@types/estree": {
"version": "0.0.39",
@@ -52,18 +48,78 @@
"integrity": "sha1-byTuSHMdMRaOpRBhDW3RXl/Jxv8=",
"dev": true
},
+ "@types/istanbul-lib-coverage": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz",
+ "integrity": "sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg==",
+ "dev": true
+ },
"@types/mocha": {
- "version": "5.2.5",
- "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.5.tgz",
- "integrity": "sha512-lAVp+Kj54ui/vLUFxsJTMtWvZraZxum3w3Nwkble2dNuV5VnPA+Mi2oGX9XYJAaIvZi3tn3cbjS/qcJXRb6Bww==",
+ "version": "5.2.7",
+ "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz",
+ "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==",
"dev": true
},
"@types/node": {
- "version": "10.12.18",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.18.tgz",
- "integrity": "sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ==",
+ "version": "8.10.50",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.50.tgz",
+ "integrity": "sha512-+ZbcUwJdaBgOZpwXeT0v+gHC/jQbEfzoc9s4d0rN0JIKeQbuTrT+A2n1aQY6LpZjrLXJT7avVUqiCecCJeeZxA==",
"dev": true
},
+ "@types/resolve": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz",
+ "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==",
+ "dev": true,
+ "requires": {
+ "@types/node": "*"
+ }
+ },
+ "@typescript-eslint/eslint-plugin": {
+ "version": "1.11.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-1.11.0.tgz",
+ "integrity": "sha512-mXv9ccCou89C8/4avKHuPB2WkSZyY/XcTQUXd5LFZAcLw1I3mWYVjUu6eS9Ja0QkP/ClolbcW9tb3Ov/pMdcqw==",
+ "dev": true,
+ "requires": {
+ "@typescript-eslint/experimental-utils": "1.11.0",
+ "eslint-utils": "^1.3.1",
+ "functional-red-black-tree": "^1.0.1",
+ "regexpp": "^2.0.1",
+ "tsutils": "^3.7.0"
+ }
+ },
+ "@typescript-eslint/experimental-utils": {
+ "version": "1.11.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-1.11.0.tgz",
+ "integrity": "sha512-7LbfaqF6B8oa8cp/315zxKk8FFzosRzzhF8Kn/ZRsRsnpm7Qcu25cR/9RnAQo5utZ2KIWVgaALr+ZmcbG47ruw==",
+ "dev": true,
+ "requires": {
+ "@typescript-eslint/typescript-estree": "1.11.0",
+ "eslint-scope": "^4.0.0"
+ }
+ },
+ "@typescript-eslint/parser": {
+ "version": "1.11.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-1.11.0.tgz",
+ "integrity": "sha512-5xBExyXaxVyczrZvbRKEXvaTUFFq7gIM9BynXukXZE0zF3IQP/FxF4mPmmh3gJ9egafZFqByCpPTFm3dk4SY7Q==",
+ "dev": true,
+ "requires": {
+ "@types/eslint-visitor-keys": "^1.0.0",
+ "@typescript-eslint/experimental-utils": "1.11.0",
+ "@typescript-eslint/typescript-estree": "1.11.0",
+ "eslint-visitor-keys": "^1.0.0"
+ }
+ },
+ "@typescript-eslint/typescript-estree": {
+ "version": "1.11.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-1.11.0.tgz",
+ "integrity": "sha512-fquUHF5tAx1sM2OeRCC7wVxFd1iMELWMGCzOSmJ3pLzArj9+kRixdlC4d5MncuzXpjEqc6045p3KwM0o/3FuUA==",
+ "dev": true,
+ "requires": {
+ "lodash.unescape": "4.0.1",
+ "semver": "5.5.0"
+ }
+ },
"abab": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/abab/-/abab-2.0.0.tgz",
@@ -71,9 +127,9 @@
"dev": true
},
"acorn": {
- "version": "6.1.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz",
- "integrity": "sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==",
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.2.0.tgz",
+ "integrity": "sha512-8oe72N3WPMjA+2zVG71Ia0nXZ8DpQH+QyyHO+p06jT8eg8FGG3FbcUIi8KziHlAfheJQZeoqbvq1mQSQHXKYLw==",
"dev": true
},
"acorn-dynamic-import": {
@@ -83,9 +139,9 @@
"dev": true
},
"acorn-globals": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.0.tgz",
- "integrity": "sha512-hMtHj3s5RnuhvHPowpBYvJVj3rAar82JiDQHvGs1zO0l10ocX/xEdBShNHTJaboucJUsScghp74pH3s7EnHHQw==",
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.3.tgz",
+ "integrity": "sha512-vkR40VwS2SYO98AIeFvzWWh+xyc2qi9s7OoXSFEGIP/rOJKzjnhykaZJNnHdoq4BL2gGxI5EZOU16z896EYnOQ==",
"dev": true,
"requires": {
"acorn": "^6.0.1",
@@ -99,9 +155,9 @@
"dev": true
},
"acorn-walk": {
- "version": "6.1.1",
- "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.1.1.tgz",
- "integrity": "sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw==",
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz",
+ "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==",
"dev": true
},
"agadoo": {
@@ -127,18 +183,18 @@
}
},
"agent-base": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz",
- "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==",
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz",
+ "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==",
"dev": true,
"requires": {
"es6-promisify": "^5.0.0"
}
},
"ajv": {
- "version": "6.7.0",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.7.0.tgz",
- "integrity": "sha512-RZXPviBTtfmtka9n9sy1N5M5b82CbxWIR6HIis4s3WQTXDJamc/0gpCWNGz6EWdWp4DOfjzJfhz/AS9zVPjjWg==",
+ "version": "6.10.2",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz",
+ "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==",
"dev": true,
"requires": {
"fast-deep-equal": "^2.0.1",
@@ -147,16 +203,22 @@
"uri-js": "^4.2.2"
}
},
+ "ansi-colors": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz",
+ "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==",
+ "dev": true
+ },
"ansi-escapes": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz",
- "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz",
+ "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==",
"dev": true
},
"ansi-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
- "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
"dev": true
},
"ansi-styles": {
@@ -174,12 +236,6 @@
"integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=",
"dev": true
},
- "arg": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.0.tgz",
- "integrity": "sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg==",
- "dev": true
- },
"argparse": {
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
@@ -195,29 +251,21 @@
"integrity": "sha1-7L0W+JSbFXGDcRsb2jNPN4QBhas=",
"dev": true
},
- "arr-flatten": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
- "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
- "dev": true
- },
- "arr-union": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
- "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
- "dev": true
- },
"array-equal": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz",
"integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=",
"dev": true
},
- "arrify": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
- "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
- "dev": true
+ "array-includes": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz",
+ "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.2",
+ "es-abstract": "^1.7.0"
+ }
},
"asn1": {
"version": "0.2.4",
@@ -234,12 +282,6 @@
"integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
"dev": true
},
- "assign-symbols": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
- "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
- "dev": true
- },
"astral-regex": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz",
@@ -258,12 +300,6 @@
"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
"dev": true
},
- "atob": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
- "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
- "dev": true
- },
"aws-sign2": {
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
@@ -282,73 +318,6 @@
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
"dev": true
},
- "base": {
- "version": "0.11.2",
- "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
- "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
- "dev": true,
- "requires": {
- "cache-base": "^1.0.1",
- "class-utils": "^0.3.5",
- "component-emitter": "^1.2.1",
- "define-property": "^1.0.0",
- "isobject": "^3.0.1",
- "mixin-deep": "^1.2.0",
- "pascalcase": "^0.1.1"
- },
- "dependencies": {
- "define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
- "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^1.0.0"
- }
- },
- "is-accessor-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
- "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-data-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
- "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-descriptor": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
- "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
- }
- },
- "isobject": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
- "dev": true
- },
- "kind-of": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
- "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
- "dev": true
- }
- }
- },
"bcrypt-pbkdf": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
@@ -387,106 +356,41 @@
"dev": true
},
"builtin-modules": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
- "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz",
+ "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==",
"dev": true
},
"c8": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/c8/-/c8-3.4.0.tgz",
- "integrity": "sha512-LJcCHZlcWzTeRdUciC3fTq2AoIjBAZ18oHMG3StFVpKHxN+6IDUesrG6uiK3DlRm2PaDBfEOyp2N69VqQte1XA==",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/c8/-/c8-5.0.1.tgz",
+ "integrity": "sha512-63V/XrzqX2wgByuJyafJYuaudvxxmGrm/acqRJpvbtKvRUj6h/85EFrVweQ14j1F7wRASp0W9zyZqj8fnWI+4Q==",
"dev": true,
"requires": {
- "@bcoe/v8-coverage": "^0.1.0",
+ "@bcoe/v8-coverage": "^0.2.1",
"find-up": "^3.0.0",
"foreground-child": "^1.5.6",
"furi": "^1.3.0",
"istanbul-lib-coverage": "^2.0.1",
"istanbul-lib-report": "^2.0.1",
- "istanbul-reports": "^2.0.0",
+ "istanbul-reports": "^2.2.4",
"rimraf": "^2.6.2",
"test-exclude": "^5.0.0",
- "uuid": "^3.3.2",
- "v8-to-istanbul": "^2.0.2",
- "yargs": "^12.0.5",
+ "v8-to-istanbul": "^3.1.3",
+ "yargs": "^13.1.0",
"yargs-parser": "^10.1.0"
- },
- "dependencies": {
- "find-up": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
- "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
- "dev": true,
- "requires": {
- "locate-path": "^3.0.0"
- }
- },
- "locate-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
- "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
- "dev": true,
- "requires": {
- "p-locate": "^3.0.0",
- "path-exists": "^3.0.0"
- }
- },
- "p-limit": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz",
- "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==",
- "dev": true,
- "requires": {
- "p-try": "^2.0.0"
- }
- },
- "p-locate": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
- "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
- "dev": true,
- "requires": {
- "p-limit": "^2.0.0"
- }
- },
- "p-try": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz",
- "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==",
- "dev": true
- }
- }
- },
- "cache-base": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
- "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
- "dev": true,
- "requires": {
- "collection-visit": "^1.0.0",
- "component-emitter": "^1.2.1",
- "get-value": "^2.0.6",
- "has-value": "^1.0.0",
- "isobject": "^3.0.1",
- "set-value": "^2.0.0",
- "to-object-path": "^0.3.0",
- "union-value": "^1.0.0",
- "unset-value": "^1.0.0"
- },
- "dependencies": {
- "isobject": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
- "dev": true
- }
}
},
"callsites": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.0.0.tgz",
- "integrity": "sha512-tWnkwu9YEq2uzlBDI4RcLn8jrFvF9AOi8PxDNU3hZZjJcjkcRAq3vCI+vZcg1SuxISDYe86k9VZFwAxDiJGoAw==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true
+ },
+ "camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
"dev": true
},
"caseless": {
@@ -504,49 +408,25 @@
"ansi-styles": "^3.2.1",
"escape-string-regexp": "^1.0.5",
"supports-color": "^5.3.0"
- }
- },
- "chardet": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
- "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
- "dev": true
- },
- "circular-json": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz",
- "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==",
- "dev": true
- },
- "class-utils": {
- "version": "0.3.6",
- "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
- "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
- "dev": true,
- "requires": {
- "arr-union": "^3.1.0",
- "define-property": "^0.2.5",
- "isobject": "^3.0.0",
- "static-extend": "^0.1.1"
},
"dependencies": {
- "define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
"dev": true,
"requires": {
- "is-descriptor": "^0.1.0"
+ "has-flag": "^3.0.0"
}
- },
- "isobject": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
- "dev": true
}
}
},
+ "chardet": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
+ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
+ "dev": true
+ },
"cli-cursor": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
@@ -563,14 +443,14 @@
"dev": true
},
"cliui": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz",
- "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
+ "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
"dev": true,
"requires": {
- "string-width": "^2.1.1",
- "strip-ansi": "^4.0.0",
- "wrap-ansi": "^2.0.0"
+ "string-width": "^3.1.0",
+ "strip-ansi": "^5.2.0",
+ "wrap-ansi": "^5.1.0"
}
},
"code-point-at": {
@@ -580,34 +460,18 @@
"dev": true
},
"codecov": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/codecov/-/codecov-3.1.0.tgz",
- "integrity": "sha512-aWQc/rtHbcWEQLka6WmBAOpV58J2TwyXqlpAQGhQaSiEUoigTTUk6lLd2vB3kXkhnDyzyH74RXfmV4dq2txmdA==",
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/codecov/-/codecov-3.5.0.tgz",
+ "integrity": "sha512-/OsWOfIHaQIr7aeZ4pY0UC1PZT6kimoKFOFYFNb6wxo3iw12nRrh+mNGH72rnXxNsq6SGfesVPizm/6Q3XqcFQ==",
"dev": true,
"requires": {
"argv": "^0.0.2",
"ignore-walk": "^3.0.1",
- "js-yaml": "^3.12.0",
- "request": "^2.87.0",
+ "js-yaml": "^3.13.1",
+ "teeny-request": "^3.11.3",
"urlgrey": "^0.4.4"
}
},
- "codemirror": {
- "version": "5.45.0",
- "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.45.0.tgz",
- "integrity": "sha512-c19j644usCE8gQaXa0jqn2B/HN9MnB2u6qPIrrhrMkB+QAP42y8G4QnTwuwbVSoUS1jEl7JU9HZMGhCDL0nsAw==",
- "dev": true
- },
- "collection-visit": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
- "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
- "dev": true,
- "requires": {
- "map-visit": "^1.0.0",
- "object-visit": "^1.0.0"
- }
- },
"color-convert": {
"version": "1.9.3",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
@@ -624,24 +488,18 @@
"dev": true
},
"combined-stream": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz",
- "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==",
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
"dev": true,
"requires": {
"delayed-stream": "~1.0.0"
}
},
"commander": {
- "version": "2.15.1",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz",
- "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==",
- "dev": true
- },
- "component-emitter": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
- "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
+ "version": "2.20.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz",
+ "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==",
"dev": true
},
"concat-map": {
@@ -660,32 +518,6 @@
"inherits": "^2.0.3",
"readable-stream": "^2.2.2",
"typedarray": "^0.0.6"
- },
- "dependencies": {
- "readable-stream": {
- "version": "2.3.6",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
- "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
- "dev": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- }
}
},
"contains-path": {
@@ -694,11 +526,14 @@
"integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=",
"dev": true
},
- "copy-descriptor": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
- "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
- "dev": true
+ "convert-source-map": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz",
+ "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.1"
+ }
},
"core-util-is": {
"version": "1.0.2",
@@ -707,15 +542,12 @@
"dev": true
},
"cross-spawn": {
- "version": "6.0.5",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
- "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz",
+ "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=",
"dev": true,
"requires": {
- "nice-try": "^1.0.4",
- "path-key": "^2.0.1",
- "semver": "^5.5.0",
- "shebang-command": "^1.2.0",
+ "lru-cache": "^4.0.1",
"which": "^1.2.9"
}
},
@@ -738,15 +570,15 @@
}
},
"cssom": {
- "version": "0.3.4",
- "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.4.tgz",
- "integrity": "sha512-+7prCSORpXNeR4/fUP3rL+TzqtiFfhMvTd7uEqMdgPvLPt4+uzFUeufx5RHjGTACCargg/DiEt/moMQmvnfkog==",
+ "version": "0.3.8",
+ "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz",
+ "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==",
"dev": true
},
"cssstyle": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.1.1.tgz",
- "integrity": "sha512-364AI1l/M5TYcFH83JnOH/pSqgaNnKmYgKrm0didZMGKWjQB60dymwWy1rKUgL3J1ffdq9xVi2yGLHdSjjSNog==",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz",
+ "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==",
"dev": true,
"requires": {
"cssom": "0.3.x"
@@ -773,9 +605,9 @@
}
},
"debug": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
- "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
+ "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
"dev": true,
"requires": {
"ms": "^2.1.1"
@@ -787,69 +619,19 @@
"integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
"dev": true
},
- "decode-uri-component": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
- "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
- "dev": true
- },
"deep-is": {
"version": "0.1.3",
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
"integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
"dev": true
},
- "define-property": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
- "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+ "define-properties": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
+ "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
"dev": true,
"requires": {
- "is-descriptor": "^1.0.2",
- "isobject": "^3.0.1"
- },
- "dependencies": {
- "is-accessor-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
- "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-data-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
- "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-descriptor": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
- "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
- }
- },
- "isobject": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
- "dev": true
- },
- "kind-of": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
- "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
- "dev": true
- }
+ "object-keys": "^1.0.12"
}
},
"delayed-stream": {
@@ -865,38 +647,14 @@
"dev": true
},
"doctrine": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
- "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
+ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
"dev": true,
"requires": {
"esutils": "^2.0.2"
}
},
- "dom-serializer": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz",
- "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=",
- "dev": true,
- "requires": {
- "domelementtype": "~1.1.1",
- "entities": "~1.1.1"
- },
- "dependencies": {
- "domelementtype": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz",
- "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=",
- "dev": true
- }
- }
- },
- "domelementtype": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz",
- "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==",
- "dev": true
- },
"domexception": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz",
@@ -906,25 +664,6 @@
"webidl-conversions": "^4.0.2"
}
},
- "domhandler": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz",
- "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==",
- "dev": true,
- "requires": {
- "domelementtype": "1"
- }
- },
- "domutils": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz",
- "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==",
- "dev": true,
- "requires": {
- "dom-serializer": "0",
- "domelementtype": "1"
- }
- },
"ecc-jsbn": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
@@ -935,6 +674,12 @@
"safer-buffer": "^2.1.0"
}
},
+ "emoji-regex": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+ "dev": true
+ },
"end-of-stream": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz",
@@ -944,12 +689,6 @@
"once": "^1.4.0"
}
},
- "entities": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz",
- "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==",
- "dev": true
- },
"error-ex": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
@@ -959,12 +698,37 @@
"is-arrayish": "^0.2.1"
}
},
- "es6-promise": {
- "version": "4.2.6",
- "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.6.tgz",
- "integrity": "sha512-aRVgGdnmW2OiySVPUC9e6m+plolMAJKjZnQlCwNSuK5yQ0JN61DZSO1X1Ufd1foqWRAlig0rhduTCHe7sVtK5Q==",
- "dev": true
- },
+ "es-abstract": {
+ "version": "1.13.0",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz",
+ "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==",
+ "dev": true,
+ "requires": {
+ "es-to-primitive": "^1.2.0",
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3",
+ "is-callable": "^1.1.4",
+ "is-regex": "^1.0.4",
+ "object-keys": "^1.0.12"
+ }
+ },
+ "es-to-primitive": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz",
+ "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==",
+ "dev": true,
+ "requires": {
+ "is-callable": "^1.1.4",
+ "is-date-object": "^1.0.1",
+ "is-symbol": "^1.0.2"
+ }
+ },
+ "es6-promise": {
+ "version": "4.2.8",
+ "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz",
+ "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==",
+ "dev": true
+ },
"es6-promisify": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz",
@@ -981,9 +745,9 @@
"dev": true
},
"escodegen": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.0.tgz",
- "integrity": "sha512-IeMV45ReixHS53K/OmfKAIztN/igDHzTJUhZM3k1jMhIZWjk45SMwAtBsEXiJp3vSPmTcu6CXn7mDvFHRN66fw==",
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.1.tgz",
+ "integrity": "sha512-JwiqFD9KdGVVpeuRa68yU3zZnBEOcPs0nKW7wZzXky8Z7tffdYUHbe11bPCV5jYlK6DVdKLWLm0f5I/QlL0Kmw==",
"dev": true,
"requires": {
"esprima": "^3.1.3",
@@ -1002,48 +766,96 @@
}
},
"eslint": {
- "version": "5.12.1",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.12.1.tgz",
- "integrity": "sha512-54NV+JkTpTu0d8+UYSA8mMKAG4XAsaOrozA9rCW7tgneg1mevcL7wIotPC+fZ0SkWwdhNqoXoxnQCTBp7UvTsg==",
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.1.0.tgz",
+ "integrity": "sha512-QhrbdRD7ofuV09IuE2ySWBz0FyXCq0rriLTZXZqaWSI79CVtHVRdkFuFTViiqzZhkCgfOh9USpriuGN2gIpZDQ==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.0.0",
- "ajv": "^6.5.3",
+ "ajv": "^6.10.0",
"chalk": "^2.1.0",
"cross-spawn": "^6.0.5",
"debug": "^4.0.1",
- "doctrine": "^2.1.0",
- "eslint-scope": "^4.0.0",
+ "doctrine": "^3.0.0",
+ "eslint-scope": "^5.0.0",
"eslint-utils": "^1.3.1",
"eslint-visitor-keys": "^1.0.0",
- "espree": "^5.0.0",
+ "espree": "^6.0.0",
"esquery": "^1.0.1",
"esutils": "^2.0.2",
- "file-entry-cache": "^2.0.0",
+ "file-entry-cache": "^5.0.1",
"functional-red-black-tree": "^1.0.1",
- "glob": "^7.1.2",
+ "glob-parent": "^5.0.0",
"globals": "^11.7.0",
"ignore": "^4.0.6",
"import-fresh": "^3.0.0",
"imurmurhash": "^0.1.4",
- "inquirer": "^6.1.0",
- "js-yaml": "^3.12.0",
+ "inquirer": "^6.4.1",
+ "is-glob": "^4.0.0",
+ "js-yaml": "^3.13.1",
"json-stable-stringify-without-jsonify": "^1.0.1",
"levn": "^0.3.0",
- "lodash": "^4.17.5",
+ "lodash": "^4.17.14",
"minimatch": "^3.0.4",
"mkdirp": "^0.5.1",
"natural-compare": "^1.4.0",
"optionator": "^0.8.2",
- "path-is-inside": "^1.0.2",
- "pluralize": "^7.0.0",
"progress": "^2.0.0",
"regexpp": "^2.0.1",
- "semver": "^5.5.1",
- "strip-ansi": "^4.0.0",
- "strip-json-comments": "^2.0.1",
- "table": "^5.0.2",
- "text-table": "^0.2.0"
+ "semver": "^6.1.2",
+ "strip-ansi": "^5.2.0",
+ "strip-json-comments": "^3.0.1",
+ "table": "^5.2.3",
+ "text-table": "^0.2.0",
+ "v8-compile-cache": "^2.0.3"
+ },
+ "dependencies": {
+ "cross-spawn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "dev": true,
+ "requires": {
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.7.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz",
+ "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==",
+ "dev": true
+ }
+ }
+ },
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "eslint-scope": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz",
+ "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==",
+ "dev": true,
+ "requires": {
+ "esrecurse": "^4.1.0",
+ "estraverse": "^4.1.1"
+ }
+ },
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true
+ }
}
},
"eslint-import-resolver-node": {
@@ -1074,9 +886,9 @@
}
},
"eslint-module-utils": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.3.0.tgz",
- "integrity": "sha512-lmDJgeOOjk8hObTysjqH7wyMi+nsHwwvfBykwfhjR1LNdd7C2uFJBvx4OpWYpXOw4df1yE1cDEVd1yLHitk34w==",
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.4.1.tgz",
+ "integrity": "sha512-H6DOj+ejw7Tesdgbfs4jeS4YMFrT8uI8xwd1gtQqXssaR0EQ26L+2O/w6wkYFy2MymON0fTwHmXBvvfLNZVZEw==",
"dev": true,
"requires": {
"debug": "^2.6.8",
@@ -1100,31 +912,23 @@
}
}
},
- "eslint-plugin-html": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-html/-/eslint-plugin-html-5.0.0.tgz",
- "integrity": "sha512-f7p/7YQdgQUFVAX3nB4dnMQbrDeTalcA01PDhuvTLk0ZadCwM4Pb+639SRuqEf1zMkIxckLY+ckCr0hVP5zl6A==",
- "dev": true,
- "requires": {
- "htmlparser2": "^3.10.0"
- }
- },
"eslint-plugin-import": {
- "version": "2.15.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.15.0.tgz",
- "integrity": "sha512-LEHqgR+RcnpGqYW7h9WMkPb/tP+ekKxWdQDztfTtZeV43IHF+X8lXU+1HOCcR4oXD24qRgEwNSxIweD5uNKGVg==",
+ "version": "2.18.2",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.18.2.tgz",
+ "integrity": "sha512-5ohpsHAiUBRNaBWAF08izwUGlbrJoJJ+W9/TBwsGoR1MnlgfwMIKrFeSjWbt6moabiXW9xNvtFz+97KHRfI4HQ==",
"dev": true,
"requires": {
+ "array-includes": "^3.0.3",
"contains-path": "^0.1.0",
"debug": "^2.6.9",
"doctrine": "1.5.0",
"eslint-import-resolver-node": "^0.3.2",
- "eslint-module-utils": "^2.3.0",
+ "eslint-module-utils": "^2.4.0",
"has": "^1.0.3",
- "lodash": "^4.17.11",
"minimatch": "^3.0.4",
+ "object.values": "^1.1.0",
"read-pkg-up": "^2.0.0",
- "resolve": "^1.9.0"
+ "resolve": "^1.11.0"
},
"dependencies": {
"debug": {
@@ -1146,18 +950,124 @@
"isarray": "^1.0.0"
}
},
+ "find-up": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+ "dev": true,
+ "requires": {
+ "locate-path": "^2.0.0"
+ }
+ },
+ "load-json-file": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
+ "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "parse-json": "^2.2.0",
+ "pify": "^2.0.0",
+ "strip-bom": "^3.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+ "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+ "dev": true,
+ "requires": {
+ "p-locate": "^2.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
"dev": true
+ },
+ "p-limit": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
+ "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+ "dev": true,
+ "requires": {
+ "p-try": "^1.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+ "dev": true,
+ "requires": {
+ "p-limit": "^1.1.0"
+ }
+ },
+ "p-try": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
+ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+ "dev": true
+ },
+ "parse-json": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
+ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
+ "dev": true,
+ "requires": {
+ "error-ex": "^1.2.0"
+ }
+ },
+ "path-type": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
+ "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
+ "dev": true,
+ "requires": {
+ "pify": "^2.0.0"
+ }
+ },
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true
+ },
+ "read-pkg": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
+ "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
+ "dev": true,
+ "requires": {
+ "load-json-file": "^2.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^2.0.0"
+ }
+ },
+ "read-pkg-up": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
+ "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
+ "dev": true,
+ "requires": {
+ "find-up": "^2.0.0",
+ "read-pkg": "^2.0.0"
+ }
}
}
},
+ "eslint-plugin-svelte3": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-svelte3/-/eslint-plugin-svelte3-2.6.0.tgz",
+ "integrity": "sha512-HtoVRGo/Bjkv/S+OyPZFL/O8kwLAQpWvW4QJMP9BKDyBkrAPMlEdXCLPMFAOH4cEJmkdfgJIWuTNwOPX8W571A==",
+ "dev": true
+ },
"eslint-scope": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz",
- "integrity": "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==",
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz",
+ "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==",
"dev": true,
"requires": {
"esrecurse": "^4.1.0",
@@ -1177,12 +1087,12 @@
"dev": true
},
"espree": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.0.tgz",
- "integrity": "sha512-1MpUfwsdS9MMoN7ZXqAr9e9UKdVHDcvrJpyx7mm1WuQlx/ygErEQBzgi5Nh5qBHIoYweprhtMkTCb9GhcAIcsA==",
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-6.0.0.tgz",
+ "integrity": "sha512-lJvCS6YbCn3ImT3yKkPe0+tJ+mH6ljhGNjHQH9mRtiO6gjhVAOhVXW1yjnwqGwTkK3bGbye+hb00nFNmu0l/1Q==",
"dev": true,
"requires": {
- "acorn": "^6.0.2",
+ "acorn": "^6.0.7",
"acorn-jsx": "^5.0.0",
"eslint-visitor-keys": "^1.0.0"
}
@@ -1218,15 +1128,15 @@
"dev": true
},
"estree-walker": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.0.tgz",
- "integrity": "sha512-peq1RfVAVzr3PU/jL31RaOjUKLoZJpObQWJJ+LgfcxDUifyLZ1RjPQZTl0pzj2uJ45b7A7XpyppXvxdEqzo4rw==",
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz",
+ "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==",
"dev": true
},
"esutils": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
- "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
"dev": true
},
"execa": {
@@ -1242,39 +1152,33 @@
"p-finally": "^1.0.0",
"signal-exit": "^3.0.0",
"strip-eof": "^1.0.0"
- }
- },
- "extend": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
- "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
- "dev": true
- },
- "extend-shallow": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
- "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
- "dev": true,
- "requires": {
- "assign-symbols": "^1.0.0",
- "is-extendable": "^1.0.1"
},
"dependencies": {
- "is-extendable": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
- "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "cross-spawn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
"dev": true,
"requires": {
- "is-plain-object": "^2.0.4"
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
}
}
}
},
+ "extend": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
+ "dev": true
+ },
"external-editor": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz",
- "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
+ "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
"dev": true,
"requires": {
"chardet": "^0.7.0",
@@ -1354,40 +1258,47 @@
}
},
"file-entry-cache": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz",
- "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz",
+ "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==",
"dev": true,
"requires": {
- "flat-cache": "^1.2.1",
- "object-assign": "^4.0.1"
+ "flat-cache": "^2.0.1"
}
},
"find-up": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
- "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^3.0.0"
+ }
+ },
+ "flat": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz",
+ "integrity": "sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==",
"dev": true,
"requires": {
- "locate-path": "^2.0.0"
+ "is-buffer": "~2.0.3"
}
},
"flat-cache": {
- "version": "1.3.4",
- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz",
- "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz",
+ "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==",
"dev": true,
"requires": {
- "circular-json": "^0.3.1",
- "graceful-fs": "^4.1.2",
- "rimraf": "~2.6.2",
- "write": "^0.2.1"
+ "flatted": "^2.0.0",
+ "rimraf": "2.6.3",
+ "write": "1.0.3"
}
},
- "for-in": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
- "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
+ "flatted": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz",
+ "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==",
"dev": true
},
"foreground-child": {
@@ -1398,18 +1309,6 @@
"requires": {
"cross-spawn": "^4",
"signal-exit": "^3.0.0"
- },
- "dependencies": {
- "cross-spawn": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz",
- "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=",
- "dev": true,
- "requires": {
- "lru-cache": "^4.0.1",
- "which": "^1.2.9"
- }
- }
}
},
"forever-agent": {
@@ -1429,15 +1328,6 @@
"mime-types": "^2.1.12"
}
},
- "fragment-cache": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
- "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
- "dev": true,
- "requires": {
- "map-cache": "^0.2.2"
- }
- },
"fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
@@ -1467,9 +1357,9 @@
}
},
"get-caller-file": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
- "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==",
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
"dev": true
},
"get-stream": {
@@ -1481,12 +1371,6 @@
"pump": "^3.0.0"
}
},
- "get-value": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
- "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
- "dev": true
- },
"getpass": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
@@ -1497,9 +1381,9 @@
}
},
"glob": {
- "version": "7.1.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
- "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
+ "version": "7.1.4",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz",
+ "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==",
"dev": true,
"requires": {
"fs.realpath": "^1.0.0",
@@ -1510,16 +1394,25 @@
"path-is-absolute": "^1.0.0"
}
},
+ "glob-parent": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.0.0.tgz",
+ "integrity": "sha512-Z2RwiujPRGluePM6j699ktJYxmPpJKCfpGA13jz2hmFZC7gKetzrWvg5KN3+OsIFmydGyZ1AVwERCq1w/ZZwRg==",
+ "dev": true,
+ "requires": {
+ "is-glob": "^4.0.1"
+ }
+ },
"globals": {
- "version": "11.10.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-11.10.0.tgz",
- "integrity": "sha512-0GZF1RiPKU97IHUO5TORo9w1PwrH/NBPl+fS7oMLdaTRiYmYbwK4NWoZWrAdd0/abG9R2BU+OiwyQpTpE6pdfQ==",
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
"dev": true
},
"globalyzer": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz",
- "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==",
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.4.tgz",
+ "integrity": "sha512-LeguVWaxgHN0MNbWC6YljNMzHkrCny9fzjmEUdnF1kQ7wATFD1RHFRqA1qxaX2tgxGENlcxjOflopBwj3YZiXA==",
"dev": true
},
"globrex": {
@@ -1529,9 +1422,9 @@
"dev": true
},
"graceful-fs": {
- "version": "4.1.15",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz",
- "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.0.tgz",
+ "integrity": "sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==",
"dev": true
},
"growl": {
@@ -1583,70 +1476,16 @@
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
"dev": true
},
- "has-value": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
- "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
- "dev": true,
- "requires": {
- "get-value": "^2.0.6",
- "has-values": "^1.0.0",
- "isobject": "^3.0.0"
- },
- "dependencies": {
- "isobject": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
- "dev": true
- }
- }
- },
- "has-values": {
+ "has-symbols": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
- "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
- "dev": true,
- "requires": {
- "is-number": "^3.0.0",
- "kind-of": "^4.0.0"
- },
- "dependencies": {
- "is-number": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
- "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "kind-of": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
- "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz",
+ "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=",
+ "dev": true
},
"he": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz",
- "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
+ "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
"dev": true
},
"hosted-git-info": {
@@ -1664,20 +1503,6 @@
"whatwg-encoding": "^1.0.1"
}
},
- "htmlparser2": {
- "version": "3.10.0",
- "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.0.tgz",
- "integrity": "sha512-J1nEUGv+MkXS0weHNWVKJJ+UrLfePxRWpN3C9bEi9fLxL2+ggW94DQvgYVXsaT30PGwYRIZKNZXuyMhp3Di4bQ==",
- "dev": true,
- "requires": {
- "domelementtype": "^1.3.0",
- "domhandler": "^2.3.0",
- "domutils": "^1.5.1",
- "entities": "^1.1.1",
- "inherits": "^2.0.1",
- "readable-stream": "^3.0.6"
- }
- },
"http-signature": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
@@ -1690,24 +1515,13 @@
}
},
"https-proxy-agent": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz",
- "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==",
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.2.tgz",
+ "integrity": "sha512-c8Ndjc9Bkpfx/vCJueCPy0jlP4ccCCSNDp8xwCZzPjKJUm+B+u9WX2x98Qx4n1PiMNTWo3D7KK5ifNV/yJyRzg==",
"dev": true,
"requires": {
- "agent-base": "^4.1.0",
+ "agent-base": "^4.3.0",
"debug": "^3.1.0"
- },
- "dependencies": {
- "debug": {
- "version": "3.2.6",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
- "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
- "dev": true,
- "requires": {
- "ms": "^2.1.1"
- }
- }
}
},
"iconv-lite": {
@@ -1735,9 +1549,9 @@
}
},
"import-fresh": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.0.0.tgz",
- "integrity": "sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.1.0.tgz",
+ "integrity": "sha512-PpuksHKGt8rXfWEr9m9EHIpgyyaltBy8+eF6GJM0QCAxMgxCfucMF3mjecK2QsJr0amJW7gTqh5/wht0z2UhEQ==",
"dev": true,
"requires": {
"parent-module": "^1.0.0",
@@ -1761,45 +1575,57 @@
}
},
"inherits": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
- "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
"dev": true
},
"inquirer": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.2.1.tgz",
- "integrity": "sha512-088kl3DRT2dLU5riVMKKr1DlImd6X7smDhpXUCkJDCKvTEJeRiXh0G132HG9u5a+6Ylw9plFRY7RuTnwohYSpg==",
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.0.tgz",
+ "integrity": "sha512-scfHejeG/lVZSpvCXpsB4j/wQNPM5JC8kiElOI0OUTwmc1RTpXr4H32/HOlQHcZiYl2z2VElwuCVDRG8vFmbnA==",
"dev": true,
"requires": {
- "ansi-escapes": "^3.0.0",
- "chalk": "^2.0.0",
+ "ansi-escapes": "^3.2.0",
+ "chalk": "^2.4.2",
"cli-cursor": "^2.1.0",
"cli-width": "^2.0.0",
- "external-editor": "^3.0.0",
+ "external-editor": "^3.0.3",
"figures": "^2.0.0",
- "lodash": "^4.17.10",
+ "lodash": "^4.17.12",
"mute-stream": "0.0.7",
"run-async": "^2.2.0",
- "rxjs": "^6.1.0",
+ "rxjs": "^6.4.0",
"string-width": "^2.1.0",
- "strip-ansi": "^5.0.0",
+ "strip-ansi": "^5.1.0",
"through": "^2.3.6"
},
"dependencies": {
"ansi-regex": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.0.0.tgz",
- "integrity": "sha512-iB5Dda8t/UqpPI/IjsejXu5jOGDrzn41wJyljwPH65VCIbk6+1BzFIMJGFwTNrYXT1CrD+B4l19U7awiQ8rk7w==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
"dev": true
},
- "strip-ansi": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.0.0.tgz",
- "integrity": "sha512-Uu7gQyZI7J7gn5qLn1Np3G9vcYGTVqB+lFTytnDJv83dd8T22aGH451P3jueT2/QemInJDfxHB5Tde5OzgG1Ow==",
+ "string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
"dev": true,
"requires": {
- "ansi-regex": "^4.0.0"
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ },
+ "dependencies": {
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ }
}
}
}
@@ -1810,14 +1636,11 @@
"integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==",
"dev": true
},
- "is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- }
+ "ip-regex": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz",
+ "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=",
+ "dev": true
},
"is-arrayish": {
"version": "0.2.1",
@@ -1826,52 +1649,27 @@
"dev": true
},
"is-buffer": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
- "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz",
+ "integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw==",
"dev": true
},
- "is-builtin-module": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
- "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=",
- "dev": true,
- "requires": {
- "builtin-modules": "^1.0.0"
- }
+ "is-callable": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz",
+ "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==",
+ "dev": true
},
- "is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- }
- },
- "is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- },
- "dependencies": {
- "kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "dev": true
- }
- }
+ "is-date-object": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz",
+ "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=",
+ "dev": true
},
- "is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
+ "is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
"dev": true
},
"is-fullwidth-code-point": {
@@ -1880,29 +1678,21 @@
"integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
"dev": true
},
+ "is-glob": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
+ "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^2.1.1"
+ }
+ },
"is-module": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
"integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=",
"dev": true
},
- "is-plain-object": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
- "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
- "dev": true,
- "requires": {
- "isobject": "^3.0.1"
- },
- "dependencies": {
- "isobject": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
- "dev": true
- }
- }
- },
"is-promise": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
@@ -1910,20 +1700,38 @@
"dev": true
},
"is-reference": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.1.tgz",
- "integrity": "sha512-URlByVARcyP2E2GC7d3Ur702g3vqW391VKCHuF5Goo/M8IT97k4RU/+56OYImwDdX1J/V/VRxECE/wJqB0I2tg==",
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.3.tgz",
+ "integrity": "sha512-W1iHHv/oyBb2pPxkBxtaewxa1BC58Pn5J0hogyCdefwUIvb6R+TGbAcIa4qPNYLqLhb3EnOgUf2MQkkF76BcKw==",
"dev": true,
"requires": {
"@types/estree": "0.0.39"
}
},
+ "is-regex": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz",
+ "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=",
+ "dev": true,
+ "requires": {
+ "has": "^1.0.1"
+ }
+ },
"is-stream": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
"integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
"dev": true
},
+ "is-symbol": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz",
+ "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==",
+ "dev": true,
+ "requires": {
+ "has-symbols": "^1.0.0"
+ }
+ },
"is-typedarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
@@ -1955,29 +1763,29 @@
"dev": true
},
"istanbul-lib-coverage": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz",
- "integrity": "sha512-nPvSZsVlbG9aLhZYaC3Oi1gT/tpyo3Yt5fNyf6NmcKIayz4VV/txxJFFKAK/gU4dcNn8ehsanBbVHVl0+amOLA==",
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz",
+ "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==",
"dev": true
},
"istanbul-lib-report": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.2.tgz",
- "integrity": "sha512-rJ8uR3peeIrwAxoDEbK4dJ7cqqtxBisZKCuwkMtMv0xYzaAnsAi3AHrHPAAtNXzG/bcCgZZ3OJVqm1DTi9ap2Q==",
+ "version": "2.0.8",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz",
+ "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==",
"dev": true,
"requires": {
- "istanbul-lib-coverage": "^2.0.1",
- "make-dir": "^1.3.0",
- "supports-color": "^5.4.0"
+ "istanbul-lib-coverage": "^2.0.5",
+ "make-dir": "^2.1.0",
+ "supports-color": "^6.1.0"
}
},
"istanbul-reports": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.0.1.tgz",
- "integrity": "sha512-CT0QgMBJqs6NJLF678ZHcquUAZIoBIUNzdJrRJfpkI9OnzG6MkUfHxbJC3ln981dMswC7/B1mfX3LNkhgJxsuw==",
+ "version": "2.2.6",
+ "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.6.tgz",
+ "integrity": "sha512-SKi4rnMyLBKe0Jy2uUdx28h8oG7ph2PPuQPvIAh31d+Ci+lSiEu4C+h3oBPuJ9+mPKhOyW0M8gY4U5NM1WLeXA==",
"dev": true,
"requires": {
- "handlebars": "^4.0.11"
+ "handlebars": "^4.1.2"
}
},
"js-tokens": {
@@ -2003,36 +1811,48 @@
"dev": true
},
"jsdom": {
- "version": "12.2.0",
- "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-12.2.0.tgz",
- "integrity": "sha512-QPOggIJ8fquWPLaYYMoh+zqUmdphDtu1ju0QGTitZT1Yd8I5qenPpXM1etzUegu3MjVp8XPzgZxdn8Yj7e40ig==",
+ "version": "15.1.1",
+ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-15.1.1.tgz",
+ "integrity": "sha512-cQZRBB33arrDAeCrAEWn1U3SvrvC8XysBua9Oqg1yWrsY/gYcusloJC3RZJXuY5eehSCmws8f2YeliCqGSkrtQ==",
"dev": true,
"requires": {
"abab": "^2.0.0",
- "acorn": "^6.0.2",
- "acorn-globals": "^4.3.0",
+ "acorn": "^6.1.1",
+ "acorn-globals": "^4.3.2",
"array-equal": "^1.0.0",
- "cssom": "^0.3.4",
- "cssstyle": "^1.1.1",
- "data-urls": "^1.0.1",
+ "cssom": "^0.3.6",
+ "cssstyle": "^1.2.2",
+ "data-urls": "^1.1.0",
"domexception": "^1.0.1",
- "escodegen": "^1.11.0",
+ "escodegen": "^1.11.1",
"html-encoding-sniffer": "^1.0.2",
- "nwsapi": "^2.0.9",
+ "nwsapi": "^2.1.4",
"parse5": "5.1.0",
"pn": "^1.1.0",
"request": "^2.88.0",
- "request-promise-native": "^1.0.5",
- "saxes": "^3.1.3",
+ "request-promise-native": "^1.0.7",
+ "saxes": "^3.1.9",
"symbol-tree": "^3.2.2",
- "tough-cookie": "^2.4.3",
+ "tough-cookie": "^3.0.1",
"w3c-hr-time": "^1.0.1",
+ "w3c-xmlserializer": "^1.1.2",
"webidl-conversions": "^4.0.2",
"whatwg-encoding": "^1.0.5",
- "whatwg-mimetype": "^2.2.0",
+ "whatwg-mimetype": "^2.3.0",
"whatwg-url": "^7.0.0",
- "ws": "^6.1.0",
+ "ws": "^7.0.0",
"xml-name-validator": "^3.0.0"
+ },
+ "dependencies": {
+ "ws": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.1.1.tgz",
+ "integrity": "sha512-o41D/WmDeca0BqYhsr3nJzQyg9NF5X8l/UdnFNux9cS3lwB+swm8qGWX5rn+aD6xfBU3rGmtHij7g7x6LxFU3A==",
+ "dev": true,
+ "requires": {
+ "async-limiter": "^1.0.0"
+ }
+ }
}
},
"json-parse-better-errors": {
@@ -2077,19 +1897,10 @@
"verror": "1.10.0"
}
},
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- },
"kleur": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.1.tgz",
- "integrity": "sha512-P3kRv+B+Ra070ng2VKQqW4qW7gd/v3iD8sy/zOdcYRsfiD+QBokQNOps/AfP6Hr48cBhIIBFWckB9aO+IZhrWg==",
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
+ "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
"dev": true
},
"lcid": {
@@ -2118,15 +1929,23 @@
"dev": true
},
"load-json-file": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
- "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
+ "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
"dev": true,
"requires": {
"graceful-fs": "^4.1.2",
- "parse-json": "^2.2.0",
- "pify": "^2.0.0",
+ "parse-json": "^4.0.0",
+ "pify": "^3.0.0",
"strip-bom": "^3.0.0"
+ },
+ "dependencies": {
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "dev": true
+ }
}
},
"locate-character": {
@@ -2136,19 +1955,19 @@
"dev": true
},
"locate-path": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
- "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
"dev": true,
"requires": {
- "p-locate": "^2.0.0",
+ "p-locate": "^3.0.0",
"path-exists": "^3.0.0"
}
},
"lodash": {
- "version": "4.17.11",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
- "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==",
+ "version": "4.17.15",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
+ "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
"dev": true
},
"lodash.sortby": {
@@ -2157,6 +1976,21 @@
"integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=",
"dev": true
},
+ "lodash.unescape": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/lodash.unescape/-/lodash.unescape-4.0.1.tgz",
+ "integrity": "sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw=",
+ "dev": true
+ },
+ "log-symbols": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz",
+ "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.0.1"
+ }
+ },
"lru-cache": {
"version": "4.1.5",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
@@ -2168,37 +2002,32 @@
}
},
"magic-string": {
- "version": "0.25.2",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.2.tgz",
- "integrity": "sha512-iLs9mPjh9IuTtRsqqhNGYcZXGei0Nh/A4xirrsqW7c+QhKVFL2vm7U09ru6cHRD22azaP/wMDgI+HCqbETMTtg==",
+ "version": "0.25.3",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.3.tgz",
+ "integrity": "sha512-6QK0OpF/phMz0Q2AxILkX2mFhi7m+WMwTRg0LQKq/WBB0cDP4rYH3Wp4/d3OTXlrPLVJT/RFqj8tFeAR4nk8AA==",
"dev": true,
"requires": {
"sourcemap-codec": "^1.4.4"
}
},
"make-dir": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
- "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
+ "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
"dev": true,
"requires": {
- "pify": "^3.0.0"
+ "pify": "^4.0.1",
+ "semver": "^5.6.0"
},
"dependencies": {
- "pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "semver": {
+ "version": "5.7.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz",
+ "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==",
"dev": true
}
}
},
- "make-error": {
- "version": "1.3.5",
- "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz",
- "integrity": "sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==",
- "dev": true
- },
"map-age-cleaner": {
"version": "0.1.3",
"resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz",
@@ -2208,21 +2037,6 @@
"p-defer": "^1.0.0"
}
},
- "map-cache": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
- "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
- "dev": true
- },
- "map-visit": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
- "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
- "dev": true,
- "requires": {
- "object-visit": "^1.0.0"
- }
- },
"mdn-data": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-1.2.0.tgz",
@@ -2230,41 +2044,41 @@
"dev": true
},
"mem": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/mem/-/mem-4.0.0.tgz",
- "integrity": "sha512-WQxG/5xYc3tMbYLXoXPm81ET2WDULiU5FxbuIoNbJqLOOI8zehXFdZuiUEgfdrU2mVB1pxBZUGlYORSrpuJreA==",
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz",
+ "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==",
"dev": true,
"requires": {
"map-age-cleaner": "^0.1.1",
- "mimic-fn": "^1.0.0",
- "p-is-promise": "^1.1.0"
+ "mimic-fn": "^2.0.0",
+ "p-is-promise": "^2.0.0"
}
},
"mime": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.0.tgz",
- "integrity": "sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w==",
+ "version": "2.4.4",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz",
+ "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==",
"dev": true
},
"mime-db": {
- "version": "1.37.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz",
- "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==",
+ "version": "1.40.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz",
+ "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==",
"dev": true
},
"mime-types": {
- "version": "2.1.21",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz",
- "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==",
+ "version": "2.1.24",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz",
+ "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==",
"dev": true,
"requires": {
- "mime-db": "~1.37.0"
+ "mime-db": "1.40.0"
}
},
"mimic-fn": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
- "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
"dev": true
},
"minimatch": {
@@ -2277,32 +2091,11 @@
}
},
"minimist": {
- "version": "0.0.8",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
- "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
+ "version": "0.0.10",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
+ "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=",
"dev": true
},
- "mixin-deep": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz",
- "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==",
- "dev": true,
- "requires": {
- "for-in": "^1.0.2",
- "is-extendable": "^1.0.1"
- },
- "dependencies": {
- "is-extendable": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
- "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
- "dev": true,
- "requires": {
- "is-plain-object": "^2.0.4"
- }
- }
- }
- },
"mkdirp": {
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
@@ -2310,40 +2103,80 @@
"dev": true,
"requires": {
"minimist": "0.0.8"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
+ "dev": true
+ }
}
},
"mocha": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz",
- "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==",
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/mocha/-/mocha-6.2.0.tgz",
+ "integrity": "sha512-qwfFgY+7EKAAUAdv7VYMZQknI7YJSGesxHyhn6qD52DV8UcSZs5XwCifcZGMVIE4a5fbmhvbotxC0DLQ0oKohQ==",
"dev": true,
"requires": {
+ "ansi-colors": "3.2.3",
"browser-stdout": "1.3.1",
- "commander": "2.15.1",
- "debug": "3.1.0",
+ "debug": "3.2.6",
"diff": "3.5.0",
"escape-string-regexp": "1.0.5",
- "glob": "7.1.2",
+ "find-up": "3.0.0",
+ "glob": "7.1.3",
"growl": "1.10.5",
- "he": "1.1.1",
+ "he": "1.2.0",
+ "js-yaml": "3.13.1",
+ "log-symbols": "2.2.0",
"minimatch": "3.0.4",
"mkdirp": "0.5.1",
- "supports-color": "5.4.0"
+ "ms": "2.1.1",
+ "node-environment-flags": "1.0.5",
+ "object.assign": "4.1.0",
+ "strip-json-comments": "2.0.1",
+ "supports-color": "6.0.0",
+ "which": "1.3.1",
+ "wide-align": "1.1.3",
+ "yargs": "13.2.2",
+ "yargs-parser": "13.0.0",
+ "yargs-unparser": "1.5.0"
},
"dependencies": {
- "debug": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
- "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "cliui": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz",
+ "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==",
"dev": true,
"requires": {
- "ms": "2.0.0"
+ "string-width": "^2.1.1",
+ "strip-ansi": "^4.0.0",
+ "wrap-ansi": "^2.0.0"
+ },
+ "dependencies": {
+ "string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "dev": true,
+ "requires": {
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ }
+ }
}
},
"glob": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
- "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
+ "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
"dev": true,
"requires": {
"fs.realpath": "^1.0.0",
@@ -2355,26 +2188,117 @@
}
},
"ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
+ "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ },
+ "strip-json-comments": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
"dev": true
},
"supports-color": {
- "version": "5.4.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
- "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
"dev": true,
"requires": {
"has-flag": "^3.0.0"
}
+ },
+ "wrap-ansi": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
+ "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
+ "dev": true,
+ "requires": {
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+ "dev": true,
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ }
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "dev": true,
+ "requires": {
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ }
+ }
+ },
+ "yargs": {
+ "version": "13.2.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.2.tgz",
+ "integrity": "sha512-WyEoxgyTD3w5XRpAQNYUB9ycVH/PQrToaTXdYXRdOXvEy1l19br+VJsc0vcO8PTGg5ro/l/GY7F/JMEBmI0BxA==",
+ "dev": true,
+ "requires": {
+ "cliui": "^4.0.0",
+ "find-up": "^3.0.0",
+ "get-caller-file": "^2.0.1",
+ "os-locale": "^3.1.0",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^2.0.0",
+ "set-blocking": "^2.0.0",
+ "string-width": "^3.0.0",
+ "which-module": "^2.0.0",
+ "y18n": "^4.0.0",
+ "yargs-parser": "^13.0.0"
+ }
+ },
+ "yargs-parser": {
+ "version": "13.0.0",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.0.0.tgz",
+ "integrity": "sha512-w2LXjoL8oRdRQN+hOyppuXs+V/fVAYtpcrRxZuF7Kt/Oc+Jr2uAcVntaUTNT6w5ihoWfFDpNY8CPx1QskxZ/pw==",
+ "dev": true,
+ "requires": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ }
}
}
},
"ms": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
- "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
},
"mute-stream": {
@@ -2394,45 +2318,6 @@
"thenify-all": "^1.0.0"
}
},
- "nanomatch": {
- "version": "1.2.13",
- "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
- "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
- "dev": true,
- "requires": {
- "arr-diff": "^4.0.0",
- "array-unique": "^0.3.2",
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "fragment-cache": "^0.2.1",
- "is-windows": "^1.0.2",
- "kind-of": "^6.0.2",
- "object.pick": "^1.3.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- },
- "dependencies": {
- "arr-diff": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
- "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
- "dev": true
- },
- "array-unique": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
- "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
- "dev": true
- },
- "kind-of": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
- "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
- "dev": true
- }
- }
- },
"natural-compare": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
@@ -2451,6 +2336,30 @@
"integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
"dev": true
},
+ "node-environment-flags": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.5.tgz",
+ "integrity": "sha512-VNYPRfGfmZLx0Ye20jWzHUjyTW/c+6Wq+iLhDzUI4XmhrDd9l/FozXV3F2xOaXjvp0co0+v1YSR3CMP6g+VvLQ==",
+ "dev": true,
+ "requires": {
+ "object.getownpropertydescriptors": "^2.0.3",
+ "semver": "^5.7.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.7.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz",
+ "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==",
+ "dev": true
+ }
+ }
+ },
+ "node-fetch": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz",
+ "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==",
+ "dev": true
+ },
"node-modules-regexp": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz",
@@ -2458,13 +2367,13 @@
"dev": true
},
"normalize-package-data": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
- "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==",
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
+ "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
"dev": true,
"requires": {
"hosted-git-info": "^2.1.4",
- "is-builtin-module": "^1.0.0",
+ "resolve": "^1.10.0",
"semver": "2 || 3 || 4 || 5",
"validate-npm-package-license": "^3.0.1"
}
@@ -2485,9 +2394,9 @@
"dev": true
},
"nwsapi": {
- "version": "2.0.9",
- "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.0.9.tgz",
- "integrity": "sha512-nlWFSCTYQcHk/6A9FFnfhKc14c3aFhfdNBXgo8Qgi9QTBu/qg3Ww+Uiz9wMzXd1T8GFxPc2QIHB6Qtf2XFryFQ==",
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.1.4.tgz",
+ "integrity": "sha512-iGfd9Y6SFdTNldEy2L0GUhcarIutFmk+MPWIn9dmj8NMIup03G08uUF2KGbbmv/Ux4RT0VZJoP/sVbWA6d/VIw==",
"dev": true
},
"oauth-sign": {
@@ -2502,60 +2411,44 @@
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
"dev": true
},
- "object-copy": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
- "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
+ "object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+ "dev": true
+ },
+ "object.assign": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz",
+ "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==",
"dev": true,
"requires": {
- "copy-descriptor": "^0.1.0",
- "define-property": "^0.2.5",
- "kind-of": "^3.0.3"
- },
- "dependencies": {
- "define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- }
+ "define-properties": "^1.1.2",
+ "function-bind": "^1.1.1",
+ "has-symbols": "^1.0.0",
+ "object-keys": "^1.0.11"
}
},
- "object-visit": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
- "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
+ "object.getownpropertydescriptors": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz",
+ "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=",
"dev": true,
"requires": {
- "isobject": "^3.0.0"
- },
- "dependencies": {
- "isobject": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
- "dev": true
- }
+ "define-properties": "^1.1.2",
+ "es-abstract": "^1.5.1"
}
},
- "object.pick": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
- "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
+ "object.values": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.0.tgz",
+ "integrity": "sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg==",
"dev": true,
"requires": {
- "isobject": "^3.0.1"
- },
- "dependencies": {
- "isobject": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
- "dev": true
- }
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.12.0",
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3"
}
},
"once": {
@@ -2574,6 +2467,14 @@
"dev": true,
"requires": {
"mimic-fn": "^1.0.0"
+ },
+ "dependencies": {
+ "mimic-fn": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
+ "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
+ "dev": true
+ }
}
},
"optimist": {
@@ -2584,14 +2485,6 @@
"requires": {
"minimist": "~0.0.1",
"wordwrap": "~0.0.2"
- },
- "dependencies": {
- "wordwrap": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
- "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=",
- "dev": true
- }
}
},
"optionator": {
@@ -2606,6 +2499,14 @@
"prelude-ls": "~1.1.2",
"type-check": "~0.3.2",
"wordwrap": "~1.0.0"
+ },
+ "dependencies": {
+ "wordwrap": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
+ "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
+ "dev": true
+ }
}
},
"os-locale": {
@@ -2638,51 +2539,52 @@
"dev": true
},
"p-is-promise": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz",
- "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz",
+ "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==",
"dev": true
},
"p-limit": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
- "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz",
+ "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==",
"dev": true,
"requires": {
- "p-try": "^1.0.0"
+ "p-try": "^2.0.0"
}
},
"p-locate": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
- "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
"dev": true,
"requires": {
- "p-limit": "^1.1.0"
+ "p-limit": "^2.0.0"
}
},
"p-try": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
- "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
"dev": true
},
"parent-module": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.0.tgz",
- "integrity": "sha512-8Mf5juOMmiE4FcmzYc4IaiS9L3+9paz2KOiXzkRviCP6aDmN49Hz6EMWz0lGNp9pX80GvvAuLADtyGfW/Em3TA==",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
"dev": true,
"requires": {
"callsites": "^3.0.0"
}
},
"parse-json": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
- "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
+ "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
"dev": true,
"requires": {
- "error-ex": "^1.2.0"
+ "error-ex": "^1.3.1",
+ "json-parse-better-errors": "^1.0.1"
}
},
"parse5": {
@@ -2691,12 +2593,6 @@
"integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==",
"dev": true
},
- "pascalcase": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
- "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
- "dev": true
- },
"path-exists": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
@@ -2709,12 +2605,6 @@
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
"dev": true
},
- "path-is-inside": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
- "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
- "dev": true
- },
"path-key": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
@@ -2728,12 +2618,20 @@
"dev": true
},
"path-type": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
- "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
+ "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
"dev": true,
"requires": {
- "pify": "^2.0.0"
+ "pify": "^3.0.0"
+ },
+ "dependencies": {
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "dev": true
+ }
}
},
"pend": {
@@ -2749,15 +2647,15 @@
"dev": true
},
"pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
+ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
"dev": true
},
"pirates": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.0.tgz",
- "integrity": "sha512-8t5BsXy1LUIjn3WWOlOuFDuKswhQb/tkak641lvBgmPOBUQHXveORtlMCp6OdPV1dtuTaEahKA8VNz6uLfKBtA==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz",
+ "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==",
"dev": true,
"requires": {
"node-modules-regexp": "^1.0.0"
@@ -2770,26 +2668,59 @@
"dev": true,
"requires": {
"find-up": "^2.1.0"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+ "dev": true,
+ "requires": {
+ "locate-path": "^2.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+ "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+ "dev": true,
+ "requires": {
+ "p-locate": "^2.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "p-limit": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
+ "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+ "dev": true,
+ "requires": {
+ "p-try": "^1.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+ "dev": true,
+ "requires": {
+ "p-limit": "^1.1.0"
+ }
+ },
+ "p-try": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
+ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+ "dev": true
+ }
}
},
- "pluralize": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz",
- "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==",
- "dev": true
- },
"pn": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz",
"integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==",
"dev": true
},
- "posix-character-classes": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
- "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
- "dev": true
- },
"prelude-ls": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
@@ -2797,9 +2728,9 @@
"dev": true
},
"process-nextick-args": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
- "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
"dev": true
},
"progress": {
@@ -2821,9 +2752,9 @@
"dev": true
},
"psl": {
- "version": "1.1.31",
- "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz",
- "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==",
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/psl/-/psl-1.3.0.tgz",
+ "integrity": "sha512-avHdspHO+9rQTLbv1RO+MPYeP/SzsCoxofjVnHanETfQhTJrmB0HlDoW+EiN/R+C0BZ+gERab9NY0lPN2TxNag==",
"dev": true
},
"pump": {
@@ -2843,9 +2774,9 @@
"dev": true
},
"puppeteer": {
- "version": "1.13.0",
- "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-1.13.0.tgz",
- "integrity": "sha512-LUXgvhjfB/P6IOUDAKxOcbCz9ISwBLL9UpKghYrcBDwrOGx1m60y0iN2M64mdAUbT4+7oZM5DTxOW7equa2fxQ==",
+ "version": "1.18.1",
+ "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-1.18.1.tgz",
+ "integrity": "sha512-luUy0HPSuWPsPZ1wAp6NinE0zgetWtudf5zwZ6dHjMWfYpTQcmKveFRox7VBNhQ98OjNA9PQ9PzQyX8k/KrxTg==",
"dev": true,
"requires": {
"debug": "^4.1.0",
@@ -2856,6 +2787,17 @@
"proxy-from-env": "^1.0.0",
"rimraf": "^2.6.1",
"ws": "^6.1.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ }
}
},
"qs": {
@@ -2865,45 +2807,47 @@
"dev": true
},
"read-pkg": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
- "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
+ "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
"dev": true,
"requires": {
- "load-json-file": "^2.0.0",
+ "load-json-file": "^4.0.0",
"normalize-package-data": "^2.3.2",
- "path-type": "^2.0.0"
+ "path-type": "^3.0.0"
}
},
"read-pkg-up": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
- "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz",
+ "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==",
"dev": true,
"requires": {
- "find-up": "^2.0.0",
- "read-pkg": "^2.0.0"
+ "find-up": "^3.0.0",
+ "read-pkg": "^3.0.0"
}
},
"readable-stream": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.1.1.tgz",
- "integrity": "sha512-DkN66hPyqDhnIQ6Jcsvx9bFjhw214O4poMBcIMgPVpQvNy9a0e0Uhg5SqySyDKAmUlwt8LonTBz1ezOnM8pUdA==",
- "dev": true,
- "requires": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- }
- },
- "regex-not": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
- "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
- "dev": true,
- "requires": {
- "extend-shallow": "^3.0.2",
- "safe-regex": "^1.1.0"
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ },
+ "dependencies": {
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true
+ }
}
},
"regexpp": {
@@ -2912,18 +2856,6 @@
"integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==",
"dev": true
},
- "repeat-element": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz",
- "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==",
- "dev": true
- },
- "repeat-string": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
- "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
- "dev": true
- },
"request": {
"version": "2.88.0",
"resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
@@ -2950,26 +2882,56 @@
"tough-cookie": "~2.4.3",
"tunnel-agent": "^0.6.0",
"uuid": "^3.3.2"
+ },
+ "dependencies": {
+ "punycode": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
+ "dev": true
+ },
+ "tough-cookie": {
+ "version": "2.4.3",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
+ "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
+ "dev": true,
+ "requires": {
+ "psl": "^1.1.24",
+ "punycode": "^1.4.1"
+ }
+ }
}
},
"request-promise-core": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.1.tgz",
- "integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=",
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz",
+ "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==",
"dev": true,
"requires": {
- "lodash": "^4.13.1"
+ "lodash": "^4.17.11"
}
},
"request-promise-native": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.5.tgz",
- "integrity": "sha1-UoF3D2jgyXGeUWP9P6tIIhX0/aU=",
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz",
+ "integrity": "sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==",
"dev": true,
"requires": {
- "request-promise-core": "1.1.1",
- "stealthy-require": "^1.1.0",
- "tough-cookie": ">=2.3.3"
+ "request-promise-core": "1.1.2",
+ "stealthy-require": "^1.1.1",
+ "tough-cookie": "^2.3.3"
+ },
+ "dependencies": {
+ "tough-cookie": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
+ "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
+ "dev": true,
+ "requires": {
+ "psl": "^1.1.28",
+ "punycode": "^2.1.1"
+ }
+ }
}
},
"require-directory": {
@@ -2979,15 +2941,15 @@
"dev": true
},
"require-main-filename": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
- "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
+ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
"dev": true
},
"resolve": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz",
- "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==",
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz",
+ "integrity": "sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==",
"dev": true,
"requires": {
"path-parse": "^1.0.6"
@@ -2999,12 +2961,6 @@
"integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
"dev": true
},
- "resolve-url": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
- "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
- "dev": true
- },
"restore-cursor": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
@@ -3015,12 +2971,6 @@
"signal-exit": "^3.0.2"
}
},
- "ret": {
- "version": "0.1.15",
- "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
- "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
- "dev": true
- },
"rimraf": {
"version": "2.6.3",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
@@ -3031,73 +2981,67 @@
}
},
"rollup": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.1.2.tgz",
- "integrity": "sha512-OkdMxqMl8pWoQc5D8y1cIinYQPPLV8ZkfLgCzL6SytXeNA2P7UHynEQXI9tYxuAjAMsSyvRaWnyJDLHMxq0XAg==",
+ "version": "1.16.6",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.16.6.tgz",
+ "integrity": "sha512-oM3iKkzPCq9Da95wCnNfS8YlNZjgCD5c/TceKnJIthI9FOeJqnO3PUr/C5Suv9Kjzh0iphKL02PLeja3A5AMIA==",
"dev": true,
"requires": {
"@types/estree": "0.0.39",
- "@types/node": "*",
- "acorn": "^6.0.5"
+ "@types/node": "^12.0.10",
+ "acorn": "^6.1.1"
+ },
+ "dependencies": {
+ "@types/node": {
+ "version": "12.0.12",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-12.0.12.tgz",
+ "integrity": "sha512-Uy0PN4R5vgBUXFoJrKryf5aTk3kJ8Rv3PdlHjl6UaX+Cqp1QE0yPQ68MPXGrZOfG7gZVNDIJZYyot0B9ubXUrQ==",
+ "dev": true
+ }
}
},
"rollup-plugin-commonjs": {
- "version": "9.2.0",
- "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-9.2.0.tgz",
- "integrity": "sha512-0RM5U4Vd6iHjL6rLvr3lKBwnPsaVml+qxOGaaNUWN1lSq6S33KhITOfHmvxV3z2vy9Mk4t0g4rNlVaJJsNQPWA==",
+ "version": "10.0.1",
+ "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.0.1.tgz",
+ "integrity": "sha512-x0PcCVdEc4J8igv1qe2vttz8JKAKcTs3wfIA3L8xEty3VzxgORLrzZrNWaVMc+pBC4U3aDOb9BnWLAQ8J11vkA==",
"dev": true,
"requires": {
- "estree-walker": "^0.5.2",
- "magic-string": "^0.25.1",
- "resolve": "^1.8.1",
- "rollup-pluginutils": "^2.3.3"
- },
- "dependencies": {
- "estree-walker": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.5.2.tgz",
- "integrity": "sha512-XpCnW/AE10ws/kDAs37cngSkvgIR8aN3G0MS85m7dUpuK2EREo9VJ00uvw6Dg/hXEpfsE1I1TvJOJr+Z+TL+ig==",
- "dev": true
- }
+ "estree-walker": "^0.6.1",
+ "is-reference": "^1.1.2",
+ "magic-string": "^0.25.2",
+ "resolve": "^1.11.0",
+ "rollup-pluginutils": "^2.8.1"
}
},
"rollup-plugin-json": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/rollup-plugin-json/-/rollup-plugin-json-3.1.0.tgz",
- "integrity": "sha512-BlYk5VspvGpjz7lAwArVzBXR60JK+4EKtPkCHouAWg39obk9S61hZYJDBfMK+oitPdoe11i69TlxKlMQNFC/Uw==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/rollup-plugin-json/-/rollup-plugin-json-4.0.0.tgz",
+ "integrity": "sha512-hgb8N7Cgfw5SZAkb3jf0QXii6QX/FOkiIq2M7BAQIEydjHvTyxXHQiIzZaTFgx1GK0cRCHOCBHIyEkkLdWKxow==",
"dev": true,
"requires": {
- "rollup-pluginutils": "^2.3.1"
+ "rollup-pluginutils": "^2.5.0"
}
},
"rollup-plugin-node-resolve": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-4.0.0.tgz",
- "integrity": "sha512-7Ni+/M5RPSUBfUaP9alwYQiIKnKeXCOHiqBpKUl9kwp3jX5ZJtgXAait1cne6pGEVUUztPD6skIKH9Kq9sNtfw==",
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz",
+ "integrity": "sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw==",
"dev": true,
"requires": {
- "builtin-modules": "^3.0.0",
+ "@types/resolve": "0.0.8",
+ "builtin-modules": "^3.1.0",
"is-module": "^1.0.0",
- "resolve": "^1.8.1"
- },
- "dependencies": {
- "builtin-modules": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.0.0.tgz",
- "integrity": "sha512-hMIeU4K2ilbXV6Uv93ZZ0Avg/M91RaKXucQ+4me2Do1txxBDyDZWCBa5bJSLqoNTRpXTLwEzIk1KmloenDDjhg==",
- "dev": true
- }
+ "resolve": "^1.11.1",
+ "rollup-pluginutils": "^2.8.1"
}
},
"rollup-plugin-replace": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/rollup-plugin-replace/-/rollup-plugin-replace-2.1.0.tgz",
- "integrity": "sha512-SxrAIgpH/B5/W4SeULgreOemxcpEgKs2gcD42zXw50bhqGWmcnlXneVInQpAqzA/cIly4bJrOpeelmB9p4YXSQ==",
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/rollup-plugin-replace/-/rollup-plugin-replace-2.2.0.tgz",
+ "integrity": "sha512-/5bxtUPkDHyBJAKketb4NfaeZjL5yLZdeUihSfbF2PQMz+rSTEb8ARKoOl3UBT4m7/X+QOXJo3sLTcq+yMMYTA==",
"dev": true,
"requires": {
- "magic-string": "^0.25.1",
- "minimatch": "^3.0.2",
- "rollup-pluginutils": "^2.0.1"
+ "magic-string": "^0.25.2",
+ "rollup-pluginutils": "^2.6.0"
}
},
"rollup-plugin-sucrase": {
@@ -3111,13 +3055,13 @@
}
},
"rollup-plugin-typescript": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/rollup-plugin-typescript/-/rollup-plugin-typescript-1.0.0.tgz",
- "integrity": "sha512-d2KDNMJXgaaB//dDGd/YmyMiopt1Pz965Iu3zmEoL08YqNcKRBz26uHqqc47rFGfrJV5kFqifC9IYlh6dpSCLg==",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/rollup-plugin-typescript/-/rollup-plugin-typescript-1.0.1.tgz",
+ "integrity": "sha512-rwJDNn9jv/NsKZuyBb/h0jsclP4CJ58qbvZt2Q9zDIGILF2LtdtvCqMOL+Gq9IVq5MTrTlHZNrn8h7VjQgd8tw==",
"dev": true,
"requires": {
- "resolve": "^1.8.1",
- "rollup-pluginutils": "^2.3.1"
+ "resolve": "^1.10.0",
+ "rollup-pluginutils": "^2.5.0"
}
},
"rollup-plugin-virtual": {
@@ -3127,304 +3071,12 @@
"dev": true
},
"rollup-pluginutils": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.4.1.tgz",
- "integrity": "sha512-wesMQ9/172IJDIW/lYWm0vW0LiKe5Ekjws481R7z9WTRtmO59cqyM/2uUlxvf6yzm/fElFmHUobeQOYz46dZJw==",
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.1.tgz",
+ "integrity": "sha512-J5oAoysWar6GuZo0s+3bZ6sVZAC0pfqKz68De7ZgDi5z63jOVZn1uJL/+z1jeKHNbGII8kAyHF5q8LnxSX5lQg==",
"dev": true,
"requires": {
- "estree-walker": "^0.6.0",
- "micromatch": "^3.1.10"
- },
- "dependencies": {
- "arr-diff": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
- "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
- "dev": true
- },
- "array-unique": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
- "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
- "dev": true
- },
- "braces": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
- "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
- "dev": true,
- "requires": {
- "arr-flatten": "^1.1.0",
- "array-unique": "^0.3.2",
- "extend-shallow": "^2.0.1",
- "fill-range": "^4.0.0",
- "isobject": "^3.0.1",
- "repeat-element": "^1.1.2",
- "snapdragon": "^0.8.1",
- "snapdragon-node": "^2.0.1",
- "split-string": "^3.0.2",
- "to-regex": "^3.0.1"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
- }
- },
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "requires": {
- "ms": "2.0.0"
- }
- },
- "expand-brackets": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
- "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
- "dev": true,
- "requires": {
- "debug": "^2.3.3",
- "define-property": "^0.2.5",
- "extend-shallow": "^2.0.1",
- "posix-character-classes": "^0.1.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- },
- "dependencies": {
- "define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- },
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- },
- "is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- }
- },
- "kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "dev": true
- }
- }
- },
- "extglob": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
- "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
- "dev": true,
- "requires": {
- "array-unique": "^0.3.2",
- "define-property": "^1.0.0",
- "expand-brackets": "^2.1.4",
- "extend-shallow": "^2.0.1",
- "fragment-cache": "^0.2.1",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- },
- "dependencies": {
- "define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
- "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^1.0.0"
- }
- },
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
- }
- },
- "fill-range": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
- "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
- "dev": true,
- "requires": {
- "extend-shallow": "^2.0.1",
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1",
- "to-regex-range": "^2.1.0"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
- }
- },
- "is-accessor-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
- "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-data-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
- "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-descriptor": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
- "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
- }
- },
- "is-number": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
- "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "isobject": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
- "dev": true
- },
- "kind-of": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
- "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
- "dev": true
- },
- "micromatch": {
- "version": "3.1.10",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
- "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
- "dev": true,
- "requires": {
- "arr-diff": "^4.0.0",
- "array-unique": "^0.3.2",
- "braces": "^2.3.1",
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "extglob": "^2.0.4",
- "fragment-cache": "^0.2.1",
- "kind-of": "^6.0.2",
- "nanomatch": "^1.2.9",
- "object.pick": "^1.3.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.2"
- }
- },
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
- "dev": true
- }
+ "estree-walker": "^0.6.1"
}
},
"run-async": {
@@ -3437,9 +3089,9 @@
}
},
"rxjs": {
- "version": "6.3.3",
- "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.3.3.tgz",
- "integrity": "sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw==",
+ "version": "6.5.2",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.2.tgz",
+ "integrity": "sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg==",
"dev": true,
"requires": {
"tslib": "^1.9.0"
@@ -3451,15 +3103,6 @@
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
"dev": true
},
- "safe-regex": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
- "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
- "dev": true,
- "requires": {
- "ret": "~0.1.10"
- }
- },
"safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
@@ -3467,18 +3110,18 @@
"dev": true
},
"saxes": {
- "version": "3.1.6",
- "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.6.tgz",
- "integrity": "sha512-LAYs+lChg1v5uKNzPtsgTxSS5hLo8aIhSMCJt1WMpefAxm3D1RTpMwSpb6ebdL31cubiLTnhokVktBW+cv9Y9w==",
+ "version": "3.1.11",
+ "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz",
+ "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==",
"dev": true,
"requires": {
- "xmlchars": "^1.3.1"
+ "xmlchars": "^2.1.1"
}
},
"semver": {
- "version": "5.6.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz",
- "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==",
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz",
+ "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==",
"dev": true
},
"set-blocking": {
@@ -3487,29 +3130,6 @@
"integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
"dev": true
},
- "set-value": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz",
- "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==",
- "dev": true,
- "requires": {
- "extend-shallow": "^2.0.1",
- "is-extendable": "^0.1.1",
- "is-plain-object": "^2.0.3",
- "split-string": "^3.0.1"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
- }
- },
"shebang-command": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
@@ -3532,9 +3152,9 @@
"dev": true
},
"slice-ansi": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.0.0.tgz",
- "integrity": "sha512-4j2WTWjp3GsZ+AOagyzVbzp4vWGtZ0hEZ/gDY/uTvm6MTxUfTUIsnMIFb1bn8o0RuXiqUw15H1bue8f22Vw2oQ==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz",
+ "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
"dev": true,
"requires": {
"ansi-styles": "^3.2.0",
@@ -3542,174 +3162,26 @@
"is-fullwidth-code-point": "^2.0.0"
}
},
- "snapdragon": {
- "version": "0.8.2",
- "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
- "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
- "dev": true,
- "requires": {
- "base": "^0.11.1",
- "debug": "^2.2.0",
- "define-property": "^0.2.5",
- "extend-shallow": "^2.0.1",
- "map-cache": "^0.2.2",
- "source-map": "^0.5.6",
- "source-map-resolve": "^0.5.0",
- "use": "^3.1.0"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "requires": {
- "ms": "2.0.0"
- }
- },
- "define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- },
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- },
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
- "dev": true
- },
- "source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
- "dev": true
- }
- }
- },
- "snapdragon-node": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
- "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
- "dev": true,
- "requires": {
- "define-property": "^1.0.0",
- "isobject": "^3.0.0",
- "snapdragon-util": "^3.0.1"
- },
- "dependencies": {
- "define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
- "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^1.0.0"
- }
- },
- "is-accessor-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
- "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-data-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
- "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-descriptor": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
- "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
- }
- },
- "isobject": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
- "dev": true
- },
- "kind-of": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
- "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
- "dev": true
- }
- }
- },
- "snapdragon-util": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
- "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
- "dev": true,
- "requires": {
- "kind-of": "^3.2.0"
- }
- },
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true
},
- "source-map-resolve": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz",
- "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==",
- "dev": true,
- "requires": {
- "atob": "^2.1.1",
- "decode-uri-component": "^0.2.0",
- "resolve-url": "^0.2.1",
- "source-map-url": "^0.4.0",
- "urix": "^0.1.0"
- }
- },
"source-map-support": {
- "version": "0.5.10",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.10.tgz",
- "integrity": "sha512-YfQ3tQFTK/yzlGJuX8pTwa4tifQj4QS2Mj7UegOu8jAz59MqIiMGPXxQhVQiIMNzayuUSF/jEuVnfFF5JqybmQ==",
+ "version": "0.5.12",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz",
+ "integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==",
"dev": true,
"requires": {
"buffer-from": "^1.0.0",
"source-map": "^0.6.0"
}
},
- "source-map-url": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz",
- "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=",
- "dev": true
- },
"sourcemap-codec": {
- "version": "1.4.4",
- "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.4.tgz",
- "integrity": "sha512-CYAPYdBu34781kLHkaW3m6b/uUSyMOC2R61gcYMWooeuaGtjof86ZA/8T+qVPPt7np1085CR9hmMGrySwEc8Xg==",
+ "version": "1.4.6",
+ "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.6.tgz",
+ "integrity": "sha512-1ZooVLYFxC448piVLBbtOxFcXwnymH9oUF8nRd3CuYDVvkRBxRl6pB4Mtas5a4drtL+E8LDgFkQNcgIw6tc8Hg==",
"dev": true
},
"spdx-correct": {
@@ -3739,20 +3211,11 @@
}
},
"spdx-license-ids": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.3.tgz",
- "integrity": "sha512-uBIcIl3Ih6Phe3XHK1NqboJLdGfwr1UN3k6wSD1dZpmPsIkb8AGNbZYJ1fOBk834+Gxy8rpfDxrS6XLEMZMY2g==",
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz",
+ "integrity": "sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA==",
"dev": true
},
- "split-string": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
- "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
- "dev": true,
- "requires": {
- "extend-shallow": "^3.0.0"
- }
- },
"sprintf-js": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
@@ -3760,9 +3223,9 @@
"dev": true
},
"sshpk": {
- "version": "1.16.0",
- "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.0.tgz",
- "integrity": "sha512-Zhev35/y7hRMcID/upReIvRse+I9SVhyVre/KTJSJQWMz3C3+G+HpO7m1wK/yckEtujKZ7dS4hkVxAnmHaIGVQ==",
+ "version": "1.16.1",
+ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
+ "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
"dev": true,
"requires": {
"asn1": "~0.2.3",
@@ -3776,27 +3239,6 @@
"tweetnacl": "~0.14.0"
}
},
- "static-extend": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
- "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
- "dev": true,
- "requires": {
- "define-property": "^0.2.5",
- "object-copy": "^0.1.0"
- },
- "dependencies": {
- "define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- }
- }
- },
"stealthy-require": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz",
@@ -3804,31 +3246,40 @@
"dev": true
},
"string-width": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
- "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
"dev": true,
"requires": {
+ "emoji-regex": "^7.0.1",
"is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^4.0.0"
+ "strip-ansi": "^5.1.0"
}
},
"string_decoder": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.2.0.tgz",
- "integrity": "sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"dev": true,
"requires": {
"safe-buffer": "~5.1.0"
+ },
+ "dependencies": {
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true
+ }
}
},
"strip-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
- "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
"dev": true,
"requires": {
- "ansi-regex": "^3.0.0"
+ "ansi-regex": "^4.1.0"
}
},
"strip-bom": {
@@ -3844,171 +3295,71 @@
"dev": true
},
"strip-json-comments": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
- "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz",
+ "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==",
"dev": true
},
"sucrase": {
- "version": "3.9.5",
- "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.9.5.tgz",
- "integrity": "sha512-gvNjd3PJ0WAXxWUAQzCw/nlG4J5a2j7q8jN+sX8Fwe3ryIsl9UrEcWPxWoEzBPrj3Fias4U05iN84m4/IFQLdw==",
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.10.1.tgz",
+ "integrity": "sha512-nMOs6rFWwkYRxcKHHDjyQmC5CmLbHN2LwRyWF1n2i0kb/pq0xcB9M19TdY5Ivfcj1BsWfs+az9Ga5B0tFdE5ww==",
"dev": true,
"requires": {
"commander": "^2.19.0",
"lines-and-columns": "^1.1.6",
"mz": "^2.7.0",
"pirates": "^4.0.0"
- },
- "dependencies": {
- "commander": {
- "version": "2.19.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz",
- "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==",
- "dev": true
- }
}
},
"supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
+ "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
"dev": true,
"requires": {
"has-flag": "^3.0.0"
}
},
"symbol-tree": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz",
- "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=",
- "dev": true
- },
- "table": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/table/-/table-5.2.1.tgz",
- "integrity": "sha512-qmhNs2GEHNqY5fd2Mo+8N1r2sw/rvTAAvBZTaTx+Y7PHLypqyrxr1MdIu0pLw6Xvl/Gi4ONu/sdceP8vvUjkyA==",
- "dev": true,
- "requires": {
- "ajv": "^6.6.1",
- "lodash": "^4.17.11",
- "slice-ansi": "2.0.0",
- "string-width": "^2.1.1"
- }
- },
- "test-exclude": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.0.0.tgz",
- "integrity": "sha512-bO3Lj5+qFa9YLfYW2ZcXMOV1pmQvw+KS/DpjqhyX6Y6UZ8zstpZJ+mA2ERkXfpOqhxsJlQiLeVXD3Smsrs6oLw==",
- "dev": true,
- "requires": {
- "arrify": "^1.0.1",
- "minimatch": "^3.0.4",
- "read-pkg-up": "^4.0.0",
- "require-main-filename": "^1.0.1"
- },
- "dependencies": {
- "find-up": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
- "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
- "dev": true,
- "requires": {
- "locate-path": "^3.0.0"
- }
- },
- "load-json-file": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
- "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "parse-json": "^4.0.0",
- "pify": "^3.0.0",
- "strip-bom": "^3.0.0"
- }
- },
- "locate-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
- "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
- "dev": true,
- "requires": {
- "p-locate": "^3.0.0",
- "path-exists": "^3.0.0"
- }
- },
- "p-limit": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz",
- "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==",
- "dev": true,
- "requires": {
- "p-try": "^2.0.0"
- }
- },
- "p-locate": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
- "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
- "dev": true,
- "requires": {
- "p-limit": "^2.0.0"
- }
- },
- "p-try": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz",
- "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==",
- "dev": true
- },
- "parse-json": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
- "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
- "dev": true,
- "requires": {
- "error-ex": "^1.3.1",
- "json-parse-better-errors": "^1.0.1"
- }
- },
- "path-type": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
- "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
- "dev": true,
- "requires": {
- "pify": "^3.0.0"
- }
- },
- "pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
- "dev": true
- },
- "read-pkg": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
- "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
- "dev": true,
- "requires": {
- "load-json-file": "^4.0.0",
- "normalize-package-data": "^2.3.2",
- "path-type": "^3.0.0"
- }
- },
- "read-pkg-up": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz",
- "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==",
- "dev": true,
- "requires": {
- "find-up": "^3.0.0",
- "read-pkg": "^3.0.0"
- }
- }
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
+ "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==",
+ "dev": true
+ },
+ "table": {
+ "version": "5.4.5",
+ "resolved": "https://registry.npmjs.org/table/-/table-5.4.5.tgz",
+ "integrity": "sha512-oGa2Hl7CQjfoaogtrOHEJroOcYILTx7BZWLGsJIlzoWmB2zmguhNfPJZsWPKYek/MgCxfco54gEi31d1uN2hFA==",
+ "dev": true,
+ "requires": {
+ "ajv": "^6.10.2",
+ "lodash": "^4.17.14",
+ "slice-ansi": "^2.1.0",
+ "string-width": "^3.0.0"
+ }
+ },
+ "teeny-request": {
+ "version": "3.11.3",
+ "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-3.11.3.tgz",
+ "integrity": "sha512-CKncqSF7sH6p4rzCgkb/z/Pcos5efl0DmolzvlqRQUNcpRIruOhY9+T1FsIlyEbfWd7MsFpodROOwHYh2BaXzw==",
+ "dev": true,
+ "requires": {
+ "https-proxy-agent": "^2.2.1",
+ "node-fetch": "^2.2.0",
+ "uuid": "^3.3.2"
+ }
+ },
+ "test-exclude": {
+ "version": "5.2.3",
+ "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz",
+ "integrity": "sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==",
+ "dev": true,
+ "requires": {
+ "glob": "^7.1.3",
+ "minimatch": "^3.0.4",
+ "read-pkg-up": "^4.0.0",
+ "require-main-filename": "^2.0.0"
}
},
"text-table": {
@@ -4060,64 +3411,15 @@
"os-tmpdir": "~1.0.2"
}
},
- "to-object-path": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
- "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- }
- },
- "to-regex": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
- "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
- "dev": true,
- "requires": {
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "regex-not": "^1.0.2",
- "safe-regex": "^1.1.0"
- }
- },
- "to-regex-range": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
- "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
- "dev": true,
- "requires": {
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1"
- },
- "dependencies": {
- "is-number": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
- "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- }
- }
- }
- },
"tough-cookie": {
- "version": "2.4.3",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
- "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz",
+ "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==",
"dev": true,
"requires": {
- "psl": "^1.1.24",
- "punycode": "^1.4.1"
- },
- "dependencies": {
- "punycode": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
- "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
- "dev": true
- }
+ "ip-regex": "^2.1.0",
+ "psl": "^1.1.28",
+ "punycode": "^2.1.1"
}
},
"tr46": {
@@ -4129,25 +3431,21 @@
"punycode": "^2.1.0"
}
},
- "ts-node": {
- "version": "8.0.2",
- "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.0.2.tgz",
- "integrity": "sha512-MosTrinKmaAcWgO8tqMjMJB22h+sp3Rd1i4fdoWY4mhBDekOwIAKI/bzmRi7IcbCmjquccYg2gcF6NBkLgr0Tw==",
+ "tslib": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz",
+ "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==",
+ "dev": true
+ },
+ "tsutils": {
+ "version": "3.14.0",
+ "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.14.0.tgz",
+ "integrity": "sha512-SmzGbB0l+8I0QwsPgjooFRaRvHLBLNYM8SeQ0k6rtNDru5sCGeLJcZdwilNndN+GysuFjF5EIYgN8GfFG6UeUw==",
"dev": true,
"requires": {
- "arg": "^4.1.0",
- "diff": "^3.1.0",
- "make-error": "^1.1.1",
- "source-map-support": "^0.5.6",
- "yn": "^3.0.0"
+ "tslib": "^1.8.1"
}
},
- "tslib": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz",
- "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==",
- "dev": true
- },
"tunnel-agent": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
@@ -4179,110 +3477,20 @@
"dev": true
},
"typescript": {
- "version": "3.2.4",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.2.4.tgz",
- "integrity": "sha512-0RNDbSdEokBeEAkgNbxJ+BLwSManFy9TeXz8uW+48j/xhEXv1ePME60olyzw2XzUqUBNAYFeJadIqAgNqIACwg==",
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.2.tgz",
+ "integrity": "sha512-7KxJovlYhTX5RaRbUdkAXN1KUZ8PwWlTzQdHV6xNqvuFOs7+WBo10TQUqT19Q/Jz2hk5v9TQDIhyLhhJY4p5AA==",
"dev": true
},
"uglify-js": {
- "version": "3.5.12",
- "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.5.12.tgz",
- "integrity": "sha512-KeQesOpPiZNgVwJj8Ge3P4JYbQHUdZzpx6Fahy6eKAYRSV4zhVmLXoC+JtOeYxcHCHTve8RG1ZGdTvpeOUM26Q==",
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.0.tgz",
+ "integrity": "sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg==",
"dev": true,
"optional": true,
"requires": {
"commander": "~2.20.0",
"source-map": "~0.6.1"
- },
- "dependencies": {
- "commander": {
- "version": "2.20.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz",
- "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==",
- "dev": true,
- "optional": true
- }
- }
- },
- "union-value": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz",
- "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=",
- "dev": true,
- "requires": {
- "arr-union": "^3.1.0",
- "get-value": "^2.0.6",
- "is-extendable": "^0.1.1",
- "set-value": "^0.4.3"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- },
- "set-value": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz",
- "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=",
- "dev": true,
- "requires": {
- "extend-shallow": "^2.0.1",
- "is-extendable": "^0.1.1",
- "is-plain-object": "^2.0.1",
- "to-object-path": "^0.3.0"
- }
- }
- }
- },
- "unset-value": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
- "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
- "dev": true,
- "requires": {
- "has-value": "^0.3.1",
- "isobject": "^3.0.0"
- },
- "dependencies": {
- "has-value": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
- "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
- "dev": true,
- "requires": {
- "get-value": "^2.0.3",
- "has-values": "^0.1.4",
- "isobject": "^2.0.0"
- },
- "dependencies": {
- "isobject": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
- "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
- "dev": true,
- "requires": {
- "isarray": "1.0.0"
- }
- }
- }
- },
- "has-values": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
- "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=",
- "dev": true
- },
- "isobject": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
- "dev": true
- }
}
},
"uri-js": {
@@ -4294,24 +3502,12 @@
"punycode": "^2.1.0"
}
},
- "urix": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
- "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
- "dev": true
- },
"urlgrey": {
"version": "0.4.4",
"resolved": "https://registry.npmjs.org/urlgrey/-/urlgrey-0.4.4.tgz",
"integrity": "sha1-iS/pWWCAXoVRnxzUOJ8stMu3ZS8=",
"dev": true
},
- "use": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
- "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
- "dev": true
- },
"util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
@@ -4324,12 +3520,31 @@
"integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==",
"dev": true
},
- "v8-to-istanbul": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-2.0.2.tgz",
- "integrity": "sha512-39Z8JhWATTDDHlTEbSOv/G4j4xFWJy7ESMhfCLoj6IEd6yu4DOaexdTW89GTqE29d51PyH2lSS12c2HJhlRd1A==",
+ "v8-compile-cache": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz",
+ "integrity": "sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w==",
"dev": true
},
+ "v8-to-istanbul": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-3.2.3.tgz",
+ "integrity": "sha512-B8d/oxMtc/x0TYXr9b+Ywu5KexA/on4QMQ9M1kTYnoGZzKdo8LLk9ySlWePdDOtr2G0/2Injgcp3sOR9gU+3vQ==",
+ "dev": true,
+ "requires": {
+ "@types/istanbul-lib-coverage": "^2.0.1",
+ "convert-source-map": "^1.6.0",
+ "source-map": "^0.7.3"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.7.3",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
+ "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
+ "dev": true
+ }
+ }
+ },
"validate-npm-package-license": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
@@ -4360,6 +3575,17 @@
"browser-process-hrtime": "^0.1.2"
}
},
+ "w3c-xmlserializer": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz",
+ "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==",
+ "dev": true,
+ "requires": {
+ "domexception": "^1.0.1",
+ "webidl-conversions": "^4.0.2",
+ "xml-name-validator": "^3.0.0"
+ }
+ },
"webidl-conversions": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
@@ -4407,59 +3633,59 @@
"integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
"dev": true
},
- "wordwrap": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
- "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
- "dev": true
- },
- "wrap-ansi": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
- "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
+ "wide-align": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
+ "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
"dev": true,
"requires": {
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1"
+ "string-width": "^1.0.2 || 2"
},
"dependencies": {
"ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
"dev": true
},
- "is-fullwidth-code-point": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
- "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
- "dev": true,
- "requires": {
- "number-is-nan": "^1.0.0"
- }
- },
"string-width": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
- "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
"dev": true,
"requires": {
- "code-point-at": "^1.0.0",
- "is-fullwidth-code-point": "^1.0.0",
- "strip-ansi": "^3.0.0"
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
}
},
"strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
"dev": true,
"requires": {
- "ansi-regex": "^2.0.0"
+ "ansi-regex": "^3.0.0"
}
}
}
},
+ "wordwrap": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
+ "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=",
+ "dev": true
+ },
+ "wrap-ansi": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
+ "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.0",
+ "string-width": "^3.0.0",
+ "strip-ansi": "^5.0.0"
+ }
+ },
"wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
@@ -4467,18 +3693,18 @@
"dev": true
},
"write": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz",
- "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=",
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz",
+ "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==",
"dev": true,
"requires": {
"mkdirp": "^0.5.1"
}
},
"ws": {
- "version": "6.1.3",
- "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.3.tgz",
- "integrity": "sha512-tbSxiT+qJI223AP4iLfQbkbxkwdFcneYinM2+x46Gx2wgvbaOMO36czfdfVUBRTHvzAMRhDd98sA5d/BuWbQdg==",
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz",
+ "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==",
"dev": true,
"requires": {
"async-limiter": "~1.0.0"
@@ -4491,9 +3717,9 @@
"dev": true
},
"xmlchars": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-1.3.1.tgz",
- "integrity": "sha512-tGkGJkN8XqCod7OT+EvGYK5Z4SfDQGD30zAa58OcnAa0RRWgzUEK72tkXhsX1FZd+rgnhRxFtmO+ihkp8LHSkw==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.1.1.tgz",
+ "integrity": "sha512-7hew1RPJ1iIuje/Y01bGD/mXokXxegAgVS+e+E0wSi2ILHQkYAH1+JXARwTjZSM4Z4Z+c73aKspEcqj+zPPL/w==",
"dev": true
},
"y18n": {
@@ -4509,73 +3735,178 @@
"dev": true
},
"yargs": {
- "version": "12.0.5",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz",
- "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==",
+ "version": "13.2.4",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.4.tgz",
+ "integrity": "sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg==",
"dev": true,
"requires": {
- "cliui": "^4.0.0",
- "decamelize": "^1.2.0",
+ "cliui": "^5.0.0",
"find-up": "^3.0.0",
- "get-caller-file": "^1.0.1",
- "os-locale": "^3.0.0",
+ "get-caller-file": "^2.0.1",
+ "os-locale": "^3.1.0",
"require-directory": "^2.1.1",
- "require-main-filename": "^1.0.1",
+ "require-main-filename": "^2.0.0",
"set-blocking": "^2.0.0",
- "string-width": "^2.0.0",
+ "string-width": "^3.0.0",
"which-module": "^2.0.0",
- "y18n": "^3.2.1 || ^4.0.0",
- "yargs-parser": "^11.1.1"
+ "y18n": "^4.0.0",
+ "yargs-parser": "^13.1.0"
+ },
+ "dependencies": {
+ "yargs-parser": {
+ "version": "13.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz",
+ "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==",
+ "dev": true,
+ "requires": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ }
+ }
+ }
+ },
+ "yargs-parser": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz",
+ "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==",
+ "dev": true,
+ "requires": {
+ "camelcase": "^4.1.0"
},
"dependencies": {
"camelcase": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz",
- "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
+ "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
"dev": true
- },
- "find-up": {
+ }
+ }
+ },
+ "yargs-unparser": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.5.0.tgz",
+ "integrity": "sha512-HK25qidFTCVuj/D1VfNiEndpLIeJN78aqgR23nL3y4N0U/91cOAzqfHlF8n2BvoNDcZmJKin3ddNSvOxSr8flw==",
+ "dev": true,
+ "requires": {
+ "flat": "^4.1.0",
+ "lodash": "^4.17.11",
+ "yargs": "^12.0.5"
+ },
+ "dependencies": {
+ "ansi-regex": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
- "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "cliui": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz",
+ "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==",
"dev": true,
"requires": {
- "locate-path": "^3.0.0"
+ "string-width": "^2.1.1",
+ "strip-ansi": "^4.0.0",
+ "wrap-ansi": "^2.0.0"
}
},
- "locate-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
- "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "get-caller-file": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
+ "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==",
+ "dev": true
+ },
+ "require-main-filename": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
+ "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
+ "dev": true
+ },
+ "string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
"dev": true,
"requires": {
- "p-locate": "^3.0.0",
- "path-exists": "^3.0.0"
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
}
},
- "p-limit": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz",
- "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==",
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
"dev": true,
"requires": {
- "p-try": "^2.0.0"
+ "ansi-regex": "^3.0.0"
}
},
- "p-locate": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
- "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "wrap-ansi": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
+ "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
"dev": true,
"requires": {
- "p-limit": "^2.0.0"
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+ "dev": true,
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ }
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "dev": true,
+ "requires": {
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ }
}
},
- "p-try": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz",
- "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==",
- "dev": true
+ "yargs": {
+ "version": "12.0.5",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz",
+ "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==",
+ "dev": true,
+ "requires": {
+ "cliui": "^4.0.0",
+ "decamelize": "^1.2.0",
+ "find-up": "^3.0.0",
+ "get-caller-file": "^1.0.1",
+ "os-locale": "^3.0.0",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^1.0.1",
+ "set-blocking": "^2.0.0",
+ "string-width": "^2.0.0",
+ "which-module": "^2.0.0",
+ "y18n": "^3.2.1 || ^4.0.0",
+ "yargs-parser": "^11.1.1"
+ }
},
"yargs-parser": {
"version": "11.1.1",
@@ -4589,23 +3920,6 @@
}
}
},
- "yargs-parser": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz",
- "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==",
- "dev": true,
- "requires": {
- "camelcase": "^4.1.0"
- },
- "dependencies": {
- "camelcase": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
- "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
- "dev": true
- }
- }
- },
"yauzl": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz",
@@ -4614,18 +3928,6 @@
"requires": {
"fd-slicer": "~1.0.1"
}
- },
- "yn": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/yn/-/yn-3.0.0.tgz",
- "integrity": "sha512-+Wo/p5VRfxUgBUGy2j/6KX2mj9AYJWOHuhMjMcbBFc3y54o9/4buK1ksBvuiK01C3kby8DH9lSmJdSxw+4G/2Q==",
- "dev": true
- },
- "yootils": {
- "version": "0.0.15",
- "resolved": "https://registry.npmjs.org/yootils/-/yootils-0.0.15.tgz",
- "integrity": "sha512-GvGLuJ7XHJPGEUQ52vh8fh+vPjfikuGcu7yBswfrsNsHqnAoytOVuSb69eM0j8wQIjMz0U3kY3YsfwMhJgfG9w==",
- "dev": true
}
}
}
diff --git a/package.json b/package.json
index 12a5cac083..45abeeda37 100644
--- a/package.json
+++ b/package.json
@@ -1,38 +1,43 @@
{
"name": "svelte",
- "version": "3.4.1",
+ "version": "3.8.1",
"description": "Cybernetically enhanced web apps",
"module": "index.mjs",
"main": "index",
"files": [
- "compiler.js",
+ "types",
+ "compiler.*",
"register.js",
"index.*",
- "internal.*",
- "store.*",
- "animate.*",
- "transition.*",
- "easing.*",
- "motion.*",
+ "internal",
+ "store",
+ "animate",
+ "transition",
+ "easing",
+ "motion",
"svelte",
"README.md"
],
+ "engines": {
+ "node": ">= 8"
+ },
+ "types": "types/runtime/index.d.ts",
"scripts": {
"test": "mocha --opts mocha.opts",
- "test:unit": "mocha --require sucrase/register --recursive ./**/__test__.ts",
+ "test:unit": "mocha --require sucrase/register --recursive src/**/__test__.ts",
"quicktest": "mocha --opts mocha.opts",
"precoverage": "c8 mocha --opts mocha.coverage.opts",
"coverage": "c8 report --reporter=text-lcov > coverage.lcov && c8 report --reporter=html",
"codecov": "codecov",
"precodecov": "npm run coverage",
- "lint": "eslint src test/*.js",
- "build": "rollup -c",
- "prepare": "npm run build && npm run tsd",
+ "build": "rollup -c && npm run tsd",
+ "prepare": "npm run build",
"dev": "rollup -cw",
"pretest": "npm run build",
- "posttest": "agadoo src/internal/index.js",
- "prepublishOnly": "export PUBLISH=true && npm run lint && npm test",
- "tsd": "tsc -d src/store.ts --outDir ."
+ "posttest": "agadoo internal/index.mjs",
+ "prepublishOnly": "npm run lint && PUBLISH=true npm test",
+ "tsd": "tsc -p src/compiler --emitDeclarationOnly && tsc -p src/runtime --emitDeclarationOnly",
+ "lint": "eslint \"{src,test}/**/*.{ts,js}\""
},
"repository": {
"type": "git",
@@ -51,40 +56,40 @@
},
"homepage": "https://github.com/sveltejs/svelte#README",
"devDependencies": {
- "@sveltejs/svelte-repl": "0.0.5",
- "@types/mocha": "^5.2.0",
- "@types/node": "^10.5.5",
- "acorn": "^6.1.1",
+ "@types/mocha": "^5.2.7",
+ "@types/node": "=8",
+ "@typescript-eslint/eslint-plugin": "^1.11.0",
+ "@typescript-eslint/parser": "^1.11.0",
+ "acorn": "^6.2.0",
"acorn-dynamic-import": "^4.0.0",
"agadoo": "^1.0.1",
- "c8": "^3.4.0",
- "codecov": "^3.0.0",
+ "c8": "^5.0.1",
+ "codecov": "^3.5.0",
"css-tree": "1.0.0-alpha22",
- "eslint": "^5.3.0",
- "eslint-plugin-html": "^5.0.0",
- "eslint-plugin-import": "^2.11.0",
- "estree-walker": "^0.6.0",
- "is-reference": "^1.1.1",
- "jsdom": "^12.2.0",
- "kleur": "^3.0.0",
+ "eslint": "^6.1.0",
+ "eslint-plugin-import": "^2.18.2",
+ "eslint-plugin-svelte3": "^2.6.0",
+ "estree-walker": "^0.6.1",
+ "is-reference": "^1.1.3",
+ "jsdom": "^15.1.1",
+ "kleur": "^3.0.3",
"locate-character": "^2.0.5",
- "magic-string": "^0.25.2",
- "mocha": "^5.2.0",
- "puppeteer": "^1.13.0",
- "rollup": "^1.1.2",
- "rollup-plugin-commonjs": "^9.1.0",
- "rollup-plugin-json": "^3.0.0",
- "rollup-plugin-node-resolve": "^4.0.0",
- "rollup-plugin-replace": "^2.0.0",
+ "magic-string": "^0.25.3",
+ "mocha": "^6.2.0",
+ "puppeteer": "^1.18.1",
+ "rollup": "^1.16.6",
+ "rollup-plugin-commonjs": "^10.0.1",
+ "rollup-plugin-json": "^4.0.0",
+ "rollup-plugin-node-resolve": "^5.2.0",
+ "rollup-plugin-replace": "^2.2.0",
"rollup-plugin-sucrase": "^2.1.0",
- "rollup-plugin-typescript": "^1.0.0",
+ "rollup-plugin-typescript": "^1.0.1",
"rollup-plugin-virtual": "^1.0.1",
- "source-map": "0.6",
- "source-map-support": "^0.5.4",
- "tiny-glob": "^0.2.1",
- "ts-node": "^8.0.2",
- "tslib": "^1.8.0",
- "typescript": "^3.0.1"
+ "source-map": "^0.6.1",
+ "source-map-support": "^0.5.12",
+ "tiny-glob": "^0.2.6",
+ "tslib": "^1.10.0",
+ "typescript": "^3.5.2"
},
"nyc": {
"include": [
diff --git a/register.js b/register.js
index f5cbeb5063..3278c1cbf5 100644
--- a/register.js
+++ b/register.js
@@ -25,8 +25,7 @@ function deregisterExtension(extension) {
function registerExtension(extension) {
require.extensions[extension] = function(module, filename) {
- const name = path.basename(filename)
- .slice(0, -path.extname(filename).length)
+ const name = path.parse(filename).name
.replace(/^\d/, '_$&')
.replace(/[^a-zA-Z0-9_$]/g, '');
@@ -46,4 +45,4 @@ function registerExtension(extension) {
registerExtension('.svelte');
registerExtension('.html');
-module.exports = register;
\ No newline at end of file
+module.exports = register;
diff --git a/rollup.config.js b/rollup.config.js
index 0d19e59d4a..7cce25e24c 100644
--- a/rollup.config.js
+++ b/rollup.config.js
@@ -9,36 +9,83 @@ import pkg from './package.json';
const is_publish = !!process.env.PUBLISH;
+const ts_plugin = is_publish
+ ? typescript({
+ include: 'src/**',
+ typescript: require('typescript')
+ })
+ : sucrase({
+ transforms: ['typescript']
+ });
+
+const external = id => id.startsWith('svelte/');
+
+const inlined_estree = fs.readFileSync('./node_modules/estree-walker/index.d.ts', 'utf-8').replace(/declare.*\{((.|[\n\r])+)\}/m, '$1');
+fs.writeFileSync(`./compiler.d.ts`, `export { compile, parse, preprocess, VERSION } from './types/compiler/index';\n${inlined_estree}`);
+
export default [
- /* internal.[m]js */
+ /* runtime */
{
- input: `src/internal/index.js`,
+ input: `src/runtime/index.ts`,
output: [
{
- file: `internal.mjs`,
+ file: `index.mjs`,
format: 'esm',
- paths: id => id.startsWith('svelte/') && id.replace('svelte', '.')
+ paths: id => id.startsWith('svelte/') && `${id.replace('svelte', '.')}`
},
{
- file: `internal.js`,
+ file: `index.js`,
format: 'cjs',
- paths: id => id.startsWith('svelte/') && id.replace('svelte', '.')
+ paths: id => id.startsWith('svelte/') && `${id.replace('svelte', '.')}`
}
],
- external: id => id.startsWith('svelte/'),
- plugins: [{
- generateBundle(options, bundle) {
- const mod = bundle['internal.mjs'];
- if (mod) {
- fs.writeFileSync('src/compile/internal-exports.ts', `// This file is automatically generated\nexport default new Set(${JSON.stringify(mod.exports)});`);
- }
- }
- }]
+ external,
+ plugins: [ts_plugin]
},
+ ...fs.readdirSync('src/runtime')
+ .filter(dir => fs.statSync(`src/runtime/${dir}`).isDirectory())
+ .map(dir => ({
+ input: `src/runtime/${dir}/index.ts`,
+ output: [
+ {
+ file: `${dir}/index.mjs`,
+ format: 'esm',
+ paths: id => id.startsWith('svelte/') && `${id.replace('svelte', '..')}`
+ },
+ {
+ file: `${dir}/index.js`,
+ format: 'cjs',
+ paths: id => id.startsWith('svelte/') && `${id.replace('svelte', '..')}`
+ }
+ ],
+ external,
+ plugins: [
+ ts_plugin,
+ {
+ writeBundle(bundle) {
+ if (dir === 'internal') {
+ const mod = bundle['index.mjs'];
+ if (mod) {
+ fs.writeFileSync('src/compiler/compile/internal_exports.ts', `// This file is automatically generated\nexport default new Set(${JSON.stringify(mod.exports)});`);
+ }
+ }
+
+ fs.writeFileSync(`${dir}/package.json`, JSON.stringify({
+ main: './index',
+ module: './index.mjs',
+ types: './index.d.ts'
+ }, null, ' '));
+
+ fs.writeFileSync(`${dir}/index.d.ts`, `export * from '../types/runtime/${dir}/index';`);
+ }
+ }
+ ]
+ })),
+
/* compiler.js */
{
- input: 'src/index.ts',
+ input: 'src/compiler/index.ts',
plugins: [
replace({
__VERSION__: pkg.version
@@ -48,15 +95,7 @@ export default [
include: ['node_modules/**']
}),
json(),
- is_publish
- ? typescript({
- include: 'src/**',
- exclude: 'src/internal/**',
- typescript: require('typescript')
- })
- : sucrase({
- transforms: ['typescript']
- })
+ ts_plugin
],
output: {
file: 'compiler.js',
@@ -67,63 +106,5 @@ export default [
external: is_publish
? []
: id => id === 'acorn' || id === 'magic-string' || id.startsWith('css-tree')
- },
-
- /* motion.mjs */
- {
- input: `src/motion/index.js`,
- output: [
- {
- file: `motion.mjs`,
- format: 'esm',
- paths: id => id.startsWith('svelte/') && id.replace('svelte', '.')
- },
- {
- file: `motion.js`,
- format: 'cjs',
- paths: id => id.startsWith('svelte/') && id.replace('svelte', '.')
- }
- ],
- external: id => id.startsWith('svelte/')
- },
-
- /* store.mjs */
- {
- input: `src/store.ts`,
- output: [
- {
- file: `store.mjs`,
- format: 'esm',
- paths: id => id.startsWith('svelte/') && id.replace('svelte', '.')
- },
- {
- file: `store.js`,
- format: 'cjs',
- paths: id => id.startsWith('svelte/') && id.replace('svelte', '.')
- }
- ],
- plugins: [
- is_publish
- ? typescript({
- include: 'src/**',
- exclude: 'src/internal/**',
- typescript: require('typescript')
- })
- : sucrase({
- transforms: ['typescript']
- })
- ],
- external: id => id.startsWith('svelte/')
- },
-
- // everything else
- ...['index', 'easing', 'transition', 'animate'].map(name => ({
- input: `${name}.mjs`,
- output: {
- file: `${name}.js`,
- format: 'cjs',
- paths: id => id.startsWith('svelte/') && id.replace('svelte', '.')
- },
- external: id => id !== `${name}.mjs`
- }))
+ }
];
diff --git a/site/.eslintrc.js b/site/.eslintrc.js
new file mode 100644
index 0000000000..a436f7bbe4
--- /dev/null
+++ b/site/.eslintrc.js
@@ -0,0 +1,52 @@
+module.exports = {
+ root: true,
+ rules: {
+ indent: [2, 'tab', { SwitchCase: 1 }],
+ semi: [2, 'always'],
+ 'keyword-spacing': [2, { before: true, after: true }],
+ 'space-before-blocks': [2, 'always'],
+ 'no-mixed-spaces-and-tabs': [2, 'smart-tabs'],
+ 'no-cond-assign': 0,
+ 'no-unused-vars': 2,
+ 'object-shorthand': [2, 'always'],
+ 'no-const-assign': 2,
+ 'no-class-assign': 2,
+ 'no-this-before-super': 2,
+ 'no-var': 2,
+ 'no-unreachable': 2,
+ 'valid-typeof': 2,
+ 'quote-props': [2, 'as-needed'],
+ 'one-var': [2, 'never'],
+ 'prefer-arrow-callback': 2,
+ 'prefer-const': [2, { destructuring: 'all' }],
+ 'arrow-spacing': 2,
+ 'no-inner-declarations': 0,
+ 'require-atomic-updates': 0
+ },
+ env: {
+ es6: true,
+ browser: true,
+ node: true,
+ mocha: true
+ },
+ extends: [
+ 'eslint:recommended',
+ 'plugin:import/errors',
+ 'plugin:import/warnings'
+ ],
+ plugins: ['svelte3'],
+ overrides: [
+ {
+ files: ['*.svelte'],
+ processor: 'svelte3/svelte3'
+ }
+ ],
+ parserOptions: {
+ ecmaVersion: 9,
+ sourceType: 'module'
+ },
+ settings: {
+ 'import/core-modules': ['svelte'],
+ 'svelte3/compiler': require('svelte/compiler')
+ }
+};
diff --git a/site/.eslintrc.json b/site/.eslintrc.json
deleted file mode 100644
index df5e719204..0000000000
--- a/site/.eslintrc.json
+++ /dev/null
@@ -1,44 +0,0 @@
-{
- "root": true,
- "rules": {
- "indent": [2, "tab", { "SwitchCase": 1 }],
- "semi": [2, "always"],
- "keyword-spacing": [2, { "before": true, "after": true }],
- "space-before-blocks": [2, "always"],
- "no-mixed-spaces-and-tabs": [2, "smart-tabs"],
- "no-cond-assign": 0,
- "no-unused-vars": 2,
- "object-shorthand": [2, "always"],
- "no-const-assign": 2,
- "no-class-assign": 2,
- "no-this-before-super": 2,
- "no-var": 2,
- "no-unreachable": 2,
- "valid-typeof": 2,
- "quote-props": [2, "as-needed"],
- "one-var": [2, "never"],
- "prefer-arrow-callback": 2,
- "prefer-const": [2, { "destructuring": "all" }],
- "arrow-spacing": 2,
- "no-inner-declarations": 0
- },
- "env": {
- "es6": true,
- "browser": true,
- "node": true,
- "mocha": true
- },
- "extends": [
- "eslint:recommended",
- "plugin:import/errors",
- "plugin:import/warnings"
- ],
- "plugins": ["svelte3"],
- "parserOptions": {
- "ecmaVersion": 9,
- "sourceType": "module"
- },
- "settings": {
- "import/core-modules": ["svelte"]
- }
-}
diff --git a/site/Dockerfile b/site/Dockerfile
index f53e6a0c4a..c2a65122d9 100644
--- a/site/Dockerfile
+++ b/site/Dockerfile
@@ -1,4 +1,4 @@
-FROM mhart/alpine-node:11.14
+FROM mhart/alpine-node:12
# install dependencies
WORKDIR /app
@@ -9,7 +9,7 @@ RUN npm ci --production
# Only copy over the Node pieces we need
# ~> Saves 35MB
###
-FROM mhart/alpine-node:base-11.14
+FROM mhart/alpine-node:slim-12
WORKDIR /app
COPY --from=0 /app .
diff --git a/site/Makefile b/site/Makefile
index c8d8b236a6..4c432dc6c9 100644
--- a/site/Makefile
+++ b/site/Makefile
@@ -19,4 +19,4 @@ docker:
deploy: sapper docker
@echo "\n~> deploying $(SERVICE) to Cloud Run servers"
- @gcloud beta run deploy $(SERVICE) --allow-unauthenticated --region us-central1 --image $(IMAGE) --memory=512Mi
+ @gcloud beta run deploy $(SERVICE) --allow-unauthenticated --platform managed --region us-central1 --image $(IMAGE) --memory=512Mi
diff --git a/site/README.md b/site/README.md
index c438bda5ca..259e956003 100644
--- a/site/README.md
+++ b/site/README.md
@@ -4,7 +4,10 @@ Set up the project:
```bash
git clone https://github.com/sveltejs/svelte.git
-cd svelte/site
+cd svelte
+npm ci
+PUBLISH=1 npm run build
+cd site
npm ci
npm run update
```
@@ -13,7 +16,11 @@ Start the server with `npm run dev`, and navigate to [localhost:3000](http://loc
## Using a local copy of Svelte
-By default, the REPL will fetch the most recent version of Svelte from https://unpkg.com/svelte. To use the local copy of the compiler and runtime from this repo, you can navigate to [localhost:3000/repl?version=local](http://localhost:3000/repl?version=local). To produce the proper browser-compatible UMD build, you will need to run `npm run build` with the `PUBLISH` environment variable set (to any non-empty string).
+By default, the REPL will fetch the most recent version of Svelte from https://unpkg.com/svelte. When running the site locally, you can also use your local copy of Svelte.
+
+To produce the proper browser-compatible UMD build of the compiler, you will need to run `npm run build` (or `npm run dev`) in the root of this repository with the `PUBLISH` environment variable set to any non-empty string.
+
+Then visit the REPL at [localhost:3000/repl?version=local](http://localhost:3000/repl?version=local). Please note that the local REPL only works with `npm run dev` and not when building the site for production usage.
## REPL GitHub integration
@@ -28,6 +35,13 @@ In order for the REPL's GitHub integration to work properly when running locally
GITHUB_CLIENT_SECRET=[your app's Client Secret]
BASEURL=http://localhost:3000
```
+## Building the site
+
+To build the website, run `npm run sapper`. The output can be found in `__sapper__/build`.
+
+## Testing
+
+Tests can be run using `npm run test`.
## Translating the API docs
diff --git a/site/content/blog/2019-04-15-setting-up-your-editor.md b/site/content/blog/2019-04-15-setting-up-your-editor.md
index c157682e44..bea7f4c762 100644
--- a/site/content/blog/2019-04-15-setting-up-your-editor.md
+++ b/site/content/blog/2019-04-15-setting-up-your-editor.md
@@ -10,4 +10,24 @@ draft: true
* eslint-plugin-svelte3
* svelte-vscode
-* associating .svelte files with HTML in VSCode, Sublime, Atom, etc etc etc
\ No newline at end of file
+* associating .svelte files with HTML in VSCode, Sublime, Atom, etc etc etc
+
+## Vim/Neovim
+
+To treat all `*.svelte` files as HTML, add the following line to your `init.vim`:
+
+```bash
+au! BufNewFile,BufRead *.svelte set ft=html
+```
+
+To temporarily turn on HTML syntax highlighting for the current buffer, use:
+
+```bash
+:set ft=html
+```
+
+To set the filetype for a single file, use a [modeline](https://vim.fandom.com/wiki/Modeline_magic):
+
+```bash
+
+```
diff --git a/site/content/docs/01-component-format.md b/site/content/docs/01-component-format.md
index 1472ff3d6c..3d349af51d 100644
--- a/site/content/docs/01-component-format.md
+++ b/site/content/docs/01-component-format.md
@@ -28,38 +28,60 @@ A `
+```
+
+---
+
+You can specify a default value, which will be used if the component's consumer doesn't specify a prop.
+
+In development mode (see the [compiler options](docs#svelte_compile)), a warning will be printed if no default is provided and the consumer does not specify a value. To squelch this warning, ensure that a default is specified, even if it is `undefined`.
+
+```html
+
+```
- // you can use export { ... as ... } to have
- // props whose names are reserved keywords
- let clazz;
- export { clazz as class };
+---
- // this property is readonly externally
- export const buzz = 'buzz';
+If you export a `const`, `class` or `function`, it is readonly from outside the component. Function *expressions* are valid props, however.
- // Values that are passed in as props
- // are immediately available
- console.log(foo, bar);
+```html
+
+```
+
+---
+
+You can use reserved words as prop names.
+
+```html
+
```
@@ -78,8 +100,8 @@ Because Svelte's reactivity is based on assignments, using array methods like `.
let count = 0;
function handleClick () {
- // calling this function will trigger a re-render
- // if the markup references `count`
+ // calling this function will trigger an
+ // update if the markup references `count`
count = count + 1;
}
@@ -125,8 +147,29 @@ If a statement consists entirely of an assignment to an undeclared variable, Sve
---
+A *store* is any object that allows reactive access to a value via a simple *store contract*.
+
+The [`svelte/store` module](docs#svelte_store) contains minimal store implementations which fulfil this contract. You can use these as the basis for your own stores, or you can implement your stores from scratch.
+
+A store must contain a `.subscribe` method, which must accept as its argument a subscription function. This subscription function must be immediately and synchronously called with the store's current value upon calling `.subscribe`. All of a store's active subscription functions must later be synchronously called whenever the store's value changes. The `.subscribe` method must also return an unsubscription function. Calling an unsubscription function must stop its subscription, and its corresponding subscription function must not be called again by the store.
+
+A store may optionally contain a `.set` method, which must accept as its argument a new value for the store, and which synchronously calls all of the store's active subscription functions. Such a store is called a *writable store*.
+
+```js
+const unsubscribe = store.subscribe(value => {
+ console.log(value);
+}); // logs `value`
+
+// later...
+unsubscribe();
+```
+
+---
+
Any time you have a reference to a store, you can access its value inside a component by prefixing it with the `$` character. This causes Svelte to declare the prefixed variable, and set up a store subscription that will be unsubscribed when appropriate.
+Assignments to `$`-prefixed variables require that the variable be a writable store, and will result in a call to the store's `.set` method.
+
Note that the store must be declared at the top level of the component — not inside an `if` block or a function, for example.
Local variables (that do not represent store values) must *not* have a `$` prefix.
@@ -140,6 +183,9 @@ Local variables (that do not represent store values) must *not* have a `$` prefi
count.set(1);
console.log($count); // logs 1
+
+ $count = 2;
+ console.log($count); // logs 2
```
@@ -154,6 +200,8 @@ You can `export` bindings from this block, and they will become exports of the c
You cannot `export default`, since the default export is the component itself.
+> Variables defined in `module` scripts are not reactive — reassigning them will not trigger a rerender even though the variable itself will update. For values shared between multiple components, consider using a [store](https://svelte.dev/docs#svelte_store).
+
```html
+
+{@debug user}
+
+Hello {user.firstname}!
+```
+
+---
+
+`{@debug ...}` accepts a comma-separated list of variable names (not arbitrary expressions).
+
+```html
+
+{@debug user}
+{@debug user1, user2, user3}
+
+
+{@debug user.firstname}
+{@debug myArray[0]}
+{@debug !isReady}
+{@debug typeof user === 'object'}
+```
+
+The `{@debug}` tag without any arguments will insert a `debugger` statement that gets triggered when *any* state changes, as opposed to the specified variables.
+
+
+
+### Element directives
+
+As well as attributes, elements can have *directives*, which control the element's behaviour in some way.
+
+
+#### [on:*eventname*](on_element_event)
```sv
on:eventname={handler}
@@ -324,6 +424,13 @@ Handlers can be declared inline with no performance penalty. As with attributes,
Add *modifiers* to DOM events with the `|` character.
+```html
+
+```
+
The following modifiers are available:
* `preventDefault` — calls `event.preventDefault()` before running the handler
@@ -334,13 +441,6 @@ The following modifiers are available:
Modifiers can be chained together, e.g. `on:click|once|capture={...}`.
-```html
-
-```
-
---
If the `on:` directive is used without a value, the component will *forward* the event, meaning that a consumer of the component can listen for it.
@@ -351,40 +451,30 @@ If the `on:` directive is used without a value, the component will *forward* the
```
-
-### Component events
-
-```sv
-on:eventname={handler}
-```
-
---
-Components can emit events using [createEventDispatcher](docs#createEventDispatcher), or by forwarding DOM events. Listening for component events looks the same as listening for DOM events:
+It's possible to have multiple event listeners for the same event:
```html
-
-```
-
----
+
-```html
-
+Click me!
```
-### Element bindings
+#### [bind:*property*](bind_element_property)
```sv
bind:property={variable}
```
-```sv
-bind:group={variable}
-```
-```sv
-bind:this={dom_node}
-```
---
@@ -418,31 +508,8 @@ Numeric input values are coerced; even though `input.value` is a string as far a
```
-#### Binding related elements
-
----
-Inputs that work together can use `bind:group`.
-
-```html
-
-
-
-
-
-
-
-
-
-
-
-
-```
-
-#### Binding `` value
+##### Binding `` value
---
@@ -482,7 +549,15 @@ When the value of an `` matches its text content, the attribute can be o
```
-#### Media element bindings
+---
+
+Elements with the `contenteditable` attribute support `innerHTML` and `textContent` bindings.
+
+```html
+
+```
+
+##### Media element bindings
---
@@ -512,7 +587,7 @@ Media elements (`` and ``) have their own set of bindings — four
>
```
-#### Block-level element bindings
+##### Block-level element bindings
---
@@ -532,61 +607,61 @@ Block-level elements have 4 readonly bindings, measured using a technique simila
```
-#### Binding a DOM node
+#### bind:group
+
+```sv
+bind:group={variable}
+```
---
-To get a reference to a DOM node, use `bind:this`.
+Inputs that work together can use `bind:group`.
```html
-
-```
+
+
+
+
+
+
+
+
+
+```
-### Component bindings
+#### [bind:this](bind_element)
```sv
-bind:property={variable}
-```
-```sv
-bind:this={component_instance}
+bind:this={dom_node}
```
---
-You can bind to component props using the same mechanism.
+To get a reference to a DOM node, use `bind:this`.
```html
-
-```
-
----
-
-Components also support `bind:this`, allowing you to interact with component instances programmatically.
+
-
- Empty shopping cart
-
+
```
-### Classes
+#### class:*name*
```sv
class:name={value}
@@ -612,7 +687,7 @@ A `class:` directive provides a shorter way of toggling a class on an element.
```
-### Actions
+#### use:*action*
```sv
use:action
@@ -677,43 +752,19 @@ An action can have parameters. If the returned value has an `update` method, it
```
-### Transitions
+#### transition:*fn*
```sv
-transition:name
-```
-```sv
-transition:name={params}
-```
-```sv
-transition:name|local
-```
-```sv
-transition:name|local={params}
-```
-```sv
-in:name
+transition:fn
```
```sv
-in:name={params}
+transition:fn={params}
```
```sv
-in:name|local
+transition:fn|local
```
```sv
-in:name|local={params}
-```
-```sv
-out:name
-```
-```sv
-out:name={params}
-```
-```sv
-out:name|local
-```
-```sv
-out:name|local={params}
+transition:fn|local={params}
```
@@ -729,7 +780,7 @@ transition = (node: HTMLElement, params: any) => {
---
-A transition is triggered by an element entering or leaving the DOM as a result of a state change. Transitions do not run when a component is first mounted, but only on subsequent updates.
+A transition is triggered by an element entering or leaving the DOM as a result of a state change.
Elements inside an *outroing* block are kept in the DOM until all current transitions have completed.
@@ -743,21 +794,9 @@ The `transition:` directive indicates a *bidirectional* transition, which means
{/if}
```
----
-
-The `in:` and `out:` directives are not bidirectional. An in transition will continue to 'play' alongside the out transition, if the block is outroed while the transition is in progress. If an out transition is aborted, transitions will restart from scratch.
-
-```html
-{#if visible}
-
- flies in, fades out
-
-{/if}
-```
-
> By default intro transitions will not play on first render. You can modify this behaviour by setting `intro: true` when you [create a component](docs#Client-side_component_API).
-#### Transition parameters
+##### Transition parameters
---
@@ -773,7 +812,7 @@ Like actions, transitions can have parameters.
{/if}
```
-#### Custom transition functions
+##### Custom transition functions
---
@@ -849,7 +888,7 @@ A custom transition function can also return a `tick` function, which is called
If a transition returns a function instead of a transition object, the function will be called in the next microtask. This allows multiple transitions to coordinate, making [crossfade effects](tutorial/deferred-transitions) possible.
-#### Transition events
+##### Transition events
---
@@ -893,7 +932,51 @@ Local transitions only play when the block they belong to is created or destroye
```
-### Animations
+#### in:*fn*/out:*fn*
+
+```sv
+in:fn
+```
+```sv
+in:fn={params}
+```
+```sv
+in:fn|local
+```
+```sv
+in:fn|local={params}
+```
+
+```sv
+out:fn
+```
+```sv
+out:fn={params}
+```
+```sv
+out:fn|local
+```
+```sv
+out:fn|local={params}
+```
+
+---
+
+Similar to `transition:`, but only applies to elements entering (`in:`) or leaving (`out:`) the DOM.
+
+Unlike with `transition:`, transitions applied with `in:` and `out:` are not bidirectional — an in transition will continue to 'play' alongside the out transition, rather than reversing, if the block is outroed while the transition is in progress. If an out transition is aborted, transitions will restart from scratch.
+
+```html
+{#if visible}
+
+ flies in, fades out
+
+{/if}
+```
+
+
+
+#### animate:*fn*
```sv
animate:name
@@ -928,7 +1011,7 @@ DOMRect {
---
-An animation is triggered when the contents of a [keyed each block](docs#Each_blocks) are re-ordered. Animations do not run when an element is removed, only when the each block's data is reordered. Animate directives must be on an element that is an *immediate* child of a keyed each block.
+An animation is triggered when the contents of a [keyed each block](docs#each) are re-ordered. Animations do not run when an element is removed, only when the each block's data is reordered. Animate directives must be on an element that is an *immediate* child of a keyed each block.
Animations can be used with Svelte's [built-in animation functions](docs#svelte_animate) or [custom animation functions](docs#Custom_animation_functions).
@@ -939,7 +1022,7 @@ Animations can be used with Svelte's [built-in animation functions](docs#svelte_
{/each}
```
-#### Animation Parameters
+##### Animation Parameters
---
@@ -953,7 +1036,7 @@ As with actions and transitions, animations can have parameters.
{/each}
```
-#### Custom animation functions
+##### Custom animation functions
---
@@ -1027,9 +1110,68 @@ A custom animation function can also return a `tick` function, which is called *
{/each}
```
+### Component directives
+#### [on:*eventname*](on_component_event)
-### Slots
+```sv
+on:eventname={handler}
+```
+
+---
+
+Components can emit events using [createEventDispatcher](docs#createEventDispatcher), or by forwarding DOM events. Listening for component events looks the same as listening for DOM events:
+
+```html
+
+```
+
+---
+
+As with DOM events, if the `on:` directive is used without a value, the component will *forward* the event, meaning that a consumer of the component can listen for it.
+
+```html
+
+```
+
+
+#### [bind:*property*](bind_component_property)
+
+```sv
+bind:property={variable}
+```
+
+---
+
+You can bind to component props using the same mechanism.
+
+```html
+
+```
+
+#### [bind:this](bind_component)
+
+```sv
+bind:this={component_instance}
+```
+
+---
+
+Components also support `bind:this`, allowing you to interact with component instances programmatically.
+
+> Note that we can't do `{cart.empty}` since `cart` is `undefined` when the button is first rendered and throws an error.
+
+```html
+
+
+ cart.empty()}>
+ Empty shopping cart
+
+```
+
+
+
+### ``
```sv
@@ -1061,6 +1203,8 @@ The content is exposed in the child component using the `` element, which
```
+#### [``](slot_name)
+
---
Named slots allow consumers to target specific areas. They can also have fallback content.
@@ -1080,6 +1224,8 @@ Named slots allow consumers to target specific areas. They can also have fallbac
```
+#### [``](slot_let)
+
---
Slots can be rendered zero or more times, and can pass values *back* to the parent using props. The parent exposes the values to the slot template using the `let:` directive.
@@ -1126,7 +1272,7 @@ Named slots can also expose values. The `let:` directive goes on the element wit
```
-### <svelte:self>
+### ``
---
@@ -1147,10 +1293,10 @@ It cannot appear at the top level of your markup; it must be inside an if or eac
{/if}
```
-### <svelte:component>
+### ``
```sv
-
+
```
---
@@ -1164,7 +1310,7 @@ If `this` is falsy, no component is rendered.
```
-### <svelte:window>
+### ``
```sv
@@ -1206,7 +1352,7 @@ All except `scrollX` and `scrollY` are readonly.
```
-### <svelte:body>
+### ``
```sv
@@ -1224,10 +1370,10 @@ As with ``, this element allows you to add listeners to events on
```
-### <svelte:head>
+### ``
```sv
-
+...
```
---
@@ -1241,10 +1387,10 @@ This element makes it possible to insert elements into `document.head`. During s
```
-### <svelte:options>
+### ``
```sv
-
+
```
---
@@ -1261,50 +1407,3 @@ The `` element provides a place to specify per-component compile
```html
```
-
-
-### @debug
-
-```sv
-{@debug}
-```
-```sv
-{@debug var1, var2, ..., varN}
-```
-
----
-
-The `{@debug ...}` tag offers an alternative to `console.log(...)`. It logs the values of specific variables whenever they change, and pauses code execution if you have devtools open.
-
-It accepts a comma-separated list of variable names (not arbitrary expressions).
-
-```html
-
-
-{@debug user}
-
-Hello {user.firstname}!
-```
-
----
-
-`{@debug ...}` accepts a comma-separated list of variable names (not arbitrary expressions).
-
-```html
-
-{@debug user}
-{@debug user1, user2, user3}
-
-
-{@debug user.firstname}
-{@debug myArray[0]}
-{@debug !isReady}
-{@debug typeof user === 'object'}
-```
-
-The `{@debug}` tag without any arguments will insert a `debugger` statement that gets triggered when *any* state changes, as opposed to the specified variables.
\ No newline at end of file
diff --git a/site/content/docs/03-run-time.md b/site/content/docs/03-run-time.md
index 1beacc4169..d5653dd288 100644
--- a/site/content/docs/03-run-time.md
+++ b/site/content/docs/03-run-time.md
@@ -156,6 +156,8 @@ Like lifecycle functions, this must be called during component initialisation.
```
+> Context is not inherently reactive. If you need reactive values in context then you can pass a store into context, which *will* be reactive.
+
#### `getContext`
```js
@@ -212,39 +214,7 @@ Events dispatched from child components can be listened to in their parent. Any
### `svelte/store`
-The `svelte/store` module exports functions for creating [stores](tutorial/writable-stores).
-
----
-
-To be considered a store, an object must have a `subscribe` method that returns an `unsubscribe` function.
-
-```js
-const unsubscribe = store.subscribe(value => {
- console.log(value);
-}); // logs `value`
-
-// later...
-unsubscribe();
-```
-
----
-
-Stores have special significance inside Svelte components. Their values can be read by prefixing the store's name with the `$` character, which causes Svelte to set up subscriptions and unsubscriptions automatically during the component's lifecycle.
-
-```html
-
-
-
- Clicks: {$count}
-
-```
+The `svelte/store` module exports functions for creating [stores](docs#4_Prefix_stores_with_$_to_access_their_values).
#### `writable`
@@ -257,7 +227,11 @@ store = writable(value: any, (set: (value: any) => void) => () => void)
---
-Creates a store with additional `set` and `update` methods.
+Function that creates a store which has values that can be set from 'outside' components. It gets created as an object with additional `set` and `update` methods.
+
+`set` is a method that takes one argument which is the value to be set. The store value gets set to the value of the argument if the store value is not already equal to it.
+
+`update` is a method that takes one argument which is a callback. The callback takes the existing store value as its argument and returns the new value to be set to the store.
```js
import { writable } from 'svelte/store';
@@ -359,17 +333,21 @@ const delayed = derived(a, ($a, set) => {
}, 'one moment...');
```
-If you return a function from the callback, it will be called when a) the callback runs again, or b) the last subscriber unsubscribes:
+---
+
+If you return a function from the callback, it will be called when a) the callback runs again, or b) the last subscriber unsubscribes.
```js
import { derived } from 'svelte/store';
const tick = derived(frequency, ($frequency, set) => {
- const interval = setInterval(() => set(Date.now()), 1000 / frequency);
+ const interval = setInterval(() => {
+ set(Date.now());
+ }, 1000 / $frequency);
return () => {
clearInterval(interval);
- }
+ };
}, 'one moment...');
```
@@ -421,7 +399,7 @@ Tweened stores update their values over a fixed duration. The following options
* `delay` (`number`, default 0) — milliseconds before starting
* `duration` (`number`, default 400) — milliseconds the tween lasts
* `easing` (`function`, default `t => t`) — an [easing function](docs#svelte_easing)
-* `interpolator` (`function`) — see below
+* `interpolate` (`function`) — see below
`store.set` and `store.update` can accept a second `options` argument that will override the options passed in upon instantiation.
@@ -455,7 +433,7 @@ Out of the box, Svelte will interpolate between two numbers, two arrays or two o
---
-The `interpolator` option allows you to tween between *any* arbitrary values. It must be an `(a, b) => t => value` function, where `a` is the starting value, `b` is the target value, `t` is a number between 0 and 1, and `value` is the result. For example, we can use the [d3-interpolate](https://github.com/d3/d3-interpolate) package to smoothly interpolate between two colours.
+The `interpolate` option allows you to tween between *any* arbitrary values. It must be an `(a, b) => t => value` function, where `a` is the starting value, `b` is the target value, `t` is a number between 0 and 1, and `value` is the result. For example, we can use the [d3-interpolate](https://github.com/d3/d3-interpolate) package to smoothly interpolate between two colours.
```html
{#if condition}
-
- flies in and out
+
+ slides in and out
{/if}
```
@@ -689,7 +667,7 @@ Animates the stroke of an SVG element, like a snake in a tube. `in` transitions
* `duration` (`number` | `function`, default 800) — milliseconds the transition lasts
* `easing` (`function`, default `cubicInOut`) — an [easing function](docs#svelte_easing)
-The `speed` parameter is a means of setting the duration of the transition relative to the path's length. It is modifier that is applied to the length of the path: `duration = length / speed`. A path that is 1000 pixels with a speed of 1 will have a duration of `1000ms`, setting the speed to `0.5` will halve that duration and setting it to `2` will double it.
+The `speed` parameter is a means of setting the duration of the transition relative to the path's length. It is modifier that is applied to the length of the path: `duration = length / speed`. A path that is 1000 pixels with a speed of 1 will have a duration of `1000ms`, setting the speed to `0.5` will double that duration and setting it to `2` will halve it.
```html
+
+
Hello {name}!
+
+```
+
+---
+
+Alternatively, use `tag={null}` to indicate that the consumer of the custom element should name it.
+
+```js
+import MyElement from './MyElement.svelte';
+
+customElements.define('my-element', MyElement);
+```
+
+---
+
+Once a custom element has been defined, it can be used as a regular DOM element:
+
+```js
+document.body.innerHTML = `
+
+ This is some slotted content
+
+`;
+```
+
+---
+
+By default, custom elements are compiled with `accessors: true`, which means that any [props](docs#Attributes_and_props) are exposed as properties of the DOM element (as well as being readable/writable as attributes, where possible).
+
+To prevent this, add `accessors={false}` to `
`.
+
+```js
+const el = document.querySelector('my-element');
+
+// get the current value of the 'name' prop
+console.log(el.name);
+
+// set a new value, updating the shadow DOM
+el.name = 'everybody';
+```
+
+Custom elements can be a useful way to package components for consumption in a non-Svelte app, as they will work with vanilla HTML and JavaScript as well as [most frameworks](https://custom-elements-everywhere.com/). There are, however, some important differences to be aware of:
+
+* Styles are *encapsulated*, rather than merely *scoped*. This means that any non-component styles (such as you might have in a `global.css` file) will not apply to the custom element, including styles with the `:global(...)` modifier
+* Instead of being extracted out as a separate .css file, styles are inlined into the component as a JavaScript string
+* Custom elements are not generally suitable for server-side rendering, as the shadow DOM is invisible until JavaScript loads
+* In Svelte, slotted content renders *lazily*. In the DOM, it renders *eagerly*. In other words, it will always be created even if the component's `` element is inside an `{#if ...}` block. Similarly, including a `` in an `{#each ...}` block will not cause the slotted content to be rendered multiple times
+* The `let:` directive has no effect
+* Polyfills are required to support older browsers
+
### Server-side component API
diff --git a/site/content/docs/04-compile-time.md b/site/content/docs/04-compile-time.md
index b019b9437b..f47fe564af 100644
--- a/site/content/docs/04-compile-time.md
+++ b/site/content/docs/04-compile-time.md
@@ -186,15 +186,15 @@ result: {
} = svelte.preprocess(
source: string,
preprocessors: Array<{
- markup?: (input: { source: string, filename: string }) => Promise<{
+ markup?: (input: { content: string, filename: string }) => Promise<{
code: string,
dependencies?: Array
}>,
- script?: (input: { source: string, attributes: Record, filename: string }) => Promise<{
+ script?: (input: { content: string, attributes: Record, filename: string }) => Promise<{
code: string,
dependencies?: Array
}>,
- style?: (input: { source: string, attributes: Record, filename: string }) => Promise<{
+ style?: (input: { content: string, attributes: Record, filename: string }) => Promise<{
code: string,
dependencies?: Array
}>
@@ -308,8 +308,8 @@ const { code } = svelte.preprocess(source, [
```js
walk(ast: Node, {
- enter(node: Node, parent: Node)?: void,
- leave(node: Node, parent: Node)?: void
+ enter(node: Node, parent: Node, prop: string, index: number)?: void,
+ leave(node: Node, parent: Node, prop: string, index: number)?: void
})
```
@@ -323,13 +323,13 @@ The walker takes an abstract syntax tree to walk and an object with two optional
```js
const svelte = require('svelte/compiler');
svelte.walk(ast, {
- enter(node, parent) {
+ enter(node, parent, prop, index) {
do_something(node);
if (should_skip_children(node)) {
this.skip();
}
},
- leave(node, parent) {
+ leave(node, parent, prop, index) {
do_something_else(node);
}
});
diff --git a/site/content/examples/03-logic/04-keyed-each-blocks/App.svelte b/site/content/examples/03-logic/04-keyed-each-blocks/App.svelte
index 5cd279d7a7..cd12eed954 100644
--- a/site/content/examples/03-logic/04-keyed-each-blocks/App.svelte
+++ b/site/content/examples/03-logic/04-keyed-each-blocks/App.svelte
@@ -2,11 +2,11 @@
import Thing from './Thing.svelte';
let things = [
- { id: 1, value: 'a' },
- { id: 2, value: 'b' },
- { id: 3, value: 'c' },
- { id: 4, value: 'd' },
- { id: 5, value: 'e' }
+ { id: 1, color: '#0d0887' },
+ { id: 2, color: '#6a00a8' },
+ { id: 3, color: '#b12a90' },
+ { id: 4, color: '#e16462' },
+ { id: 5, color: '#fca636' }
];
function handleClick() {
@@ -22,14 +22,14 @@
Keyed
{#each things as thing (thing.id)}
-
+
{/each}
Unkeyed
{#each things as thing}
-
+
{/each}
\ No newline at end of file
diff --git a/site/content/examples/03-logic/04-keyed-each-blocks/Thing.svelte b/site/content/examples/03-logic/04-keyed-each-blocks/Thing.svelte
index 4e86d32109..28c3c65d05 100644
--- a/site/content/examples/03-logic/04-keyed-each-blocks/Thing.svelte
+++ b/site/content/examples/03-logic/04-keyed-each-blocks/Thing.svelte
@@ -1,9 +1,24 @@
-{valueAtStart} / {value}
\ No newline at end of file
+
+ initial
+ current
+
+
+
\ No newline at end of file
diff --git a/site/content/examples/05-bindings/04-textarea-inputs/App.svelte b/site/content/examples/05-bindings/04-textarea-inputs/App.svelte
index be338bf47f..5a9e18f79d 100644
--- a/site/content/examples/05-bindings/04-textarea-inputs/App.svelte
+++ b/site/content/examples/05-bindings/04-textarea-inputs/App.svelte
@@ -1,12 +1,12 @@
-
+
-{@html marked(value)}
\ No newline at end of file
+{@html marked(text)}
\ No newline at end of file
diff --git a/site/content/examples/05-bindings/10-bind-this/App.svelte b/site/content/examples/05-bindings/10-bind-this/App.svelte
index eacd203629..b64b6c0cc3 100644
--- a/site/content/examples/05-bindings/10-bind-this/App.svelte
+++ b/site/content/examples/05-bindings/10-bind-this/App.svelte
@@ -2,7 +2,6 @@
import { onMount } from 'svelte';
let canvas;
- let ctx;
let running = false;
const r = Math.random();
@@ -56,4 +55,4 @@
bind:this={canvas}
width={32}
height={32}
->
\ No newline at end of file
+>
diff --git a/site/content/examples/06-lifecycle/02-update/App.svelte b/site/content/examples/06-lifecycle/02-update/App.svelte
index 373b6dcb6a..3eb2dceb52 100644
--- a/site/content/examples/06-lifecycle/02-update/App.svelte
+++ b/site/content/examples/06-lifecycle/02-update/App.svelte
@@ -1,5 +1,5 @@
+
+
+
Photo gallery
+
+
+ {#each images as image}
+
+ {#if selected !== image}
+ {loading === image ? '...' : image.id}
+ {/if}
+
+ {/each}
+
+
+ {#if selected}
+ {#await selected then d}
+
+ {/await}
+ {/if}
+
+
+
-
-
\ No newline at end of file
+ .credit a, .credit a:visited {
+ color: white;
+ }
+
\ No newline at end of file
diff --git a/site/content/examples/09-transitions/06-deferred-transitions/crossfade.js b/site/content/examples/09-transitions/06-deferred-transitions/crossfade.js
deleted file mode 100644
index e11e18b60e..0000000000
--- a/site/content/examples/09-transitions/06-deferred-transitions/crossfade.js
+++ /dev/null
@@ -1,65 +0,0 @@
-import { quintOut } from 'svelte/easing';
-
-export default function crossfade({ send, receive, fallback }) {
- let requested = new Map();
- let provided = new Map();
-
- function crossfade(from, node) {
- const to = node.getBoundingClientRect();
- const dx = from.left - to.left;
- const dy = from.top - to.top;
-
- const style = getComputedStyle(node);
- const transform = style.transform === 'none' ? '' : style.transform;
-
- return {
- duration: 400,
- easing: quintOut,
- css: (t, u) => `
- opacity: ${t};
- transform: ${transform} translate(${u * dx}px,${u * dy}px);
- `
- };
- }
-
- return {
- send(node, params) {
- provided.set(params.key, {
- rect: node.getBoundingClientRect()
- });
-
- return () => {
- if (requested.has(params.key)) {
- const { rect } = requested.get(params.key);
- requested.delete(params.key);
-
- return crossfade(rect, node);
- }
-
- // if the node is disappearing altogether
- // (i.e. wasn't claimed by the other list)
- // then we need to supply an outro
- provided.delete(params.key);
- return fallback(node, params);
- };
- },
-
- receive(node, params) {
- requested.set(params.key, {
- rect: node.getBoundingClientRect()
- });
-
- return () => {
- if (provided.has(params.key)) {
- const { rect } = provided.get(params.key);
- provided.delete(params.key);
-
- return crossfade(rect, node);
- }
-
- requested.delete(params.key);
- return fallback(node, params);
- };
- }
- };
-}
\ No newline at end of file
diff --git a/site/content/examples/09-transitions/06-deferred-transitions/images.js b/site/content/examples/09-transitions/06-deferred-transitions/images.js
new file mode 100644
index 0000000000..d3ce723758
--- /dev/null
+++ b/site/content/examples/09-transitions/06-deferred-transitions/images.js
@@ -0,0 +1,102 @@
+const BY = {
+ name: 'CC BY 2.0',
+ url: 'https://creativecommons.org/licenses/by/2.0/'
+};
+
+const BY_SA = {
+ name: 'CC BY-SA 2.0',
+ url: 'https://creativecommons.org/licenses/by-sa/2.0/'
+};
+
+const BY_ND = {
+ name: 'CC BY-ND 2.0',
+ url: 'https://creativecommons.org/licenses/by-nd/2.0/'
+};
+
+// via http://labs.tineye.com/multicolr
+export default [
+ {
+ color: '#001f3f',
+ id: '1',
+ alt: 'Crepuscular rays',
+ path: '43428526@N03/7863279376',
+ license: BY
+ },
+ {
+ color: '#0074D9',
+ id: '2',
+ alt: 'Lapland winter scene',
+ path: '25507134@N00/6527537485',
+ license: BY
+ },
+ {
+ color: '#7FDBFF',
+ id: '3',
+ alt: 'Jellyfish',
+ path: '37707866@N00/3354331318',
+ license: BY
+ },
+ {
+ color: '#39CCCC',
+ id: '4',
+ alt: 'A man scuba diving',
+ path: '32751486@N00/4608886209',
+ license: BY_SA
+ },
+ {
+ color: '#3D9970',
+ id: '5',
+ alt: 'Underwater scene',
+ path: '25483059@N08/5548569010',
+ license: BY
+ },
+ {
+ color: '#2ECC40',
+ id: '6',
+ alt: 'Ferns',
+ path: '8404611@N06/2447470760',
+ license: BY
+ },
+ {
+ color: '#01FF70',
+ id: '7',
+ alt: 'Posters in a bar',
+ path: '33917831@N00/114428206',
+ license: BY_SA
+ },
+ {
+ color: '#FFDC00',
+ id: '8',
+ alt: 'Daffodil',
+ path: '46417125@N04/4818617089',
+ license: BY_ND
+ },
+ {
+ color: '#FF851B',
+ id: '9',
+ alt: 'Dust storm in Sydney',
+ path: '56068058@N00/3945496657',
+ license: BY
+ },
+ {
+ color: '#FF4136',
+ id: '10',
+ alt: 'Postbox',
+ path: '31883499@N05/4216820032',
+ license: BY
+ },
+ {
+ color: '#85144b',
+ id: '11',
+ alt: 'Fireworks',
+ path: '8484971@N07/2625506561',
+ license: BY_ND
+ },
+ {
+ color: '#B10DC9',
+ id: '12',
+ alt: 'The Stereophonics',
+ path: '58028312@N00/5385464371',
+ license: BY_ND
+ }
+];
\ No newline at end of file
diff --git a/site/content/examples/11-easing/00-easing/App.svelte b/site/content/examples/11-easing/00-easing/App.svelte
new file mode 100644
index 0000000000..c33e73518e
--- /dev/null
+++ b/site/content/examples/11-easing/00-easing/App.svelte
@@ -0,0 +1,106 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/site/content/examples/11-easing/00-easing/Controls.svelte b/site/content/examples/11-easing/00-easing/Controls.svelte
new file mode 100644
index 0000000000..66a297323f
--- /dev/null
+++ b/site/content/examples/11-easing/00-easing/Controls.svelte
@@ -0,0 +1,186 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/site/content/examples/11-easing/00-easing/Grid.svelte b/site/content/examples/11-easing/00-easing/Grid.svelte
new file mode 100644
index 0000000000..e704f46cf7
--- /dev/null
+++ b/site/content/examples/11-easing/00-easing/Grid.svelte
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+
+
+{#each { length: 8 } as _, i}
+ {#if i < 6}
+
+ {/if}
+
+{/each}
+
+
+
+
\ No newline at end of file
diff --git a/site/content/examples/11-easing/00-easing/eases.js b/site/content/examples/11-easing/00-easing/eases.js
new file mode 100644
index 0000000000..a24246005a
--- /dev/null
+++ b/site/content/examples/11-easing/00-easing/eases.js
@@ -0,0 +1,43 @@
+import * as eases from 'svelte/easing';
+
+const processed_eases = {};
+
+for (const ease in eases) {
+ if (ease === "linear") {
+ processed_eases.linear = eases.linear;
+ } else {
+ const name = ease.replace(/In$|InOut$|Out$/, '');
+ const type = ease.match(/In$|InOut$|Out$/)[0];
+
+ if (!(name in processed_eases)) processed_eases[name] = {};
+ processed_eases[name][type] = {};
+ processed_eases[name][type].fn = eases[ease];
+
+ let shape = 'M0 1000';
+ for (let i = 1; i <= 1000; i++) {
+ shape = `${shape} L${(i / 1000) * 1000} ${1000 - eases[ease](i / 1000) * 1000} `;
+ processed_eases[name][type].shape = shape;
+ }
+ }
+}
+
+const sorted_eases = new Map([
+ ['sine', processed_eases.sine],
+ ['quad', processed_eases.quad],
+ ['cubic', processed_eases.cubic],
+ ['quart', processed_eases.quart],
+ ['quint', processed_eases.quint],
+ ['expo', processed_eases.expo],
+ ['circ', processed_eases.circ],
+ ['back', processed_eases.back],
+ ['elastic', processed_eases.elastic],
+ ['bounce', processed_eases.bounce],
+]);
+
+export const types = [
+ ['Ease In', 'In'],
+ ['Ease Out', 'Out'],
+ ['Ease In Out', 'InOut']
+];
+
+export { sorted_eases as eases };
\ No newline at end of file
diff --git a/site/content/examples/11-easing/00-easing/meta.json b/site/content/examples/11-easing/00-easing/meta.json
new file mode 100644
index 0000000000..59ad604b26
--- /dev/null
+++ b/site/content/examples/11-easing/00-easing/meta.json
@@ -0,0 +1,3 @@
+{
+ "title": "Ease Visualiser"
+}
\ No newline at end of file
diff --git a/site/content/examples/11-easing/meta.json b/site/content/examples/11-easing/meta.json
new file mode 100644
index 0000000000..78341a522d
--- /dev/null
+++ b/site/content/examples/11-easing/meta.json
@@ -0,0 +1,3 @@
+{
+ "title": "Easing"
+}
\ No newline at end of file
diff --git a/site/content/examples/11-svg/01-clock/App.svelte b/site/content/examples/12-svg/01-clock/App.svelte
similarity index 100%
rename from site/content/examples/11-svg/01-clock/App.svelte
rename to site/content/examples/12-svg/01-clock/App.svelte
diff --git a/site/content/examples/11-svg/01-clock/meta.json b/site/content/examples/12-svg/01-clock/meta.json
similarity index 100%
rename from site/content/examples/11-svg/01-clock/meta.json
rename to site/content/examples/12-svg/01-clock/meta.json
diff --git a/site/content/examples/11-svg/02-bar-chart/App.svelte b/site/content/examples/12-svg/02-bar-chart/App.svelte
similarity index 100%
rename from site/content/examples/11-svg/02-bar-chart/App.svelte
rename to site/content/examples/12-svg/02-bar-chart/App.svelte
diff --git a/site/content/examples/11-svg/02-bar-chart/meta.json b/site/content/examples/12-svg/02-bar-chart/meta.json
similarity index 100%
rename from site/content/examples/11-svg/02-bar-chart/meta.json
rename to site/content/examples/12-svg/02-bar-chart/meta.json
diff --git a/site/content/examples/11-svg/03-area-chart/App.svelte b/site/content/examples/12-svg/03-area-chart/App.svelte
similarity index 100%
rename from site/content/examples/11-svg/03-area-chart/App.svelte
rename to site/content/examples/12-svg/03-area-chart/App.svelte
diff --git a/site/content/examples/11-svg/03-area-chart/data.js b/site/content/examples/12-svg/03-area-chart/data.js
similarity index 100%
rename from site/content/examples/11-svg/03-area-chart/data.js
rename to site/content/examples/12-svg/03-area-chart/data.js
diff --git a/site/content/examples/11-svg/03-area-chart/meta.json b/site/content/examples/12-svg/03-area-chart/meta.json
similarity index 100%
rename from site/content/examples/11-svg/03-area-chart/meta.json
rename to site/content/examples/12-svg/03-area-chart/meta.json
diff --git a/site/content/examples/11-svg/04-scatterplot/App.svelte b/site/content/examples/12-svg/04-scatterplot/App.svelte
similarity index 100%
rename from site/content/examples/11-svg/04-scatterplot/App.svelte
rename to site/content/examples/12-svg/04-scatterplot/App.svelte
diff --git a/site/content/examples/11-svg/04-scatterplot/Scatterplot.svelte b/site/content/examples/12-svg/04-scatterplot/Scatterplot.svelte
similarity index 100%
rename from site/content/examples/11-svg/04-scatterplot/Scatterplot.svelte
rename to site/content/examples/12-svg/04-scatterplot/Scatterplot.svelte
diff --git a/site/content/examples/11-svg/04-scatterplot/data.js b/site/content/examples/12-svg/04-scatterplot/data.js
similarity index 100%
rename from site/content/examples/11-svg/04-scatterplot/data.js
rename to site/content/examples/12-svg/04-scatterplot/data.js
diff --git a/site/content/examples/11-svg/04-scatterplot/meta.json b/site/content/examples/12-svg/04-scatterplot/meta.json
similarity index 100%
rename from site/content/examples/11-svg/04-scatterplot/meta.json
rename to site/content/examples/12-svg/04-scatterplot/meta.json
diff --git a/site/content/examples/11-svg/05-svg-transitions/App.svelte b/site/content/examples/12-svg/05-svg-transitions/App.svelte
similarity index 100%
rename from site/content/examples/11-svg/05-svg-transitions/App.svelte
rename to site/content/examples/12-svg/05-svg-transitions/App.svelte
diff --git a/site/content/examples/11-svg/05-svg-transitions/custom-transitions.js b/site/content/examples/12-svg/05-svg-transitions/custom-transitions.js
similarity index 100%
rename from site/content/examples/11-svg/05-svg-transitions/custom-transitions.js
rename to site/content/examples/12-svg/05-svg-transitions/custom-transitions.js
diff --git a/site/content/examples/11-svg/05-svg-transitions/meta.json b/site/content/examples/12-svg/05-svg-transitions/meta.json
similarity index 100%
rename from site/content/examples/11-svg/05-svg-transitions/meta.json
rename to site/content/examples/12-svg/05-svg-transitions/meta.json
diff --git a/site/content/examples/11-svg/05-svg-transitions/shape.js b/site/content/examples/12-svg/05-svg-transitions/shape.js
similarity index 100%
rename from site/content/examples/11-svg/05-svg-transitions/shape.js
rename to site/content/examples/12-svg/05-svg-transitions/shape.js
diff --git a/site/content/examples/11-svg/meta.json b/site/content/examples/12-svg/meta.json
similarity index 100%
rename from site/content/examples/11-svg/meta.json
rename to site/content/examples/12-svg/meta.json
diff --git a/site/content/examples/12-actions/00-actions/App.svelte b/site/content/examples/13-actions/00-actions/App.svelte
similarity index 100%
rename from site/content/examples/12-actions/00-actions/App.svelte
rename to site/content/examples/13-actions/00-actions/App.svelte
diff --git a/site/content/examples/12-actions/00-actions/meta.json b/site/content/examples/13-actions/00-actions/meta.json
similarity index 100%
rename from site/content/examples/12-actions/00-actions/meta.json
rename to site/content/examples/13-actions/00-actions/meta.json
diff --git a/site/content/examples/12-actions/00-actions/pannable.js b/site/content/examples/13-actions/00-actions/pannable.js
similarity index 100%
rename from site/content/examples/12-actions/00-actions/pannable.js
rename to site/content/examples/13-actions/00-actions/pannable.js
diff --git a/site/content/examples/12-actions/01-adding-parameters-to-actions/App.svelte b/site/content/examples/13-actions/01-adding-parameters-to-actions/App.svelte
similarity index 100%
rename from site/content/examples/12-actions/01-adding-parameters-to-actions/App.svelte
rename to site/content/examples/13-actions/01-adding-parameters-to-actions/App.svelte
diff --git a/site/content/examples/12-actions/01-adding-parameters-to-actions/meta.json b/site/content/examples/13-actions/01-adding-parameters-to-actions/meta.json
similarity index 100%
rename from site/content/examples/12-actions/01-adding-parameters-to-actions/meta.json
rename to site/content/examples/13-actions/01-adding-parameters-to-actions/meta.json
diff --git a/site/content/examples/12-actions/meta.json b/site/content/examples/13-actions/meta.json
similarity index 100%
rename from site/content/examples/12-actions/meta.json
rename to site/content/examples/13-actions/meta.json
diff --git a/site/content/examples/13-classes/00-classes/App.svelte b/site/content/examples/14-classes/00-classes/App.svelte
similarity index 100%
rename from site/content/examples/13-classes/00-classes/App.svelte
rename to site/content/examples/14-classes/00-classes/App.svelte
diff --git a/site/content/examples/13-classes/00-classes/meta.json b/site/content/examples/14-classes/00-classes/meta.json
similarity index 100%
rename from site/content/examples/13-classes/00-classes/meta.json
rename to site/content/examples/14-classes/00-classes/meta.json
diff --git a/site/content/examples/13-classes/01-class-shorthand/App.svelte b/site/content/examples/14-classes/01-class-shorthand/App.svelte
similarity index 100%
rename from site/content/examples/13-classes/01-class-shorthand/App.svelte
rename to site/content/examples/14-classes/01-class-shorthand/App.svelte
diff --git a/site/content/examples/13-classes/01-class-shorthand/meta.json b/site/content/examples/14-classes/01-class-shorthand/meta.json
similarity index 100%
rename from site/content/examples/13-classes/01-class-shorthand/meta.json
rename to site/content/examples/14-classes/01-class-shorthand/meta.json
diff --git a/site/content/examples/13-classes/meta.json b/site/content/examples/14-classes/meta.json
similarity index 100%
rename from site/content/examples/13-classes/meta.json
rename to site/content/examples/14-classes/meta.json
diff --git a/site/content/examples/14-composition/00-slots/App.svelte b/site/content/examples/15-composition/00-slots/App.svelte
similarity index 100%
rename from site/content/examples/14-composition/00-slots/App.svelte
rename to site/content/examples/15-composition/00-slots/App.svelte
diff --git a/site/content/examples/14-composition/00-slots/Box.svelte b/site/content/examples/15-composition/00-slots/Box.svelte
similarity index 100%
rename from site/content/examples/14-composition/00-slots/Box.svelte
rename to site/content/examples/15-composition/00-slots/Box.svelte
diff --git a/site/content/examples/14-composition/00-slots/meta.json b/site/content/examples/15-composition/00-slots/meta.json
similarity index 100%
rename from site/content/examples/14-composition/00-slots/meta.json
rename to site/content/examples/15-composition/00-slots/meta.json
diff --git a/site/content/examples/14-composition/01-slot-fallbacks/App.svelte b/site/content/examples/15-composition/01-slot-fallbacks/App.svelte
similarity index 100%
rename from site/content/examples/14-composition/01-slot-fallbacks/App.svelte
rename to site/content/examples/15-composition/01-slot-fallbacks/App.svelte
diff --git a/site/content/examples/14-composition/01-slot-fallbacks/Box.svelte b/site/content/examples/15-composition/01-slot-fallbacks/Box.svelte
similarity index 100%
rename from site/content/examples/14-composition/01-slot-fallbacks/Box.svelte
rename to site/content/examples/15-composition/01-slot-fallbacks/Box.svelte
diff --git a/site/content/examples/14-composition/01-slot-fallbacks/meta.json b/site/content/examples/15-composition/01-slot-fallbacks/meta.json
similarity index 100%
rename from site/content/examples/14-composition/01-slot-fallbacks/meta.json
rename to site/content/examples/15-composition/01-slot-fallbacks/meta.json
diff --git a/site/content/examples/14-composition/02-named-slots/App.svelte b/site/content/examples/15-composition/02-named-slots/App.svelte
similarity index 100%
rename from site/content/examples/14-composition/02-named-slots/App.svelte
rename to site/content/examples/15-composition/02-named-slots/App.svelte
diff --git a/site/content/examples/14-composition/02-named-slots/ContactCard.svelte b/site/content/examples/15-composition/02-named-slots/ContactCard.svelte
similarity index 100%
rename from site/content/examples/14-composition/02-named-slots/ContactCard.svelte
rename to site/content/examples/15-composition/02-named-slots/ContactCard.svelte
diff --git a/site/content/examples/14-composition/02-named-slots/meta.json b/site/content/examples/15-composition/02-named-slots/meta.json
similarity index 100%
rename from site/content/examples/14-composition/02-named-slots/meta.json
rename to site/content/examples/15-composition/02-named-slots/meta.json
diff --git a/site/content/examples/14-composition/03-slot-props/App.svelte b/site/content/examples/15-composition/03-slot-props/App.svelte
similarity index 100%
rename from site/content/examples/14-composition/03-slot-props/App.svelte
rename to site/content/examples/15-composition/03-slot-props/App.svelte
diff --git a/site/content/examples/14-composition/03-slot-props/Hoverable.svelte b/site/content/examples/15-composition/03-slot-props/Hoverable.svelte
similarity index 100%
rename from site/content/examples/14-composition/03-slot-props/Hoverable.svelte
rename to site/content/examples/15-composition/03-slot-props/Hoverable.svelte
diff --git a/site/content/examples/14-composition/03-slot-props/meta.json b/site/content/examples/15-composition/03-slot-props/meta.json
similarity index 100%
rename from site/content/examples/14-composition/03-slot-props/meta.json
rename to site/content/examples/15-composition/03-slot-props/meta.json
diff --git a/site/content/examples/14-composition/04-modal/App.svelte b/site/content/examples/15-composition/04-modal/App.svelte
similarity index 100%
rename from site/content/examples/14-composition/04-modal/App.svelte
rename to site/content/examples/15-composition/04-modal/App.svelte
diff --git a/site/content/examples/14-composition/04-modal/Modal.svelte b/site/content/examples/15-composition/04-modal/Modal.svelte
similarity index 100%
rename from site/content/examples/14-composition/04-modal/Modal.svelte
rename to site/content/examples/15-composition/04-modal/Modal.svelte
diff --git a/site/content/examples/14-composition/04-modal/meta.json b/site/content/examples/15-composition/04-modal/meta.json
similarity index 100%
rename from site/content/examples/14-composition/04-modal/meta.json
rename to site/content/examples/15-composition/04-modal/meta.json
diff --git a/site/content/examples/14-composition/meta.json b/site/content/examples/15-composition/meta.json
similarity index 100%
rename from site/content/examples/14-composition/meta.json
rename to site/content/examples/15-composition/meta.json
diff --git a/site/content/examples/15-context/00-context-api/App.svelte b/site/content/examples/16-context/00-context-api/App.svelte
similarity index 100%
rename from site/content/examples/15-context/00-context-api/App.svelte
rename to site/content/examples/16-context/00-context-api/App.svelte
diff --git a/site/content/examples/15-context/00-context-api/Map.svelte b/site/content/examples/16-context/00-context-api/Map.svelte
similarity index 100%
rename from site/content/examples/15-context/00-context-api/Map.svelte
rename to site/content/examples/16-context/00-context-api/Map.svelte
diff --git a/site/content/examples/15-context/00-context-api/MapMarker.svelte b/site/content/examples/16-context/00-context-api/MapMarker.svelte
similarity index 100%
rename from site/content/examples/15-context/00-context-api/MapMarker.svelte
rename to site/content/examples/16-context/00-context-api/MapMarker.svelte
diff --git a/site/content/examples/15-context/00-context-api/mapbox.js b/site/content/examples/16-context/00-context-api/mapbox.js
similarity index 100%
rename from site/content/examples/15-context/00-context-api/mapbox.js
rename to site/content/examples/16-context/00-context-api/mapbox.js
diff --git a/site/content/examples/15-context/00-context-api/meta.json b/site/content/examples/16-context/00-context-api/meta.json
similarity index 100%
rename from site/content/examples/15-context/00-context-api/meta.json
rename to site/content/examples/16-context/00-context-api/meta.json
diff --git a/site/content/examples/15-context/meta.json b/site/content/examples/16-context/meta.json
similarity index 100%
rename from site/content/examples/15-context/meta.json
rename to site/content/examples/16-context/meta.json
diff --git a/site/content/examples/16-special-elements/00-svelte-self/App.svelte b/site/content/examples/17-special-elements/00-svelte-self/App.svelte
similarity index 100%
rename from site/content/examples/16-special-elements/00-svelte-self/App.svelte
rename to site/content/examples/17-special-elements/00-svelte-self/App.svelte
diff --git a/site/content/examples/16-special-elements/00-svelte-self/File.svelte b/site/content/examples/17-special-elements/00-svelte-self/File.svelte
similarity index 100%
rename from site/content/examples/16-special-elements/00-svelte-self/File.svelte
rename to site/content/examples/17-special-elements/00-svelte-self/File.svelte
diff --git a/site/content/examples/16-special-elements/00-svelte-self/Folder.svelte b/site/content/examples/17-special-elements/00-svelte-self/Folder.svelte
similarity index 100%
rename from site/content/examples/16-special-elements/00-svelte-self/Folder.svelte
rename to site/content/examples/17-special-elements/00-svelte-self/Folder.svelte
diff --git a/site/content/examples/16-special-elements/00-svelte-self/meta.json b/site/content/examples/17-special-elements/00-svelte-self/meta.json
similarity index 100%
rename from site/content/examples/16-special-elements/00-svelte-self/meta.json
rename to site/content/examples/17-special-elements/00-svelte-self/meta.json
diff --git a/site/content/examples/16-special-elements/01-svelte-component/App.svelte b/site/content/examples/17-special-elements/01-svelte-component/App.svelte
similarity index 100%
rename from site/content/examples/16-special-elements/01-svelte-component/App.svelte
rename to site/content/examples/17-special-elements/01-svelte-component/App.svelte
diff --git a/site/content/examples/16-special-elements/01-svelte-component/BlueThing.svelte b/site/content/examples/17-special-elements/01-svelte-component/BlueThing.svelte
similarity index 100%
rename from site/content/examples/16-special-elements/01-svelte-component/BlueThing.svelte
rename to site/content/examples/17-special-elements/01-svelte-component/BlueThing.svelte
diff --git a/site/content/examples/16-special-elements/01-svelte-component/GreenThing.svelte b/site/content/examples/17-special-elements/01-svelte-component/GreenThing.svelte
similarity index 100%
rename from site/content/examples/16-special-elements/01-svelte-component/GreenThing.svelte
rename to site/content/examples/17-special-elements/01-svelte-component/GreenThing.svelte
diff --git a/site/content/examples/16-special-elements/01-svelte-component/RedThing.svelte b/site/content/examples/17-special-elements/01-svelte-component/RedThing.svelte
similarity index 100%
rename from site/content/examples/16-special-elements/01-svelte-component/RedThing.svelte
rename to site/content/examples/17-special-elements/01-svelte-component/RedThing.svelte
diff --git a/site/content/examples/16-special-elements/01-svelte-component/meta.json b/site/content/examples/17-special-elements/01-svelte-component/meta.json
similarity index 100%
rename from site/content/examples/16-special-elements/01-svelte-component/meta.json
rename to site/content/examples/17-special-elements/01-svelte-component/meta.json
diff --git a/site/content/examples/16-special-elements/02-svelte-window/App.svelte b/site/content/examples/17-special-elements/02-svelte-window/App.svelte
similarity index 100%
rename from site/content/examples/16-special-elements/02-svelte-window/App.svelte
rename to site/content/examples/17-special-elements/02-svelte-window/App.svelte
diff --git a/site/content/examples/16-special-elements/02-svelte-window/meta.json b/site/content/examples/17-special-elements/02-svelte-window/meta.json
similarity index 100%
rename from site/content/examples/16-special-elements/02-svelte-window/meta.json
rename to site/content/examples/17-special-elements/02-svelte-window/meta.json
diff --git a/site/content/examples/16-special-elements/03-svelte-window-bindings/App.svelte b/site/content/examples/17-special-elements/03-svelte-window-bindings/App.svelte
similarity index 100%
rename from site/content/examples/16-special-elements/03-svelte-window-bindings/App.svelte
rename to site/content/examples/17-special-elements/03-svelte-window-bindings/App.svelte
diff --git a/site/content/examples/16-special-elements/03-svelte-window-bindings/meta.json b/site/content/examples/17-special-elements/03-svelte-window-bindings/meta.json
similarity index 100%
rename from site/content/examples/16-special-elements/03-svelte-window-bindings/meta.json
rename to site/content/examples/17-special-elements/03-svelte-window-bindings/meta.json
diff --git a/site/content/examples/16-special-elements/04-svelte-body/App.svelte b/site/content/examples/17-special-elements/04-svelte-body/App.svelte
similarity index 100%
rename from site/content/examples/16-special-elements/04-svelte-body/App.svelte
rename to site/content/examples/17-special-elements/04-svelte-body/App.svelte
diff --git a/site/content/examples/16-special-elements/04-svelte-body/meta.json b/site/content/examples/17-special-elements/04-svelte-body/meta.json
similarity index 100%
rename from site/content/examples/16-special-elements/04-svelte-body/meta.json
rename to site/content/examples/17-special-elements/04-svelte-body/meta.json
diff --git a/site/content/examples/16-special-elements/05-svelte-head/App.svelte b/site/content/examples/17-special-elements/05-svelte-head/App.svelte
similarity index 100%
rename from site/content/examples/16-special-elements/05-svelte-head/App.svelte
rename to site/content/examples/17-special-elements/05-svelte-head/App.svelte
diff --git a/site/content/examples/16-special-elements/05-svelte-head/meta.json b/site/content/examples/17-special-elements/05-svelte-head/meta.json
similarity index 100%
rename from site/content/examples/16-special-elements/05-svelte-head/meta.json
rename to site/content/examples/17-special-elements/05-svelte-head/meta.json
diff --git a/site/content/examples/16-special-elements/meta.json b/site/content/examples/17-special-elements/meta.json
similarity index 100%
rename from site/content/examples/16-special-elements/meta.json
rename to site/content/examples/17-special-elements/meta.json
diff --git a/site/content/examples/17-module-context/01-module-exports/App.svelte b/site/content/examples/18-module-context/01-module-exports/App.svelte
similarity index 100%
rename from site/content/examples/17-module-context/01-module-exports/App.svelte
rename to site/content/examples/18-module-context/01-module-exports/App.svelte
diff --git a/site/content/examples/17-module-context/01-module-exports/AudioPlayer.svelte b/site/content/examples/18-module-context/01-module-exports/AudioPlayer.svelte
similarity index 100%
rename from site/content/examples/17-module-context/01-module-exports/AudioPlayer.svelte
rename to site/content/examples/18-module-context/01-module-exports/AudioPlayer.svelte
diff --git a/site/content/examples/17-module-context/01-module-exports/meta.json b/site/content/examples/18-module-context/01-module-exports/meta.json
similarity index 100%
rename from site/content/examples/17-module-context/01-module-exports/meta.json
rename to site/content/examples/18-module-context/01-module-exports/meta.json
diff --git a/site/content/examples/17-module-context/meta.json b/site/content/examples/18-module-context/meta.json
similarity index 100%
rename from site/content/examples/17-module-context/meta.json
rename to site/content/examples/18-module-context/meta.json
diff --git a/site/content/examples/18-debugging/00-debug/App.svelte b/site/content/examples/19-debugging/00-debug/App.svelte
similarity index 100%
rename from site/content/examples/18-debugging/00-debug/App.svelte
rename to site/content/examples/19-debugging/00-debug/App.svelte
diff --git a/site/content/examples/18-debugging/00-debug/meta.json b/site/content/examples/19-debugging/00-debug/meta.json
similarity index 100%
rename from site/content/examples/18-debugging/00-debug/meta.json
rename to site/content/examples/19-debugging/00-debug/meta.json
diff --git a/site/content/examples/18-debugging/meta.json b/site/content/examples/19-debugging/meta.json
similarity index 100%
rename from site/content/examples/18-debugging/meta.json
rename to site/content/examples/19-debugging/meta.json
diff --git a/site/content/examples/19-7guis/01-7guis-counter/App.svelte b/site/content/examples/20-7guis/01-7guis-counter/App.svelte
similarity index 100%
rename from site/content/examples/19-7guis/01-7guis-counter/App.svelte
rename to site/content/examples/20-7guis/01-7guis-counter/App.svelte
diff --git a/site/content/examples/19-7guis/01-7guis-counter/meta.json b/site/content/examples/20-7guis/01-7guis-counter/meta.json
similarity index 100%
rename from site/content/examples/19-7guis/01-7guis-counter/meta.json
rename to site/content/examples/20-7guis/01-7guis-counter/meta.json
diff --git a/site/content/examples/19-7guis/02-7guis-temperature/App.svelte b/site/content/examples/20-7guis/02-7guis-temperature/App.svelte
similarity index 100%
rename from site/content/examples/19-7guis/02-7guis-temperature/App.svelte
rename to site/content/examples/20-7guis/02-7guis-temperature/App.svelte
diff --git a/site/content/examples/19-7guis/02-7guis-temperature/meta.json b/site/content/examples/20-7guis/02-7guis-temperature/meta.json
similarity index 100%
rename from site/content/examples/19-7guis/02-7guis-temperature/meta.json
rename to site/content/examples/20-7guis/02-7guis-temperature/meta.json
diff --git a/site/content/examples/19-7guis/03-7guis-flight-booker/App.svelte b/site/content/examples/20-7guis/03-7guis-flight-booker/App.svelte
similarity index 100%
rename from site/content/examples/19-7guis/03-7guis-flight-booker/App.svelte
rename to site/content/examples/20-7guis/03-7guis-flight-booker/App.svelte
diff --git a/site/content/examples/19-7guis/03-7guis-flight-booker/meta.json b/site/content/examples/20-7guis/03-7guis-flight-booker/meta.json
similarity index 100%
rename from site/content/examples/19-7guis/03-7guis-flight-booker/meta.json
rename to site/content/examples/20-7guis/03-7guis-flight-booker/meta.json
diff --git a/site/content/examples/19-7guis/04-7guis-timer/App.svelte b/site/content/examples/20-7guis/04-7guis-timer/App.svelte
similarity index 100%
rename from site/content/examples/19-7guis/04-7guis-timer/App.svelte
rename to site/content/examples/20-7guis/04-7guis-timer/App.svelte
diff --git a/site/content/examples/19-7guis/04-7guis-timer/meta.json b/site/content/examples/20-7guis/04-7guis-timer/meta.json
similarity index 100%
rename from site/content/examples/19-7guis/04-7guis-timer/meta.json
rename to site/content/examples/20-7guis/04-7guis-timer/meta.json
diff --git a/site/content/examples/19-7guis/05-7guis-crud/App.svelte b/site/content/examples/20-7guis/05-7guis-crud/App.svelte
similarity index 82%
rename from site/content/examples/19-7guis/05-7guis-crud/App.svelte
rename to site/content/examples/20-7guis/05-7guis-crud/App.svelte
index 1f39fe6642..f55aeb0d83 100644
--- a/site/content/examples/19-7guis/05-7guis-crud/App.svelte
+++ b/site/content/examples/20-7guis/05-7guis-crud/App.svelte
@@ -30,10 +30,7 @@
$: selected = filteredPeople[i];
- $: {
- first = selected ? selected.first : '';
- last = selected ? selected.last : '';
- }
+ $: reset_inputs(selected);
function create() {
people = people.concat({ first, last });
@@ -46,14 +43,17 @@
}
function remove() {
- people = [...people.slice(0, i), ...people.slice(i + 1)];
+ // Remove selected person from the source array (people), not the filtered array
+ const index = people.indexOf(selected);
+ people = [...people.slice(0, index), ...people.slice(index + 1)];
first = last = '';
- i = Math.min(i, people.length - 1);
+ i = Math.min(i, filteredPeople.length - 2);
}
function reset_inputs(person) {
- ({ first, last } = person);
+ first = person ? person.first : '';
+ last = person ? person.last : '';
}
diff --git a/site/content/examples/19-7guis/05-7guis-crud/meta.json b/site/content/examples/20-7guis/05-7guis-crud/meta.json
similarity index 100%
rename from site/content/examples/19-7guis/05-7guis-crud/meta.json
rename to site/content/examples/20-7guis/05-7guis-crud/meta.json
diff --git a/site/content/examples/19-7guis/06-7guis-circles/App.svelte b/site/content/examples/20-7guis/06-7guis-circles/App.svelte
similarity index 100%
rename from site/content/examples/19-7guis/06-7guis-circles/App.svelte
rename to site/content/examples/20-7guis/06-7guis-circles/App.svelte
diff --git a/site/content/examples/19-7guis/06-7guis-circles/meta.json b/site/content/examples/20-7guis/06-7guis-circles/meta.json
similarity index 100%
rename from site/content/examples/19-7guis/06-7guis-circles/meta.json
rename to site/content/examples/20-7guis/06-7guis-circles/meta.json
diff --git a/site/content/examples/19-7guis/meta.json b/site/content/examples/20-7guis/meta.json
similarity index 100%
rename from site/content/examples/19-7guis/meta.json
rename to site/content/examples/20-7guis/meta.json
diff --git a/site/content/examples/20-miscellaneous/01-hacker-news/App.svelte b/site/content/examples/21-miscellaneous/01-hacker-news/App.svelte
similarity index 100%
rename from site/content/examples/20-miscellaneous/01-hacker-news/App.svelte
rename to site/content/examples/21-miscellaneous/01-hacker-news/App.svelte
diff --git a/site/content/examples/20-miscellaneous/01-hacker-news/Comment.svelte b/site/content/examples/21-miscellaneous/01-hacker-news/Comment.svelte
similarity index 100%
rename from site/content/examples/20-miscellaneous/01-hacker-news/Comment.svelte
rename to site/content/examples/21-miscellaneous/01-hacker-news/Comment.svelte
diff --git a/site/content/examples/20-miscellaneous/01-hacker-news/Item.svelte b/site/content/examples/21-miscellaneous/01-hacker-news/Item.svelte
similarity index 100%
rename from site/content/examples/20-miscellaneous/01-hacker-news/Item.svelte
rename to site/content/examples/21-miscellaneous/01-hacker-news/Item.svelte
diff --git a/site/content/examples/20-miscellaneous/01-hacker-news/List.svelte b/site/content/examples/21-miscellaneous/01-hacker-news/List.svelte
similarity index 100%
rename from site/content/examples/20-miscellaneous/01-hacker-news/List.svelte
rename to site/content/examples/21-miscellaneous/01-hacker-news/List.svelte
diff --git a/site/content/examples/20-miscellaneous/01-hacker-news/Summary.svelte b/site/content/examples/21-miscellaneous/01-hacker-news/Summary.svelte
similarity index 100%
rename from site/content/examples/20-miscellaneous/01-hacker-news/Summary.svelte
rename to site/content/examples/21-miscellaneous/01-hacker-news/Summary.svelte
diff --git a/site/content/examples/20-miscellaneous/01-hacker-news/meta.json b/site/content/examples/21-miscellaneous/01-hacker-news/meta.json
similarity index 100%
rename from site/content/examples/20-miscellaneous/01-hacker-news/meta.json
rename to site/content/examples/21-miscellaneous/01-hacker-news/meta.json
diff --git a/site/content/examples/20-miscellaneous/02-immutable-data/App.svelte b/site/content/examples/21-miscellaneous/02-immutable-data/App.svelte
similarity index 100%
rename from site/content/examples/20-miscellaneous/02-immutable-data/App.svelte
rename to site/content/examples/21-miscellaneous/02-immutable-data/App.svelte
diff --git a/site/content/examples/20-miscellaneous/02-immutable-data/ImmutableTodo.svelte b/site/content/examples/21-miscellaneous/02-immutable-data/ImmutableTodo.svelte
similarity index 100%
rename from site/content/examples/20-miscellaneous/02-immutable-data/ImmutableTodo.svelte
rename to site/content/examples/21-miscellaneous/02-immutable-data/ImmutableTodo.svelte
diff --git a/site/content/examples/20-miscellaneous/02-immutable-data/MutableTodo.svelte b/site/content/examples/21-miscellaneous/02-immutable-data/MutableTodo.svelte
similarity index 100%
rename from site/content/examples/20-miscellaneous/02-immutable-data/MutableTodo.svelte
rename to site/content/examples/21-miscellaneous/02-immutable-data/MutableTodo.svelte
diff --git a/site/content/examples/20-miscellaneous/02-immutable-data/flash.js b/site/content/examples/21-miscellaneous/02-immutable-data/flash.js
similarity index 100%
rename from site/content/examples/20-miscellaneous/02-immutable-data/flash.js
rename to site/content/examples/21-miscellaneous/02-immutable-data/flash.js
diff --git a/site/content/examples/20-miscellaneous/02-immutable-data/meta.json b/site/content/examples/21-miscellaneous/02-immutable-data/meta.json
similarity index 100%
rename from site/content/examples/20-miscellaneous/02-immutable-data/meta.json
rename to site/content/examples/21-miscellaneous/02-immutable-data/meta.json
diff --git a/site/content/examples/20-miscellaneous/meta.json b/site/content/examples/21-miscellaneous/meta.json
similarity index 100%
rename from site/content/examples/20-miscellaneous/meta.json
rename to site/content/examples/21-miscellaneous/meta.json
diff --git a/site/content/examples/99-embeds/20181225-blog-svelte-css-in-js/App.svelte b/site/content/examples/99-embeds/20181225-blog-svelte-css-in-js/App.svelte
index c8487abefe..ccb1ad8834 100644
--- a/site/content/examples/99-embeds/20181225-blog-svelte-css-in-js/App.svelte
+++ b/site/content/examples/99-embeds/20181225-blog-svelte-css-in-js/App.svelte
@@ -1,6 +1,6 @@
diff --git a/site/content/examples/99-embeds/20181225-blog-svelte-css-in-js/styles.js b/site/content/examples/99-embeds/20181225-blog-svelte-css-in-js/styles.js
index faf91b13d4..c7e10606c5 100644
--- a/site/content/examples/99-embeds/20181225-blog-svelte-css-in-js/styles.js
+++ b/site/content/examples/99-embeds/20181225-blog-svelte-css-in-js/styles.js
@@ -1,4 +1,6 @@
-import { css } from 'emotion/dist/emotion.umd.min.js';
+import emotion from 'emotion/dist/emotion.umd.min.js';
+
+const { css } = emotion;
const brand = '#74D900';
@@ -30,4 +32,4 @@ export const link = css`
text-decoration: none;
background: ${brand};
}
-`;
\ No newline at end of file
+`;
diff --git a/site/content/tutorial/01-introduction/03-dynamic-attributes/app-b/App.svelte b/site/content/tutorial/01-introduction/03-dynamic-attributes/app-b/App.svelte
index 6a12752e1a..e61b4d48e0 100644
--- a/site/content/tutorial/01-introduction/03-dynamic-attributes/app-b/App.svelte
+++ b/site/content/tutorial/01-introduction/03-dynamic-attributes/app-b/App.svelte
@@ -3,4 +3,4 @@
let name = 'Rick Astley';
-
\ No newline at end of file
+
diff --git a/site/content/tutorial/01-introduction/03-dynamic-attributes/text.md b/site/content/tutorial/01-introduction/03-dynamic-attributes/text.md
index 1fd6774b8a..c503b4f548 100644
--- a/site/content/tutorial/01-introduction/03-dynamic-attributes/text.md
+++ b/site/content/tutorial/01-introduction/03-dynamic-attributes/text.md
@@ -19,10 +19,10 @@ When building web apps, it's important to make sure that they're *accessible* to
In this case, we're missing the `alt` attribute that describes the image for people using screenreaders, or people with slow or flaky internet connections that can't download the image. Let's add one:
```html
-
+
```
-We can use curly braces *inside* attributes. Try changing it to `"{name} dancing"` — remember to declare a `name` variable in the `
```
-If we now instantiate the component without an `answer` prop, it will fall back to the default:
+If we now add a second component *without* an `answer` prop, it will fall back to the default:
```html
-```
\ No newline at end of file
+```
diff --git a/site/content/tutorial/04-logic/05-keyed-each-blocks/app-a/App.svelte b/site/content/tutorial/04-logic/05-keyed-each-blocks/app-a/App.svelte
index 3d4a2c801d..7cb18e2cda 100644
--- a/site/content/tutorial/04-logic/05-keyed-each-blocks/app-a/App.svelte
+++ b/site/content/tutorial/04-logic/05-keyed-each-blocks/app-a/App.svelte
@@ -2,11 +2,11 @@
import Thing from './Thing.svelte';
let things = [
- { id: 1, value: 'a' },
- { id: 2, value: 'b' },
- { id: 3, value: 'c' },
- { id: 4, value: 'd' },
- { id: 5, value: 'e' }
+ { id: 1, color: '#0d0887' },
+ { id: 2, color: '#6a00a8' },
+ { id: 3, color: '#b12a90' },
+ { id: 4, color: '#e16462' },
+ { id: 5, color: '#fca636' }
];
function handleClick() {
@@ -19,5 +19,5 @@
{#each things as thing}
-
+
{/each}
\ No newline at end of file
diff --git a/site/content/tutorial/04-logic/05-keyed-each-blocks/app-a/Thing.svelte b/site/content/tutorial/04-logic/05-keyed-each-blocks/app-a/Thing.svelte
index 4e86d32109..28c3c65d05 100644
--- a/site/content/tutorial/04-logic/05-keyed-each-blocks/app-a/Thing.svelte
+++ b/site/content/tutorial/04-logic/05-keyed-each-blocks/app-a/Thing.svelte
@@ -1,9 +1,24 @@
-{valueAtStart} / {value}
\ No newline at end of file
+
+ initial
+ current
+
+
+
\ No newline at end of file
diff --git a/site/content/tutorial/04-logic/05-keyed-each-blocks/app-b/App.svelte b/site/content/tutorial/04-logic/05-keyed-each-blocks/app-b/App.svelte
index 73a2dcc609..48a2151875 100644
--- a/site/content/tutorial/04-logic/05-keyed-each-blocks/app-b/App.svelte
+++ b/site/content/tutorial/04-logic/05-keyed-each-blocks/app-b/App.svelte
@@ -2,11 +2,11 @@
import Thing from './Thing.svelte';
let things = [
- { id: 1, value: 'a' },
- { id: 2, value: 'b' },
- { id: 3, value: 'c' },
- { id: 4, value: 'd' },
- { id: 5, value: 'e' }
+ { id: 1, color: '#0d0887' },
+ { id: 2, color: '#6a00a8' },
+ { id: 3, color: '#b12a90' },
+ { id: 4, color: '#e16462' },
+ { id: 5, color: '#fca636' }
];
function handleClick() {
@@ -19,5 +19,5 @@
{#each things as thing (thing.id)}
-
+
{/each}
\ No newline at end of file
diff --git a/site/content/tutorial/04-logic/05-keyed-each-blocks/app-b/Thing.svelte b/site/content/tutorial/04-logic/05-keyed-each-blocks/app-b/Thing.svelte
index 4e86d32109..28c3c65d05 100644
--- a/site/content/tutorial/04-logic/05-keyed-each-blocks/app-b/Thing.svelte
+++ b/site/content/tutorial/04-logic/05-keyed-each-blocks/app-b/Thing.svelte
@@ -1,9 +1,24 @@
-{valueAtStart} / {value}
\ No newline at end of file
+
+ initial
+ current
+
+
+
\ No newline at end of file
diff --git a/site/content/tutorial/04-logic/05-keyed-each-blocks/text.md b/site/content/tutorial/04-logic/05-keyed-each-blocks/text.md
index e8bac7d8df..3c204d1413 100644
--- a/site/content/tutorial/04-logic/05-keyed-each-blocks/text.md
+++ b/site/content/tutorial/04-logic/05-keyed-each-blocks/text.md
@@ -4,7 +4,7 @@ title: Keyed each blocks
By default, when you modify the value of an `each` block, it will add and remove items at the *end* of the block, and update any values that have changed. That might not be what you want.
-It's easier to show why than to explain. Click the 'Remove first item' button a few times, and notice that it's removing `` components from the end and updating the `value` for those that remain. Instead, we'd like to remove the first `` component and leave the rest unaffected.
+It's easier to show why than to explain. Click the 'Remove first thing' button a few times, and notice that it's removing `` components from the end and updating the `value` for those that remain. Instead, we'd like to remove the first `` component and leave the rest unaffected.
To do that, we specify a unique identifier for the `each` block:
@@ -16,4 +16,4 @@ To do that, we specify a unique identifier for the `each` block:
The `(thing.id)` tells Svelte how to figure out what changed.
-> You can use any object as the key, as Svelte uses a `Map` internally — in other words you could do `(thing)` instead of `(thing.id)`. Using a string or number is generally safer, however, since it means identity persists without referential equality, for example when updating with fresh data from an API server.
\ No newline at end of file
+> You can use any object as the key, as Svelte uses a `Map` internally — in other words you could do `(thing)` instead of `(thing.id)`. Using a string or number is generally safer, however, since it means identity persists without referential equality, for example when updating with fresh data from an API server.
diff --git a/site/content/tutorial/05-events/03-event-modifiers/text.md b/site/content/tutorial/05-events/03-event-modifiers/text.md
index 73386dd096..41154cafcd 100644
--- a/site/content/tutorial/05-events/03-event-modifiers/text.md
+++ b/site/content/tutorial/05-events/03-event-modifiers/text.md
@@ -23,5 +23,6 @@ The full list of modifiers:
* `passive` — improves scrolling performance on touch/wheel events (Svelte will add it automatically where it's safe to do so)
* `capture` — fires the handler during the *capture* phase instead of the *bubbling* phase ([MDN docs](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Building_blocks/Events#Event_bubbling_and_capture))
* `once` — remove the handler after the first time it runs
+* `self` — only trigger handler if event.target is the element itself
You can chain modifiers together, e.g. `on:click|once|capture={...}`.
diff --git a/site/content/tutorial/06-bindings/01-text-inputs/text.md b/site/content/tutorial/06-bindings/01-text-inputs/text.md
index 7bcbc96fa6..7bfe4bb86c 100644
--- a/site/content/tutorial/06-bindings/01-text-inputs/text.md
+++ b/site/content/tutorial/06-bindings/01-text-inputs/text.md
@@ -4,7 +4,7 @@ title: Text inputs
As a general rule, data flow in Svelte is *top down* — a parent component can set props on a child component, and a component can set attributes on an element, but not the other way around.
-Sometimes it's useful to break that rule. Take the case of the ` ` element in this component — we *could* add an `on:input` event handler that set the value of `name` to `event.target.value`, but it's a bit... boilerplatey. It gets even worse with other form elements, as we'll see.
+Sometimes it's useful to break that rule. Take the case of the ` ` element in this component — we *could* add an `on:input` event handler that sets the value of `name` to `event.target.value`, but it's a bit... boilerplatey. It gets even worse with other form elements, as we'll see.
Instead, we can use the `bind:value` directive:
diff --git a/site/content/tutorial/06-bindings/08-contenteditable-bindings/app-a/App.svelte b/site/content/tutorial/06-bindings/08-contenteditable-bindings/app-a/App.svelte
new file mode 100644
index 0000000000..55d699959c
--- /dev/null
+++ b/site/content/tutorial/06-bindings/08-contenteditable-bindings/app-a/App.svelte
@@ -0,0 +1,15 @@
+
+
+
+
+{html}
+
+
\ No newline at end of file
diff --git a/site/content/tutorial/06-bindings/08-contenteditable-bindings/app-b/App.svelte b/site/content/tutorial/06-bindings/08-contenteditable-bindings/app-b/App.svelte
new file mode 100644
index 0000000000..ee97cf19c0
--- /dev/null
+++ b/site/content/tutorial/06-bindings/08-contenteditable-bindings/app-b/App.svelte
@@ -0,0 +1,18 @@
+
+
+
+
+{html}
+
+
\ No newline at end of file
diff --git a/site/content/tutorial/06-bindings/08-contenteditable-bindings/text.md b/site/content/tutorial/06-bindings/08-contenteditable-bindings/text.md
new file mode 100644
index 0000000000..a73b07c0ba
--- /dev/null
+++ b/site/content/tutorial/06-bindings/08-contenteditable-bindings/text.md
@@ -0,0 +1,12 @@
+---
+title: Contenteditable bindings
+---
+
+Elements with a `contenteditable="true"` attribute support `textContent` and `innerHTML` bindings:
+
+```html
+
+```
\ No newline at end of file
diff --git a/site/content/tutorial/06-bindings/08-each-block-bindings/app-a/App.svelte b/site/content/tutorial/06-bindings/09-each-block-bindings/app-a/App.svelte
similarity index 100%
rename from site/content/tutorial/06-bindings/08-each-block-bindings/app-a/App.svelte
rename to site/content/tutorial/06-bindings/09-each-block-bindings/app-a/App.svelte
diff --git a/site/content/tutorial/06-bindings/08-each-block-bindings/app-b/App.svelte b/site/content/tutorial/06-bindings/09-each-block-bindings/app-b/App.svelte
similarity index 100%
rename from site/content/tutorial/06-bindings/08-each-block-bindings/app-b/App.svelte
rename to site/content/tutorial/06-bindings/09-each-block-bindings/app-b/App.svelte
diff --git a/site/content/tutorial/06-bindings/08-each-block-bindings/text.md b/site/content/tutorial/06-bindings/09-each-block-bindings/text.md
similarity index 100%
rename from site/content/tutorial/06-bindings/08-each-block-bindings/text.md
rename to site/content/tutorial/06-bindings/09-each-block-bindings/text.md
diff --git a/site/content/tutorial/06-bindings/09-media-elements/app-a/App.svelte b/site/content/tutorial/06-bindings/10-media-elements/app-a/App.svelte
similarity index 100%
rename from site/content/tutorial/06-bindings/09-media-elements/app-a/App.svelte
rename to site/content/tutorial/06-bindings/10-media-elements/app-a/App.svelte
diff --git a/site/content/tutorial/06-bindings/09-media-elements/app-b/App.svelte b/site/content/tutorial/06-bindings/10-media-elements/app-b/App.svelte
similarity index 100%
rename from site/content/tutorial/06-bindings/09-media-elements/app-b/App.svelte
rename to site/content/tutorial/06-bindings/10-media-elements/app-b/App.svelte
diff --git a/site/content/tutorial/06-bindings/09-media-elements/text.md b/site/content/tutorial/06-bindings/10-media-elements/text.md
similarity index 100%
rename from site/content/tutorial/06-bindings/09-media-elements/text.md
rename to site/content/tutorial/06-bindings/10-media-elements/text.md
diff --git a/site/content/tutorial/06-bindings/10-dimensions/app-a/App.svelte b/site/content/tutorial/06-bindings/11-dimensions/app-a/App.svelte
similarity index 100%
rename from site/content/tutorial/06-bindings/10-dimensions/app-a/App.svelte
rename to site/content/tutorial/06-bindings/11-dimensions/app-a/App.svelte
diff --git a/site/content/tutorial/06-bindings/10-dimensions/app-b/App.svelte b/site/content/tutorial/06-bindings/11-dimensions/app-b/App.svelte
similarity index 100%
rename from site/content/tutorial/06-bindings/10-dimensions/app-b/App.svelte
rename to site/content/tutorial/06-bindings/11-dimensions/app-b/App.svelte
diff --git a/site/content/tutorial/06-bindings/10-dimensions/text.md b/site/content/tutorial/06-bindings/11-dimensions/text.md
similarity index 100%
rename from site/content/tutorial/06-bindings/10-dimensions/text.md
rename to site/content/tutorial/06-bindings/11-dimensions/text.md
diff --git a/site/content/tutorial/06-bindings/11-bind-this/app-a/App.svelte b/site/content/tutorial/06-bindings/12-bind-this/app-a/App.svelte
similarity index 100%
rename from site/content/tutorial/06-bindings/11-bind-this/app-a/App.svelte
rename to site/content/tutorial/06-bindings/12-bind-this/app-a/App.svelte
diff --git a/site/content/tutorial/06-bindings/11-bind-this/app-b/App.svelte b/site/content/tutorial/06-bindings/12-bind-this/app-b/App.svelte
similarity index 100%
rename from site/content/tutorial/06-bindings/11-bind-this/app-b/App.svelte
rename to site/content/tutorial/06-bindings/12-bind-this/app-b/App.svelte
diff --git a/site/content/tutorial/06-bindings/11-bind-this/text.md b/site/content/tutorial/06-bindings/12-bind-this/text.md
similarity index 94%
rename from site/content/tutorial/06-bindings/11-bind-this/text.md
rename to site/content/tutorial/06-bindings/12-bind-this/text.md
index e53b624057..4784b6b13f 100644
--- a/site/content/tutorial/06-bindings/11-bind-this/text.md
+++ b/site/content/tutorial/06-bindings/12-bind-this/text.md
@@ -7,8 +7,8 @@ The readonly `this` binding applies to every element (and component) and allows
```html
```
diff --git a/site/content/tutorial/06-bindings/12-component-bindings/app-a/App.svelte b/site/content/tutorial/06-bindings/13-component-bindings/app-a/App.svelte
similarity index 100%
rename from site/content/tutorial/06-bindings/12-component-bindings/app-a/App.svelte
rename to site/content/tutorial/06-bindings/13-component-bindings/app-a/App.svelte
diff --git a/site/content/tutorial/06-bindings/12-component-bindings/app-a/Keypad.svelte b/site/content/tutorial/06-bindings/13-component-bindings/app-a/Keypad.svelte
similarity index 100%
rename from site/content/tutorial/06-bindings/12-component-bindings/app-a/Keypad.svelte
rename to site/content/tutorial/06-bindings/13-component-bindings/app-a/Keypad.svelte
diff --git a/site/content/tutorial/06-bindings/12-component-bindings/app-b/App.svelte b/site/content/tutorial/06-bindings/13-component-bindings/app-b/App.svelte
similarity index 100%
rename from site/content/tutorial/06-bindings/12-component-bindings/app-b/App.svelte
rename to site/content/tutorial/06-bindings/13-component-bindings/app-b/App.svelte
diff --git a/site/content/tutorial/06-bindings/12-component-bindings/app-b/Keypad.svelte b/site/content/tutorial/06-bindings/13-component-bindings/app-b/Keypad.svelte
similarity index 100%
rename from site/content/tutorial/06-bindings/12-component-bindings/app-b/Keypad.svelte
rename to site/content/tutorial/06-bindings/13-component-bindings/app-b/Keypad.svelte
diff --git a/site/content/tutorial/06-bindings/12-component-bindings/text.md b/site/content/tutorial/06-bindings/13-component-bindings/text.md
similarity index 100%
rename from site/content/tutorial/06-bindings/12-component-bindings/text.md
rename to site/content/tutorial/06-bindings/13-component-bindings/text.md
diff --git a/site/content/tutorial/07-lifecycle/03-update/app-a/App.svelte b/site/content/tutorial/07-lifecycle/03-update/app-a/App.svelte
index 2081b6ab8c..75fce63ca2 100644
--- a/site/content/tutorial/07-lifecycle/03-update/app-a/App.svelte
+++ b/site/content/tutorial/07-lifecycle/03-update/app-a/App.svelte
@@ -1,5 +1,5 @@
+
+Hello
+
+
diff --git a/test/css/samples/css-vars/expected.css b/test/css/samples/css-vars/expected.css
index ccb7a3ec48..c2bd56375b 100644
--- a/test/css/samples/css-vars/expected.css
+++ b/test/css/samples/css-vars/expected.css
@@ -1 +1 @@
-div.svelte-xyz{--test:10}
\ No newline at end of file
+:root{--root-test:20}div.svelte-xyz{--test:10}
\ No newline at end of file
diff --git a/test/css/samples/css-vars/input.svelte b/test/css/samples/css-vars/input.svelte
index dafa7d09e4..7aa48617a4 100644
--- a/test/css/samples/css-vars/input.svelte
+++ b/test/css/samples/css-vars/input.svelte
@@ -1,7 +1,10 @@
\ No newline at end of file
+
diff --git a/test/css/samples/directive-special-character/expected.css b/test/css/samples/directive-special-character/expected.css
new file mode 100644
index 0000000000..8b25d59d2e
--- /dev/null
+++ b/test/css/samples/directive-special-character/expected.css
@@ -0,0 +1 @@
+.foo\:bar.svelte-xyz{color:red}
\ No newline at end of file
diff --git a/test/css/samples/directive-special-character/expected.html b/test/css/samples/directive-special-character/expected.html
new file mode 100644
index 0000000000..40eff4ca21
--- /dev/null
+++ b/test/css/samples/directive-special-character/expected.html
@@ -0,0 +1 @@
+Hello world
\ No newline at end of file
diff --git a/test/css/samples/directive-special-character/input.svelte b/test/css/samples/directive-special-character/input.svelte
new file mode 100644
index 0000000000..8f95fe1355
--- /dev/null
+++ b/test/css/samples/directive-special-character/input.svelte
@@ -0,0 +1,11 @@
+
+
+Hello world
+
+
diff --git a/test/css/samples/global-keyframes-with-no-elements/expected.css b/test/css/samples/global-keyframes-with-no-elements/expected.css
new file mode 100644
index 0000000000..50a57ac471
--- /dev/null
+++ b/test/css/samples/global-keyframes-with-no-elements/expected.css
@@ -0,0 +1 @@
+@keyframes why{0%{color:red}100%{color:blue}}
\ No newline at end of file
diff --git a/test/css/samples/global-keyframes-with-no-elements/input.svelte b/test/css/samples/global-keyframes-with-no-elements/input.svelte
new file mode 100644
index 0000000000..09499df7ee
--- /dev/null
+++ b/test/css/samples/global-keyframes-with-no-elements/input.svelte
@@ -0,0 +1,6 @@
+
\ No newline at end of file
diff --git a/test/css/samples/not-selector/expected.css b/test/css/samples/not-selector/expected.css
new file mode 100644
index 0000000000..83a819a9e0
--- /dev/null
+++ b/test/css/samples/not-selector/expected.css
@@ -0,0 +1 @@
+.svelte-xyz:not(.foo){color:red}
\ No newline at end of file
diff --git a/test/css/samples/not-selector/input.svelte b/test/css/samples/not-selector/input.svelte
new file mode 100644
index 0000000000..31a880f2bb
--- /dev/null
+++ b/test/css/samples/not-selector/input.svelte
@@ -0,0 +1,8 @@
+foo
+bar
+
+
\ No newline at end of file
diff --git a/test/css/samples/unknown-at-rule-with-following-rules/expected.css b/test/css/samples/unknown-at-rule-with-following-rules/expected.css
new file mode 100644
index 0000000000..31c3bf9c6f
--- /dev/null
+++ b/test/css/samples/unknown-at-rule-with-following-rules/expected.css
@@ -0,0 +1 @@
+div.svelte-xyz{@apply --funky-div;}
\ No newline at end of file
diff --git a/test/css/samples/unknown-at-rule-with-following-rules/input.svelte b/test/css/samples/unknown-at-rule-with-following-rules/input.svelte
new file mode 100644
index 0000000000..b8947d3545
--- /dev/null
+++ b/test/css/samples/unknown-at-rule-with-following-rules/input.svelte
@@ -0,0 +1,11 @@
+
+
+
\ No newline at end of file
diff --git a/test/custom-elements/index.js b/test/custom-elements/index.js
index 5ac0b73bbf..9255d33c0e 100644
--- a/test/custom-elements/index.js
+++ b/test/custom-elements/index.js
@@ -58,7 +58,7 @@ describe('custom-elements', function() {
const solo = /\.solo$/.test(dir);
const skip = /\.skip$/.test(dir);
- const internal = path.resolve('internal.mjs');
+ const internal = path.resolve('internal/index.mjs');
const index = path.resolve('index.mjs');
const warnings = [];
@@ -71,7 +71,7 @@ describe('custom-elements', function() {
plugins: [
{
resolveId(importee) {
- if (importee === 'svelte/internal') {
+ if (importee === 'svelte/internal' || importee === './internal') {
return internal;
}
diff --git a/test/custom-elements/samples/extended-builtin/_config.js b/test/custom-elements/samples/extended-builtin/_config.js
new file mode 100644
index 0000000000..08580e780a
--- /dev/null
+++ b/test/custom-elements/samples/extended-builtin/_config.js
@@ -0,0 +1,17 @@
+export default {
+ warnings: [{
+ code: "avoid-is",
+ message: "The 'is' attribute is not supported cross-browser and should be avoided",
+ pos: 97,
+ start: {
+ character: 97,
+ column: 8,
+ line: 7
+ },
+ end: {
+ character: 114,
+ column: 25,
+ line: 7
+ }
+ }]
+};
diff --git a/test/custom-elements/samples/extended-builtin/fancy-button.js b/test/custom-elements/samples/extended-builtin/fancy-button.js
new file mode 100644
index 0000000000..eaa7d84135
--- /dev/null
+++ b/test/custom-elements/samples/extended-builtin/fancy-button.js
@@ -0,0 +1,2 @@
+class FancyButton extends HTMLButtonElement {}
+customElements.define('fancy-button', FancyButton, { extends: 'button' });
\ No newline at end of file
diff --git a/test/custom-elements/samples/extended-builtin/main.svelte b/test/custom-elements/samples/extended-builtin/main.svelte
new file mode 100644
index 0000000000..0919d9585e
--- /dev/null
+++ b/test/custom-elements/samples/extended-builtin/main.svelte
@@ -0,0 +1,7 @@
+
+
+
+
+click me
\ No newline at end of file
diff --git a/test/custom-elements/samples/extended-builtin/test.js b/test/custom-elements/samples/extended-builtin/test.js
new file mode 100644
index 0000000000..d676fd137b
--- /dev/null
+++ b/test/custom-elements/samples/extended-builtin/test.js
@@ -0,0 +1,15 @@
+import * as assert from 'assert';
+import CustomElement from './main.svelte';
+
+export default function (target) {
+ new CustomElement({
+ target
+ });
+
+ assert.equal(target.innerHTML, ' ');
+
+ const el = target.querySelector('custom-element');
+ const button = el.shadowRoot.querySelector('button');
+
+ assert.ok(button instanceof customElements.get('fancy-button'));
+}
\ No newline at end of file
diff --git a/test/custom-elements/samples/no-svelte-options/_config.js b/test/custom-elements/samples/no-svelte-options/_config.js
new file mode 100644
index 0000000000..e45582a127
--- /dev/null
+++ b/test/custom-elements/samples/no-svelte-options/_config.js
@@ -0,0 +1,17 @@
+export default {
+ warnings: [{
+ code: "custom-element-no-tag",
+ message: "No custom element 'tag' option was specified. To automatically register a custom element, specify a name with a hyphen in it, e.g. . To hide this warning, use ",
+ pos: 0,
+ start: {
+ character: 0,
+ column: 0,
+ line: 1
+ },
+ end: {
+ character: 0,
+ column: 0,
+ line: 1
+ }
+ }]
+};
diff --git a/test/custom-elements/samples/no-svelte-options/main.svelte b/test/custom-elements/samples/no-svelte-options/main.svelte
new file mode 100644
index 0000000000..538dc970e9
--- /dev/null
+++ b/test/custom-elements/samples/no-svelte-options/main.svelte
@@ -0,0 +1,5 @@
+
+
+Hello {name}!
diff --git a/test/custom-elements/samples/no-svelte-options/test.js b/test/custom-elements/samples/no-svelte-options/test.js
new file mode 100644
index 0000000000..c77f035088
--- /dev/null
+++ b/test/custom-elements/samples/no-svelte-options/test.js
@@ -0,0 +1,12 @@
+import * as assert from 'assert';
+import CustomElement from './main.svelte';
+
+export default function (target) {
+ customElements.define('no-tag', CustomElement);
+ target.innerHTML = ` `;
+
+ const el = target.querySelector('no-tag');
+ const h1 = el.shadowRoot.querySelector('h1');
+
+ assert.equal(h1.textContent, 'Hello world!');
+}
diff --git a/test/helpers.js b/test/helpers.js
index e07d7c9b06..e0c4c980ee 100644
--- a/test/helpers.js
+++ b/test/helpers.js
@@ -28,7 +28,7 @@ export function exists(path) {
export function tryToLoadJson(file) {
try {
- return JSON.parse(fs.readFileSync(file));
+ return JSON.parse(fs.readFileSync(file, 'utf-8'));
} catch (err) {
if (err.code !== 'ENOENT') throw err;
return null;
@@ -44,14 +44,22 @@ export function tryToReadFile(file) {
}
}
-export const virtualConsole = new jsdom.VirtualConsole();
-const { window } = new jsdom.JSDOM(' ', {virtualConsole});
+const virtualConsole = new jsdom.VirtualConsole();
+virtualConsole.sendTo(console);
+
+global.window = new jsdom.JSDOM(' ', {virtualConsole}).window;
global.document = window.document;
+global.navigator = window.navigator;
global.getComputedStyle = window.getComputedStyle;
-global.navigator = {userAgent: 'fake'};
+global.requestAnimationFrame = null; // placeholder, filled in using set_raf
+
+// add missing ecmascript globals to window
+for (const key of Object.getOwnPropertyNames(global)) {
+ window[key] = window[key] || global[key];
+}
export function env() {
- window._svelteTransitionManager = null;
+ window.document.title = '';
window.document.body.innerHTML = ' ';
return window;
@@ -120,7 +128,7 @@ export function normalizeHtml(window, html) {
.replace(//g, '')
.replace(/>[\s\r\n]+<')
.trim();
- cleanChildren(node, '');
+ cleanChildren(node);
return node.innerHTML.replace(/<\/?noscript\/?>/g, '');
} catch (err) {
throw new Error(`Failed to normalize HTML:\n${html}`);
diff --git a/test/js/samples/action-custom-event-handler/expected.js b/test/js/samples/action-custom-event-handler/expected.js
index 4b758da030..ea55f1629b 100644
--- a/test/js/samples/action-custom-event-handler/expected.js
+++ b/test/js/samples/action-custom-event-handler/expected.js
@@ -23,7 +23,12 @@ function create_fragment(ctx) {
foo_action = foo.call(null, button, ctx.foo_function) || {};
},
- p: noop,
+ p(changed, ctx) {
+ if (typeof foo_action.update === 'function' && changed.bar) {
+ foo_action.update.call(null, ctx.foo_function);
+ }
+ },
+
i: noop,
o: noop,
diff --git a/test/js/samples/action/expected.js b/test/js/samples/action/expected.js
index cbbcb0d317..ed0a0a7430 100644
--- a/test/js/samples/action/expected.js
+++ b/test/js/samples/action/expected.js
@@ -1,6 +1,7 @@
/* generated by Svelte vX.Y.Z */
import {
SvelteComponent,
+ attr,
detach,
element,
init,
@@ -16,7 +17,7 @@ function create_fragment(ctx) {
c() {
a = element("a");
a.textContent = "Test";
- a.href = "#";
+ attr(a, "href", "#");
},
m(target, anchor) {
diff --git a/test/js/samples/bind-open/expected.js b/test/js/samples/bind-open/expected.js
new file mode 100644
index 0000000000..7f739aec8b
--- /dev/null
+++ b/test/js/samples/bind-open/expected.js
@@ -0,0 +1,69 @@
+/* generated by Svelte vX.Y.Z */
+import {
+ SvelteComponent,
+ detach,
+ element,
+ init,
+ insert,
+ listen,
+ noop,
+ safe_not_equal
+} from "svelte/internal";
+
+function create_fragment(ctx) {
+ var details, dispose;
+
+ return {
+ c() {
+ details = element("details");
+ details.innerHTML = `summary content
+ `;
+ dispose = listen(details, "toggle", ctx.details_toggle_handler);
+ },
+
+ m(target, anchor) {
+ insert(target, details, anchor);
+
+ details.open = ctx.open;
+ },
+
+ p(changed, ctx) {
+ if (changed.open) details.open = ctx.open;
+ },
+
+ i: noop,
+ o: noop,
+
+ d(detaching) {
+ if (detaching) {
+ detach(details);
+ }
+
+ dispose();
+ }
+ };
+}
+
+function instance($$self, $$props, $$invalidate) {
+ let { open } = $$props;
+
+ function details_toggle_handler() {
+ open = this.open;
+ $$invalidate('open', open);
+ }
+
+ $$self.$set = $$props => {
+ if ('open' in $$props) $$invalidate('open', open = $$props.open);
+ };
+
+ return { open, details_toggle_handler };
+}
+
+class Component extends SvelteComponent {
+ constructor(options) {
+ super();
+ init(this, options, instance, create_fragment, safe_not_equal, ["open"]);
+ }
+}
+
+export default Component;
\ No newline at end of file
diff --git a/test/js/samples/bind-open/input.svelte b/test/js/samples/bind-open/input.svelte
new file mode 100644
index 0000000000..3dd2b03a73
--- /dev/null
+++ b/test/js/samples/bind-open/input.svelte
@@ -0,0 +1,7 @@
+
+
+
+ summary content
+
diff --git a/test/js/samples/collapses-text-around-comments/expected.js b/test/js/samples/collapses-text-around-comments/expected.js
index 12164d0579..09b40a1e98 100644
--- a/test/js/samples/collapses-text-around-comments/expected.js
+++ b/test/js/samples/collapses-text-around-comments/expected.js
@@ -2,6 +2,7 @@
import {
SvelteComponent,
append,
+ attr,
detach,
element,
init,
@@ -26,7 +27,7 @@ function create_fragment(ctx) {
c() {
p = element("p");
t = text(ctx.foo);
- p.className = "svelte-1a7i8ec";
+ attr(p, "class", "svelte-1a7i8ec");
},
m(target, anchor) {
diff --git a/test/js/samples/component-static-array/expected.js b/test/js/samples/component-static-array/expected.js
index 875c741076..6997f431dd 100644
--- a/test/js/samples/component-static-array/expected.js
+++ b/test/js/samples/component-static-array/expected.js
@@ -1,10 +1,13 @@
/* generated by Svelte vX.Y.Z */
import {
SvelteComponent,
+ destroy_component,
init,
mount_component,
noop,
- safe_not_equal
+ safe_not_equal,
+ transition_in,
+ transition_out
} from "svelte/internal";
function create_fragment(ctx) {
@@ -26,18 +29,18 @@ function create_fragment(ctx) {
i(local) {
if (current) return;
- nested.$$.fragment.i(local);
+ transition_in(nested.$$.fragment, local);
current = true;
},
o(local) {
- nested.$$.fragment.o(local);
+ transition_out(nested.$$.fragment, local);
current = false;
},
d(detaching) {
- nested.$destroy(detaching);
+ destroy_component(nested, detaching);
}
};
}
diff --git a/test/js/samples/component-static-immutable/expected.js b/test/js/samples/component-static-immutable/expected.js
index 6612a7f1b6..4b33d537ca 100644
--- a/test/js/samples/component-static-immutable/expected.js
+++ b/test/js/samples/component-static-immutable/expected.js
@@ -1,10 +1,13 @@
/* generated by Svelte vX.Y.Z */
import {
SvelteComponent,
+ destroy_component,
init,
mount_component,
noop,
- not_equal
+ not_equal,
+ transition_in,
+ transition_out
} from "svelte/internal";
function create_fragment(ctx) {
@@ -26,18 +29,18 @@ function create_fragment(ctx) {
i(local) {
if (current) return;
- nested.$$.fragment.i(local);
+ transition_in(nested.$$.fragment, local);
current = true;
},
o(local) {
- nested.$$.fragment.o(local);
+ transition_out(nested.$$.fragment, local);
current = false;
},
d(detaching) {
- nested.$destroy(detaching);
+ destroy_component(nested, detaching);
}
};
}
diff --git a/test/js/samples/component-static-immutable2/expected.js b/test/js/samples/component-static-immutable2/expected.js
index 6612a7f1b6..4b33d537ca 100644
--- a/test/js/samples/component-static-immutable2/expected.js
+++ b/test/js/samples/component-static-immutable2/expected.js
@@ -1,10 +1,13 @@
/* generated by Svelte vX.Y.Z */
import {
SvelteComponent,
+ destroy_component,
init,
mount_component,
noop,
- not_equal
+ not_equal,
+ transition_in,
+ transition_out
} from "svelte/internal";
function create_fragment(ctx) {
@@ -26,18 +29,18 @@ function create_fragment(ctx) {
i(local) {
if (current) return;
- nested.$$.fragment.i(local);
+ transition_in(nested.$$.fragment, local);
current = true;
},
o(local) {
- nested.$$.fragment.o(local);
+ transition_out(nested.$$.fragment, local);
current = false;
},
d(detaching) {
- nested.$destroy(detaching);
+ destroy_component(nested, detaching);
}
};
}
diff --git a/test/js/samples/component-static/expected.js b/test/js/samples/component-static/expected.js
index 12ebeb28b7..5a031a32a4 100644
--- a/test/js/samples/component-static/expected.js
+++ b/test/js/samples/component-static/expected.js
@@ -1,10 +1,13 @@
/* generated by Svelte vX.Y.Z */
import {
SvelteComponent,
+ destroy_component,
init,
mount_component,
noop,
- safe_not_equal
+ safe_not_equal,
+ transition_in,
+ transition_out
} from "svelte/internal";
function create_fragment(ctx) {
@@ -26,18 +29,18 @@ function create_fragment(ctx) {
i(local) {
if (current) return;
- nested.$$.fragment.i(local);
+ transition_in(nested.$$.fragment, local);
current = true;
},
o(local) {
- nested.$$.fragment.o(local);
+ transition_out(nested.$$.fragment, local);
current = false;
},
d(detaching) {
- nested.$destroy(detaching);
+ destroy_component(nested, detaching);
}
};
}
diff --git a/test/js/samples/css-media-query/expected.js b/test/js/samples/css-media-query/expected.js
index d4be134376..82b7c5dfc8 100644
--- a/test/js/samples/css-media-query/expected.js
+++ b/test/js/samples/css-media-query/expected.js
@@ -2,6 +2,7 @@
import {
SvelteComponent,
append,
+ attr,
detach,
element,
init,
@@ -23,7 +24,7 @@ function create_fragment(ctx) {
return {
c() {
div = element("div");
- div.className = "svelte-1slhpfn";
+ attr(div, "class", "svelte-1slhpfn");
},
m(target, anchor) {
diff --git a/test/js/samples/dont-use-dataset-in-legacy/expected.js b/test/js/samples/data-attribute/expected.js
similarity index 100%
rename from test/js/samples/dont-use-dataset-in-legacy/expected.js
rename to test/js/samples/data-attribute/expected.js
diff --git a/test/js/samples/do-use-dataset/input.svelte b/test/js/samples/data-attribute/input.svelte
similarity index 100%
rename from test/js/samples/do-use-dataset/input.svelte
rename to test/js/samples/data-attribute/input.svelte
diff --git a/test/js/samples/debug-empty/expected.js b/test/js/samples/debug-empty/expected.js
index 98c2837ab7..6f07993590 100644
--- a/test/js/samples/debug-empty/expected.js
+++ b/test/js/samples/debug-empty/expected.js
@@ -65,6 +65,11 @@ function create_fragment(ctx) {
function instance($$self, $$props, $$invalidate) {
let { name } = $$props;
+ const writable_props = ['name'];
+ Object.keys($$props).forEach(key => {
+ if (!writable_props.includes(key) && !key.startsWith('$$')) console.warn(` was created with unknown prop '${key}'`);
+ });
+
$$self.$set = $$props => {
if ('name' in $$props) $$invalidate('name', name = $$props.name);
};
diff --git a/test/js/samples/debug-foo-bar-baz-things/expected.js b/test/js/samples/debug-foo-bar-baz-things/expected.js
index c1391475b2..b93ed72d1c 100644
--- a/test/js/samples/debug-foo-bar-baz-things/expected.js
+++ b/test/js/samples/debug-foo-bar-baz-things/expected.js
@@ -25,7 +25,7 @@ function get_each_context(ctx, list, i) {
// (8:0) {#each things as thing}
function create_each_block(ctx) {
- var span, t0_value = ctx.thing.name, t0, t1;
+ var span, t0_value = ctx.thing.name + "", t0, t1;
return {
c: function create() {
@@ -48,7 +48,7 @@ function create_each_block(ctx) {
},
p: function update(changed, ctx) {
- if ((changed.things) && t0_value !== (t0_value = ctx.thing.name)) {
+ if ((changed.things) && t0_value !== (t0_value = ctx.thing.name + "")) {
set_data(t0, t0_value);
}
@@ -151,6 +151,11 @@ function create_fragment(ctx) {
function instance($$self, $$props, $$invalidate) {
let { things, foo, bar, baz } = $$props;
+ const writable_props = ['things', 'foo', 'bar', 'baz'];
+ Object.keys($$props).forEach(key => {
+ if (!writable_props.includes(key) && !key.startsWith('$$')) console.warn(` was created with unknown prop '${key}'`);
+ });
+
$$self.$set = $$props => {
if ('things' in $$props) $$invalidate('things', things = $$props.things);
if ('foo' in $$props) $$invalidate('foo', foo = $$props.foo);
diff --git a/test/js/samples/debug-foo/expected.js b/test/js/samples/debug-foo/expected.js
index f5daa7dad7..52875735bf 100644
--- a/test/js/samples/debug-foo/expected.js
+++ b/test/js/samples/debug-foo/expected.js
@@ -25,7 +25,7 @@ function get_each_context(ctx, list, i) {
// (6:0) {#each things as thing}
function create_each_block(ctx) {
- var span, t0_value = ctx.thing.name, t0, t1;
+ var span, t0_value = ctx.thing.name + "", t0, t1;
return {
c: function create() {
@@ -48,7 +48,7 @@ function create_each_block(ctx) {
},
p: function update(changed, ctx) {
- if ((changed.things) && t0_value !== (t0_value = ctx.thing.name)) {
+ if ((changed.things) && t0_value !== (t0_value = ctx.thing.name + "")) {
set_data(t0, t0_value);
}
@@ -151,6 +151,11 @@ function create_fragment(ctx) {
function instance($$self, $$props, $$invalidate) {
let { things, foo } = $$props;
+ const writable_props = ['things', 'foo'];
+ Object.keys($$props).forEach(key => {
+ if (!writable_props.includes(key) && !key.startsWith('$$')) console.warn(` was created with unknown prop '${key}'`);
+ });
+
$$self.$set = $$props => {
if ('things' in $$props) $$invalidate('things', things = $$props.things);
if ('foo' in $$props) $$invalidate('foo', foo = $$props.foo);
diff --git a/test/js/samples/debug-hoisted/expected.js b/test/js/samples/debug-hoisted/expected.js
index 153f92bad8..51d8bf63a3 100644
--- a/test/js/samples/debug-hoisted/expected.js
+++ b/test/js/samples/debug-hoisted/expected.js
@@ -53,4 +53,4 @@ class Component extends SvelteComponentDev {
}
}
-export default Component;
+export default Component;
\ No newline at end of file
diff --git a/test/js/samples/deconflict-builtins/expected.js b/test/js/samples/deconflict-builtins/expected.js
index 3294778aa3..3041d856b3 100644
--- a/test/js/samples/deconflict-builtins/expected.js
+++ b/test/js/samples/deconflict-builtins/expected.js
@@ -22,7 +22,7 @@ function get_each_context(ctx, list, i) {
// (5:0) {#each createElement as node}
function create_each_block(ctx) {
- var span, t_value = ctx.node, t;
+ var span, t_value = ctx.node + "", t;
return {
c() {
@@ -36,7 +36,7 @@ function create_each_block(ctx) {
},
p(changed, ctx) {
- if ((changed.createElement) && t_value !== (t_value = ctx.node)) {
+ if ((changed.createElement) && t_value !== (t_value = ctx.node + "")) {
set_data(t, t_value);
}
},
diff --git a/test/js/samples/dev-warning-missing-data-computed/expected.js b/test/js/samples/dev-warning-missing-data-computed/expected.js
index 12e8a983d0..90cd5b8baa 100644
--- a/test/js/samples/dev-warning-missing-data-computed/expected.js
+++ b/test/js/samples/dev-warning-missing-data-computed/expected.js
@@ -17,7 +17,7 @@ import {
const file = undefined;
function create_fragment(ctx) {
- var p, t0_value = Math.max(0, ctx.foo), t0, t1, t2;
+ var p, t0_value = Math.max(0, ctx.foo) + "", t0, t1, t2;
return {
c: function create() {
@@ -40,7 +40,7 @@ function create_fragment(ctx) {
},
p: function update(changed, ctx) {
- if ((changed.foo) && t0_value !== (t0_value = Math.max(0, ctx.foo))) {
+ if ((changed.foo) && t0_value !== (t0_value = Math.max(0, ctx.foo) + "")) {
set_data(t0, t0_value);
}
@@ -65,6 +65,11 @@ function instance($$self, $$props, $$invalidate) {
let bar;
+ const writable_props = ['foo'];
+ Object.keys($$props).forEach(key => {
+ if (!writable_props.includes(key) && !key.startsWith('$$')) console.warn(` was created with unknown prop '${key}'`);
+ });
+
$$self.$set = $$props => {
if ('foo' in $$props) $$invalidate('foo', foo = $$props.foo);
};
diff --git a/test/js/samples/do-use-dataset/expected.js b/test/js/samples/do-use-dataset/expected.js
deleted file mode 100644
index 4a1ffc4913..0000000000
--- a/test/js/samples/do-use-dataset/expected.js
+++ /dev/null
@@ -1,67 +0,0 @@
-/* generated by Svelte vX.Y.Z */
-import {
- SvelteComponent,
- detach,
- element,
- init,
- insert,
- noop,
- safe_not_equal,
- space
-} from "svelte/internal";
-
-function create_fragment(ctx) {
- var div0, t, div1;
-
- return {
- c() {
- div0 = element("div");
- t = space();
- div1 = element("div");
- div0.dataset.foo = "bar";
- div1.dataset.foo = ctx.bar;
- },
-
- m(target, anchor) {
- insert(target, div0, anchor);
- insert(target, t, anchor);
- insert(target, div1, anchor);
- },
-
- p(changed, ctx) {
- if (changed.bar) {
- div1.dataset.foo = ctx.bar;
- }
- },
-
- i: noop,
- o: noop,
-
- d(detaching) {
- if (detaching) {
- detach(div0);
- detach(t);
- detach(div1);
- }
- }
- };
-}
-
-function instance($$self, $$props, $$invalidate) {
- let { bar } = $$props;
-
- $$self.$set = $$props => {
- if ('bar' in $$props) $$invalidate('bar', bar = $$props.bar);
- };
-
- return { bar };
-}
-
-class Component extends SvelteComponent {
- constructor(options) {
- super();
- init(this, options, instance, create_fragment, safe_not_equal, ["bar"]);
- }
-}
-
-export default Component;
\ No newline at end of file
diff --git a/test/js/samples/dont-use-dataset-in-legacy/_config.js b/test/js/samples/dont-use-dataset-in-legacy/_config.js
deleted file mode 100644
index 67924a4ffe..0000000000
--- a/test/js/samples/dont-use-dataset-in-legacy/_config.js
+++ /dev/null
@@ -1,5 +0,0 @@
-export default {
- options: {
- legacy: true
- }
-};
diff --git a/test/js/samples/dont-use-dataset-in-legacy/input.svelte b/test/js/samples/dont-use-dataset-in-legacy/input.svelte
deleted file mode 100644
index e340b2610f..0000000000
--- a/test/js/samples/dont-use-dataset-in-legacy/input.svelte
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/test/js/samples/dont-use-dataset-in-svg/expected.js b/test/js/samples/dont-use-dataset-in-svg/expected.js
deleted file mode 100644
index 0862d1bbc6..0000000000
--- a/test/js/samples/dont-use-dataset-in-svg/expected.js
+++ /dev/null
@@ -1,66 +0,0 @@
-/* generated by Svelte vX.Y.Z */
-import {
- SvelteComponent,
- append,
- attr,
- detach,
- init,
- insert,
- noop,
- safe_not_equal,
- svg_element
-} from "svelte/internal";
-
-function create_fragment(ctx) {
- var svg, g0, g1;
-
- return {
- c() {
- svg = svg_element("svg");
- g0 = svg_element("g");
- g1 = svg_element("g");
- attr(g0, "data-foo", "bar");
- attr(g1, "data-foo", ctx.bar);
- },
-
- m(target, anchor) {
- insert(target, svg, anchor);
- append(svg, g0);
- append(svg, g1);
- },
-
- p(changed, ctx) {
- if (changed.bar) {
- attr(g1, "data-foo", ctx.bar);
- }
- },
-
- i: noop,
- o: noop,
-
- d(detaching) {
- if (detaching) {
- detach(svg);
- }
- }
- };
-}
-
-function instance($$self, $$props, $$invalidate) {
- let { bar } = $$props;
-
- $$self.$set = $$props => {
- if ('bar' in $$props) $$invalidate('bar', bar = $$props.bar);
- };
-
- return { bar };
-}
-
-class Component extends SvelteComponent {
- constructor(options) {
- super();
- init(this, options, instance, create_fragment, safe_not_equal, ["bar"]);
- }
-}
-
-export default Component;
\ No newline at end of file
diff --git a/test/js/samples/dont-use-dataset-in-svg/input.svelte b/test/js/samples/dont-use-dataset-in-svg/input.svelte
deleted file mode 100644
index 969377de33..0000000000
--- a/test/js/samples/dont-use-dataset-in-svg/input.svelte
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/test/js/samples/dynamic-import/expected.js b/test/js/samples/dynamic-import/expected.js
index 2d51bcf60d..9a6a67bcd9 100644
--- a/test/js/samples/dynamic-import/expected.js
+++ b/test/js/samples/dynamic-import/expected.js
@@ -1,10 +1,13 @@
/* generated by Svelte vX.Y.Z */
import {
SvelteComponent,
+ destroy_component,
init,
mount_component,
noop,
- safe_not_equal
+ safe_not_equal,
+ transition_in,
+ transition_out
} from "svelte/internal";
import LazyLoad from "./LazyLoad.svelte";
@@ -27,18 +30,18 @@ function create_fragment(ctx) {
i(local) {
if (current) return;
- lazyload.$$.fragment.i(local);
+ transition_in(lazyload.$$.fragment, local);
current = true;
},
o(local) {
- lazyload.$$.fragment.o(local);
+ transition_out(lazyload.$$.fragment, local);
current = false;
},
d(detaching) {
- lazyload.$destroy(detaching);
+ destroy_component(lazyload, detaching);
}
};
}
diff --git a/test/js/samples/each-block-array-literal/expected.js b/test/js/samples/each-block-array-literal/expected.js
index 455cb2f25f..00af8df033 100644
--- a/test/js/samples/each-block-array-literal/expected.js
+++ b/test/js/samples/each-block-array-literal/expected.js
@@ -22,7 +22,7 @@ function get_each_context(ctx, list, i) {
// (9:0) {#each [a, b, c, d, e] as num}
function create_each_block(ctx) {
- var span, t_value = ctx.num, t;
+ var span, t_value = ctx.num + "", t;
return {
c() {
@@ -36,7 +36,7 @@ function create_each_block(ctx) {
},
p(changed, ctx) {
- if ((changed.a || changed.b || changed.c || changed.d || changed.e) && t_value !== (t_value = ctx.num)) {
+ if ((changed.a || changed.b || changed.c || changed.d || changed.e) && t_value !== (t_value = ctx.num + "")) {
set_data(t, t_value);
}
},
diff --git a/test/js/samples/each-block-changed-check/expected.js b/test/js/samples/each-block-changed-check/expected.js
index 951565bae4..f48a42d74f 100644
--- a/test/js/samples/each-block-changed-check/expected.js
+++ b/test/js/samples/each-block-changed-check/expected.js
@@ -1,10 +1,11 @@
/* generated by Svelte vX.Y.Z */
import {
+ HtmlTag,
SvelteComponent,
append,
+ attr,
destroy_each,
detach,
- detach_after,
element,
init,
insert,
@@ -24,7 +25,7 @@ function get_each_context(ctx, list, i) {
// (8:0) {#each comments as comment, i}
function create_each_block(ctx) {
- var div, strong, t0, t1, span, t2_value = ctx.comment.author, t2, t3, t4_value = ctx.elapsed(ctx.comment.time, ctx.time), t4, t5, t6, raw_value = ctx.comment.html, raw_before;
+ var div, strong, t0, t1, span, t2_value = ctx.comment.author + "", t2, t3, t4_value = ctx.elapsed(ctx.comment.time, ctx.time) + "", t4, t5, t6, html_tag, raw_value = ctx.comment.html + "";
return {
c() {
@@ -38,9 +39,9 @@ function create_each_block(ctx) {
t4 = text(t4_value);
t5 = text(" ago:");
t6 = space();
- raw_before = element('noscript');
- span.className = "meta";
- div.className = "comment";
+ attr(span, "class", "meta");
+ html_tag = new HtmlTag(raw_value, null);
+ attr(div, "class", "comment");
},
m(target, anchor) {
@@ -54,22 +55,20 @@ function create_each_block(ctx) {
append(span, t4);
append(span, t5);
append(div, t6);
- append(div, raw_before);
- raw_before.insertAdjacentHTML("afterend", raw_value);
+ html_tag.m(div);
},
p(changed, ctx) {
- if ((changed.comments) && t2_value !== (t2_value = ctx.comment.author)) {
+ if ((changed.comments) && t2_value !== (t2_value = ctx.comment.author + "")) {
set_data(t2, t2_value);
}
- if ((changed.elapsed || changed.comments || changed.time) && t4_value !== (t4_value = ctx.elapsed(ctx.comment.time, ctx.time))) {
+ if ((changed.elapsed || changed.comments || changed.time) && t4_value !== (t4_value = ctx.elapsed(ctx.comment.time, ctx.time) + "")) {
set_data(t4, t4_value);
}
- if ((changed.comments) && raw_value !== (raw_value = ctx.comment.html)) {
- detach_after(raw_before);
- raw_before.insertAdjacentHTML("afterend", raw_value);
+ if ((changed.comments) && raw_value !== (raw_value = ctx.comment.html + "")) {
+ html_tag.p(raw_value);
}
},
diff --git a/test/js/samples/each-block-keyed-animated/expected.js b/test/js/samples/each-block-keyed-animated/expected.js
index d18c569fa1..ee14dc8559 100644
--- a/test/js/samples/each-block-keyed-animated/expected.js
+++ b/test/js/samples/each-block-keyed-animated/expected.js
@@ -6,7 +6,7 @@ import {
detach,
element,
empty,
- fix_and_outro_and_destroy_block,
+ fix_and_destroy_block,
fix_position,
init,
insert,
@@ -25,7 +25,7 @@ function get_each_context(ctx, list, i) {
// (19:0) {#each things as thing (thing.id)}
function create_each_block(key_1, ctx) {
- var div, t_value = ctx.thing.name, t, rect, stop_animation = noop;
+ var div, t_value = ctx.thing.name + "", t, rect, stop_animation = noop;
return {
key: key_1,
@@ -44,7 +44,7 @@ function create_each_block(key_1, ctx) {
},
p(changed, ctx) {
- if ((changed.things) && t_value !== (t_value = ctx.thing.name)) {
+ if ((changed.things) && t_value !== (t_value = ctx.thing.name + "")) {
set_data(t, t_value);
}
},
@@ -100,7 +100,7 @@ function create_fragment(ctx) {
p(changed, ctx) {
const each_value = ctx.things;
for (let i = 0; i < each_blocks.length; i += 1) each_blocks[i].r();
- each_blocks = update_keyed_each(each_blocks, changed, get_key, 1, ctx, each_value, each_1_lookup, each_1_anchor.parentNode, fix_and_outro_and_destroy_block, create_each_block, each_1_anchor, get_each_context);
+ each_blocks = update_keyed_each(each_blocks, changed, get_key, 1, ctx, each_value, each_1_lookup, each_1_anchor.parentNode, fix_and_destroy_block, create_each_block, each_1_anchor, get_each_context);
for (let i = 0; i < each_blocks.length; i += 1) each_blocks[i].a();
},
diff --git a/test/js/samples/each-block-keyed/expected.js b/test/js/samples/each-block-keyed/expected.js
index efb58ebf6a..8c37abde7f 100644
--- a/test/js/samples/each-block-keyed/expected.js
+++ b/test/js/samples/each-block-keyed/expected.js
@@ -23,7 +23,7 @@ function get_each_context(ctx, list, i) {
// (5:0) {#each things as thing (thing.id)}
function create_each_block(key_1, ctx) {
- var div, t_value = ctx.thing.name, t;
+ var div, t_value = ctx.thing.name + "", t;
return {
key: key_1,
@@ -42,7 +42,7 @@ function create_each_block(key_1, ctx) {
},
p(changed, ctx) {
- if ((changed.things) && t_value !== (t_value = ctx.thing.name)) {
+ if ((changed.things) && t_value !== (t_value = ctx.thing.name + "")) {
set_data(t, t_value);
}
},
diff --git a/test/js/samples/event-handler-no-passive/expected.js b/test/js/samples/event-handler-no-passive/expected.js
index 41fcbeeb2a..e8ca72c556 100644
--- a/test/js/samples/event-handler-no-passive/expected.js
+++ b/test/js/samples/event-handler-no-passive/expected.js
@@ -1,6 +1,7 @@
/* generated by Svelte vX.Y.Z */
import {
SvelteComponent,
+ attr,
detach,
element,
init,
@@ -17,7 +18,7 @@ function create_fragment(ctx) {
c() {
a = element("a");
a.textContent = "this should not navigate to example.com";
- a.href = "https://example.com";
+ attr(a, "href", "https://example.com");
dispose = listen(a, "touchstart", touchstart_handler);
},
diff --git a/test/js/samples/head-no-whitespace/expected.js b/test/js/samples/head-no-whitespace/expected.js
index b95177bba7..457df77dc8 100644
--- a/test/js/samples/head-no-whitespace/expected.js
+++ b/test/js/samples/head-no-whitespace/expected.js
@@ -2,6 +2,7 @@
import {
SvelteComponent,
append,
+ attr,
detach,
element,
init,
@@ -16,10 +17,10 @@ function create_fragment(ctx) {
c() {
meta0 = element("meta");
meta1 = element("meta");
- meta0.name = "twitter:creator";
- meta0.content = "@sveltejs";
- meta1.name = "twitter:title";
- meta1.content = "Svelte";
+ attr(meta0, "name", "twitter:creator");
+ attr(meta0, "content", "@sveltejs");
+ attr(meta1, "name", "twitter:title");
+ attr(meta1, "content", "Svelte");
},
m(target, anchor) {
diff --git a/test/js/samples/hoisted-const/expected.js b/test/js/samples/hoisted-const/expected.js
index 3e711e99ab..ccd0b3c480 100644
--- a/test/js/samples/hoisted-const/expected.js
+++ b/test/js/samples/hoisted-const/expected.js
@@ -12,7 +12,7 @@ import {
} from "svelte/internal";
function create_fragment(ctx) {
- var b, t_value = get_answer(), t;
+ var b, t_value = get_answer() + "", t;
return {
c() {
diff --git a/test/js/samples/hoisted-let/expected.js b/test/js/samples/hoisted-let/expected.js
index 210a63e28a..e2a9186dbd 100644
--- a/test/js/samples/hoisted-let/expected.js
+++ b/test/js/samples/hoisted-let/expected.js
@@ -12,7 +12,7 @@ import {
} from "svelte/internal";
function create_fragment(ctx) {
- var b, t_value = get_answer(), t;
+ var b, t_value = get_answer() + "", t;
return {
c() {
diff --git a/test/js/samples/inline-style-unoptimized/expected.js b/test/js/samples/inline-style-unoptimized/expected.js
index 8f3b668827..9349ade12c 100644
--- a/test/js/samples/inline-style-unoptimized/expected.js
+++ b/test/js/samples/inline-style-unoptimized/expected.js
@@ -1,6 +1,7 @@
/* generated by Svelte vX.Y.Z */
import {
SvelteComponent,
+ attr,
detach,
element,
init,
@@ -18,8 +19,8 @@ function create_fragment(ctx) {
div0 = element("div");
t = space();
div1 = element("div");
- div0.style.cssText = ctx.style;
- div1.style.cssText = div1_style_value = "" + ctx.key + ": " + ctx.value;
+ attr(div0, "style", ctx.style);
+ attr(div1, "style", div1_style_value = "" + ctx.key + ": " + ctx.value);
},
m(target, anchor) {
@@ -30,11 +31,11 @@ function create_fragment(ctx) {
p(changed, ctx) {
if (changed.style) {
- div0.style.cssText = ctx.style;
+ attr(div0, "style", ctx.style);
}
if ((changed.key || changed.value) && div1_style_value !== (div1_style_value = "" + ctx.key + ": " + ctx.value)) {
- div1.style.cssText = div1_style_value;
+ attr(div1, "style", div1_style_value);
}
},
diff --git a/test/js/samples/input-files/expected.js b/test/js/samples/input-files/expected.js
index ed11518df2..d4442d57ee 100644
--- a/test/js/samples/input-files/expected.js
+++ b/test/js/samples/input-files/expected.js
@@ -19,7 +19,7 @@ function create_fragment(ctx) {
input = element("input");
attr(input, "type", "file");
input.multiple = true;
- dispose = listen(input, "input", ctx.input_input_handler);
+ dispose = listen(input, "change", ctx.input_change_handler);
},
m(target, anchor) {
@@ -43,7 +43,7 @@ function create_fragment(ctx) {
function instance($$self, $$props, $$invalidate) {
let { files } = $$props;
- function input_input_handler() {
+ function input_change_handler() {
files = this.files;
$$invalidate('files', files);
}
@@ -52,7 +52,7 @@ function instance($$self, $$props, $$invalidate) {
if ('files' in $$props) $$invalidate('files', files = $$props.files);
};
- return { files, input_input_handler };
+ return { files, input_change_handler };
}
class Component extends SvelteComponent {
diff --git a/test/js/samples/instrumentation-script-x-equals-x/expected.js b/test/js/samples/instrumentation-script-x-equals-x/expected.js
index 5cec1a3623..0d7740b55d 100644
--- a/test/js/samples/instrumentation-script-x-equals-x/expected.js
+++ b/test/js/samples/instrumentation-script-x-equals-x/expected.js
@@ -15,7 +15,7 @@ import {
} from "svelte/internal";
function create_fragment(ctx) {
- var button, t1, p, t2, t3_value = ctx.things.length, t3, dispose;
+ var button, t1, p, t2, t3_value = ctx.things.length + "", t3, dispose;
return {
c() {
@@ -37,7 +37,7 @@ function create_fragment(ctx) {
},
p(changed, ctx) {
- if ((changed.things) && t3_value !== (t3_value = ctx.things.length)) {
+ if ((changed.things) && t3_value !== (t3_value = ctx.things.length + "")) {
set_data(t3, t3_value);
}
},
diff --git a/test/js/samples/instrumentation-template-x-equals-x/expected.js b/test/js/samples/instrumentation-template-x-equals-x/expected.js
index 29e0c111f9..c9868ace50 100644
--- a/test/js/samples/instrumentation-template-x-equals-x/expected.js
+++ b/test/js/samples/instrumentation-template-x-equals-x/expected.js
@@ -15,7 +15,7 @@ import {
} from "svelte/internal";
function create_fragment(ctx) {
- var button, t1, p, t2, t3_value = ctx.things.length, t3, dispose;
+ var button, t1, p, t2, t3_value = ctx.things.length + "", t3, dispose;
return {
c() {
@@ -37,7 +37,7 @@ function create_fragment(ctx) {
},
p(changed, ctx) {
- if ((changed.things) && t3_value !== (t3_value = ctx.things.length)) {
+ if ((changed.things) && t3_value !== (t3_value = ctx.things.length + "")) {
set_data(t3, t3_value);
}
},
diff --git a/test/js/samples/media-bindings/expected.js b/test/js/samples/media-bindings/expected.js
index 8a193f698b..f45f9ce8db 100644
--- a/test/js/samples/media-bindings/expected.js
+++ b/test/js/samples/media-bindings/expected.js
@@ -8,6 +8,7 @@ import {
insert,
listen,
noop,
+ raf,
run_all,
safe_not_equal,
time_ranges_to_array
@@ -18,7 +19,7 @@ function create_fragment(ctx) {
function audio_timeupdate_handler() {
cancelAnimationFrame(audio_animationframe);
- if (!audio.paused) audio_animationframe = requestAnimationFrame(audio_timeupdate_handler);
+ if (!audio.paused) audio_animationframe = raf(audio_timeupdate_handler);
audio_updating = true;
ctx.audio_timeupdate_handler.call(audio);
}
diff --git a/test/js/samples/non-imported-component/expected.js b/test/js/samples/non-imported-component/expected.js
index 20ac461c76..42a21aa496 100644
--- a/test/js/samples/non-imported-component/expected.js
+++ b/test/js/samples/non-imported-component/expected.js
@@ -1,13 +1,16 @@
/* generated by Svelte vX.Y.Z */
import {
SvelteComponent,
+ destroy_component,
detach,
init,
insert,
mount_component,
noop,
safe_not_equal,
- space
+ space,
+ transition_in,
+ transition_out
} from "svelte/internal";
import Imported from "Imported.svelte";
@@ -36,27 +39,27 @@ function create_fragment(ctx) {
i(local) {
if (current) return;
- imported.$$.fragment.i(local);
+ transition_in(imported.$$.fragment, local);
- nonimported.$$.fragment.i(local);
+ transition_in(nonimported.$$.fragment, local);
current = true;
},
o(local) {
- imported.$$.fragment.o(local);
- nonimported.$$.fragment.o(local);
+ transition_out(imported.$$.fragment, local);
+ transition_out(nonimported.$$.fragment, local);
current = false;
},
d(detaching) {
- imported.$destroy(detaching);
+ destroy_component(imported, detaching);
if (detaching) {
detach(t);
}
- nonimported.$destroy(detaching);
+ destroy_component(nonimported, detaching);
}
};
}
diff --git a/test/js/samples/reactive-values-non-topologically-ordered/expected.js b/test/js/samples/reactive-values-non-topologically-ordered/expected.js
index 2f729362b0..b5e2b04f75 100644
--- a/test/js/samples/reactive-values-non-topologically-ordered/expected.js
+++ b/test/js/samples/reactive-values-non-topologically-ordered/expected.js
@@ -29,7 +29,7 @@ function instance($$self, $$props, $$invalidate) {
$$self.$$.update = ($$dirty = { x: 1, b: 1 }) => {
if ($$dirty.x) { $$invalidate('b', b = x); }
- if ($$dirty.b) { $$invalidate('a', a = b); }
+ if ($$dirty.b) { a = b; }
};
return { x };
diff --git a/test/js/samples/reactive-values-non-writable-dependencies/expected.js b/test/js/samples/reactive-values-non-writable-dependencies/expected.js
index 62057cc6f0..8958f1ffbc 100644
--- a/test/js/samples/reactive-values-non-writable-dependencies/expected.js
+++ b/test/js/samples/reactive-values-non-writable-dependencies/expected.js
@@ -17,26 +17,25 @@ function create_fragment(ctx) {
};
}
-let a = 1;
-
-let b = 2;
-
function instance($$self, $$props, $$invalidate) {
-
+ let { a = 1, b = 2 } = $$props;
- let max;
+ $$self.$set = $$props => {
+ if ('a' in $$props) $$invalidate('a', a = $$props.a);
+ if ('b' in $$props) $$invalidate('b', b = $$props.b);
+ };
$$self.$$.update = ($$dirty = { a: 1, b: 1 }) => {
- if ($$dirty.a || $$dirty.b) { $$invalidate('max', max = Math.max(a, b)); }
+ if ($$dirty.a || $$dirty.b) { console.log('max', Math.max(a, b)); }
};
- return {};
+ return { a, b };
}
class Component extends SvelteComponent {
constructor(options) {
super();
- init(this, options, instance, create_fragment, safe_not_equal, []);
+ init(this, options, instance, create_fragment, safe_not_equal, ["a", "b"]);
}
}
diff --git a/test/js/samples/reactive-values-non-writable-dependencies/input.svelte b/test/js/samples/reactive-values-non-writable-dependencies/input.svelte
index 8e3397e40d..3fb70d5e8f 100644
--- a/test/js/samples/reactive-values-non-writable-dependencies/input.svelte
+++ b/test/js/samples/reactive-values-non-writable-dependencies/input.svelte
@@ -1,7 +1,6 @@
\ No newline at end of file
diff --git a/test/js/samples/transition-local/expected.js b/test/js/samples/transition-local/expected.js
index 2df99a4c87..53bce5f5d0 100644
--- a/test/js/samples/transition-local/expected.js
+++ b/test/js/samples/transition-local/expected.js
@@ -9,7 +9,8 @@ import {
init,
insert,
noop,
- safe_not_equal
+ safe_not_equal,
+ transition_in
} from "svelte/internal";
// (8:0) {#if x}
@@ -34,10 +35,10 @@ function create_if_block(ctx) {
if (!if_block) {
if_block = create_if_block_1(ctx);
if_block.c();
- if_block.i(1);
+ transition_in(if_block, 1);
if_block.m(if_block_anchor.parentNode, if_block_anchor);
} else {
- if_block.i(1);
+ transition_in(if_block, 1);
}
} else if (if_block) {
if_block.d(1);
diff --git a/test/js/samples/transition-repeated-outro/expected.js b/test/js/samples/transition-repeated-outro/expected.js
new file mode 100644
index 0000000000..8543d0029b
--- /dev/null
+++ b/test/js/samples/transition-repeated-outro/expected.js
@@ -0,0 +1,129 @@
+/* generated by Svelte vX.Y.Z */
+import {
+ SvelteComponent,
+ check_outros,
+ create_out_transition,
+ detach,
+ element,
+ empty,
+ group_outros,
+ init,
+ insert,
+ safe_not_equal,
+ transition_in,
+ transition_out
+} from "svelte/internal";
+import { fade } from "svelte/transition";
+
+// (7:0) {#if num < 5}
+function create_if_block(ctx) {
+ var div, div_outro, current;
+
+ return {
+ c() {
+ div = element("div");
+ div.innerHTML = `wheeee
`;
+ },
+
+ m(target, anchor) {
+ insert(target, div, anchor);
+ current = true;
+ },
+
+ i(local) {
+ if (current) return;
+ if (div_outro) div_outro.end(1);
+
+ current = true;
+ },
+
+ o(local) {
+ div_outro = create_out_transition(div, fade, {});
+
+ current = false;
+ },
+
+ d(detaching) {
+ if (detaching) {
+ detach(div);
+ if (div_outro) div_outro.end();
+ }
+ }
+ };
+}
+
+function create_fragment(ctx) {
+ var if_block_anchor, current;
+
+ var if_block = (ctx.num < 5) && create_if_block(ctx);
+
+ return {
+ c() {
+ if (if_block) if_block.c();
+ if_block_anchor = empty();
+ },
+
+ m(target, anchor) {
+ if (if_block) if_block.m(target, anchor);
+ insert(target, if_block_anchor, anchor);
+ current = true;
+ },
+
+ p(changed, ctx) {
+ if (ctx.num < 5) {
+ if (!if_block) {
+ if_block = create_if_block(ctx);
+ if_block.c();
+ transition_in(if_block, 1);
+ if_block.m(if_block_anchor.parentNode, if_block_anchor);
+ } else {
+ transition_in(if_block, 1);
+ }
+ } else if (if_block) {
+ group_outros();
+ transition_out(if_block, 1, 1, () => {
+ if_block = null;
+ });
+ check_outros();
+ }
+ },
+
+ i(local) {
+ if (current) return;
+ transition_in(if_block);
+ current = true;
+ },
+
+ o(local) {
+ transition_out(if_block);
+ current = false;
+ },
+
+ d(detaching) {
+ if (if_block) if_block.d(detaching);
+
+ if (detaching) {
+ detach(if_block_anchor);
+ }
+ }
+ };
+}
+
+function instance($$self, $$props, $$invalidate) {
+ let { num = 1 } = $$props;
+
+ $$self.$set = $$props => {
+ if ('num' in $$props) $$invalidate('num', num = $$props.num);
+ };
+
+ return { num };
+}
+
+class Component extends SvelteComponent {
+ constructor(options) {
+ super();
+ init(this, options, instance, create_fragment, safe_not_equal, ["num"]);
+ }
+}
+
+export default Component;
\ No newline at end of file
diff --git a/test/js/samples/transition-repeated-outro/input.svelte b/test/js/samples/transition-repeated-outro/input.svelte
new file mode 100644
index 0000000000..d5114846b8
--- /dev/null
+++ b/test/js/samples/transition-repeated-outro/input.svelte
@@ -0,0 +1,11 @@
+
+
+{#if num < 5}
+
+{/if}
\ No newline at end of file
diff --git a/test/js/samples/unreferenced-state-not-invalidated/expected.js b/test/js/samples/unreferenced-state-not-invalidated/expected.js
new file mode 100644
index 0000000000..17b5638a84
--- /dev/null
+++ b/test/js/samples/unreferenced-state-not-invalidated/expected.js
@@ -0,0 +1,78 @@
+/* generated by Svelte vX.Y.Z */
+import {
+ SvelteComponent,
+ append,
+ detach,
+ element,
+ init,
+ insert,
+ noop,
+ safe_not_equal,
+ set_data,
+ text
+} from "svelte/internal";
+import { onMount } from "svelte";
+
+function create_fragment(ctx) {
+ var p, t;
+
+ return {
+ c() {
+ p = element("p");
+ t = text(ctx.y);
+ },
+
+ m(target, anchor) {
+ insert(target, p, anchor);
+ append(p, t);
+ },
+
+ p(changed, ctx) {
+ if (changed.y) {
+ set_data(t, ctx.y);
+ }
+ },
+
+ i: noop,
+ o: noop,
+
+ d(detaching) {
+ if (detaching) {
+ detach(p);
+ }
+ }
+ };
+}
+
+function instance($$self, $$props, $$invalidate) {
+ let a, b, c;
+
+ onMount(() => {
+ const interval = setInterval(() => {
+ $$invalidate('b', b += 1);
+ c += 1;
+
+ console.log(b, c);
+ }, 1000);
+
+ return () => clearInterval(interval);
+ });
+
+ let x, y;
+
+ $$self.$$.update = ($$dirty = { a: 1, b: 1 }) => {
+ if ($$dirty.a) { x = a * 2; }
+ if ($$dirty.b) { $$invalidate('y', y = b * 2); }
+ };
+
+ return { y };
+}
+
+class Component extends SvelteComponent {
+ constructor(options) {
+ super();
+ init(this, options, instance, create_fragment, safe_not_equal, []);
+ }
+}
+
+export default Component;
\ No newline at end of file
diff --git a/test/js/samples/unreferenced-state-not-invalidated/input.svelte b/test/js/samples/unreferenced-state-not-invalidated/input.svelte
new file mode 100644
index 0000000000..fff60f181d
--- /dev/null
+++ b/test/js/samples/unreferenced-state-not-invalidated/input.svelte
@@ -0,0 +1,21 @@
+
+
+{y}
\ No newline at end of file
diff --git a/test/js/samples/window-binding-scroll/expected.js b/test/js/samples/window-binding-scroll/expected.js
index 18f5210bea..fbe4596e2b 100644
--- a/test/js/samples/window-binding-scroll/expected.js
+++ b/test/js/samples/window-binding-scroll/expected.js
@@ -42,7 +42,7 @@ function create_fragment(ctx) {
if (changed.y && !scrolling) {
scrolling = true;
clearTimeout(scrolling_timeout);
- window.scrollTo(window.pageXOffset, ctx.y);
+ scrollTo(window.pageXOffset, ctx.y);
scrolling_timeout = setTimeout(clear_scrolling, 100);
}
diff --git a/test/parser/samples/action-with-call/output.json b/test/parser/samples/action-with-call/output.json
index d6aaa72892..e910f0b49f 100644
--- a/test/parser/samples/action-with-call/output.json
+++ b/test/parser/samples/action-with-call/output.json
@@ -41,8 +41,5 @@
"children": []
}
]
- },
- "css": null,
- "instance": null,
- "module": null
+ }
}
\ No newline at end of file
diff --git a/test/parser/samples/action-with-identifier/output.json b/test/parser/samples/action-with-identifier/output.json
index d58b9097b7..435aee4444 100644
--- a/test/parser/samples/action-with-identifier/output.json
+++ b/test/parser/samples/action-with-identifier/output.json
@@ -27,8 +27,5 @@
"children": []
}
]
- },
- "css": null,
- "instance": null,
- "module": null
+ }
}
\ No newline at end of file
diff --git a/test/parser/samples/action-with-literal/output.json b/test/parser/samples/action-with-literal/output.json
index 4a6f596d10..01a6b67549 100644
--- a/test/parser/samples/action-with-literal/output.json
+++ b/test/parser/samples/action-with-literal/output.json
@@ -28,8 +28,5 @@
"children": []
}
]
- },
- "css": null,
- "instance": null,
- "module": null
+ }
}
\ No newline at end of file
diff --git a/test/parser/samples/action/output.json b/test/parser/samples/action/output.json
index 2f553b5efa..9828e200dd 100644
--- a/test/parser/samples/action/output.json
+++ b/test/parser/samples/action/output.json
@@ -22,8 +22,5 @@
"children": []
}
]
- },
- "css": null,
- "instance": null,
- "module": null
+ }
}
\ No newline at end of file
diff --git a/test/parser/samples/animation/output.json b/test/parser/samples/animation/output.json
index 8332b3ad04..f4d183eb5c 100644
--- a/test/parser/samples/animation/output.json
+++ b/test/parser/samples/animation/output.json
@@ -35,6 +35,7 @@
"start": 51,
"end": 56,
"type": "Text",
+ "raw": "flips",
"data": "flips"
}
]
@@ -54,8 +55,5 @@
}
}
]
- },
- "css": null,
- "instance": null,
- "module": null
+ }
}
\ No newline at end of file
diff --git a/test/parser/samples/attribute-containing-solidus/output.json b/test/parser/samples/attribute-containing-solidus/output.json
index 95372bd77d..f1158b4f50 100644
--- a/test/parser/samples/attribute-containing-solidus/output.json
+++ b/test/parser/samples/attribute-containing-solidus/output.json
@@ -20,6 +20,7 @@
"start": 8,
"end": 30,
"type": "Text",
+ "raw": "https://www.google.com",
"data": "https://www.google.com"
}
]
@@ -30,13 +31,11 @@
"start": 31,
"end": 37,
"type": "Text",
+ "raw": "Google",
"data": "Google"
}
]
}
]
- },
- "css": null,
- "instance": null,
- "module": null
+ }
}
\ No newline at end of file
diff --git a/test/parser/samples/attribute-dynamic-boolean/output.json b/test/parser/samples/attribute-dynamic-boolean/output.json
index 81a19f49b9..478144152a 100644
--- a/test/parser/samples/attribute-dynamic-boolean/output.json
+++ b/test/parser/samples/attribute-dynamic-boolean/output.json
@@ -33,8 +33,5 @@
"children": []
}
]
- },
- "css": null,
- "instance": null,
- "module": null
+ }
}
\ No newline at end of file
diff --git a/test/parser/samples/attribute-dynamic-reserved/output.json b/test/parser/samples/attribute-dynamic-reserved/output.json
index 3a830d448f..22be3c9087 100644
--- a/test/parser/samples/attribute-dynamic-reserved/output.json
+++ b/test/parser/samples/attribute-dynamic-reserved/output.json
@@ -33,8 +33,5 @@
"children": []
}
]
- },
- "css": null,
- "instance": null,
- "module": null
+ }
}
\ No newline at end of file
diff --git a/test/parser/samples/attribute-dynamic/output.json b/test/parser/samples/attribute-dynamic/output.json
index 50d8ec60a5..a48f376876 100644
--- a/test/parser/samples/attribute-dynamic/output.json
+++ b/test/parser/samples/attribute-dynamic/output.json
@@ -18,8 +18,9 @@
"value": [
{
"start": 12,
- "end": 19,
+ "end": 20,
"type": "Text",
+ "raw": "color: ",
"data": "color: "
},
{
@@ -37,6 +38,7 @@
"start": 26,
"end": 27,
"type": "Text",
+ "raw": ";",
"data": ";"
}
]
@@ -57,8 +59,5 @@
]
}
]
- },
- "css": null,
- "instance": null,
- "module": null
+ }
}
\ No newline at end of file
diff --git a/test/parser/samples/attribute-escaped/input.svelte b/test/parser/samples/attribute-escaped/input.svelte
index 82186dcee4..4c9cd5ff68 100644
--- a/test/parser/samples/attribute-escaped/input.svelte
+++ b/test/parser/samples/attribute-escaped/input.svelte
@@ -1 +1 @@
-
+
diff --git a/test/parser/samples/attribute-escaped/output.json b/test/parser/samples/attribute-escaped/output.json
index 6a4143e674..a8498bd574 100644
--- a/test/parser/samples/attribute-escaped/output.json
+++ b/test/parser/samples/attribute-escaped/output.json
@@ -1,26 +1,27 @@
{
"html": {
"start": 0,
- "end": 41,
+ "end": 83,
"type": "Fragment",
"children": [
{
"start": 0,
- "end": 41,
+ "end": 83,
"type": "Element",
"name": "div",
"attributes": [
{
"start": 5,
- "end": 34,
+ "end": 76,
"type": "Attribute",
"name": "data-foo",
"value": [
{
"start": 15,
- "end": 33,
+ "end": 75,
"type": "Text",
- "data": "\"quoted\""
+ "raw": "semi:"space:" letter:"e number:"1 end:"",
+ "data": "semi:\"space:\" letter:"e number:"1 end:\""
}
]
}
@@ -28,8 +29,5 @@
"children": []
}
]
- },
- "css": null,
- "instance": null,
- "module": null
+ }
}
\ No newline at end of file
diff --git a/test/parser/samples/attribute-multiple/output.json b/test/parser/samples/attribute-multiple/output.json
index 668409c0ef..c4be13e6ee 100644
--- a/test/parser/samples/attribute-multiple/output.json
+++ b/test/parser/samples/attribute-multiple/output.json
@@ -20,6 +20,7 @@
"start": 9,
"end": 10,
"type": "Text",
+ "raw": "x",
"data": "x"
}
]
@@ -34,6 +35,7 @@
"start": 19,
"end": 20,
"type": "Text",
+ "raw": "y",
"data": "y"
}
]
@@ -42,8 +44,5 @@
"children": []
}
]
- },
- "css": null,
- "instance": null,
- "module": null
+ }
}
\ No newline at end of file
diff --git a/test/parser/samples/attribute-shorthand/output.json b/test/parser/samples/attribute-shorthand/output.json
index 08ddf5eda9..f23e62b04e 100644
--- a/test/parser/samples/attribute-shorthand/output.json
+++ b/test/parser/samples/attribute-shorthand/output.json
@@ -33,8 +33,5 @@
"children": []
}
]
- },
- "css": null,
- "instance": null,
- "module": null
+ }
}
\ No newline at end of file
diff --git a/test/parser/samples/attribute-static-boolean/output.json b/test/parser/samples/attribute-static-boolean/output.json
index f63b5734e0..7d635004c1 100644
--- a/test/parser/samples/attribute-static-boolean/output.json
+++ b/test/parser/samples/attribute-static-boolean/output.json
@@ -21,8 +21,5 @@
"children": []
}
]
- },
- "css": null,
- "instance": null,
- "module": null
+ }
}
\ No newline at end of file
diff --git a/test/parser/samples/attribute-static/output.json b/test/parser/samples/attribute-static/output.json
index 3185e48736..37b41d9a89 100644
--- a/test/parser/samples/attribute-static/output.json
+++ b/test/parser/samples/attribute-static/output.json
@@ -20,6 +20,7 @@
"start": 12,
"end": 15,
"type": "Text",
+ "raw": "foo",
"data": "foo"
}
]
@@ -28,8 +29,5 @@
"children": []
}
]
- },
- "css": null,
- "instance": null,
- "module": null
+ }
}
\ No newline at end of file
diff --git a/test/parser/samples/attribute-unquoted/output.json b/test/parser/samples/attribute-unquoted/output.json
index c7556f2eba..11fa397819 100644
--- a/test/parser/samples/attribute-unquoted/output.json
+++ b/test/parser/samples/attribute-unquoted/output.json
@@ -20,6 +20,7 @@
"start": 11,
"end": 14,
"type": "Text",
+ "raw": "foo",
"data": "foo"
}
]
@@ -28,8 +29,5 @@
"children": []
}
]
- },
- "css": null,
- "instance": null,
- "module": null
+ }
}
\ No newline at end of file
diff --git a/test/parser/samples/attribute-with-whitespace/input.svelte b/test/parser/samples/attribute-with-whitespace/input.svelte
new file mode 100644
index 0000000000..2743a89ed0
--- /dev/null
+++ b/test/parser/samples/attribute-with-whitespace/input.svelte
@@ -0,0 +1 @@
+Click
diff --git a/test/parser/samples/attribute-with-whitespace/output.json b/test/parser/samples/attribute-with-whitespace/output.json
new file mode 100644
index 0000000000..eab6054f2a
--- /dev/null
+++ b/test/parser/samples/attribute-with-whitespace/output.json
@@ -0,0 +1,39 @@
+{
+ "html": {
+ "start": 0,
+ "end": 38,
+ "type": "Fragment",
+ "children": [
+ {
+ "start": 0,
+ "end": 38,
+ "type": "Element",
+ "name": "button",
+ "attributes": [
+ {
+ "start": 8,
+ "end": 23,
+ "type": "EventHandler",
+ "name": "click",
+ "modifiers": [],
+ "expression": {
+ "type": "Identifier",
+ "start": 19,
+ "end": 22,
+ "name": "foo"
+ }
+ }
+ ],
+ "children": [
+ {
+ "start": 24,
+ "end": 29,
+ "type": "Text",
+ "raw": "Click",
+ "data": "Click"
+ }
+ ]
+ }
+ ]
+ }
+}
diff --git a/test/parser/samples/await-then-catch/output.json b/test/parser/samples/await-then-catch/output.json
index f62ad16574..ac598a403a 100644
--- a/test/parser/samples/await-then-catch/output.json
+++ b/test/parser/samples/await-then-catch/output.json
@@ -19,13 +19,13 @@
"pending": {
"start": 19,
"end": 39,
- "skip": false,
"type": "PendingBlock",
"children": [
{
"start": 19,
"end": 21,
"type": "Text",
+ "raw": "\n\t",
"data": "\n\t"
},
{
@@ -39,6 +39,7 @@
"start": 24,
"end": 34,
"type": "Text",
+ "raw": "loading...",
"data": "loading..."
}
]
@@ -47,20 +48,22 @@
"start": 38,
"end": 39,
"type": "Text",
+ "raw": "\n",
"data": "\n"
}
- ]
+ ],
+ "skip": false
},
"then": {
"start": 39,
"end": 88,
- "skip": false,
"type": "ThenBlock",
"children": [
{
"start": 55,
"end": 57,
"type": "Text",
+ "raw": "\n\t",
"data": "\n\t"
},
{
@@ -74,6 +77,7 @@
"start": 60,
"end": 73,
"type": "Text",
+ "raw": "the value is ",
"data": "the value is "
},
{
@@ -93,20 +97,22 @@
"start": 87,
"end": 88,
"type": "Text",
+ "raw": "\n",
"data": "\n"
}
- ]
+ ],
+ "skip": false
},
"catch": {
"start": 88,
"end": 140,
- "skip": false,
"type": "CatchBlock",
"children": [
{
"start": 105,
"end": 107,
"type": "Text",
+ "raw": "\n\t",
"data": "\n\t"
},
{
@@ -120,6 +126,7 @@
"start": 110,
"end": 117,
"type": "Text",
+ "raw": "oh no! ",
"data": "oh no! "
},
{
@@ -151,14 +158,13 @@
"start": 139,
"end": 140,
"type": "Text",
+ "raw": "\n",
"data": "\n"
}
- ]
+ ],
+ "skip": false
}
}
]
- },
- "css": null,
- "instance": null,
- "module": null
-}
+ }
+}
\ No newline at end of file
diff --git a/test/parser/samples/binding-shorthand/output.json b/test/parser/samples/binding-shorthand/output.json
index 8f92101042..7fe7acb5b3 100644
--- a/test/parser/samples/binding-shorthand/output.json
+++ b/test/parser/samples/binding-shorthand/output.json
@@ -8,6 +8,7 @@
"start": 28,
"end": 30,
"type": "Text",
+ "raw": "\n\n",
"data": "\n\n"
},
{
diff --git a/test/parser/samples/binding/output.json b/test/parser/samples/binding/output.json
index d084050617..72ad60202c 100644
--- a/test/parser/samples/binding/output.json
+++ b/test/parser/samples/binding/output.json
@@ -8,6 +8,7 @@
"start": 29,
"end": 31,
"type": "Text",
+ "raw": "\n\n",
"data": "\n\n"
},
{
diff --git a/test/parser/samples/comment/output.json b/test/parser/samples/comment/output.json
index 89295c188a..2a57c4fa5d 100644
--- a/test/parser/samples/comment/output.json
+++ b/test/parser/samples/comment/output.json
@@ -11,8 +11,5 @@
"data": " a comment "
}
]
- },
- "css": null,
- "instance": null,
- "module": null
+ }
}
\ No newline at end of file
diff --git a/test/parser/samples/component-dynamic/output.json b/test/parser/samples/component-dynamic/output.json
index c2e4e3ee79..77837d1ca9 100644
--- a/test/parser/samples/component-dynamic/output.json
+++ b/test/parser/samples/component-dynamic/output.json
@@ -36,8 +36,5 @@
}
}
]
- },
- "css": null,
- "instance": null,
- "module": null
+ }
}
\ No newline at end of file
diff --git a/test/parser/samples/convert-entities-in-element/output.json b/test/parser/samples/convert-entities-in-element/output.json
index fb0f5b288e..c830c276de 100644
--- a/test/parser/samples/convert-entities-in-element/output.json
+++ b/test/parser/samples/convert-entities-in-element/output.json
@@ -15,13 +15,11 @@
"start": 3,
"end": 20,
"type": "Text",
+ "raw": "Hello & World",
"data": "Hello & World"
}
]
}
]
- },
- "css": null,
- "instance": null,
- "module": null
+ }
}
\ No newline at end of file
diff --git a/test/parser/samples/convert-entities/output.json b/test/parser/samples/convert-entities/output.json
index ca1c1356f8..f4cc1a6662 100644
--- a/test/parser/samples/convert-entities/output.json
+++ b/test/parser/samples/convert-entities/output.json
@@ -8,11 +8,9 @@
"start": 0,
"end": 17,
"type": "Text",
+ "raw": "Hello & World",
"data": "Hello & World"
}
]
- },
- "css": null,
- "instance": null,
- "module": null
+ }
}
\ No newline at end of file
diff --git a/test/parser/samples/css/output.json b/test/parser/samples/css/output.json
index 3127e01c71..12d74ae7f8 100644
--- a/test/parser/samples/css/output.json
+++ b/test/parser/samples/css/output.json
@@ -15,6 +15,7 @@
"start": 5,
"end": 8,
"type": "Text",
+ "raw": "foo",
"data": "foo"
}
]
@@ -23,6 +24,7 @@
"start": 14,
"end": 16,
"type": "Text",
+ "raw": "\n\n",
"data": "\n\n"
}
]
@@ -90,7 +92,5 @@
"end": 48,
"styles": "\n\tdiv {\n\t\tcolor: red;\n\t}\n"
}
- },
- "instance": null,
- "module": null
+ }
}
\ No newline at end of file
diff --git a/test/parser/samples/dynamic-import/output.json b/test/parser/samples/dynamic-import/output.json
index c0d4a45e0d..fa1acf7d9b 100644
--- a/test/parser/samples/dynamic-import/output.json
+++ b/test/parser/samples/dynamic-import/output.json
@@ -5,7 +5,6 @@
"type": "Fragment",
"children": []
},
- "css": null,
"instance": {
"start": 0,
"end": 146,
@@ -66,8 +65,8 @@
"start": 54,
"end": 134,
"id": null,
- "generator": false,
"expression": false,
+ "generator": false,
"async": false,
"params": [],
"body": {
@@ -120,8 +119,8 @@
"start": 88,
"end": 129,
"id": null,
- "generator": false,
"expression": false,
+ "generator": false,
"async": false,
"params": [
{
diff --git a/test/parser/samples/each-block-destructured/output.json b/test/parser/samples/each-block-destructured/output.json
index 0c4b1a5c54..6368b445d6 100644
--- a/test/parser/samples/each-block-destructured/output.json
+++ b/test/parser/samples/each-block-destructured/output.json
@@ -37,6 +37,7 @@
"start": 50,
"end": 52,
"type": "Text",
+ "raw": ": ",
"data": ": "
},
{
@@ -80,8 +81,5 @@
}
}
]
- },
- "css": null,
- "instance": null,
- "module": null
-}
+ }
+}
\ No newline at end of file
diff --git a/test/parser/samples/each-block-else/output.json b/test/parser/samples/each-block-else/output.json
index aefc8c2f39..1e8ac455e6 100644
--- a/test/parser/samples/each-block-else/output.json
+++ b/test/parser/samples/each-block-else/output.json
@@ -58,6 +58,7 @@
"start": 55,
"end": 65,
"type": "Text",
+ "raw": "no animals",
"data": "no animals"
}
]
@@ -66,8 +67,5 @@
}
}
]
- },
- "css": null,
- "instance": null,
- "module": null
+ }
}
\ No newline at end of file
diff --git a/test/parser/samples/each-block-indexed/output.json b/test/parser/samples/each-block-indexed/output.json
index 7518652468..77417ba67a 100644
--- a/test/parser/samples/each-block-indexed/output.json
+++ b/test/parser/samples/each-block-indexed/output.json
@@ -37,6 +37,7 @@
"start": 36,
"end": 38,
"type": "Text",
+ "raw": ": ",
"data": ": "
},
{
@@ -62,8 +63,5 @@
"index": "i"
}
]
- },
- "css": null,
- "instance": null,
- "module": null
+ }
}
\ No newline at end of file
diff --git a/test/parser/samples/each-block-keyed/output.json b/test/parser/samples/each-block-keyed/output.json
index fe893bcdb9..11cdd45ff1 100644
--- a/test/parser/samples/each-block-keyed/output.json
+++ b/test/parser/samples/each-block-keyed/output.json
@@ -62,8 +62,5 @@
}
}
]
- },
- "css": null,
- "instance": null,
- "module": null
+ }
}
\ No newline at end of file
diff --git a/test/parser/samples/each-block/output.json b/test/parser/samples/each-block/output.json
index c16a71ad5d..6a60823952 100644
--- a/test/parser/samples/each-block/output.json
+++ b/test/parser/samples/each-block/output.json
@@ -44,8 +44,5 @@
}
}
]
- },
- "css": null,
- "instance": null,
- "module": null
+ }
}
\ No newline at end of file
diff --git a/test/parser/samples/element-with-mustache/output.json b/test/parser/samples/element-with-mustache/output.json
index c8a386d681..f7c2e9936b 100644
--- a/test/parser/samples/element-with-mustache/output.json
+++ b/test/parser/samples/element-with-mustache/output.json
@@ -15,6 +15,7 @@
"start": 4,
"end": 10,
"type": "Text",
+ "raw": "hello ",
"data": "hello "
},
{
@@ -32,13 +33,11 @@
"start": 16,
"end": 17,
"type": "Text",
+ "raw": "!",
"data": "!"
}
]
}
]
- },
- "css": null,
- "instance": null,
- "module": null
+ }
}
\ No newline at end of file
diff --git a/test/parser/samples/element-with-text/output.json b/test/parser/samples/element-with-text/output.json
index 70f6163c93..b0e0f5c6cc 100644
--- a/test/parser/samples/element-with-text/output.json
+++ b/test/parser/samples/element-with-text/output.json
@@ -15,13 +15,11 @@
"start": 6,
"end": 10,
"type": "Text",
+ "raw": "test",
"data": "test"
}
]
}
]
- },
- "css": null,
- "instance": null,
- "module": null
+ }
}
\ No newline at end of file
diff --git a/test/parser/samples/elements/output.json b/test/parser/samples/elements/output.json
index d216f7f5d8..75548c20f0 100644
--- a/test/parser/samples/elements/output.json
+++ b/test/parser/samples/elements/output.json
@@ -21,8 +21,5 @@
"children": []
}
]
- },
- "css": null,
- "instance": null,
- "module": null
+ }
}
\ No newline at end of file
diff --git a/test/parser/samples/event-handler/output.json b/test/parser/samples/event-handler/output.json
index b1fe89fc2a..f792ffadcc 100644
--- a/test/parser/samples/event-handler/output.json
+++ b/test/parser/samples/event-handler/output.json
@@ -21,8 +21,8 @@
"start": 19,
"end": 43,
"id": null,
- "generator": false,
"expression": true,
+ "generator": false,
"async": false,
"params": [],
"body": {
@@ -58,6 +58,7 @@
"start": 46,
"end": 52,
"type": "Text",
+ "raw": "toggle",
"data": "toggle"
}
]
@@ -66,6 +67,7 @@
"start": 61,
"end": 63,
"type": "Text",
+ "raw": "\n\n",
"data": "\n\n"
},
{
@@ -90,6 +92,7 @@
"start": 81,
"end": 87,
"type": "Text",
+ "raw": "hello!",
"data": "hello!"
}
]
@@ -97,8 +100,5 @@
]
}
]
- },
- "css": null,
- "instance": null,
- "module": null
+ }
}
\ No newline at end of file
diff --git a/test/parser/samples/if-block-else/output.json b/test/parser/samples/if-block-else/output.json
index dedf2797c4..8b22cfa26b 100644
--- a/test/parser/samples/if-block-else/output.json
+++ b/test/parser/samples/if-block-else/output.json
@@ -26,6 +26,7 @@
"start": 14,
"end": 17,
"type": "Text",
+ "raw": "foo",
"data": "foo"
}
]
@@ -47,6 +48,7 @@
"start": 34,
"end": 41,
"type": "Text",
+ "raw": "not foo",
"data": "not foo"
}
]
@@ -55,8 +57,5 @@
}
}
]
- },
- "css": null,
- "instance": null,
- "module": null
+ }
}
\ No newline at end of file
diff --git a/test/parser/samples/if-block-elseif/output.json b/test/parser/samples/if-block-elseif/output.json
index 188b57aaad..54fb53dacb 100644
--- a/test/parser/samples/if-block-elseif/output.json
+++ b/test/parser/samples/if-block-elseif/output.json
@@ -39,6 +39,7 @@
"start": 17,
"end": 37,
"type": "Text",
+ "raw": "x is greater than 10",
"data": "x is greater than 10"
}
]
@@ -85,6 +86,7 @@
"start": 63,
"end": 79,
"type": "Text",
+ "raw": "x is less than 5",
"data": "x is less than 5"
}
]
diff --git a/test/parser/samples/if-block/output.json b/test/parser/samples/if-block/output.json
index d560824766..1714bb7141 100644
--- a/test/parser/samples/if-block/output.json
+++ b/test/parser/samples/if-block/output.json
@@ -19,13 +19,11 @@
"start": 9,
"end": 12,
"type": "Text",
+ "raw": "bar",
"data": "bar"
}
]
}
]
- },
- "css": null,
- "instance": null,
- "module": null
+ }
}
\ No newline at end of file
diff --git a/test/parser/samples/implicitly-closed-li/output.json b/test/parser/samples/implicitly-closed-li/output.json
index caf69d7109..f46a2b1a26 100644
--- a/test/parser/samples/implicitly-closed-li/output.json
+++ b/test/parser/samples/implicitly-closed-li/output.json
@@ -15,6 +15,7 @@
"start": 4,
"end": 6,
"type": "Text",
+ "raw": "\n\t",
"data": "\n\t"
},
{
@@ -28,6 +29,7 @@
"start": 10,
"end": 13,
"type": "Text",
+ "raw": "a\n\t",
"data": "a\n\t"
}
]
@@ -43,6 +45,7 @@
"start": 17,
"end": 20,
"type": "Text",
+ "raw": "b\n\t",
"data": "b\n\t"
}
]
@@ -58,6 +61,7 @@
"start": 24,
"end": 26,
"type": "Text",
+ "raw": "c\n",
"data": "c\n"
}
]
@@ -65,8 +69,5 @@
]
}
]
- },
- "css": null,
- "instance": null,
- "module": null
+ }
}
\ No newline at end of file
diff --git a/test/parser/samples/nbsp/output.json b/test/parser/samples/nbsp/output.json
index 4fa318ce48..044de64cba 100644
--- a/test/parser/samples/nbsp/output.json
+++ b/test/parser/samples/nbsp/output.json
@@ -15,13 +15,11 @@
"start": 6,
"end": 12,
"type": "Text",
+ "raw": " ",
"data": " "
}
]
}
]
- },
- "css": null,
- "instance": null,
- "module": null
+ }
}
\ No newline at end of file
diff --git a/test/parser/samples/raw-mustaches/output.json b/test/parser/samples/raw-mustaches/output.json
index 1d92b21c85..1b3d9b7a9c 100644
--- a/test/parser/samples/raw-mustaches/output.json
+++ b/test/parser/samples/raw-mustaches/output.json
@@ -15,6 +15,7 @@
"start": 3,
"end": 4,
"type": "Text",
+ "raw": " ",
"data": " "
},
{
@@ -32,6 +33,7 @@
"start": 16,
"end": 17,
"type": "Text",
+ "raw": " ",
"data": " "
},
{
@@ -49,13 +51,11 @@
"start": 29,
"end": 30,
"type": "Text",
+ "raw": " ",
"data": " "
}
]
}
]
- },
- "css": null,
- "instance": null,
- "module": null
+ }
}
\ No newline at end of file
diff --git a/test/parser/samples/refs/output.json b/test/parser/samples/refs/output.json
index d15753b0a2..e09383f9b6 100644
--- a/test/parser/samples/refs/output.json
+++ b/test/parser/samples/refs/output.json
@@ -8,6 +8,7 @@
"start": 28,
"end": 30,
"type": "Text",
+ "raw": "\n\n",
"data": "\n\n"
},
{
diff --git a/test/parser/samples/script-comment-only/output.json b/test/parser/samples/script-comment-only/output.json
index 95ca769b20..ba28434318 100644
--- a/test/parser/samples/script-comment-only/output.json
+++ b/test/parser/samples/script-comment-only/output.json
@@ -8,6 +8,7 @@
"start": 43,
"end": 45,
"type": "Text",
+ "raw": "\n\n",
"data": "\n\n"
},
{
diff --git a/test/parser/samples/script-comment-trailing-multiline/output.json b/test/parser/samples/script-comment-trailing-multiline/output.json
index d4a45911a1..7d01599efa 100644
--- a/test/parser/samples/script-comment-trailing-multiline/output.json
+++ b/test/parser/samples/script-comment-trailing-multiline/output.json
@@ -8,6 +8,7 @@
"start": 77,
"end": 79,
"type": "Text",
+ "raw": "\n\n",
"data": "\n\n"
},
{
@@ -21,6 +22,7 @@
"start": 83,
"end": 89,
"type": "Text",
+ "raw": "Hello ",
"data": "Hello "
},
{
@@ -38,6 +40,7 @@
"start": 95,
"end": 96,
"type": "Text",
+ "raw": "!",
"data": "!"
}
]
diff --git a/test/parser/samples/script-comment-trailing/output.json b/test/parser/samples/script-comment-trailing/output.json
index 92d431b558..bc8f3e4e67 100644
--- a/test/parser/samples/script-comment-trailing/output.json
+++ b/test/parser/samples/script-comment-trailing/output.json
@@ -8,6 +8,7 @@
"start": 66,
"end": 68,
"type": "Text",
+ "raw": "\n\n",
"data": "\n\n"
},
{
@@ -21,6 +22,7 @@
"start": 72,
"end": 78,
"type": "Text",
+ "raw": "Hello ",
"data": "Hello "
},
{
@@ -38,6 +40,7 @@
"start": 84,
"end": 85,
"type": "Text",
+ "raw": "!",
"data": "!"
}
]
diff --git a/test/parser/samples/script/output.json b/test/parser/samples/script/output.json
index 95966f5dc6..75aa0a7d2c 100644
--- a/test/parser/samples/script/output.json
+++ b/test/parser/samples/script/output.json
@@ -8,6 +8,7 @@
"start": 39,
"end": 41,
"type": "Text",
+ "raw": "\n\n",
"data": "\n\n"
},
{
@@ -21,6 +22,7 @@
"start": 45,
"end": 51,
"type": "Text",
+ "raw": "Hello ",
"data": "Hello "
},
{
@@ -38,6 +40,7 @@
"start": 57,
"end": 58,
"type": "Text",
+ "raw": "!",
"data": "!"
}
]
diff --git a/test/parser/samples/self-closing-element/output.json b/test/parser/samples/self-closing-element/output.json
index 47eea2f333..63ff17a466 100644
--- a/test/parser/samples/self-closing-element/output.json
+++ b/test/parser/samples/self-closing-element/output.json
@@ -13,8 +13,5 @@
"children": []
}
]
- },
- "css": null,
- "instance": null,
- "module": null
+ }
}
\ No newline at end of file
diff --git a/test/parser/samples/self-reference/output.json b/test/parser/samples/self-reference/output.json
index de5112a087..92dfdfe4d0 100644
--- a/test/parser/samples/self-reference/output.json
+++ b/test/parser/samples/self-reference/output.json
@@ -72,8 +72,5 @@
]
}
]
- },
- "css": null,
- "instance": null,
- "module": null
+ }
}
\ No newline at end of file
diff --git a/test/parser/samples/space-between-mustaches/output.json b/test/parser/samples/space-between-mustaches/output.json
index c89409daeb..9a367bd2c1 100644
--- a/test/parser/samples/space-between-mustaches/output.json
+++ b/test/parser/samples/space-between-mustaches/output.json
@@ -15,6 +15,7 @@
"start": 3,
"end": 4,
"type": "Text",
+ "raw": " ",
"data": " "
},
{
@@ -32,6 +33,7 @@
"start": 7,
"end": 8,
"type": "Text",
+ "raw": " ",
"data": " "
},
{
@@ -49,6 +51,7 @@
"start": 11,
"end": 14,
"type": "Text",
+ "raw": " : ",
"data": " : "
},
{
@@ -66,13 +69,11 @@
"start": 17,
"end": 20,
"type": "Text",
+ "raw": " : ",
"data": " : "
}
]
}
]
- },
- "css": null,
- "instance": null,
- "module": null
+ }
}
\ No newline at end of file
diff --git a/test/parser/samples/spread/output.json b/test/parser/samples/spread/output.json
index 3986da3578..73a0dc9777 100644
--- a/test/parser/samples/spread/output.json
+++ b/test/parser/samples/spread/output.json
@@ -25,8 +25,5 @@
"children": []
}
]
- },
- "css": null,
- "instance": null,
- "module": null
+ }
}
\ No newline at end of file
diff --git a/test/parser/samples/textarea-children/output.json b/test/parser/samples/textarea-children/output.json
index 3b403458fc..90f31f3caf 100644
--- a/test/parser/samples/textarea-children/output.json
+++ b/test/parser/samples/textarea-children/output.json
@@ -16,8 +16,9 @@
"value": [
{
"start": 10,
- "end": 40,
+ "end": 41,
"type": "Text",
+ "raw": "\n\tnot actually an element. ",
"data": "\n\t
not actually an element. "
},
{
@@ -35,6 +36,7 @@
"start": 45,
"end": 50,
"type": "Text",
+ "raw": "
\n",
"data": "
\n"
}
]
@@ -43,8 +45,5 @@
"children": []
}
]
- },
- "css": null,
- "instance": null,
- "module": null
+ }
}
\ No newline at end of file
diff --git a/test/parser/samples/transition-intro-no-params/output.json b/test/parser/samples/transition-intro-no-params/output.json
index edb15457e6..91b50f3ec8 100644
--- a/test/parser/samples/transition-intro-no-params/output.json
+++ b/test/parser/samples/transition-intro-no-params/output.json
@@ -26,13 +26,11 @@
"start": 13,
"end": 21,
"type": "Text",
+ "raw": "fades in",
"data": "fades in"
}
]
}
]
- },
- "css": null,
- "instance": null,
- "module": null
+ }
}
\ No newline at end of file
diff --git a/test/parser/samples/transition-intro/output.json b/test/parser/samples/transition-intro/output.json
index 5583dd89bc..418bb97e16 100644
--- a/test/parser/samples/transition-intro/output.json
+++ b/test/parser/samples/transition-intro/output.json
@@ -54,13 +54,11 @@
"start": 31,
"end": 39,
"type": "Text",
+ "raw": "fades in",
"data": "fades in"
}
]
}
]
- },
- "css": null,
- "instance": null,
- "module": null
+ }
}
\ No newline at end of file
diff --git a/test/parser/samples/unusual-identifier/output.json b/test/parser/samples/unusual-identifier/output.json
index c0d4ecc3ff..e4a2a18619 100644
--- a/test/parser/samples/unusual-identifier/output.json
+++ b/test/parser/samples/unusual-identifier/output.json
@@ -44,8 +44,5 @@
}
}
]
- },
- "css": null,
- "instance": null,
- "module": null
+ }
}
\ No newline at end of file
diff --git a/test/parser/samples/whitespace-leading-trailing/output.json b/test/parser/samples/whitespace-leading-trailing/output.json
index f164af01ba..e4f387856e 100644
--- a/test/parser/samples/whitespace-leading-trailing/output.json
+++ b/test/parser/samples/whitespace-leading-trailing/output.json
@@ -8,6 +8,7 @@
"start": 0,
"end": 6,
"type": "Text",
+ "raw": "\n\n\t\t\t\t",
"data": "\n\n\t\t\t\t"
},
{
@@ -21,13 +22,11 @@
"start": 9,
"end": 32,
"type": "Text",
+ "raw": "just chillin' over here",
"data": "just chillin' over here"
}
]
}
]
- },
- "css": null,
- "instance": null,
- "module": null
+ }
}
\ No newline at end of file
diff --git a/test/parser/samples/whitespace-normal/output.json b/test/parser/samples/whitespace-normal/output.json
index e4ce956331..acbae7ae17 100644
--- a/test/parser/samples/whitespace-normal/output.json
+++ b/test/parser/samples/whitespace-normal/output.json
@@ -15,6 +15,7 @@
"start": 4,
"end": 10,
"type": "Text",
+ "raw": "Hello ",
"data": "Hello "
},
{
@@ -39,6 +40,7 @@
"start": 24,
"end": 26,
"type": "Text",
+ "raw": "! ",
"data": "! "
}
]
@@ -54,6 +56,7 @@
"start": 41,
"end": 53,
"type": "Text",
+ "raw": "How are you?",
"data": "How are you?"
}
]
@@ -61,8 +64,5 @@
]
}
]
- },
- "css": null,
- "instance": null,
- "module": null
+ }
}
\ No newline at end of file
diff --git a/test/parser/samples/yield/output.json b/test/parser/samples/yield/output.json
index 16ea79d8e8..b2e4b9430f 100644
--- a/test/parser/samples/yield/output.json
+++ b/test/parser/samples/yield/output.json
@@ -16,8 +16,5 @@
}
}
]
- },
- "css": null,
- "instance": null,
- "module": null
+ }
}
\ No newline at end of file
diff --git a/test/preprocess/samples/attributes-with-equals/_config.js b/test/preprocess/samples/attributes-with-equals/_config.js
new file mode 100644
index 0000000000..bee4928b1f
--- /dev/null
+++ b/test/preprocess/samples/attributes-with-equals/_config.js
@@ -0,0 +1,5 @@
+export default {
+ preprocess: {
+ style: ({ attributes }) => attributes.foo && attributes.foo.includes('=') ? { code: '' } : null
+ }
+};
diff --git a/test/preprocess/samples/attributes-with-equals/input.svelte b/test/preprocess/samples/attributes-with-equals/input.svelte
new file mode 100644
index 0000000000..4e88284a29
--- /dev/null
+++ b/test/preprocess/samples/attributes-with-equals/input.svelte
@@ -0,0 +1,3 @@
+
diff --git a/test/preprocess/samples/attributes-with-equals/output.svelte b/test/preprocess/samples/attributes-with-equals/output.svelte
new file mode 100644
index 0000000000..c194ab682d
--- /dev/null
+++ b/test/preprocess/samples/attributes-with-equals/output.svelte
@@ -0,0 +1 @@
+
diff --git a/test/runtime/index.js b/test/runtime/index.js
index db02ce13d4..880e316e0c 100644
--- a/test/runtime/index.js
+++ b/test/runtime/index.js
@@ -3,7 +3,7 @@ import * as path from "path";
import * as fs from "fs";
import { rollup } from 'rollup';
import * as virtual from 'rollup-plugin-virtual';
-import { clear_loops, set_now } from "../../internal.js";
+import { clear_loops, flush, set_now, set_raf } from "../../internal";
import {
showOutput,
@@ -20,7 +20,11 @@ let compileOptions = null;
let compile = null;
const sveltePath = process.cwd().split('\\').join('/');
-const internal = `${sveltePath}/internal.js`;
+
+let unhandled_rejection = false;
+process.on('unhandledRejection', err => {
+ unhandled_rejection = err;
+});
describe("runtime", () => {
before(() => {
@@ -47,8 +51,6 @@ describe("runtime", () => {
function runTest(dir, hydrate) {
if (dir[0] === ".") return;
- const { flush } = require(internal);
-
const config = loadConfig(`./runtime/samples/${dir}/_config.js`);
if (hydrate && config.skip_if_hydrate) return;
@@ -63,10 +65,11 @@ describe("runtime", () => {
throw new Error('skipping test, already failed');
}
+ unhandled_rejection = null;
+
compile = (config.preserveIdentifiers ? svelte : svelte$).compile;
const cwd = path.resolve(`test/runtime/samples/${dir}`);
- global.document.title = '';
compileOptions = config.compileOptions || {};
compileOptions.sveltePath = sveltePath;
@@ -101,15 +104,13 @@ describe("runtime", () => {
}
};
set_now(() => raf.time);
- global.requestAnimationFrame = cb => {
- let called = false;
+ set_raf(cb => {
raf.callback = () => {
- if (!called) {
- called = true;
- cb();
- }
+ raf.callback = null;
+ cb();
+ flush();
};
- };
+ });
try {
mod = require(`./samples/${dir}/main.svelte`);
@@ -119,8 +120,6 @@ describe("runtime", () => {
throw err;
}
- global.window = window;
-
if (config.before_test) config.before_test();
// Put things we need on window for testing
@@ -171,10 +170,18 @@ describe("runtime", () => {
raf
})).then(() => {
component.$destroy();
+
+ if (unhandled_rejection) {
+ throw unhandled_rejection;
+ }
});
} else {
component.$destroy();
assert.htmlEqual(target.innerHTML, "");
+
+ if (unhandled_rejection) {
+ throw unhandled_rejection;
+ }
}
})
.catch(err => {
@@ -221,9 +228,10 @@ describe("runtime", () => {
'main.js': js.code
}),
{
+ name: 'svelte-packages',
resolveId: (importee, importer) => {
if (importee.startsWith('svelte/')) {
- return importee.replace('svelte', process.cwd()) + '.mjs';
+ return importee.replace('svelte', process.cwd()) + '/index.mjs';
}
}
}
diff --git a/test/runtime/samples/animation-css/_config.js b/test/runtime/samples/animation-css/_config.js
index 544c6378ff..9410fb91e7 100644
--- a/test/runtime/samples/animation-css/_config.js
+++ b/test/runtime/samples/animation-css/_config.js
@@ -17,8 +17,8 @@ export default {
e
`,
- test({ assert, component, target, window, raf }) {
- let divs = document.querySelectorAll('div');
+ test({ assert, component, target, raf }) {
+ let divs = target.querySelectorAll('div');
divs.forEach(div => {
div.getBoundingClientRect = function() {
const index = [...this.parentNode.children].indexOf(this);
@@ -29,9 +29,9 @@ export default {
right: 100,
top,
bottom: top + 20
- }
+ };
};
- })
+ });
component.things = [
{ id: 5, name: 'e' },
@@ -41,11 +41,11 @@ export default {
{ id: 1, name: 'a' }
];
- divs = document.querySelectorAll('div');
+ divs = target.querySelectorAll('div');
assert.ok(~divs[0].style.animation.indexOf('__svelte'));
- assert.equal(divs[1].style.animation, undefined);
- assert.equal(divs[2].style.animation, undefined);
- assert.equal(divs[3].style.animation, undefined);
+ assert.equal(divs[1].style.animation, '');
+ assert.equal(divs[2].style.animation, '');
+ assert.equal(divs[3].style.animation, '');
assert.ok(~divs[4].style.animation.indexOf('__svelte'));
raf.tick(100);
diff --git a/test/runtime/samples/animation-js-delay/_config.js b/test/runtime/samples/animation-js-delay/_config.js
index faed25ecaa..6bd02d17e6 100644
--- a/test/runtime/samples/animation-js-delay/_config.js
+++ b/test/runtime/samples/animation-js-delay/_config.js
@@ -29,9 +29,9 @@ export default {
right: 100,
top,
bottom: top + 20
- }
+ };
};
- })
+ });
component.things = [
{ id: 5, name: 'e' },
diff --git a/test/runtime/samples/animation-js-easing/_config.js b/test/runtime/samples/animation-js-easing/_config.js
index a31825c3f9..415af042a9 100644
--- a/test/runtime/samples/animation-js-easing/_config.js
+++ b/test/runtime/samples/animation-js-easing/_config.js
@@ -29,9 +29,9 @@ export default {
right: 100,
top,
bottom: top + 20
- }
+ };
};
- })
+ });
component.things = [
{ id: 5, name: 'e' },
diff --git a/test/runtime/samples/animation-js/_config.js b/test/runtime/samples/animation-js/_config.js
index d5991a915a..521753633d 100644
--- a/test/runtime/samples/animation-js/_config.js
+++ b/test/runtime/samples/animation-js/_config.js
@@ -29,7 +29,7 @@ export default {
right: 100,
top,
bottom: top + 20
- }
+ };
};
});
diff --git a/test/runtime/samples/attribute-dataset-without-value/_config.js b/test/runtime/samples/attribute-dataset-without-value/_config.js
new file mode 100644
index 0000000000..934f44eb06
--- /dev/null
+++ b/test/runtime/samples/attribute-dataset-without-value/_config.js
@@ -0,0 +1,3 @@
+export default {
+ html: '
',
+};
diff --git a/test/runtime/samples/attribute-dataset-without-value/main.svelte b/test/runtime/samples/attribute-dataset-without-value/main.svelte
new file mode 100644
index 0000000000..ed7d532652
--- /dev/null
+++ b/test/runtime/samples/attribute-dataset-without-value/main.svelte
@@ -0,0 +1 @@
+
diff --git a/test/runtime/samples/attribute-false/_config.js b/test/runtime/samples/attribute-false/_config.js
new file mode 100644
index 0000000000..9fd08a2a48
--- /dev/null
+++ b/test/runtime/samples/attribute-false/_config.js
@@ -0,0 +1,3 @@
+export default {
+ html: `
`,
+};
diff --git a/test/runtime/samples/attribute-false/main.svelte b/test/runtime/samples/attribute-false/main.svelte
new file mode 100644
index 0000000000..ca78020a39
--- /dev/null
+++ b/test/runtime/samples/attribute-false/main.svelte
@@ -0,0 +1 @@
+
diff --git a/test/runtime/samples/attribute-null-classname-no-style/_config.js b/test/runtime/samples/attribute-null-classname-no-style/_config.js
new file mode 100644
index 0000000000..4a78b680ef
--- /dev/null
+++ b/test/runtime/samples/attribute-null-classname-no-style/_config.js
@@ -0,0 +1,42 @@
+export default {
+ props: {
+ testName: "testClassName"
+ },
+
+ html: `
`,
+
+ test({ assert, component, target }) {
+ const div = target.querySelector('div');
+ assert.equal(div.className, 'testClassName');
+
+ component.testName = null;
+ assert.equal(div.className, '');
+
+ component.testName = undefined;
+ assert.equal(div.className, '');
+
+ component.testName = undefined + '';
+ assert.equal(div.className, 'undefined');
+
+ component.testName = null + '';
+ assert.equal(div.className, 'null');
+
+ component.testName = 1;
+ assert.equal(div.className, '1');
+
+ component.testName = 0;
+ assert.equal(div.className, '0');
+
+ component.testName = false;
+ assert.equal(div.className, 'false');
+
+ component.testName = true;
+ assert.equal(div.className, 'true');
+
+ component.testName = {};
+ assert.equal(div.className, '[object Object]');
+
+ component.testName = '';
+ assert.equal(div.className, '');
+ }
+};
diff --git a/test/runtime/samples/attribute-null-classname-no-style/main.svelte b/test/runtime/samples/attribute-null-classname-no-style/main.svelte
new file mode 100644
index 0000000000..8dfcd7af54
--- /dev/null
+++ b/test/runtime/samples/attribute-null-classname-no-style/main.svelte
@@ -0,0 +1,5 @@
+
+
+
diff --git a/test/runtime/samples/attribute-null-classname-with-style/_config.js b/test/runtime/samples/attribute-null-classname-with-style/_config.js
new file mode 100644
index 0000000000..3ebc593b5d
--- /dev/null
+++ b/test/runtime/samples/attribute-null-classname-with-style/_config.js
@@ -0,0 +1,40 @@
+export default {
+ html: `
`,
+
+ test({ assert, component, target }) {
+ const div = target.querySelector('div');
+
+ component.testName = null;
+ assert.equal(div.className, ' svelte-x1o6ra');
+
+ component.testName = undefined;
+ assert.equal(div.className, ' svelte-x1o6ra');
+
+ component.testName = undefined + '';
+ assert.equal(div.className, 'undefined svelte-x1o6ra');
+
+ component.testName = null + '';
+ assert.equal(div.className, 'null svelte-x1o6ra');
+
+ component.testName = 1;
+ assert.equal(div.className, '1 svelte-x1o6ra');
+
+ component.testName = 0;
+ assert.equal(div.className, '0 svelte-x1o6ra');
+
+ component.testName = false;
+ assert.equal(div.className, 'false svelte-x1o6ra');
+
+ component.testName = true;
+ assert.equal(div.className, 'true svelte-x1o6ra');
+
+ component.testName = {};
+ assert.equal(div.className, '[object Object] svelte-x1o6ra');
+
+ component.testName = '';
+ assert.equal(div.className, ' svelte-x1o6ra');
+
+ component.testName = 'testClassName';
+ assert.equal(div.className, 'testClassName svelte-x1o6ra');
+ }
+};
diff --git a/test/runtime/samples/attribute-null-classname-with-style/main.svelte b/test/runtime/samples/attribute-null-classname-with-style/main.svelte
new file mode 100644
index 0000000000..013647952d
--- /dev/null
+++ b/test/runtime/samples/attribute-null-classname-with-style/main.svelte
@@ -0,0 +1,11 @@
+
+
+
+
+
diff --git a/test/runtime/samples/attribute-null-classnames-no-style/_config.js b/test/runtime/samples/attribute-null-classnames-no-style/_config.js
new file mode 100644
index 0000000000..917cf565c0
--- /dev/null
+++ b/test/runtime/samples/attribute-null-classnames-no-style/_config.js
@@ -0,0 +1,45 @@
+export default {
+ props: {
+ testName1: "test1",
+ testName2: "test2",
+ },
+
+ html: `
`,
+
+ test({ assert, component, target }) {
+ const div = target.querySelector('div');
+ assert.equal(div.className, 'test1test2');
+
+ component.testName1 = null;
+ component.testName2 = null;
+ assert.equal(div.className, '0');
+
+ component.testName1 = null;
+ component.testName2 = "test";
+ assert.equal(div.className, 'nulltest');
+
+ component.testName1 = undefined;
+ component.testName2 = "test";
+ assert.equal(div.className, 'undefinedtest');
+
+ component.testName1 = undefined;
+ component.testName2 = undefined;
+ assert.equal(div.className, 'NaN');
+
+ component.testName1 = null;
+ component.testName2 = 1;
+ assert.equal(div.className, '1');
+
+ component.testName1 = undefined;
+ component.testName2 = 1;
+ assert.equal(div.className, 'NaN');
+
+ component.testName1 = null;
+ component.testName2 = 0;
+ assert.equal(div.className, '0');
+
+ component.testName1 = undefined;
+ component.testName2 = 0;
+ assert.equal(div.className, 'NaN');
+ }
+};
diff --git a/test/runtime/samples/attribute-null-classnames-no-style/main.svelte b/test/runtime/samples/attribute-null-classnames-no-style/main.svelte
new file mode 100644
index 0000000000..f8cf7d803e
--- /dev/null
+++ b/test/runtime/samples/attribute-null-classnames-no-style/main.svelte
@@ -0,0 +1,6 @@
+
+
+
diff --git a/test/runtime/samples/attribute-null-classnames-with-style/_config.js b/test/runtime/samples/attribute-null-classnames-with-style/_config.js
new file mode 100644
index 0000000000..5762f628fb
--- /dev/null
+++ b/test/runtime/samples/attribute-null-classnames-with-style/_config.js
@@ -0,0 +1,45 @@
+export default {
+ props: {
+ testName1: "test1",
+ testName2: "test2",
+ },
+
+ html: `
`,
+
+ test({ assert, component, target }) {
+ const div = target.querySelector('div');
+ assert.equal(div.className, 'test1test2 svelte-x1o6ra');
+
+ component.testName1 = null;
+ component.testName2 = null;
+ assert.equal(div.className, '0 svelte-x1o6ra');
+
+ component.testName1 = null;
+ component.testName2 = "test";
+ assert.equal(div.className, 'nulltest svelte-x1o6ra');
+
+ component.testName1 = undefined;
+ component.testName2 = "test";
+ assert.equal(div.className, 'undefinedtest svelte-x1o6ra');
+
+ component.testName1 = undefined;
+ component.testName2 = undefined;
+ assert.equal(div.className, 'NaN svelte-x1o6ra');
+
+ component.testName1 = null;
+ component.testName2 = 1;
+ assert.equal(div.className, '1 svelte-x1o6ra');
+
+ component.testName1 = undefined;
+ component.testName2 = 1;
+ assert.equal(div.className, 'NaN svelte-x1o6ra');
+
+ component.testName1 = null;
+ component.testName2 = 0;
+ assert.equal(div.className, '0 svelte-x1o6ra');
+
+ component.testName1 = undefined;
+ component.testName2 = 0;
+ assert.equal(div.className, 'NaN svelte-x1o6ra');
+ }
+};
diff --git a/test/runtime/samples/attribute-null-classnames-with-style/main.svelte b/test/runtime/samples/attribute-null-classnames-with-style/main.svelte
new file mode 100644
index 0000000000..06098fd50b
--- /dev/null
+++ b/test/runtime/samples/attribute-null-classnames-with-style/main.svelte
@@ -0,0 +1,12 @@
+
+
+
+
+
diff --git a/test/runtime/samples/attribute-null-func-classname-no-style/_config.js b/test/runtime/samples/attribute-null-func-classname-no-style/_config.js
new file mode 100644
index 0000000000..4a78b680ef
--- /dev/null
+++ b/test/runtime/samples/attribute-null-func-classname-no-style/_config.js
@@ -0,0 +1,42 @@
+export default {
+ props: {
+ testName: "testClassName"
+ },
+
+ html: `
`,
+
+ test({ assert, component, target }) {
+ const div = target.querySelector('div');
+ assert.equal(div.className, 'testClassName');
+
+ component.testName = null;
+ assert.equal(div.className, '');
+
+ component.testName = undefined;
+ assert.equal(div.className, '');
+
+ component.testName = undefined + '';
+ assert.equal(div.className, 'undefined');
+
+ component.testName = null + '';
+ assert.equal(div.className, 'null');
+
+ component.testName = 1;
+ assert.equal(div.className, '1');
+
+ component.testName = 0;
+ assert.equal(div.className, '0');
+
+ component.testName = false;
+ assert.equal(div.className, 'false');
+
+ component.testName = true;
+ assert.equal(div.className, 'true');
+
+ component.testName = {};
+ assert.equal(div.className, '[object Object]');
+
+ component.testName = '';
+ assert.equal(div.className, '');
+ }
+};
diff --git a/test/runtime/samples/attribute-null-func-classname-no-style/main.svelte b/test/runtime/samples/attribute-null-func-classname-no-style/main.svelte
new file mode 100644
index 0000000000..e2754cd421
--- /dev/null
+++ b/test/runtime/samples/attribute-null-func-classname-no-style/main.svelte
@@ -0,0 +1,9 @@
+
+
+
diff --git a/test/runtime/samples/attribute-null-func-classname-with-style/_config.js b/test/runtime/samples/attribute-null-func-classname-with-style/_config.js
new file mode 100644
index 0000000000..1ed43d05b9
--- /dev/null
+++ b/test/runtime/samples/attribute-null-func-classname-with-style/_config.js
@@ -0,0 +1,42 @@
+export default {
+ props: {
+ testName: "testClassName"
+ },
+
+ html: `
`,
+
+ test({ assert, component, target }) {
+ const div = target.querySelector('div');
+ assert.equal(div.className, 'testClassName svelte-x1o6ra');
+
+ component.testName = null;
+ assert.equal(div.className, ' svelte-x1o6ra');
+
+ component.testName = undefined;
+ assert.equal(div.className, ' svelte-x1o6ra');
+
+ component.testName = undefined + '';
+ assert.equal(div.className, 'undefined svelte-x1o6ra');
+
+ component.testName = null + '';
+ assert.equal(div.className, 'null svelte-x1o6ra');
+
+ component.testName = 1;
+ assert.equal(div.className, '1 svelte-x1o6ra');
+
+ component.testName = 0;
+ assert.equal(div.className, '0 svelte-x1o6ra');
+
+ component.testName = false;
+ assert.equal(div.className, 'false svelte-x1o6ra');
+
+ component.testName = true;
+ assert.equal(div.className, 'true svelte-x1o6ra');
+
+ component.testName = {};
+ assert.equal(div.className, '[object Object] svelte-x1o6ra');
+
+ component.testName = '';
+ assert.equal(div.className, ' svelte-x1o6ra');
+ }
+};
diff --git a/test/runtime/samples/attribute-null-func-classname-with-style/main.svelte b/test/runtime/samples/attribute-null-func-classname-with-style/main.svelte
new file mode 100644
index 0000000000..bcb858ab8d
--- /dev/null
+++ b/test/runtime/samples/attribute-null-func-classname-with-style/main.svelte
@@ -0,0 +1,15 @@
+
+
+
+
+
diff --git a/test/runtime/samples/attribute-null-func-classnames-no-style/_config.js b/test/runtime/samples/attribute-null-func-classnames-no-style/_config.js
new file mode 100644
index 0000000000..917cf565c0
--- /dev/null
+++ b/test/runtime/samples/attribute-null-func-classnames-no-style/_config.js
@@ -0,0 +1,45 @@
+export default {
+ props: {
+ testName1: "test1",
+ testName2: "test2",
+ },
+
+ html: `
`,
+
+ test({ assert, component, target }) {
+ const div = target.querySelector('div');
+ assert.equal(div.className, 'test1test2');
+
+ component.testName1 = null;
+ component.testName2 = null;
+ assert.equal(div.className, '0');
+
+ component.testName1 = null;
+ component.testName2 = "test";
+ assert.equal(div.className, 'nulltest');
+
+ component.testName1 = undefined;
+ component.testName2 = "test";
+ assert.equal(div.className, 'undefinedtest');
+
+ component.testName1 = undefined;
+ component.testName2 = undefined;
+ assert.equal(div.className, 'NaN');
+
+ component.testName1 = null;
+ component.testName2 = 1;
+ assert.equal(div.className, '1');
+
+ component.testName1 = undefined;
+ component.testName2 = 1;
+ assert.equal(div.className, 'NaN');
+
+ component.testName1 = null;
+ component.testName2 = 0;
+ assert.equal(div.className, '0');
+
+ component.testName1 = undefined;
+ component.testName2 = 0;
+ assert.equal(div.className, 'NaN');
+ }
+};
diff --git a/test/runtime/samples/attribute-null-func-classnames-no-style/main.svelte b/test/runtime/samples/attribute-null-func-classnames-no-style/main.svelte
new file mode 100644
index 0000000000..e1cdf51412
--- /dev/null
+++ b/test/runtime/samples/attribute-null-func-classnames-no-style/main.svelte
@@ -0,0 +1,11 @@
+
+
+
diff --git a/test/runtime/samples/attribute-null-func-classnames-with-style/_config.js b/test/runtime/samples/attribute-null-func-classnames-with-style/_config.js
new file mode 100644
index 0000000000..5762f628fb
--- /dev/null
+++ b/test/runtime/samples/attribute-null-func-classnames-with-style/_config.js
@@ -0,0 +1,45 @@
+export default {
+ props: {
+ testName1: "test1",
+ testName2: "test2",
+ },
+
+ html: `
`,
+
+ test({ assert, component, target }) {
+ const div = target.querySelector('div');
+ assert.equal(div.className, 'test1test2 svelte-x1o6ra');
+
+ component.testName1 = null;
+ component.testName2 = null;
+ assert.equal(div.className, '0 svelte-x1o6ra');
+
+ component.testName1 = null;
+ component.testName2 = "test";
+ assert.equal(div.className, 'nulltest svelte-x1o6ra');
+
+ component.testName1 = undefined;
+ component.testName2 = "test";
+ assert.equal(div.className, 'undefinedtest svelte-x1o6ra');
+
+ component.testName1 = undefined;
+ component.testName2 = undefined;
+ assert.equal(div.className, 'NaN svelte-x1o6ra');
+
+ component.testName1 = null;
+ component.testName2 = 1;
+ assert.equal(div.className, '1 svelte-x1o6ra');
+
+ component.testName1 = undefined;
+ component.testName2 = 1;
+ assert.equal(div.className, 'NaN svelte-x1o6ra');
+
+ component.testName1 = null;
+ component.testName2 = 0;
+ assert.equal(div.className, '0 svelte-x1o6ra');
+
+ component.testName1 = undefined;
+ component.testName2 = 0;
+ assert.equal(div.className, 'NaN svelte-x1o6ra');
+ }
+};
diff --git a/test/runtime/samples/attribute-null-func-classnames-with-style/main.svelte b/test/runtime/samples/attribute-null-func-classnames-with-style/main.svelte
new file mode 100644
index 0000000000..af43778365
--- /dev/null
+++ b/test/runtime/samples/attribute-null-func-classnames-with-style/main.svelte
@@ -0,0 +1,17 @@
+
+
+
+
+
diff --git a/test/runtime/samples/attribute-null/_config.js b/test/runtime/samples/attribute-null/_config.js
new file mode 100644
index 0000000000..ae2f0a8af6
--- /dev/null
+++ b/test/runtime/samples/attribute-null/_config.js
@@ -0,0 +1,3 @@
+export default {
+ html: `
`,
+};
diff --git a/test/runtime/samples/attribute-null/main.svelte b/test/runtime/samples/attribute-null/main.svelte
new file mode 100644
index 0000000000..9b7f48eda3
--- /dev/null
+++ b/test/runtime/samples/attribute-null/main.svelte
@@ -0,0 +1 @@
+
diff --git a/test/runtime/samples/attribute-undefined/_config.js b/test/runtime/samples/attribute-undefined/_config.js
new file mode 100644
index 0000000000..ae2f0a8af6
--- /dev/null
+++ b/test/runtime/samples/attribute-undefined/_config.js
@@ -0,0 +1,3 @@
+export default {
+ html: `
`,
+};
diff --git a/test/runtime/samples/attribute-undefined/main.svelte b/test/runtime/samples/attribute-undefined/main.svelte
new file mode 100644
index 0000000000..5108aa873f
--- /dev/null
+++ b/test/runtime/samples/attribute-undefined/main.svelte
@@ -0,0 +1 @@
+
diff --git a/test/runtime/samples/await-containing-if/_config.js b/test/runtime/samples/await-containing-if/_config.js
index 9e24e4f614..cd83585cc1 100644
--- a/test/runtime/samples/await-containing-if/_config.js
+++ b/test/runtime/samples/await-containing-if/_config.js
@@ -1,6 +1,6 @@
let fulfil;
-let thePromise = new Promise(f => {
+const thePromise = new Promise(f => {
fulfil = f;
});
diff --git a/test/runtime/samples/await-in-dynamic-component/Widget.svelte b/test/runtime/samples/await-in-dynamic-component/Widget.svelte
new file mode 100644
index 0000000000..78118e944d
--- /dev/null
+++ b/test/runtime/samples/await-in-dynamic-component/Widget.svelte
@@ -0,0 +1 @@
+{#await null}{/await}
\ No newline at end of file
diff --git a/test/runtime/samples/await-in-dynamic-component/_config.js b/test/runtime/samples/await-in-dynamic-component/_config.js
new file mode 100644
index 0000000000..797298c554
--- /dev/null
+++ b/test/runtime/samples/await-in-dynamic-component/_config.js
@@ -0,0 +1,5 @@
+export default {
+ test({ component }) {
+ component.flag = false;
+ }
+};
\ No newline at end of file
diff --git a/test/runtime/samples/await-in-dynamic-component/main.svelte b/test/runtime/samples/await-in-dynamic-component/main.svelte
new file mode 100644
index 0000000000..c395cb4499
--- /dev/null
+++ b/test/runtime/samples/await-in-dynamic-component/main.svelte
@@ -0,0 +1,6 @@
+
+
+
\ No newline at end of file
diff --git a/test/runtime/samples/await-in-each/_config.js b/test/runtime/samples/await-in-each/_config.js
index b1a232e4bd..6c7da69ee3 100644
--- a/test/runtime/samples/await-in-each/_config.js
+++ b/test/runtime/samples/await-in-each/_config.js
@@ -1,6 +1,6 @@
let fulfil;
-let thePromise = new Promise(f => {
+const thePromise = new Promise(f => {
fulfil = f;
});
diff --git a/test/runtime/samples/await-in-removed-if/_config.js b/test/runtime/samples/await-in-removed-if/_config.js
new file mode 100644
index 0000000000..2f96f08e24
--- /dev/null
+++ b/test/runtime/samples/await-in-removed-if/_config.js
@@ -0,0 +1,22 @@
+let fulfil;
+
+const promise = new Promise(f => {
+ fulfil = f;
+});
+
+export default {
+ props: {
+ promise
+ },
+
+ html: ``,
+
+ async test({ assert, component, target }) {
+ component.condition = false;
+
+ fulfil();
+ await new Promise(f => setTimeout(f, 0));
+
+ assert.htmlEqual(target.innerHTML, ``);
+ }
+};
\ No newline at end of file
diff --git a/test/runtime/samples/await-in-removed-if/main.svelte b/test/runtime/samples/await-in-removed-if/main.svelte
new file mode 100644
index 0000000000..e854b6feab
--- /dev/null
+++ b/test/runtime/samples/await-in-removed-if/main.svelte
@@ -0,0 +1,8 @@
+
+
+{#if condition}
+ {#await promise then _}hello{/await}
+{/if}
\ No newline at end of file
diff --git a/test/runtime/samples/await-then-catch-order/_config.js b/test/runtime/samples/await-then-catch-order/_config.js
index 5c4eb530e9..f972520904 100644
--- a/test/runtime/samples/await-then-catch-order/_config.js
+++ b/test/runtime/samples/await-then-catch-order/_config.js
@@ -1,6 +1,6 @@
let fulfil;
-let thePromise = new Promise(f => {
+const thePromise = new Promise(f => {
fulfil = f;
});
diff --git a/test/runtime/samples/await-with-components/_config.js b/test/runtime/samples/await-with-components/_config.js
index ffef7441ff..a0a558782a 100644
--- a/test/runtime/samples/await-with-components/_config.js
+++ b/test/runtime/samples/await-with-components/_config.js
@@ -1,6 +1,7 @@
export default {
async test({ assert, component, target }) {
- let resolve, reject;
+ let resolve;
+ let reject;
let promise = new Promise(ok => resolve = ok);
component.promise = promise;
diff --git a/test/runtime/samples/binding-circular/_config.js b/test/runtime/samples/binding-circular/_config.js
new file mode 100644
index 0000000000..505ed22beb
--- /dev/null
+++ b/test/runtime/samples/binding-circular/_config.js
@@ -0,0 +1,13 @@
+export default {
+ html: `
+
+ wheeee
+
+ `,
+
+ ssrHtml: `
+
+ wheeee
+
+ `
+};
diff --git a/test/runtime/samples/binding-circular/main.svelte b/test/runtime/samples/binding-circular/main.svelte
new file mode 100644
index 0000000000..372f5d3c99
--- /dev/null
+++ b/test/runtime/samples/binding-circular/main.svelte
@@ -0,0 +1,10 @@
+
+
+
+ wheeee
+
\ No newline at end of file
diff --git a/test/runtime/samples/binding-contenteditable-html-initial/_config.js b/test/runtime/samples/binding-contenteditable-html-initial/_config.js
new file mode 100644
index 0000000000..9eac2c9b17
--- /dev/null
+++ b/test/runtime/samples/binding-contenteditable-html-initial/_config.js
@@ -0,0 +1,40 @@
+export default {
+ html: `
+ world
+ hello world
+ `,
+
+ ssrHtml: `
+ world
+ hello undefined
+ `,
+
+ async test({ assert, component, target, window }) {
+ assert.equal(component.name, 'world ');
+
+ const el = target.querySelector('editor');
+
+ el.innerHTML = 'everybody ';
+
+ // No updates to data yet
+ assert.htmlEqual(target.innerHTML, `
+ everybody
+ hello world
+ `);
+
+ // Handle user input
+ const event = new window.Event('input');
+ await el.dispatchEvent(event);
+ assert.htmlEqual(target.innerHTML, `
+ everybody
+ hello everybody
+ `);
+
+ component.name = 'goodbye ';
+ assert.equal(el.innerHTML, 'goodbye ');
+ assert.htmlEqual(target.innerHTML, `
+ goodbye
+ hello goodbye
+ `);
+ },
+};
diff --git a/test/runtime/samples/binding-contenteditable-html-initial/main.svelte b/test/runtime/samples/binding-contenteditable-html-initial/main.svelte
new file mode 100644
index 0000000000..119b41b52d
--- /dev/null
+++ b/test/runtime/samples/binding-contenteditable-html-initial/main.svelte
@@ -0,0 +1,8 @@
+
+
+
+ world
+
+hello {@html name}
\ No newline at end of file
diff --git a/test/runtime/samples/binding-contenteditable-html/_config.js b/test/runtime/samples/binding-contenteditable-html/_config.js
new file mode 100644
index 0000000000..ceb6a75c70
--- /dev/null
+++ b/test/runtime/samples/binding-contenteditable-html/_config.js
@@ -0,0 +1,38 @@
+export default {
+ props: {
+ name: 'world ',
+ },
+
+ html: `
+ world
+ hello world
+ `,
+
+ async test({ assert, component, target, window }) {
+ const el = target.querySelector('editor');
+ assert.equal(el.innerHTML, 'world ');
+
+ el.innerHTML = 'everybody ';
+
+ // No updates to data yet
+ assert.htmlEqual(target.innerHTML, `
+ everybody
+ hello world
+ `);
+
+ // Handle user input
+ const event = new window.Event('input');
+ await el.dispatchEvent(event);
+ assert.htmlEqual(target.innerHTML, `
+ everybody
+ hello everybody
+ `);
+
+ component.name = 'goodbye ';
+ assert.equal(el.innerHTML, 'goodbye ');
+ assert.htmlEqual(target.innerHTML, `
+ goodbye
+ hello goodbye
+ `);
+ },
+};
diff --git a/test/runtime/samples/binding-contenteditable-html/main.svelte b/test/runtime/samples/binding-contenteditable-html/main.svelte
new file mode 100644
index 0000000000..f576cf1868
--- /dev/null
+++ b/test/runtime/samples/binding-contenteditable-html/main.svelte
@@ -0,0 +1,6 @@
+
+
+
+hello {@html name}
\ No newline at end of file
diff --git a/test/runtime/samples/binding-contenteditable-text-initial/_config.js b/test/runtime/samples/binding-contenteditable-text-initial/_config.js
new file mode 100644
index 0000000000..4899f30f12
--- /dev/null
+++ b/test/runtime/samples/binding-contenteditable-text-initial/_config.js
@@ -0,0 +1,34 @@
+export default {
+ html: `
+ world
+ hello world
+ `,
+
+ ssrHtml: `
+ world
+ hello undefined
+ `,
+
+ async test({ assert, component, target, window }) {
+ assert.equal(component.name, 'world');
+
+ const el = target.querySelector('editor');
+
+ const event = new window.Event('input');
+
+ el.textContent = 'everybody';
+ await el.dispatchEvent(event);
+
+ assert.htmlEqual(target.innerHTML, `
+ everybody
+ hello everybody
+ `);
+
+ component.name = 'goodbye';
+ assert.equal(el.textContent, 'goodbye');
+ assert.htmlEqual(target.innerHTML, `
+ goodbye
+ hello goodbye
+ `);
+ },
+};
diff --git a/test/runtime/samples/binding-contenteditable-text-initial/main.svelte b/test/runtime/samples/binding-contenteditable-text-initial/main.svelte
new file mode 100644
index 0000000000..b0938d4d0b
--- /dev/null
+++ b/test/runtime/samples/binding-contenteditable-text-initial/main.svelte
@@ -0,0 +1,8 @@
+
+
+
+ world
+
+hello {name}
\ No newline at end of file
diff --git a/test/runtime/samples/binding-contenteditable-text/_config.js b/test/runtime/samples/binding-contenteditable-text/_config.js
new file mode 100644
index 0000000000..9f8645724d
--- /dev/null
+++ b/test/runtime/samples/binding-contenteditable-text/_config.js
@@ -0,0 +1,32 @@
+export default {
+ props: {
+ name: 'world',
+ },
+
+ html: `
+ world
+ hello world
+ `,
+
+ async test({ assert, component, target, window }) {
+ const el = target.querySelector('editor');
+ assert.equal(el.textContent, 'world');
+
+ const event = new window.Event('input');
+
+ el.textContent = 'everybody';
+ await el.dispatchEvent(event);
+
+ assert.htmlEqual(target.innerHTML, `
+ everybody
+ hello everybody
+ `);
+
+ component.name = 'goodbye';
+ assert.equal(el.textContent, 'goodbye');
+ assert.htmlEqual(target.innerHTML, `
+ goodbye
+ hello goodbye
+ `);
+ },
+};
diff --git a/test/runtime/samples/binding-contenteditable-text/main.svelte b/test/runtime/samples/binding-contenteditable-text/main.svelte
new file mode 100644
index 0000000000..70f65e8824
--- /dev/null
+++ b/test/runtime/samples/binding-contenteditable-text/main.svelte
@@ -0,0 +1,6 @@
+
+
+
+hello {name}
\ No newline at end of file
diff --git a/test/runtime/samples/binding-details-open/_config.js b/test/runtime/samples/binding-details-open/_config.js
new file mode 100644
index 0000000000..cf2459c3f1
--- /dev/null
+++ b/test/runtime/samples/binding-details-open/_config.js
@@ -0,0 +1,25 @@
+export default {
+ html: `
+ toggle
+ `,
+
+ async test({ assert, component, target, window }) {
+ const details = target.querySelector('details');
+ const event = new window.Event('toggle');
+
+ details.open = true;
+ await details.dispatchEvent(event);
+ assert.equal(component.visible, true);
+ assert.htmlEqual(target.innerHTML, `
+ toggle
+ hello!
+ `);
+
+ details.open = false;
+ await details.dispatchEvent(event);
+ assert.equal(component.visible, false);
+ assert.htmlEqual(target.innerHTML, `
+ toggle
+ `);
+ }
+};
diff --git a/test/runtime/samples/binding-details-open/main.svelte b/test/runtime/samples/binding-details-open/main.svelte
new file mode 100644
index 0000000000..3a7a08e121
--- /dev/null
+++ b/test/runtime/samples/binding-details-open/main.svelte
@@ -0,0 +1,9 @@
+
+
+toggle
+
+{#if visible}
+ hello!
+{/if}
diff --git a/test/runtime/samples/binding-textarea/_config.js b/test/runtime/samples/binding-textarea/_config.js
index c09256e059..ac092096e6 100644
--- a/test/runtime/samples/binding-textarea/_config.js
+++ b/test/runtime/samples/binding-textarea/_config.js
@@ -9,7 +9,7 @@ export default {
`,
ssrHtml: `
-
+
some text
`,
diff --git a/test/runtime/samples/binding-this-component-computed-key/Foo.svelte b/test/runtime/samples/binding-this-component-computed-key/Foo.svelte
new file mode 100644
index 0000000000..066a48b65e
--- /dev/null
+++ b/test/runtime/samples/binding-this-component-computed-key/Foo.svelte
@@ -0,0 +1 @@
+foo
\ No newline at end of file
diff --git a/test/runtime/samples/binding-this-component-computed-key/_config.js b/test/runtime/samples/binding-this-component-computed-key/_config.js
new file mode 100644
index 0000000000..415d2e641c
--- /dev/null
+++ b/test/runtime/samples/binding-this-component-computed-key/_config.js
@@ -0,0 +1,8 @@
+export default {
+ skip_if_ssr: true,
+
+ html: `
+ foo
+ has foo: true
+ `
+};
diff --git a/test/runtime/samples/binding-this-component-computed-key/main.svelte b/test/runtime/samples/binding-this-component-computed-key/main.svelte
new file mode 100644
index 0000000000..af450ea1fe
--- /dev/null
+++ b/test/runtime/samples/binding-this-component-computed-key/main.svelte
@@ -0,0 +1,9 @@
+
+
+
+
+ has foo: {!!foo.computed}
+
diff --git a/test/runtime/samples/binding-this-component-each-block-value/Foo.svelte b/test/runtime/samples/binding-this-component-each-block-value/Foo.svelte
new file mode 100644
index 0000000000..066a48b65e
--- /dev/null
+++ b/test/runtime/samples/binding-this-component-each-block-value/Foo.svelte
@@ -0,0 +1 @@
+foo
\ No newline at end of file
diff --git a/test/runtime/samples/binding-this-component-each-block-value/_config.js b/test/runtime/samples/binding-this-component-each-block-value/_config.js
new file mode 100644
index 0000000000..2b5df8c595
--- /dev/null
+++ b/test/runtime/samples/binding-this-component-each-block-value/_config.js
@@ -0,0 +1,12 @@
+export default {
+ skip_if_ssr: true,
+
+ html: `
+ foo
+ first has foo: true
+ foo
+ second has foo: true
+ foo
+ third has foo: true
+ `
+};
diff --git a/test/runtime/samples/binding-this-component-each-block-value/main.svelte b/test/runtime/samples/binding-this-component-each-block-value/main.svelte
new file mode 100644
index 0000000000..5093eecd3f
--- /dev/null
+++ b/test/runtime/samples/binding-this-component-each-block-value/main.svelte
@@ -0,0 +1,11 @@
+
+
+{#each ["first", "second", "third"] as value}
+
+
+ {value} has foo: {!!foo[value]}
+
+{/each}
diff --git a/test/runtime/samples/binding-this-component-each-block/Foo.svelte b/test/runtime/samples/binding-this-component-each-block/Foo.svelte
new file mode 100644
index 0000000000..066a48b65e
--- /dev/null
+++ b/test/runtime/samples/binding-this-component-each-block/Foo.svelte
@@ -0,0 +1 @@
+foo
\ No newline at end of file
diff --git a/test/runtime/samples/binding-this-component-each-block/_config.js b/test/runtime/samples/binding-this-component-each-block/_config.js
new file mode 100644
index 0000000000..358c5b5afc
--- /dev/null
+++ b/test/runtime/samples/binding-this-component-each-block/_config.js
@@ -0,0 +1,12 @@
+export default {
+ skip_if_ssr: true,
+
+ html: `
+ foo
+ 0 has foo: true
+ foo
+ 1 has foo: true
+ foo
+ 2 has foo: true
+ `
+};
diff --git a/test/runtime/samples/binding-this-component-each-block/main.svelte b/test/runtime/samples/binding-this-component-each-block/main.svelte
new file mode 100644
index 0000000000..49d1d76172
--- /dev/null
+++ b/test/runtime/samples/binding-this-component-each-block/main.svelte
@@ -0,0 +1,11 @@
+
+
+{#each Array(3) as _, i}
+
+
+ {i} has foo: {!!foo[i]}
+
+{/each}
diff --git a/test/runtime/samples/binding-this-each-block-property-component/Foo.svelte b/test/runtime/samples/binding-this-each-block-property-component/Foo.svelte
new file mode 100644
index 0000000000..dc8b5f206c
--- /dev/null
+++ b/test/runtime/samples/binding-this-each-block-property-component/Foo.svelte
@@ -0,0 +1,7 @@
+
+
+
\ No newline at end of file
diff --git a/test/runtime/samples/binding-this-each-block-property-component/_config.js b/test/runtime/samples/binding-this-each-block-property-component/_config.js
new file mode 100644
index 0000000000..947ec17929
--- /dev/null
+++ b/test/runtime/samples/binding-this-each-block-property-component/_config.js
@@ -0,0 +1,12 @@
+export default {
+ html: ``,
+
+ async test({ assert, component, target }) {
+ component.visible = true;
+ assert.htmlEqual(target.innerHTML, `
+ a
+ `);
+
+ assert.ok(component.items[0].ref.isFoo());
+ }
+};
diff --git a/test/runtime/samples/binding-this-each-block-property-component/main.svelte b/test/runtime/samples/binding-this-each-block-property-component/main.svelte
new file mode 100644
index 0000000000..257aa18a91
--- /dev/null
+++ b/test/runtime/samples/binding-this-each-block-property-component/main.svelte
@@ -0,0 +1,13 @@
+
+
+{#if visible}
+ {#each items as item}
+ {item.value}
+ {/each}
+{/if}
diff --git a/test/runtime/samples/binding-this-each-block-property/_config.js b/test/runtime/samples/binding-this-each-block-property/_config.js
new file mode 100644
index 0000000000..15ad4be5db
--- /dev/null
+++ b/test/runtime/samples/binding-this-each-block-property/_config.js
@@ -0,0 +1,12 @@
+export default {
+ html: ``,
+
+ async test({ assert, component, target }) {
+ component.visible = true;
+ assert.htmlEqual(target.innerHTML, `
+ a
+ `);
+
+ assert.equal(component.items[0].ref, target.querySelector('div'));
+ }
+};
diff --git a/test/runtime/samples/binding-this-each-block-property/main.svelte b/test/runtime/samples/binding-this-each-block-property/main.svelte
new file mode 100644
index 0000000000..73ede7ab75
--- /dev/null
+++ b/test/runtime/samples/binding-this-each-block-property/main.svelte
@@ -0,0 +1,11 @@
+
+
+{#if visible}
+ {#each items as item}
+ {item.value}
+ {/each}
+{/if}
diff --git a/test/runtime/samples/binding-this-element-reactive-b/_config.js b/test/runtime/samples/binding-this-element-reactive-b/_config.js
new file mode 100644
index 0000000000..bcea590c17
--- /dev/null
+++ b/test/runtime/samples/binding-this-element-reactive-b/_config.js
@@ -0,0 +1,21 @@
+export default {
+ skip_if_ssr: true,
+
+ html: `
+ The text is hello
+ hello
+ `,
+
+ test({ assert, component, target }) {
+ component.visible = false;
+ assert.htmlEqual(target.innerHTML, `
+ The text is missing
+ `);
+
+ component.visible = true;
+ assert.htmlEqual(target.innerHTML, `
+ The text is hello
+ hello
+ `);
+ }
+};
diff --git a/test/runtime/samples/binding-this-element-reactive-b/main.svelte b/test/runtime/samples/binding-this-element-reactive-b/main.svelte
new file mode 100644
index 0000000000..b6acfd2236
--- /dev/null
+++ b/test/runtime/samples/binding-this-element-reactive-b/main.svelte
@@ -0,0 +1,9 @@
+
+
+The text is {h1 ? h1.textContent : 'missing'}
+{#if visible}
+ hello
+{/if}
diff --git a/test/runtime/samples/binding-using-props/TextInput.svelte b/test/runtime/samples/binding-using-props/TextInput.svelte
new file mode 100644
index 0000000000..da9e7e4a0e
--- /dev/null
+++ b/test/runtime/samples/binding-using-props/TextInput.svelte
@@ -0,0 +1,6 @@
+
+
+
\ No newline at end of file
diff --git a/test/runtime/samples/binding-using-props/_config.js b/test/runtime/samples/binding-using-props/_config.js
new file mode 100644
index 0000000000..dcb34c4357
--- /dev/null
+++ b/test/runtime/samples/binding-using-props/_config.js
@@ -0,0 +1,14 @@
+export default {
+ async test({ assert, target, window }) {
+ const input = target.querySelector('input');
+
+ const event = new window.Event('input');
+ input.value = 'changed';
+ await input.dispatchEvent(event);
+
+ assert.htmlEqual(target.innerHTML, `
+
+ changed
+ `);
+ }
+};
\ No newline at end of file
diff --git a/test/runtime/samples/binding-using-props/main.svelte b/test/runtime/samples/binding-using-props/main.svelte
new file mode 100644
index 0000000000..543bd28d49
--- /dev/null
+++ b/test/runtime/samples/binding-using-props/main.svelte
@@ -0,0 +1,7 @@
+
+
+
+{actualValue}
\ No newline at end of file
diff --git a/test/runtime/samples/class-with-dynamic-attribute-and-spread/_config.js b/test/runtime/samples/class-with-dynamic-attribute-and-spread/_config.js
new file mode 100644
index 0000000000..58ccc76497
--- /dev/null
+++ b/test/runtime/samples/class-with-dynamic-attribute-and-spread/_config.js
@@ -0,0 +1,21 @@
+export default {
+ props: {
+ myClass: 'one two',
+ attributes: {
+ role: 'button'
+ }
+ },
+
+ html: `
`,
+
+ test({ assert, component, target, window }) {
+ component.myClass = 'one';
+ component.attributes = {
+ 'aria-label': 'Test'
+ };
+
+ assert.htmlEqual(target.innerHTML, `
+
+ `);
+ }
+};
diff --git a/test/runtime/samples/class-with-dynamic-attribute-and-spread/main.svelte b/test/runtime/samples/class-with-dynamic-attribute-and-spread/main.svelte
new file mode 100644
index 0000000000..95825c777b
--- /dev/null
+++ b/test/runtime/samples/class-with-dynamic-attribute-and-spread/main.svelte
@@ -0,0 +1,6 @@
+
+
+
diff --git a/test/runtime/samples/class-with-spread/_config.js b/test/runtime/samples/class-with-spread/_config.js
new file mode 100644
index 0000000000..d5233a5849
--- /dev/null
+++ b/test/runtime/samples/class-with-spread/_config.js
@@ -0,0 +1,21 @@
+export default {
+ props: {
+ myClass: 'one two',
+ attributes: {
+ role: 'button'
+ }
+ },
+
+ html: `
`,
+
+ test({ assert, component, target, window }) {
+ component.myClass = 'one';
+ component.attributes = {
+ 'aria-label': 'Test'
+ };
+
+ assert.htmlEqual(target.innerHTML, `
+
+ `);
+ }
+};
diff --git a/test/runtime/samples/class-with-spread/main.svelte b/test/runtime/samples/class-with-spread/main.svelte
new file mode 100644
index 0000000000..54d8088581
--- /dev/null
+++ b/test/runtime/samples/class-with-spread/main.svelte
@@ -0,0 +1,6 @@
+
+
+
diff --git a/test/runtime/samples/component-event-handler-modifier-once/Button.svelte b/test/runtime/samples/component-event-handler-modifier-once/Button.svelte
new file mode 100644
index 0000000000..9b5b7a5f67
--- /dev/null
+++ b/test/runtime/samples/component-event-handler-modifier-once/Button.svelte
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/test/runtime/samples/component-event-handler-modifier-once/_config.js b/test/runtime/samples/component-event-handler-modifier-once/_config.js
new file mode 100644
index 0000000000..41daf374c8
--- /dev/null
+++ b/test/runtime/samples/component-event-handler-modifier-once/_config.js
@@ -0,0 +1,16 @@
+export default {
+ html: `
+ 0
+ `,
+
+ async test({ assert, component, target, window }) {
+ const button = target.querySelector('button');
+ const event = new window.MouseEvent('click');
+
+ await button.dispatchEvent(event);
+ assert.equal(component.count, 1);
+
+ await button.dispatchEvent(event);
+ assert.equal(component.count, 1);
+ }
+};
diff --git a/test/runtime/samples/component-event-handler-modifier-once/main.svelte b/test/runtime/samples/component-event-handler-modifier-once/main.svelte
new file mode 100644
index 0000000000..b9bca3b5eb
--- /dev/null
+++ b/test/runtime/samples/component-event-handler-modifier-once/main.svelte
@@ -0,0 +1,6 @@
+
+
+ count += 1}">{count}
\ No newline at end of file
diff --git a/test/runtime/samples/component-slot-binding-dimensions-destroys-cleanly/Nested.svelte b/test/runtime/samples/component-slot-binding-dimensions-destroys-cleanly/Nested.svelte
new file mode 100644
index 0000000000..68c17cbbe7
--- /dev/null
+++ b/test/runtime/samples/component-slot-binding-dimensions-destroys-cleanly/Nested.svelte
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/test/runtime/samples/component-slot-binding-dimensions-destroys-cleanly/_config.js b/test/runtime/samples/component-slot-binding-dimensions-destroys-cleanly/_config.js
new file mode 100644
index 0000000000..02a61bed5e
--- /dev/null
+++ b/test/runtime/samples/component-slot-binding-dimensions-destroys-cleanly/_config.js
@@ -0,0 +1,2 @@
+export default {
+};
diff --git a/test/runtime/samples/component-slot-binding-dimensions-destroys-cleanly/main.svelte b/test/runtime/samples/component-slot-binding-dimensions-destroys-cleanly/main.svelte
new file mode 100644
index 0000000000..760c9e0356
--- /dev/null
+++ b/test/runtime/samples/component-slot-binding-dimensions-destroys-cleanly/main.svelte
@@ -0,0 +1,7 @@
+
+
+
+ Hello
+
diff --git a/test/runtime/samples/component-slot-let-e/Nested.svelte b/test/runtime/samples/component-slot-let-e/Nested.svelte
new file mode 100644
index 0000000000..6e7b1b1a54
--- /dev/null
+++ b/test/runtime/samples/component-slot-let-e/Nested.svelte
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/test/runtime/samples/component-slot-let-e/_config.js b/test/runtime/samples/component-slot-let-e/_config.js
new file mode 100644
index 0000000000..1f7633da0c
--- /dev/null
+++ b/test/runtime/samples/component-slot-let-e/_config.js
@@ -0,0 +1,20 @@
+export default {
+ html: `
+
+ `,
+
+ async test({ assert, target, window }) {
+ const div = target.querySelector('div');
+ const click = new window.MouseEvent('click');
+
+ await div.dispatchEvent(click);
+
+ assert.htmlEqual(target.innerHTML, `
+
+ `);
+ }
+};
diff --git a/test/runtime/samples/component-slot-let-e/main.svelte b/test/runtime/samples/component-slot-let-e/main.svelte
new file mode 100644
index 0000000000..4662deef57
--- /dev/null
+++ b/test/runtime/samples/component-slot-let-e/main.svelte
@@ -0,0 +1,7 @@
+
+
+
+ {someText}
+
diff --git a/test/runtime/samples/component-slot-let-f/A.svelte b/test/runtime/samples/component-slot-let-f/A.svelte
new file mode 100644
index 0000000000..79428b13ec
--- /dev/null
+++ b/test/runtime/samples/component-slot-let-f/A.svelte
@@ -0,0 +1,9 @@
+
+
+
+ {reflected}
+
+
\ No newline at end of file
diff --git a/test/runtime/samples/component-slot-let-f/B.svelte b/test/runtime/samples/component-slot-let-f/B.svelte
new file mode 100644
index 0000000000..7a8dc596ba
--- /dev/null
+++ b/test/runtime/samples/component-slot-let-f/B.svelte
@@ -0,0 +1,5 @@
+
+
+
\ No newline at end of file
diff --git a/test/runtime/samples/component-slot-let-f/_config.js b/test/runtime/samples/component-slot-let-f/_config.js
new file mode 100644
index 0000000000..74de38be02
--- /dev/null
+++ b/test/runtime/samples/component-slot-let-f/_config.js
@@ -0,0 +1,15 @@
+export default {
+ html: `
+ 1
+ 1
+ `,
+
+ async test({ assert, target, component }) {
+ component.x = 2;
+
+ assert.htmlEqual(target.innerHTML, `
+ 2
+ 2
+ `);
+ }
+};
diff --git a/test/runtime/samples/component-slot-let-f/main.svelte b/test/runtime/samples/component-slot-let-f/main.svelte
new file mode 100644
index 0000000000..71362d9b4e
--- /dev/null
+++ b/test/runtime/samples/component-slot-let-f/main.svelte
@@ -0,0 +1,8 @@
+
+
+
+ {reflected}
+
\ No newline at end of file
diff --git a/test/runtime/samples/component-slot-let-in-binding/Nested.svelte b/test/runtime/samples/component-slot-let-in-binding/Nested.svelte
new file mode 100644
index 0000000000..96f7adcfc6
--- /dev/null
+++ b/test/runtime/samples/component-slot-let-in-binding/Nested.svelte
@@ -0,0 +1,9 @@
+
+
+
+ {#each items as item, index}
+
+ {/each}
+
\ No newline at end of file
diff --git a/test/runtime/samples/component-slot-let-in-binding/_config.js b/test/runtime/samples/component-slot-let-in-binding/_config.js
new file mode 100644
index 0000000000..41e77a9574
--- /dev/null
+++ b/test/runtime/samples/component-slot-let-in-binding/_config.js
@@ -0,0 +1,26 @@
+export default {
+ html: `
+
+ 1:
+ 2:
+ 3:
+
+ `,
+
+ ssrHtml: `
+
+ 1:
+ 2:
+ 3:
+
+ `,
+
+ async test({ assert, component, target, window }) {
+ const inputs = target.querySelectorAll('input');
+
+ inputs[2].value = 'd';
+ await inputs[2].dispatchEvent(new window.Event('input'));
+
+ assert.deepEqual(component.letters, ['a', 'b', 'd']);
+ }
+};
diff --git a/test/runtime/samples/component-slot-let-in-binding/main.svelte b/test/runtime/samples/component-slot-let-in-binding/main.svelte
new file mode 100644
index 0000000000..89531bf236
--- /dev/null
+++ b/test/runtime/samples/component-slot-let-in-binding/main.svelte
@@ -0,0 +1,11 @@
+
+
+
+
+ {index + 1}:
+
+
\ No newline at end of file
diff --git a/test/runtime/samples/component-slot-named-inherits-default-lets/_config.js b/test/runtime/samples/component-slot-named-inherits-default-lets/_config.js
index 212c57308a..a07a1482bc 100644
--- a/test/runtime/samples/component-slot-named-inherits-default-lets/_config.js
+++ b/test/runtime/samples/component-slot-named-inherits-default-lets/_config.js
@@ -22,4 +22,4 @@ export default {
`);
}
-}
\ No newline at end of file
+};
\ No newline at end of file
diff --git a/test/runtime/samples/deconflict-globals/_config.js b/test/runtime/samples/deconflict-globals/_config.js
new file mode 100644
index 0000000000..c29f022a37
--- /dev/null
+++ b/test/runtime/samples/deconflict-globals/_config.js
@@ -0,0 +1,14 @@
+export default {
+ preserveIdentifiers: true,
+ compileOptions: {
+ name: 'window'
+ },
+
+ html: `
+ I hereby declare Svelte the bestest framework.
+ nintendo sixty four
+ Woops.
+ 42
+ false
+ `
+};
diff --git a/test/runtime/samples/deconflict-globals/main.svelte b/test/runtime/samples/deconflict-globals/main.svelte
new file mode 100644
index 0000000000..d1928ea533
--- /dev/null
+++ b/test/runtime/samples/deconflict-globals/main.svelte
@@ -0,0 +1,20 @@
+
+
+
+ Cute test
+
+
+
+
+
+{#each everyone as someone (someone)}
+ {someone}
+{/each}
diff --git a/test/runtime/samples/destructuring-assignment-array/_config.js b/test/runtime/samples/destructuring-assignment-array/_config.js
new file mode 100644
index 0000000000..ede4552803
--- /dev/null
+++ b/test/runtime/samples/destructuring-assignment-array/_config.js
@@ -0,0 +1,23 @@
+export default {
+ html: `
+
+ Gruyere
+ Compté
+ Beaufort
+ Abondance
+
+ `,
+
+ async test({ assert, component, target }) {
+ await component.swap(0, 1);
+
+ assert.htmlEqual(target.innerHTML, `
+
+ Compté
+ Gruyere
+ Beaufort
+ Abondance
+
+ `);
+ }
+};
\ No newline at end of file
diff --git a/test/runtime/samples/destructuring-assignment-array/main.svelte b/test/runtime/samples/destructuring-assignment-array/main.svelte
new file mode 100644
index 0000000000..aebbfe204c
--- /dev/null
+++ b/test/runtime/samples/destructuring-assignment-array/main.svelte
@@ -0,0 +1,18 @@
+
+
+
+ {#each cheese as cheese}
+ {cheese}
+ {/each}
+
\ No newline at end of file
diff --git a/test/runtime/samples/dev-warning-unknown-props-with-$$props/Foo.svelte b/test/runtime/samples/dev-warning-unknown-props-with-$$props/Foo.svelte
new file mode 100644
index 0000000000..9e5c62339d
--- /dev/null
+++ b/test/runtime/samples/dev-warning-unknown-props-with-$$props/Foo.svelte
@@ -0,0 +1,7 @@
+
+
+{foo}
+{JSON.stringify($$props)}
diff --git a/test/runtime/samples/dev-warning-unknown-props-with-$$props/_config.js b/test/runtime/samples/dev-warning-unknown-props-with-$$props/_config.js
new file mode 100644
index 0000000000..62ad08624d
--- /dev/null
+++ b/test/runtime/samples/dev-warning-unknown-props-with-$$props/_config.js
@@ -0,0 +1,7 @@
+export default {
+ compileOptions: {
+ dev: true
+ },
+
+ warnings: []
+};
diff --git a/test/runtime/samples/dev-warning-unknown-props-with-$$props/main.svelte b/test/runtime/samples/dev-warning-unknown-props-with-$$props/main.svelte
new file mode 100644
index 0000000000..1566cf3e41
--- /dev/null
+++ b/test/runtime/samples/dev-warning-unknown-props-with-$$props/main.svelte
@@ -0,0 +1,5 @@
+
+
+
diff --git a/test/runtime/samples/dev-warning-unknown-props-with-$$scope/Foo.svelte b/test/runtime/samples/dev-warning-unknown-props-with-$$scope/Foo.svelte
new file mode 100644
index 0000000000..b9f7feec24
--- /dev/null
+++ b/test/runtime/samples/dev-warning-unknown-props-with-$$scope/Foo.svelte
@@ -0,0 +1,6 @@
+
+
+{answer}
+
diff --git a/test/runtime/samples/dev-warning-unknown-props-with-$$scope/_config.js b/test/runtime/samples/dev-warning-unknown-props-with-$$scope/_config.js
new file mode 100644
index 0000000000..62ad08624d
--- /dev/null
+++ b/test/runtime/samples/dev-warning-unknown-props-with-$$scope/_config.js
@@ -0,0 +1,7 @@
+export default {
+ compileOptions: {
+ dev: true
+ },
+
+ warnings: []
+};
diff --git a/test/runtime/samples/dev-warning-unknown-props-with-$$scope/main.svelte b/test/runtime/samples/dev-warning-unknown-props-with-$$scope/main.svelte
new file mode 100644
index 0000000000..a1656e86e0
--- /dev/null
+++ b/test/runtime/samples/dev-warning-unknown-props-with-$$scope/main.svelte
@@ -0,0 +1,7 @@
+
+
+
+ bar
+
diff --git a/test/runtime/samples/dev-warning-unknown-props/Foo.svelte b/test/runtime/samples/dev-warning-unknown-props/Foo.svelte
new file mode 100644
index 0000000000..cebe5fd571
--- /dev/null
+++ b/test/runtime/samples/dev-warning-unknown-props/Foo.svelte
@@ -0,0 +1,5 @@
+
+
+{foo}
diff --git a/test/runtime/samples/dev-warning-unknown-props/_config.js b/test/runtime/samples/dev-warning-unknown-props/_config.js
new file mode 100644
index 0000000000..9bff4a2a74
--- /dev/null
+++ b/test/runtime/samples/dev-warning-unknown-props/_config.js
@@ -0,0 +1,9 @@
+export default {
+ compileOptions: {
+ dev: true
+ },
+
+ warnings: [
+ ` was created with unknown prop 'fo'`
+ ]
+};
diff --git a/test/runtime/samples/dev-warning-unknown-props/main.svelte b/test/runtime/samples/dev-warning-unknown-props/main.svelte
new file mode 100644
index 0000000000..1566cf3e41
--- /dev/null
+++ b/test/runtime/samples/dev-warning-unknown-props/main.svelte
@@ -0,0 +1,5 @@
+
+
+
diff --git a/test/runtime/samples/dynamic-component-nulled-out-intro/_config.js b/test/runtime/samples/dynamic-component-nulled-out-intro/_config.js
new file mode 100644
index 0000000000..9759ada538
--- /dev/null
+++ b/test/runtime/samples/dynamic-component-nulled-out-intro/_config.js
@@ -0,0 +1,5 @@
+export default {
+ test({ component }) {
+ component.visible = true;
+ }
+};
\ No newline at end of file
diff --git a/test/runtime/samples/dynamic-component-nulled-out-intro/main.svelte b/test/runtime/samples/dynamic-component-nulled-out-intro/main.svelte
new file mode 100644
index 0000000000..eac72cf694
--- /dev/null
+++ b/test/runtime/samples/dynamic-component-nulled-out-intro/main.svelte
@@ -0,0 +1,7 @@
+
+
+{#if visible}
+
+{/if}
\ No newline at end of file
diff --git a/test/runtime/samples/each-block-component-no-props/Child.svelte b/test/runtime/samples/each-block-component-no-props/Child.svelte
new file mode 100644
index 0000000000..86ef4f3319
--- /dev/null
+++ b/test/runtime/samples/each-block-component-no-props/Child.svelte
@@ -0,0 +1 @@
+hello
\ No newline at end of file
diff --git a/test/runtime/samples/each-block-component-no-props/_config.js b/test/runtime/samples/each-block-component-no-props/_config.js
new file mode 100644
index 0000000000..e8344496ca
--- /dev/null
+++ b/test/runtime/samples/each-block-component-no-props/_config.js
@@ -0,0 +1,16 @@
+export default {
+ html: `
+ hello
+ `,
+
+ async test({ assert, component, target }) {
+ await component.remove();
+ assert.htmlEqual(target.innerHTML, ``);
+
+ await component.add();
+ assert.htmlEqual(target.innerHTML, `hello
`);
+
+ await component.remove();
+ assert.htmlEqual(target.innerHTML, ``);
+ }
+};
diff --git a/test/runtime/samples/each-block-component-no-props/main.svelte b/test/runtime/samples/each-block-component-no-props/main.svelte
new file mode 100644
index 0000000000..01299fe314
--- /dev/null
+++ b/test/runtime/samples/each-block-component-no-props/main.svelte
@@ -0,0 +1,17 @@
+
+
+{#each items as item}
+
+{/each}
diff --git a/test/runtime/samples/each-block-else-in-if/_config.js b/test/runtime/samples/each-block-else-in-if/_config.js
new file mode 100644
index 0000000000..c800ee8a30
--- /dev/null
+++ b/test/runtime/samples/each-block-else-in-if/_config.js
@@ -0,0 +1,17 @@
+export default {
+ html: `
+ nothing
+ after
+ `,
+
+ test({ assert, component, target }) {
+ component.visible = false;
+ assert.htmlEqual(target.innerHTML, ``);
+
+ component.visible = true;
+ assert.htmlEqual(target.innerHTML, `
+ nothing
+ after
+ `);
+ }
+};
diff --git a/test/runtime/samples/each-block-else-in-if/main.svelte b/test/runtime/samples/each-block-else-in-if/main.svelte
new file mode 100644
index 0000000000..d89f645d7f
--- /dev/null
+++ b/test/runtime/samples/each-block-else-in-if/main.svelte
@@ -0,0 +1,14 @@
+
+
+{#if visible}
+ {#each empty as item}
+ {item}
+ {:else}
+ nothing
+ {/each}
+
+ after
+{/if}
\ No newline at end of file
diff --git a/test/runtime/samples/each-block-keyed-html-b/_config.js b/test/runtime/samples/each-block-keyed-html-b/_config.js
new file mode 100644
index 0000000000..6343a31769
--- /dev/null
+++ b/test/runtime/samples/each-block-keyed-html-b/_config.js
@@ -0,0 +1,14 @@
+export default {
+ html: `
+ hello John
+ hello Jill
+ `,
+
+ test({ assert, component, target }) {
+ component.names = component.names.reverse();
+ assert.htmlEqual(target.innerHTML, `
+ hello Jill
+ hello John
+ `);
+ }
+};
diff --git a/test/runtime/samples/each-block-keyed-html-b/main.svelte b/test/runtime/samples/each-block-keyed-html-b/main.svelte
new file mode 100644
index 0000000000..02955577fc
--- /dev/null
+++ b/test/runtime/samples/each-block-keyed-html-b/main.svelte
@@ -0,0 +1,11 @@
+
+
+{#each names as name (name)}
+
+ hello
+ {@html name}
+
+{/each}
+
diff --git a/test/runtime/samples/each-block-keyed-html/_config.js b/test/runtime/samples/each-block-keyed-html/_config.js
new file mode 100644
index 0000000000..536e54543e
--- /dev/null
+++ b/test/runtime/samples/each-block-keyed-html/_config.js
@@ -0,0 +1,10 @@
+export default {
+ html: `
+ JohnJill
+ `,
+
+ test({ assert, component, target }) {
+ component.names = component.names.reverse();
+ assert.htmlEqual(target.innerHTML, `JillJohn`);
+ }
+};
diff --git a/test/runtime/samples/each-block-keyed-html/main.svelte b/test/runtime/samples/each-block-keyed-html/main.svelte
new file mode 100644
index 0000000000..97c5f8c898
--- /dev/null
+++ b/test/runtime/samples/each-block-keyed-html/main.svelte
@@ -0,0 +1,8 @@
+
+
+{#each names as name (name)}
+ {@html name}
+{/each}
+
diff --git a/test/runtime/samples/each-block-keyed-nested/Child.svelte b/test/runtime/samples/each-block-keyed-nested/Child.svelte
new file mode 100644
index 0000000000..e7ed726850
--- /dev/null
+++ b/test/runtime/samples/each-block-keyed-nested/Child.svelte
@@ -0,0 +1,5 @@
+
+
+{id}
\ No newline at end of file
diff --git a/test/runtime/samples/each-block-keyed-nested/_config.js b/test/runtime/samples/each-block-keyed-nested/_config.js
new file mode 100644
index 0000000000..3440874a8c
--- /dev/null
+++ b/test/runtime/samples/each-block-keyed-nested/_config.js
@@ -0,0 +1,16 @@
+export default {
+ html: `
+ 1
+ `,
+
+ test({ assert, component, target }) {
+ component.desks = [
+ {
+ id: 1,
+ teams: []
+ }
+ ];
+
+ assert.htmlEqual(target.innerHTML, '');
+ }
+};
diff --git a/test/runtime/samples/each-block-keyed-nested/main.svelte b/test/runtime/samples/each-block-keyed-nested/main.svelte
new file mode 100644
index 0000000000..86f665a5e7
--- /dev/null
+++ b/test/runtime/samples/each-block-keyed-nested/main.svelte
@@ -0,0 +1,16 @@
+
+
+{#each desks as desk (desk.id)}
+ {#each desk.teams as team (team.id)}
+
+ {/each}
+{/each}
\ No newline at end of file
diff --git a/test/runtime/samples/each-block-keyed-recursive/_config.js b/test/runtime/samples/each-block-keyed-recursive/_config.js
new file mode 100644
index 0000000000..7ad044228b
--- /dev/null
+++ b/test/runtime/samples/each-block-keyed-recursive/_config.js
@@ -0,0 +1,25 @@
+export default {
+ props: {
+ tree: [
+ {id: 1, sub: null},
+ {id: 2, sub: [{id: 11}]}
+ ]
+ },
+
+ html: `
+ 1
+
+ `,
+
+ test({ assert, component, target }) {
+ component.tree = [
+ {id: 1, sub: null},
+ {id: 2, sub: null}
+ ];
+
+ assert.htmlEqual(target.innerHTML, `
+ 1
+ 2
+ `);
+ }
+};
diff --git a/test/runtime/samples/each-block-keyed-recursive/main.svelte b/test/runtime/samples/each-block-keyed-recursive/main.svelte
new file mode 100644
index 0000000000..5e90ec501c
--- /dev/null
+++ b/test/runtime/samples/each-block-keyed-recursive/main.svelte
@@ -0,0 +1,12 @@
+
+
+{#each tree as item, i (item.id)}
+
+ {item.id}
+ {#if item.sub}
+
+ {/if}
+
+{/each}
diff --git a/test/runtime/samples/each-block-keyed-shift/Nested.svelte b/test/runtime/samples/each-block-keyed-shift/Nested.svelte
new file mode 100644
index 0000000000..82df711742
--- /dev/null
+++ b/test/runtime/samples/each-block-keyed-shift/Nested.svelte
@@ -0,0 +1,5 @@
+
+
+{title}
\ No newline at end of file
diff --git a/test/runtime/samples/each-block-keyed-shift/_config.js b/test/runtime/samples/each-block-keyed-shift/_config.js
new file mode 100644
index 0000000000..44ca8447f0
--- /dev/null
+++ b/test/runtime/samples/each-block-keyed-shift/_config.js
@@ -0,0 +1,27 @@
+export default {
+ props: {
+ titles: [{ name: 'a', }, { name: 'b' }, { name: 'c' }]
+ },
+
+ html: `
+ a
+ b
+ c
+ `,
+
+ test({ assert, component, target }) {
+ component.titles = [{ name: 'b' }, { name: 'c' }];
+
+ assert.htmlEqual(target.innerHTML, `
+ b
+ c
+ `);
+
+ component.titles = [{ name: 'c' }];
+
+ assert.htmlEqual(target.innerHTML, `
+ c
+ `);
+
+ }
+};
diff --git a/test/runtime/samples/each-block-keyed-shift/main.svelte b/test/runtime/samples/each-block-keyed-shift/main.svelte
new file mode 100644
index 0000000000..b8954e17fd
--- /dev/null
+++ b/test/runtime/samples/each-block-keyed-shift/main.svelte
@@ -0,0 +1,9 @@
+
+
+{#each titles as title (title.name)}
+
+{/each}
\ No newline at end of file
diff --git a/test/runtime/samples/element-invalid-name/_config.js b/test/runtime/samples/element-invalid-name/_config.js
index af6e4933ce..d70c920a19 100644
--- a/test/runtime/samples/element-invalid-name/_config.js
+++ b/test/runtime/samples/element-invalid-name/_config.js
@@ -2,4 +2,4 @@ export default {
html: `
Hello
`
-}
+};
diff --git a/test/runtime/samples/event-handler-async/_config.js b/test/runtime/samples/event-handler-async/_config.js
new file mode 100644
index 0000000000..fab4d998b6
--- /dev/null
+++ b/test/runtime/samples/event-handler-async/_config.js
@@ -0,0 +1,5 @@
+export default {
+ html: `
+ nothing
+ `,
+};
diff --git a/test/runtime/samples/event-handler-async/main.svelte b/test/runtime/samples/event-handler-async/main.svelte
new file mode 100644
index 0000000000..b22a6af92e
--- /dev/null
+++ b/test/runtime/samples/event-handler-async/main.svelte
@@ -0,0 +1 @@
+ { await null; }}>nothing
diff --git a/test/runtime/samples/event-handler-modifier-self/_config.js b/test/runtime/samples/event-handler-modifier-self/_config.js
new file mode 100644
index 0000000000..6d7d29e482
--- /dev/null
+++ b/test/runtime/samples/event-handler-modifier-self/_config.js
@@ -0,0 +1,16 @@
+export default {
+ html: `
+
+ click me
+
+ `,
+
+ async test({ assert, component, target, window }) {
+ const button = target.querySelector('button');
+ const event = new window.MouseEvent('click');
+
+ await button.dispatchEvent(event);
+
+ assert.ok(!component.inner_clicked);
+ },
+};
diff --git a/test/runtime/samples/event-handler-modifier-self/main.svelte b/test/runtime/samples/event-handler-modifier-self/main.svelte
new file mode 100644
index 0000000000..1becf44a9e
--- /dev/null
+++ b/test/runtime/samples/event-handler-modifier-self/main.svelte
@@ -0,0 +1,11 @@
+
+
+
+ click me
+
diff --git a/test/runtime/samples/event-handler-shorthand-sanitized/_config.js b/test/runtime/samples/event-handler-shorthand-sanitized/_config.js
new file mode 100644
index 0000000000..030e27ad1a
--- /dev/null
+++ b/test/runtime/samples/event-handler-shorthand-sanitized/_config.js
@@ -0,0 +1,18 @@
+export default {
+ html: `
+ click me now
+ `,
+
+ test({ assert, component, target, window }) {
+ const button = target.querySelector('button');
+ const event = new window.Event('click-now');
+
+ let clicked;
+ component.$on('click-now', () => {
+ clicked = true;
+ });
+
+ button.dispatchEvent(event);
+ assert.ok(clicked);
+ }
+};
diff --git a/test/runtime/samples/event-handler-shorthand-sanitized/main.svelte b/test/runtime/samples/event-handler-shorthand-sanitized/main.svelte
new file mode 100644
index 0000000000..05de1316ef
--- /dev/null
+++ b/test/runtime/samples/event-handler-shorthand-sanitized/main.svelte
@@ -0,0 +1 @@
+click me now
\ No newline at end of file
diff --git a/test/runtime/samples/export-function-hoisting/_config.js b/test/runtime/samples/export-function-hoisting/_config.js
index c56851d065..f01c8b4841 100644
--- a/test/runtime/samples/export-function-hoisting/_config.js
+++ b/test/runtime/samples/export-function-hoisting/_config.js
@@ -1,3 +1,3 @@
export default {
- html: 'Compile plz'
-}
+ html: 'Compile plz'
+};
diff --git a/test/runtime/samples/fragment-trailing-whitespace/_config.js b/test/runtime/samples/fragment-trailing-whitespace/_config.js
new file mode 100644
index 0000000000..2251d6dae8
--- /dev/null
+++ b/test/runtime/samples/fragment-trailing-whitespace/_config.js
@@ -0,0 +1,16 @@
+const message = "the quick brown fox jumps over the lazy dog";
+const expected = [...message].map(c => `${c + " "} `).join("");
+
+export default {
+ props: {
+ message
+ },
+
+ async test({ assert, target }) {
+ const firstSpanList = target.children[0];
+ assert.equal(firstSpanList.innerHTML, expected);
+
+ const secondSpanList = target.children[1];
+ assert.equal(secondSpanList.innerHTML, expected);
+ }
+};
diff --git a/test/runtime/samples/fragment-trailing-whitespace/main.svelte b/test/runtime/samples/fragment-trailing-whitespace/main.svelte
new file mode 100644
index 0000000000..f36f2694a6
--- /dev/null
+++ b/test/runtime/samples/fragment-trailing-whitespace/main.svelte
@@ -0,0 +1,11 @@
+
+
+
+ {#each message as char}
+ {char}
+ {/each}
+
+
+{#each message as char}{char} {/each}
\ No newline at end of file
diff --git a/test/runtime/samples/function-expression-inline/_config.js b/test/runtime/samples/function-expression-inline/_config.js
new file mode 100644
index 0000000000..6916be45b1
--- /dev/null
+++ b/test/runtime/samples/function-expression-inline/_config.js
@@ -0,0 +1,22 @@
+export default {
+ html: `
+ click me
+ 1
+ 2
+ 3
+ `,
+
+ async test({ assert, target, window }) {
+ const button = target.querySelector('button');
+ const click = new window.MouseEvent('click');
+
+ await button.dispatchEvent(click);
+
+ assert.htmlEqual(target.innerHTML, `
+ click me
+ 2
+ 4
+ 6
+ `);
+ }
+};
\ No newline at end of file
diff --git a/test/runtime/samples/function-expression-inline/main.svelte b/test/runtime/samples/function-expression-inline/main.svelte
new file mode 100644
index 0000000000..f3f98459a7
--- /dev/null
+++ b/test/runtime/samples/function-expression-inline/main.svelte
@@ -0,0 +1,13 @@
+
+
+ {
+ list = list.map(item => {
+ return item * 2;
+ });
+}}>click me
+
+{#each list as number}
+ {number}
+{/each}
\ No newline at end of file
diff --git a/test/runtime/samples/function-hoisting/_config.js b/test/runtime/samples/function-hoisting/_config.js
index 5a22ffaf0b..91492d8c38 100644
--- a/test/runtime/samples/function-hoisting/_config.js
+++ b/test/runtime/samples/function-hoisting/_config.js
@@ -1,7 +1,7 @@
export default {
- props: {
- greeting: 'Good day'
- },
+ props: {
+ greeting: 'Good day'
+ },
- html: 'Good day, world '
-}
+ html: 'Good day, world '
+};
diff --git a/test/runtime/samples/get-after-destroy/_config.js b/test/runtime/samples/get-after-destroy/_config.js
index bf4d8e90ba..5d10bbe72a 100644
--- a/test/runtime/samples/get-after-destroy/_config.js
+++ b/test/runtime/samples/get-after-destroy/_config.js
@@ -10,4 +10,4 @@ export default {
const { foo } = component;
assert.equal(foo, undefined);
}
-}
\ No newline at end of file
+};
diff --git a/test/runtime/samples/head-detached-in-dynamic-component/A.svelte b/test/runtime/samples/head-detached-in-dynamic-component/A.svelte
new file mode 100644
index 0000000000..f05488e3e4
--- /dev/null
+++ b/test/runtime/samples/head-detached-in-dynamic-component/A.svelte
@@ -0,0 +1,5 @@
+
+
+
+
+A
\ No newline at end of file
diff --git a/test/runtime/samples/head-detached-in-dynamic-component/B.svelte b/test/runtime/samples/head-detached-in-dynamic-component/B.svelte
new file mode 100644
index 0000000000..943b307cc3
--- /dev/null
+++ b/test/runtime/samples/head-detached-in-dynamic-component/B.svelte
@@ -0,0 +1,5 @@
+
+
+
+
+B
\ No newline at end of file
diff --git a/test/runtime/samples/head-detached-in-dynamic-component/_config.js b/test/runtime/samples/head-detached-in-dynamic-component/_config.js
new file mode 100644
index 0000000000..e18589e10e
--- /dev/null
+++ b/test/runtime/samples/head-detached-in-dynamic-component/_config.js
@@ -0,0 +1,15 @@
+export default {
+ html: `
+ A
+ `,
+
+ test({ assert, component, window }) {
+ component.x = false;
+
+ const meta = window.document.querySelectorAll('meta');
+
+ assert.equal(meta.length, 1);
+ assert.equal(meta[0].name, 'description');
+ assert.equal(meta[0].content, 'B');
+ }
+};
diff --git a/test/runtime/samples/head-detached-in-dynamic-component/main.svelte b/test/runtime/samples/head-detached-in-dynamic-component/main.svelte
new file mode 100644
index 0000000000..e4acd7737a
--- /dev/null
+++ b/test/runtime/samples/head-detached-in-dynamic-component/main.svelte
@@ -0,0 +1,8 @@
+
+
+
\ No newline at end of file
diff --git a/test/runtime/samples/head-if-block/_config.js b/test/runtime/samples/head-if-block/_config.js
index 26e1457be7..439ed2cb1b 100644
--- a/test/runtime/samples/head-if-block/_config.js
+++ b/test/runtime/samples/head-if-block/_config.js
@@ -9,4 +9,4 @@ export default {
component.condition = true;
assert.equal(window.document.title, 'woo!!!');
}
-};
\ No newline at end of file
+};
diff --git a/test/runtime/samples/head-if-block/main.svelte b/test/runtime/samples/head-if-block/main.svelte
index a6b115bf28..1656278b9e 100644
--- a/test/runtime/samples/head-if-block/main.svelte
+++ b/test/runtime/samples/head-if-block/main.svelte
@@ -6,4 +6,4 @@
{#if condition}
woo!!!
{/if}
-
\ No newline at end of file
+
diff --git a/test/runtime/samples/head-if-else-block/_config.js b/test/runtime/samples/head-if-else-block/_config.js
new file mode 100644
index 0000000000..7665bfe90b
--- /dev/null
+++ b/test/runtime/samples/head-if-else-block/_config.js
@@ -0,0 +1,14 @@
+export default {
+ props: {
+ condition: false
+ },
+
+ test({ assert, component, target, window }) {
+ assert.equal(window.document.title, '');
+ assert.equal(Boolean(window.document.getElementById('meta')), true);
+
+ component.condition = true;
+ assert.equal(window.document.title, 'woo!!!');
+ assert.equal(window.document.getElementById('meta'), null);
+ }
+};
diff --git a/test/runtime/samples/head-if-else-block/main.svelte b/test/runtime/samples/head-if-else-block/main.svelte
new file mode 100644
index 0000000000..a31bdf3330
--- /dev/null
+++ b/test/runtime/samples/head-if-else-block/main.svelte
@@ -0,0 +1,11 @@
+
+
+
+ {#if condition}
+ woo!!!
+ {:else}
+
+ {/if}
+
diff --git a/test/runtime/samples/head-if-else-raw-dynamic/_config.js b/test/runtime/samples/head-if-else-raw-dynamic/_config.js
new file mode 100644
index 0000000000..b6da617cb9
--- /dev/null
+++ b/test/runtime/samples/head-if-else-raw-dynamic/_config.js
@@ -0,0 +1,19 @@
+const foo = '';
+const bar = '';
+
+export default {
+ props: {
+ condition: false,
+ foo,
+ bar
+ },
+
+ test({ assert, component, window }) {
+ assert.equal(window.document.head.innerHTML.includes(foo), false);
+ assert.equal(window.document.head.innerHTML.includes(bar), true);
+
+ component.condition = true;
+ assert.equal(window.document.head.innerHTML.includes(foo), true);
+ assert.equal(window.document.head.innerHTML.includes(bar), false);
+ }
+};
diff --git a/test/runtime/samples/head-if-else-raw-dynamic/main.svelte b/test/runtime/samples/head-if-else-raw-dynamic/main.svelte
new file mode 100644
index 0000000000..ca322dad83
--- /dev/null
+++ b/test/runtime/samples/head-if-else-raw-dynamic/main.svelte
@@ -0,0 +1,11 @@
+
+
+
+ {#if condition}
+ {@html foo}
+ {:else}
+ {@html bar}
+ {/if}
+
diff --git a/test/runtime/samples/head-raw-dynamic/Bar.svelte b/test/runtime/samples/head-raw-dynamic/Bar.svelte
new file mode 100644
index 0000000000..11e5cb9ee8
--- /dev/null
+++ b/test/runtime/samples/head-raw-dynamic/Bar.svelte
@@ -0,0 +1,11 @@
+
+
+
+
+ {#if true}
+ {@html bar}
+ {/if}
+ bar!!!
+
diff --git a/test/runtime/samples/head-raw-dynamic/Foo.svelte b/test/runtime/samples/head-raw-dynamic/Foo.svelte
new file mode 100644
index 0000000000..f4fd5741ac
--- /dev/null
+++ b/test/runtime/samples/head-raw-dynamic/Foo.svelte
@@ -0,0 +1,7 @@
+
+
+
+ {@html foo}
+
diff --git a/test/runtime/samples/head-raw-dynamic/_config.js b/test/runtime/samples/head-raw-dynamic/_config.js
new file mode 100644
index 0000000000..61e86727ff
--- /dev/null
+++ b/test/runtime/samples/head-raw-dynamic/_config.js
@@ -0,0 +1,26 @@
+const foo = '';
+const bar = '';
+
+export default {
+ props: {
+ condition: 1,
+ foo,
+ bar
+ },
+
+ test({ assert, component, window }) {
+ assert.equal(window.document.head.innerHTML.includes(foo), true);
+
+ component.condition = false;
+ assert.equal(window.document.head.innerHTML.includes(foo), false);
+
+ component.condition = 2;
+ assert.equal(window.document.title, 'bar!!!');
+ assert.equal(window.document.head.innerHTML.includes(bar), true);
+ assert.equal(Boolean(window.document.getElementById('meta')), true);
+
+ component.condition = false;
+ assert.equal(window.document.head.innerHTML.includes(bar), false);
+ assert.equal(window.document.getElementById('meta'), null);
+ }
+};
diff --git a/test/runtime/samples/head-raw-dynamic/main.svelte b/test/runtime/samples/head-raw-dynamic/main.svelte
new file mode 100644
index 0000000000..69f341ae36
--- /dev/null
+++ b/test/runtime/samples/head-raw-dynamic/main.svelte
@@ -0,0 +1,12 @@
+
+
+{#if condition === 1}
+
+{:else if condition === 2}
+
+{/if}
diff --git a/test/runtime/samples/head-title-empty/_config.js b/test/runtime/samples/head-title-empty/_config.js
new file mode 100644
index 0000000000..497855156c
--- /dev/null
+++ b/test/runtime/samples/head-title-empty/_config.js
@@ -0,0 +1,5 @@
+export default {
+ test({ assert, window }) {
+ assert.equal(window.document.title, '');
+ }
+};
\ No newline at end of file
diff --git a/test/runtime/samples/head-title-empty/main.svelte b/test/runtime/samples/head-title-empty/main.svelte
new file mode 100644
index 0000000000..3f81715df5
--- /dev/null
+++ b/test/runtime/samples/head-title-empty/main.svelte
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/test/runtime/samples/html-entities/_config.js b/test/runtime/samples/html-entities/_config.js
index 1591f31a53..c8c2de8403 100644
--- a/test/runtime/samples/html-entities/_config.js
+++ b/test/runtime/samples/html-entities/_config.js
@@ -9,6 +9,6 @@ export default {
A
€
- ¬anentity;
+ ¬anentity;
`
};
\ No newline at end of file
diff --git a/test/runtime/samples/immutable-nested/Nested.svelte b/test/runtime/samples/immutable-nested/Nested.svelte
index 45385e9b0b..acb0b480a4 100644
--- a/test/runtime/samples/immutable-nested/Nested.svelte
+++ b/test/runtime/samples/immutable-nested/Nested.svelte
@@ -1,7 +1,7 @@
-Called {count} times.
\ No newline at end of file
+Called {count} times.
+{foo.bar} {mounted}
\ No newline at end of file
diff --git a/test/runtime/samples/immutable-nested/_config.js b/test/runtime/samples/immutable-nested/_config.js
index e5c515fc78..8b1dd7e68a 100644
--- a/test/runtime/samples/immutable-nested/_config.js
+++ b/test/runtime/samples/immutable-nested/_config.js
@@ -1,16 +1,36 @@
export default {
immutable: true,
- html: `
Called 1 times. `,
+ html: `
+
+
Called 1 times.
+
baz true
+
+ `,
- ssrHtml: `
Called 0 times. `,
+ ssrHtml: `
+
+
Called 0 times.
+
baz false
+
`,
- test({ assert, component, target, window }) {
- var nested = component.nested;
+ test({ assert, component, target }) {
+ const nested = component.nested;
- assert.htmlEqual(target.innerHTML, `
Called 1 times. `);
+ assert.htmlEqual(target.innerHTML, `
+
+
Called 1 times.
+
baz true
+
+ `);
+ // eslint-disable-next-line no-self-assign
nested.foo = nested.foo;
- assert.htmlEqual(target.innerHTML, `
Called 1 times. `);
+ assert.htmlEqual(target.innerHTML, `
+
+
Called 1 times.
+
baz true
+
+ `);
}
};
diff --git a/test/runtime/samples/immutable-nested/main.svelte b/test/runtime/samples/immutable-nested/main.svelte
index e50055be0c..4ccf7008cd 100644
--- a/test/runtime/samples/immutable-nested/main.svelte
+++ b/test/runtime/samples/immutable-nested/main.svelte
@@ -5,5 +5,5 @@
-
+
diff --git a/test/runtime/samples/immutable-option/_config.js b/test/runtime/samples/immutable-option/_config.js
index 0aaa742fbe..1224d0213a 100644
--- a/test/runtime/samples/immutable-option/_config.js
+++ b/test/runtime/samples/immutable-option/_config.js
@@ -4,6 +4,7 @@ export default {
html: `
Called 1 times. `,
test({ assert, component, target }) {
+ // eslint-disable-next-line no-self-assign
component.foo = component.foo;
assert.htmlEqual(target.innerHTML, `
Called 1 times. `);
}
diff --git a/test/runtime/samples/immutable-svelte-meta-false/_config.js b/test/runtime/samples/immutable-svelte-meta-false/_config.js
index 933c151d6b..664f99f087 100644
--- a/test/runtime/samples/immutable-svelte-meta-false/_config.js
+++ b/test/runtime/samples/immutable-svelte-meta-false/_config.js
@@ -4,6 +4,7 @@ export default {
html: `
Called 1 times. `,
test({ assert, component, target }) {
+ // eslint-disable-next-line no-self-assign
component.foo = component.foo;
assert.htmlEqual(target.innerHTML, `
Called 2 times. `);
}
diff --git a/test/runtime/samples/immutable-svelte-meta/_config.js b/test/runtime/samples/immutable-svelte-meta/_config.js
index 9bd32dbd11..4e39f36224 100644
--- a/test/runtime/samples/immutable-svelte-meta/_config.js
+++ b/test/runtime/samples/immutable-svelte-meta/_config.js
@@ -2,6 +2,7 @@ export default {
html: `
Called 1 times. `,
test({ assert, component, target }) {
+ // eslint-disable-next-line no-self-assign
component.foo = component.foo;
assert.htmlEqual(target.innerHTML, `
Called 1 times. `);
}
diff --git a/test/runtime/samples/innerhtml-interpolated-literal/_config.js b/test/runtime/samples/innerhtml-interpolated-literal/_config.js
new file mode 100644
index 0000000000..022c70f717
--- /dev/null
+++ b/test/runtime/samples/innerhtml-interpolated-literal/_config.js
@@ -0,0 +1,7 @@
+export default {
+ html: `
+
+
+
+ `
+};
\ No newline at end of file
diff --git a/test/runtime/samples/innerhtml-interpolated-literal/main.svelte b/test/runtime/samples/innerhtml-interpolated-literal/main.svelte
new file mode 100644
index 0000000000..8a3c9272a5
--- /dev/null
+++ b/test/runtime/samples/innerhtml-interpolated-literal/main.svelte
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/test/runtime/samples/internal-state/_config.js b/test/runtime/samples/internal-state/_config.js
index 09ea61a8eb..6b8440aaf3 100644
--- a/test/runtime/samples/internal-state/_config.js
+++ b/test/runtime/samples/internal-state/_config.js
@@ -1,18 +1,18 @@
export default {
- html: `
- internal: 1
- click me
- `,
+ html: `
+ internal: 1
+ click me
+ `,
- async test({ assert, target, window }) {
- const button = target.querySelector('button');
- const click = new window.MouseEvent('click');
+ async test({ assert, target, window }) {
+ const button = target.querySelector('button');
+ const click = new window.MouseEvent('click');
- await button.dispatchEvent(click);
+ await button.dispatchEvent(click);
- assert.htmlEqual(target.innerHTML, `
- internal: 1
- click me
- `);
- }
-};
\ No newline at end of file
+ assert.htmlEqual(target.innerHTML, `
+ internal: 1
+ click me
+ `);
+ }
+};
diff --git a/test/runtime/samples/isolated-text/_config.js b/test/runtime/samples/isolated-text/_config.js
new file mode 100644
index 0000000000..ec4332be5c
--- /dev/null
+++ b/test/runtime/samples/isolated-text/_config.js
@@ -0,0 +1,6 @@
+export default {
+ html: `
+ before
+ after
+ `
+};
\ No newline at end of file
diff --git a/test/runtime/samples/isolated-text/main.svelte b/test/runtime/samples/isolated-text/main.svelte
new file mode 100644
index 0000000000..fa48dea46e
--- /dev/null
+++ b/test/runtime/samples/isolated-text/main.svelte
@@ -0,0 +1,5 @@
+before
+
+
+
+after
\ No newline at end of file
diff --git a/test/runtime/samples/lifecycle-render-order-for-children/Item.svelte b/test/runtime/samples/lifecycle-render-order-for-children/Item.svelte
new file mode 100755
index 0000000000..91411e1e73
--- /dev/null
+++ b/test/runtime/samples/lifecycle-render-order-for-children/Item.svelte
@@ -0,0 +1,29 @@
+
+
+
+ {logRender()}
+
diff --git a/test/runtime/samples/lifecycle-render-order-for-children/_config.js b/test/runtime/samples/lifecycle-render-order-for-children/_config.js
new file mode 100644
index 0000000000..a1d35d7aa8
--- /dev/null
+++ b/test/runtime/samples/lifecycle-render-order-for-children/_config.js
@@ -0,0 +1,28 @@
+import order from './order.js';
+
+export default {
+ skip_if_ssr: true,
+
+ test({ assert, component, target }) {
+ assert.deepEqual(order, [
+ '0: beforeUpdate',
+ '0: render',
+ '1: beforeUpdate',
+ '1: render',
+ '2: beforeUpdate',
+ '2: render',
+ '3: beforeUpdate',
+ '3: render',
+ '1: onMount',
+ '1: afterUpdate',
+ '2: onMount',
+ '2: afterUpdate',
+ '3: onMount',
+ '3: afterUpdate',
+ '0: onMount',
+ '0: afterUpdate'
+ ]);
+
+ order.length = 0;
+ }
+};
diff --git a/test/runtime/samples/lifecycle-render-order-for-children/main.svelte b/test/runtime/samples/lifecycle-render-order-for-children/main.svelte
new file mode 100644
index 0000000000..fbb1c937e4
--- /dev/null
+++ b/test/runtime/samples/lifecycle-render-order-for-children/main.svelte
@@ -0,0 +1,33 @@
+
+
+{logRender()}
+
+ {#each [1,2,3] as index}
+
+ {/each}
+
+
+
diff --git a/test/runtime/samples/lifecycle-render-order-for-children/order.js b/test/runtime/samples/lifecycle-render-order-for-children/order.js
new file mode 100644
index 0000000000..109fa8b38c
--- /dev/null
+++ b/test/runtime/samples/lifecycle-render-order-for-children/order.js
@@ -0,0 +1 @@
+export default [];
\ No newline at end of file
diff --git a/test/runtime/samples/lifecycle-render-order/_config.js b/test/runtime/samples/lifecycle-render-order/_config.js
index 44d7f61da6..5080973cef 100644
--- a/test/runtime/samples/lifecycle-render-order/_config.js
+++ b/test/runtime/samples/lifecycle-render-order/_config.js
@@ -3,12 +3,12 @@ import order from './order.js';
export default {
skip_if_ssr: true,
- test({ assert, component, target }) {
+ test({ assert }) {
assert.deepEqual(order, [
'beforeUpdate',
'render',
- 'afterUpdate',
- 'onMount'
+ 'onMount',
+ 'afterUpdate'
]);
order.length = 0;
diff --git a/test/runtime/samples/mixed-let-export/_config.js b/test/runtime/samples/mixed-let-export/_config.js
index 5ac8585742..f3da4215d9 100644
--- a/test/runtime/samples/mixed-let-export/_config.js
+++ b/test/runtime/samples/mixed-let-export/_config.js
@@ -1,9 +1,9 @@
export default {
- props: {
- a: 42
- },
+ props: {
+ a: 42
+ },
- html: `
- 42
- `
-}
+ html: `
+ 42
+ `
+};
diff --git a/test/runtime/samples/nbsp-div/_config.js b/test/runtime/samples/nbsp-div/_config.js
new file mode 100644
index 0000000000..5ab7a7f04b
--- /dev/null
+++ b/test/runtime/samples/nbsp-div/_config.js
@@ -0,0 +1,17 @@
+export default {
+ html: ` hello
+ hello
+ hello hello
`,
+
+ test({ assert, component, target }) {
+ const divList = target.querySelectorAll('div');
+ assert.equal( divList[0].textContent.charCodeAt( 0 ), 160 );
+ assert.equal( divList[1].textContent.charCodeAt( 0 ), 160 );
+ assert.equal( divList[1].textContent.charCodeAt( 6 ), 160 );
+ assert.equal( divList[1].textContent.charCodeAt( 7 ), 160 );
+ assert.equal( divList[2].textContent.charCodeAt( 0 ), 160 );
+ assert.equal( divList[2].textContent.charCodeAt( 6 ), 160 );
+ assert.equal( divList[2].textContent.charCodeAt( 7 ), 32 ); //normal space
+ assert.equal( divList[2].textContent.charCodeAt( 8 ), 160 );
+ }
+};
diff --git a/test/runtime/samples/nbsp-div/main.svelte b/test/runtime/samples/nbsp-div/main.svelte
new file mode 100644
index 0000000000..64557bfeb1
--- /dev/null
+++ b/test/runtime/samples/nbsp-div/main.svelte
@@ -0,0 +1,7 @@
+
+
+ {name}
+ {name}
+ {name} {name}
\ No newline at end of file
diff --git a/test/runtime/samples/ondestroy-deep/A.svelte b/test/runtime/samples/ondestroy-deep/A.svelte
new file mode 100644
index 0000000000..a1a740bc2e
--- /dev/null
+++ b/test/runtime/samples/ondestroy-deep/A.svelte
@@ -0,0 +1,15 @@
+
+
+
+ {#if yes}
+
+ {/if}
+
\ No newline at end of file
diff --git a/test/runtime/samples/ondestroy-deep/B.svelte b/test/runtime/samples/ondestroy-deep/B.svelte
new file mode 100644
index 0000000000..78b042f2d6
--- /dev/null
+++ b/test/runtime/samples/ondestroy-deep/B.svelte
@@ -0,0 +1,15 @@
+
+
+
+ {#if yes}
+
+ {/if}
+
\ No newline at end of file
diff --git a/test/runtime/samples/ondestroy-deep/C.svelte b/test/runtime/samples/ondestroy-deep/C.svelte
new file mode 100644
index 0000000000..27f33c93fc
--- /dev/null
+++ b/test/runtime/samples/ondestroy-deep/C.svelte
@@ -0,0 +1,8 @@
+
\ No newline at end of file
diff --git a/test/runtime/samples/ondestroy-deep/_config.js b/test/runtime/samples/ondestroy-deep/_config.js
new file mode 100644
index 0000000000..4431a2e163
--- /dev/null
+++ b/test/runtime/samples/ondestroy-deep/_config.js
@@ -0,0 +1,10 @@
+import { destroyed, reset } from './destroyed.js';
+
+export default {
+ test({ assert, component }) {
+ component.visible = false;
+ assert.deepEqual(destroyed, ['A', 'B', 'C']);
+
+ reset();
+ }
+};
\ No newline at end of file
diff --git a/test/runtime/samples/ondestroy-deep/destroyed.js b/test/runtime/samples/ondestroy-deep/destroyed.js
new file mode 100644
index 0000000000..fe05c1d241
--- /dev/null
+++ b/test/runtime/samples/ondestroy-deep/destroyed.js
@@ -0,0 +1,3 @@
+export const destroyed = [];
+
+export const reset = () => destroyed.length = 0;
\ No newline at end of file
diff --git a/test/runtime/samples/ondestroy-deep/main.svelte b/test/runtime/samples/ondestroy-deep/main.svelte
new file mode 100644
index 0000000000..d584dc1b85
--- /dev/null
+++ b/test/runtime/samples/ondestroy-deep/main.svelte
@@ -0,0 +1,9 @@
+
+
+{#if visible}
+
+{/if}
\ No newline at end of file
diff --git a/test/runtime/samples/prop-exports/_config.js b/test/runtime/samples/prop-exports/_config.js
index 631c9eb0ad..e1620c015f 100644
--- a/test/runtime/samples/prop-exports/_config.js
+++ b/test/runtime/samples/prop-exports/_config.js
@@ -2,29 +2,29 @@ import { writable } from '../../../../store';
export default {
props: {
- s1: writable(42),
- s2: writable(43),
- p1: 2,
- p3: 3,
- a1: writable(1),
- a2: 4,
- a6: writable(29),
- for: 'loop',
- continue: '...',
+ s1: writable(42),
+ s2: writable(43),
+ p1: 2,
+ p3: 3,
+ a1: writable(1),
+ a2: 4,
+ a6: writable(29),
+ for: 'loop',
+ continue: '...',
},
html: `
- $s1=42
- $s2=43
- p1=2
- p3=3
- $v1=1
- v2=4
- vi1=4
- $vs1=1
- vl0=hello
- vl1=test
- $s3=29
- loop...
- `
-}
+ $s1=42
+ $s2=43
+ p1=2
+ p3=3
+ $v1=1
+ v2=4
+ vi1=4
+ $vs1=1
+ vl0=hello
+ vl1=test
+ $s3=29
+ loop...
+ `
+};
diff --git a/test/runtime/samples/prop-quoted/Nested.svelte b/test/runtime/samples/prop-quoted/Nested.svelte
new file mode 100644
index 0000000000..681f7126b2
--- /dev/null
+++ b/test/runtime/samples/prop-quoted/Nested.svelte
@@ -0,0 +1 @@
+{$$props['x-y-z']}
\ No newline at end of file
diff --git a/test/runtime/samples/prop-quoted/_config.js b/test/runtime/samples/prop-quoted/_config.js
new file mode 100644
index 0000000000..d982bc87cc
--- /dev/null
+++ b/test/runtime/samples/prop-quoted/_config.js
@@ -0,0 +1,12 @@
+export default {
+ props: {
+ foo: 1
+ },
+
+ html: `1`,
+
+ async test({ assert, component, target }) {
+ component.foo = 2;
+ assert.htmlEqual(target.innerHTML, `2`);
+ }
+};
\ No newline at end of file
diff --git a/test/runtime/samples/prop-quoted/main.svelte b/test/runtime/samples/prop-quoted/main.svelte
new file mode 100644
index 0000000000..0249017762
--- /dev/null
+++ b/test/runtime/samples/prop-quoted/main.svelte
@@ -0,0 +1,7 @@
+
+
+
\ No newline at end of file
diff --git a/test/runtime/samples/prop-subscribable/_config.js b/test/runtime/samples/prop-subscribable/_config.js
index 69f8104fab..84cde8c9af 100644
--- a/test/runtime/samples/prop-subscribable/_config.js
+++ b/test/runtime/samples/prop-subscribable/_config.js
@@ -1,4 +1,4 @@
-import { writable } from '../../../../store.js';
+import { writable } from '../../../../store';
export default {
props: {
diff --git a/test/runtime/samples/props-reactive-b/_config.js b/test/runtime/samples/props-reactive-b/_config.js
new file mode 100644
index 0000000000..43eaee23aa
--- /dev/null
+++ b/test/runtime/samples/props-reactive-b/_config.js
@@ -0,0 +1,30 @@
+export default {
+ props: {
+ a: 1,
+ b: 2
+ },
+
+ html: `
+ a: 1
+ b: 2
+ c: 3
+ `,
+
+ async test({ assert, component, target }) {
+ await component.$set({ a: 4 });
+
+ assert.htmlEqual(target.innerHTML, `
+ a: 4
+ b: 2
+ c: 6
+ `);
+
+ await component.$set({ b: 5 });
+
+ assert.htmlEqual(target.innerHTML, `
+ a: 4
+ b: 5
+ c: 9
+ `);
+ }
+};
\ No newline at end of file
diff --git a/test/runtime/samples/props-reactive-b/main.svelte b/test/runtime/samples/props-reactive-b/main.svelte
new file mode 100644
index 0000000000..45d6fc0cad
--- /dev/null
+++ b/test/runtime/samples/props-reactive-b/main.svelte
@@ -0,0 +1,8 @@
+
+
+a: {a}
+b: {$$props.b}
+c: {c}
\ No newline at end of file
diff --git a/test/runtime/samples/raw-mustache-before-element/_config.js b/test/runtime/samples/raw-mustache-before-element/_config.js
new file mode 100644
index 0000000000..61288cbb52
--- /dev/null
+++ b/test/runtime/samples/raw-mustache-before-element/_config.js
@@ -0,0 +1,3 @@
+export default {
+ html: `xbaz
`
+};
diff --git a/test/runtime/samples/raw-mustache-before-element/main.svelte b/test/runtime/samples/raw-mustache-before-element/main.svelte
new file mode 100644
index 0000000000..69c1d0107d
--- /dev/null
+++ b/test/runtime/samples/raw-mustache-before-element/main.svelte
@@ -0,0 +1 @@
+{@html 'x'}baz
\ No newline at end of file
diff --git a/test/runtime/samples/raw-mustaches/_config.js b/test/runtime/samples/raw-mustaches/_config.js
index c81e2c5cd0..cc9999aa34 100644
--- a/test/runtime/samples/raw-mustaches/_config.js
+++ b/test/runtime/samples/raw-mustaches/_config.js
@@ -1,5 +1,3 @@
-const ns = ' ';
-
export default {
skip_if_ssr: true,
@@ -7,13 +5,13 @@ export default {
raw: 'raw html!!!\\o/ '
},
- html: `before${ns}raw html!!!\\o/ ${ns}after`,
+ html: `beforeraw html!!!\\o/ after`,
test({ assert, component, target }) {
component.raw = '';
- assert.equal(target.innerHTML, `before${ns}${ns}after`);
+ assert.equal(target.innerHTML, `beforeafter`);
component.raw = 'how about unclosed elements?';
- assert.equal(target.innerHTML, `before${ns}how about unclosed elements? ${ns}after`);
+ assert.equal(target.innerHTML, `beforehow about unclosed elements? after`);
component.$destroy();
assert.equal(target.innerHTML, '');
}
diff --git a/test/runtime/samples/reactive-function-inline/_config.js b/test/runtime/samples/reactive-function-inline/_config.js
new file mode 100644
index 0000000000..45afe8929f
--- /dev/null
+++ b/test/runtime/samples/reactive-function-inline/_config.js
@@ -0,0 +1,8 @@
+export default {
+ html: '0
',
+
+ test({ assert, component, target }) {
+ component.selected = 3;
+ assert.htmlEqual(target.innerHTML, '3
');
+ }
+};
diff --git a/test/runtime/samples/reactive-function-inline/main.svelte b/test/runtime/samples/reactive-function-inline/main.svelte
new file mode 100644
index 0000000000..2a129c4a5d
--- /dev/null
+++ b/test/runtime/samples/reactive-function-inline/main.svelte
@@ -0,0 +1,6 @@
+
+
+{list.filter(x => x === selected)}
\ No newline at end of file
diff --git a/test/runtime/samples/reactive-function/_config.js b/test/runtime/samples/reactive-function/_config.js
index a29c022b5f..b3c6a65dbb 100644
--- a/test/runtime/samples/reactive-function/_config.js
+++ b/test/runtime/samples/reactive-function/_config.js
@@ -2,10 +2,8 @@ export default {
html: '50
',
test({ assert, component, target }) {
- console.group('range [50,100]');
component.range = [50, 100];
assert.htmlEqual(target.innerHTML, '75
');
- console.groupEnd();
component.range = [50, 60];
assert.htmlEqual(target.innerHTML, '55
');
diff --git a/test/runtime/samples/reactive-value-coerce/_config.js b/test/runtime/samples/reactive-value-coerce/_config.js
new file mode 100644
index 0000000000..7d8bcb6b50
--- /dev/null
+++ b/test/runtime/samples/reactive-value-coerce/_config.js
@@ -0,0 +1,10 @@
+export default {
+ html: `1-1`,
+
+ test: ({ assert, component, target }) => {
+ component.a.b[0] = 2;
+ component.a = component.a; // eslint-disable-line no-self-assign
+
+ assert.htmlEqual(target.innerHTML, `2-2`);
+ }
+};
diff --git a/test/runtime/samples/reactive-value-coerce/main.svelte b/test/runtime/samples/reactive-value-coerce/main.svelte
new file mode 100644
index 0000000000..b7b67e91a6
--- /dev/null
+++ b/test/runtime/samples/reactive-value-coerce/main.svelte
@@ -0,0 +1,7 @@
+
+
+{a.b}-{identity(a.b)}
diff --git a/test/runtime/samples/reactive-value-function-hoist-b/_config.js b/test/runtime/samples/reactive-value-function-hoist-b/_config.js
new file mode 100644
index 0000000000..04c4fd3f11
--- /dev/null
+++ b/test/runtime/samples/reactive-value-function-hoist-b/_config.js
@@ -0,0 +1,15 @@
+export default {
+ html: `
+ Click me
+ `,
+
+ async test({ assert, target, window }) {
+ const event = new window.MouseEvent('click');
+ const button = target.querySelector('button');
+
+ await button.dispatchEvent(event);
+ assert.htmlEqual(target.innerHTML, `
+ A,B,C
+ `);
+ }
+};
diff --git a/test/runtime/samples/reactive-value-function-hoist-b/main.svelte b/test/runtime/samples/reactive-value-function-hoist-b/main.svelte
new file mode 100644
index 0000000000..2e9ee6eefe
--- /dev/null
+++ b/test/runtime/samples/reactive-value-function-hoist-b/main.svelte
@@ -0,0 +1,10 @@
+
+
+Click me
diff --git a/test/runtime/samples/script-style-non-top-level/_config.js b/test/runtime/samples/script-style-non-top-level/_config.js
index 1aade72239..86eddf4611 100644
--- a/test/runtime/samples/script-style-non-top-level/_config.js
+++ b/test/runtime/samples/script-style-non-top-level/_config.js
@@ -2,7 +2,7 @@ export default {
html: `
-
+
`
};
\ No newline at end of file
diff --git a/test/runtime/samples/script-style-non-top-level/main.svelte b/test/runtime/samples/script-style-non-top-level/main.svelte
index 94cf72e4bd..73b0dfcf38 100644
--- a/test/runtime/samples/script-style-non-top-level/main.svelte
+++ b/test/runtime/samples/script-style-non-top-level/main.svelte
@@ -1,4 +1,4 @@
-
+
\ No newline at end of file
diff --git a/test/runtime/samples/set-undefined-attr/_config.js b/test/runtime/samples/set-undefined-attr/_config.js
index e28bad8257..b23f51dfc9 100644
--- a/test/runtime/samples/set-undefined-attr/_config.js
+++ b/test/runtime/samples/set-undefined-attr/_config.js
@@ -1,5 +1,5 @@
export default {
- html: '
',
+ html: `
`,
- ssrHtml: '
'
+ ssrHtml: `
`,
};
diff --git a/test/runtime/samples/set-undefined-attr/main.svelte b/test/runtime/samples/set-undefined-attr/main.svelte
index 8191acbeff..77a1885415 100644
--- a/test/runtime/samples/set-undefined-attr/main.svelte
+++ b/test/runtime/samples/set-undefined-attr/main.svelte
@@ -3,10 +3,11 @@
export let foo = 1;
export let bar;
+ export let _class;
onMount(() => {
foo = undefined;
});
-
+
diff --git a/test/runtime/samples/shorthand-method-in-template/Foo.svelte b/test/runtime/samples/shorthand-method-in-template/Foo.svelte
new file mode 100644
index 0000000000..bbe542622d
--- /dev/null
+++ b/test/runtime/samples/shorthand-method-in-template/Foo.svelte
@@ -0,0 +1,5 @@
+
+
+{bar.answer()}
\ No newline at end of file
diff --git a/test/runtime/samples/shorthand-method-in-template/_config.js b/test/runtime/samples/shorthand-method-in-template/_config.js
new file mode 100644
index 0000000000..ddd282644d
--- /dev/null
+++ b/test/runtime/samples/shorthand-method-in-template/_config.js
@@ -0,0 +1,3 @@
+export default {
+ html: '42'
+};
\ No newline at end of file
diff --git a/test/runtime/samples/shorthand-method-in-template/main.svelte b/test/runtime/samples/shorthand-method-in-template/main.svelte
new file mode 100644
index 0000000000..9ebd11aacb
--- /dev/null
+++ b/test/runtime/samples/shorthand-method-in-template/main.svelte
@@ -0,0 +1,9 @@
+
+
+
\ No newline at end of file
diff --git a/test/runtime/samples/spread-component-literal/Widget.svelte b/test/runtime/samples/spread-component-literal/Widget.svelte
new file mode 100644
index 0000000000..e00796baf3
--- /dev/null
+++ b/test/runtime/samples/spread-component-literal/Widget.svelte
@@ -0,0 +1,5 @@
+
+
+foo: {foo}
diff --git a/test/runtime/samples/spread-component-literal/_config.js b/test/runtime/samples/spread-component-literal/_config.js
new file mode 100644
index 0000000000..d1613218d5
--- /dev/null
+++ b/test/runtime/samples/spread-component-literal/_config.js
@@ -0,0 +1,5 @@
+export default {
+ html: `
+
+ `
+};
diff --git a/test/runtime/samples/spread-component-literal/main.svelte b/test/runtime/samples/spread-component-literal/main.svelte
new file mode 100644
index 0000000000..13fdf99b69
--- /dev/null
+++ b/test/runtime/samples/spread-component-literal/main.svelte
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/test/runtime/samples/spread-reuse-levels/Nested.svelte b/test/runtime/samples/spread-reuse-levels/Nested.svelte
new file mode 100644
index 0000000000..800d6cd602
--- /dev/null
+++ b/test/runtime/samples/spread-reuse-levels/Nested.svelte
@@ -0,0 +1,21 @@
+
+
+{JSON.stringify({ a, b, c })}
+{JSON.stringify(changed)}
\ No newline at end of file
diff --git a/test/runtime/samples/spread-reuse-levels/_config.js b/test/runtime/samples/spread-reuse-levels/_config.js
new file mode 100644
index 0000000000..5acd36bdf8
--- /dev/null
+++ b/test/runtime/samples/spread-reuse-levels/_config.js
@@ -0,0 +1,20 @@
+export default {
+ html: `
+ {"a":1,"b":[1],"c":42}
+ {"a":false,"b":false,"c":false}
+ `,
+
+ ssrHtml: `
+ {"a":1,"b":[1],"c":42}
+ {}
+ `,
+
+ test({ assert, component, target }) {
+ component.a = 2;
+
+ assert.htmlEqual(target.innerHTML, `
+ {"a":2,"b":[1],"c":42}
+ {"a":true,"b":false,"c":false}
+ `);
+ }
+};
diff --git a/test/runtime/samples/spread-reuse-levels/main.svelte b/test/runtime/samples/spread-reuse-levels/main.svelte
new file mode 100644
index 0000000000..a22ecfc1bb
--- /dev/null
+++ b/test/runtime/samples/spread-reuse-levels/main.svelte
@@ -0,0 +1,8 @@
+
+
+
\ No newline at end of file
diff --git a/test/runtime/samples/spring/_config.js b/test/runtime/samples/spring/_config.js
index 79399b777a..49367ce08b 100644
--- a/test/runtime/samples/spring/_config.js
+++ b/test/runtime/samples/spring/_config.js
@@ -1,3 +1,3 @@
export default {
html: `0
`
-}
\ No newline at end of file
+};
diff --git a/test/runtime/samples/store-assignment-updates-reactive/_config.js b/test/runtime/samples/store-assignment-updates-reactive/_config.js
index a7439bde5c..e81b3bb180 100644
--- a/test/runtime/samples/store-assignment-updates-reactive/_config.js
+++ b/test/runtime/samples/store-assignment-updates-reactive/_config.js
@@ -1,4 +1,4 @@
-import { writable } from '../../../../store.js';
+import { writable } from '../../../../store';
const c = writable(0);
diff --git a/test/runtime/samples/store-assignment-updates-reactive/main.svelte b/test/runtime/samples/store-assignment-updates-reactive/main.svelte
index 18ec3bd7a7..9975ea87b8 100644
--- a/test/runtime/samples/store-assignment-updates-reactive/main.svelte
+++ b/test/runtime/samples/store-assignment-updates-reactive/main.svelte
@@ -1,5 +1,5 @@
+
+{$foo}
diff --git a/test/runtime/samples/svg-slot-namespace/Widget.svelte b/test/runtime/samples/svg-slot-namespace/Widget.svelte
new file mode 100644
index 0000000000..ebfe572dc7
--- /dev/null
+++ b/test/runtime/samples/svg-slot-namespace/Widget.svelte
@@ -0,0 +1,3 @@
+
+
+
diff --git a/test/runtime/samples/svg-slot-namespace/_config.js b/test/runtime/samples/svg-slot-namespace/_config.js
new file mode 100644
index 0000000000..b53f5b0294
--- /dev/null
+++ b/test/runtime/samples/svg-slot-namespace/_config.js
@@ -0,0 +1,17 @@
+export default {
+ html: `
+
+
+
+
+
+ `,
+
+ test({ assert, target }) {
+ const div = target.querySelector('div');
+ assert.equal(div.namespaceURI, 'http://www.w3.org/1999/xhtml');
+
+ const line = target.querySelector('line');
+ assert.equal(line.namespaceURI, 'http://www.w3.org/2000/svg');
+ }
+};
diff --git a/test/runtime/samples/svg-slot-namespace/main.svelte b/test/runtime/samples/svg-slot-namespace/main.svelte
new file mode 100644
index 0000000000..d6bac9f065
--- /dev/null
+++ b/test/runtime/samples/svg-slot-namespace/main.svelte
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
diff --git a/test/runtime/samples/transition-js-await-block/_config.js b/test/runtime/samples/transition-js-await-block/_config.js
index 2e01dd7f76..80546ae6b8 100644
--- a/test/runtime/samples/transition-js-await-block/_config.js
+++ b/test/runtime/samples/transition-js-await-block/_config.js
@@ -1,7 +1,7 @@
let fulfil;
let reject;
-let promise = new Promise((f, r) => {
+const promise = new Promise((f, r) => {
fulfil = f;
reject = r;
});
@@ -14,7 +14,7 @@ export default {
intro: true,
test({ assert, target, raf }) {
- let p = target.querySelector('p');
+ const p = target.querySelector('p');
assert.equal(p.className, 'pending');
assert.equal(p.foo, 0);
@@ -26,7 +26,7 @@ export default {
return promise.then(() => {
raf.tick(80);
- let ps = document.querySelectorAll('p');
+ const ps = document.querySelectorAll('p');
assert.equal(ps[1].className, 'pending');
assert.equal(ps[0].className, 'then');
assert.equal(ps[1].foo, 0.2);
diff --git a/test/runtime/samples/transition-js-events-in-out/_config.js b/test/runtime/samples/transition-js-events-in-out/_config.js
new file mode 100644
index 0000000000..854e7e2f4b
--- /dev/null
+++ b/test/runtime/samples/transition-js-events-in-out/_config.js
@@ -0,0 +1,71 @@
+export default {
+ props: {
+ visible: false,
+ things: ['a', 'b', 'c', 'd']
+ },
+
+ // intro: true,
+
+ html: `
+ waiting...
+ `,
+
+ async test({ assert, component, target, raf }) {
+ component.visible = true;
+
+ assert.htmlEqual(target.innerHTML, `
+ introstart
+ a
+ b
+ c
+ d
+ `);
+
+ await raf.tick(50);
+
+ assert.deepEqual(component.intros.sort(), ['a', 'b', 'c', 'd']);
+ assert.equal(component.intro_count, 4);
+
+ await raf.tick(100);
+ assert.equal(component.intro_count, 0);
+
+ assert.htmlEqual(target.innerHTML, `
+ introend
+ a
+ b
+ c
+ d
+ `);
+
+ component.visible = false;
+
+ assert.htmlEqual(target.innerHTML, `
+ outrostart
+ a
+ b
+ c
+ d
+ `);
+
+ await raf.tick(150);
+ assert.deepEqual(component.outros.sort(), ['a', 'b', 'c', 'd']);
+ assert.equal(component.outro_count, 4);
+
+ await raf.tick(200);
+ assert.equal(component.outro_count, 0);
+
+ component.visible = true;
+
+ await raf.tick(250);
+ assert.deepEqual(component.intros.sort(), ['a', 'a', 'b', 'b', 'c', 'c', 'd', 'd']);
+ assert.equal(component.intro_count, 4);
+
+ assert.htmlEqual(target.innerHTML, `
+ introstart
+ a
+ b
+ c
+ d
+ `);
+ }
+};
\ No newline at end of file
diff --git a/test/runtime/samples/transition-js-events-in-out/main.svelte b/test/runtime/samples/transition-js-events-in-out/main.svelte
new file mode 100644
index 0000000000..33129f529b
--- /dev/null
+++ b/test/runtime/samples/transition-js-events-in-out/main.svelte
@@ -0,0 +1,59 @@
+
+
+{status}
+
+{#each things as thing}
+ {#if visible}
+ {thing}
+ {/if}
+{/each}
\ No newline at end of file
diff --git a/test/runtime/samples/transition-js-if-block-outro-timeout/_config.js b/test/runtime/samples/transition-js-if-block-outro-timeout/_config.js
index 5c5d33ff28..5c6e103a5a 100644
--- a/test/runtime/samples/transition-js-if-block-outro-timeout/_config.js
+++ b/test/runtime/samples/transition-js-if-block-outro-timeout/_config.js
@@ -8,7 +8,6 @@ export default {
raf.tick(200);
assert.equal(window.getComputedStyle(div).opacity, 0.5);
- component.blabla = false;
raf.tick(400);
assert.equal(window.getComputedStyle(div).opacity, 0);
diff --git a/test/server-side-rendering/index.js b/test/server-side-rendering/index.js
index 4b648c0591..cf6e5ad964 100644
--- a/test/server-side-rendering/index.js
+++ b/test/server-side-rendering/index.js
@@ -1,7 +1,6 @@
import * as assert from "assert";
import * as fs from "fs";
import * as path from "path";
-import * as glob from 'tiny-glob/sync.js';
import {
showOutput,
diff --git a/test/server-side-rendering/samples/bindings-readonly/_expected.html b/test/server-side-rendering/samples/bindings-readonly/_expected.html
new file mode 100644
index 0000000000..af678acde0
--- /dev/null
+++ b/test/server-side-rendering/samples/bindings-readonly/_expected.html
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/test/server-side-rendering/samples/bindings-readonly/main.svelte b/test/server-side-rendering/samples/bindings-readonly/main.svelte
new file mode 100644
index 0000000000..3ff98a3ead
--- /dev/null
+++ b/test/server-side-rendering/samples/bindings-readonly/main.svelte
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
diff --git a/test/server-side-rendering/samples/styles-nested/_actual.css b/test/server-side-rendering/samples/styles-nested/_actual.css
deleted file mode 100644
index 775ae8a91c..0000000000
--- a/test/server-side-rendering/samples/styles-nested/_actual.css
+++ /dev/null
@@ -1,2 +0,0 @@
-div.svelte-bzh57p{color:red}
-div.svelte-4yw8vx{color:green}
\ No newline at end of file
diff --git a/test/server-side-rendering/samples/styles/_actual.css b/test/server-side-rendering/samples/styles/_actual.css
deleted file mode 100644
index 2025c64f84..0000000000
--- a/test/server-side-rendering/samples/styles/_actual.css
+++ /dev/null
@@ -1 +0,0 @@
-div.svelte-bzh57p{color:red}
\ No newline at end of file
diff --git a/test/server-side-rendering/samples/text-area-bind/_expected.html b/test/server-side-rendering/samples/text-area-bind/_expected.html
new file mode 100644
index 0000000000..c3c8441f56
--- /dev/null
+++ b/test/server-side-rendering/samples/text-area-bind/_expected.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/test/server-side-rendering/samples/text-area-bind/main.svelte b/test/server-side-rendering/samples/text-area-bind/main.svelte
new file mode 100644
index 0000000000..7126e09375
--- /dev/null
+++ b/test/server-side-rendering/samples/text-area-bind/main.svelte
@@ -0,0 +1,5 @@
+
+
+
\ No newline at end of file
diff --git a/test/setup.js b/test/setup.js
index 8bb73d81d0..7406a07dd9 100644
--- a/test/setup.js
+++ b/test/setup.js
@@ -7,7 +7,7 @@ process.env.TEST = true;
require.extensions['.js'] = function(module, filename) {
const exports = [];
- var code = fs.readFileSync(filename, 'utf-8')
+ let code = fs.readFileSync(filename, 'utf-8')
.replace(/^import \* as (\w+) from ['"]([^'"]+)['"];?/gm, 'var $1 = require("$2");')
.replace(/^import (\w+) from ['"]([^'"]+)['"];?/gm, 'var {default: $1} = require("$2");')
.replace(/^import {([^}]+)} from ['"](.+)['"];?/gm, 'var {$1} = require("$2");')
@@ -35,4 +35,4 @@ require.extensions['.js'] = function(module, filename) {
console.log(code); // eslint-disable-line no-console
throw err;
}
-};
\ No newline at end of file
+};
diff --git a/test/sourcemaps/index.js b/test/sourcemaps/index.js
index 79028719b9..ee169ebe1b 100644
--- a/test/sourcemaps/index.js
+++ b/test/sourcemaps/index.js
@@ -1,7 +1,7 @@
import * as fs from "fs";
import * as path from "path";
import * as assert from "assert";
-import { loadConfig, svelte } from "../helpers.js";
+import { svelte } from "../helpers.js";
import { SourceMapConsumer } from "source-map";
import { getLocator } from "locate-character";
@@ -18,8 +18,6 @@ describe("sourcemaps", () => {
}
(solo ? it.only : skip ? it.skip : it)(dir, () => {
- const config = loadConfig(`./sourcemaps/samples/${dir}/_config.js`);
-
const filename = path.resolve(
`test/sourcemaps/samples/${dir}/input.svelte`
);
diff --git a/test/store/index.ts b/test/store/index.js
similarity index 75%
rename from test/store/index.ts
rename to test/store/index.js
index 13b8e1f869..a39fab86e6 100644
--- a/test/store/index.ts
+++ b/test/store/index.js
@@ -49,7 +49,7 @@ describe('store', () => {
const store = writable(obj);
- store.subscribe(value => {
+ store.subscribe(() => {
called += 1;
});
@@ -59,6 +59,22 @@ describe('store', () => {
store.update(obj => obj);
assert.equal(called, 3);
});
+
+ it('only calls subscriber once initially, including on resubscriptions', () => {
+ let num = 0;
+ const store = writable(num, set => set(num += 1));
+
+ let count1 = 0;
+ let count2 = 0;
+
+ store.subscribe(() => count1 += 1)();
+ assert.equal(count1, 1);
+
+ const unsubscribe = store.subscribe(() => count2 += 1);
+ assert.equal(count2, 1);
+
+ unsubscribe();
+ });
});
describe('readable', () => {
@@ -189,6 +205,58 @@ describe('store', () => {
unsubscribe();
});
+ it('prevents diamond dependency problem', () => {
+ const count = writable(0);
+ const values = [];
+
+ const a = derived(count, $count => {
+ return 'a' + $count;
+ });
+
+ const b = derived(count, $count => {
+ return 'b' + $count;
+ });
+
+ const combined = derived([a, b], ([a, b]) => {
+ return a + b;
+ });
+
+ const unsubscribe = combined.subscribe(v => {
+ values.push(v);
+ });
+
+ assert.deepEqual(values, ['a0b0']);
+
+ count.set(1);
+ assert.deepEqual(values, ['a0b0', 'a1b1']);
+
+ unsubscribe();
+ });
+
+ it('derived dependency does not update and shared ancestor updates', () => {
+ const root = writable({ a: 0, b:0 });
+ const values = [];
+
+ const a = derived(root, $root => {
+ return 'a' + $root.a;
+ });
+
+ const b = derived([a, root], ([$a, $root]) => {
+ return 'b' + $root.b + $a;
+ });
+
+ const unsubscribe = b.subscribe(v => {
+ values.push(v);
+ });
+
+ assert.deepEqual(values, ['b0a0']);
+
+ root.set({ a: 0, b: 1 });
+ assert.deepEqual(values, ['b0a0', 'b1a0']);
+
+ unsubscribe();
+ });
+
it('is updated with safe_not_equal logic', () => {
const arr = [0];
@@ -285,5 +353,18 @@ describe('store', () => {
const store = readable(42, () => { });
assert.equal(get(store), 42);
});
+
+ it('works with RxJS-style observables', () => {
+ const observable = {
+ subscribe(fn) {
+ fn(42);
+ return {
+ unsubscribe: () => {}
+ };
+ }
+ };
+
+ assert.equal(get(observable), 42);
+ });
});
});
diff --git a/test/test.js b/test/test.js
index 380bbee304..f18c01c149 100644
--- a/test/test.js
+++ b/test/test.js
@@ -1,7 +1,11 @@
-const glob = require("tiny-glob/sync.js");
+const glob = require('tiny-glob/sync.js');
-require("./setup");
+require('./setup');
-glob("*/index.{js,ts}", { cwd: "test" }).forEach(function(file) {
- require("./" + file);
-});
\ No newline at end of file
+// bind internal to jsdom
+require('./helpers');
+require('../internal');
+
+glob('*/index.js', { cwd: 'test' }).forEach((file) => {
+ require('./' + file);
+});
diff --git a/test/tsconfig.json b/test/tsconfig.json
new file mode 100644
index 0000000000..82eaf0245e
--- /dev/null
+++ b/test/tsconfig.json
@@ -0,0 +1,10 @@
+{
+ "extends": "../tsconfig.json",
+ "include": ["."],
+
+ "compilerOptions": {
+ "allowJs": true,
+ "checkJs": true,
+ "noEmit": true
+ }
+}
diff --git a/test/validator/index.js b/test/validator/index.js
index b26b087bb3..1e54cc20db 100644
--- a/test/validator/index.js
+++ b/test/validator/index.js
@@ -24,7 +24,7 @@ describe("validate", () => {
let error;
try {
- let { warnings } = svelte.compile(input, {
+ const { warnings } = svelte.compile(input, {
dev: config.dev,
legacy: config.legacy,
generate: false
@@ -59,7 +59,7 @@ describe("validate", () => {
assert.deepEqual(error.end, expected.end);
assert.equal(error.pos, expected.pos);
} catch (e) {
- console.error(error)
+ console.error(error); // eslint-disable-line no-console
throw e;
}
}
diff --git a/test/validator/samples/a11y-alt-text/input.svelte b/test/validator/samples/a11y-alt-text/input.svelte
index f17638af76..1c3b5ac5ce 100644
--- a/test/validator/samples/a11y-alt-text/input.svelte
+++ b/test/validator/samples/a11y-alt-text/input.svelte
@@ -6,4 +6,6 @@
-
\ No newline at end of file
+
+
+
diff --git a/test/validator/samples/catch-declares-error-variable/input.svelte b/test/validator/samples/catch-declares-error-variable/input.svelte
new file mode 100644
index 0000000000..b44e854cf5
--- /dev/null
+++ b/test/validator/samples/catch-declares-error-variable/input.svelte
@@ -0,0 +1,13 @@
+
+
+ {
+ try {
+ throw new Error('foo');
+ } catch (error) {
+ value = error;
+ }
+}}>Click to create error
+
+{String(value)}
diff --git a/test/validator/samples/catch-declares-error-variable/warnings.json b/test/validator/samples/catch-declares-error-variable/warnings.json
new file mode 100644
index 0000000000..0637a088a0
--- /dev/null
+++ b/test/validator/samples/catch-declares-error-variable/warnings.json
@@ -0,0 +1 @@
+[]
\ No newline at end of file
diff --git a/test/validator/samples/component-event-modifiers-invalid/errors.json b/test/validator/samples/component-event-modifiers-invalid/errors.json
new file mode 100644
index 0000000000..da608063fe
--- /dev/null
+++ b/test/validator/samples/component-event-modifiers-invalid/errors.json
@@ -0,0 +1,15 @@
+[{
+ "message": "Event modifiers other than 'once' can only be used on DOM elements",
+ "code": "invalid-event-modifier",
+ "start": {
+ "line": 6,
+ "column": 8,
+ "character": 93
+ },
+ "end": {
+ "line": 6,
+ "column": 40,
+ "character": 125
+ },
+ "pos": 93
+}]
diff --git a/test/validator/samples/component-event-modifiers-invalid/input.svelte b/test/validator/samples/component-event-modifiers-invalid/input.svelte
new file mode 100644
index 0000000000..8f7ce54d7a
--- /dev/null
+++ b/test/validator/samples/component-event-modifiers-invalid/input.svelte
@@ -0,0 +1,6 @@
+
+
+
\ No newline at end of file
diff --git a/test/validator/samples/contenteditable-dynamic/errors.json b/test/validator/samples/contenteditable-dynamic/errors.json
new file mode 100644
index 0000000000..0c4c5585a6
--- /dev/null
+++ b/test/validator/samples/contenteditable-dynamic/errors.json
@@ -0,0 +1,15 @@
+[{
+ "code": "dynamic-contenteditable-attribute",
+ "message": "'contenteditable' attribute cannot be dynamic if element uses two-way binding",
+ "start": {
+ "line": 6,
+ "column": 8,
+ "character": 73
+ },
+ "end": {
+ "line": 6,
+ "column": 32,
+ "character": 97
+ },
+ "pos": 73
+}]
\ No newline at end of file
diff --git a/test/validator/samples/contenteditable-dynamic/input.svelte b/test/validator/samples/contenteditable-dynamic/input.svelte
new file mode 100644
index 0000000000..8dfa91a354
--- /dev/null
+++ b/test/validator/samples/contenteditable-dynamic/input.svelte
@@ -0,0 +1,6 @@
+
+
diff --git a/test/validator/samples/contenteditable-missing/errors.json b/test/validator/samples/contenteditable-missing/errors.json
new file mode 100644
index 0000000000..53d5af4928
--- /dev/null
+++ b/test/validator/samples/contenteditable-missing/errors.json
@@ -0,0 +1,15 @@
+[{
+ "code": "missing-contenteditable-attribute",
+ "message": "'contenteditable' attribute is required for textContent and innerHTML two-way bindings",
+ "start": {
+ "line": 4,
+ "column": 8,
+ "character": 48
+ },
+ "end": {
+ "line": 4,
+ "column": 31,
+ "character": 71
+ },
+ "pos": 48
+}]
\ No newline at end of file
diff --git a/test/validator/samples/contenteditable-missing/input.svelte b/test/validator/samples/contenteditable-missing/input.svelte
new file mode 100644
index 0000000000..dae1088994
--- /dev/null
+++ b/test/validator/samples/contenteditable-missing/input.svelte
@@ -0,0 +1,4 @@
+
+
diff --git a/test/validator/samples/dollar-dollar-global-in-markup/errors.json b/test/validator/samples/dollar-dollar-global-in-markup/errors.json
new file mode 100644
index 0000000000..4730c5152e
--- /dev/null
+++ b/test/validator/samples/dollar-dollar-global-in-markup/errors.json
@@ -0,0 +1,15 @@
+[{
+ "code": "illegal-global",
+ "message": "$$billsyall is an illegal variable name",
+ "pos": 1,
+ "start": {
+ "line": 1,
+ "column": 1,
+ "character": 1
+ },
+ "end": {
+ "line": 1,
+ "column": 12,
+ "character": 12
+ }
+}]
\ No newline at end of file
diff --git a/test/validator/samples/dollar-dollar-global-in-markup/input.svelte b/test/validator/samples/dollar-dollar-global-in-markup/input.svelte
new file mode 100644
index 0000000000..d197237056
--- /dev/null
+++ b/test/validator/samples/dollar-dollar-global-in-markup/input.svelte
@@ -0,0 +1 @@
+{$$billsyall}
\ No newline at end of file
diff --git a/test/validator/samples/dollar-dollar-global-in-script/errors.json b/test/validator/samples/dollar-dollar-global-in-script/errors.json
new file mode 100644
index 0000000000..5c923e35f7
--- /dev/null
+++ b/test/validator/samples/dollar-dollar-global-in-script/errors.json
@@ -0,0 +1,15 @@
+[{
+ "code": "illegal-global",
+ "message": "$$billsyall is an illegal variable name",
+ "pos": 10,
+ "start": {
+ "line": 2,
+ "column": 1,
+ "character": 10
+ },
+ "end": {
+ "line": 2,
+ "column": 12,
+ "character": 21
+ }
+}]
\ No newline at end of file
diff --git a/test/validator/samples/dollar-dollar-global-in-script/input.svelte b/test/validator/samples/dollar-dollar-global-in-script/input.svelte
new file mode 100644
index 0000000000..9f7fc06a7d
--- /dev/null
+++ b/test/validator/samples/dollar-dollar-global-in-script/input.svelte
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/test/validator/samples/dollar-global-in-markup/errors.json b/test/validator/samples/dollar-global-in-markup/errors.json
new file mode 100644
index 0000000000..6cdf67e872
--- /dev/null
+++ b/test/validator/samples/dollar-global-in-markup/errors.json
@@ -0,0 +1,15 @@
+[{
+ "code": "illegal-global",
+ "message": "$ is an illegal variable name",
+ "pos": 1,
+ "start": {
+ "line": 1,
+ "column": 1,
+ "character": 1
+ },
+ "end": {
+ "line": 1,
+ "column": 2,
+ "character": 2
+ }
+}]
\ No newline at end of file
diff --git a/test/validator/samples/dollar-global-in-markup/input.svelte b/test/validator/samples/dollar-global-in-markup/input.svelte
new file mode 100644
index 0000000000..f6b2dceee5
--- /dev/null
+++ b/test/validator/samples/dollar-global-in-markup/input.svelte
@@ -0,0 +1 @@
+{$}
\ No newline at end of file
diff --git a/test/validator/samples/dollar-global-in-script/errors.json b/test/validator/samples/dollar-global-in-script/errors.json
new file mode 100644
index 0000000000..2a6bd7ce7a
--- /dev/null
+++ b/test/validator/samples/dollar-global-in-script/errors.json
@@ -0,0 +1,15 @@
+[{
+ "code": "illegal-global",
+ "message": "$ is an illegal variable name",
+ "pos": 10,
+ "start": {
+ "line": 2,
+ "column": 1,
+ "character": 10
+ },
+ "end": {
+ "line": 2,
+ "column": 2,
+ "character": 11
+ }
+}]
\ No newline at end of file
diff --git a/test/validator/samples/dollar-global-in-script/input.svelte b/test/validator/samples/dollar-global-in-script/input.svelte
new file mode 100644
index 0000000000..a06da03657
--- /dev/null
+++ b/test/validator/samples/dollar-global-in-script/input.svelte
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/test/validator/samples/event-modifiers-invalid/errors.json b/test/validator/samples/event-modifiers-invalid/errors.json
index 0aac0e5327..8be2ca7348 100644
--- a/test/validator/samples/event-modifiers-invalid/errors.json
+++ b/test/validator/samples/event-modifiers-invalid/errors.json
@@ -1,5 +1,5 @@
[{
- "message": "Valid event modifiers are preventDefault, stopPropagation, capture, once or passive",
+ "message": "Valid event modifiers are preventDefault, stopPropagation, capture, once, passive or self",
"code": "invalid-event-modifier",
"start": {
"line": 1,
diff --git a/test/validator/samples/ignore-warning/input.svelte b/test/validator/samples/ignore-warning/input.svelte
new file mode 100644
index 0000000000..c4e7556d74
--- /dev/null
+++ b/test/validator/samples/ignore-warning/input.svelte
@@ -0,0 +1,7 @@
+
+
+
+
but this is still discouraged
+
+
+
\ No newline at end of file
diff --git a/test/validator/samples/ignore-warning/warnings.json b/test/validator/samples/ignore-warning/warnings.json
new file mode 100644
index 0000000000..6123fafae8
--- /dev/null
+++ b/test/validator/samples/ignore-warning/warnings.json
@@ -0,0 +1,32 @@
+[
+ {
+ "code": "a11y-distracting-elements",
+ "end": {
+ "character": 131,
+ "column": 49,
+ "line": 4
+ },
+ "message": "A11y: Avoid elements",
+ "pos": 83,
+ "start": {
+ "character": 83,
+ "column": 1,
+ "line": 4
+ }
+ },
+ {
+ "code": "a11y-missing-attribute",
+ "end": {
+ "character": 162,
+ "column": 22,
+ "line": 7
+ },
+ "message": "A11y: element should have an alt attribute",
+ "pos": 140,
+ "start": {
+ "character": 140,
+ "column": 0,
+ "line": 7
+ }
+ }
+]
\ No newline at end of file
diff --git a/test/validator/samples/ignore-warnings-cumulative/input.svelte b/test/validator/samples/ignore-warnings-cumulative/input.svelte
new file mode 100644
index 0000000000..2843a890ce
--- /dev/null
+++ b/test/validator/samples/ignore-warnings-cumulative/input.svelte
@@ -0,0 +1,17 @@
+
+
+
+
+
+ potato
+
+
+
+
+
+
+
+ potato
+
+
+
\ No newline at end of file
diff --git a/test/validator/samples/ignore-warnings-cumulative/warnings.json b/test/validator/samples/ignore-warnings-cumulative/warnings.json
new file mode 100644
index 0000000000..3ab413824d
--- /dev/null
+++ b/test/validator/samples/ignore-warnings-cumulative/warnings.json
@@ -0,0 +1,17 @@
+[
+ {
+ "code": "a11y-distracting-elements",
+ "end": {
+ "character": 161,
+ "column": 12,
+ "line": 7
+ },
+ "message": "A11y: Avoid elements",
+ "pos": 104,
+ "start": {
+ "character": 104,
+ "column": 2,
+ "line": 5
+ }
+ }
+]
\ No newline at end of file
diff --git a/test/validator/samples/ignore-warnings-newline/input.svelte b/test/validator/samples/ignore-warnings-newline/input.svelte
new file mode 100644
index 0000000000..c75a91c630
--- /dev/null
+++ b/test/validator/samples/ignore-warnings-newline/input.svelte
@@ -0,0 +1,8 @@
+
+
+
+
but this is still discouraged
+
+
+
\ No newline at end of file
diff --git a/test/validator/samples/ignore-warnings-newline/warnings.json b/test/validator/samples/ignore-warnings-newline/warnings.json
new file mode 100644
index 0000000000..8247468444
--- /dev/null
+++ b/test/validator/samples/ignore-warnings-newline/warnings.json
@@ -0,0 +1,17 @@
+[
+ {
+ "code": "a11y-missing-attribute",
+ "end": {
+ "character": 207,
+ "column": 22,
+ "line": 8
+ },
+ "message": "A11y: element should have an alt attribute",
+ "pos": 185,
+ "start": {
+ "character": 185,
+ "column": 0,
+ "line": 8
+ }
+ }
+]
\ No newline at end of file
diff --git a/test/validator/samples/ignore-warnings-stacked/input.svelte b/test/validator/samples/ignore-warnings-stacked/input.svelte
new file mode 100644
index 0000000000..c6edb7240a
--- /dev/null
+++ b/test/validator/samples/ignore-warnings-stacked/input.svelte
@@ -0,0 +1,8 @@
+
+
+
+
+
but this is still discouraged
+
+
+
\ No newline at end of file
diff --git a/test/validator/samples/ignore-warnings-stacked/warnings.json b/test/validator/samples/ignore-warnings-stacked/warnings.json
new file mode 100644
index 0000000000..dd647d7cb2
--- /dev/null
+++ b/test/validator/samples/ignore-warnings-stacked/warnings.json
@@ -0,0 +1,17 @@
+[
+ {
+ "code": "a11y-missing-attribute",
+ "end": {
+ "character": 211,
+ "column": 22,
+ "line": 8
+ },
+ "message": "A11y: element should have an alt attribute",
+ "pos": 189,
+ "start": {
+ "character": 189,
+ "column": 0,
+ "line": 8
+ }
+ }
+]
\ No newline at end of file
diff --git a/test/validator/samples/ignore-warnings/input.svelte b/test/validator/samples/ignore-warnings/input.svelte
new file mode 100644
index 0000000000..5fd7229f9a
--- /dev/null
+++ b/test/validator/samples/ignore-warnings/input.svelte
@@ -0,0 +1,7 @@
+
+
+
+
but this is still discouraged
+
+
+
\ No newline at end of file
diff --git a/test/validator/samples/ignore-warnings/warnings.json b/test/validator/samples/ignore-warnings/warnings.json
new file mode 100644
index 0000000000..576dfe76f4
--- /dev/null
+++ b/test/validator/samples/ignore-warnings/warnings.json
@@ -0,0 +1,17 @@
+[
+ {
+ "code": "a11y-missing-attribute",
+ "end": {
+ "character": 188,
+ "column": 22,
+ "line": 7
+ },
+ "message": "A11y: element should have an alt attribute",
+ "pos": 166,
+ "start": {
+ "character": 166,
+ "column": 0,
+ "line": 7
+ }
+ }
+]
\ No newline at end of file
diff --git a/test/validator/samples/undefined-value/input.svelte b/test/validator/samples/undefined-value/input.svelte
index 03dda2c44f..0dec9632a7 100644
--- a/test/validator/samples/undefined-value/input.svelte
+++ b/test/validator/samples/undefined-value/input.svelte
@@ -1,6 +1,6 @@
-
-
{potato}
-{Math.max(1, 2)}
\ No newline at end of file
+{Math.max(1, 2)}
+
+{#each window.something as foo, i (foo.x + i)}
+ hello
+{/each}
diff --git a/test/validator/samples/undefined-value/warnings.json b/test/validator/samples/undefined-value/warnings.json
index c1813e6ab0..790f83acfd 100644
--- a/test/validator/samples/undefined-value/warnings.json
+++ b/test/validator/samples/undefined-value/warnings.json
@@ -1,15 +1,15 @@
[{
"code": "missing-declaration",
- "message": "'potato' is not defined",
- "pos": 67,
+ "message": "'potato' is not defined. Consider adding a