Spaces:
Running
Running
Add extension
Browse files- extension/chart.xkcd.min.js +0 -0
- extension/icon.png +0 -0
- extension/manifest.json +16 -0
- extension/popup.html +54 -0
- extension/popup.js +140 -0
- package-lock.json +146 -146
- privacy_policy.md +27 -0
extension/chart.xkcd.min.js
ADDED
The diff for this file is too large to render.
See raw diff
|
|
extension/icon.png
ADDED
extension/manifest.json
ADDED
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"name": "Like History",
|
3 |
+
"description": "A chrome extension showing like history graph of current HuggingFace project",
|
4 |
+
"homepage_url": "https://like-history.ai",
|
5 |
+
"author": "timqian",
|
6 |
+
"version": "2.0",
|
7 |
+
"manifest_version": 3,
|
8 |
+
"action": {
|
9 |
+
"default_popup": "./popup.html"
|
10 |
+
},
|
11 |
+
"host_permissions": ["https://huggingface.co/"],
|
12 |
+
"icons": {
|
13 |
+
"128": "icon.png"
|
14 |
+
},
|
15 |
+
"permissions": ["activeTab"]
|
16 |
+
}
|
extension/popup.html
ADDED
@@ -0,0 +1,54 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html>
|
2 |
+
<html>
|
3 |
+
|
4 |
+
<head>
|
5 |
+
<title>Like History</title>
|
6 |
+
<style>
|
7 |
+
.container {
|
8 |
+
display: flex;
|
9 |
+
justify-content: center;
|
10 |
+
align-items: center;
|
11 |
+
width: 600px;
|
12 |
+
height: 400px;
|
13 |
+
}
|
14 |
+
.line-chart {
|
15 |
+
display: block;
|
16 |
+
margin-left: auto;
|
17 |
+
margin-right: auto;
|
18 |
+
padding-right: 20pt;
|
19 |
+
width: 600px;
|
20 |
+
height: 400px;
|
21 |
+
}
|
22 |
+
h2 {
|
23 |
+
text-align: center;
|
24 |
+
}
|
25 |
+
.website-link {
|
26 |
+
font-family: xkcd;
|
27 |
+
display: block;
|
28 |
+
/** don't show underline**/
|
29 |
+
text-decoration: none;
|
30 |
+
/** color gray **/
|
31 |
+
color: #666666;
|
32 |
+
/** bigger size **/
|
33 |
+
font-size: 16px;
|
34 |
+
/** right **/
|
35 |
+
text-align: right;
|
36 |
+
/** margin right **/
|
37 |
+
margin-right: 10px;
|
38 |
+
}
|
39 |
+
</style>
|
40 |
+
</head>
|
41 |
+
|
42 |
+
<body>
|
43 |
+
<!-- Your popup's HTML content -->
|
44 |
+
<div class="container">
|
45 |
+
<svg class="line-chart"></svg>
|
46 |
+
</div>
|
47 |
+
<a class="website-link" style="font-family: 'xkcd';" href="https://like-history.ai"
|
48 |
+
target="_blank"
|
49 |
+
>🤗 like-history.ai</a>
|
50 |
+
<script src="./chart.xkcd.min.js"></script>
|
51 |
+
<script src="./popup.js"></script>
|
52 |
+
</body>
|
53 |
+
|
54 |
+
</html>
|
extension/popup.js
ADDED
@@ -0,0 +1,140 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
// get url of current tab
|
2 |
+
chrome.tabs.query({ active: true, currentWindow: true }, async function (tabs) {
|
3 |
+
const tab = tabs[0];
|
4 |
+
const url = tab.url;
|
5 |
+
const prefix = 'https://huggingface.co/';
|
6 |
+
|
7 |
+
if (!url.startsWith(prefix)) {
|
8 |
+
// show error message in .message
|
9 |
+
const message = document.querySelector('.container');
|
10 |
+
message.innerHTML = '<h2>Not a Hugging Face page.</h2>';
|
11 |
+
return;
|
12 |
+
}
|
13 |
+
|
14 |
+
// get project type and path
|
15 |
+
const [type, path] = getProjectTypeAndPath(url);
|
16 |
+
|
17 |
+
if (type === null) {
|
18 |
+
// show error message in .message
|
19 |
+
const message = document.querySelector('.container');
|
20 |
+
message.innerHTML = '<h2>No project found.</h2>';
|
21 |
+
return;
|
22 |
+
}
|
23 |
+
|
24 |
+
// get project info
|
25 |
+
const res = await fetch(`https://huggingface.co/api/${type}/${path}/likers?expand[]=likeAt`)
|
26 |
+
const likers = await res.json()
|
27 |
+
let likeHistory = transformLikesData(likers)
|
28 |
+
|
29 |
+
if (likeHistory.length > 40) {
|
30 |
+
// sample 20 points
|
31 |
+
const sampledLikeHistory = []
|
32 |
+
const step = Math.floor(likeHistory.length / 20)
|
33 |
+
for (let i = 0; i < likeHistory.length; i += step) {
|
34 |
+
sampledLikeHistory.push(likeHistory[i])
|
35 |
+
}
|
36 |
+
// Add the last point if it's not included
|
37 |
+
if (sampledLikeHistory[sampledLikeHistory.length - 1].x !== likeHistory[likeHistory.length - 1].x) {
|
38 |
+
sampledLikeHistory.push(likeHistory[likeHistory.length - 1])
|
39 |
+
}
|
40 |
+
likeHistory = sampledLikeHistory
|
41 |
+
}
|
42 |
+
|
43 |
+
// if likeHistory is empty, show error message
|
44 |
+
if (likeHistory.length === 0) {
|
45 |
+
const message = document.querySelector('.container');
|
46 |
+
message.innerHTML = '<h2>No likes found.</h2>';
|
47 |
+
return
|
48 |
+
}
|
49 |
+
|
50 |
+
const svg = document.querySelector('.line-chart');
|
51 |
+
|
52 |
+
new chartXkcd.XY(svg, {
|
53 |
+
title: 'Like History',
|
54 |
+
xLabel: 'Time',
|
55 |
+
yLabel: 'Likes',
|
56 |
+
data: {
|
57 |
+
datasets: [{
|
58 |
+
label: path,
|
59 |
+
data: likeHistory,
|
60 |
+
}],
|
61 |
+
},
|
62 |
+
options: {
|
63 |
+
// unxkcdify: true,
|
64 |
+
showLegend: false,
|
65 |
+
xTickCount: 3,
|
66 |
+
yTickCount: 4,
|
67 |
+
legendPosition: chartXkcd.config.positionType.upLeft,
|
68 |
+
showLine: true,
|
69 |
+
timeFormat: 'MM/DD/YYYY',
|
70 |
+
dotSize: 0.5,
|
71 |
+
dataColors: [
|
72 |
+
"#FBBF24", // Warm Yellow
|
73 |
+
"#60A5FA", // Light Blue
|
74 |
+
"#14B8A6", // Teal
|
75 |
+
"#A78BFA", // Soft Purple
|
76 |
+
"#FF8C00", // Orange
|
77 |
+
"#64748B", // Slate Gray
|
78 |
+
"#FB7185", // Coral Pink
|
79 |
+
"#6EE7B7", // Mint Green
|
80 |
+
"#2563EB", // Deep Blue
|
81 |
+
"#374151" // Charcoal
|
82 |
+
]
|
83 |
+
},
|
84 |
+
});
|
85 |
+
|
86 |
+
|
87 |
+
});
|
88 |
+
|
89 |
+
function getProjectTypeAndPath(url) {
|
90 |
+
// Define the possible project types
|
91 |
+
// Create a URL object to parse the given url
|
92 |
+
const parsedUrl = new URL(url);
|
93 |
+
|
94 |
+
// Extract the pathname from the URL and split it into parts
|
95 |
+
const pathParts = parsedUrl.pathname.split('/').filter(part => part.length > 0);
|
96 |
+
|
97 |
+
if (pathParts.length < 2) {
|
98 |
+
return [null, null];
|
99 |
+
}
|
100 |
+
|
101 |
+
|
102 |
+
// The project type should be the first part of the path
|
103 |
+
const type = pathParts[0];
|
104 |
+
console.log(type);
|
105 |
+
|
106 |
+
if (type !== 'spaces' && type !== 'datasets') {
|
107 |
+
// If the type is not spaces or datasets, it should be models
|
108 |
+
const actualType = 'models';
|
109 |
+
const path = pathParts.slice(0, 2).join('/');
|
110 |
+
return [actualType, path];
|
111 |
+
} else {
|
112 |
+
const path = pathParts.slice(1, 3).join('/');
|
113 |
+
return [type, path];
|
114 |
+
|
115 |
+
}
|
116 |
+
}
|
117 |
+
|
118 |
+
function transformLikesData(likesData) {
|
119 |
+
// Step 1
|
120 |
+
likesData.sort((a, b) => new Date(a.likedAt) - new Date(b.likedAt));
|
121 |
+
|
122 |
+
// Step 2
|
123 |
+
const cumulativeLikes = {};
|
124 |
+
let cumulativeCount = 0;
|
125 |
+
|
126 |
+
// Step 3
|
127 |
+
likesData.forEach(like => {
|
128 |
+
const date = like.likedAt
|
129 |
+
cumulativeCount++;
|
130 |
+
cumulativeLikes[date] = cumulativeCount;
|
131 |
+
});
|
132 |
+
|
133 |
+
// Step 4
|
134 |
+
const transformedData = Object.keys(cumulativeLikes).map(date => ({
|
135 |
+
x: date,
|
136 |
+
y: cumulativeLikes[date].toString()
|
137 |
+
}));
|
138 |
+
|
139 |
+
return transformedData;
|
140 |
+
}
|
package-lock.json
CHANGED
@@ -3185,80 +3185,6 @@
|
|
3185 |
}
|
3186 |
}
|
3187 |
},
|
3188 |
-
"node_modules/@rollup/plugin-babel": {
|
3189 |
-
"version": "5.3.1",
|
3190 |
-
"resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz",
|
3191 |
-
"integrity": "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==",
|
3192 |
-
"dependencies": {
|
3193 |
-
"@babel/helper-module-imports": "^7.10.4",
|
3194 |
-
"@rollup/pluginutils": "^3.1.0"
|
3195 |
-
},
|
3196 |
-
"engines": {
|
3197 |
-
"node": ">= 10.0.0"
|
3198 |
-
},
|
3199 |
-
"peerDependencies": {
|
3200 |
-
"@babel/core": "^7.0.0",
|
3201 |
-
"@types/babel__core": "^7.1.9",
|
3202 |
-
"rollup": "^1.20.0||^2.0.0"
|
3203 |
-
},
|
3204 |
-
"peerDependenciesMeta": {
|
3205 |
-
"@types/babel__core": {
|
3206 |
-
"optional": true
|
3207 |
-
}
|
3208 |
-
}
|
3209 |
-
},
|
3210 |
-
"node_modules/@rollup/plugin-node-resolve": {
|
3211 |
-
"version": "11.2.1",
|
3212 |
-
"resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz",
|
3213 |
-
"integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==",
|
3214 |
-
"dependencies": {
|
3215 |
-
"@rollup/pluginutils": "^3.1.0",
|
3216 |
-
"@types/resolve": "1.17.1",
|
3217 |
-
"builtin-modules": "^3.1.0",
|
3218 |
-
"deepmerge": "^4.2.2",
|
3219 |
-
"is-module": "^1.0.0",
|
3220 |
-
"resolve": "^1.19.0"
|
3221 |
-
},
|
3222 |
-
"engines": {
|
3223 |
-
"node": ">= 10.0.0"
|
3224 |
-
},
|
3225 |
-
"peerDependencies": {
|
3226 |
-
"rollup": "^1.20.0||^2.0.0"
|
3227 |
-
}
|
3228 |
-
},
|
3229 |
-
"node_modules/@rollup/plugin-replace": {
|
3230 |
-
"version": "2.4.2",
|
3231 |
-
"resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz",
|
3232 |
-
"integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==",
|
3233 |
-
"dependencies": {
|
3234 |
-
"@rollup/pluginutils": "^3.1.0",
|
3235 |
-
"magic-string": "^0.25.7"
|
3236 |
-
},
|
3237 |
-
"peerDependencies": {
|
3238 |
-
"rollup": "^1.20.0 || ^2.0.0"
|
3239 |
-
}
|
3240 |
-
},
|
3241 |
-
"node_modules/@rollup/pluginutils": {
|
3242 |
-
"version": "3.1.0",
|
3243 |
-
"resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz",
|
3244 |
-
"integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==",
|
3245 |
-
"dependencies": {
|
3246 |
-
"@types/estree": "0.0.39",
|
3247 |
-
"estree-walker": "^1.0.1",
|
3248 |
-
"picomatch": "^2.2.2"
|
3249 |
-
},
|
3250 |
-
"engines": {
|
3251 |
-
"node": ">= 8.0.0"
|
3252 |
-
},
|
3253 |
-
"peerDependencies": {
|
3254 |
-
"rollup": "^1.20.0||^2.0.0"
|
3255 |
-
}
|
3256 |
-
},
|
3257 |
-
"node_modules/@rollup/pluginutils/node_modules/@types/estree": {
|
3258 |
-
"version": "0.0.39",
|
3259 |
-
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz",
|
3260 |
-
"integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw=="
|
3261 |
-
},
|
3262 |
"node_modules/@rushstack/eslint-patch": {
|
3263 |
"version": "1.3.3",
|
3264 |
"resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.3.3.tgz",
|
@@ -13302,9 +13228,9 @@
|
|
13302 |
}
|
13303 |
},
|
13304 |
"node_modules/postcss": {
|
13305 |
-
"version": "8.4.
|
13306 |
-
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.
|
13307 |
-
"integrity": "sha512-
|
13308 |
"funding": [
|
13309 |
{
|
13310 |
"type": "opencollective",
|
@@ -15350,75 +15276,6 @@
|
|
15350 |
"url": "https://github.com/sponsors/isaacs"
|
15351 |
}
|
15352 |
},
|
15353 |
-
"node_modules/rollup": {
|
15354 |
-
"version": "2.79.1",
|
15355 |
-
"resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz",
|
15356 |
-
"integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==",
|
15357 |
-
"bin": {
|
15358 |
-
"rollup": "dist/bin/rollup"
|
15359 |
-
},
|
15360 |
-
"engines": {
|
15361 |
-
"node": ">=10.0.0"
|
15362 |
-
},
|
15363 |
-
"optionalDependencies": {
|
15364 |
-
"fsevents": "~2.3.2"
|
15365 |
-
}
|
15366 |
-
},
|
15367 |
-
"node_modules/rollup-plugin-terser": {
|
15368 |
-
"version": "7.0.2",
|
15369 |
-
"resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz",
|
15370 |
-
"integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==",
|
15371 |
-
"deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser",
|
15372 |
-
"dependencies": {
|
15373 |
-
"@babel/code-frame": "^7.10.4",
|
15374 |
-
"jest-worker": "^26.2.1",
|
15375 |
-
"serialize-javascript": "^4.0.0",
|
15376 |
-
"terser": "^5.0.0"
|
15377 |
-
},
|
15378 |
-
"peerDependencies": {
|
15379 |
-
"rollup": "^2.0.0"
|
15380 |
-
}
|
15381 |
-
},
|
15382 |
-
"node_modules/rollup-plugin-terser/node_modules/has-flag": {
|
15383 |
-
"version": "4.0.0",
|
15384 |
-
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
|
15385 |
-
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
|
15386 |
-
"engines": {
|
15387 |
-
"node": ">=8"
|
15388 |
-
}
|
15389 |
-
},
|
15390 |
-
"node_modules/rollup-plugin-terser/node_modules/jest-worker": {
|
15391 |
-
"version": "26.6.2",
|
15392 |
-
"resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz",
|
15393 |
-
"integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==",
|
15394 |
-
"dependencies": {
|
15395 |
-
"@types/node": "*",
|
15396 |
-
"merge-stream": "^2.0.0",
|
15397 |
-
"supports-color": "^7.0.0"
|
15398 |
-
},
|
15399 |
-
"engines": {
|
15400 |
-
"node": ">= 10.13.0"
|
15401 |
-
}
|
15402 |
-
},
|
15403 |
-
"node_modules/rollup-plugin-terser/node_modules/serialize-javascript": {
|
15404 |
-
"version": "4.0.0",
|
15405 |
-
"resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz",
|
15406 |
-
"integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==",
|
15407 |
-
"dependencies": {
|
15408 |
-
"randombytes": "^2.1.0"
|
15409 |
-
}
|
15410 |
-
},
|
15411 |
-
"node_modules/rollup-plugin-terser/node_modules/supports-color": {
|
15412 |
-
"version": "7.2.0",
|
15413 |
-
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
|
15414 |
-
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
|
15415 |
-
"dependencies": {
|
15416 |
-
"has-flag": "^4.0.0"
|
15417 |
-
},
|
15418 |
-
"engines": {
|
15419 |
-
"node": ">=8"
|
15420 |
-
}
|
15421 |
-
},
|
15422 |
"node_modules/run-parallel": {
|
15423 |
"version": "1.2.0",
|
15424 |
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
|
@@ -17593,6 +17450,80 @@
|
|
17593 |
"ajv": ">=8"
|
17594 |
}
|
17595 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
17596 |
"node_modules/workbox-build/node_modules/ajv": {
|
17597 |
"version": "8.12.0",
|
17598 |
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
|
@@ -17622,11 +17553,69 @@
|
|
17622 |
"node": ">=10"
|
17623 |
}
|
17624 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
17625 |
"node_modules/workbox-build/node_modules/json-schema-traverse": {
|
17626 |
"version": "1.0.0",
|
17627 |
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
|
17628 |
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
|
17629 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
17630 |
"node_modules/workbox-build/node_modules/source-map": {
|
17631 |
"version": "0.8.0-beta.0",
|
17632 |
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz",
|
@@ -17638,6 +17627,17 @@
|
|
17638 |
"node": ">= 8"
|
17639 |
}
|
17640 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
17641 |
"node_modules/workbox-build/node_modules/tr46": {
|
17642 |
"version": "1.0.1",
|
17643 |
"resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz",
|
|
|
3185 |
}
|
3186 |
}
|
3187 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3188 |
"node_modules/@rushstack/eslint-patch": {
|
3189 |
"version": "1.3.3",
|
3190 |
"resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.3.3.tgz",
|
|
|
13228 |
}
|
13229 |
},
|
13230 |
"node_modules/postcss": {
|
13231 |
+
"version": "8.4.31",
|
13232 |
+
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
|
13233 |
+
"integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==",
|
13234 |
"funding": [
|
13235 |
{
|
13236 |
"type": "opencollective",
|
|
|
15276 |
"url": "https://github.com/sponsors/isaacs"
|
15277 |
}
|
15278 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15279 |
"node_modules/run-parallel": {
|
15280 |
"version": "1.2.0",
|
15281 |
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
|
|
|
17450 |
"ajv": ">=8"
|
17451 |
}
|
17452 |
},
|
17453 |
+
"node_modules/workbox-build/node_modules/@rollup/plugin-babel": {
|
17454 |
+
"version": "5.3.1",
|
17455 |
+
"resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz",
|
17456 |
+
"integrity": "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==",
|
17457 |
+
"dependencies": {
|
17458 |
+
"@babel/helper-module-imports": "^7.10.4",
|
17459 |
+
"@rollup/pluginutils": "^3.1.0"
|
17460 |
+
},
|
17461 |
+
"engines": {
|
17462 |
+
"node": ">= 10.0.0"
|
17463 |
+
},
|
17464 |
+
"peerDependencies": {
|
17465 |
+
"@babel/core": "^7.0.0",
|
17466 |
+
"@types/babel__core": "^7.1.9",
|
17467 |
+
"rollup": "^1.20.0||^2.0.0"
|
17468 |
+
},
|
17469 |
+
"peerDependenciesMeta": {
|
17470 |
+
"@types/babel__core": {
|
17471 |
+
"optional": true
|
17472 |
+
}
|
17473 |
+
}
|
17474 |
+
},
|
17475 |
+
"node_modules/workbox-build/node_modules/@rollup/plugin-node-resolve": {
|
17476 |
+
"version": "11.2.1",
|
17477 |
+
"resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz",
|
17478 |
+
"integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==",
|
17479 |
+
"dependencies": {
|
17480 |
+
"@rollup/pluginutils": "^3.1.0",
|
17481 |
+
"@types/resolve": "1.17.1",
|
17482 |
+
"builtin-modules": "^3.1.0",
|
17483 |
+
"deepmerge": "^4.2.2",
|
17484 |
+
"is-module": "^1.0.0",
|
17485 |
+
"resolve": "^1.19.0"
|
17486 |
+
},
|
17487 |
+
"engines": {
|
17488 |
+
"node": ">= 10.0.0"
|
17489 |
+
},
|
17490 |
+
"peerDependencies": {
|
17491 |
+
"rollup": "^1.20.0||^2.0.0"
|
17492 |
+
}
|
17493 |
+
},
|
17494 |
+
"node_modules/workbox-build/node_modules/@rollup/plugin-replace": {
|
17495 |
+
"version": "2.4.2",
|
17496 |
+
"resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz",
|
17497 |
+
"integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==",
|
17498 |
+
"dependencies": {
|
17499 |
+
"@rollup/pluginutils": "^3.1.0",
|
17500 |
+
"magic-string": "^0.25.7"
|
17501 |
+
},
|
17502 |
+
"peerDependencies": {
|
17503 |
+
"rollup": "^1.20.0 || ^2.0.0"
|
17504 |
+
}
|
17505 |
+
},
|
17506 |
+
"node_modules/workbox-build/node_modules/@rollup/pluginutils": {
|
17507 |
+
"version": "3.1.0",
|
17508 |
+
"resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz",
|
17509 |
+
"integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==",
|
17510 |
+
"dependencies": {
|
17511 |
+
"@types/estree": "0.0.39",
|
17512 |
+
"estree-walker": "^1.0.1",
|
17513 |
+
"picomatch": "^2.2.2"
|
17514 |
+
},
|
17515 |
+
"engines": {
|
17516 |
+
"node": ">= 8.0.0"
|
17517 |
+
},
|
17518 |
+
"peerDependencies": {
|
17519 |
+
"rollup": "^1.20.0||^2.0.0"
|
17520 |
+
}
|
17521 |
+
},
|
17522 |
+
"node_modules/workbox-build/node_modules/@types/estree": {
|
17523 |
+
"version": "0.0.39",
|
17524 |
+
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz",
|
17525 |
+
"integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw=="
|
17526 |
+
},
|
17527 |
"node_modules/workbox-build/node_modules/ajv": {
|
17528 |
"version": "8.12.0",
|
17529 |
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
|
|
|
17553 |
"node": ">=10"
|
17554 |
}
|
17555 |
},
|
17556 |
+
"node_modules/workbox-build/node_modules/has-flag": {
|
17557 |
+
"version": "4.0.0",
|
17558 |
+
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
|
17559 |
+
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
|
17560 |
+
"engines": {
|
17561 |
+
"node": ">=8"
|
17562 |
+
}
|
17563 |
+
},
|
17564 |
+
"node_modules/workbox-build/node_modules/jest-worker": {
|
17565 |
+
"version": "26.6.2",
|
17566 |
+
"resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz",
|
17567 |
+
"integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==",
|
17568 |
+
"dependencies": {
|
17569 |
+
"@types/node": "*",
|
17570 |
+
"merge-stream": "^2.0.0",
|
17571 |
+
"supports-color": "^7.0.0"
|
17572 |
+
},
|
17573 |
+
"engines": {
|
17574 |
+
"node": ">= 10.13.0"
|
17575 |
+
}
|
17576 |
+
},
|
17577 |
"node_modules/workbox-build/node_modules/json-schema-traverse": {
|
17578 |
"version": "1.0.0",
|
17579 |
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
|
17580 |
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
|
17581 |
},
|
17582 |
+
"node_modules/workbox-build/node_modules/rollup": {
|
17583 |
+
"version": "2.79.1",
|
17584 |
+
"resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz",
|
17585 |
+
"integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==",
|
17586 |
+
"bin": {
|
17587 |
+
"rollup": "dist/bin/rollup"
|
17588 |
+
},
|
17589 |
+
"engines": {
|
17590 |
+
"node": ">=10.0.0"
|
17591 |
+
},
|
17592 |
+
"optionalDependencies": {
|
17593 |
+
"fsevents": "~2.3.2"
|
17594 |
+
}
|
17595 |
+
},
|
17596 |
+
"node_modules/workbox-build/node_modules/rollup-plugin-terser": {
|
17597 |
+
"version": "7.0.2",
|
17598 |
+
"resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz",
|
17599 |
+
"integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==",
|
17600 |
+
"deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser",
|
17601 |
+
"dependencies": {
|
17602 |
+
"@babel/code-frame": "^7.10.4",
|
17603 |
+
"jest-worker": "^26.2.1",
|
17604 |
+
"serialize-javascript": "^4.0.0",
|
17605 |
+
"terser": "^5.0.0"
|
17606 |
+
},
|
17607 |
+
"peerDependencies": {
|
17608 |
+
"rollup": "^2.0.0"
|
17609 |
+
}
|
17610 |
+
},
|
17611 |
+
"node_modules/workbox-build/node_modules/serialize-javascript": {
|
17612 |
+
"version": "4.0.0",
|
17613 |
+
"resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz",
|
17614 |
+
"integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==",
|
17615 |
+
"dependencies": {
|
17616 |
+
"randombytes": "^2.1.0"
|
17617 |
+
}
|
17618 |
+
},
|
17619 |
"node_modules/workbox-build/node_modules/source-map": {
|
17620 |
"version": "0.8.0-beta.0",
|
17621 |
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz",
|
|
|
17627 |
"node": ">= 8"
|
17628 |
}
|
17629 |
},
|
17630 |
+
"node_modules/workbox-build/node_modules/supports-color": {
|
17631 |
+
"version": "7.2.0",
|
17632 |
+
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
|
17633 |
+
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
|
17634 |
+
"dependencies": {
|
17635 |
+
"has-flag": "^4.0.0"
|
17636 |
+
},
|
17637 |
+
"engines": {
|
17638 |
+
"node": ">=8"
|
17639 |
+
}
|
17640 |
+
},
|
17641 |
"node_modules/workbox-build/node_modules/tr46": {
|
17642 |
"version": "1.0.1",
|
17643 |
"resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz",
|
privacy_policy.md
ADDED
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
## like-history.ai Privacy Policy
|
2 |
+
Effective Date: [Insert Effective Date]
|
3 |
+
At like-history.ai, we are committed to protecting your privacy. This Privacy Policy outlines our practices concerning the non-collection of personal information.
|
4 |
+
Non-Collection of Personal Information
|
5 |
+
like-history.ai does not collect any personal information from our users. As a visitor to our [website/application/service], you can engage in many activities without providing any personal information.
|
6 |
+
Information Not Collected
|
7 |
+
When you use our [website/application/service], we do not collect any information such as:
|
8 |
+
Name
|
9 |
+
Address
|
10 |
+
Telephone number
|
11 |
+
Email address
|
12 |
+
Credit card information
|
13 |
+
Any other personal information that can be used to identify you
|
14 |
+
Cookies and Tracking Technology
|
15 |
+
Since we do not collect any personal information, we also do not use cookies or any tracking technology that can be used to personally identify you.
|
16 |
+
Third-Party Links
|
17 |
+
Our [website/application/service] may contain links to third-party websites. We are not responsible for the privacy practices or the content of these external websites. We recommend that you review the privacy policies of these third-party sites to understand their data collection and usage practices.
|
18 |
+
Changes to Our Privacy Policy
|
19 |
+
We reserve the right to modify this Privacy Policy at any time. If we decide to change our Privacy Policy, we will post those changes on this page and/or update the Privacy Policy modification date below.
|
20 |
+
Modification Date: [Insert Last Modification Date]
|
21 |
+
Contact Us
|
22 |
+
If you have any questions regarding this Privacy Policy, please contact us at:
|
23 |
+
[Your Contact Information]
|
24 |
+
Please note that by using our [website/application/service], you consent to our Non-Collection of Personal Information Policy.
|
25 |
+
like-history.ai takes your privacy concerns seriously and we strive to ensure that your experience with our [website/application/service] is as secure and satisfactory as possible.
|
26 |
+
Thank you for choosing like-history.ai.
|
27 |
+
Please make sure to customize the placeholders with your actual company details and review the policy to ensure it accurately reflects your practices and complies with your local laws and regulations. If you have any unique conditions or services that may impact privacy, consider consulting with a legal professional to tailor the policy to your specific situation.
|