unpoly-rails 2.7.2.2 → 3.0.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +96 -52
- data/assets/unpoly/unpoly-bootstrap3.js +10 -8
- data/assets/unpoly/unpoly-bootstrap3.min.js +1 -1
- data/assets/unpoly/unpoly-bootstrap4.js +10 -8
- data/assets/unpoly/unpoly-bootstrap4.min.js +1 -1
- data/assets/unpoly/unpoly-bootstrap5.js +9 -7
- data/assets/unpoly/unpoly-bootstrap5.min.js +1 -1
- data/assets/unpoly/unpoly-migrate.js +448 -350
- data/assets/unpoly/unpoly-migrate.min.js +1 -1
- data/assets/unpoly/unpoly.es6.js +223 -337
- data/assets/unpoly/unpoly.es6.min.js +1 -1
- data/assets/unpoly/unpoly.js +3105 -2282
- data/assets/unpoly/unpoly.min.js +1 -1
- data/lib/unpoly/rails/change/cache.rb +14 -2
- data/lib/unpoly/rails/change/field.rb +52 -14
- data/lib/unpoly/rails/change/field_definition.rb +42 -4
- data/lib/unpoly/rails/change/layer.rb +3 -3
- data/lib/unpoly/rails/change.rb +106 -58
- data/lib/unpoly/rails/controller.rb +6 -4
- data/lib/unpoly/rails/engine.rb +1 -1
- data/lib/unpoly/rails/request_echo_headers.rb +2 -6
- data/lib/unpoly/rails/version.rb +1 -1
- data/lib/unpoly-rails.rb +0 -1
- metadata +4 -7
- data/assets/unpoly/unpoly.es5.js +0 -11181
- data/assets/unpoly/unpoly.es5.min.js +0 -1
- data/lib/unpoly/rails/util.rb +0 -25
data/assets/unpoly/unpoly.es6.js
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
/***/ (() => {
|
6
6
|
|
7
7
|
window.up = {
|
8
|
-
version: '3.0.0-
|
8
|
+
version: '3.0.0-rc1'
|
9
9
|
};
|
10
10
|
|
11
11
|
|
@@ -14,18 +14,13 @@ window.up = {
|
|
14
14
|
/***/ (() => {
|
15
15
|
|
16
16
|
up.mockable = function (originalFn) {
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
return mockableFn;
|
25
|
-
}
|
26
|
-
else {
|
27
|
-
return originalFn;
|
28
|
-
}
|
17
|
+
let spy;
|
18
|
+
const mockableFn = function () {
|
19
|
+
return (spy || originalFn).apply(null, arguments);
|
20
|
+
};
|
21
|
+
mockableFn.mock = () => spy = jasmine.createSpy('mockable', originalFn);
|
22
|
+
document.addEventListener('up:framework:reset', () => spy = null);
|
23
|
+
return mockableFn;
|
29
24
|
};
|
30
25
|
|
31
26
|
|
@@ -111,15 +106,15 @@ up.util = (function () {
|
|
111
106
|
return block;
|
112
107
|
}
|
113
108
|
}
|
114
|
-
function map(
|
115
|
-
if (
|
109
|
+
function map(array, block) {
|
110
|
+
if (array.length === 0) {
|
116
111
|
return [];
|
117
112
|
}
|
118
113
|
block = iteratee(block);
|
119
114
|
let mapped = [];
|
120
|
-
let i = 0;
|
121
|
-
|
122
|
-
mapped.push(block(
|
115
|
+
for (let i = 0; i < array.length; i++) {
|
116
|
+
let element = array[i];
|
117
|
+
mapped.push(block(element, i));
|
123
118
|
}
|
124
119
|
return mapped;
|
125
120
|
}
|
@@ -131,9 +126,8 @@ up.util = (function () {
|
|
131
126
|
return map(array, pairer).reduce(merger, {});
|
132
127
|
}
|
133
128
|
function each(array, block) {
|
134
|
-
let i = 0;
|
135
|
-
|
136
|
-
block(item, i++);
|
129
|
+
for (let i = 0; i < array.length; i++) {
|
130
|
+
block(array[i], i);
|
137
131
|
}
|
138
132
|
}
|
139
133
|
function isNull(object) {
|
@@ -310,11 +304,10 @@ up.util = (function () {
|
|
310
304
|
function some(list, tester) {
|
311
305
|
return !!findResult(list, tester);
|
312
306
|
}
|
313
|
-
function findResult(
|
307
|
+
function findResult(array, tester) {
|
314
308
|
tester = iteratee(tester);
|
315
|
-
let i = 0;
|
316
|
-
|
317
|
-
const result = tester(item, i++);
|
309
|
+
for (let i = 0; i < array.length; i++) {
|
310
|
+
const result = tester(array[i], i);
|
318
311
|
if (result) {
|
319
312
|
return result;
|
320
313
|
}
|
@@ -323,9 +316,8 @@ up.util = (function () {
|
|
323
316
|
function every(list, tester) {
|
324
317
|
tester = iteratee(tester);
|
325
318
|
let match = true;
|
326
|
-
let i = 0;
|
327
|
-
|
328
|
-
if (!tester(item, i++)) {
|
319
|
+
for (let i = 0; i < list.length; i++) {
|
320
|
+
if (!tester(list[i], i)) {
|
329
321
|
match = false;
|
330
322
|
break;
|
331
323
|
}
|
@@ -709,14 +701,6 @@ up.util = (function () {
|
|
709
701
|
};
|
710
702
|
}
|
711
703
|
}
|
712
|
-
function safeStringifyJSON(value) {
|
713
|
-
let json = JSON.stringify(value);
|
714
|
-
return escapeHighASCII(json);
|
715
|
-
}
|
716
|
-
function escapeHighASCII(string) {
|
717
|
-
let unicodeEscape = (char) => "\\u" + char.charCodeAt(0).toString(16).padStart(4, '0');
|
718
|
-
return string.replace(/[^\x00-\x7F]/g, unicodeEscape);
|
719
|
-
}
|
720
704
|
return {
|
721
705
|
parseURL,
|
722
706
|
normalizeURL,
|
@@ -812,8 +796,7 @@ up.util = (function () {
|
|
812
796
|
sprintf,
|
813
797
|
renameKeys,
|
814
798
|
negate,
|
815
|
-
memoizeMethod
|
816
|
-
safeStringifyJSON,
|
799
|
+
memoizeMethod
|
817
800
|
};
|
818
801
|
})();
|
819
802
|
|
@@ -888,6 +871,12 @@ up.browser = (function () {
|
|
888
871
|
return value;
|
889
872
|
}
|
890
873
|
}
|
874
|
+
const getJQuery = function () {
|
875
|
+
if (!canJQuery()) {
|
876
|
+
up.fail('jQuery must be published as window.jQuery');
|
877
|
+
}
|
878
|
+
return jQuery;
|
879
|
+
};
|
891
880
|
function assertConfirmed(options) {
|
892
881
|
const confirmed = !options.confirm || window.confirm(options.confirm);
|
893
882
|
if (!confirmed) {
|
@@ -902,6 +891,7 @@ up.browser = (function () {
|
|
902
891
|
canEval,
|
903
892
|
assertConfirmed,
|
904
893
|
popCookie,
|
894
|
+
get jQuery() { return getJQuery(); },
|
905
895
|
};
|
906
896
|
})();
|
907
897
|
|
@@ -1174,17 +1164,9 @@ up.element = (function () {
|
|
1174
1164
|
klass = klass.replace(/:/g, '\\:');
|
1175
1165
|
return `.${klass}`;
|
1176
1166
|
}
|
1177
|
-
function
|
1167
|
+
function createDocumentFromHTML(html) {
|
1178
1168
|
return new DOMParser().parseFromString(html, 'text/html');
|
1179
1169
|
}
|
1180
|
-
function fixScriptish(scriptish) {
|
1181
|
-
let clone = document.createElement(scriptish.tagName);
|
1182
|
-
for (let { name, value } of scriptish.attributes) {
|
1183
|
-
clone.setAttribute(name, value);
|
1184
|
-
}
|
1185
|
-
clone.textContent = scriptish.innerHTML;
|
1186
|
-
scriptish.replaceWith(clone);
|
1187
|
-
}
|
1188
1170
|
function createFromHTML(html) {
|
1189
1171
|
const range = document.createRange();
|
1190
1172
|
range.setStart(document.body, 0);
|
@@ -1447,8 +1429,7 @@ up.element = (function () {
|
|
1447
1429
|
isSingleton,
|
1448
1430
|
attrSelector,
|
1449
1431
|
tagName: elementTagName,
|
1450
|
-
|
1451
|
-
fixScriptish,
|
1432
|
+
createDocumentFromHTML,
|
1452
1433
|
createFromHTML,
|
1453
1434
|
get root() { return getRoot(); },
|
1454
1435
|
paint,
|
@@ -1895,7 +1876,7 @@ up.Change.Addition = class Addition extends up.Change {
|
|
1895
1876
|
setETag({ newElement, etag }) {
|
1896
1877
|
e.setMissingAttr(newElement, 'up-etag', etag || false);
|
1897
1878
|
}
|
1898
|
-
|
1879
|
+
setMeta(options) {
|
1899
1880
|
this.setSource(options);
|
1900
1881
|
this.setTime(options);
|
1901
1882
|
this.setETag(options);
|
@@ -2138,9 +2119,9 @@ up.Change.OpenLayer = class OpenLayer extends up.Change.Addition {
|
|
2138
2119
|
this.layer.createElements(this.content);
|
2139
2120
|
this.layer.setupHandlers();
|
2140
2121
|
this.handleHistory();
|
2141
|
-
this.
|
2122
|
+
this.setMeta({ newElement: this.content, source: this.options.source });
|
2142
2123
|
responseDoc.finalizeElement(this.content);
|
2143
|
-
up.hello(this.layer.element,
|
2124
|
+
up.hello(this.layer.element, { layer: this.layer, origin: this.origin });
|
2144
2125
|
this.handleLayerChangeRequests();
|
2145
2126
|
this.handleScroll();
|
2146
2127
|
let renderResult = new up.RenderResult({
|
@@ -2309,7 +2290,7 @@ up.Change.UpdateLayer = (_a = class UpdateLayer extends up.Change.Addition {
|
|
2309
2290
|
this.renderResult.fragments.unshift(...newFragments);
|
2310
2291
|
}
|
2311
2292
|
executeStep(step) {
|
2312
|
-
this.
|
2293
|
+
this.setMeta(step);
|
2313
2294
|
switch (step.placement) {
|
2314
2295
|
case 'swap': {
|
2315
2296
|
let keepPlan = this.findKeepPlan(step);
|
@@ -2800,11 +2781,18 @@ up.Change.FromURL = (_a = class FromURL extends up.Change {
|
|
2800
2781
|
onRequestSettledWithResponse(response) {
|
2801
2782
|
var _a;
|
2802
2783
|
this.response = response;
|
2803
|
-
|
2784
|
+
const expiredResponse = this.options.expiredResponse;
|
2785
|
+
const eventProps = {
|
2786
|
+
response: this.response,
|
2787
|
+
renderOptions: this.options,
|
2788
|
+
revalidating: !!expiredResponse,
|
2789
|
+
expiredResponse,
|
2790
|
+
};
|
2791
|
+
if (up.fragment.config.skipResponse(eventProps)) {
|
2804
2792
|
this.skip();
|
2805
2793
|
}
|
2806
2794
|
else {
|
2807
|
-
this.request.assertEmitted('up:fragment:loaded', Object.assign(Object.assign({},
|
2795
|
+
this.request.assertEmitted('up:fragment:loaded', Object.assign(Object.assign({}, eventProps), { callback: this.options.onLoaded, log: ['Loaded fragment from %s', this.response.description], skip: () => this.skip() }));
|
2808
2796
|
}
|
2809
2797
|
let fail = (_a = u.evalOption(this.options.fail, this.response)) !== null && _a !== void 0 ? _a : !response.ok;
|
2810
2798
|
if (fail) {
|
@@ -2812,22 +2800,6 @@ up.Change.FromURL = (_a = class FromURL extends up.Change {
|
|
2812
2800
|
}
|
2813
2801
|
return this.updateContentFromResponse(this.options);
|
2814
2802
|
}
|
2815
|
-
compilerPassMeta() {
|
2816
|
-
return u.pick(this.loadedEventProps(), [
|
2817
|
-
'revalidating',
|
2818
|
-
'response'
|
2819
|
-
]);
|
2820
|
-
}
|
2821
|
-
loadedEventProps() {
|
2822
|
-
const { expiredResponse } = this.options;
|
2823
|
-
return {
|
2824
|
-
request: this.request,
|
2825
|
-
response: this.response,
|
2826
|
-
renderOptions: this.options,
|
2827
|
-
revalidating: !!expiredResponse,
|
2828
|
-
expiredResponse,
|
2829
|
-
};
|
2830
|
-
}
|
2831
2803
|
onRequestSettledWithError(error) {
|
2832
2804
|
if (error instanceof up.Offline) {
|
2833
2805
|
this.request.emit('up:fragment:offline', {
|
@@ -2850,7 +2822,6 @@ up.Change.FromURL = (_a = class FromURL extends up.Change {
|
|
2850
2822
|
up.puts('up.render()', 'Rendering failed response using fail-prefixed options (https://unpoly.com/failed-responses)');
|
2851
2823
|
}
|
2852
2824
|
this.augmentOptionsFromResponse(finalRenderOptions);
|
2853
|
-
finalRenderOptions.meta = this.compilerPassMeta();
|
2854
2825
|
let result = new up.Change.FromContent(finalRenderOptions).execute();
|
2855
2826
|
result.finished = this.finish(result, finalRenderOptions);
|
2856
2827
|
return result;
|
@@ -2919,7 +2890,6 @@ up.Change.FromURL = (_a = class FromURL extends up.Change {
|
|
2919
2890
|
(() => {
|
2920
2891
|
u.memoizeMethod(_a.prototype, [
|
2921
2892
|
'getRequestAttrs',
|
2922
|
-
'loadedEventProps',
|
2923
2893
|
]);
|
2924
2894
|
})(),
|
2925
2895
|
_a);
|
@@ -2931,14 +2901,12 @@ up.Change.FromURL = (_a = class FromURL extends up.Change {
|
|
2931
2901
|
|
2932
2902
|
const u = up.util;
|
2933
2903
|
up.CompilerPass = class CompilerPass {
|
2934
|
-
constructor(root, compilers, { layer, data, dataMap
|
2935
|
-
layer || (layer = up.layer.get(root) || up.layer.current);
|
2904
|
+
constructor(root, compilers, { layer, data, dataMap } = {}) {
|
2936
2905
|
this.root = root;
|
2937
2906
|
this.compilers = compilers;
|
2938
|
-
this.layer = layer;
|
2907
|
+
this.layer = layer || up.layer.get(this.root) || up.layer.current;
|
2939
2908
|
this.data = data;
|
2940
2909
|
this.dataMap = dataMap;
|
2941
|
-
this.meta = Object.assign({ layer }, meta);
|
2942
2910
|
this.errors = [];
|
2943
2911
|
}
|
2944
2912
|
run() {
|
@@ -2984,10 +2952,11 @@ up.CompilerPass = class CompilerPass {
|
|
2984
2952
|
return (_b = (_a = up.migrate).postCompile) === null || _b === void 0 ? void 0 : _b.call(_a, matches, compiler);
|
2985
2953
|
}
|
2986
2954
|
compileOneElement(compiler, element) {
|
2987
|
-
const
|
2955
|
+
const elementArg = compiler.jQuery ? up.browser.jQuery(element) : element;
|
2956
|
+
const compileArgs = [elementArg];
|
2988
2957
|
if (compiler.length !== 1) {
|
2989
2958
|
const data = up.syntax.data(element);
|
2990
|
-
compileArgs.push(data
|
2959
|
+
compileArgs.push(data);
|
2991
2960
|
}
|
2992
2961
|
const result = this.applyCompilerFunction(compiler, element, compileArgs);
|
2993
2962
|
let destructorOrDestructors = this.destructorPresence(result);
|
@@ -2996,10 +2965,11 @@ up.CompilerPass = class CompilerPass {
|
|
2996
2965
|
}
|
2997
2966
|
}
|
2998
2967
|
compileBatch(compiler, elements) {
|
2999
|
-
const
|
2968
|
+
const elementsArgs = compiler.jQuery ? up.browser.jQuery(elements) : elements;
|
2969
|
+
const compileArgs = [elementsArgs];
|
3000
2970
|
if (compiler.length !== 1) {
|
3001
2971
|
const dataList = u.map(elements, up.syntax.data);
|
3002
|
-
compileArgs.push(dataList
|
2972
|
+
compileArgs.push(dataList);
|
3003
2973
|
}
|
3004
2974
|
const result = this.applyCompilerFunction(compiler, elements, compileArgs);
|
3005
2975
|
if (this.destructorPresence(result)) {
|
@@ -3305,6 +3275,7 @@ up.EventListener = class EventListener extends up.Record {
|
|
3305
3275
|
'eventType',
|
3306
3276
|
'selector',
|
3307
3277
|
'callback',
|
3278
|
+
'jQuery',
|
3308
3279
|
'guard',
|
3309
3280
|
'baseLayer',
|
3310
3281
|
'passive',
|
@@ -3352,7 +3323,8 @@ up.EventListener = class EventListener extends up.Record {
|
|
3352
3323
|
return;
|
3353
3324
|
}
|
3354
3325
|
if (element) {
|
3355
|
-
const
|
3326
|
+
const elementArg = this.jQuery ? up.browser.jQuery(element) : element;
|
3327
|
+
const args = [event, elementArg];
|
3356
3328
|
const expectedArgCount = this.callback.length;
|
3357
3329
|
if (expectedArgCount !== 1 && expectedArgCount !== 2) {
|
3358
3330
|
const data = up.syntax.data(element);
|
@@ -3408,6 +3380,7 @@ up.EventListenerGroup = class EventListenerGroup extends up.Record {
|
|
3408
3380
|
'eventTypes',
|
3409
3381
|
'selector',
|
3410
3382
|
'callback',
|
3383
|
+
'jQuery',
|
3411
3384
|
'guard',
|
3412
3385
|
'baseLayer',
|
3413
3386
|
'passive',
|
@@ -4182,6 +4155,44 @@ up.FragmentScrolling = class FragmentScrolling extends up.FragmentProcessor {
|
|
4182
4155
|
/* 47 */
|
4183
4156
|
/***/ (() => {
|
4184
4157
|
|
4158
|
+
const u = up.util;
|
4159
|
+
const e = up.element;
|
4160
|
+
up.HTMLWrapper = class HTMLWrapper {
|
4161
|
+
constructor(tagName) {
|
4162
|
+
this.tagName = tagName;
|
4163
|
+
const openTag = `<${this.tagName}[^>]*>`;
|
4164
|
+
const closeTag = `</${this.tagName}>`;
|
4165
|
+
const innerHTML = "(.|\\s)*?";
|
4166
|
+
this.pattern = new RegExp(openTag + innerHTML + closeTag, 'ig');
|
4167
|
+
this.attrName = `up-wrapped-${this.tagName}`;
|
4168
|
+
}
|
4169
|
+
strip(html) {
|
4170
|
+
return html.replace(this.pattern, '');
|
4171
|
+
}
|
4172
|
+
wrap(html) {
|
4173
|
+
return html.replace(this.pattern, this.wrapMatch.bind(this));
|
4174
|
+
}
|
4175
|
+
wrapMatch(match) {
|
4176
|
+
this.didWrap = true;
|
4177
|
+
return '<meta name="' + this.attrName + '" value="' + u.escapeHTML(match) + '">';
|
4178
|
+
}
|
4179
|
+
unwrap(element) {
|
4180
|
+
if (!this.didWrap) {
|
4181
|
+
return;
|
4182
|
+
}
|
4183
|
+
for (let wrappedChild of element.querySelectorAll(`meta[name='${this.attrName}']`)) {
|
4184
|
+
const originalHTML = wrappedChild.getAttribute('value');
|
4185
|
+
const restoredElement = e.createFromHTML(originalHTML);
|
4186
|
+
wrappedChild.replaceWith(restoredElement);
|
4187
|
+
}
|
4188
|
+
}
|
4189
|
+
};
|
4190
|
+
|
4191
|
+
|
4192
|
+
/***/ }),
|
4193
|
+
/* 48 */
|
4194
|
+
/***/ (() => {
|
4195
|
+
|
4185
4196
|
const e = up.element;
|
4186
4197
|
const u = up.util;
|
4187
4198
|
up.Layer = class Layer extends up.Record {
|
@@ -4328,12 +4339,12 @@ up.Layer = class Layer extends up.Record {
|
|
4328
4339
|
return this.stack.asCurrent(this, fn);
|
4329
4340
|
}
|
4330
4341
|
updateHistory(options) {
|
4331
|
-
if (u.isString(options.location)) {
|
4332
|
-
this.location = options.location;
|
4333
|
-
}
|
4334
4342
|
if (u.isString(options.title)) {
|
4335
4343
|
this.title = options.title;
|
4336
4344
|
}
|
4345
|
+
if (u.isString(options.location)) {
|
4346
|
+
this.location = options.location;
|
4347
|
+
}
|
4337
4348
|
}
|
4338
4349
|
isHistoryVisible() {
|
4339
4350
|
return this.history && (this.isRoot() || this.parent.isHistoryVisible());
|
@@ -4366,14 +4377,12 @@ up.Layer = class Layer extends up.Record {
|
|
4366
4377
|
set location(location) {
|
4367
4378
|
const previousLocation = this.location;
|
4368
4379
|
location = up.history.normalizeURL(location);
|
4369
|
-
if (previousLocation !== location
|
4380
|
+
if (previousLocation !== location) {
|
4370
4381
|
this.savedLocation = location;
|
4382
|
+
this.emit('up:layer:location:changed', { location, log: false });
|
4371
4383
|
if (this.showsLiveHistory()) {
|
4372
4384
|
up.history.push(location);
|
4373
4385
|
}
|
4374
|
-
if (!this.opening) {
|
4375
|
-
this.emit('up:layer:location:changed', { location });
|
4376
|
-
}
|
4377
4386
|
}
|
4378
4387
|
}
|
4379
4388
|
selector(part) {
|
@@ -4399,7 +4408,7 @@ up.Layer = class Layer extends up.Record {
|
|
4399
4408
|
|
4400
4409
|
|
4401
4410
|
/***/ }),
|
4402
|
-
/*
|
4411
|
+
/* 49 */
|
4403
4412
|
/***/ (() => {
|
4404
4413
|
|
4405
4414
|
const e = up.element;
|
@@ -4679,7 +4688,7 @@ up.Layer.Overlay = class Overlay extends up.Layer {
|
|
4679
4688
|
|
4680
4689
|
|
4681
4690
|
/***/ }),
|
4682
|
-
/*
|
4691
|
+
/* 50 */
|
4683
4692
|
/***/ (() => {
|
4684
4693
|
|
4685
4694
|
up.Layer.OverlayWithTether = class OverlayWithTether extends up.Layer.Overlay {
|
@@ -4716,7 +4725,7 @@ up.Layer.OverlayWithTether = class OverlayWithTether extends up.Layer.Overlay {
|
|
4716
4725
|
|
4717
4726
|
|
4718
4727
|
/***/ }),
|
4719
|
-
/*
|
4728
|
+
/* 51 */
|
4720
4729
|
/***/ (() => {
|
4721
4730
|
|
4722
4731
|
var _a;
|
@@ -4754,7 +4763,7 @@ up.Layer.OverlayWithViewport = (_a = class OverlayWithViewport extends up.Layer.
|
|
4754
4763
|
|
4755
4764
|
|
4756
4765
|
/***/ }),
|
4757
|
-
/*
|
4766
|
+
/* 52 */
|
4758
4767
|
/***/ (() => {
|
4759
4768
|
|
4760
4769
|
var _a;
|
@@ -4803,7 +4812,7 @@ up.Layer.Root = (_a = class Root extends up.Layer {
|
|
4803
4812
|
|
4804
4813
|
|
4805
4814
|
/***/ }),
|
4806
|
-
/*
|
4815
|
+
/* 53 */
|
4807
4816
|
/***/ (() => {
|
4808
4817
|
|
4809
4818
|
var _a;
|
@@ -4814,7 +4823,7 @@ up.Layer.Modal = (_a = class Modal extends up.Layer.OverlayWithViewport {
|
|
4814
4823
|
|
4815
4824
|
|
4816
4825
|
/***/ }),
|
4817
|
-
/*
|
4826
|
+
/* 54 */
|
4818
4827
|
/***/ (() => {
|
4819
4828
|
|
4820
4829
|
var _a;
|
@@ -4825,7 +4834,7 @@ up.Layer.Popup = (_a = class Popup extends up.Layer.OverlayWithTether {
|
|
4825
4834
|
|
4826
4835
|
|
4827
4836
|
/***/ }),
|
4828
|
-
/*
|
4837
|
+
/* 55 */
|
4829
4838
|
/***/ (() => {
|
4830
4839
|
|
4831
4840
|
var _a;
|
@@ -4836,7 +4845,7 @@ up.Layer.Drawer = (_a = class Drawer extends up.Layer.OverlayWithViewport {
|
|
4836
4845
|
|
4837
4846
|
|
4838
4847
|
/***/ }),
|
4839
|
-
/*
|
4848
|
+
/* 56 */
|
4840
4849
|
/***/ (() => {
|
4841
4850
|
|
4842
4851
|
var _a;
|
@@ -4847,7 +4856,7 @@ up.Layer.Cover = (_a = class Cover extends up.Layer.OverlayWithViewport {
|
|
4847
4856
|
|
4848
4857
|
|
4849
4858
|
/***/ }),
|
4850
|
-
/*
|
4859
|
+
/* 57 */
|
4851
4860
|
/***/ (() => {
|
4852
4861
|
|
4853
4862
|
const u = up.util;
|
@@ -4937,7 +4946,7 @@ up.LayerLookup = class LayerLookup {
|
|
4937
4946
|
|
4938
4947
|
|
4939
4948
|
/***/ }),
|
4940
|
-
/*
|
4949
|
+
/* 58 */
|
4941
4950
|
/***/ (() => {
|
4942
4951
|
|
4943
4952
|
const u = up.util;
|
@@ -5050,7 +5059,7 @@ up.LayerStack = class LayerStack extends Array {
|
|
5050
5059
|
|
5051
5060
|
|
5052
5061
|
/***/ }),
|
5053
|
-
/*
|
5062
|
+
/* 59 */
|
5054
5063
|
/***/ (() => {
|
5055
5064
|
|
5056
5065
|
up.LinkFeedbackURLs = class LinkFeedbackURLs {
|
@@ -5081,7 +5090,7 @@ up.LinkFeedbackURLs = class LinkFeedbackURLs {
|
|
5081
5090
|
|
5082
5091
|
|
5083
5092
|
/***/ }),
|
5084
|
-
/*
|
5093
|
+
/* 60 */
|
5085
5094
|
/***/ (() => {
|
5086
5095
|
|
5087
5096
|
const u = up.util;
|
@@ -5151,7 +5160,7 @@ up.LinkPreloader = class LinkPreloader {
|
|
5151
5160
|
|
5152
5161
|
|
5153
5162
|
/***/ }),
|
5154
|
-
/*
|
5163
|
+
/* 61 */
|
5155
5164
|
/***/ (function() {
|
5156
5165
|
|
5157
5166
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
@@ -5260,7 +5269,7 @@ up.MotionController = class MotionController {
|
|
5260
5269
|
|
5261
5270
|
|
5262
5271
|
/***/ }),
|
5263
|
-
/*
|
5272
|
+
/* 62 */
|
5264
5273
|
/***/ (() => {
|
5265
5274
|
|
5266
5275
|
const u = up.util;
|
@@ -5352,7 +5361,7 @@ up.NonceableCallback = class NonceableCallback {
|
|
5352
5361
|
|
5353
5362
|
|
5354
5363
|
/***/ }),
|
5355
|
-
/*
|
5364
|
+
/* 63 */
|
5356
5365
|
/***/ (() => {
|
5357
5366
|
|
5358
5367
|
const u = up.util;
|
@@ -5430,7 +5439,7 @@ up.OptionsParser = class OptionsParser {
|
|
5430
5439
|
|
5431
5440
|
|
5432
5441
|
/***/ }),
|
5433
|
-
/*
|
5442
|
+
/* 64 */
|
5434
5443
|
/***/ (() => {
|
5435
5444
|
|
5436
5445
|
const e = up.element;
|
@@ -5498,7 +5507,7 @@ up.OverlayFocus = class OverlayFocus {
|
|
5498
5507
|
|
5499
5508
|
|
5500
5509
|
/***/ }),
|
5501
|
-
/*
|
5510
|
+
/* 65 */
|
5502
5511
|
/***/ (() => {
|
5503
5512
|
|
5504
5513
|
const u = up.util;
|
@@ -5729,7 +5738,7 @@ up.Params = class Params {
|
|
5729
5738
|
|
5730
5739
|
|
5731
5740
|
/***/ }),
|
5732
|
-
/*
|
5741
|
+
/* 66 */
|
5733
5742
|
/***/ (() => {
|
5734
5743
|
|
5735
5744
|
const e = up.element;
|
@@ -5779,7 +5788,7 @@ up.ProgressBar = class ProgressBar {
|
|
5779
5788
|
|
5780
5789
|
|
5781
5790
|
/***/ }),
|
5782
|
-
/*
|
5791
|
+
/* 67 */
|
5783
5792
|
/***/ (() => {
|
5784
5793
|
|
5785
5794
|
const u = up.util;
|
@@ -5825,7 +5834,7 @@ up.RenderOptions = (function () {
|
|
5825
5834
|
'history',
|
5826
5835
|
'source',
|
5827
5836
|
'saveScroll',
|
5828
|
-
'navigate'
|
5837
|
+
'navigate'
|
5829
5838
|
]);
|
5830
5839
|
const CONTENT_KEYS = [
|
5831
5840
|
'url',
|
@@ -5896,7 +5905,7 @@ up.RenderOptions = (function () {
|
|
5896
5905
|
|
5897
5906
|
|
5898
5907
|
/***/ }),
|
5899
|
-
/*
|
5908
|
+
/* 68 */
|
5900
5909
|
/***/ (() => {
|
5901
5910
|
|
5902
5911
|
up.RenderResult = class RenderResult extends up.Record {
|
@@ -5924,7 +5933,7 @@ up.RenderResult = class RenderResult extends up.Record {
|
|
5924
5933
|
|
5925
5934
|
|
5926
5935
|
/***/ }),
|
5927
|
-
/*
|
5936
|
+
/* 69 */
|
5928
5937
|
/***/ (() => {
|
5929
5938
|
|
5930
5939
|
var _a;
|
@@ -5949,7 +5958,6 @@ up.Request = (_a = class Request extends up.Record {
|
|
5949
5958
|
}
|
5950
5959
|
this.deferred = u.newDeferred();
|
5951
5960
|
(_a = this.badResponseTime) !== null && _a !== void 0 ? _a : (this.badResponseTime = u.evalOption(up.network.config.badResponseTime, this));
|
5952
|
-
this.uid = u.uid();
|
5953
5961
|
}
|
5954
5962
|
keys() {
|
5955
5963
|
return [
|
@@ -6012,6 +6020,9 @@ up.Request = (_a = class Request extends up.Record {
|
|
6012
6020
|
var _a;
|
6013
6021
|
return (_a = this.fragments) === null || _a === void 0 ? void 0 : _a[0];
|
6014
6022
|
}
|
6023
|
+
followState(sourceRequest) {
|
6024
|
+
u.delegate(this, ['deferred', 'state', 'preload', 'expired'], () => sourceRequest);
|
6025
|
+
}
|
6015
6026
|
normalizeForCaching() {
|
6016
6027
|
this.method = u.normalizeMethod(this.method);
|
6017
6028
|
this.extractHashFromURL();
|
@@ -6055,12 +6066,10 @@ up.Request = (_a = class Request extends up.Record {
|
|
6055
6066
|
}
|
6056
6067
|
runQueuedCallbacks() {
|
6057
6068
|
var _a;
|
6058
|
-
this.queuedAt = new Date();
|
6059
6069
|
u.always(this, () => this.evictExpensiveAttrs());
|
6060
6070
|
(_a = this.onQueued) === null || _a === void 0 ? void 0 : _a.call(this, this);
|
6061
6071
|
}
|
6062
6072
|
load() {
|
6063
|
-
console.debug("[request] calling load() on %o", this.description);
|
6064
6073
|
if (this.state !== 'new')
|
6065
6074
|
return;
|
6066
6075
|
this.state = 'loading';
|
@@ -6114,18 +6123,14 @@ up.Request = (_a = class Request extends up.Record {
|
|
6114
6123
|
this.emit('up:request:offline', { log: message });
|
6115
6124
|
}
|
6116
6125
|
respondWith(response) {
|
6117
|
-
this.
|
6118
|
-
console.debug("[request] respondWith() at state %o / uid %o", this.state, this.uid);
|
6119
|
-
if (this.isSettled())
|
6126
|
+
if (this.state !== 'loading')
|
6120
6127
|
return;
|
6121
6128
|
this.state = 'loaded';
|
6122
6129
|
if (response.ok) {
|
6123
|
-
|
6124
|
-
this.deferred.resolve(response);
|
6130
|
+
return this.deferred.resolve(response);
|
6125
6131
|
}
|
6126
6132
|
else {
|
6127
|
-
|
6128
|
-
this.deferred.reject(response);
|
6133
|
+
return this.deferred.reject(response);
|
6129
6134
|
}
|
6130
6135
|
}
|
6131
6136
|
isSettled() {
|
@@ -6176,6 +6181,24 @@ up.Request = (_a = class Request extends up.Record {
|
|
6176
6181
|
}
|
6177
6182
|
return new up.Response(responseAttrs);
|
6178
6183
|
}
|
6184
|
+
cacheKey() {
|
6185
|
+
return JSON.stringify([
|
6186
|
+
this.method,
|
6187
|
+
this.url,
|
6188
|
+
this.params.toQuery(),
|
6189
|
+
this.metaProps()
|
6190
|
+
]);
|
6191
|
+
}
|
6192
|
+
metaProps() {
|
6193
|
+
const props = {};
|
6194
|
+
for (let key of u.evalOption(up.network.config.requestMetaKeys, this)) {
|
6195
|
+
const value = this[key];
|
6196
|
+
if (u.isGiven(value)) {
|
6197
|
+
props[key] = value;
|
6198
|
+
}
|
6199
|
+
}
|
6200
|
+
return props;
|
6201
|
+
}
|
6179
6202
|
buildEventEmitter(args) {
|
6180
6203
|
return up.EventEmitter.fromEmitArgs(args, {
|
6181
6204
|
layer: this.layer,
|
@@ -6205,9 +6228,6 @@ up.Request = (_a = class Request extends up.Record {
|
|
6205
6228
|
const now = new Date();
|
6206
6229
|
return now - this.queuedAt;
|
6207
6230
|
}
|
6208
|
-
header(name) {
|
6209
|
-
return this.headers[name];
|
6210
|
-
}
|
6211
6231
|
static tester(condition, { except } = {}) {
|
6212
6232
|
let testFn;
|
6213
6233
|
if (u.isFunction(condition)) {
|
@@ -6224,7 +6244,8 @@ up.Request = (_a = class Request extends up.Record {
|
|
6224
6244
|
testFn = (_request) => condition;
|
6225
6245
|
}
|
6226
6246
|
if (except) {
|
6227
|
-
|
6247
|
+
let exceptCacheKey = except.cacheKey();
|
6248
|
+
return (request) => (request.cacheKey() !== exceptCacheKey) && testFn(request);
|
6228
6249
|
}
|
6229
6250
|
else {
|
6230
6251
|
return testFn;
|
@@ -6238,7 +6259,7 @@ up.Request = (_a = class Request extends up.Record {
|
|
6238
6259
|
|
6239
6260
|
|
6240
6261
|
/***/ }),
|
6241
|
-
/*
|
6262
|
+
/* 70 */
|
6242
6263
|
/***/ (() => {
|
6243
6264
|
|
6244
6265
|
let u = up.util;
|
@@ -6269,151 +6290,6 @@ up.Request.Cache = class Cache extends up.Cache {
|
|
6269
6290
|
};
|
6270
6291
|
|
6271
6292
|
|
6272
|
-
/***/ }),
|
6273
|
-
/* 70 */
|
6274
|
-
/***/ (function() {
|
6275
|
-
|
6276
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
6277
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
6278
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
6279
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
6280
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
6281
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
6282
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
6283
|
-
});
|
6284
|
-
};
|
6285
|
-
const u = up.util;
|
6286
|
-
up.Request.Cache3 = class Cache3 {
|
6287
|
-
constructor() {
|
6288
|
-
this.reset();
|
6289
|
-
}
|
6290
|
-
reset() {
|
6291
|
-
this.varyInfo = {};
|
6292
|
-
this.map = new Map();
|
6293
|
-
}
|
6294
|
-
cacheKey(request) {
|
6295
|
-
let varyHeaderNames = this.getPreviousVaryHeaderNames(request);
|
6296
|
-
let varyPart = u.flatMap(varyHeaderNames, (headerName) => [headerName, request.header(headerName)]);
|
6297
|
-
return [request.description, ...varyPart].join(':');
|
6298
|
-
}
|
6299
|
-
getPreviousVaryHeaderNames(request) {
|
6300
|
-
var _a, _b;
|
6301
|
-
return ((_a = this.varyInfo)[_b = request.description] || (_a[_b] = new Set()));
|
6302
|
-
}
|
6303
|
-
get(request) {
|
6304
|
-
console.debug("[cache] get() called with %o", request.description);
|
6305
|
-
let cacheKey = this.cacheKey(request);
|
6306
|
-
let cachedRequest = this.map.get(cacheKey);
|
6307
|
-
console.debug("[cache] cache hit is %o", cachedRequest);
|
6308
|
-
if (cachedRequest) {
|
6309
|
-
if (this.isUsable(cachedRequest)) {
|
6310
|
-
return cachedRequest;
|
6311
|
-
}
|
6312
|
-
else {
|
6313
|
-
this.map.delete(cacheKey);
|
6314
|
-
}
|
6315
|
-
}
|
6316
|
-
}
|
6317
|
-
get maxSize() {
|
6318
|
-
return up.network.config.cacheSize;
|
6319
|
-
}
|
6320
|
-
isUsable(request) {
|
6321
|
-
const evictAge = up.network.config.cacheEvictAge;
|
6322
|
-
const age = new Date() - request.queuedAt;
|
6323
|
-
return age < evictAge;
|
6324
|
-
}
|
6325
|
-
put(request) {
|
6326
|
-
return __awaiter(this, void 0, void 0, function* () {
|
6327
|
-
console.debug("[cache] put() called for %o", request.description);
|
6328
|
-
this.makeRoom();
|
6329
|
-
let cacheKey = this.updateCacheKey(request);
|
6330
|
-
this.map.set(cacheKey, request);
|
6331
|
-
});
|
6332
|
-
}
|
6333
|
-
updateCacheKey(request) {
|
6334
|
-
let oldCacheKey = this.cacheKey(request);
|
6335
|
-
let { response } = request;
|
6336
|
-
if (response) {
|
6337
|
-
this.mergePreviousHeaderNames(request, response);
|
6338
|
-
let newCacheKey = this.cacheKey(request);
|
6339
|
-
this.renameMapKey(oldCacheKey, newCacheKey);
|
6340
|
-
return newCacheKey;
|
6341
|
-
}
|
6342
|
-
else {
|
6343
|
-
return oldCacheKey;
|
6344
|
-
}
|
6345
|
-
}
|
6346
|
-
renameMapKey(oldKey, newKey) {
|
6347
|
-
if (this.map.has(oldKey)) {
|
6348
|
-
this.map.set(newKey, this.map.get(oldKey));
|
6349
|
-
this.map.delete(oldKey);
|
6350
|
-
}
|
6351
|
-
}
|
6352
|
-
mergePreviousHeaderNames(request, response) {
|
6353
|
-
let responseVaryHeaderNames = response.ownVaryHeaderNames;
|
6354
|
-
if (responseVaryHeaderNames.length) {
|
6355
|
-
let previousVaryHeaderNames = this.getPreviousVaryHeaderNames(request);
|
6356
|
-
for (let varyHeaderName of responseVaryHeaderNames) {
|
6357
|
-
previousVaryHeaderNames.add(varyHeaderName);
|
6358
|
-
}
|
6359
|
-
}
|
6360
|
-
}
|
6361
|
-
alias(existingCachedRequest, newRequest) {
|
6362
|
-
this.connect(existingCachedRequest, newRequest, { force: true });
|
6363
|
-
this.put(newRequest);
|
6364
|
-
}
|
6365
|
-
connect(existingCachedRequest, newRequest, options = {}) {
|
6366
|
-
var _a;
|
6367
|
-
return __awaiter(this, void 0, void 0, function* () {
|
6368
|
-
let value = yield u.always(existingCachedRequest);
|
6369
|
-
if (value instanceof up.Response) {
|
6370
|
-
console.debug("[cache] connect settles to response %o", value.text);
|
6371
|
-
if (options.force || this.isCacheCompatible(existingCachedRequest, newRequest)) {
|
6372
|
-
console.debug("[cache] they are compatible");
|
6373
|
-
newRequest.fromCache = true;
|
6374
|
-
newRequest.respondWith(value);
|
6375
|
-
u.delegate(newRequest, ['expired', 'state'], () => existingCachedRequest);
|
6376
|
-
}
|
6377
|
-
else {
|
6378
|
-
console.debug("[cache] they are incompatible");
|
6379
|
-
(_a = options.onIncompatible) === null || _a === void 0 ? void 0 : _a.call(options, newRequest);
|
6380
|
-
}
|
6381
|
-
}
|
6382
|
-
else {
|
6383
|
-
newRequest.deferred.reject(value);
|
6384
|
-
}
|
6385
|
-
});
|
6386
|
-
}
|
6387
|
-
delete(request) {
|
6388
|
-
let cacheKey = this.cacheKey(request);
|
6389
|
-
this.map.delete(cacheKey);
|
6390
|
-
}
|
6391
|
-
evict(condition = true, testerOptions) {
|
6392
|
-
this.eachMatch(condition, testerOptions, (request) => this.delete(request));
|
6393
|
-
}
|
6394
|
-
expire(condition = true, testerOptions) {
|
6395
|
-
this.eachMatch(condition, testerOptions, (request) => request.expired = true);
|
6396
|
-
}
|
6397
|
-
makeRoom() {
|
6398
|
-
if (this.maxSize === 0) {
|
6399
|
-
throw "Disabling the cache with maxSize 0 is no longer supported. Use up.network.config.autoCache = false instead.";
|
6400
|
-
}
|
6401
|
-
while (this.map.size >= this.maxSize) {
|
6402
|
-
let oldestKey = this.map.keys().next().value;
|
6403
|
-
this.map.delete(oldestKey);
|
6404
|
-
}
|
6405
|
-
}
|
6406
|
-
eachMatch(condition = true, testerOptions, fn) {
|
6407
|
-
let tester = up.Request.tester(condition, testerOptions);
|
6408
|
-
let results = u.filter(this.map.values(), tester);
|
6409
|
-
u.each(results, fn);
|
6410
|
-
}
|
6411
|
-
isCacheCompatible(request1, request2) {
|
6412
|
-
return this.cacheKey(request1) === this.cacheKey(request2);
|
6413
|
-
}
|
6414
|
-
};
|
6415
|
-
|
6416
|
-
|
6417
6293
|
/***/ }),
|
6418
6294
|
/* 71 */
|
6419
6295
|
/***/ (() => {
|
@@ -6434,6 +6310,7 @@ up.Request.Queue = class Queue {
|
|
6434
6310
|
asap(request) {
|
6435
6311
|
request.runQueuedCallbacks();
|
6436
6312
|
u.always(request, responseOrError => this.onRequestSettled(request, responseOrError));
|
6313
|
+
request.queuedAt = new Date();
|
6437
6314
|
this.scheduleSlowTimer(request);
|
6438
6315
|
this.queueRequest(request);
|
6439
6316
|
u.microtask(() => this.poke());
|
@@ -6586,8 +6463,12 @@ up.Request.XHRRenderer = (_a = class XHRRenderer {
|
|
6586
6463
|
xhr.timeout = this.request.timeout;
|
6587
6464
|
}
|
6588
6465
|
xhr.open(this.getMethod(), this.request.url);
|
6589
|
-
|
6590
|
-
|
6466
|
+
const metaProps = this.request.metaProps();
|
6467
|
+
for (let key in metaProps) {
|
6468
|
+
this.addHeader(xhr, up.protocol.headerize(key), metaProps[key]);
|
6469
|
+
}
|
6470
|
+
for (let header in this.request.headers) {
|
6471
|
+
this.addHeader(xhr, header, this.request.headers[header]);
|
6591
6472
|
}
|
6592
6473
|
let csrfHeader, csrfToken;
|
6593
6474
|
if ((csrfHeader = this.request.csrfHeader()) && (csrfToken = this.request.csrfToken())) {
|
@@ -6598,10 +6479,6 @@ up.Request.XHRRenderer = (_a = class XHRRenderer {
|
|
6598
6479
|
if (contentType) {
|
6599
6480
|
this.addHeader(xhr, 'Content-Type', contentType);
|
6600
6481
|
}
|
6601
|
-
for (let headerName in this.request.headers) {
|
6602
|
-
let headerValue = this.request.headers[headerName];
|
6603
|
-
xhr.setRequestHeader(headerName, headerValue);
|
6604
|
-
}
|
6605
6482
|
Object.assign(xhr, handlers);
|
6606
6483
|
xhr.send(this.getPayload());
|
6607
6484
|
}
|
@@ -6622,11 +6499,11 @@ up.Request.XHRRenderer = (_a = class XHRRenderer {
|
|
6622
6499
|
this.finalizePayload();
|
6623
6500
|
return this.payload;
|
6624
6501
|
}
|
6625
|
-
addHeader(xhr,
|
6502
|
+
addHeader(xhr, header, value) {
|
6626
6503
|
if (u.isOptions(value) || u.isArray(value)) {
|
6627
|
-
value =
|
6504
|
+
value = JSON.stringify(value);
|
6628
6505
|
}
|
6629
|
-
|
6506
|
+
xhr.setRequestHeader(header, value);
|
6630
6507
|
}
|
6631
6508
|
finalizePayload() {
|
6632
6509
|
this.payload = this.request.payload;
|
@@ -6690,29 +6567,24 @@ up.Response = class Response extends up.Record {
|
|
6690
6567
|
var _a;
|
6691
6568
|
return !u.evalOption((_a = this.fail) !== null && _a !== void 0 ? _a : up.network.config.fail, this);
|
6692
6569
|
}
|
6693
|
-
|
6570
|
+
getHeader(name) {
|
6694
6571
|
var _a;
|
6695
6572
|
return this.headers[name] || ((_a = this.xhr) === null || _a === void 0 ? void 0 : _a.getResponseHeader(name));
|
6696
6573
|
}
|
6697
|
-
get ownVaryHeaderNames() {
|
6698
|
-
let varyHeaderValue = this.header('Vary');
|
6699
|
-
let varyHeaderNames = u.parseTokens(varyHeaderValue, { separator: 'comma' });
|
6700
|
-
return u.filter(varyHeaderNames, (headerName) => this.request.header(headerName));
|
6701
|
-
}
|
6702
6574
|
get contentType() {
|
6703
|
-
return this.
|
6575
|
+
return this.getHeader('Content-Type');
|
6704
6576
|
}
|
6705
6577
|
get cspNonces() {
|
6706
|
-
return up.protocol.cspNoncesFromHeader(this.
|
6578
|
+
return up.protocol.cspNoncesFromHeader(this.getHeader('Content-Security-Policy'));
|
6707
6579
|
}
|
6708
6580
|
get lastModified() {
|
6709
|
-
let header = this.
|
6581
|
+
let header = this.getHeader('Last-Modified');
|
6710
6582
|
if (header) {
|
6711
6583
|
return new Date(header);
|
6712
6584
|
}
|
6713
6585
|
}
|
6714
6586
|
get etag() {
|
6715
|
-
return this.
|
6587
|
+
return this.getHeader('ETag');
|
6716
6588
|
}
|
6717
6589
|
get json() {
|
6718
6590
|
return this.parsedJSON || (this.parsedJSON = JSON.parse(this.text));
|
@@ -6722,8 +6594,7 @@ up.Response = class Response extends up.Record {
|
|
6722
6594
|
return now - this.loadedAt;
|
6723
6595
|
}
|
6724
6596
|
get expired() {
|
6725
|
-
return this.age > up.network.config.cacheExpireAge ||
|
6726
|
-
this.request.expired;
|
6597
|
+
return this.age > up.network.config.cacheExpireAge || this.request.expired;
|
6727
6598
|
}
|
6728
6599
|
get description() {
|
6729
6600
|
return `HTTP ${this.status} response to ${this.request.description}`;
|
@@ -6740,13 +6611,12 @@ const u = up.util;
|
|
6740
6611
|
const e = up.element;
|
6741
6612
|
up.ResponseDoc = (_a = class ResponseDoc {
|
6742
6613
|
constructor(options) {
|
6614
|
+
this.noscriptWrapper = new up.HTMLWrapper('noscript');
|
6615
|
+
this.scriptWrapper = new up.HTMLWrapper('script');
|
6743
6616
|
this.root =
|
6744
6617
|
this.parseDocument(options) ||
|
6745
6618
|
this.parseFragment(options) ||
|
6746
6619
|
this.parseContent(options);
|
6747
|
-
if (!up.fragment.config.runScripts) {
|
6748
|
-
this.root.querySelectorAll('script').forEach((e) => e.remove());
|
6749
|
-
}
|
6750
6620
|
this.cspNonces = options.cspNonces;
|
6751
6621
|
if (options.origin) {
|
6752
6622
|
let originSelector = up.fragment.tryToTarget(options.origin);
|
@@ -6756,11 +6626,7 @@ up.ResponseDoc = (_a = class ResponseDoc {
|
|
6756
6626
|
}
|
6757
6627
|
}
|
6758
6628
|
parseDocument(options) {
|
6759
|
-
|
6760
|
-
if (document) {
|
6761
|
-
this.scriptishNeedFix = true;
|
6762
|
-
return document;
|
6763
|
-
}
|
6629
|
+
return this.parse(options.document, e.createDocumentFromHTML);
|
6764
6630
|
}
|
6765
6631
|
parseContent(options) {
|
6766
6632
|
let content = options.content || '';
|
@@ -6768,6 +6634,7 @@ up.ResponseDoc = (_a = class ResponseDoc {
|
|
6768
6634
|
target = u.map(up.fragment.parseTargetSteps(target), 'selector').join(',');
|
6769
6635
|
const matchingElement = e.createFromSelector(target);
|
6770
6636
|
if (u.isString(content)) {
|
6637
|
+
content = this.wrapHTML(content);
|
6771
6638
|
matchingElement.innerHTML = content;
|
6772
6639
|
}
|
6773
6640
|
else {
|
@@ -6780,6 +6647,7 @@ up.ResponseDoc = (_a = class ResponseDoc {
|
|
6780
6647
|
}
|
6781
6648
|
parse(value, parseFn = e.createFromHTML) {
|
6782
6649
|
if (u.isString(value)) {
|
6650
|
+
value = this.wrapHTML(value);
|
6783
6651
|
value = parseFn(value);
|
6784
6652
|
}
|
6785
6653
|
return value;
|
@@ -6787,9 +6655,19 @@ up.ResponseDoc = (_a = class ResponseDoc {
|
|
6787
6655
|
rootSelector() {
|
6788
6656
|
return up.fragment.toTarget(this.root);
|
6789
6657
|
}
|
6658
|
+
wrapHTML(html) {
|
6659
|
+
html = this.noscriptWrapper.wrap(html);
|
6660
|
+
if (up.fragment.config.runScripts) {
|
6661
|
+
html = this.scriptWrapper.wrap(html);
|
6662
|
+
}
|
6663
|
+
else {
|
6664
|
+
html = this.scriptWrapper.strip(html);
|
6665
|
+
}
|
6666
|
+
return html;
|
6667
|
+
}
|
6790
6668
|
getTitle() {
|
6791
6669
|
var _a;
|
6792
|
-
return (_a = this.root.querySelector(
|
6670
|
+
return (_a = this.root.querySelector("head title")) === null || _a === void 0 ? void 0 : _a.textContent;
|
6793
6671
|
}
|
6794
6672
|
select(selector) {
|
6795
6673
|
let finder = new up.FragmentFinder({
|
@@ -6800,10 +6678,9 @@ up.ResponseDoc = (_a = class ResponseDoc {
|
|
6800
6678
|
return finder.find();
|
6801
6679
|
}
|
6802
6680
|
finalizeElement(element) {
|
6681
|
+
this.noscriptWrapper.unwrap(element);
|
6803
6682
|
up.NonceableCallback.adoptNonces(element, this.cspNonces);
|
6804
|
-
|
6805
|
-
element.querySelectorAll('noscript, script').forEach(e.fixScriptish);
|
6806
|
-
}
|
6683
|
+
this.scriptWrapper.unwrap(element);
|
6807
6684
|
}
|
6808
6685
|
},
|
6809
6686
|
(() => {
|
@@ -7169,7 +7046,6 @@ up.framework = (function () {
|
|
7169
7046
|
readyState = 'booting';
|
7170
7047
|
up.emit('up:framework:boot', { log: false });
|
7171
7048
|
readyState = 'booted';
|
7172
|
-
up.emit('up:framework:booted', { log: false });
|
7173
7049
|
}
|
7174
7050
|
else {
|
7175
7051
|
console.error("Unpoly cannot boot: %s", issue);
|
@@ -7251,6 +7127,9 @@ up.event = (function () {
|
|
7251
7127
|
function on(...args) {
|
7252
7128
|
return buildListenerGroup(args).bind();
|
7253
7129
|
}
|
7130
|
+
function $on(...args) {
|
7131
|
+
return buildListenerGroup(args, { jQuery: true }).bind();
|
7132
|
+
}
|
7254
7133
|
function off(...args) {
|
7255
7134
|
return buildListenerGroup(args).unbind();
|
7256
7135
|
}
|
@@ -7321,6 +7200,7 @@ up.event = (function () {
|
|
7321
7200
|
on('up:framework:reset', reset);
|
7322
7201
|
return {
|
7323
7202
|
on,
|
7203
|
+
$on,
|
7324
7204
|
off,
|
7325
7205
|
build,
|
7326
7206
|
emit,
|
@@ -7333,7 +7213,9 @@ up.event = (function () {
|
|
7333
7213
|
};
|
7334
7214
|
})();
|
7335
7215
|
up.on = up.event.on;
|
7216
|
+
up.$on = up.event.$on;
|
7336
7217
|
up.off = up.event.off;
|
7218
|
+
up.$off = up.event.off;
|
7337
7219
|
up.emit = up.event.emit;
|
7338
7220
|
|
7339
7221
|
|
@@ -7391,8 +7273,7 @@ up.protocol = (function () {
|
|
7391
7273
|
return extractHeader(xhr, 'location') || xhr.responseURL;
|
7392
7274
|
}
|
7393
7275
|
function titleFromXHR(xhr) {
|
7394
|
-
|
7395
|
-
return (_c = (_b = (_a = up.migrate).titleFromXHR) === null || _b === void 0 ? void 0 : _b.call(_a, xhr)) !== null && _c !== void 0 ? _c : extractHeader(xhr, 'title', JSON.parse);
|
7276
|
+
return extractHeader(xhr, 'title');
|
7396
7277
|
}
|
7397
7278
|
function targetFromXHR(xhr) {
|
7398
7279
|
return extractHeader(xhr, 'target');
|
@@ -7586,6 +7467,9 @@ up.syntax = (function () {
|
|
7586
7467
|
const compiler = buildCompiler(args);
|
7587
7468
|
return insertCompiler(registeredCompilers, compiler);
|
7588
7469
|
}
|
7470
|
+
function registerJQueryCompiler(...args) {
|
7471
|
+
registerCompiler(...args, { jQuery: true });
|
7472
|
+
}
|
7589
7473
|
function registerMacro(...args) {
|
7590
7474
|
const macro = buildCompiler(args);
|
7591
7475
|
if (up.framework.evaling) {
|
@@ -7594,6 +7478,9 @@ up.syntax = (function () {
|
|
7594
7478
|
}
|
7595
7479
|
return insertCompiler(registeredMacros, macro);
|
7596
7480
|
}
|
7481
|
+
function registerJQueryMacro(...args) {
|
7482
|
+
registerMacro(...args, { jQuery: true });
|
7483
|
+
}
|
7597
7484
|
function detectSystemMacroPriority(macroSelector) {
|
7598
7485
|
macroSelector = u.evalOption(macroSelector);
|
7599
7486
|
for (let substr in SYSTEM_MACRO_PRIORITIES) {
|
@@ -7617,6 +7504,7 @@ up.syntax = (function () {
|
|
7617
7504
|
isDefault: up.framework.evaling,
|
7618
7505
|
priority: 0,
|
7619
7506
|
batch: false,
|
7507
|
+
jQuery: false
|
7620
7508
|
});
|
7621
7509
|
return Object.assign(callback, options);
|
7622
7510
|
}
|
@@ -7658,10 +7546,10 @@ up.syntax = (function () {
|
|
7658
7546
|
destructors.push(destructor);
|
7659
7547
|
}
|
7660
7548
|
}
|
7661
|
-
function hello(element,
|
7662
|
-
element = up.fragment.get(element
|
7549
|
+
function hello(element, { layer, data, dataMap } = {}) {
|
7550
|
+
element = up.fragment.get(element);
|
7663
7551
|
up.puts('up.hello()', "Compiling fragment %o", element);
|
7664
|
-
compile(element,
|
7552
|
+
compile(element, { layer, data, dataMap });
|
7665
7553
|
up.fragment.emitInserted(element);
|
7666
7554
|
return element;
|
7667
7555
|
}
|
@@ -7694,6 +7582,8 @@ up.syntax = (function () {
|
|
7694
7582
|
return {
|
7695
7583
|
compiler: registerCompiler,
|
7696
7584
|
macro: registerMacro,
|
7585
|
+
$compiler: registerJQueryCompiler,
|
7586
|
+
$macro: registerJQueryMacro,
|
7697
7587
|
destructor: registerDestructor,
|
7698
7588
|
hello,
|
7699
7589
|
clean,
|
@@ -7701,8 +7591,10 @@ up.syntax = (function () {
|
|
7701
7591
|
};
|
7702
7592
|
})();
|
7703
7593
|
up.compiler = up.syntax.compiler;
|
7594
|
+
up.$compiler = up.syntax.$compiler;
|
7704
7595
|
up.destructor = up.syntax.destructor;
|
7705
7596
|
up.macro = up.syntax.macro;
|
7597
|
+
up.$macro = up.syntax.$macro;
|
7706
7598
|
up.data = up.syntax.data;
|
7707
7599
|
up.hello = up.syntax.hello;
|
7708
7600
|
|
@@ -8992,24 +8884,25 @@ up.network = (function () {
|
|
8992
8884
|
autoCache(request) { return request.isSafe(); },
|
8993
8885
|
expireCache(request, _response) { return !request.isSafe(); },
|
8994
8886
|
evictCache: false,
|
8887
|
+
requestMetaKeys: ['target', 'failTarget', 'mode', 'failMode', 'context', 'failContext'],
|
8995
8888
|
progressBar: true,
|
8996
8889
|
timeout: 90000,
|
8997
8890
|
}));
|
8998
8891
|
const queue = new up.Request.Queue();
|
8999
|
-
const cache = new up.Request.
|
8892
|
+
const cache = new up.Request.Cache();
|
9000
8893
|
let progressBar = null;
|
9001
8894
|
function reset() {
|
9002
8895
|
abortRequests();
|
9003
8896
|
queue.reset();
|
9004
8897
|
config.reset();
|
9005
|
-
cache.
|
8898
|
+
cache.evict();
|
9006
8899
|
progressBar === null || progressBar === void 0 ? void 0 : progressBar.destroy();
|
9007
8900
|
progressBar = null;
|
9008
8901
|
}
|
9009
8902
|
function makeRequest(...args) {
|
9010
8903
|
const options = parseRequestOptions(args);
|
9011
8904
|
const request = new up.Request(options);
|
9012
|
-
|
8905
|
+
useCachedRequest(request) || queueRequest(request);
|
9013
8906
|
return request;
|
9014
8907
|
}
|
9015
8908
|
function parseRequestOptions(args) {
|
@@ -9021,30 +8914,31 @@ up.network = (function () {
|
|
9021
8914
|
(_b = (_a = up.migrate).handleRequestOptions) === null || _b === void 0 ? void 0 : _b.call(_a, options);
|
9022
8915
|
return options;
|
9023
8916
|
}
|
9024
|
-
function
|
9025
|
-
useCachedRequest(request) || queueRequest(request);
|
9026
|
-
}
|
9027
|
-
function useCachedRequest(newRequest) {
|
8917
|
+
function useCachedRequest(request) {
|
9028
8918
|
let cachedRequest;
|
9029
|
-
if (
|
9030
|
-
up.puts('up.request()', 'Re-using previous request to %s %s',
|
9031
|
-
if (!
|
8919
|
+
if (request.willCache() && (cachedRequest = cache.get(request))) {
|
8920
|
+
up.puts('up.request()', 'Re-using previous request to %s %s', request.method, request.url);
|
8921
|
+
if (!request.preload) {
|
9032
8922
|
queue.promoteToForeground(cachedRequest);
|
9033
8923
|
}
|
9034
|
-
|
8924
|
+
request.followState(cachedRequest);
|
8925
|
+
request.fromCache = true;
|
9035
8926
|
return true;
|
9036
8927
|
}
|
9037
8928
|
}
|
9038
8929
|
function queueRequest(request) {
|
8930
|
+
if (request.preload && !request.isSafe()) {
|
8931
|
+
up.fail('Will not preload request to %s', request.description);
|
8932
|
+
}
|
9039
8933
|
handleCaching(request);
|
9040
8934
|
queue.asap(request);
|
9041
8935
|
return true;
|
9042
8936
|
}
|
9043
8937
|
function handleCaching(request) {
|
9044
8938
|
if (request.willCache()) {
|
9045
|
-
cache.
|
8939
|
+
cache.set(request, request);
|
9046
8940
|
}
|
9047
|
-
u.always(request, function (response) {
|
8941
|
+
return u.always(request, function (response) {
|
9048
8942
|
var _a, _b, _c, _d;
|
9049
8943
|
let expireCache = (_b = (_a = response.expireCache) !== null && _a !== void 0 ? _a : request.expireCache) !== null && _b !== void 0 ? _b : u.evalOption(config.expireCache, request, response);
|
9050
8944
|
if (expireCache) {
|
@@ -9055,7 +8949,7 @@ up.network = (function () {
|
|
9055
8949
|
cache.evict(evictCache, { except: request });
|
9056
8950
|
}
|
9057
8951
|
if (cache.get(request)) {
|
9058
|
-
cache.
|
8952
|
+
cache.set(request, request);
|
9059
8953
|
}
|
9060
8954
|
if (!response.ok) {
|
9061
8955
|
cache.evict(request);
|
@@ -9266,7 +9160,6 @@ up.layer = (function () {
|
|
9266
9160
|
options.baseLayer = stack.get('current', Object.assign(Object.assign({}, options), { normalizeLayerOptions: false }));
|
9267
9161
|
}
|
9268
9162
|
function build(options, beforeNew) {
|
9269
|
-
var _a;
|
9270
9163
|
const { mode } = options;
|
9271
9164
|
const { Class } = config[mode];
|
9272
9165
|
const configs = u.reverse(modeConfigs(mode));
|
@@ -9274,7 +9167,6 @@ up.layer = (function () {
|
|
9274
9167
|
if (handleDeprecatedConfig) {
|
9275
9168
|
configs.forEach(handleDeprecatedConfig);
|
9276
9169
|
}
|
9277
|
-
(_a = options.openAnimation) !== null && _a !== void 0 ? _a : (options.openAnimation = u.pluckKey(options, 'animation'));
|
9278
9170
|
options = u.mergeDefined(...configs, { mode, stack }, options);
|
9279
9171
|
if (beforeNew) {
|
9280
9172
|
options = beforeNew(options);
|
@@ -9538,22 +9430,16 @@ up.link = (function () {
|
|
9538
9430
|
}
|
9539
9431
|
function preload(link, options) {
|
9540
9432
|
link = up.fragment.get(link);
|
9541
|
-
|
9542
|
-
|
9543
|
-
return Promise.reject(new up.Error(issue));
|
9433
|
+
if (!shouldPreload()) {
|
9434
|
+
return Promise.reject(new up.Error('Link preloading is disabled'));
|
9544
9435
|
}
|
9545
9436
|
const guardEvent = up.event.build('up:link:preload', { log: ['Preloading link %o', link] });
|
9546
9437
|
return follow(link, Object.assign(Object.assign({ abortable: false }, options), { guardEvent, preload: true }));
|
9547
9438
|
}
|
9548
|
-
function
|
9549
|
-
|
9550
|
-
|
9551
|
-
}
|
9552
|
-
else if (!isSafe(link)) {
|
9553
|
-
return 'Will not preload an unsafe link';
|
9554
|
-
}
|
9439
|
+
function shouldPreload() {
|
9440
|
+
let goodConnection = u.negate(up.network.shouldReduceRequests);
|
9441
|
+
return u.evalAutoOption(config.preloadEnabled, goodConnection);
|
9555
9442
|
}
|
9556
|
-
const autoPreloadEnabled = u.negate(up.network.shouldReduceRequests);
|
9557
9443
|
function followMethod(link, options = {}) {
|
9558
9444
|
return u.normalizeMethod(options.method || link.getAttribute('up-method') || link.getAttribute('data-method'));
|
9559
9445
|
}
|