Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
24b4c14
SK-2177 support composable container in shadow-dom and normal dom
skyflow-bharti Jul 14, 2025
3d22e02
SK-2177 internal release
skyflow-bharti Jul 14, 2025
dc20d28
[AUTOMATED] Release - 2.5.0-beta.5-dev.3d22e02
skyflow-bharti Jul 14, 2025
c97c0f5
SK-2177 fix promises
skyflow-bharti Jul 14, 2025
b5febcb
[AUTOMATED] Release - 2.5.0-beta.5-dev.c97c0f5
skyflow-bharti Jul 14, 2025
1a3ba57
SK-2177 mounted
skyflow-bharti Jul 14, 2025
beb69f5
[AUTOMATED] Release - 2.5.0-beta.5-dev.1a3ba57
skyflow-bharti Jul 14, 2025
4f9c03b
SK-2177 mounted
skyflow-bharti Jul 14, 2025
7f1c17f
[AUTOMATED] Release - 2.5.0-beta.5-dev.4f9c03b
skyflow-bharti Jul 14, 2025
410308a
SK-2177 mounted
skyflow-bharti Jul 14, 2025
b110bec
[AUTOMATED] Release - 2.5.0-beta.5-dev.410308a
skyflow-bharti Jul 14, 2025
06519d4
SK-2177 comment mount
skyflow-bharti Jul 14, 2025
96684f7
[AUTOMATED] Release - 2.5.0-beta.5-dev.06519d4
skyflow-bharti Jul 14, 2025
9d975d3
SK-2177 comment mounted
skyflow-bharti Jul 14, 2025
461f1dc
[AUTOMATED] Release - 2.5.0-beta.5-dev.9d975d3
skyflow-bharti Jul 14, 2025
1c981ce
SK-2177 client initialise
skyflow-bharti Jul 14, 2025
48a9b7e
[AUTOMATED] Release - 2.5.0-beta.5-dev.1c981ce
skyflow-bharti Jul 14, 2025
deb34bf
SK-2177 add target
skyflow-bharti Jul 14, 2025
88a7e99
[AUTOMATED] Release - 2.5.0-beta.5-dev.deb34bf
skyflow-bharti Jul 14, 2025
7dda8b1
SK-2177 add target
skyflow-bharti Jul 14, 2025
da2982d
[AUTOMATED] Release - 2.5.0-beta.5-dev.7dda8b1
skyflow-bharti Jul 14, 2025
a9e2143
SK-2177 add target
skyflow-bharti Jul 14, 2025
7d38ef2
[AUTOMATED] Release - 2.5.0-beta.5-dev.a9e2143
skyflow-bharti Jul 14, 2025
d5616a2
SK-2177 client initialise
skyflow-bharti Jul 14, 2025
b2e8316
[AUTOMATED] Release - 2.5.0-beta.5-dev.d5616a2
skyflow-bharti Jul 14, 2025
a0c77c9
SK-2177 client initialise
skyflow-bharti Jul 14, 2025
460396e
[AUTOMATED] Release - 2.5.0-beta.5-dev.a0c77c9
skyflow-bharti Jul 14, 2025
69a8f50
SK-2177 client initialise
skyflow-bharti Jul 14, 2025
735dd27
[AUTOMATED] Release - 2.5.0-beta.5-dev.69a8f50
skyflow-bharti Jul 14, 2025
9812099
SK-2177 client fix
skyflow-bharti Jul 14, 2025
0ee2970
[AUTOMATED] Release - 2.5.0-beta.5-dev.9812099
skyflow-bharti Jul 14, 2025
ef404d4
[AUTOMATED] Release - 2.5.0-beta.5-dev.0ee2970
skyflow-bharti Jul 14, 2025
c8f8906
[AUTOMATED] Release - 2.5.0-beta.5-dev.ef404d4
skyflow-bharti Jul 14, 2025
5f64ad2
SK-2177 target test
skyflow-bharti Jul 14, 2025
ab1ccfa
[AUTOMATED] Release - 2.5.0-beta.5-dev.5f64ad2
skyflow-bharti Jul 14, 2025
25da8a5
SK-2177 target tests
skyflow-bharti Jul 14, 2025
7fa147a
[AUTOMATED] Release - 2.5.0-beta.5-dev.25da8a5
skyflow-bharti Jul 14, 2025
78d3720
SK-2177 target tests
skyflow-bharti Jul 14, 2025
36a43c5
SK-2177 fix height
skyflow-bharti Jul 14, 2025
4f2b00d
[AUTOMATED] Release - 2.5.0-beta.5-dev.36a43c5
skyflow-bharti Jul 14, 2025
fc93609
SK-2177 file render
skyflow-bharti Jul 15, 2025
99eb289
[AUTOMATED] Release - 2.5.0-beta.5-dev.fc93609
skyflow-bharti Jul 15, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "skyflow-js",
"preferGlobal": true,
"analyze": false,
"version": "2.4.1",
"version": "2.5.0-beta.5-dev.fc93609",
"author": "Skyflow",
"description": "Skyflow JavaScript SDK",
"homepage": "https://github.com/skyflowapi/skyflow-js",
Expand Down
104 changes: 103 additions & 1 deletion src/core-utils/collect.ts
Original file line number Diff line number Diff line change
Expand Up @@ -268,7 +268,7 @@ export const updateRecordsBySkyflowID = async (
});

if (errorsResponse.length === 0) {
rootResolve(recordsResponse);
rootResolve({ records: recordsResponse });
} else if (recordsResponse.length === 0) rootReject({ errors: errorsResponse });
else rootReject({ records: recordsResponse, errors: errorsResponse });
});
Expand All @@ -277,6 +277,108 @@ export const updateRecordsBySkyflowID = async (
});
});

export const updateRecordsBySkyflowIDComposable = async (
skyflowIdRecords,
client: Client,
options,
authToken: string,
) => new Promise((rootResolve, rootReject) => {
let updateResponseSet: Promise<any>[];
// const clientId = client.toJSON()?.metaData?.uuid || '';
// getAccessToken(clientId).then((authToken) => {
// eslint-disable-next-line prefer-const
updateResponseSet = skyflowIdRecords.updateRecords.map(
(skyflowIdRecord: IInsertRecord) => new Promise((resolve, reject) => {
updateRecordsInVault(skyflowIdRecord, client, authToken as string, options)
.then((resolvedResult: any) => {
const resp = constructFinalUpdateRecordResponse(
resolvedResult, options?.tokens, skyflowIdRecord,
);
resolve(resp);
},
(rejectedResult) => {
let errorResponse = rejectedResult;
if (rejectedResult && rejectedResult.error) {
errorResponse = {
error: {
code: rejectedResult?.error?.code,
description: rejectedResult?.error?.description,
},
};
}
printLog(rejectedResult.error?.description || '', MessageType.ERROR, LogLevel.ERROR);
reject(errorResponse);
}).catch((error) => {
reject(error);
});
}),
);
Promise.allSettled(updateResponseSet).then((resultSet: any) => {
const recordsResponse: any[] = [];
const errorsResponse: any[] = [];
resultSet.forEach((result: { status: string; value: any; reason?: any; }) => {
if (result.status === 'fulfilled') {
recordsResponse.push(result.value);
} else {
errorsResponse.push(result.reason);
}
});

if (errorsResponse.length === 0) {
rootResolve({ records: recordsResponse });
} else if (recordsResponse.length === 0) rootReject({ errors: errorsResponse });
else rootReject({ records: recordsResponse, errors: errorsResponse });
});
// }).catch((err) => {
// rootReject(err);
// });
});

export const insertDataInCollect = async (
records,
client: Client,
options,
finalInsertRecords,
authToken: string,
) => new Promise((resolve) => {
let insertResponse: any;
let insertErrorResponse: any;
client
.request({
body: {
records,
},
requestMethod: 'POST',
url: `${client.config.vaultURL}/v1/vaults/${client.config.vaultID}`,
headers: {
authorization: `Bearer ${authToken}`,
'content-type': 'application/json',
},
})
.then((response: any) => {
insertResponse = constructInsertRecordResponse(
response,
options.tokens,
finalInsertRecords.records,
);
resolve(insertResponse);
})
.catch((error) => {
// eslint-disable-next-line @typescript-eslint/no-unused-vars
insertErrorResponse = {
errors: [
{
error: {
code: error?.error?.code,
description: error?.error?.description,
},
},
],
};
resolve(insertErrorResponse);
});
});

export const checkForElementMatchRule = (validations: IValidationRule[]) => {
if (!validations) return false;
for (let i = 0; i < validations.length; i += 1) {
Expand Down
24 changes: 10 additions & 14 deletions src/core-utils/reveal.ts
Original file line number Diff line number Diff line change
Expand Up @@ -156,22 +156,18 @@ export const getFileURLForRender = (
export const getFileURLFromVaultBySkyflowID = (
skyflowIdRecord: IRevealRecord,
client: Client,
authToken: string,
): Promise<IRenderResponseType> => new Promise((rootResolve, rootReject) => {
try {
const clientId = client.toJSON().metaData.uuid || '';
getAccessToken(clientId).then((authToken) => {
getFileURLForRender(
skyflowIdRecord, client, authToken as string,
).then((resolvedResult: IRenderResponseType) => {
rootResolve(resolvedResult);
}).catch((err: any) => {
const errorData = formatForRenderFileFailure(err, skyflowIdRecord.skyflowID as string,
skyflowIdRecord.column as string);
printLog(errorData.error?.description || '', MessageType.ERROR, LogLevel.ERROR);
rootReject(errorData);
});
}).catch((err) => {
rootReject(err);
getFileURLForRender(
skyflowIdRecord, client, authToken as string,
).then((resolvedResult: IRenderResponseType) => {
rootResolve(resolvedResult);
}).catch((err: any) => {
const errorData = formatForRenderFileFailure(err, skyflowIdRecord.skyflowID as string,
skyflowIdRecord.column as string);
printLog(errorData.error?.description || '', MessageType.ERROR, LogLevel.ERROR);
rootReject(errorData);
});
} catch (err) {
rootReject(err);
Expand Down
6 changes: 6 additions & 0 deletions src/core/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -104,8 +104,14 @@ export const ELEMENT_EVENTS_TO_CLIENT = {
};

export const ELEMENT_EVENTS_TO_IFRAME = {
HEIGHT_CALLBACK: 'HEIGHT_CALLBACK',
COLLECT_CALL_REQUESTS: 'COLLECT_CALL_REQUESTS',
COMPOSABLE_CALL_REQUESTS: 'COMPOSABLE_CALL_REQUESTS',
COMPOSABLE_CALL_RESPONSE: 'COMPOSABLE_CALL_RESPONSE',
COMPOSABLE_FILE_CALL_RESPONSE: 'COMPOSABLE_FILE_CALL_RESPONSE',
COMPOSABLE_CONTAINER: 'COMPOSABLE_CONTAINER',
REVEAL_CALL_REQUESTS: 'REVEAL_CALL_REQUESTS',
REVEAL_CALL_RESPONSE: 'REVEAL_CALL_RESPONSE',
FRAME_READY: 'FRAME_READY',
READY_FOR_CLIENT: 'READY_FOR_CLIENT',
TOKENIZATION_REQUEST: 'TOKENIZATION_REQUEST',
Expand Down
26 changes: 15 additions & 11 deletions src/core/external/collect/collect-element.ts
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,6 @@ class CollectElement extends SkyflowElement {
// if (this.#isSingleElementAPI && this.#elements.length > 1) {
// throw new SkyflowError(SKYFLOW_ERROR_CODE.UNKNOWN_ERROR, [], true);
// }

this.#doesReturnValue = EnvOptions[this.#context.env].doesReturnValue;
this.elementType = this.#isSingleElementAPI
? this.#elements[0].elementType
Expand Down Expand Up @@ -164,18 +163,18 @@ class CollectElement extends SkyflowElement {
this.#readyToMount = container.isMounted;

if (container.type === ContainerType.COMPOSABLE) {
window.addEventListener('message', (event) => {
if (event.data.type === ELEMENT_EVENTS_TO_IFRAME.HEIGHT_CALLBACK
+ this.#iframe.name) {
this.#iframe.setIframeHeight(event.data.data.height);
}
});
this.#elements.forEach((element) => {
this.#bus.on(ELEMENT_EVENTS_TO_CLIENT.MOUNTED
+ formatFrameNameToId(element.elementName), (data) => {
if (data.name === element.elementName) {
updateMetricObjectValue(this.#elementId, METRIC_TYPES.EVENTS_KEY, `${element.elementType}_${METRIC_TYPES.EVENTS.MOUNTED}`);
window.addEventListener('message', (event) => {
if (event.data.type === ELEMENT_EVENTS_TO_CLIENT.MOUNTED
+ formatFrameNameToId(element.elementName)) {
element.isMounted = true;
this.#mounted = true;
this.#bus.emit(ELEMENT_EVENTS_TO_CLIENT.HEIGHT
+ this.#iframe.name,
{}, (payload:any) => {
this.#iframe.setIframeHeight(payload.height);
});
}
});
});
Expand All @@ -199,6 +198,7 @@ class CollectElement extends SkyflowElement {
getID = () => this.#elementId;

mount = (domElement: HTMLElement | string) => {
this.#mounted = true;
if (!domElement) {
throw new SkyflowError(SKYFLOW_ERROR_CODE.EMPTY_ELEMENT_IN_MOUNT, ['CollectElement'], true);
}
Expand Down Expand Up @@ -525,7 +525,6 @@ class CollectElement extends SkyflowElement {
else this.#states[index].value = undefined;

emitEvent = isComposable ? `${emitEvent}:${data.name}` : emitEvent;

this.#bus.emit(ELEMENT_EVENTS_TO_CLIENT.HEIGHT
+ this.#iframe.name,
{}, (payload:any) => {
Expand All @@ -537,6 +536,11 @@ class CollectElement extends SkyflowElement {
...this.#states[index],
elementType: element.elementType,
};
if (isComposable) {
this.#groupEmitter?._emit(ELEMENT_EVENTS_TO_CLIENT.HEIGHT, {
iframeName: this.#iframe.name,
});
}
if (isComposable && this.#groupEmitter) {
this.#groupEmitter._emit(emitEvent, emitData);
} else {
Expand Down
Loading