@internetarchive/collection-browser 1.14.12 → 1.14.13
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/.editorconfig +29 -29
- package/.husky/pre-commit +4 -4
- package/LICENSE +661 -661
- package/README.md +83 -83
- package/dist/index.d.ts +9 -9
- package/dist/index.js +9 -9
- package/dist/src/app-root.d.ts +83 -83
- package/dist/src/app-root.js +412 -412
- package/dist/src/assets/img/icons/arrow-left.d.ts +2 -2
- package/dist/src/assets/img/icons/arrow-left.js +2 -2
- package/dist/src/assets/img/icons/arrow-right.d.ts +2 -2
- package/dist/src/assets/img/icons/arrow-right.js +2 -2
- package/dist/src/assets/img/icons/chevron.d.ts +2 -2
- package/dist/src/assets/img/icons/chevron.js +2 -2
- package/dist/src/assets/img/icons/contract.d.ts +2 -2
- package/dist/src/assets/img/icons/contract.js +2 -2
- package/dist/src/assets/img/icons/empty-query.d.ts +2 -2
- package/dist/src/assets/img/icons/empty-query.js +2 -2
- package/dist/src/assets/img/icons/expand.d.ts +2 -2
- package/dist/src/assets/img/icons/expand.js +2 -2
- package/dist/src/assets/img/icons/eye-closed.d.ts +2 -2
- package/dist/src/assets/img/icons/eye-closed.js +2 -2
- package/dist/src/assets/img/icons/eye.d.ts +2 -2
- package/dist/src/assets/img/icons/eye.js +2 -2
- package/dist/src/assets/img/icons/favorite-filled.d.ts +1 -1
- package/dist/src/assets/img/icons/favorite-filled.js +2 -2
- package/dist/src/assets/img/icons/login-required.d.ts +1 -1
- package/dist/src/assets/img/icons/login-required.js +2 -2
- package/dist/src/assets/img/icons/mediatype/account.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/account.js +2 -2
- package/dist/src/assets/img/icons/mediatype/audio.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/audio.js +2 -2
- package/dist/src/assets/img/icons/mediatype/collection.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/collection.js +2 -2
- package/dist/src/assets/img/icons/mediatype/data.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/data.js +2 -2
- package/dist/src/assets/img/icons/mediatype/etree.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/etree.js +2 -2
- package/dist/src/assets/img/icons/mediatype/film.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/film.js +2 -2
- package/dist/src/assets/img/icons/mediatype/images.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/images.js +2 -2
- package/dist/src/assets/img/icons/mediatype/radio.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/radio.js +2 -2
- package/dist/src/assets/img/icons/mediatype/search.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/search.js +2 -2
- package/dist/src/assets/img/icons/mediatype/software.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/software.js +2 -2
- package/dist/src/assets/img/icons/mediatype/texts.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/texts.js +2 -2
- package/dist/src/assets/img/icons/mediatype/tv.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/tv.js +2 -2
- package/dist/src/assets/img/icons/mediatype/video.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/video.js +2 -2
- package/dist/src/assets/img/icons/mediatype/web.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/web.js +2 -2
- package/dist/src/assets/img/icons/null-result.d.ts +2 -2
- package/dist/src/assets/img/icons/null-result.js +2 -2
- package/dist/src/assets/img/icons/restricted.d.ts +1 -1
- package/dist/src/assets/img/icons/restricted.js +2 -2
- package/dist/src/assets/img/icons/reviews.d.ts +1 -1
- package/dist/src/assets/img/icons/reviews.js +2 -2
- package/dist/src/assets/img/icons/upload.d.ts +1 -1
- package/dist/src/assets/img/icons/upload.js +2 -2
- package/dist/src/assets/img/icons/views.d.ts +1 -1
- package/dist/src/assets/img/icons/views.js +2 -2
- package/dist/src/circular-activity-indicator.d.ts +5 -5
- package/dist/src/circular-activity-indicator.js +17 -17
- package/dist/src/collection-browser.d.ts +534 -534
- package/dist/src/collection-browser.js +1897 -1897
- package/dist/src/collection-facets/facet-row.d.ts +30 -30
- package/dist/src/collection-facets/facet-row.js +115 -115
- package/dist/src/collection-facets/facet-tombstone-row.d.ts +5 -5
- package/dist/src/collection-facets/facet-tombstone-row.js +15 -15
- package/dist/src/collection-facets/facets-template.d.ts +17 -17
- package/dist/src/collection-facets/facets-template.js +114 -114
- package/dist/src/collection-facets/more-facets-content.d.ts +77 -77
- package/dist/src/collection-facets/more-facets-content.js +359 -359
- package/dist/src/collection-facets/more-facets-pagination.d.ts +36 -36
- package/dist/src/collection-facets/more-facets-pagination.js +196 -196
- package/dist/src/collection-facets/toggle-switch.d.ts +41 -41
- package/dist/src/collection-facets/toggle-switch.js +94 -94
- package/dist/src/collection-facets.d.ts +104 -104
- package/dist/src/collection-facets.js +506 -506
- package/dist/src/empty-placeholder.d.ts +23 -23
- package/dist/src/empty-placeholder.js +74 -74
- package/dist/src/expanded-date-picker.d.ts +43 -43
- package/dist/src/expanded-date-picker.js +109 -109
- package/dist/src/language-code-handler/language-code-handler.d.ts +37 -37
- package/dist/src/language-code-handler/language-code-handler.js +26 -26
- package/dist/src/language-code-handler/language-code-mapping.d.ts +1 -1
- package/dist/src/language-code-handler/language-code-mapping.js +562 -562
- package/dist/src/manage/manage-bar.d.ts +26 -26
- package/dist/src/manage/manage-bar.js +53 -53
- package/dist/src/mediatype/mediatype-config.d.ts +3 -3
- package/dist/src/mediatype/mediatype-config.js +91 -91
- package/dist/src/models.d.ts +180 -180
- package/dist/src/models.js +269 -269
- package/dist/src/restoration-state-handler.d.ts +70 -70
- package/dist/src/restoration-state-handler.js +355 -355
- package/dist/src/selected-facets.d.ts +67 -0
- package/dist/src/selected-facets.js +149 -0
- package/dist/src/selected-facets.js.map +1 -0
- package/dist/src/sort-filter-bar/alpha-bar-tooltip.d.ts +6 -6
- package/dist/src/sort-filter-bar/alpha-bar-tooltip.js +24 -24
- package/dist/src/sort-filter-bar/alpha-bar.d.ts +21 -21
- package/dist/src/sort-filter-bar/alpha-bar.js +128 -128
- package/dist/src/sort-filter-bar/img/compact.d.ts +1 -1
- package/dist/src/sort-filter-bar/img/compact.js +2 -2
- package/dist/src/sort-filter-bar/img/list.d.ts +1 -1
- package/dist/src/sort-filter-bar/img/list.js +2 -2
- package/dist/src/sort-filter-bar/img/sort-toggle-disabled.d.ts +1 -1
- package/dist/src/sort-filter-bar/img/sort-toggle-disabled.js +2 -2
- package/dist/src/sort-filter-bar/img/sort-toggle-down.d.ts +1 -1
- package/dist/src/sort-filter-bar/img/sort-toggle-down.js +2 -2
- package/dist/src/sort-filter-bar/img/sort-toggle-up.d.ts +1 -1
- package/dist/src/sort-filter-bar/img/sort-toggle-up.js +2 -2
- package/dist/src/sort-filter-bar/img/sort-triangle.d.ts +1 -1
- package/dist/src/sort-filter-bar/img/sort-triangle.js +2 -2
- package/dist/src/sort-filter-bar/img/tile.d.ts +1 -1
- package/dist/src/sort-filter-bar/img/tile.js +2 -2
- package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +210 -210
- package/dist/src/sort-filter-bar/sort-filter-bar.js +644 -644
- package/dist/src/styles/item-image-styles.d.ts +8 -8
- package/dist/src/styles/item-image-styles.js +9 -9
- package/dist/src/styles/sr-only.d.ts +1 -1
- package/dist/src/styles/sr-only.js +2 -2
- package/dist/src/tiles/base-tile-component.d.ts +19 -19
- package/dist/src/tiles/base-tile-component.js +63 -63
- package/dist/src/tiles/collection-browser-loading-tile.d.ts +5 -5
- package/dist/src/tiles/collection-browser-loading-tile.js +15 -15
- package/dist/src/tiles/grid/account-tile.d.ts +18 -18
- package/dist/src/tiles/grid/account-tile.js +72 -72
- package/dist/src/tiles/grid/collection-tile.d.ts +15 -15
- package/dist/src/tiles/grid/collection-tile.js +80 -80
- package/dist/src/tiles/grid/item-tile.d.ts +27 -27
- package/dist/src/tiles/grid/item-tile.js +134 -134
- package/dist/src/tiles/grid/search-tile.d.ts +10 -10
- package/dist/src/tiles/grid/search-tile.js +51 -51
- package/dist/src/tiles/grid/styles/tile-grid-shared-styles.d.ts +1 -1
- package/dist/src/tiles/grid/styles/tile-grid-shared-styles.js +8 -8
- package/dist/src/tiles/grid/tile-stats.d.ts +11 -11
- package/dist/src/tiles/grid/tile-stats.js +48 -48
- package/dist/src/tiles/hover/hover-pane-controller.d.ts +219 -219
- package/dist/src/tiles/hover/hover-pane-controller.js +352 -352
- package/dist/src/tiles/hover/tile-hover-pane.d.ts +15 -15
- package/dist/src/tiles/hover/tile-hover-pane.js +38 -38
- package/dist/src/tiles/image-block.d.ts +17 -17
- package/dist/src/tiles/image-block.js +73 -73
- package/dist/src/tiles/item-image.d.ts +36 -36
- package/dist/src/tiles/item-image.js +127 -127
- package/dist/src/tiles/list/tile-list-compact-header.d.ts +6 -6
- package/dist/src/tiles/list/tile-list-compact-header.js +38 -38
- package/dist/src/tiles/list/tile-list-compact.d.ts +15 -15
- package/dist/src/tiles/list/tile-list-compact.js +114 -114
- package/dist/src/tiles/list/tile-list.d.ts +46 -46
- package/dist/src/tiles/list/tile-list.js +302 -302
- package/dist/src/tiles/mediatype-icon.d.ts +9 -9
- package/dist/src/tiles/mediatype-icon.js +47 -47
- package/dist/src/tiles/overlay/icon-overlay.d.ts +10 -10
- package/dist/src/tiles/overlay/icon-overlay.js +40 -40
- package/dist/src/tiles/overlay/icon-text-overlay.d.ts +9 -9
- package/dist/src/tiles/overlay/icon-text-overlay.js +38 -38
- package/dist/src/tiles/overlay/text-overlay.d.ts +10 -10
- package/dist/src/tiles/overlay/text-overlay.js +42 -42
- package/dist/src/tiles/text-snippet-block.d.ts +27 -27
- package/dist/src/tiles/text-snippet-block.js +73 -73
- package/dist/src/tiles/tile-dispatcher.d.ts +64 -64
- package/dist/src/tiles/tile-dispatcher.js +231 -231
- package/dist/src/tiles/tile-display-value-provider.d.ts +43 -43
- package/dist/src/tiles/tile-display-value-provider.js +80 -80
- package/dist/src/utils/analytics-events.d.ts +25 -25
- package/dist/src/utils/analytics-events.js +27 -27
- package/dist/src/utils/array-equals.d.ts +4 -4
- package/dist/src/utils/array-equals.js +10 -10
- package/dist/src/utils/format-count.d.ts +7 -7
- package/dist/src/utils/format-count.js +76 -76
- package/dist/src/utils/format-date.d.ts +2 -2
- package/dist/src/utils/format-date.js +25 -25
- package/dist/src/utils/format-unit-size.d.ts +2 -2
- package/dist/src/utils/format-unit-size.js +33 -33
- package/dist/src/utils/local-date-from-utc.d.ts +9 -9
- package/dist/src/utils/local-date-from-utc.js +15 -15
- package/dist/src/utils/sha1.d.ts +2 -2
- package/dist/src/utils/sha1.js +8 -8
- package/dist/test/collection-browser.test.d.ts +1 -1
- package/dist/test/collection-browser.test.js +1137 -1137
- package/dist/test/collection-facets/facet-row.test.d.ts +1 -1
- package/dist/test/collection-facets/facet-row.test.js +206 -206
- package/dist/test/collection-facets/facets-template.test.d.ts +1 -1
- package/dist/test/collection-facets/facets-template.test.js +105 -105
- package/dist/test/collection-facets/more-facets-content.test.d.ts +1 -1
- package/dist/test/collection-facets/more-facets-content.test.js +133 -133
- package/dist/test/collection-facets/more-facets-pagination.test.d.ts +1 -1
- package/dist/test/collection-facets/more-facets-pagination.test.js +117 -117
- package/dist/test/collection-facets/toggle-switch.test.d.ts +1 -1
- package/dist/test/collection-facets/toggle-switch.test.js +73 -73
- package/dist/test/collection-facets.test.d.ts +2 -2
- package/dist/test/collection-facets.test.js +651 -651
- package/dist/test/empty-placeholder.test.d.ts +1 -1
- package/dist/test/empty-placeholder.test.js +63 -63
- package/dist/test/expanded-date-picker.test.d.ts +1 -1
- package/dist/test/expanded-date-picker.test.js +95 -95
- package/dist/test/icon-overlay.test.d.ts +1 -1
- package/dist/test/icon-overlay.test.js +24 -24
- package/dist/test/image-block.test.d.ts +1 -1
- package/dist/test/image-block.test.js +48 -48
- package/dist/test/item-image.test.d.ts +1 -1
- package/dist/test/item-image.test.js +86 -86
- package/dist/test/manage/manage-bar.test.d.ts +1 -1
- package/dist/test/manage/manage-bar.test.js +72 -72
- package/dist/test/mediatype-config.test.d.ts +1 -1
- package/dist/test/mediatype-config.test.js +16 -16
- package/dist/test/mocks/mock-analytics-handler.d.ts +10 -10
- package/dist/test/mocks/mock-analytics-handler.js +15 -15
- package/dist/test/mocks/mock-collection-name-cache.d.ts +9 -9
- package/dist/test/mocks/mock-collection-name-cache.js +17 -17
- package/dist/test/mocks/mock-search-responses.d.ts +21 -21
- package/dist/test/mocks/mock-search-responses.js +709 -709
- package/dist/test/mocks/mock-search-service.d.ts +15 -15
- package/dist/test/mocks/mock-search-service.js +50 -50
- package/dist/test/restoration-state-handler.test.d.ts +1 -1
- package/dist/test/restoration-state-handler.test.js +270 -270
- package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.d.ts +1 -1
- package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js +12 -12
- package/dist/test/sort-filter-bar/alpha-bar.test.d.ts +1 -1
- package/dist/test/sort-filter-bar/alpha-bar.test.js +73 -73
- package/dist/test/sort-filter-bar/sort-filter-bar.test.d.ts +1 -1
- package/dist/test/sort-filter-bar/sort-filter-bar.test.js +386 -386
- package/dist/test/text-overlay.test.d.ts +1 -1
- package/dist/test/text-overlay.test.js +48 -48
- package/dist/test/text-snippet-block.test.d.ts +1 -1
- package/dist/test/text-snippet-block.test.js +57 -57
- package/dist/test/tile-stats.test.d.ts +1 -1
- package/dist/test/tile-stats.test.js +33 -33
- package/dist/test/tiles/grid/account-tile.test.d.ts +1 -1
- package/dist/test/tiles/grid/account-tile.test.js +76 -76
- package/dist/test/tiles/grid/collection-tile.test.d.ts +1 -1
- package/dist/test/tiles/grid/collection-tile.test.js +73 -73
- package/dist/test/tiles/grid/item-tile.test.d.ts +1 -1
- package/dist/test/tiles/grid/item-tile.test.js +254 -254
- package/dist/test/tiles/grid/search-tile.test.d.ts +1 -1
- package/dist/test/tiles/grid/search-tile.test.js +51 -51
- package/dist/test/tiles/hover/hover-pane-controller.test.d.ts +1 -1
- package/dist/test/tiles/hover/hover-pane-controller.test.js +258 -258
- package/dist/test/tiles/hover/tile-hover-pane.test.d.ts +1 -1
- package/dist/test/tiles/hover/tile-hover-pane.test.js +13 -13
- package/dist/test/tiles/list/tile-list-compact.test.d.ts +1 -1
- package/dist/test/tiles/list/tile-list-compact.test.js +143 -143
- package/dist/test/tiles/list/tile-list.test.d.ts +1 -1
- package/dist/test/tiles/list/tile-list.test.js +242 -242
- package/dist/test/tiles/tile-dispatcher.test.d.ts +1 -1
- package/dist/test/tiles/tile-dispatcher.test.js +94 -94
- package/dist/test/tiles/tile-display-value-provider.test.d.ts +1 -1
- package/dist/test/tiles/tile-display-value-provider.test.js +141 -141
- package/dist/test/utils/array-equals.test.d.ts +1 -1
- package/dist/test/utils/array-equals.test.js +26 -26
- package/dist/test/utils/format-count.test.d.ts +1 -1
- package/dist/test/utils/format-count.test.js +23 -23
- package/dist/test/utils/format-date.test.d.ts +1 -1
- package/dist/test/utils/format-date.test.js +17 -17
- package/dist/test/utils/format-unit-size.test.d.ts +1 -1
- package/dist/test/utils/format-unit-size.test.js +17 -17
- package/dist/test/utils/local-date-from-utc.test.d.ts +1 -1
- package/dist/test/utils/local-date-from-utc.test.js +26 -26
- package/local.archive.org.cert +86 -86
- package/local.archive.org.key +27 -27
- package/package.json +4 -4
- package/renovate.json +6 -6
- package/src/selected-facets.ts +216 -0
- package/tsconfig.json +21 -21
- package/web-dev-server.config.mjs +30 -30
- package/web-test-runner.config.mjs +41 -41
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import { expect } from '@open-wc/testing';
|
|
2
|
-
import { formatDate } from '../../src/utils/format-date';
|
|
3
|
-
const testDate = new Date(2020, 11, 9);
|
|
4
|
-
describe('formatDate', () => {
|
|
5
|
-
it('returns blank when undefined date', () => {
|
|
6
|
-
expect(formatDate(undefined)).to.equal('');
|
|
7
|
-
});
|
|
8
|
-
it('returns short date when no DateFormat', () => {
|
|
9
|
-
expect(formatDate(testDate)).to.equal('Dec 2020');
|
|
10
|
-
});
|
|
11
|
-
it('returns long date when long DateFormat', () => {
|
|
12
|
-
expect(formatDate(testDate, 'long')).to.equal('Dec 09, 2020');
|
|
13
|
-
});
|
|
14
|
-
it('returns locale formatted date', () => {
|
|
15
|
-
expect(formatDate(testDate, 'long', 'de-DE')).to.equal('09. Dez. 2020');
|
|
16
|
-
});
|
|
17
|
-
});
|
|
1
|
+
import { expect } from '@open-wc/testing';
|
|
2
|
+
import { formatDate } from '../../src/utils/format-date';
|
|
3
|
+
const testDate = new Date(2020, 11, 9);
|
|
4
|
+
describe('formatDate', () => {
|
|
5
|
+
it('returns blank when undefined date', () => {
|
|
6
|
+
expect(formatDate(undefined)).to.equal('');
|
|
7
|
+
});
|
|
8
|
+
it('returns short date when no DateFormat', () => {
|
|
9
|
+
expect(formatDate(testDate)).to.equal('Dec 2020');
|
|
10
|
+
});
|
|
11
|
+
it('returns long date when long DateFormat', () => {
|
|
12
|
+
expect(formatDate(testDate, 'long')).to.equal('Dec 09, 2020');
|
|
13
|
+
});
|
|
14
|
+
it('returns locale formatted date', () => {
|
|
15
|
+
expect(formatDate(testDate, 'long', 'de-DE')).to.equal('09. Dez. 2020');
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
18
|
//# sourceMappingURL=format-date.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export {};
|
|
1
|
+
export {};
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import { expect } from '@open-wc/testing';
|
|
2
|
-
import { nothing } from 'lit';
|
|
3
|
-
import { formatUnitSize } from '../../src/utils/format-unit-size';
|
|
4
|
-
describe('formatUnitSize', () => {
|
|
5
|
-
it('returns blank when undefined number', () => {
|
|
6
|
-
expect(formatUnitSize(undefined, 1)).to.equal(nothing);
|
|
7
|
-
});
|
|
8
|
-
it('returns collection data is in singular form', () => {
|
|
9
|
-
expect(formatUnitSize(1025, 1)).to.equal('1 kilobyte');
|
|
10
|
-
});
|
|
11
|
-
it('return collection size data in kilobytes and plural form', () => {
|
|
12
|
-
expect(formatUnitSize(15000, 1)).to.equal('14.6 kilobytes');
|
|
13
|
-
});
|
|
14
|
-
it('return huge collection size data', () => {
|
|
15
|
-
expect(formatUnitSize(454154654134, 1)).to.equal('423 gigabytes');
|
|
16
|
-
});
|
|
17
|
-
});
|
|
1
|
+
import { expect } from '@open-wc/testing';
|
|
2
|
+
import { nothing } from 'lit';
|
|
3
|
+
import { formatUnitSize } from '../../src/utils/format-unit-size';
|
|
4
|
+
describe('formatUnitSize', () => {
|
|
5
|
+
it('returns blank when undefined number', () => {
|
|
6
|
+
expect(formatUnitSize(undefined, 1)).to.equal(nothing);
|
|
7
|
+
});
|
|
8
|
+
it('returns collection data is in singular form', () => {
|
|
9
|
+
expect(formatUnitSize(1025, 1)).to.equal('1 kilobyte');
|
|
10
|
+
});
|
|
11
|
+
it('return collection size data in kilobytes and plural form', () => {
|
|
12
|
+
expect(formatUnitSize(15000, 1)).to.equal('14.6 kilobytes');
|
|
13
|
+
});
|
|
14
|
+
it('return huge collection size data', () => {
|
|
15
|
+
expect(formatUnitSize(454154654134, 1)).to.equal('423 gigabytes');
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
18
|
//# sourceMappingURL=format-unit-size.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export {};
|
|
1
|
+
export {};
|
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
import { expect } from '@open-wc/testing';
|
|
2
|
-
import { localDateFromUTC, isFirstMillisecondOfUTCYear, } from '../../src/utils/local-date-from-utc';
|
|
3
|
-
describe('localDateFromUTC', () => {
|
|
4
|
-
it('converts dates from UTC to local timezone', async () => {
|
|
5
|
-
const date = new Date(1990, 1, 2, 3, 4, 5, 6);
|
|
6
|
-
const dateFromUTC = new Date(Date.UTC(1990, 1, 2, 3, 4, 5, 6));
|
|
7
|
-
expect(localDateFromUTC(date).toISOString()).to.equal(dateFromUTC.toISOString());
|
|
8
|
-
});
|
|
9
|
-
});
|
|
10
|
-
describe('isFirstMillisecondOfUTCYear', () => {
|
|
11
|
-
it('returns true when date is exactly Jan 1 at midnight in UTC', async () => {
|
|
12
|
-
const midnightOnNewYearsDay = new Date(2010, 0, 1, 0, 0, 0, 0);
|
|
13
|
-
expect(isFirstMillisecondOfUTCYear(midnightOnNewYearsDay)).to.be.true;
|
|
14
|
-
});
|
|
15
|
-
it('returns false when date is not exactly Jan 1 at midnight in UTC', async () => {
|
|
16
|
-
const oneMillisecondTooEarly = new Date(2009, 11, 31, 23, 59, 59, 999);
|
|
17
|
-
expect(isFirstMillisecondOfUTCYear(oneMillisecondTooEarly)).to.be.false;
|
|
18
|
-
const oneMillisecondTooLate = new Date(2010, 0, 1, 0, 0, 0, 1);
|
|
19
|
-
expect(isFirstMillisecondOfUTCYear(oneMillisecondTooLate)).to.be.false;
|
|
20
|
-
const middleOfTheYear = new Date(2010, 6, 1, 0, 0, 0, 0);
|
|
21
|
-
expect(isFirstMillisecondOfUTCYear(middleOfTheYear)).to.be.false;
|
|
22
|
-
});
|
|
23
|
-
it('returns false when no date provided', async () => {
|
|
24
|
-
expect(isFirstMillisecondOfUTCYear(undefined)).to.be.false;
|
|
25
|
-
});
|
|
26
|
-
});
|
|
1
|
+
import { expect } from '@open-wc/testing';
|
|
2
|
+
import { localDateFromUTC, isFirstMillisecondOfUTCYear, } from '../../src/utils/local-date-from-utc';
|
|
3
|
+
describe('localDateFromUTC', () => {
|
|
4
|
+
it('converts dates from UTC to local timezone', async () => {
|
|
5
|
+
const date = new Date(1990, 1, 2, 3, 4, 5, 6);
|
|
6
|
+
const dateFromUTC = new Date(Date.UTC(1990, 1, 2, 3, 4, 5, 6));
|
|
7
|
+
expect(localDateFromUTC(date).toISOString()).to.equal(dateFromUTC.toISOString());
|
|
8
|
+
});
|
|
9
|
+
});
|
|
10
|
+
describe('isFirstMillisecondOfUTCYear', () => {
|
|
11
|
+
it('returns true when date is exactly Jan 1 at midnight in UTC', async () => {
|
|
12
|
+
const midnightOnNewYearsDay = new Date(2010, 0, 1, 0, 0, 0, 0);
|
|
13
|
+
expect(isFirstMillisecondOfUTCYear(midnightOnNewYearsDay)).to.be.true;
|
|
14
|
+
});
|
|
15
|
+
it('returns false when date is not exactly Jan 1 at midnight in UTC', async () => {
|
|
16
|
+
const oneMillisecondTooEarly = new Date(2009, 11, 31, 23, 59, 59, 999);
|
|
17
|
+
expect(isFirstMillisecondOfUTCYear(oneMillisecondTooEarly)).to.be.false;
|
|
18
|
+
const oneMillisecondTooLate = new Date(2010, 0, 1, 0, 0, 0, 1);
|
|
19
|
+
expect(isFirstMillisecondOfUTCYear(oneMillisecondTooLate)).to.be.false;
|
|
20
|
+
const middleOfTheYear = new Date(2010, 6, 1, 0, 0, 0, 0);
|
|
21
|
+
expect(isFirstMillisecondOfUTCYear(middleOfTheYear)).to.be.false;
|
|
22
|
+
});
|
|
23
|
+
it('returns false when no date provided', async () => {
|
|
24
|
+
expect(isFirstMillisecondOfUTCYear(undefined)).to.be.false;
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
27
|
//# sourceMappingURL=local-date-from-utc.test.js.map
|
package/local.archive.org.cert
CHANGED
|
@@ -1,86 +1,86 @@
|
|
|
1
|
-
Certificate:
|
|
2
|
-
Data:
|
|
3
|
-
Version: 3 (0x2)
|
|
4
|
-
Serial Number: 1 (0x1)
|
|
5
|
-
Signature Algorithm: sha256WithRSAEncryption
|
|
6
|
-
Issuer: CN=devcert
|
|
7
|
-
Validity
|
|
8
|
-
Not Before: Apr 27 16:27:46 2022 GMT
|
|
9
|
-
Not After : Jul 30 16:27:46 2024 GMT
|
|
10
|
-
Subject: CN=local.archive.org
|
|
11
|
-
Subject Public Key Info:
|
|
12
|
-
Public Key Algorithm: rsaEncryption
|
|
13
|
-
Public-Key: (2048 bit)
|
|
14
|
-
Modulus:
|
|
15
|
-
00:a9:54:ca:34:ff:8b:32:02:39:97:61:bd:f5:12:
|
|
16
|
-
5c:4a:d0:87:2e:d6:42:63:72:ea:b4:90:95:cc:4a:
|
|
17
|
-
ef:5a:66:09:9f:1d:08:0d:b2:f4:2e:b3:55:59:9c:
|
|
18
|
-
0f:77:37:1e:d7:a3:5c:b7:3d:81:84:fc:55:af:20:
|
|
19
|
-
e7:3c:bd:9e:2b:2b:9e:d1:95:9d:14:90:70:7c:99:
|
|
20
|
-
78:f1:dd:42:2b:fd:87:b9:09:f0:f6:50:c7:90:41:
|
|
21
|
-
de:e2:ee:dd:a0:4a:4d:de:20:6a:e8:1b:81:7f:d9:
|
|
22
|
-
17:0d:f5:f2:a1:dc:89:d8:e9:89:9c:ff:40:b7:0e:
|
|
23
|
-
bb:16:db:d1:e0:67:5f:24:de:3b:b8:18:b8:a6:dd:
|
|
24
|
-
d5:26:8a:2a:a4:f2:03:b1:a8:15:23:31:c9:65:de:
|
|
25
|
-
9b:5a:b0:f0:4f:ef:77:f1:8b:7b:91:95:a0:61:be:
|
|
26
|
-
1f:64:29:c6:2e:2c:03:1b:f0:91:96:b6:ab:fb:11:
|
|
27
|
-
b7:1c:41:bc:43:6e:1b:6f:28:88:40:bd:a8:47:28:
|
|
28
|
-
9e:a4:64:31:e0:a5:72:db:09:cb:b0:9e:7a:d5:d0:
|
|
29
|
-
7f:15:15:75:d4:d6:78:41:c9:a1:54:73:48:19:4f:
|
|
30
|
-
72:95:a1:31:b3:4c:81:41:13:43:d9:9b:8c:d0:2e:
|
|
31
|
-
29:09:a2:59:6b:15:6d:5c:93:22:03:f5:72:f0:46:
|
|
32
|
-
be:65
|
|
33
|
-
Exponent: 65537 (0x10001)
|
|
34
|
-
X509v3 extensions:
|
|
35
|
-
X509v3 Basic Constraints: critical
|
|
36
|
-
CA:FALSE
|
|
37
|
-
X509v3 Subject Key Identifier:
|
|
38
|
-
E1:20:A8:89:51:79:0C:23:66:20:B7:A5:A4:42:8F:40:7F:7E:C0:CE
|
|
39
|
-
X509v3 Authority Key Identifier:
|
|
40
|
-
keyid:A8:C7:C5:69:35:49:1B:B6:77:E7:2E:16:5B:B0:75:8C:B7:03:5C:04
|
|
41
|
-
DirName:/CN=devcert
|
|
42
|
-
serial:DB:1E:4C:08:75:57:8D:4E
|
|
43
|
-
|
|
44
|
-
X509v3 Key Usage: critical
|
|
45
|
-
Digital Signature, Key Encipherment
|
|
46
|
-
X509v3 Extended Key Usage:
|
|
47
|
-
TLS Web Server Authentication
|
|
48
|
-
X509v3 Subject Alternative Name:
|
|
49
|
-
DNS:local.archive.org, DNS:*.local.archive.org
|
|
50
|
-
Signature Algorithm: sha256WithRSAEncryption
|
|
51
|
-
5a:20:54:0b:6f:c3:35:e6:70:c1:bd:5c:58:e8:cf:7b:73:33:
|
|
52
|
-
38:80:70:c1:1c:60:2a:ea:5c:0c:eb:63:6a:15:48:fe:4d:f6:
|
|
53
|
-
18:89:e1:89:73:40:45:52:7d:bc:3a:d6:0e:d3:65:2c:e7:b9:
|
|
54
|
-
ab:3b:c6:ea:6e:74:74:39:4f:53:3f:bb:59:d9:91:83:db:92:
|
|
55
|
-
96:32:97:25:5f:c2:8d:85:ce:b3:c7:b1:4d:37:b7:bd:81:de:
|
|
56
|
-
f7:9f:34:5b:12:70:21:a8:03:8d:94:ed:d7:41:7f:2a:87:30:
|
|
57
|
-
bd:4f:07:22:b2:9a:06:ab:bc:41:2c:2f:7c:be:e0:a2:90:60:
|
|
58
|
-
21:79:d4:a1:08:26:c1:f4:83:b2:0a:ff:7d:0a:15:dc:ed:d0:
|
|
59
|
-
49:f9:37:ad:fe:68:d7:59:9d:f8:25:4e:10:01:bf:a5:be:ec:
|
|
60
|
-
21:a8:bf:77:6c:ff:d4:b7:d4:11:9c:43:4a:64:e8:31:76:9a:
|
|
61
|
-
01:3a:54:d9:c0:8a:a6:2c:7a:df:0a:c4:26:6e:19:52:26:9d:
|
|
62
|
-
25:b5:b1:db:6f:12:91:92:83:ab:6c:28:52:e1:e4:63:c2:cf:
|
|
63
|
-
45:f7:b4:da:7d:13:66:47:62:90:e6:8d:2c:b8:aa:d4:2b:8c:
|
|
64
|
-
d6:c0:5c:fc:83:e7:1f:71:5f:cb:38:b6:c3:a5:77:7d:97:04:
|
|
65
|
-
87:14:44:83
|
|
66
|
-
-----BEGIN CERTIFICATE-----
|
|
67
|
-
MIIDdjCCAl6gAwIBAgIBATANBgkqhkiG9w0BAQsFADASMRAwDgYDVQQDDAdkZXZj
|
|
68
|
-
ZXJ0MB4XDTIyMDQyNzE2Mjc0NloXDTI0MDczMDE2Mjc0NlowHDEaMBgGA1UEAwwR
|
|
69
|
-
bG9jYWwuYXJjaGl2ZS5vcmcwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
|
|
70
|
-
AQCpVMo0/4syAjmXYb31ElxK0Icu1kJjcuq0kJXMSu9aZgmfHQgNsvQus1VZnA93
|
|
71
|
-
Nx7Xo1y3PYGE/FWvIOc8vZ4rK57RlZ0UkHB8mXjx3UIr/Ye5CfD2UMeQQd7i7t2g
|
|
72
|
-
Sk3eIGroG4F/2RcN9fKh3InY6Ymc/0C3DrsW29HgZ18k3ju4GLim3dUmiiqk8gOx
|
|
73
|
-
qBUjMcll3ptasPBP73fxi3uRlaBhvh9kKcYuLAMb8JGWtqv7EbccQbxDbhtvKIhA
|
|
74
|
-
vahHKJ6kZDHgpXLbCcuwnnrV0H8VFXXU1nhByaFUc0gZT3KVoTGzTIFBE0PZm4zQ
|
|
75
|
-
LikJollrFW1ckyID9XLwRr5lAgMBAAGjgcwwgckwDAYDVR0TAQH/BAIwADAdBgNV
|
|
76
|
-
HQ4EFgQU4SCoiVF5DCNmILelpEKPQH9+wM4wQgYDVR0jBDswOYAUqMfFaTVJG7Z3
|
|
77
|
-
5y4WW7B1jLcDXAShFqQUMBIxEDAOBgNVBAMMB2RldmNlcnSCCQDbHkwIdVeNTjAO
|
|
78
|
-
BgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwMQYDVR0RBCowKIIR
|
|
79
|
-
bG9jYWwuYXJjaGl2ZS5vcmeCEyoubG9jYWwuYXJjaGl2ZS5vcmcwDQYJKoZIhvcN
|
|
80
|
-
AQELBQADggEBAFogVAtvwzXmcMG9XFjoz3tzMziAcMEcYCrqXAzrY2oVSP5N9hiJ
|
|
81
|
-
4YlzQEVSfbw61g7TZSznuas7xupudHQ5T1M/u1nZkYPbkpYylyVfwo2FzrPHsU03
|
|
82
|
-
t72B3vefNFsScCGoA42U7ddBfyqHML1PByKymgarvEEsL3y+4KKQYCF51KEIJsH0
|
|
83
|
-
g7IK/30KFdzt0En5N63+aNdZnfglThABv6W+7CGov3ds/9S31BGcQ0pk6DF2mgE6
|
|
84
|
-
VNnAiqYset8KxCZuGVImnSW1sdtvEpGSg6tsKFLh5GPCz0X3tNp9E2ZHYpDmjSy4
|
|
85
|
-
qtQrjNbAXPyD5x9xX8s4tsOld32XBIcURIM=
|
|
86
|
-
-----END CERTIFICATE-----
|
|
1
|
+
Certificate:
|
|
2
|
+
Data:
|
|
3
|
+
Version: 3 (0x2)
|
|
4
|
+
Serial Number: 1 (0x1)
|
|
5
|
+
Signature Algorithm: sha256WithRSAEncryption
|
|
6
|
+
Issuer: CN=devcert
|
|
7
|
+
Validity
|
|
8
|
+
Not Before: Apr 27 16:27:46 2022 GMT
|
|
9
|
+
Not After : Jul 30 16:27:46 2024 GMT
|
|
10
|
+
Subject: CN=local.archive.org
|
|
11
|
+
Subject Public Key Info:
|
|
12
|
+
Public Key Algorithm: rsaEncryption
|
|
13
|
+
Public-Key: (2048 bit)
|
|
14
|
+
Modulus:
|
|
15
|
+
00:a9:54:ca:34:ff:8b:32:02:39:97:61:bd:f5:12:
|
|
16
|
+
5c:4a:d0:87:2e:d6:42:63:72:ea:b4:90:95:cc:4a:
|
|
17
|
+
ef:5a:66:09:9f:1d:08:0d:b2:f4:2e:b3:55:59:9c:
|
|
18
|
+
0f:77:37:1e:d7:a3:5c:b7:3d:81:84:fc:55:af:20:
|
|
19
|
+
e7:3c:bd:9e:2b:2b:9e:d1:95:9d:14:90:70:7c:99:
|
|
20
|
+
78:f1:dd:42:2b:fd:87:b9:09:f0:f6:50:c7:90:41:
|
|
21
|
+
de:e2:ee:dd:a0:4a:4d:de:20:6a:e8:1b:81:7f:d9:
|
|
22
|
+
17:0d:f5:f2:a1:dc:89:d8:e9:89:9c:ff:40:b7:0e:
|
|
23
|
+
bb:16:db:d1:e0:67:5f:24:de:3b:b8:18:b8:a6:dd:
|
|
24
|
+
d5:26:8a:2a:a4:f2:03:b1:a8:15:23:31:c9:65:de:
|
|
25
|
+
9b:5a:b0:f0:4f:ef:77:f1:8b:7b:91:95:a0:61:be:
|
|
26
|
+
1f:64:29:c6:2e:2c:03:1b:f0:91:96:b6:ab:fb:11:
|
|
27
|
+
b7:1c:41:bc:43:6e:1b:6f:28:88:40:bd:a8:47:28:
|
|
28
|
+
9e:a4:64:31:e0:a5:72:db:09:cb:b0:9e:7a:d5:d0:
|
|
29
|
+
7f:15:15:75:d4:d6:78:41:c9:a1:54:73:48:19:4f:
|
|
30
|
+
72:95:a1:31:b3:4c:81:41:13:43:d9:9b:8c:d0:2e:
|
|
31
|
+
29:09:a2:59:6b:15:6d:5c:93:22:03:f5:72:f0:46:
|
|
32
|
+
be:65
|
|
33
|
+
Exponent: 65537 (0x10001)
|
|
34
|
+
X509v3 extensions:
|
|
35
|
+
X509v3 Basic Constraints: critical
|
|
36
|
+
CA:FALSE
|
|
37
|
+
X509v3 Subject Key Identifier:
|
|
38
|
+
E1:20:A8:89:51:79:0C:23:66:20:B7:A5:A4:42:8F:40:7F:7E:C0:CE
|
|
39
|
+
X509v3 Authority Key Identifier:
|
|
40
|
+
keyid:A8:C7:C5:69:35:49:1B:B6:77:E7:2E:16:5B:B0:75:8C:B7:03:5C:04
|
|
41
|
+
DirName:/CN=devcert
|
|
42
|
+
serial:DB:1E:4C:08:75:57:8D:4E
|
|
43
|
+
|
|
44
|
+
X509v3 Key Usage: critical
|
|
45
|
+
Digital Signature, Key Encipherment
|
|
46
|
+
X509v3 Extended Key Usage:
|
|
47
|
+
TLS Web Server Authentication
|
|
48
|
+
X509v3 Subject Alternative Name:
|
|
49
|
+
DNS:local.archive.org, DNS:*.local.archive.org
|
|
50
|
+
Signature Algorithm: sha256WithRSAEncryption
|
|
51
|
+
5a:20:54:0b:6f:c3:35:e6:70:c1:bd:5c:58:e8:cf:7b:73:33:
|
|
52
|
+
38:80:70:c1:1c:60:2a:ea:5c:0c:eb:63:6a:15:48:fe:4d:f6:
|
|
53
|
+
18:89:e1:89:73:40:45:52:7d:bc:3a:d6:0e:d3:65:2c:e7:b9:
|
|
54
|
+
ab:3b:c6:ea:6e:74:74:39:4f:53:3f:bb:59:d9:91:83:db:92:
|
|
55
|
+
96:32:97:25:5f:c2:8d:85:ce:b3:c7:b1:4d:37:b7:bd:81:de:
|
|
56
|
+
f7:9f:34:5b:12:70:21:a8:03:8d:94:ed:d7:41:7f:2a:87:30:
|
|
57
|
+
bd:4f:07:22:b2:9a:06:ab:bc:41:2c:2f:7c:be:e0:a2:90:60:
|
|
58
|
+
21:79:d4:a1:08:26:c1:f4:83:b2:0a:ff:7d:0a:15:dc:ed:d0:
|
|
59
|
+
49:f9:37:ad:fe:68:d7:59:9d:f8:25:4e:10:01:bf:a5:be:ec:
|
|
60
|
+
21:a8:bf:77:6c:ff:d4:b7:d4:11:9c:43:4a:64:e8:31:76:9a:
|
|
61
|
+
01:3a:54:d9:c0:8a:a6:2c:7a:df:0a:c4:26:6e:19:52:26:9d:
|
|
62
|
+
25:b5:b1:db:6f:12:91:92:83:ab:6c:28:52:e1:e4:63:c2:cf:
|
|
63
|
+
45:f7:b4:da:7d:13:66:47:62:90:e6:8d:2c:b8:aa:d4:2b:8c:
|
|
64
|
+
d6:c0:5c:fc:83:e7:1f:71:5f:cb:38:b6:c3:a5:77:7d:97:04:
|
|
65
|
+
87:14:44:83
|
|
66
|
+
-----BEGIN CERTIFICATE-----
|
|
67
|
+
MIIDdjCCAl6gAwIBAgIBATANBgkqhkiG9w0BAQsFADASMRAwDgYDVQQDDAdkZXZj
|
|
68
|
+
ZXJ0MB4XDTIyMDQyNzE2Mjc0NloXDTI0MDczMDE2Mjc0NlowHDEaMBgGA1UEAwwR
|
|
69
|
+
bG9jYWwuYXJjaGl2ZS5vcmcwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
|
|
70
|
+
AQCpVMo0/4syAjmXYb31ElxK0Icu1kJjcuq0kJXMSu9aZgmfHQgNsvQus1VZnA93
|
|
71
|
+
Nx7Xo1y3PYGE/FWvIOc8vZ4rK57RlZ0UkHB8mXjx3UIr/Ye5CfD2UMeQQd7i7t2g
|
|
72
|
+
Sk3eIGroG4F/2RcN9fKh3InY6Ymc/0C3DrsW29HgZ18k3ju4GLim3dUmiiqk8gOx
|
|
73
|
+
qBUjMcll3ptasPBP73fxi3uRlaBhvh9kKcYuLAMb8JGWtqv7EbccQbxDbhtvKIhA
|
|
74
|
+
vahHKJ6kZDHgpXLbCcuwnnrV0H8VFXXU1nhByaFUc0gZT3KVoTGzTIFBE0PZm4zQ
|
|
75
|
+
LikJollrFW1ckyID9XLwRr5lAgMBAAGjgcwwgckwDAYDVR0TAQH/BAIwADAdBgNV
|
|
76
|
+
HQ4EFgQU4SCoiVF5DCNmILelpEKPQH9+wM4wQgYDVR0jBDswOYAUqMfFaTVJG7Z3
|
|
77
|
+
5y4WW7B1jLcDXAShFqQUMBIxEDAOBgNVBAMMB2RldmNlcnSCCQDbHkwIdVeNTjAO
|
|
78
|
+
BgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwMQYDVR0RBCowKIIR
|
|
79
|
+
bG9jYWwuYXJjaGl2ZS5vcmeCEyoubG9jYWwuYXJjaGl2ZS5vcmcwDQYJKoZIhvcN
|
|
80
|
+
AQELBQADggEBAFogVAtvwzXmcMG9XFjoz3tzMziAcMEcYCrqXAzrY2oVSP5N9hiJ
|
|
81
|
+
4YlzQEVSfbw61g7TZSznuas7xupudHQ5T1M/u1nZkYPbkpYylyVfwo2FzrPHsU03
|
|
82
|
+
t72B3vefNFsScCGoA42U7ddBfyqHML1PByKymgarvEEsL3y+4KKQYCF51KEIJsH0
|
|
83
|
+
g7IK/30KFdzt0En5N63+aNdZnfglThABv6W+7CGov3ds/9S31BGcQ0pk6DF2mgE6
|
|
84
|
+
VNnAiqYset8KxCZuGVImnSW1sdtvEpGSg6tsKFLh5GPCz0X3tNp9E2ZHYpDmjSy4
|
|
85
|
+
qtQrjNbAXPyD5x9xX8s4tsOld32XBIcURIM=
|
|
86
|
+
-----END CERTIFICATE-----
|
package/local.archive.org.key
CHANGED
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
-----BEGIN RSA PRIVATE KEY-----
|
|
2
|
-
MIIEowIBAAKCAQEAqVTKNP+LMgI5l2G99RJcStCHLtZCY3LqtJCVzErvWmYJnx0I
|
|
3
|
-
DbL0LrNVWZwPdzce16Nctz2BhPxVryDnPL2eKyue0ZWdFJBwfJl48d1CK/2HuQnw
|
|
4
|
-
9lDHkEHe4u7doEpN3iBq6BuBf9kXDfXyodyJ2OmJnP9Atw67FtvR4GdfJN47uBi4
|
|
5
|
-
pt3VJooqpPIDsagVIzHJZd6bWrDwT+938Yt7kZWgYb4fZCnGLiwDG/CRlrar+xG3
|
|
6
|
-
HEG8Q24bbyiIQL2oRyiepGQx4KVy2wnLsJ561dB/FRV11NZ4QcmhVHNIGU9ylaEx
|
|
7
|
-
s0yBQRND2ZuM0C4pCaJZaxVtXJMiA/Vy8Ea+ZQIDAQABAoIBAAQgUdEazQyJ61da
|
|
8
|
-
BWP8b41PKYwlonaD7V47C7tvtAdy5xcegPy8eKDOs+y8FdBk4naEv5Sjhg10jK34
|
|
9
|
-
0kmzoTASHwuiZrKClosivkS+jIc/5VfH+zw1WbeVM1Y6VeI7DUy1Y4WGbhBsfNhV
|
|
10
|
-
PvVcx2smvbi6q5wKWtrCvomGW1YtngNBXJBPDWXysaVZdpF+6iWtw0RjWxbKEeMb
|
|
11
|
-
fjZ2sxl7h1EkTXxQR9pfl9WVgl6vRRXp1o+N71M14jp5t95xCyf49YzeEuZmc1Fc
|
|
12
|
-
dD77LNGcxr3kpkcQH5FdDP/spla+lR+JKb78FVqhEdPP3WcJ1qcrAstG2npAfKpj
|
|
13
|
-
MD9AhsECgYEA3BddOjeK9epaGbTZRKgmIOSgGEHo8WbVHqBHhyQKAb8kFVEPn+Hl
|
|
14
|
-
sq2EEQZf0ZJ/HhlVBc0Gj4/2PI8vj1Lzh+QWJnFu+XN/doOm5X62Ctz13qC5oWJp
|
|
15
|
-
foQ9HXcg4GAXhm/o3KUIntLrUwoi/UW8YOSRFXS8RSJtuh1rI5P2jjECgYEAxPVP
|
|
16
|
-
o/9+12Fc2ujdm8cQ1tB1Ab9Z73/vloG/xit0uMp89OqXUHEmtud/WzaIQvNxdaWi
|
|
17
|
-
9/BqAG9Oml51T3cuYPxNDkSmtd2fieq9Nh17dw8zYGMk0cSYeecgvCJOrRIJnebW
|
|
18
|
-
Glyt8vzBb3eD6FzhZoVNOVYareainSP1cwl5YnUCgYAsr2m0OjayeyRT983tDJ7B
|
|
19
|
-
Kun+QtOCv7ghgbVEEOMfO6md0llzwq+aOXSI6Fxn9nBssgP7K4dbeoUqAoBLfzIG
|
|
20
|
-
sx50K6+2YebNLymhirp3NimNS+CkjZCRqVOnOdqo85mTKAGFWtSHOpegwnwcJB59
|
|
21
|
-
Jar3Sj43YygYE4T/Mjlq4QKBgQC8zUcdt2J4xl1Df6xHkuiic0tmdG6a9jHOPex+
|
|
22
|
-
49NM/NYR1Ptd4kmxVXKxFjJCs6jUlQYG1NBYQFrCAcBEf8PWtqSLA+YnOh6gD4R3
|
|
23
|
-
ZoWfGNQwFnoKF4HugU/Q6LYwk7TiR5B/zs30urQWzSOGT9rF8wyW5OJIR2kkZ373
|
|
24
|
-
WmKgrQKBgGaw32CMejz3wBpzOAXsYJcMsVfNCMD4bJ2EbXhYuY8HB8IEEv6wqMsp
|
|
25
|
-
wtXIgHJubfIiA3MlVsfaUkRdtHMHbN+Us1oynu6nByLhYlAMKpOsJFzPVHHwGB/1
|
|
26
|
-
g3WtzfFk5eOoZltJBm5K41zjS7lyr1t05648pT6niy9snu6LaF94
|
|
27
|
-
-----END RSA PRIVATE KEY-----
|
|
1
|
+
-----BEGIN RSA PRIVATE KEY-----
|
|
2
|
+
MIIEowIBAAKCAQEAqVTKNP+LMgI5l2G99RJcStCHLtZCY3LqtJCVzErvWmYJnx0I
|
|
3
|
+
DbL0LrNVWZwPdzce16Nctz2BhPxVryDnPL2eKyue0ZWdFJBwfJl48d1CK/2HuQnw
|
|
4
|
+
9lDHkEHe4u7doEpN3iBq6BuBf9kXDfXyodyJ2OmJnP9Atw67FtvR4GdfJN47uBi4
|
|
5
|
+
pt3VJooqpPIDsagVIzHJZd6bWrDwT+938Yt7kZWgYb4fZCnGLiwDG/CRlrar+xG3
|
|
6
|
+
HEG8Q24bbyiIQL2oRyiepGQx4KVy2wnLsJ561dB/FRV11NZ4QcmhVHNIGU9ylaEx
|
|
7
|
+
s0yBQRND2ZuM0C4pCaJZaxVtXJMiA/Vy8Ea+ZQIDAQABAoIBAAQgUdEazQyJ61da
|
|
8
|
+
BWP8b41PKYwlonaD7V47C7tvtAdy5xcegPy8eKDOs+y8FdBk4naEv5Sjhg10jK34
|
|
9
|
+
0kmzoTASHwuiZrKClosivkS+jIc/5VfH+zw1WbeVM1Y6VeI7DUy1Y4WGbhBsfNhV
|
|
10
|
+
PvVcx2smvbi6q5wKWtrCvomGW1YtngNBXJBPDWXysaVZdpF+6iWtw0RjWxbKEeMb
|
|
11
|
+
fjZ2sxl7h1EkTXxQR9pfl9WVgl6vRRXp1o+N71M14jp5t95xCyf49YzeEuZmc1Fc
|
|
12
|
+
dD77LNGcxr3kpkcQH5FdDP/spla+lR+JKb78FVqhEdPP3WcJ1qcrAstG2npAfKpj
|
|
13
|
+
MD9AhsECgYEA3BddOjeK9epaGbTZRKgmIOSgGEHo8WbVHqBHhyQKAb8kFVEPn+Hl
|
|
14
|
+
sq2EEQZf0ZJ/HhlVBc0Gj4/2PI8vj1Lzh+QWJnFu+XN/doOm5X62Ctz13qC5oWJp
|
|
15
|
+
foQ9HXcg4GAXhm/o3KUIntLrUwoi/UW8YOSRFXS8RSJtuh1rI5P2jjECgYEAxPVP
|
|
16
|
+
o/9+12Fc2ujdm8cQ1tB1Ab9Z73/vloG/xit0uMp89OqXUHEmtud/WzaIQvNxdaWi
|
|
17
|
+
9/BqAG9Oml51T3cuYPxNDkSmtd2fieq9Nh17dw8zYGMk0cSYeecgvCJOrRIJnebW
|
|
18
|
+
Glyt8vzBb3eD6FzhZoVNOVYareainSP1cwl5YnUCgYAsr2m0OjayeyRT983tDJ7B
|
|
19
|
+
Kun+QtOCv7ghgbVEEOMfO6md0llzwq+aOXSI6Fxn9nBssgP7K4dbeoUqAoBLfzIG
|
|
20
|
+
sx50K6+2YebNLymhirp3NimNS+CkjZCRqVOnOdqo85mTKAGFWtSHOpegwnwcJB59
|
|
21
|
+
Jar3Sj43YygYE4T/Mjlq4QKBgQC8zUcdt2J4xl1Df6xHkuiic0tmdG6a9jHOPex+
|
|
22
|
+
49NM/NYR1Ptd4kmxVXKxFjJCs6jUlQYG1NBYQFrCAcBEf8PWtqSLA+YnOh6gD4R3
|
|
23
|
+
ZoWfGNQwFnoKF4HugU/Q6LYwk7TiR5B/zs30urQWzSOGT9rF8wyW5OJIR2kkZ373
|
|
24
|
+
WmKgrQKBgGaw32CMejz3wBpzOAXsYJcMsVfNCMD4bJ2EbXhYuY8HB8IEEv6wqMsp
|
|
25
|
+
wtXIgHJubfIiA3MlVsfaUkRdtHMHbN+Us1oynu6nByLhYlAMKpOsJFzPVHHwGB/1
|
|
26
|
+
g3WtzfFk5eOoZltJBm5K41zjS7lyr1t05648pT6niy9snu6LaF94
|
|
27
|
+
-----END RSA PRIVATE KEY-----
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"description": "The Internet Archive Collection Browser.",
|
|
4
4
|
"license": "AGPL-3.0-only",
|
|
5
5
|
"author": "Internet Archive",
|
|
6
|
-
"version": "1.14.
|
|
6
|
+
"version": "1.14.13",
|
|
7
7
|
"main": "dist/index.js",
|
|
8
8
|
"module": "dist/index.js",
|
|
9
9
|
"scripts": {
|
|
@@ -23,16 +23,16 @@
|
|
|
23
23
|
"types": "dist/index.d.ts",
|
|
24
24
|
"dependencies": {
|
|
25
25
|
"@internetarchive/analytics-manager": "^0.1.2",
|
|
26
|
-
"@internetarchive/collection-name-cache": "^0.2.
|
|
26
|
+
"@internetarchive/collection-name-cache": "^0.2.16",
|
|
27
27
|
"@internetarchive/feature-feedback": "^0.1.4",
|
|
28
28
|
"@internetarchive/field-parsers": "^0.1.4",
|
|
29
|
-
"@internetarchive/histogram-date-range": "^1.
|
|
29
|
+
"@internetarchive/histogram-date-range": "^1.2.0",
|
|
30
30
|
"@internetarchive/ia-activity-indicator": "^0.0.4",
|
|
31
31
|
"@internetarchive/ia-dropdown": "^1.3.3",
|
|
32
32
|
"@internetarchive/infinite-scroller": "1.0.1",
|
|
33
33
|
"@internetarchive/local-cache": "^0.2.1",
|
|
34
34
|
"@internetarchive/modal-manager": "^0.2.8",
|
|
35
|
-
"@internetarchive/search-service": "^1.2.
|
|
35
|
+
"@internetarchive/search-service": "^1.2.4",
|
|
36
36
|
"@internetarchive/shared-resize-observer": "^0.2.0",
|
|
37
37
|
"@lit/localize": "^0.11.2",
|
|
38
38
|
"dompurify": "^2.3.6",
|
package/renovate.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
{
|
|
2
|
-
"extends": [
|
|
3
|
-
"config:base",
|
|
4
|
-
":preserveSemverRanges"
|
|
5
|
-
]
|
|
6
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"extends": [
|
|
3
|
+
"config:base",
|
|
4
|
+
":preserveSemverRanges"
|
|
5
|
+
]
|
|
6
|
+
}
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
import {
|
|
2
|
+
facetTitles,
|
|
3
|
+
type FacetBucket,
|
|
4
|
+
type FacetGroup,
|
|
5
|
+
type FacetOption,
|
|
6
|
+
type FacetValue,
|
|
7
|
+
lendingFacetDisplayNames,
|
|
8
|
+
LendingFacetKey,
|
|
9
|
+
} from './models';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* A record of all the facet buckets for a particular facet type, indexed by their bucket key
|
|
13
|
+
*/
|
|
14
|
+
export type FacetBucketsRecord = Record<FacetValue, FacetBucket>;
|
|
15
|
+
|
|
16
|
+
// Implementing this model ensures that every facet type is accounted for
|
|
17
|
+
type SelectedFacetsModel = Record<FacetOption, FacetBucketsRecord>;
|
|
18
|
+
|
|
19
|
+
const VALID_FACET_OPTIONS: Set<FacetOption> = new Set([
|
|
20
|
+
'collection',
|
|
21
|
+
'creator',
|
|
22
|
+
'language',
|
|
23
|
+
'lending',
|
|
24
|
+
'mediatype',
|
|
25
|
+
'subject',
|
|
26
|
+
'year',
|
|
27
|
+
]);
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* A class to hold, query, and manipulate state about selected/hidden facets.
|
|
31
|
+
*/
|
|
32
|
+
export class SelectedFacets implements SelectedFacetsModel {
|
|
33
|
+
readonly collection: FacetBucketsRecord = {};
|
|
34
|
+
|
|
35
|
+
readonly creator: FacetBucketsRecord = {};
|
|
36
|
+
|
|
37
|
+
readonly language: FacetBucketsRecord = {};
|
|
38
|
+
|
|
39
|
+
readonly lending: FacetBucketsRecord = {};
|
|
40
|
+
|
|
41
|
+
readonly mediatype: FacetBucketsRecord = {};
|
|
42
|
+
|
|
43
|
+
readonly subject: FacetBucketsRecord = {};
|
|
44
|
+
|
|
45
|
+
readonly year: FacetBucketsRecord = {};
|
|
46
|
+
|
|
47
|
+
constructor(initValues?: Partial<SelectedFacetsModel>) {
|
|
48
|
+
if (initValues) {
|
|
49
|
+
for (const [facetType, buckets] of Object.entries(initValues)) {
|
|
50
|
+
if (VALID_FACET_OPTIONS.has(facetType as FacetOption)) {
|
|
51
|
+
for (const [bucketKey, bucket] of Object.entries(buckets)) {
|
|
52
|
+
this[facetType as FacetOption][bucketKey] = { ...bucket };
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Executes the given function on every facet bucket within the current SelectedFacets object.
|
|
61
|
+
* @param fn The function to execute for each facet bucket
|
|
62
|
+
*/
|
|
63
|
+
forEach(
|
|
64
|
+
fn: (
|
|
65
|
+
bucket: FacetBucket,
|
|
66
|
+
bucketKey: FacetValue,
|
|
67
|
+
facetType: FacetOption
|
|
68
|
+
) => unknown
|
|
69
|
+
): void {
|
|
70
|
+
for (const [facetType, buckets] of Object.entries(
|
|
71
|
+
this as SelectedFacetsModel
|
|
72
|
+
)) {
|
|
73
|
+
for (const [bucketKey, bucket] of Object.entries(buckets)) {
|
|
74
|
+
fn(bucket, bucketKey, facetType as FacetOption);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Executes the given function on every facet type within the current SelectedFacets object.
|
|
81
|
+
* Similar to `SelectedFacets.forEach`, but operating on the full set of buckets for each type
|
|
82
|
+
* (rather than individual buckets).
|
|
83
|
+
* @param fn The function to execute for each facet type
|
|
84
|
+
*/
|
|
85
|
+
forEachFacetType(
|
|
86
|
+
fn: (buckets: FacetBucketsRecord, facetType: FacetOption) => unknown
|
|
87
|
+
): void {
|
|
88
|
+
for (const [facetType, buckets] of Object.entries(
|
|
89
|
+
this as SelectedFacetsModel
|
|
90
|
+
)) {
|
|
91
|
+
fn(buckets, facetType as FacetOption);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Like `Array.some`, returns whether the given predicate function returns true for
|
|
97
|
+
* any of the facet buckets contained in this object.
|
|
98
|
+
* @param predicate Function returning a boolean for each bucket
|
|
99
|
+
* @returns Whether any of the facet buckets satisfy the predicate
|
|
100
|
+
*/
|
|
101
|
+
some(
|
|
102
|
+
predicate: (
|
|
103
|
+
bucket: FacetBucket,
|
|
104
|
+
bucketKey: FacetValue,
|
|
105
|
+
facetType: FacetOption
|
|
106
|
+
) => boolean
|
|
107
|
+
): boolean {
|
|
108
|
+
for (const [facetType, buckets] of Object.entries(
|
|
109
|
+
this as SelectedFacetsModel
|
|
110
|
+
)) {
|
|
111
|
+
for (const [bucketKey, bucket] of Object.entries(buckets)) {
|
|
112
|
+
if (predicate(bucket, bucketKey, facetType as FacetOption)) return true;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
return false;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Like `Array.every`, returns whether the given predicate function returns true for
|
|
121
|
+
* *all* of the facet buckets contained in this object.
|
|
122
|
+
* @param predicate Function returning a boolean for each bucket
|
|
123
|
+
* @returns Whether all of the facet buckets satisfy the predicate
|
|
124
|
+
*/
|
|
125
|
+
every(
|
|
126
|
+
predicate: (
|
|
127
|
+
bucket: FacetBucket,
|
|
128
|
+
bucketKey: FacetValue,
|
|
129
|
+
facetType: FacetOption
|
|
130
|
+
) => boolean
|
|
131
|
+
): boolean {
|
|
132
|
+
for (const [facetType, buckets] of Object.entries(
|
|
133
|
+
this as SelectedFacetsModel
|
|
134
|
+
)) {
|
|
135
|
+
for (const [bucketKey, bucket] of Object.entries(buckets)) {
|
|
136
|
+
if (!predicate(bucket, bucketKey, facetType as FacetOption))
|
|
137
|
+
return false;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
return true;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Returns a new SelectedFacets object deeply cloned from this one (same contents).
|
|
146
|
+
*/
|
|
147
|
+
clone(): SelectedFacets {
|
|
148
|
+
return new SelectedFacets(this);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Returns a new SelectedFacets object cloned from this one with all of the given `otherFacets`
|
|
153
|
+
* applied overtop. Facets from this object will be overwritten by those in `otherFacets`
|
|
154
|
+
* that have the same facet type and bucket key.
|
|
155
|
+
*
|
|
156
|
+
* @param otherFacets The other SelectedFacets object to merge into this one.
|
|
157
|
+
*/
|
|
158
|
+
merge(otherFacets?: SelectedFacets): SelectedFacets {
|
|
159
|
+
const merged = this.clone();
|
|
160
|
+
otherFacets?.forEach((bucket, bucketKey, facetType) => {
|
|
161
|
+
merged[facetType][bucketKey] = { ...bucket };
|
|
162
|
+
});
|
|
163
|
+
|
|
164
|
+
return merged;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* Returns a new SelectedFacets object with facet buckets normalized, such that any
|
|
169
|
+
* buckets with a state of 'none' are removed entirely.
|
|
170
|
+
*/
|
|
171
|
+
normalize(): SelectedFacets {
|
|
172
|
+
const normalized = this.clone();
|
|
173
|
+
normalized.forEach((bucket, bucketKey, facetType) => {
|
|
174
|
+
if (bucket.state === 'none') {
|
|
175
|
+
delete normalized[facetType][bucketKey];
|
|
176
|
+
}
|
|
177
|
+
});
|
|
178
|
+
|
|
179
|
+
return normalized;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
/**
|
|
183
|
+
* Converts this SelectedFacets object into an array of equivalent FacetGroups.
|
|
184
|
+
*/
|
|
185
|
+
toFacetGroups(): FacetGroup[] {
|
|
186
|
+
const facetGroups: Record<string, FacetGroup> = {};
|
|
187
|
+
|
|
188
|
+
this.forEach((bucket, bucketKey, facetType) => {
|
|
189
|
+
const title = facetTitles[facetType];
|
|
190
|
+
let displayText = bucketKey;
|
|
191
|
+
|
|
192
|
+
// For lending facets, convert the key to a more readable format
|
|
193
|
+
if (facetType === 'lending') {
|
|
194
|
+
displayText =
|
|
195
|
+
lendingFacetDisplayNames[bucketKey as LendingFacetKey] ?? bucketKey;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
if (!facetGroups[facetType]) {
|
|
199
|
+
facetGroups[facetType] = {
|
|
200
|
+
title,
|
|
201
|
+
key: facetType,
|
|
202
|
+
buckets: [],
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
facetGroups[facetType].buckets.push({
|
|
207
|
+
displayText,
|
|
208
|
+
key: bucketKey,
|
|
209
|
+
count: bucket.count,
|
|
210
|
+
state: bucket.state,
|
|
211
|
+
});
|
|
212
|
+
});
|
|
213
|
+
|
|
214
|
+
return Object.values(facetGroups);
|
|
215
|
+
}
|
|
216
|
+
}
|