inferno_core 0.4.43 → 0.5.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.
- checksums.yaml +4 -4
- data/lib/inferno/apps/cli/execute/console_outputter.rb +152 -0
- data/lib/inferno/apps/cli/execute.rb +269 -0
- data/lib/inferno/apps/cli/main.rb +73 -4
- data/lib/inferno/apps/cli/templates/.env.development +2 -1
- data/lib/inferno/apps/cli/templates/.env.production +2 -1
- data/lib/inferno/apps/cli/templates/.env.test +1 -0
- data/lib/inferno/apps/cli/templates/.gitignore +1 -0
- data/lib/inferno/apps/cli/templates/config/nginx.background.conf.tt +15 -0
- data/lib/inferno/apps/cli/templates/docker-compose.background.yml.tt +5 -0
- data/lib/inferno/apps/cli/templates/docker-compose.yml.tt +4 -0
- data/lib/inferno/apps/cli.rb +0 -1
- data/lib/inferno/apps/web/controllers/test_runs/create.rb +7 -32
- data/lib/inferno/apps/web/serializers/serializer.rb +3 -0
- data/lib/inferno/config/boot/executor.rb +14 -0
- data/lib/inferno/dsl/auth_info.rb +77 -72
- data/lib/inferno/dsl/fhir_client_builder.rb +2 -2
- data/lib/inferno/dsl/fhir_resource_validation.rb +4 -0
- data/lib/inferno/dsl/http_client_builder.rb +2 -2
- data/lib/inferno/dsl/links.rb +100 -0
- data/lib/inferno/dsl/runnable.rb +6 -1
- data/lib/inferno/entities/has_runnable.rb +1 -1
- data/lib/inferno/entities/request.rb +2 -2
- data/lib/inferno/entities/test.rb +4 -4
- data/lib/inferno/entities/test_group.rb +2 -2
- data/lib/inferno/entities/test_suite.rb +2 -24
- data/lib/inferno/exceptions.rb +12 -0
- data/lib/inferno/ext/fhir_models.rb +3 -3
- data/lib/inferno/jobs.rb +4 -4
- data/lib/inferno/public/237.bundle.js +1 -0
- data/lib/inferno/public/assets.json +1 -1
- data/lib/inferno/public/bundle.js +42 -63
- data/lib/inferno/public/bundle.js.LICENSE.txt +5 -33
- data/lib/inferno/repositories/in_memory_repository.rb +5 -8
- data/lib/inferno/repositories/repository.rb +1 -1
- data/lib/inferno/result_summarizer.rb +1 -1
- data/lib/inferno/test_runner.rb +2 -2
- data/lib/inferno/utils/middleware/request_logger.rb +1 -1
- data/lib/inferno/utils/persist_inputs.rb +30 -0
- data/lib/inferno/utils/preset_template_generator.rb +1 -1
- data/lib/inferno/utils/verify_runnable.rb +15 -0
- data/lib/inferno/version.rb +1 -1
- data/spec/factories/result.rb +4 -0
- data/spec/fixtures/basic_test_group.rb +2 -1
- data/spec/fixtures/run_as_group_test_group.rb +11 -0
- metadata +24 -171
- data/lib/inferno/public/175.bundle.js +0 -1
@@ -1,10 +1,3 @@
|
|
1
|
-
/*!
|
2
|
-
* Determine if an object is a Buffer
|
3
|
-
*
|
4
|
-
* @author Feross Aboukhadijeh <https://feross.org>
|
5
|
-
* @license MIT
|
6
|
-
*/
|
7
|
-
|
8
1
|
/*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT */
|
9
2
|
|
10
3
|
/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */
|
@@ -60,27 +53,15 @@
|
|
60
53
|
*/
|
61
54
|
|
62
55
|
/**
|
63
|
-
* @
|
64
|
-
* use-sync-external-store-shim.production.min.js
|
65
|
-
*
|
66
|
-
* Copyright (c) Facebook, Inc. and its affiliates.
|
67
|
-
*
|
68
|
-
* This source code is licensed under the MIT license found in the
|
69
|
-
* LICENSE file in the root directory of this source tree.
|
70
|
-
*/
|
71
|
-
|
72
|
-
/**
|
73
|
-
* @license React
|
74
|
-
* use-sync-external-store-shim/with-selector.production.min.js
|
75
|
-
*
|
76
|
-
* Copyright (c) Facebook, Inc. and its affiliates.
|
56
|
+
* @mui/styled-engine v6.1.1
|
77
57
|
*
|
58
|
+
* @license MIT
|
78
59
|
* This source code is licensed under the MIT license found in the
|
79
60
|
* LICENSE file in the root directory of this source tree.
|
80
61
|
*/
|
81
62
|
|
82
63
|
/**
|
83
|
-
* @remix-run/router v1.
|
64
|
+
* @remix-run/router v1.19.2
|
84
65
|
*
|
85
66
|
* Copyright (c) Remix Software Inc.
|
86
67
|
*
|
@@ -91,7 +72,7 @@
|
|
91
72
|
*/
|
92
73
|
|
93
74
|
/**
|
94
|
-
* React Router DOM v6.
|
75
|
+
* React Router DOM v6.26.2
|
95
76
|
*
|
96
77
|
* Copyright (c) Remix Software Inc.
|
97
78
|
*
|
@@ -102,7 +83,7 @@
|
|
102
83
|
*/
|
103
84
|
|
104
85
|
/**
|
105
|
-
* React Router v6.
|
86
|
+
* React Router v6.26.2
|
106
87
|
*
|
107
88
|
* Copyright (c) Remix Software Inc.
|
108
89
|
*
|
@@ -120,12 +101,3 @@
|
|
120
101
|
* This source code is licensed under the MIT license found in the
|
121
102
|
* LICENSE file in the root directory of this source tree.
|
122
103
|
*/
|
123
|
-
|
124
|
-
/** @license React v17.0.2
|
125
|
-
* react-is.production.min.js
|
126
|
-
*
|
127
|
-
* Copyright (c) Facebook, Inc. and its affiliates.
|
128
|
-
*
|
129
|
-
* This source code is licensed under the MIT license found in the
|
130
|
-
* LICENSE file in the root directory of this source tree.
|
131
|
-
*/
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'forwardable'
|
2
|
+
require_relative '../exceptions'
|
2
3
|
|
3
4
|
module Inferno
|
4
5
|
module Repositories
|
@@ -8,7 +9,10 @@ module Inferno
|
|
8
9
|
def_delegators 'self.class', :all, :all_by_id
|
9
10
|
|
10
11
|
def insert(entity)
|
12
|
+
raise Exceptions::DuplicateEntityIdException, entity.id if exists?(entity.id)
|
13
|
+
|
11
14
|
all << entity
|
15
|
+
all_by_id[entity.id.to_s] = entity
|
12
16
|
entity
|
13
17
|
end
|
14
18
|
|
@@ -17,7 +21,7 @@ module Inferno
|
|
17
21
|
end
|
18
22
|
|
19
23
|
def exists?(id)
|
20
|
-
all_by_id.
|
24
|
+
all_by_id.key?(id.to_s)
|
21
25
|
end
|
22
26
|
|
23
27
|
class << self
|
@@ -28,13 +32,6 @@ module Inferno
|
|
28
32
|
# @private
|
29
33
|
def all_by_id
|
30
34
|
@all_by_id ||= {}
|
31
|
-
@all_by_id.length == all.length ? @all_by_id : index_by_id
|
32
|
-
end
|
33
|
-
|
34
|
-
def index_by_id
|
35
|
-
@all_by_id = {}
|
36
|
-
all.each { |klass| @all_by_id[klass.id] = klass }
|
37
|
-
@all_by_id
|
38
35
|
end
|
39
36
|
end
|
40
37
|
end
|
data/lib/inferno/test_runner.rb
CHANGED
@@ -47,7 +47,7 @@ module Inferno
|
|
47
47
|
logger.info("#{status} in #{elapsed.in_milliseconds} ms")
|
48
48
|
return unless body.present?
|
49
49
|
|
50
|
-
body = body.is_a?(Array)
|
50
|
+
body = body.join if body.is_a?(Array)
|
51
51
|
|
52
52
|
if body.length > 100 && !verbose_logging?
|
53
53
|
logger.info("#{body[0..100]}...")
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module Inferno
|
2
|
+
module Utils
|
3
|
+
# @private
|
4
|
+
module PersistInputs
|
5
|
+
def persist_inputs(session_data_repo, params, test_run)
|
6
|
+
available_inputs = test_run.runnable.available_inputs
|
7
|
+
params[:inputs]&.each do |input_params|
|
8
|
+
input =
|
9
|
+
available_inputs
|
10
|
+
.find { |_, runnable_input| runnable_input.name == input_params[:name] }
|
11
|
+
&.last
|
12
|
+
|
13
|
+
if input.nil?
|
14
|
+
Inferno::Application['logger'].warn(
|
15
|
+
"Unknown input `#{input_params[:name]}` for #{test_run.runnable.id}: #{test_run.runnable.title}"
|
16
|
+
)
|
17
|
+
next
|
18
|
+
end
|
19
|
+
|
20
|
+
session_data_repo.save(
|
21
|
+
test_session_id: test_run.test_session_id,
|
22
|
+
name: input.name,
|
23
|
+
value: input_params[:value],
|
24
|
+
type: input.type
|
25
|
+
)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -19,7 +19,7 @@ module Inferno
|
|
19
19
|
{}.tap do |input|
|
20
20
|
input[:name] = original_input.delete(:name)
|
21
21
|
input[:value] = (original_input.delete(:default) if original_input.key? :default)
|
22
|
-
original_input.each { |key, value| input["_#{key}"
|
22
|
+
original_input.each { |key, value| input[:"_#{key}"] = value }
|
23
23
|
end
|
24
24
|
end
|
25
25
|
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require_relative '../exceptions'
|
2
|
+
|
3
|
+
module Inferno
|
4
|
+
module Utils
|
5
|
+
# @private
|
6
|
+
module VerifyRunnable
|
7
|
+
def verify_runnable(runnable, inputs, selected_suite_options)
|
8
|
+
missing_inputs = runnable&.missing_inputs(inputs, selected_suite_options)
|
9
|
+
user_runnable = runnable&.user_runnable?
|
10
|
+
raise Inferno::Exceptions::RequiredInputsNotFound, missing_inputs if missing_inputs&.any?
|
11
|
+
raise Inferno::Exceptions::NotUserRunnableException unless user_runnable
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
data/lib/inferno/version.rb
CHANGED
data/spec/factories/result.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: inferno_core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stephen MacVicar
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2024-
|
13
|
+
date: 2024-11-04 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activesupport
|
@@ -236,6 +236,20 @@ dependencies:
|
|
236
236
|
- - '='
|
237
237
|
- !ruby/object:Gem::Version
|
238
238
|
version: 3.11.0
|
239
|
+
- !ruby/object:Gem::Dependency
|
240
|
+
name: pastel
|
241
|
+
requirement: !ruby/object:Gem::Requirement
|
242
|
+
requirements:
|
243
|
+
- - "~>"
|
244
|
+
- !ruby/object:Gem::Version
|
245
|
+
version: 0.8.0
|
246
|
+
type: :runtime
|
247
|
+
prerelease: false
|
248
|
+
version_requirements: !ruby/object:Gem::Requirement
|
249
|
+
requirements:
|
250
|
+
- - "~>"
|
251
|
+
- !ruby/object:Gem::Version
|
252
|
+
version: 0.8.0
|
239
253
|
- !ruby/object:Gem::Dependency
|
240
254
|
name: pry
|
241
255
|
requirement: !ruby/object:Gem::Requirement
|
@@ -362,174 +376,6 @@ dependencies:
|
|
362
376
|
- - "~>"
|
363
377
|
- !ruby/object:Gem::Version
|
364
378
|
version: 0.7.1
|
365
|
-
- !ruby/object:Gem::Dependency
|
366
|
-
name: codecov
|
367
|
-
requirement: !ruby/object:Gem::Requirement
|
368
|
-
requirements:
|
369
|
-
- - '='
|
370
|
-
- !ruby/object:Gem::Version
|
371
|
-
version: 0.5.2
|
372
|
-
type: :development
|
373
|
-
prerelease: false
|
374
|
-
version_requirements: !ruby/object:Gem::Requirement
|
375
|
-
requirements:
|
376
|
-
- - '='
|
377
|
-
- !ruby/object:Gem::Version
|
378
|
-
version: 0.5.2
|
379
|
-
- !ruby/object:Gem::Dependency
|
380
|
-
name: database_cleaner-sequel
|
381
|
-
requirement: !ruby/object:Gem::Requirement
|
382
|
-
requirements:
|
383
|
-
- - "~>"
|
384
|
-
- !ruby/object:Gem::Version
|
385
|
-
version: '1.8'
|
386
|
-
type: :development
|
387
|
-
prerelease: false
|
388
|
-
version_requirements: !ruby/object:Gem::Requirement
|
389
|
-
requirements:
|
390
|
-
- - "~>"
|
391
|
-
- !ruby/object:Gem::Version
|
392
|
-
version: '1.8'
|
393
|
-
- !ruby/object:Gem::Dependency
|
394
|
-
name: factory_bot
|
395
|
-
requirement: !ruby/object:Gem::Requirement
|
396
|
-
requirements:
|
397
|
-
- - "~>"
|
398
|
-
- !ruby/object:Gem::Version
|
399
|
-
version: '6.1'
|
400
|
-
type: :development
|
401
|
-
prerelease: false
|
402
|
-
version_requirements: !ruby/object:Gem::Requirement
|
403
|
-
requirements:
|
404
|
-
- - "~>"
|
405
|
-
- !ruby/object:Gem::Version
|
406
|
-
version: '6.1'
|
407
|
-
- !ruby/object:Gem::Dependency
|
408
|
-
name: rack-test
|
409
|
-
requirement: !ruby/object:Gem::Requirement
|
410
|
-
requirements:
|
411
|
-
- - "~>"
|
412
|
-
- !ruby/object:Gem::Version
|
413
|
-
version: '1.1'
|
414
|
-
type: :development
|
415
|
-
prerelease: false
|
416
|
-
version_requirements: !ruby/object:Gem::Requirement
|
417
|
-
requirements:
|
418
|
-
- - "~>"
|
419
|
-
- !ruby/object:Gem::Version
|
420
|
-
version: '1.1'
|
421
|
-
- !ruby/object:Gem::Dependency
|
422
|
-
name: rspec
|
423
|
-
requirement: !ruby/object:Gem::Requirement
|
424
|
-
requirements:
|
425
|
-
- - "~>"
|
426
|
-
- !ruby/object:Gem::Version
|
427
|
-
version: '3.10'
|
428
|
-
type: :development
|
429
|
-
prerelease: false
|
430
|
-
version_requirements: !ruby/object:Gem::Requirement
|
431
|
-
requirements:
|
432
|
-
- - "~>"
|
433
|
-
- !ruby/object:Gem::Version
|
434
|
-
version: '3.10'
|
435
|
-
- !ruby/object:Gem::Dependency
|
436
|
-
name: rubocop
|
437
|
-
requirement: !ruby/object:Gem::Requirement
|
438
|
-
requirements:
|
439
|
-
- - "~>"
|
440
|
-
- !ruby/object:Gem::Version
|
441
|
-
version: '1.9'
|
442
|
-
type: :development
|
443
|
-
prerelease: false
|
444
|
-
version_requirements: !ruby/object:Gem::Requirement
|
445
|
-
requirements:
|
446
|
-
- - "~>"
|
447
|
-
- !ruby/object:Gem::Version
|
448
|
-
version: '1.9'
|
449
|
-
- !ruby/object:Gem::Dependency
|
450
|
-
name: rubocop-rake
|
451
|
-
requirement: !ruby/object:Gem::Requirement
|
452
|
-
requirements:
|
453
|
-
- - '='
|
454
|
-
- !ruby/object:Gem::Version
|
455
|
-
version: 0.5.1
|
456
|
-
type: :development
|
457
|
-
prerelease: false
|
458
|
-
version_requirements: !ruby/object:Gem::Requirement
|
459
|
-
requirements:
|
460
|
-
- - '='
|
461
|
-
- !ruby/object:Gem::Version
|
462
|
-
version: 0.5.1
|
463
|
-
- !ruby/object:Gem::Dependency
|
464
|
-
name: rubocop-rspec
|
465
|
-
requirement: !ruby/object:Gem::Requirement
|
466
|
-
requirements:
|
467
|
-
- - "~>"
|
468
|
-
- !ruby/object:Gem::Version
|
469
|
-
version: '2.1'
|
470
|
-
type: :development
|
471
|
-
prerelease: false
|
472
|
-
version_requirements: !ruby/object:Gem::Requirement
|
473
|
-
requirements:
|
474
|
-
- - "~>"
|
475
|
-
- !ruby/object:Gem::Version
|
476
|
-
version: '2.1'
|
477
|
-
- !ruby/object:Gem::Dependency
|
478
|
-
name: rubocop-sequel
|
479
|
-
requirement: !ruby/object:Gem::Requirement
|
480
|
-
requirements:
|
481
|
-
- - '='
|
482
|
-
- !ruby/object:Gem::Version
|
483
|
-
version: 0.1.0
|
484
|
-
type: :development
|
485
|
-
prerelease: false
|
486
|
-
version_requirements: !ruby/object:Gem::Requirement
|
487
|
-
requirements:
|
488
|
-
- - '='
|
489
|
-
- !ruby/object:Gem::Version
|
490
|
-
version: 0.1.0
|
491
|
-
- !ruby/object:Gem::Dependency
|
492
|
-
name: simplecov
|
493
|
-
requirement: !ruby/object:Gem::Requirement
|
494
|
-
requirements:
|
495
|
-
- - '='
|
496
|
-
- !ruby/object:Gem::Version
|
497
|
-
version: 0.21.2
|
498
|
-
type: :development
|
499
|
-
prerelease: false
|
500
|
-
version_requirements: !ruby/object:Gem::Requirement
|
501
|
-
requirements:
|
502
|
-
- - '='
|
503
|
-
- !ruby/object:Gem::Version
|
504
|
-
version: 0.21.2
|
505
|
-
- !ruby/object:Gem::Dependency
|
506
|
-
name: webmock
|
507
|
-
requirement: !ruby/object:Gem::Requirement
|
508
|
-
requirements:
|
509
|
-
- - "~>"
|
510
|
-
- !ruby/object:Gem::Version
|
511
|
-
version: '3.11'
|
512
|
-
type: :development
|
513
|
-
prerelease: false
|
514
|
-
version_requirements: !ruby/object:Gem::Requirement
|
515
|
-
requirements:
|
516
|
-
- - "~>"
|
517
|
-
- !ruby/object:Gem::Version
|
518
|
-
version: '3.11'
|
519
|
-
- !ruby/object:Gem::Dependency
|
520
|
-
name: yard
|
521
|
-
requirement: !ruby/object:Gem::Requirement
|
522
|
-
requirements:
|
523
|
-
- - '='
|
524
|
-
- !ruby/object:Gem::Version
|
525
|
-
version: 0.9.26
|
526
|
-
type: :development
|
527
|
-
prerelease: false
|
528
|
-
version_requirements: !ruby/object:Gem::Requirement
|
529
|
-
requirements:
|
530
|
-
- - '='
|
531
|
-
- !ruby/object:Gem::Version
|
532
|
-
version: 0.9.26
|
533
379
|
description: Inferno Core is an open source tool for testing data exchanges enabled
|
534
380
|
by the FHIR standand
|
535
381
|
email:
|
@@ -544,6 +390,8 @@ files:
|
|
544
390
|
- lib/inferno.rb
|
545
391
|
- lib/inferno/apps/cli.rb
|
546
392
|
- lib/inferno/apps/cli/console.rb
|
393
|
+
- lib/inferno/apps/cli/execute.rb
|
394
|
+
- lib/inferno/apps/cli/execute/console_outputter.rb
|
547
395
|
- lib/inferno/apps/cli/main.rb
|
548
396
|
- lib/inferno/apps/cli/migration.rb
|
549
397
|
- lib/inferno/apps/cli/new.rb
|
@@ -624,6 +472,7 @@ files:
|
|
624
472
|
- lib/inferno/config/application.rb
|
625
473
|
- lib/inferno/config/boot.rb
|
626
474
|
- lib/inferno/config/boot/db.rb
|
475
|
+
- lib/inferno/config/boot/executor.rb
|
627
476
|
- lib/inferno/config/boot/logging.rb
|
628
477
|
- lib/inferno/config/boot/presets.rb
|
629
478
|
- lib/inferno/config/boot/sidekiq.rb
|
@@ -655,6 +504,7 @@ files:
|
|
655
504
|
- lib/inferno/dsl/input_output_handling.rb
|
656
505
|
- lib/inferno/dsl/jwks.json
|
657
506
|
- lib/inferno/dsl/jwks.rb
|
507
|
+
- lib/inferno/dsl/links.rb
|
658
508
|
- lib/inferno/dsl/messages.rb
|
659
509
|
- lib/inferno/dsl/oauth_credentials.rb
|
660
510
|
- lib/inferno/dsl/request_storage.rb
|
@@ -691,8 +541,8 @@ files:
|
|
691
541
|
- lib/inferno/jobs/invoke_validator_session.rb
|
692
542
|
- lib/inferno/jobs/resume_test_run.rb
|
693
543
|
- lib/inferno/public/0e0b993fd6ff351f435ff1c2938daf2d.png
|
694
|
-
- lib/inferno/public/175.bundle.js
|
695
544
|
- lib/inferno/public/217.bundle.js
|
545
|
+
- lib/inferno/public/237.bundle.js
|
696
546
|
- lib/inferno/public/a5cd39450ab0336db73c5e57228b649d.png
|
697
547
|
- lib/inferno/public/assets.json
|
698
548
|
- lib/inferno/public/bundle.js
|
@@ -726,9 +576,11 @@ files:
|
|
726
576
|
- lib/inferno/utils/middleware/request_logger.rb
|
727
577
|
- lib/inferno/utils/migration.rb
|
728
578
|
- lib/inferno/utils/named_thor_actions.rb
|
579
|
+
- lib/inferno/utils/persist_inputs.rb
|
729
580
|
- lib/inferno/utils/preset_processor.rb
|
730
581
|
- lib/inferno/utils/preset_template_generator.rb
|
731
582
|
- lib/inferno/utils/static_assets.rb
|
583
|
+
- lib/inferno/utils/verify_runnable.rb
|
732
584
|
- lib/inferno/version.rb
|
733
585
|
- spec/factories/header.rb
|
734
586
|
- spec/factories/message.rb
|
@@ -739,6 +591,7 @@ files:
|
|
739
591
|
- spec/fixtures/auth_info_constants.rb
|
740
592
|
- spec/fixtures/basic_test_group.rb
|
741
593
|
- spec/fixtures/basic_test_suite.rb
|
594
|
+
- spec/fixtures/run_as_group_test_group.rb
|
742
595
|
- spec/support/factory_bot.rb
|
743
596
|
homepage: https://github.com/inferno-framework/inferno-core
|
744
597
|
licenses:
|
@@ -1 +0,0 @@
|
|
1
|
-
"use strict";(self.webpackChunkinferno_web_app=self.webpackChunkinferno_web_app||[]).push([[175],{9175:(t,e,n)=>{n.r(e),n.d(e,{getCLS:()=>d,getFCP:()=>m,getFID:()=>v,getLCP:()=>h,getTTFB:()=>S});var i,a,r=function(t){return{name:t,value:arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1,delta:0,entries:[],id:"".concat(Date.now(),"-").concat(Math.floor(8999999999999*Math.random())+1e12),isFinal:!1}},o=function(t,e){try{if(PerformanceObserver.supportedEntryTypes.includes(t)){var n=new PerformanceObserver((function(t){return t.getEntries().map(e)}));return n.observe({type:t,buffered:!0}),n}}catch(t){}},s=!1,u=!1,c=function(t){s=!t.persisted},p=function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];u||(addEventListener("pagehide",c),addEventListener("beforeunload",(function(){})),u=!0),addEventListener("visibilitychange",(function(e){var n=e.timeStamp;"hidden"===document.visibilityState&&t({timeStamp:n,isUnloading:s})}),{capture:!0,once:e})},l=function(t,e,n,i){var a;return function(){n&&e.isFinal&&n.disconnect(),e.value>=0&&(i||e.isFinal||"hidden"===document.visibilityState)&&(e.delta=e.value-(a||0),(e.delta||e.isFinal||void 0===a)&&(t(e),a=e.value))}},d=function(t){var e,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=r("CLS",0),a=function(t){t.hadRecentInput||(i.value+=t.value,i.entries.push(t),e())},s=o("layout-shift",a);s&&(e=l(t,i,s,n),p((function(t){var n=t.isUnloading;s.takeRecords().map(a),n&&(i.isFinal=!0),e()})))},f=function(){return void 0===i&&(i="hidden"===document.visibilityState?0:1/0,p((function(t){var e=t.timeStamp;return i=e}),!0)),{get timeStamp(){return i}}},m=function(t){var e,n=r("FCP"),i=f(),a=o("paint",(function(t){"first-contentful-paint"===t.name&&t.startTime<i.timeStamp&&(n.value=t.startTime,n.isFinal=!0,n.entries.push(t),e())}));a&&(e=l(t,n,a))},v=function(t){var e=r("FID"),n=f(),i=function(t){t.startTime<n.timeStamp&&(e.value=t.processingStart-t.startTime,e.entries.push(t),e.isFinal=!0,s())},a=o("first-input",i),s=l(t,e,a);a?p((function(){a.takeRecords().map(i),a.disconnect()}),!0):window.perfMetrics&&window.perfMetrics.onFirstInputDelay&&window.perfMetrics.onFirstInputDelay((function(t,i){i.timeStamp<n.timeStamp&&(e.value=t,e.isFinal=!0,e.entries=[{entryType:"first-input",name:i.type,target:i.target,cancelable:i.cancelable,startTime:i.timeStamp,processingStart:i.timeStamp+t}],s())}))},g=function(){return a||(a=new Promise((function(t){return["scroll","keydown","pointerdown"].map((function(e){addEventListener(e,t,{once:!0,passive:!0,capture:!0})}))}))),a},h=function(t){var e,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=r("LCP"),a=f(),s=function(t){var n=t.startTime;n<a.timeStamp?(i.value=n,i.entries.push(t)):i.isFinal=!0,e()},u=o("largest-contentful-paint",s);if(u){e=l(t,i,u,n);var c=function(){i.isFinal||(u.takeRecords().map(s),i.isFinal=!0,e())};g().then(c),p(c,!0)}},S=function(t){var e,n=r("TTFB");e=function(){try{var e=performance.getEntriesByType("navigation")[0]||function(){var t=performance.timing,e={entryType:"navigation",startTime:0};for(var n in t)"navigationStart"!==n&&"toJSON"!==n&&(e[n]=Math.max(t[n]-t.navigationStart,0));return e}();n.value=n.delta=e.responseStart,n.entries=[e],n.isFinal=!0,t(n)}catch(t){}},"complete"===document.readyState?setTimeout(e,0):addEventListener("pageshow",e)}}}]);
|