New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

using-statement

Package Overview
Dependencies
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

using-statement

"using statement" in JavaScript and TypeScript.

latest
Source
npmnpm
Version
0.4.2
Version published
Weekly downloads
465
-46.18%
Maintainers
1
Weekly downloads
 
Created
Source

using_statement

npm version CI deno doc

Function call that acts like a using statement.

With Deno:

import { using } from "https://deno.land/x/using_statement/mod.ts";

Or with Node:

npm install --save using-statement

Example

Before:

const camera = new Camera();
try {
  outputPicture(camera.takePictureSync());
} finally {
  camera.dispose();
}

After:

import { using } from "https://deno.land/x/using_statement/mod.ts";

using(new Camera(), (camera) => {
  outputPicture(camera.takePictureSync());
});

Features

  • Supports synchronous, asynchronous, and generator functions.
  • Handles exceptions to ensure the resource is properly disposed.
  • Accepts objects with a dispose(), close(), or unsubscribe() method.
  • Allows asynchronously disposing when using a synchronous or asynchronous function.

Examples

Setup:

// Camera.ts
export class Camera {
  takePictureSync() {
    // ...etc...
    return pictureData;
  }

  async takePicture() {
    // ...etc...
    return pictureData;
  }

  dispose() {
    // clean up the resource this class is holding
  }
}

Synchronous example:

import { using } from "https://deno.land/x/using_statement/mod.ts";
import { Camera } from "./Camera.ts";

using(new Camera(), (camera) => {
  const picture = camera.takePictureSync();
  outputPicture(picture); // some function that outputs the picture
});

// camera is disposed here

Asynchronous example:

import { using } from "https://deno.land/x/using_statement/mod.ts";
import { Camera } from "./Camera.ts";

await using(new Camera(), async (camera) => {
  const picture = await camera.takePicture();
  outputPicture(picture);
});

// camera is disposed here

Generator function example:

import { using } from "https://deno.land/x/using_statement/mod.ts";
import { Camera } from "./Camera.ts";

const picturesIterator = using(new Camera(), function* (camera) {
  for (let i = 0; i < 10; i++) {
    yield camera.takePictureSync();
  }
});

// camera is not disposed yet...

for (const picture of picturesIterator) {
  outputPicture(picture);
}

// camera is now disposed

Inspiration

Keywords

using

FAQs

Package last updated on 19 Dec 2022

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts