1.0.0 • Published 6 months ago

@actor-types/generator v1.0.0

Weekly downloads
-
License
-
Repository
-
Last release
6 months ago

@actor-types/generator

Core library for generating TypeScript types and wrappers from Apify actor schemas.

Installation

npm install @actor-types/generator

Usage

Generate Input Type Only

import { generateInputType } from '@actor-types/generator';
import { readFile, writeFile } from 'fs/promises';

async function generateType() {
  const schemaString = await readFile('schema.json', 'utf-8');

  // Generate TypeScript interface from schema
  const typeDefinition = await generateInputType(schemaString, 'MyInput');

  await writeFile('MyInput.ts', typeDefinition);
}

Generate Actor Wrapper Function

import { generateActorWrapper } from '@actor-types/generator';

function generateWrapper() {
  // Generate a function to call an actor with the specified input type
  const wrapperCode = generateActorWrapper(
    'myActor',           // Actor name
    'john-doe/my-actor', // Actor ID
    'MyActorInput'       // Input type name
  );

  return wrapperCode;
}

Generate Both Type and Wrapper

import { generateActorCaller } from '@actor-types/generator';
import { readFile, writeFile } from 'fs/promises';

async function generateAll() {
  const schemaString = await readFile('schema.json', 'utf-8');

  // Generate both the input type and wrapper function
  const code = await generateActorCaller(
    schemaString,
    'myActor',
    'john-doe/my-actor'
  );

  await writeFile('myActor.ts', code);
}

API Reference

generateInputType(schemaString, typeName = 'Input'): Promise<string>

Generates a TypeScript interface from a JSON schema string.

generateActorWrapper(actorName, actorId, inputTypeName): string

Generates a TypeScript function that calls an Apify actor with typed input.

generateActorCaller(schemaString, actorName, actorId): Promise<string>

Combines both functions to generate a complete TypeScript file with both the input type and wrapper function.