Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
1141334
docs: add V2_PROGRESS.md — v2 refactor plan & source of truth
radovanjorgic Jun 9, 2026
8ddeb87
refactor(v2): rename package @devrev/ts-adaas -> @devrev/airsync-sdk
radovanjorgic Jun 9, 2026
0760f0b
docs: mark C0 done in V2_PROGRESS
radovanjorgic Jun 9, 2026
d573cb6
refactor(v2)!: delete deprecated module + add build tsconfig
radovanjorgic Jun 9, 2026
5c2aecd
docs: mark C1 done; move event-type-translation deletion to C3
radovanjorgic Jun 9, 2026
1fa9afc
refactor(v2)!: rename AirdropEvent/AirdropMessage -> AirSync*; rebran…
radovanjorgic Jun 9, 2026
8d09159
docs: mark C2 done
radovanjorgic Jun 9, 2026
cc05f41
refactor(v2)!: remove old event-type compatibility layer
radovanjorgic Jun 9, 2026
1c15f88
docs: mark C3 done
radovanjorgic Jun 9, 2026
b63f3ab
refactor(v2): split State into BaseState + ExtractionState + LoadingS…
radovanjorgic Jun 9, 2026
958bc35
docs: mark C4a done; fix oracle reference (tag v2-old-backup, not ori…
radovanjorgic Jun 9, 2026
30ba1b3
refactor(v2)!: persist state as { connectorState, sdkState } envelope
radovanjorgic Jun 9, 2026
0da1331
docs: mark C4b done; note SdkState narrowing deferred to C5
radovanjorgic Jun 9, 2026
a7a877f
refactor(v2)!: split WorkerAdapter into Base/Extraction/Loading adapters
radovanjorgic Jun 9, 2026
b405c1b
docs: mark C5 done
radovanjorgic Jun 9, 2026
0fb6116
feat(v2)!: emit from returned TaskResult instead of adapter.emit
radovanjorgic Jun 9, 2026
d9ec86b
docs: mark C6 done — Phase 1 complete
radovanjorgic Jun 9, 2026
d05434b
docs(v2): JSDoc pass over public surface and v2 internals
radovanjorgic Jun 9, 2026
ec6242a
docs: mark C7 done
radovanjorgic Jun 9, 2026
4fea755
Revert "docs(v2): JSDoc pass over public surface and v2 internals"
radovanjorgic Jun 9, 2026
9b2b975
refactor(v2): post-review cleanup
radovanjorgic Jun 9, 2026
4269e30
docs: record post-review cleanup + defer C7 JSDoc to end
radovanjorgic Jun 9, 2026
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
4 changes: 2 additions & 2 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# This workflow is used to release a new version of @devrev/ts-adaas package to
# This workflow is used to release a new version of @devrev/airsync-sdk package to
# npm registry and generate release notes using softprops/action-gh-release
# action. It consists of two jobs:
#
Expand Down Expand Up @@ -93,7 +93,7 @@ jobs:
id: version
run: |
# Get the latest version including prereleases
LATEST_VERSION=$(npm view @devrev/ts-adaas versions --json 2>/dev/null | jq -r '.[-1]' || echo "0.0.0")
LATEST_VERSION=$(npm view @devrev/airsync-sdk versions --json 2>/dev/null | jq -r '.[-1]' || echo "0.0.0")
echo "Latest published version: $LATEST_VERSION"
echo "LATEST_PUBLISHED_VERSION=$LATEST_VERSION" >> $GITHUB_ENV

Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ It provides features such as:
## Installation

```bash
npm install @devrev/ts-adaas
npm install @devrev/airsync-sdk
```

## Reference
Expand Down
309 changes: 309 additions & 0 deletions V2_PROGRESS.md

Large diffs are not rendered by default.

8 changes: 4 additions & 4 deletions package-lock.json

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

8 changes: 4 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
{
"name": "@devrev/ts-adaas",
"version": "1.19.7",
"description": "Typescript library containing the ADaaS(AirDrop as a Service) control protocol.",
"name": "@devrev/airsync-sdk",
"version": "2.0.0-beta.0",
"description": "Typescript SDK for building AirSync snap-ins on the DevRev platform.",
"type": "commonjs",
"main": "./dist/index.js",
"typings": "./dist/index.d.ts",
"scripts": {
"build": "tsc -p ./tsconfig.json",
"build": "tsc -p ./tsconfig.build.json",
"prepare": "npm run build",
"start": "ts-node src/index.ts",
"lint": "eslint .",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@ import {
ExternalSystemAttachmentStreamingFunction,
NormalizedAttachment,
} from '../types';
import { WorkerAdapter } from '../multithreading/worker-adapter/worker-adapter';
import { ExtractionAdapter } from '../multithreading/adapters/extraction-adapter';

export interface AttachmentsStreamingPoolParams<ConnectorState> {
adapter: WorkerAdapter<ConnectorState>;
adapter: ExtractionAdapter<ConnectorState>;
attachments: NormalizedAttachment[];
batchSize?: number;
stream: ExternalSystemAttachmentStreamingFunction;
Expand Down
55 changes: 9 additions & 46 deletions src/attachments-streaming/attachments-streaming-pool.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import { sleep } from '../common/helpers';
import { WorkerAdapter } from '../multithreading/worker-adapter/worker-adapter';
import { ProcessedAttachment } from '../state/state.interfaces';
import { ExtractionAdapter } from '../multithreading/adapters/extraction-adapter';
import {
ExternalSystemAttachmentStreamingFunction,
NormalizedAttachment,
Expand All @@ -9,7 +8,7 @@ import {
import { AttachmentsStreamingPoolParams } from './attachments-streaming-pool.interfaces';

export class AttachmentsStreamingPool<ConnectorState> {
private adapter: WorkerAdapter<ConnectorState>;
private adapter: ExtractionAdapter<ConnectorState>;
private attachments: NormalizedAttachment[];
private batchSize: number;
private delay: number | undefined;
Expand Down Expand Up @@ -40,41 +39,12 @@ export class AttachmentsStreamingPool<ConnectorState> {
}
}

/**
* Migrates processed attachments from the legacy string[] format to the new ProcessedAttachment[] format.
*
* @param attachments - The attachments list to migrate (either string[] or ProcessedAttachment[])
* @returns Migrated array of ProcessedAttachment objects, or empty array if input is invalid
*/
// eslint-disable-next-line @typescript-eslint/no-explicit-any
private migrateProcessedAttachments(attachments: any): ProcessedAttachment[] {
// Handle null/undefined
if (!attachments || !Array.isArray(attachments)) {
return [];
}

// If already migrated (first element is an object), return as-is
if (attachments.length > 0 && typeof attachments[0] === 'object') {
return attachments as ProcessedAttachment[];
}

// Migrate old string[] format
if (attachments.length > 0 && typeof attachments[0] === 'string') {
return attachments.map((it) => ({
id: it as string,
parent_id: '',
}));
}

return [];
}

async streamAll(): Promise<ProcessAttachmentReturnType> {
console.log(
`Starting download of ${this.attachments.length} attachments, streaming ${this.batchSize} at once.`
);

if (!this.adapter.state.toDevRev) {
if (!this.adapter.sdkState.toDevRev) {
const error = new Error('toDevRev state is not initialized');
console.error(error);
return { error };
Expand All @@ -83,20 +53,13 @@ export class AttachmentsStreamingPool<ConnectorState> {
// Get the list of successfully processed attachments in previous (possibly incomplete) batch extraction.
// If no such list exists, create an empty one.
if (
!this.adapter.state.toDevRev.attachmentsMetadata
!this.adapter.sdkState.toDevRev.attachmentsMetadata
.lastProcessedAttachmentsIdsList
) {
this.adapter.state.toDevRev.attachmentsMetadata.lastProcessedAttachmentsIdsList =
this.adapter.sdkState.toDevRev.attachmentsMetadata.lastProcessedAttachmentsIdsList =
[];
}

// Migrate old processed attachments to the new format.
this.adapter.state.toDevRev.attachmentsMetadata.lastProcessedAttachmentsIdsList =
this.migrateProcessedAttachments(
this.adapter.state.toDevRev.attachmentsMetadata
.lastProcessedAttachmentsIdsList
);

// Start initial batch of promises up to batchSize limit
const initialBatchSize = Math.min(this.batchSize, this.attachments.length);
const initialPromises = [];
Expand Down Expand Up @@ -139,8 +102,8 @@ export class AttachmentsStreamingPool<ConnectorState> {
}

if (
this.adapter.state.toDevRev &&
this.adapter.state.toDevRev.attachmentsMetadata.lastProcessedAttachmentsIdsList?.some(
this.adapter.sdkState.toDevRev &&
this.adapter.sdkState.toDevRev.attachmentsMetadata.lastProcessedAttachmentsIdsList?.some(
(it) => it.id == attachment.id && it.parent_id == attachment.parent_id
)
) {
Expand Down Expand Up @@ -180,10 +143,10 @@ export class AttachmentsStreamingPool<ConnectorState> {

// No rate limiting, process normally
if (
this.adapter.state.toDevRev?.attachmentsMetadata
this.adapter.sdkState.toDevRev?.attachmentsMetadata
?.lastProcessedAttachmentsIdsList
) {
this.adapter.state.toDevRev?.attachmentsMetadata.lastProcessedAttachmentsIdsList.push(
this.adapter.sdkState.toDevRev?.attachmentsMetadata.lastProcessedAttachmentsIdsList.push(
{ id: attachment.id, parent_id: attachment.parent_id }
);
}
Expand Down
193 changes: 0 additions & 193 deletions src/common/event-type-translation.test.ts

This file was deleted.

Loading
Loading