@breakside/jskit 2022.49.1 → 2022.52.0
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/Frameworks/DOM.jsframework/Info.json +2 -2
- package/Frameworks/DOM.jsframework/io.breakside.JSKit.DOM-bundle.js +2 -2
- package/Frameworks/FontKit.jsframework/Info.json +2 -2
- package/Frameworks/FontKit.jsframework/io.breakside.JSKit.FontKit-bundle.js +2 -2
- package/Frameworks/Foundation.jsframework/Info.json +2 -2
- package/Frameworks/Foundation.jsframework/JS/Error+JS.js +6 -1
- package/Frameworks/Foundation.jsframework/JS/JSObject.js +5 -4
- package/Frameworks/Foundation.jsframework/JS/JSTextFramesetter.js +1 -1
- package/Frameworks/Foundation.jsframework/JS/Number+JS.js +3 -1
- package/Frameworks/Foundation.jsframework/io.breakside.JSKit.Foundation-bundle.js +2 -2
- package/Frameworks/SecurityKit.jsframework/Info.json +2 -2
- package/Frameworks/SecurityKit.jsframework/JS/SECSign+Node.js +1 -1
- package/Frameworks/SecurityKit.jsframework/io.breakside.JSKit.SecurityKit-bundle.js +2 -2
- package/Info.json +2 -2
- package/Node/HTMLBuilder.js +9 -8
- package/Node/KeyCommand.js +1 -1
- package/Node/KeypairCommand.js +73 -0
- package/Node/io.breakside.jskit-bundle.js +2 -2
- package/Node/jskit +1 -0
- package/Node/main.js +1 -0
- package/Root/Frameworks/APIKit/Info.yaml +1 -1
- package/Root/Frameworks/APIKitTesting/Info.yaml +1 -1
- package/Root/Frameworks/AuthKit/Info.yaml +1 -1
- package/Root/Frameworks/CSSOM/Info.yaml +1 -1
- package/Root/Frameworks/ChartKit/CHBarChart.js +1 -1
- package/Root/Frameworks/ChartKit/CHStackedAreaChart.js +0 -2
- package/Root/Frameworks/ChartKit/CHStackedBarChart.js +0 -2
- package/Root/Frameworks/ChartKit/Info.yaml +1 -1
- package/Root/Frameworks/ConferenceKit/Info.yaml +1 -1
- package/Root/Frameworks/DBKit/Info.yaml +1 -1
- package/Root/Frameworks/DOM/Info.yaml +1 -1
- package/Root/Frameworks/Dispatch/Info.yaml +1 -1
- package/Root/Frameworks/FontKit/Info.yaml +1 -1
- package/Root/Frameworks/Foundation/Error+JS.js +6 -1
- package/Root/Frameworks/Foundation/Info.yaml +1 -1
- package/Root/Frameworks/Foundation/JSObject.js +5 -4
- package/Root/Frameworks/Foundation/JSTextFramesetter.js +1 -1
- package/Root/Frameworks/Foundation/Number+JS.js +3 -1
- package/Root/Frameworks/ImageKit/Info.yaml +1 -1
- package/Root/Frameworks/MediaKit/Info.yaml +1 -1
- package/Root/Frameworks/MediaKitUI/Info.yaml +1 -1
- package/Root/Frameworks/NotificationKit/Info.yaml +1 -1
- package/Root/Frameworks/NotificationKit/NKHTMLUserNotificationCenter.js +2 -2
- package/Root/Frameworks/PDFKit/Info.yaml +1 -1
- package/Root/Frameworks/QRKit/Info.yaml +1 -1
- package/Root/Frameworks/SearchKit/Info.yaml +1 -1
- package/Root/Frameworks/SecurityKit/Info.yaml +1 -1
- package/Root/Frameworks/SecurityKit/SECSign+Node.js +1 -1
- package/Root/Frameworks/ServerKit/Info.yaml +1 -1
- package/Root/Frameworks/ServerKitTesting/Info.yaml +1 -1
- package/Root/Frameworks/TestKit/Info.yaml +1 -1
- package/Root/Frameworks/UIKit/Info.yaml +1 -1
- package/Root/Frameworks/UIKit/UIDevice+HTML.js +29 -18
- package/Root/Frameworks/UIKit/UIDevice.js +15 -1
- package/Root/Frameworks/UIKit/UIHTMLApplication.js +36 -21
- package/Root/Frameworks/UIKit/UIListView.js +20 -2
- package/Root/Frameworks/UIKit/UIMenuView.js +1 -0
- package/Root/Frameworks/UIKit/UIScrollGestureRecognizer.js +184 -0
- package/Root/Frameworks/UIKit/UIStackView.js +4 -0
- package/Root/Frameworks/UIKit/UIWindow.js +3 -0
- package/Root/Frameworks/UIKitTesting/Info.yaml +1 -1
- package/Root/Templates/html/${PROJECT_NAME}/MainWindow.spec.yaml +2 -4
- package/Root/Templates/html/${PROJECT_NAME}/www/HTMLAppBootstrapper.js +24 -9
- package/Root/Templates/html/${PROJECT_NAME}/www/index.html +45 -30
- package/Root/Templates/html/${PROJECT_NAME}/www/service-worker.js +6 -5
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"JSBundleType": "framework",
|
|
3
3
|
"JSBundleIdentifier": "io.breakside.JSKit.DOM",
|
|
4
|
-
"JSBundleVersion": "2022.
|
|
4
|
+
"JSBundleVersion": "2022.52.0",
|
|
5
5
|
"JSDevelopmentLanguage": "en",
|
|
6
6
|
"JSCopyright": "Copyright © 2020 Breakside Inc.",
|
|
7
7
|
"JSBundleEnvironments": {
|
|
@@ -9,5 +9,5 @@
|
|
|
9
9
|
"node": "DOM+Node.js"
|
|
10
10
|
},
|
|
11
11
|
"JSLicenseNotice": "Licensed under the Breakside Public License, Version 1.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nIf a copy of the License was not distributed with this file, you may\nobtain a copy at\n\n http://breakside.io/licenses/LICENSE-1.0.txt\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n",
|
|
12
|
-
"GitRevision": "
|
|
12
|
+
"GitRevision": "3213efb27c72a7671fd5594e83d81a41f9979a0a"
|
|
13
13
|
}
|
|
@@ -3,7 +3,7 @@ JSBundle.bundles['io.breakside.JSKit.DOM'] = {
|
|
|
3
3
|
"Info": {
|
|
4
4
|
"JSBundleType": "framework",
|
|
5
5
|
"JSBundleIdentifier": "io.breakside.JSKit.DOM",
|
|
6
|
-
"JSBundleVersion": "2022.
|
|
6
|
+
"JSBundleVersion": "2022.52.0",
|
|
7
7
|
"JSDevelopmentLanguage": "en",
|
|
8
8
|
"JSCopyright": "Copyright © 2020 Breakside Inc.",
|
|
9
9
|
"JSBundleEnvironments": {
|
|
@@ -11,7 +11,7 @@ JSBundle.bundles['io.breakside.JSKit.DOM'] = {
|
|
|
11
11
|
"node": "DOM+Node.js"
|
|
12
12
|
},
|
|
13
13
|
"JSLicenseNotice": "Licensed under the Breakside Public License, Version 1.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nIf a copy of the License was not distributed with this file, you may\nobtain a copy at\n\n http://breakside.io/licenses/LICENSE-1.0.txt\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n",
|
|
14
|
-
"GitRevision": "
|
|
14
|
+
"GitRevision": "3213efb27c72a7671fd5594e83d81a41f9979a0a"
|
|
15
15
|
},
|
|
16
16
|
"Resources": [],
|
|
17
17
|
"ResourceLookup": {
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"JSBundleType": "framework",
|
|
3
3
|
"JSBundleIdentifier": "io.breakside.JSKit.FontKit",
|
|
4
|
-
"JSBundleVersion": "2022.
|
|
4
|
+
"JSBundleVersion": "2022.52.0",
|
|
5
5
|
"JSDevelopmentLanguage": "en",
|
|
6
6
|
"JSCopyright": "Copyright © 2020 Breakside Inc.",
|
|
7
7
|
"JSBundleEnvironments": {
|
|
8
8
|
"html": "FontKit+HTML.js"
|
|
9
9
|
},
|
|
10
10
|
"JSLicenseNotice": "Licensed under the Breakside Public License, Version 1.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nIf a copy of the License was not distributed with this file, you may\nobtain a copy at\n\n http://breakside.io/licenses/LICENSE-1.0.txt\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n",
|
|
11
|
-
"GitRevision": "
|
|
11
|
+
"GitRevision": "3213efb27c72a7671fd5594e83d81a41f9979a0a"
|
|
12
12
|
}
|
|
@@ -3,14 +3,14 @@ JSBundle.bundles['io.breakside.JSKit.FontKit'] = {
|
|
|
3
3
|
"Info": {
|
|
4
4
|
"JSBundleType": "framework",
|
|
5
5
|
"JSBundleIdentifier": "io.breakside.JSKit.FontKit",
|
|
6
|
-
"JSBundleVersion": "2022.
|
|
6
|
+
"JSBundleVersion": "2022.52.0",
|
|
7
7
|
"JSDevelopmentLanguage": "en",
|
|
8
8
|
"JSCopyright": "Copyright © 2020 Breakside Inc.",
|
|
9
9
|
"JSBundleEnvironments": {
|
|
10
10
|
"html": "FontKit+HTML.js"
|
|
11
11
|
},
|
|
12
12
|
"JSLicenseNotice": "Licensed under the Breakside Public License, Version 1.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nIf a copy of the License was not distributed with this file, you may\nobtain a copy at\n\n http://breakside.io/licenses/LICENSE-1.0.txt\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n",
|
|
13
|
-
"GitRevision": "
|
|
13
|
+
"GitRevision": "3213efb27c72a7671fd5594e83d81a41f9979a0a"
|
|
14
14
|
},
|
|
15
15
|
"Resources": [],
|
|
16
16
|
"ResourceLookup": {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"JSBundleType": "framework",
|
|
3
3
|
"JSBundleIdentifier": "io.breakside.JSKit.Foundation",
|
|
4
|
-
"JSBundleVersion": "2022.
|
|
4
|
+
"JSBundleVersion": "2022.52.0",
|
|
5
5
|
"JSDevelopmentLanguage": "en",
|
|
6
6
|
"JSCopyright": "Copyright © 2020 Breakside Inc.",
|
|
7
7
|
"JSBundleEnvironments": {
|
|
@@ -9,5 +9,5 @@
|
|
|
9
9
|
"node": "Foundation+Node.js"
|
|
10
10
|
},
|
|
11
11
|
"JSLicenseNotice": "Licensed under the Breakside Public License, Version 1.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nIf a copy of the License was not distributed with this file, you may\nobtain a copy at\n\n http://breakside.io/licenses/LICENSE-1.0.txt\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n",
|
|
12
|
-
"GitRevision": "
|
|
12
|
+
"GitRevision": "3213efb27c72a7671fd5594e83d81a41f9979a0a"
|
|
13
13
|
}
|
|
@@ -75,16 +75,21 @@ var patterns = [chromeLikePattern, chromeMethodlessPattern, firefoxLikePattern,
|
|
|
75
75
|
var frameFromLine = function(line){
|
|
76
76
|
var matches;
|
|
77
77
|
var pattern;
|
|
78
|
+
var frame;
|
|
78
79
|
for (var i = 0, l = patterns.length; i < l; ++i){
|
|
79
80
|
pattern = patterns[i];
|
|
80
81
|
matches = line.match(pattern.regex);
|
|
81
82
|
if (matches){
|
|
82
|
-
|
|
83
|
+
frame = {
|
|
83
84
|
method: pattern.groups.method > 0 ? matches[pattern.groups.method] : '',
|
|
84
85
|
filename: matches[pattern.groups.filename],
|
|
85
86
|
lineno: parseInt(matches[pattern.groups.lineno]),
|
|
86
87
|
colno: parseInt(matches[pattern.groups.colno])
|
|
87
88
|
};
|
|
89
|
+
if (frame.filename && frame.filename[0] == "@"){
|
|
90
|
+
frame.filename = frame.filename.substr(1);
|
|
91
|
+
}
|
|
92
|
+
return frame;
|
|
88
93
|
}
|
|
89
94
|
}
|
|
90
95
|
};
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
|
|
16
16
|
// #import "JSClass.js"
|
|
17
17
|
// #import "JSValueTransformer.js"
|
|
18
|
+
// #import "Number+JS.js"
|
|
18
19
|
/* global JSSpec */
|
|
19
20
|
'use strict';
|
|
20
21
|
|
|
@@ -156,21 +157,21 @@ JSObject.definePropertiesFromExtensions({
|
|
|
156
157
|
this._updateValueForBinding(context.binding);
|
|
157
158
|
}else if (change.type == JSObject.KeyValueChange.Insertion){
|
|
158
159
|
key = bindingInfo.binding;
|
|
159
|
-
change.indexes.sort();
|
|
160
|
+
change.indexes.sort(Number.jskitCompare);
|
|
160
161
|
for (i = 0, l = change.indexes.length; i < l; ++i){
|
|
161
162
|
index = change.indexes[i];
|
|
162
163
|
this.silentlyInsertObjectInKeyAtIndex(change.sourceObject.objectInKeyAtIndex(change.sourceKey, index), key, index);
|
|
163
164
|
}
|
|
164
165
|
}else if (change.type == JSObject.KeyValueChange.Removal){
|
|
165
166
|
key = bindingInfo.binding;
|
|
166
|
-
change.indexes.sort();
|
|
167
|
+
change.indexes.sort(Number.jskitCompare);
|
|
167
168
|
for (i = change.indexes.length - 1; i >= 0; --i){
|
|
168
169
|
index = change.indexes[i];
|
|
169
170
|
this.silentlyRemoveObjectFromKeyAtIndex(key, index);
|
|
170
171
|
}
|
|
171
172
|
}else if (change.type == JSObject.KeyValueChange.Replacement){
|
|
172
173
|
key = bindingInfo.binding;
|
|
173
|
-
change.indexes.sort();
|
|
174
|
+
change.indexes.sort(Number.jskitCompare);
|
|
174
175
|
for (i = 0, l = change.indexes.length; i < l; ++i){
|
|
175
176
|
index = change.indexes[i];
|
|
176
177
|
this.silentlyReplaceObjectInKeyAtIndexWithObject(key, index, change.sourceObject.objectInKeyAtIndex(change.sourceKey, index));
|
|
@@ -613,7 +614,7 @@ JSObject.definePropertiesFromExtensions({
|
|
|
613
614
|
targetObject = targetObject.valueForKeyPath(keyParts.join('.'));
|
|
614
615
|
}
|
|
615
616
|
if (targetObject){
|
|
616
|
-
indexes.sort();
|
|
617
|
+
indexes.sort(Number.jskitCompare);
|
|
617
618
|
if (change == JSObject.KeyValueChange.Insertion){
|
|
618
619
|
for (i = 0, l = indexes.length; i < l; ++i){
|
|
619
620
|
index = indexes[i];
|
|
@@ -175,7 +175,7 @@ JSClass("JSTextFramesetter", JSObject, {
|
|
|
175
175
|
attributes: JSReadOnlyProperty("_attributes", null),
|
|
176
176
|
|
|
177
177
|
getAttributes: function(){
|
|
178
|
-
logger.warn("JSTextFramesetter.attributes is deprecated");
|
|
178
|
+
logger.warn("JSTextFramesetter.attributes is deprecated, use JSTextFramesetter.defaultParagraphStyle");
|
|
179
179
|
if (this._attributes === null){
|
|
180
180
|
var framesetter = this;
|
|
181
181
|
this._attributes = Object.create({}, {
|
|
@@ -3,7 +3,7 @@ JSBundle.bundles['io.breakside.JSKit.Foundation'] = {
|
|
|
3
3
|
"Info": {
|
|
4
4
|
"JSBundleType": "framework",
|
|
5
5
|
"JSBundleIdentifier": "io.breakside.JSKit.Foundation",
|
|
6
|
-
"JSBundleVersion": "2022.
|
|
6
|
+
"JSBundleVersion": "2022.52.0",
|
|
7
7
|
"JSDevelopmentLanguage": "en",
|
|
8
8
|
"JSCopyright": "Copyright © 2020 Breakside Inc.",
|
|
9
9
|
"JSBundleEnvironments": {
|
|
@@ -11,7 +11,7 @@ JSBundle.bundles['io.breakside.JSKit.Foundation'] = {
|
|
|
11
11
|
"node": "Foundation+Node.js"
|
|
12
12
|
},
|
|
13
13
|
"JSLicenseNotice": "Licensed under the Breakside Public License, Version 1.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nIf a copy of the License was not distributed with this file, you may\nobtain a copy at\n\n http://breakside.io/licenses/LICENSE-1.0.txt\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n",
|
|
14
|
-
"GitRevision": "
|
|
14
|
+
"GitRevision": "3213efb27c72a7671fd5594e83d81a41f9979a0a"
|
|
15
15
|
},
|
|
16
16
|
"Resources": [
|
|
17
17
|
{
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"JSBundleType": "framework",
|
|
3
3
|
"JSBundleIdentifier": "io.breakside.JSKit.SecurityKit",
|
|
4
|
-
"JSBundleVersion": "2022.
|
|
4
|
+
"JSBundleVersion": "2022.52.0",
|
|
5
5
|
"JSDevelopmentLanguage": "en",
|
|
6
6
|
"JSCopyright": "Copyright © 2020 Breakside Inc.",
|
|
7
7
|
"JSBundleEnvironments": {
|
|
@@ -9,5 +9,5 @@
|
|
|
9
9
|
"node": "SecurityKit+Node.js"
|
|
10
10
|
},
|
|
11
11
|
"JSLicenseNotice": "Licensed under the Breakside Public License, Version 1.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nIf a copy of the License was not distributed with this file, you may\nobtain a copy at\n\n http://breakside.io/licenses/LICENSE-1.0.txt\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n",
|
|
12
|
-
"GitRevision": "
|
|
12
|
+
"GitRevision": "3213efb27c72a7671fd5594e83d81a41f9979a0a"
|
|
13
13
|
}
|
|
@@ -376,7 +376,7 @@ nodeNamedCurves[SECSign.EllipticCurve.p521] = "secp521r1";
|
|
|
376
376
|
var derNamedCurves = {};
|
|
377
377
|
derNamedCurves[SECSign.EllipticCurve.p256] = "1.2.840.10045.3.1.7";
|
|
378
378
|
derNamedCurves[SECSign.EllipticCurve.p384] = "1.3.132.0.34";
|
|
379
|
-
derNamedCurves[SECSign.EllipticCurve.
|
|
379
|
+
derNamedCurves[SECSign.EllipticCurve.p521] = "1.3.132.0.35";
|
|
380
380
|
|
|
381
381
|
var nodeAlgorithms = {};
|
|
382
382
|
nodeAlgorithms[SECSign.Algorithm.rsaSHA256] = {name: 'rsa', hash: 'sha256'};
|
|
@@ -3,7 +3,7 @@ JSBundle.bundles['io.breakside.JSKit.SecurityKit'] = {
|
|
|
3
3
|
"Info": {
|
|
4
4
|
"JSBundleType": "framework",
|
|
5
5
|
"JSBundleIdentifier": "io.breakside.JSKit.SecurityKit",
|
|
6
|
-
"JSBundleVersion": "2022.
|
|
6
|
+
"JSBundleVersion": "2022.52.0",
|
|
7
7
|
"JSDevelopmentLanguage": "en",
|
|
8
8
|
"JSCopyright": "Copyright © 2020 Breakside Inc.",
|
|
9
9
|
"JSBundleEnvironments": {
|
|
@@ -11,7 +11,7 @@ JSBundle.bundles['io.breakside.JSKit.SecurityKit'] = {
|
|
|
11
11
|
"node": "SecurityKit+Node.js"
|
|
12
12
|
},
|
|
13
13
|
"JSLicenseNotice": "Licensed under the Breakside Public License, Version 1.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nIf a copy of the License was not distributed with this file, you may\nobtain a copy at\n\n http://breakside.io/licenses/LICENSE-1.0.txt\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n",
|
|
14
|
-
"GitRevision": "
|
|
14
|
+
"GitRevision": "3213efb27c72a7671fd5594e83d81a41f9979a0a"
|
|
15
15
|
},
|
|
16
16
|
"Resources": [],
|
|
17
17
|
"ResourceLookup": {
|
package/Info.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"JSBundleType": "node",
|
|
3
3
|
"JSBundleIdentifier": "io.breakside.jskit",
|
|
4
|
-
"JSBundleVersion": "2022.
|
|
4
|
+
"JSBundleVersion": "2022.52.0",
|
|
5
5
|
"JSExecutableName": "jskit",
|
|
6
6
|
"NPMOrganization": "breakside",
|
|
7
7
|
"JSResources": [
|
|
8
8
|
"Tests/HTMLTestRunner.js",
|
|
9
9
|
"Tests/NodeTestRunner.js"
|
|
10
10
|
],
|
|
11
|
-
"GitRevision": "
|
|
11
|
+
"GitRevision": "3213efb27c72a7671fd5594e83d81a41f9979a0a"
|
|
12
12
|
}
|
package/Node/HTMLBuilder.js
CHANGED
|
@@ -722,35 +722,36 @@ JSClass("HTMLBuilder", Builder, {
|
|
|
722
722
|
return;
|
|
723
723
|
}
|
|
724
724
|
this.printer.setStatus("Creating service worker...");
|
|
725
|
-
var sources = {'./': {required: true}};
|
|
725
|
+
var sources = {'./': {required: true, cache: "no-store"}};
|
|
726
726
|
for (let i = 0, l = this.wwwPaths.length; i < l; ++i){
|
|
727
|
-
sources[this.wwwPaths[i]] = {required: true};
|
|
727
|
+
sources[this.wwwPaths[i]] = {required: true, cache: "no-store"};
|
|
728
728
|
}
|
|
729
729
|
for (let i = 0, l = this.wwwJavascriptPaths.length; i < l; ++i){
|
|
730
|
-
sources[this.wwwJavascriptPaths[i]] = {required: true};
|
|
730
|
+
sources[this.wwwJavascriptPaths[i]] = {required: true, cache: "no-store"};
|
|
731
731
|
}
|
|
732
732
|
if (this.preflightURL !== null){
|
|
733
733
|
let path = this.preflightURL.encodedStringRelativeTo(this.wwwURL);
|
|
734
|
-
sources[path] = {required: true};
|
|
734
|
+
sources[path] = {required: true, cache: "default"};
|
|
735
735
|
}
|
|
736
736
|
if (this.workerURL !== null && this.hasLinkedDispatchFramework){
|
|
737
737
|
let path = this.workerURL.encodedStringRelativeTo(this.wwwURL);
|
|
738
|
-
sources[path] = {required: true};
|
|
738
|
+
sources[path] = {required: true, cache: "no-store"};
|
|
739
739
|
}
|
|
740
740
|
for (let i = 0, l = this.wwwResourcePaths.length; i < l; ++i){
|
|
741
|
-
sources[this.wwwResourcePaths[i]] = {required: true};
|
|
741
|
+
sources[this.wwwResourcePaths[i]] = {required: true, cache: "default"};
|
|
742
742
|
}
|
|
743
743
|
for (let i = 0, l = this.wwwCSSPaths.length; i < l; ++i){
|
|
744
|
-
sources[this.wwwCSSPaths[i]] = {required: true};
|
|
744
|
+
sources[this.wwwCSSPaths[i]] = {required: true, cache: "no-store"};
|
|
745
745
|
}
|
|
746
746
|
for (let i = 0, l = this.uncachedWWWPaths.length; i < l; ++i){
|
|
747
|
-
sources[this.uncachedWWWPaths[i]] = {required: false};
|
|
747
|
+
sources[this.uncachedWWWPaths[i]] = {required: false, cache: "default"};
|
|
748
748
|
}
|
|
749
749
|
var params = {
|
|
750
750
|
JSKIT_APP: JSON.stringify({
|
|
751
751
|
buildId: this.buildId,
|
|
752
752
|
environment: this.project.info.HTMLApplicationEnvironment,
|
|
753
753
|
sources: sources,
|
|
754
|
+
debug: this.debug
|
|
754
755
|
}, null, 2)
|
|
755
756
|
};
|
|
756
757
|
var workerConents = await this.fileManager.contentsAtURL(this.serviceWorkerSourceURL);
|
package/Node/KeyCommand.js
CHANGED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
// Copyright 2020 Breakside Inc.
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Breakside Public License, Version 1.0 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// If a copy of the License was not distributed with this file, you may
|
|
6
|
+
// obtain a copy at
|
|
7
|
+
//
|
|
8
|
+
// http://breakside.io/licenses/LICENSE-1.0.txt
|
|
9
|
+
//
|
|
10
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
// See the License for the specific language governing permissions and
|
|
14
|
+
// limitations under the License.
|
|
15
|
+
|
|
16
|
+
// #import "Command.js"
|
|
17
|
+
// #import "Printer.js"
|
|
18
|
+
// #import SecurityKit
|
|
19
|
+
'use strict';
|
|
20
|
+
|
|
21
|
+
JSClass("KeypairCommand", Command, {
|
|
22
|
+
|
|
23
|
+
name: "keypair",
|
|
24
|
+
help: "Create an asymmetric encryption key pair",
|
|
25
|
+
|
|
26
|
+
options: {
|
|
27
|
+
format: {default: "pem", help: "The format for the key", allowed: ["jwk", "pem"]},
|
|
28
|
+
algorithm: {default: "ecdh", help: "The encryption algorithm to use", allowed: ["ecdh", "rsa"]},
|
|
29
|
+
bits: {default: 512, valueType: "integer", allowed: [256, 384, 512], help: "The bit length of the key data"}
|
|
30
|
+
},
|
|
31
|
+
|
|
32
|
+
run: async function(){
|
|
33
|
+
var workspaceURL = this.workingDirectoryURL;
|
|
34
|
+
var printer = Printer.initWithLabel('key');
|
|
35
|
+
var algorithm;
|
|
36
|
+
switch (this.arguments.algorithm){
|
|
37
|
+
case "ecdh":
|
|
38
|
+
switch (this.arguments.bits){
|
|
39
|
+
case 256: algorithm = SECSign.Algorithm.ellipticCurveSHA256; break;
|
|
40
|
+
case 384: algorithm = SECSign.Algorithm.ellipticCurveSHA384; break;
|
|
41
|
+
case 512: algorithm = SECSign.Algorithm.ellipticCurveSHA512; break;
|
|
42
|
+
default: throw new Error("Unsupported algorithm/bits combination");
|
|
43
|
+
}
|
|
44
|
+
break;
|
|
45
|
+
case "rsa":
|
|
46
|
+
switch (this.arguments.bits){
|
|
47
|
+
case 256: algorithm = SECSign.Algorithm.rsaSHA256; break;
|
|
48
|
+
case 384: algorithm = SECSign.Algorithm.rsaSHA384; break;
|
|
49
|
+
case 512: algorithm = SECSign.Algorithm.rsaSHA512; break;
|
|
50
|
+
default: throw new Error("Unsupported algorithm/bits combination");
|
|
51
|
+
}
|
|
52
|
+
break;
|
|
53
|
+
default:
|
|
54
|
+
throw new Error("Unsupported algorithm/bits combination");
|
|
55
|
+
}
|
|
56
|
+
var sign = SECSign.initWithAlgorithm(algorithm);
|
|
57
|
+
var pair;
|
|
58
|
+
if (this.arguments.format === "jwk"){
|
|
59
|
+
pair = await sign.createJWKPair({});
|
|
60
|
+
printer.print("public: %s\n".sprintf(JSON.stringify(pair.public).utf8().base64URLStringRepresentation()));
|
|
61
|
+
printer.print("private: %s\n".sprintf(JSON.stringify(pair.private).utf8().base64URLStringRepresentation()));
|
|
62
|
+
}else if (this.arguments.format === "pem"){
|
|
63
|
+
pair = await sign.createKeyPair({});
|
|
64
|
+
var data = await pair.public.getData();
|
|
65
|
+
printer.print(data.stringByDecodingUTF8());
|
|
66
|
+
printer.print("\n");
|
|
67
|
+
data = await pair.private.getData();
|
|
68
|
+
printer.print(data.stringByDecodingUTF8());
|
|
69
|
+
printer.print("\n");
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
|
|
73
|
+
});
|
|
@@ -3,14 +3,14 @@ JSBundle.bundles['io.breakside.jskit'] = {
|
|
|
3
3
|
"Info": {
|
|
4
4
|
"JSBundleType": "node",
|
|
5
5
|
"JSBundleIdentifier": "io.breakside.jskit",
|
|
6
|
-
"JSBundleVersion": "2022.
|
|
6
|
+
"JSBundleVersion": "2022.52.0",
|
|
7
7
|
"JSExecutableName": "jskit",
|
|
8
8
|
"NPMOrganization": "breakside",
|
|
9
9
|
"JSResources": [
|
|
10
10
|
"Tests/HTMLTestRunner.js",
|
|
11
11
|
"Tests/NodeTestRunner.js"
|
|
12
12
|
],
|
|
13
|
-
"GitRevision": "
|
|
13
|
+
"GitRevision": "3213efb27c72a7671fd5594e83d81a41f9979a0a"
|
|
14
14
|
},
|
|
15
15
|
"Resources": [
|
|
16
16
|
{
|
package/Node/jskit
CHANGED
package/Node/main.js
CHANGED
|
@@ -21,7 +21,7 @@ JSClass("CHBarChart", CHCategoryChart, {
|
|
|
21
21
|
|
|
22
22
|
initWithTheme: function(theme){
|
|
23
23
|
CHBarChart.$super.initWithTheme.call(this, theme);
|
|
24
|
-
this.categoryAxis.labelPosition = CHAxisStyle.LabelPosition.betweenTickMarks;
|
|
24
|
+
this.categoryAxis.style.labelPosition = CHAxisStyle.LabelPosition.betweenTickMarks;
|
|
25
25
|
this.defaultSeriesStyle = theme.barStyle.styleWithColor(null);
|
|
26
26
|
},
|
|
27
27
|
|
|
@@ -75,16 +75,21 @@ var patterns = [chromeLikePattern, chromeMethodlessPattern, firefoxLikePattern,
|
|
|
75
75
|
var frameFromLine = function(line){
|
|
76
76
|
var matches;
|
|
77
77
|
var pattern;
|
|
78
|
+
var frame;
|
|
78
79
|
for (var i = 0, l = patterns.length; i < l; ++i){
|
|
79
80
|
pattern = patterns[i];
|
|
80
81
|
matches = line.match(pattern.regex);
|
|
81
82
|
if (matches){
|
|
82
|
-
|
|
83
|
+
frame = {
|
|
83
84
|
method: pattern.groups.method > 0 ? matches[pattern.groups.method] : '',
|
|
84
85
|
filename: matches[pattern.groups.filename],
|
|
85
86
|
lineno: parseInt(matches[pattern.groups.lineno]),
|
|
86
87
|
colno: parseInt(matches[pattern.groups.colno])
|
|
87
88
|
};
|
|
89
|
+
if (frame.filename && frame.filename[0] == "@"){
|
|
90
|
+
frame.filename = frame.filename.substr(1);
|
|
91
|
+
}
|
|
92
|
+
return frame;
|
|
88
93
|
}
|
|
89
94
|
}
|
|
90
95
|
};
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
|
|
16
16
|
// #import "JSClass.js"
|
|
17
17
|
// #import "JSValueTransformer.js"
|
|
18
|
+
// #import "Number+JS.js"
|
|
18
19
|
/* global JSSpec */
|
|
19
20
|
'use strict';
|
|
20
21
|
|
|
@@ -156,21 +157,21 @@ JSObject.definePropertiesFromExtensions({
|
|
|
156
157
|
this._updateValueForBinding(context.binding);
|
|
157
158
|
}else if (change.type == JSObject.KeyValueChange.Insertion){
|
|
158
159
|
key = bindingInfo.binding;
|
|
159
|
-
change.indexes.sort();
|
|
160
|
+
change.indexes.sort(Number.jskitCompare);
|
|
160
161
|
for (i = 0, l = change.indexes.length; i < l; ++i){
|
|
161
162
|
index = change.indexes[i];
|
|
162
163
|
this.silentlyInsertObjectInKeyAtIndex(change.sourceObject.objectInKeyAtIndex(change.sourceKey, index), key, index);
|
|
163
164
|
}
|
|
164
165
|
}else if (change.type == JSObject.KeyValueChange.Removal){
|
|
165
166
|
key = bindingInfo.binding;
|
|
166
|
-
change.indexes.sort();
|
|
167
|
+
change.indexes.sort(Number.jskitCompare);
|
|
167
168
|
for (i = change.indexes.length - 1; i >= 0; --i){
|
|
168
169
|
index = change.indexes[i];
|
|
169
170
|
this.silentlyRemoveObjectFromKeyAtIndex(key, index);
|
|
170
171
|
}
|
|
171
172
|
}else if (change.type == JSObject.KeyValueChange.Replacement){
|
|
172
173
|
key = bindingInfo.binding;
|
|
173
|
-
change.indexes.sort();
|
|
174
|
+
change.indexes.sort(Number.jskitCompare);
|
|
174
175
|
for (i = 0, l = change.indexes.length; i < l; ++i){
|
|
175
176
|
index = change.indexes[i];
|
|
176
177
|
this.silentlyReplaceObjectInKeyAtIndexWithObject(key, index, change.sourceObject.objectInKeyAtIndex(change.sourceKey, index));
|
|
@@ -613,7 +614,7 @@ JSObject.definePropertiesFromExtensions({
|
|
|
613
614
|
targetObject = targetObject.valueForKeyPath(keyParts.join('.'));
|
|
614
615
|
}
|
|
615
616
|
if (targetObject){
|
|
616
|
-
indexes.sort();
|
|
617
|
+
indexes.sort(Number.jskitCompare);
|
|
617
618
|
if (change == JSObject.KeyValueChange.Insertion){
|
|
618
619
|
for (i = 0, l = indexes.length; i < l; ++i){
|
|
619
620
|
index = indexes[i];
|
|
@@ -175,7 +175,7 @@ JSClass("JSTextFramesetter", JSObject, {
|
|
|
175
175
|
attributes: JSReadOnlyProperty("_attributes", null),
|
|
176
176
|
|
|
177
177
|
getAttributes: function(){
|
|
178
|
-
logger.warn("JSTextFramesetter.attributes is deprecated");
|
|
178
|
+
logger.warn("JSTextFramesetter.attributes is deprecated, use JSTextFramesetter.defaultParagraphStyle");
|
|
179
179
|
if (this._attributes === null){
|
|
180
180
|
var framesetter = this;
|
|
181
181
|
this._attributes = Object.create({}, {
|