@tko/build.knockout 4.0.0 → 4.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- // @tko/build.knockout 🥊 4.0.0 ESM
1
+ // @tko/build.knockout 🥊 4.0.1 ESM
2
2
  "use strict";
3
3
  import { Builder } from "@tko/builder";
4
4
  import { VirtualProvider } from "@tko/provider.virtual";
@@ -19,21 +19,12 @@ const dataBindProvider = new DataBindProvider();
19
19
  const expressionRewriting = {
20
20
  preProcessBindings: (s) => dataBindProvider.preProcessBindings(s)
21
21
  };
22
- const provider = new MultiProvider({ providers: [
23
- new ComponentProvider(),
24
- dataBindProvider,
25
- new VirtualProvider(),
26
- new AttributeProvider()
27
- ] });
22
+ const provider = new MultiProvider({
23
+ providers: [new ComponentProvider(), dataBindProvider, new VirtualProvider(), new AttributeProvider()]
24
+ });
28
25
  const builder = new Builder({
29
26
  provider,
30
- bindings: [
31
- coreBindings,
32
- templateBindings,
33
- ifBindings,
34
- componentBindings,
35
- { each: foreachBindings.foreach }
36
- ],
27
+ bindings: [coreBindings, templateBindings, ifBindings, componentBindings, { each: foreachBindings.foreach }],
37
28
  extenders: {},
38
29
  filters,
39
30
  options: {
@@ -41,7 +32,7 @@ const builder = new Builder({
41
32
  bindingStringPreparsers: [functionRewrite]
42
33
  }
43
34
  });
44
- const version = "4.0.0";
35
+ const version = "4.0.1";
45
36
  export default builder.create({
46
37
  version,
47
38
  components,
package/dist/index.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/index.ts"],
4
- "sourcesContent": ["import { Builder } from '@tko/builder'\n\nimport { VirtualProvider } from '@tko/provider.virtual'\nimport { DataBindProvider } from '@tko/provider.databind'\nimport { ComponentProvider } from '@tko/provider.component'\nimport { AttributeProvider } from '@tko/provider.attr'\nimport { MultiProvider } from '@tko/provider.multi'\n\nimport { bindings as coreBindings } from '@tko/binding.core'\nimport { bindings as templateBindings } from '@tko/binding.template'\nimport { bindings as ifBindings } from '@tko/binding.if'\nimport { bindings as foreachBindings } from '@tko/binding.foreach'\nimport { bindings as componentBindings } from '@tko/binding.component'\n\nimport { filters } from '@tko/filter.punches'\n\nimport components from '@tko/utils.component'\n\nimport { functionRewrite } from '@tko/utils.functionrewrite'\n\nimport { options as defaultOptions } from '@tko/utils'\n\ndeclare const BUILD_VERSION: string\n\n/**\n * expressionRewriting is deprecated in TKO because we have our own JS\n * parser now. This is here only for legacy compatibility.\n */\nconst dataBindProvider = new DataBindProvider()\nconst expressionRewriting = {\n preProcessBindings: s => dataBindProvider.preProcessBindings(s)\n}\n\nconst provider = new MultiProvider({providers: [\n new ComponentProvider(),\n dataBindProvider,\n new VirtualProvider(),\n new AttributeProvider()\n]})\n\nconst builder = new Builder({\n provider,\n bindings: [\n coreBindings,\n templateBindings,\n ifBindings,\n componentBindings,\n { each: foreachBindings.foreach }\n ],\n extenders: {},\n filters,\n options: {\n bindingGlobals: defaultOptions.global,\n bindingStringPreparsers: [functionRewrite]\n }\n})\n\nconst version = BUILD_VERSION\nexport default builder.create({\n version,\n components,\n Component: components.ComponentABC,\n expressionRewriting\n})\n"],
5
- "mappings": ";;AAAA,SAAS,eAAe;AAExB,SAAS,uBAAuB;AAChC,SAAS,wBAAwB;AACjC,SAAS,yBAAyB;AAClC,SAAS,yBAAyB;AAClC,SAAS,qBAAqB;AAE9B,SAAS,YAAY,oBAAoB;AACzC,SAAS,YAAY,wBAAwB;AAC7C,SAAS,YAAY,kBAAkB;AACvC,SAAS,YAAY,uBAAuB;AAC5C,SAAS,YAAY,yBAAyB;AAE9C,SAAS,eAAe;AAExB,OAAO,gBAAgB;AAEvB,SAAS,uBAAuB;AAEhC,SAAS,WAAW,sBAAsB;AAQ1C,MAAM,mBAAmB,IAAI,iBAAiB;AAC9C,MAAM,sBAAsB;AAAA,EAC1B,oBAAoB,OAAK,iBAAiB,mBAAmB,CAAC;AAChE;AAEA,MAAM,WAAW,IAAI,cAAc,EAAC,WAAW;AAAA,EAC7C,IAAI,kBAAkB;AAAA,EACtB;AAAA,EACA,IAAI,gBAAgB;AAAA,EACpB,IAAI,kBAAkB;AACxB,EAAC,CAAC;AAEF,MAAM,UAAU,IAAI,QAAQ;AAAA,EAC1B;AAAA,EACA,UAAU;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,EAAE,MAAM,gBAAgB,QAAQ;AAAA,EAClC;AAAA,EACA,WAAW,CAAC;AAAA,EACZ;AAAA,EACA,SAAS;AAAA,IACP,gBAAgB,eAAe;AAAA,IAC/B,yBAAyB,CAAC,eAAe;AAAA,EAC3C;AACF,CAAC;AAED,MAAM,UAAU;AAChB,eAAe,QAAQ,OAAO;AAAA,EAC5B;AAAA,EACA;AAAA,EACA,WAAW,WAAW;AAAA,EACtB;AACF,CAAC;",
4
+ "sourcesContent": ["import { Builder } from '@tko/builder'\n\nimport { VirtualProvider } from '@tko/provider.virtual'\nimport { DataBindProvider } from '@tko/provider.databind'\nimport { ComponentProvider } from '@tko/provider.component'\nimport { AttributeProvider } from '@tko/provider.attr'\nimport { MultiProvider } from '@tko/provider.multi'\n\nimport { bindings as coreBindings } from '@tko/binding.core'\nimport { bindings as templateBindings } from '@tko/binding.template'\nimport { bindings as ifBindings } from '@tko/binding.if'\nimport { bindings as foreachBindings } from '@tko/binding.foreach'\nimport { bindings as componentBindings } from '@tko/binding.component'\n\nimport { filters } from '@tko/filter.punches'\n\nimport components from '@tko/utils.component'\n\nimport { functionRewrite } from '@tko/utils.functionrewrite'\n\nimport { options as defaultOptions } from '@tko/utils'\n\ndeclare const BUILD_VERSION: string\n\n/**\n * expressionRewriting is deprecated in TKO because we have our own JS\n * parser now. This is here only for legacy compatibility.\n */\nconst dataBindProvider = new DataBindProvider()\nconst expressionRewriting = {\n preProcessBindings: s => dataBindProvider.preProcessBindings(s)\n}\n\nconst provider = new MultiProvider({\n providers: [new ComponentProvider(), dataBindProvider, new VirtualProvider(), new AttributeProvider()]\n})\n\nconst builder = new Builder({\n provider,\n bindings: [coreBindings, templateBindings, ifBindings, componentBindings, { each: foreachBindings.foreach }],\n extenders: {},\n filters,\n options: {\n bindingGlobals: defaultOptions.global,\n bindingStringPreparsers: [functionRewrite]\n }\n})\n\nconst version = BUILD_VERSION\nexport default builder.create({\n version,\n components,\n Component: components.ComponentABC,\n expressionRewriting\n})\n"],
5
+ "mappings": ";;AAAA,SAAS,eAAe;AAExB,SAAS,uBAAuB;AAChC,SAAS,wBAAwB;AACjC,SAAS,yBAAyB;AAClC,SAAS,yBAAyB;AAClC,SAAS,qBAAqB;AAE9B,SAAS,YAAY,oBAAoB;AACzC,SAAS,YAAY,wBAAwB;AAC7C,SAAS,YAAY,kBAAkB;AACvC,SAAS,YAAY,uBAAuB;AAC5C,SAAS,YAAY,yBAAyB;AAE9C,SAAS,eAAe;AAExB,OAAO,gBAAgB;AAEvB,SAAS,uBAAuB;AAEhC,SAAS,WAAW,sBAAsB;AAQ1C,MAAM,mBAAmB,IAAI,iBAAiB;AAC9C,MAAM,sBAAsB;AAAA,EAC1B,oBAAoB,OAAK,iBAAiB,mBAAmB,CAAC;AAChE;AAEA,MAAM,WAAW,IAAI,cAAc;AAAA,EACjC,WAAW,CAAC,IAAI,kBAAkB,GAAG,kBAAkB,IAAI,gBAAgB,GAAG,IAAI,kBAAkB,CAAC;AACvG,CAAC;AAED,MAAM,UAAU,IAAI,QAAQ;AAAA,EAC1B;AAAA,EACA,UAAU,CAAC,cAAc,kBAAkB,YAAY,mBAAmB,EAAE,MAAM,gBAAgB,QAAQ,CAAC;AAAA,EAC3G,WAAW,CAAC;AAAA,EACZ;AAAA,EACA,SAAS;AAAA,IACP,gBAAgB,eAAe;AAAA,IAC/B,yBAAyB,CAAC,eAAe;AAAA,EAC3C;AACF,CAAC;AAED,MAAM,UAAU;AAChB,eAAe,QAAQ,OAAO;AAAA,EAC5B;AAAA,EACA;AAAA,EACA,WAAW,WAAW;AAAA,EACtB;AACF,CAAC;",
6
6
  "names": []
7
7
  }
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- // @tko/build.knockout 🥊 4.0.0 MJS
1
+ // @tko/build.knockout 🥊 4.0.1 MJS
2
2
  "use strict";
3
3
  import { Builder } from "@tko/builder";
4
4
  import { VirtualProvider } from "@tko/provider.virtual";
@@ -19,21 +19,12 @@ const dataBindProvider = new DataBindProvider();
19
19
  const expressionRewriting = {
20
20
  preProcessBindings: (s) => dataBindProvider.preProcessBindings(s)
21
21
  };
22
- const provider = new MultiProvider({ providers: [
23
- new ComponentProvider(),
24
- dataBindProvider,
25
- new VirtualProvider(),
26
- new AttributeProvider()
27
- ] });
22
+ const provider = new MultiProvider({
23
+ providers: [new ComponentProvider(), dataBindProvider, new VirtualProvider(), new AttributeProvider()]
24
+ });
28
25
  const builder = new Builder({
29
26
  provider,
30
- bindings: [
31
- coreBindings,
32
- templateBindings,
33
- ifBindings,
34
- componentBindings,
35
- { each: foreachBindings.foreach }
36
- ],
27
+ bindings: [coreBindings, templateBindings, ifBindings, componentBindings, { each: foreachBindings.foreach }],
37
28
  extenders: {},
38
29
  filters,
39
30
  options: {
@@ -41,7 +32,7 @@ const builder = new Builder({
41
32
  bindingStringPreparsers: [functionRewrite]
42
33
  }
43
34
  });
44
- const version = "4.0.0";
35
+ const version = "4.0.1";
45
36
  export default builder.create({
46
37
  version,
47
38
  components,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/index.ts"],
4
- "sourcesContent": ["import { Builder } from '@tko/builder'\n\nimport { VirtualProvider } from '@tko/provider.virtual'\nimport { DataBindProvider } from '@tko/provider.databind'\nimport { ComponentProvider } from '@tko/provider.component'\nimport { AttributeProvider } from '@tko/provider.attr'\nimport { MultiProvider } from '@tko/provider.multi'\n\nimport { bindings as coreBindings } from '@tko/binding.core'\nimport { bindings as templateBindings } from '@tko/binding.template'\nimport { bindings as ifBindings } from '@tko/binding.if'\nimport { bindings as foreachBindings } from '@tko/binding.foreach'\nimport { bindings as componentBindings } from '@tko/binding.component'\n\nimport { filters } from '@tko/filter.punches'\n\nimport components from '@tko/utils.component'\n\nimport { functionRewrite } from '@tko/utils.functionrewrite'\n\nimport { options as defaultOptions } from '@tko/utils'\n\ndeclare const BUILD_VERSION: string\n\n/**\n * expressionRewriting is deprecated in TKO because we have our own JS\n * parser now. This is here only for legacy compatibility.\n */\nconst dataBindProvider = new DataBindProvider()\nconst expressionRewriting = {\n preProcessBindings: s => dataBindProvider.preProcessBindings(s)\n}\n\nconst provider = new MultiProvider({providers: [\n new ComponentProvider(),\n dataBindProvider,\n new VirtualProvider(),\n new AttributeProvider()\n]})\n\nconst builder = new Builder({\n provider,\n bindings: [\n coreBindings,\n templateBindings,\n ifBindings,\n componentBindings,\n { each: foreachBindings.foreach }\n ],\n extenders: {},\n filters,\n options: {\n bindingGlobals: defaultOptions.global,\n bindingStringPreparsers: [functionRewrite]\n }\n})\n\nconst version = BUILD_VERSION\nexport default builder.create({\n version,\n components,\n Component: components.ComponentABC,\n expressionRewriting\n})\n"],
5
- "mappings": ";;AAAA,SAAS,eAAe;AAExB,SAAS,uBAAuB;AAChC,SAAS,wBAAwB;AACjC,SAAS,yBAAyB;AAClC,SAAS,yBAAyB;AAClC,SAAS,qBAAqB;AAE9B,SAAS,YAAY,oBAAoB;AACzC,SAAS,YAAY,wBAAwB;AAC7C,SAAS,YAAY,kBAAkB;AACvC,SAAS,YAAY,uBAAuB;AAC5C,SAAS,YAAY,yBAAyB;AAE9C,SAAS,eAAe;AAExB,OAAO,gBAAgB;AAEvB,SAAS,uBAAuB;AAEhC,SAAS,WAAW,sBAAsB;AAQ1C,MAAM,mBAAmB,IAAI,iBAAiB;AAC9C,MAAM,sBAAsB;AAAA,EAC1B,oBAAoB,OAAK,iBAAiB,mBAAmB,CAAC;AAChE;AAEA,MAAM,WAAW,IAAI,cAAc,EAAC,WAAW;AAAA,EAC7C,IAAI,kBAAkB;AAAA,EACtB;AAAA,EACA,IAAI,gBAAgB;AAAA,EACpB,IAAI,kBAAkB;AACxB,EAAC,CAAC;AAEF,MAAM,UAAU,IAAI,QAAQ;AAAA,EAC1B;AAAA,EACA,UAAU;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,EAAE,MAAM,gBAAgB,QAAQ;AAAA,EAClC;AAAA,EACA,WAAW,CAAC;AAAA,EACZ;AAAA,EACA,SAAS;AAAA,IACP,gBAAgB,eAAe;AAAA,IAC/B,yBAAyB,CAAC,eAAe;AAAA,EAC3C;AACF,CAAC;AAED,MAAM,UAAU;AAChB,eAAe,QAAQ,OAAO;AAAA,EAC5B;AAAA,EACA;AAAA,EACA,WAAW,WAAW;AAAA,EACtB;AACF,CAAC;",
4
+ "sourcesContent": ["import { Builder } from '@tko/builder'\n\nimport { VirtualProvider } from '@tko/provider.virtual'\nimport { DataBindProvider } from '@tko/provider.databind'\nimport { ComponentProvider } from '@tko/provider.component'\nimport { AttributeProvider } from '@tko/provider.attr'\nimport { MultiProvider } from '@tko/provider.multi'\n\nimport { bindings as coreBindings } from '@tko/binding.core'\nimport { bindings as templateBindings } from '@tko/binding.template'\nimport { bindings as ifBindings } from '@tko/binding.if'\nimport { bindings as foreachBindings } from '@tko/binding.foreach'\nimport { bindings as componentBindings } from '@tko/binding.component'\n\nimport { filters } from '@tko/filter.punches'\n\nimport components from '@tko/utils.component'\n\nimport { functionRewrite } from '@tko/utils.functionrewrite'\n\nimport { options as defaultOptions } from '@tko/utils'\n\ndeclare const BUILD_VERSION: string\n\n/**\n * expressionRewriting is deprecated in TKO because we have our own JS\n * parser now. This is here only for legacy compatibility.\n */\nconst dataBindProvider = new DataBindProvider()\nconst expressionRewriting = {\n preProcessBindings: s => dataBindProvider.preProcessBindings(s)\n}\n\nconst provider = new MultiProvider({\n providers: [new ComponentProvider(), dataBindProvider, new VirtualProvider(), new AttributeProvider()]\n})\n\nconst builder = new Builder({\n provider,\n bindings: [coreBindings, templateBindings, ifBindings, componentBindings, { each: foreachBindings.foreach }],\n extenders: {},\n filters,\n options: {\n bindingGlobals: defaultOptions.global,\n bindingStringPreparsers: [functionRewrite]\n }\n})\n\nconst version = BUILD_VERSION\nexport default builder.create({\n version,\n components,\n Component: components.ComponentABC,\n expressionRewriting\n})\n"],
5
+ "mappings": ";;AAAA,SAAS,eAAe;AAExB,SAAS,uBAAuB;AAChC,SAAS,wBAAwB;AACjC,SAAS,yBAAyB;AAClC,SAAS,yBAAyB;AAClC,SAAS,qBAAqB;AAE9B,SAAS,YAAY,oBAAoB;AACzC,SAAS,YAAY,wBAAwB;AAC7C,SAAS,YAAY,kBAAkB;AACvC,SAAS,YAAY,uBAAuB;AAC5C,SAAS,YAAY,yBAAyB;AAE9C,SAAS,eAAe;AAExB,OAAO,gBAAgB;AAEvB,SAAS,uBAAuB;AAEhC,SAAS,WAAW,sBAAsB;AAQ1C,MAAM,mBAAmB,IAAI,iBAAiB;AAC9C,MAAM,sBAAsB;AAAA,EAC1B,oBAAoB,OAAK,iBAAiB,mBAAmB,CAAC;AAChE;AAEA,MAAM,WAAW,IAAI,cAAc;AAAA,EACjC,WAAW,CAAC,IAAI,kBAAkB,GAAG,kBAAkB,IAAI,gBAAgB,GAAG,IAAI,kBAAkB,CAAC;AACvG,CAAC;AAED,MAAM,UAAU,IAAI,QAAQ;AAAA,EAC1B;AAAA,EACA,UAAU,CAAC,cAAc,kBAAkB,YAAY,mBAAmB,EAAE,MAAM,gBAAgB,QAAQ,CAAC;AAAA,EAC3G,WAAW,CAAC;AAAA,EACZ;AAAA,EACA,SAAS;AAAA,IACP,gBAAgB,eAAe;AAAA,IAC/B,yBAAyB,CAAC,eAAe;AAAA,EAC3C;AACF,CAAC;AAED,MAAM,UAAU;AAChB,eAAe,QAAQ,OAAO;AAAA,EAC5B;AAAA,EACA;AAAA,EACA,WAAW,WAAW;AAAA,EACtB;AACF,CAAC;",
6
6
  "names": []
7
7
  }
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "4.0.0",
2
+ "version": "4.0.1",
3
3
  "name": "@tko/build.knockout",
4
4
  "description": "Knockout makes it easier to create rich, responsive UIs with JavaScript",
5
5
  "homepage": "https://tko.io",
@@ -26,19 +26,8 @@
26
26
  ]
27
27
  },
28
28
  "files": [
29
- "dist/",
30
- "helpers/"
29
+ "dist/"
31
30
  ],
32
- "karma": {
33
- "frameworks": [
34
- "jasmine"
35
- ],
36
- "files": [
37
- "dist/browser.min.js",
38
- "helpers/jasmine.extensions.js",
39
- "spec/**/*.js"
40
- ]
41
- },
42
31
  "licenses": [
43
32
  {
44
33
  "type": "MIT",
@@ -46,28 +35,34 @@
46
35
  }
47
36
  ],
48
37
  "dependencies": {
49
- "@tko/binding.component": "^4.0.0",
50
- "@tko/binding.core": "^4.0.0",
51
- "@tko/binding.foreach": "^4.0.0",
52
- "@tko/binding.if": "^4.0.0",
53
- "@tko/binding.template": "^4.0.0",
54
- "@tko/builder": "^4.0.0",
55
- "@tko/filter.punches": "^4.0.0",
56
- "@tko/provider.attr": "^4.0.0",
57
- "@tko/provider.bindingstring": "^4.0.0",
58
- "@tko/provider.component": "^4.0.0",
59
- "@tko/provider.databind": "^4.0.0",
60
- "@tko/provider.multi": "^4.0.0",
61
- "@tko/provider.virtual": "^4.0.0",
62
- "@tko/utils.component": "^4.0.0",
63
- "@tko/utils.functionrewrite": "^4.0.0",
38
+ "@tko/binding.component": "^4.0.1",
39
+ "@tko/binding.core": "^4.0.1",
40
+ "@tko/binding.foreach": "^4.0.1",
41
+ "@tko/binding.if": "^4.0.1",
42
+ "@tko/binding.template": "^4.0.1",
43
+ "@tko/builder": "^4.0.1",
44
+ "@tko/filter.punches": "^4.0.1",
45
+ "@tko/provider.attr": "^4.0.1",
46
+ "@tko/provider.bindingstring": "^4.0.1",
47
+ "@tko/provider.component": "^4.0.1",
48
+ "@tko/provider.databind": "^4.0.1",
49
+ "@tko/provider.multi": "^4.0.1",
50
+ "@tko/provider.virtual": "^4.0.1",
51
+ "@tko/utils.component": "^4.0.1",
52
+ "@tko/utils.functionrewrite": "^4.0.1",
64
53
  "tslib": "^2.2.0"
65
54
  },
66
55
  "exports": {
67
56
  ".": {
68
57
  "require": "./dist/index.cjs",
69
58
  "import": "./dist/index.mjs"
70
- },
71
- "./helpers/*": "./helpers/*"
59
+ }
60
+ },
61
+ "tko": {
62
+ "iifeGlobalName": "ko",
63
+ "buildMode": "browser"
64
+ },
65
+ "scripts": {
66
+ "build": "bun ../../tools/build.ts"
72
67
  }
73
68
  }
@@ -1,209 +0,0 @@
1
- jasmine.getEnv().updateInterval = 500
2
-
3
- jasmine.Clock.mockScheduler = function (callback) {
4
- setTimeout(callback, 0);
5
- };
6
- jasmine.Clock.useMockForTasks = function() {
7
- jasmine.Clock.useMock();
8
-
9
- // Make sure ko.tasks is using setTimeout so that it uses the mock clock
10
- if (ko.options.taskScheduler != jasmine.Clock.mockScheduler) {
11
- jasmine.getEnv().currentSpec.restoreAfter(ko.options, 'taskScheduler');
12
- ko.options.taskScheduler = jasmine.Clock.mockScheduler;
13
- }
14
- };
15
-
16
- jasmine.Spec.prototype.restoreAfter = function(object, propertyName) {
17
- var originalValue = object[propertyName];
18
- this.after(function() {
19
- object[propertyName] = originalValue;
20
- });
21
- };
22
-
23
- jasmine.Matchers.prototype.toEqualOneOf = function (expectedPossibilities) {
24
- for (var i = 0; i < expectedPossibilities.length; i++) {
25
- if (this.env.equals_(this.actual, expectedPossibilities[i])) {
26
- return true;
27
- }
28
- }
29
- return false;
30
- };
31
-
32
- jasmine.Matchers.prototype.toContainHtml = function (expectedHtml, postProcessCleanedHtml) {
33
- var cleanedHtml = this.actual.innerHTML.toLowerCase().replace(/\r\n/g, "");
34
- // IE < 9 strips whitespace immediately following comment nodes. Normalize by doing the same on all browsers.
35
- cleanedHtml = cleanedHtml.replace(/(<!--.*?-->)\s*/g, "$1");
36
- expectedHtml = expectedHtml.replace(/(<!--.*?-->)\s*/g, "$1");
37
- // Also remove __ko__ expando properties (for DOM data) - most browsers hide these anyway but IE < 9 includes them in innerHTML
38
- cleanedHtml = cleanedHtml.replace(/ __ko__\d+=\"(ko\d+|null)\"/g, "");
39
- if (postProcessCleanedHtml) {
40
- cleanedHtml = postProcessCleanedHtml(cleanedHtml);
41
- }
42
- this.actual = cleanedHtml; // Fix explanatory message
43
- return cleanedHtml === expectedHtml;
44
- };
45
-
46
- jasmine.nodeText = function(node) {
47
- return node.nodeType === Node.TEXT_NODE ? node.data : 'textContent' in node ? node.textContent : node.innerText;
48
- }
49
-
50
- jasmine.Matchers.prototype.toContainText = function (expectedText, ignoreSpaces) {
51
- if (ignoreSpaces) {
52
- expectedText = expectedText.replace(/\s/g, "");
53
- }
54
-
55
- var actualText = jasmine.nodeText(this.actual);
56
- var cleanedActualText = actualText.replace(/\r\n/g, "\n");
57
- if (ignoreSpaces) {
58
- cleanedActualText = cleanedActualText.replace(/\s/g, "");
59
- }
60
-
61
- this.actual = cleanedActualText; // Fix explanatory message
62
- return cleanedActualText === expectedText;
63
- };
64
-
65
- jasmine.Matchers.prototype.toHaveOwnProperties = function (expectedProperties) {
66
- var ownProperties = [];
67
- for (var prop in this.actual) {
68
- if (this.actual.hasOwnProperty(prop)) {
69
- ownProperties.push(prop);
70
- }
71
- }
72
- return this.env.equals_(ownProperties, expectedProperties);
73
- };
74
-
75
- jasmine.Matchers.prototype.toHaveTexts = function (expectedTexts) {
76
- var texts = ko.utils.arrayMap(this.actual.childNodes, jasmine.nodeText);
77
- this.actual = texts; // Fix explanatory message
78
- return this.env.equals_(texts, expectedTexts);
79
- };
80
-
81
- jasmine.Matchers.prototype.toHaveValues = function (expectedValues) {
82
- var values = ko.utils.arrayFilter(ko.utils.arrayMap(this.actual.childNodes, function (node) { return node.value; }), function (value) { return value !== undefined; });
83
- this.actual = values; // Fix explanatory message
84
- return this.env.equals_(values, expectedValues);
85
- };
86
-
87
- jasmine.Matchers.prototype.toHaveCheckedStates = function (expectedValues) {
88
- var values = ko.utils.arrayMap(this.actual.childNodes, function (node) { return node.checked; });
89
- this.actual = values; // Fix explanatory message
90
- return this.env.equals_(values, expectedValues);
91
- };
92
-
93
- jasmine.Matchers.prototype.toHaveSelectedValues = function (expectedValues) {
94
- var selectedNodes = ko.utils.arrayFilter(this.actual.childNodes, function (node) { return node.selected; }),
95
- selectedValues = ko.utils.arrayMap(selectedNodes, function (node) { return ko.selectExtensions.readValue(node); });
96
- this.actual = selectedValues; // Fix explanatory message
97
- return this.env.equals_(selectedValues, expectedValues);
98
- };
99
-
100
- jasmine.Matchers.prototype.toThrowContaining = function(expected) {
101
- var exception;
102
- try {
103
- this.actual();
104
- } catch (e) {
105
- exception = e;
106
- }
107
- var exceptionMessage = exception && (exception.message || exception);
108
-
109
- this.message = function () {
110
- var notText = this.isNot ? " not" : "";
111
- var expectation = "Expected " + this.actual.toString() + notText + " to throw exception containing '" + expected + "'";
112
- var result = exception ? (", but it threw '" + exceptionMessage + "'") : ", but it did not throw anything";
113
- return expectation + result;
114
- }
115
-
116
- return exception ? this.env.contains_(exceptionMessage, expected) : false;
117
- };
118
-
119
- jasmine.addScriptReference = function(scriptUrl) {
120
- if (window.console)
121
- console.log("Loading " + scriptUrl + "...");
122
- document.write("<scr" + "ipt type='text/javascript' src='" + scriptUrl + "'></sc" + "ript>");
123
- };
124
-
125
- jasmine.prepareTestNode = function() {
126
- // The bindings specs make frequent use of this utility function to set up
127
- // a clean new DOM node they can execute code against
128
- var existingNode = document.getElementById("testNode");
129
- if (existingNode != null)
130
- existingNode.parentNode.removeChild(existingNode);
131
- jasmine.getGlobal().testNode = document.createElement("div");
132
- testNode.id = "testNode";
133
- document.body.appendChild(testNode);
134
- };
135
-
136
- // Note that, since IE 10 does not support conditional comments, the following logic only detects IE < 10.
137
- // Currently this is by design, since IE 10+ behaves correctly when treated as a standard browser.
138
- // If there is a future need to detect specific versions of IE10+, we will amend this.
139
- jasmine.ieVersion = typeof(document) == 'undefined' ? undefined : (function() {
140
- var version = 3, div = document.createElement('div'), iElems = div.getElementsByTagName('i');
141
-
142
- // Keep constructing conditional HTML blocks until we hit one that resolves to an empty fragment
143
- while (
144
- div.innerHTML = '<!--[if gt IE ' + (++version) + ']><i></i><![endif]-->',
145
- iElems[0]
146
- );
147
- return version > 4 ? version : undefined;
148
- }());
149
-
150
- jasmine.browserSupportsProtoAssignment = { __proto__: [] } instanceof Array;
151
-
152
-
153
-
154
- //
155
- // bmh: Monkeypatch so we can catch errors in asynchronous functions.
156
- //
157
- jasmine.FakeTimer.prototype.runFunctionsWithinRange = function(oldMillis, nowMillis) {
158
- var scheduledFunc;
159
- var funcsToRun = [];
160
- for (var timeoutKey in this.scheduledFunctions) {
161
- scheduledFunc = this.scheduledFunctions[timeoutKey];
162
- if (scheduledFunc != jasmine.undefined &&
163
- scheduledFunc.runAtMillis >= oldMillis &&
164
- scheduledFunc.runAtMillis <= nowMillis) {
165
- funcsToRun.push(scheduledFunc);
166
- this.scheduledFunctions[timeoutKey] = jasmine.undefined;
167
- }
168
- }
169
-
170
- if (funcsToRun.length > 0) {
171
- funcsToRun.sort(function(a, b) {
172
- return a.runAtMillis - b.runAtMillis;
173
- });
174
-
175
- for (var i = 0; i < funcsToRun.length; ++i) {
176
- //try { // mbest: Removed so we can catch errors in asynchronous functions
177
- var funcToRun = funcsToRun[i];
178
- this.nowMillis = funcToRun.runAtMillis;
179
- funcToRun.funcToCall();
180
- if (funcToRun.recurring) {
181
- this.scheduleFunction(funcToRun.timeoutKey,
182
- funcToRun.funcToCall,
183
- funcToRun.millis,
184
- true);
185
- }
186
- //} catch(e) {
187
- //}
188
- }
189
- this.runFunctionsWithinRange(oldMillis, nowMillis);
190
- }
191
- };
192
-
193
- beforeEach(function() {
194
- switchJQueryState();
195
- });
196
-
197
- afterEach(function() {
198
- expect(disableJQueryUsage).toEqual(ko.options.disableJQueryUsage);
199
- })
200
-
201
- const KARMA_STRING = '__karma__'
202
- var disableJQueryUsage = true;
203
- function switchJQueryState() {
204
- if (window[KARMA_STRING] && window[KARMA_STRING].config.args.includes('--noJQuery')) {
205
- ko.options.disableJQueryUsage = disableJQueryUsage = true;
206
- } else {
207
- ko.options.disableJQueryUsage = disableJQueryUsage = false;
208
- }
209
- }