Skip to content

Commit

Permalink
Merge pull request #72 from ExWeiv/dev
Browse files Browse the repository at this point in the history
BUG Fixes
  • Loading branch information
loeiks authored May 22, 2024
2 parents 014fa3a + 233e60a commit ab90d3b
Show file tree
Hide file tree
Showing 107 changed files with 312 additions and 311 deletions.
3 changes: 2 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@ In this file you can find what's changed in each version. (Versions with -dev, -

---

### 4.1.2
### 4.1.4

- General BUG Fixes
- Documentation updated/fixed for custom connection options.

### 4.1.0
Expand Down
22 changes: 11 additions & 11 deletions app/lib/Connection/automatic_connection_provider.js
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ const createNewClient = async (uri, role) => {
manual = true;
}
const newMongoClient = new mongodb_1.MongoClient(uri, options);
clientCache.set(uri.slice(0, 20), newMongoClient);
clientCache.set(uri.slice(14, 40), newMongoClient);
let connection = newMongoClient;
if (manual) {
connection = await connectClient(newMongoClient, uri);
Expand Down Expand Up @@ -74,31 +74,31 @@ const createNewClient = async (uri, role) => {
const listenersMap = new Map();
const connectClient = async (client, uri) => {
try {
const status = statusCache.get(uri.slice(0, 20));
const cachedClient = clientCache.get(uri.slice(0, 20));
const status = statusCache.get(uri.slice(14, 40));
const cachedClient = clientCache.get(uri.slice(14, 40));
if (status === true) {
if (cachedClient) {
return cachedClient;
}
}
let connectedClient;
if (!listenersMap.has(uri.slice(0, 20))) {
if (!listenersMap.has(uri.slice(14, 40))) {
const handleClose = async () => {
clientCache.del(uri.slice(0, 20));
statusCache.set(uri.slice(0, 20), false);
clientCache.del(uri.slice(14, 40));
statusCache.set(uri.slice(14, 40), false);
};
const handleError = async () => {
clientCache.del(uri.slice(0, 20));
statusCache.set(uri.slice(0, 20), false);
clientCache.del(uri.slice(14, 40));
statusCache.set(uri.slice(14, 40), false);
throw new Error(`when trying to connect client (connection error): ${uri}`);
};
client.on('close', handleClose);
client.on('error', handleError);
listenersMap.set(uri.slice(0, 20), true);
listenersMap.set(uri.slice(14, 40), true);
}
connectedClient = await client.connect();
clientCache.set(uri.slice(0, 20), connectedClient);
statusCache.set(uri.slice(0, 20), true);
clientCache.set(uri.slice(14, 40), connectedClient);
statusCache.set(uri.slice(14, 40), true);
return connectedClient;
}
catch (err) {
Expand Down
4 changes: 2 additions & 2 deletions app/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion app/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@exweiv/weiv-data",
"version": "4.1.3",
"version": "4.1.4",
"description": "Custom API Library for Wix sites to connect MongoDB. Designed to easily switch from wix-data APIs.",
"main": "./lib/index.js",
"files": [
Expand Down
22 changes: 11 additions & 11 deletions app/src/Connection/automatic_connection_provider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ const createNewClient = async (uri: string, role: CustomOptionsRole): Promise<Mo
}

const newMongoClient = new MongoClient(uri, options);
clientCache.set<MongoClient>(uri.slice(0, 20), newMongoClient);
clientCache.set<MongoClient>(uri.slice(14, 40), newMongoClient);

// Use connect function to connect to cluster using newly created client
let connection = newMongoClient;
Expand Down Expand Up @@ -84,8 +84,8 @@ const createNewClient = async (uri: string, role: CustomOptionsRole): Promise<Mo
const listenersMap: Map<string, boolean> = new Map();
const connectClient = async (client: MongoClient, uri: string): Promise<MongoClient> => {
try {
const status = statusCache.get<boolean>(uri.slice(0, 20));
const cachedClient = clientCache.get<MongoClient>(uri.slice(0, 20));
const status = statusCache.get<boolean>(uri.slice(14, 40));
const cachedClient = clientCache.get<MongoClient>(uri.slice(14, 40));

// Check if a connection for the given URI exists in the cache
if (status === true) {
Expand All @@ -97,28 +97,28 @@ const connectClient = async (client: MongoClient, uri: string): Promise<MongoCli
// Create a new client if not cached
let connectedClient: MongoClient;

if (!listenersMap.has(uri.slice(0, 20))) {
if (!listenersMap.has(uri.slice(14, 40))) {
const handleClose = async () => {
clientCache.del(uri.slice(0, 20));
statusCache.set<boolean>(uri.slice(0, 20), false);
clientCache.del(uri.slice(14, 40));
statusCache.set<boolean>(uri.slice(14, 40), false);
};

const handleError = async () => {
clientCache.del(uri.slice(0, 20));
statusCache.set<boolean>(uri.slice(0, 20), false);
clientCache.del(uri.slice(14, 40));
statusCache.set<boolean>(uri.slice(14, 40), false);
throw new Error(`when trying to connect client (connection error): ${uri}`); // Rethrow with URI for context
};

client.on('close', handleClose);
client.on('error', handleError);

listenersMap.set(uri.slice(0, 20), true);
listenersMap.set(uri.slice(14, 40), true);
}

// Connect and return connection
connectedClient = await client.connect();
clientCache.set<MongoClient>(uri.slice(0, 20), connectedClient);
statusCache.set<boolean>(uri.slice(0, 20), true);
clientCache.set<MongoClient>(uri.slice(14, 40), connectedClient);
statusCache.set<boolean>(uri.slice(14, 40), true);
return connectedClient;
} catch (err) {
throw new Error(`Unexpected error: ${err}`); // Handle unexpected errors gracefully
Expand Down
4 changes: 2 additions & 2 deletions docs/functions/Hooks.afterCount.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@
</div><div class="tsd-comment tsd-typography"></div></li><li><span><span class="tsd-kind-parameter">context</span>: <a href="../types/Hooks.HookContext.html" class="tsd-signature-type tsd-kind-type-alias">HookContext</a></span><div class="tsd-comment tsd-typography"><p>Contextual information about the hook.</p>
</div><div class="tsd-comment tsd-typography"></div></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">number</span></h4><p>The count to return to <code>count()</code> instead of the original count. Returning a rejected promise will not block the operation, but will return a rejected promise to the caller as well as trigger the <code>onFailure()</code> hook.</p>
<div class="tsd-comment tsd-typography"><h4>Description</h4><p>A hook that is triggered after a <code>count()</code> operation.</p>
</div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/ExWeiv/weiv-data/blob/c5dfa187e669dfb20ac969d512c4664ea552b13b/app/weivdata.d.ts#L1533">weivdata.d.ts:1533</a></li></ul></aside></li></ul></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-index-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><h4 class="uppercase">Member Visibility</h4><form><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></form></div><div class="tsd-theme-toggle"><h4 class="uppercase">Theme</h4><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1"></use></svg><span>WeivData API Reference | ExWeiv Apps</span></a><ul class="tsd-small-nested-navigation" id="tsd-nav-container" data-base=".."><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a><br>
</div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/ExWeiv/weiv-data/blob/f5fe8d5c48d32e302420ccddfaad599c6c37180f/app/weivdata.d.ts#L1533">weivdata.d.ts:1533</a></li></ul></aside></li></ul></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-index-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><h4 class="uppercase">Member Visibility</h4><form><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></form></div><div class="tsd-theme-toggle"><h4 class="uppercase">Theme</h4><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1"></use></svg><span>WeivData API Reference | ExWeiv Apps</span></a><ul class="tsd-small-nested-navigation" id="tsd-nav-container" data-base=".."><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a><br>
<span id="generation-date"></span>
<script>
window.GENERATION_DATE = 1716418754786;
window.GENERATION_DATE = 1716419988425;

(() => {

Expand Down
4 changes: 2 additions & 2 deletions docs/functions/Hooks.afterFindOne.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@
</head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">WeivData API Reference | ExWeiv Apps</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../modules.html">WeivData API Reference | ExWeiv Apps</a></li><li><a href="../modules/Hooks.html">Hooks</a></li><li><a href="Hooks.afterFindOne.html">afterFindOne</a></li></ul><h1>Function afterFindOne</h1></div><section class="tsd-panel"><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="afterFindOne" class="tsd-anchor"></a><span class="tsd-kind-call-signature">after<wbr/>Find<wbr/>One</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">item</span>, <span class="tsd-kind-parameter">context</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">Object</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">Object</span><a href="#afterFindOne" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">item</span>: <a href="../types/Item.html" class="tsd-signature-type tsd-kind-type-alias">Item</a></span><div class="tsd-comment tsd-typography"><p>The found item.</p>
</div><div class="tsd-comment tsd-typography"></div></li><li><span><span class="tsd-kind-parameter">context</span>: <a href="../types/Hooks.HookContext.html" class="tsd-signature-type tsd-kind-type-alias">HookContext</a></span><div class="tsd-comment tsd-typography"></div></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">Object</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">Object</span></h4><p>The item to return to <code>findOne()</code> instead of the found item. Returning a rejected promise will not block the operation, but will return a rejected promise to the caller as well as trigger the <code>onFailure()</code> hook.</p>
<div class="tsd-comment tsd-typography"><h4>Description</h4><p>A hook that is triggered after a <code>findOne()</code> operation.</p>
</div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/ExWeiv/weiv-data/blob/c5dfa187e669dfb20ac969d512c4664ea552b13b/app/weivdata.d.ts#L1693">weivdata.d.ts:1693</a></li></ul></aside></li></ul></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-index-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><h4 class="uppercase">Member Visibility</h4><form><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></form></div><div class="tsd-theme-toggle"><h4 class="uppercase">Theme</h4><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1"></use></svg><span>WeivData API Reference | ExWeiv Apps</span></a><ul class="tsd-small-nested-navigation" id="tsd-nav-container" data-base=".."><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a><br>
</div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/ExWeiv/weiv-data/blob/f5fe8d5c48d32e302420ccddfaad599c6c37180f/app/weivdata.d.ts#L1693">weivdata.d.ts:1693</a></li></ul></aside></li></ul></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-index-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><h4 class="uppercase">Member Visibility</h4><form><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></form></div><div class="tsd-theme-toggle"><h4 class="uppercase">Theme</h4><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1"></use></svg><span>WeivData API Reference | ExWeiv Apps</span></a><ul class="tsd-small-nested-navigation" id="tsd-nav-container" data-base=".."><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a><br>
<span id="generation-date"></span>
<script>
window.GENERATION_DATE = 1716418754788;
window.GENERATION_DATE = 1716419988427;

(() => {

Expand Down
Loading

0 comments on commit ab90d3b

Please sign in to comment.