.. meta:: :keywords: PLUGIN LAMBDA JSON .. _doc-plugin-lambda-json: 람다 플러그인 JSON ================== 전체 구조 --------- .. code-block:: javascript :linenos: { "info": { ... }, "controls": { ... }, "props": [ ... ] } info ---- 람다의 상세 정보를 포함합니다. +--------------------+--------------+-----------------------------------+ | Name | Type | Description | +====================+==============+===================================+ | name | string | **[필수]** 람다의 이름 | +--------------------+--------------+-----------------------------------+ | version | string | 람다의 버전 정보 | +--------------------+--------------+-----------------------------------+ | category | string | 람다의 상위 분류 | +--------------------+--------------+-----------------------------------+ | keywords | string array | 키워드. 검색 및 분류에 사용 | +--------------------+--------------+-----------------------------------+ | homepage | string | 홈페이지 주소 | +--------------------+--------------+-----------------------------------+ | bugs | string | 버그 발생시 리포팅할 주소 | +--------------------+--------------+-----------------------------------+ | license | string | 라이선스 이름 | +--------------------+--------------+-----------------------------------+ | author | string | 작성자 | +--------------------+--------------+-----------------------------------+ | dependencies | object array | 종속성 목록 | +--------------------+--------------+-----------------------------------+ | engines | string | 실행가능한 CORE 엔진 버전 | +--------------------+--------------+-----------------------------------+ | environment | object | 람다를 작동시킬 구성 환경 | +--------------------+--------------+-----------------------------------+ | titles | object | 화면에 출력할 타이틀명 | +--------------------+--------------+-----------------------------------+ | descriptions | object | 화면에 출력할 람다의 간략한 정보 | +--------------------+--------------+-----------------------------------+ | documentation_mime | string | 문서에 적용될 ``MIME`` | +--------------------+--------------+-----------------------------------+ | documentations | object | 문서의 본문 | +--------------------+--------------+-----------------------------------+ | meta | object | 메타 데이터 정보 | +--------------------+--------------+-----------------------------------+ **version** 문자열은 ``major.minor.patch`` 포맷으로 버전명을 기입해 주세요. **meta** 객체는 "API" 또는 "WEB" 모듈과 상호작용하기 위한 정보를 포함합니다. **dependencies** 객체는 아래의 속성을 포함합니다. +----------+--------------+---------------+ | Name | Type | Description | +==========+==============+===============+ | type | string | 종속성의 종류 | +----------+--------------+---------------+ | src | string | 패키지 이름 | +----------+--------------+---------------+ | extra | string array | 확장 명령 목록| +----------+--------------+---------------+ **environment** 객체는 아래의 속성을 포함합니다. +----------+--------------+-------------+ | Name | Type | Description | +==========+==============+=============+ | type | string | 환경의 종류 | +----------+--------------+-------------+ | name | string | 환경의 이름 | +----------+--------------+-------------+ **titles**, **descriptions**, **documentations** 객체는 언어 코드에 해당하는 ``Key`` 와 내용에 해당하는 ``Value`` 를 내포합니다. 예제 코드는 다음과 같습니다. .. code-block:: javascript :linenos: "info": { "name": "numpy_zeros", "version": "1.0.0", "category": "numpy", "keywords": ["numpy"], "homepage": "https://answer.bogonets.com/", "bugs": "https://answer.bogonets.com/", "license": "Bogonet License", "author": "zer0", "dependencies": [ {"type": "pip", "src": "numpy"} ], "engines": ">=1.0.2", "environment": {}, "titles": { "en": "numpy.zeros", "ko": "numpy.zeros" }, "descriptions": { "en": "Returns an array filled with zeros.", "ko": "0으로 채워진 배열을 반환한다." }, "documentation_mime": "text", "documentations": {}, "meta": {} } controls -------- 람다의 입출력 슬롯을 정의합니다. **controls** 객체는 아래의 속성을 포함합니다. +----------+---------+-------------+ | Name | Type | Description | +==========+=========+=============+ | input | object | 입력 슬롯 | +----------+---------+-------------+ | output | object | 출력 슬롯 | +----------+---------+-------------+ **input** 과 **output** 객체는 아래의 속성을 포함합니다. +----------+--------------+---------------------------+ | Name | Type | Description | +==========+==============+===========================+ | list | object array | 슬롯 목록 | +----------+--------------+---------------------------+ | dynamic | bool | 동적 슬롯 지원 여부 | +----------+--------------+---------------------------+ | method | string | 슬롯의 데이터를 읽는 방법 | +----------+--------------+---------------------------+ **dynamic** 가 ``true`` 일 경우 사용자가 임의로 슬롯을 조절할 수 있습니다. **method** 는 아래의 값 중 하나를 사용할 수 있습니다. - ``native``: "CORE"의 원본 형태로 읽습니다. ``Box`` 구조를 사용합니다. - ``numpy``: Python numpy 배열을 사용합니다. - ``string``: 문자열을 사용합니다. **list** 객체는 아래의 속성을 포함합니다. +----------+--------------+---------------+ | Name | Type | Description | +==========+==============+===============+ | name | string | 슬롯의 이름 | +----------+--------------+---------------+ | mimes | string array | ``MIME`` 목록 | +----------+--------------+---------------+ 예제 코드는 다음과 같습니다. .. code-block:: javascript :linenos: "controls": { "input": { "list": [ { "name": "text" }, { "name": "audio", "mime": "audio/ogg" } ], "dynamic": true, "method": "numpy" }, "output": [ { "name": "frame", "mimes": ["image/jpeg", "image/png"] } ] } props ----- 람다의 속성 목록을 정의합니다. **props** 객체는 아래의 속성을 포함합니다. +---------------+--------------+----------------------+ | Name | Type | Description | +===============+==============+======================+ | rule | string | 속성에 적용할 규칙 | +---------------+--------------+----------------------+ | name | string | 속성 이름 | +---------------+--------------+----------------------+ | default_value | any | 속성의 기본 값 | +---------------+--------------+----------------------+ | type | string | 속성 타입 | +---------------+--------------+----------------------+ | required | bool | 필수 여부 | +---------------+--------------+----------------------+ | valid | object | Validation 목록 | +---------------+--------------+----------------------+ | title | object | 화면에 출력할 타이틀 | +---------------+--------------+----------------------+ | help | object | 화면에 출력할 도움말 | +---------------+--------------+----------------------+ **rule** 은 아래의 값 중 하나를 사용할 수 있습니다. - ``initialize_only``: 람다를 초기화 한 이후, 더이상 수정할 수 없습니다. ``init`` 으로 사용할 수 있습니다. - ``read_only``: 읽기 전용 속성으로, 람다의 속성을 조회하기 위한 용도 입니다. ``r`` 으로 사용할 수 있습니다. - ``read_and_write``: 읽기 및 쓰기 가능합니다. ``rw`` 으로 사용할 수 있습니다. **type** 은 아래의 값 중 하나를 사용할 수 있습니다. - ``str``: 문자열 - ``bool``: Boolean, ``true`` 또는 ``false`` 값을 허용합니다. - ``int``: 정수형 - ``unsigned``: 부호 없는 정수형 - ``size``: 크기 - ``float``: 단 정밀도 실수 - ``double``: 배 정밀도 실수 - ``json``: JSON 객체 - ``csv``: CSV 문자열, ``,`` 를 사용하여 문자열을 분할합니다. - ``color``: 색상 값, ``#RRGGBB`` 포맷의 문자열을 사용합니다. - ``duration``: 경과 시간. 문자열을 사용합니다. - ``byte``: 바이트 단위 크기. 문자열을 사용합니다. - ``time``: 절대 시간. 문자열을 사용합니다. - ``box_json``: ``Box`` 포맷의 JSON 객체 **valid** 객체는 아래의 속성을 포함합니다. +----------+--------------+-------------+-----------+ | Name | Type | Description | Version | +==========+==============+=============+===========+ | list | string | 선택 목록 | | +----------+--------------+-------------+-----------+ | hint | string | 힌트 목록 | | +----------+--------------+-------------+-----------+ | min | string | 최소 값 | | +----------+--------------+-------------+-----------+ | max | string | 최대 값 | | +----------+--------------+-------------+-----------+ | dyhint | string | 유동적 힌트 | | +----------+--------------+-------------+-----------+ | password | string | 암호문 처리 | | +----------+--------------+-------------+-----------+ | advance | string | 상세 옵션 | ``1.1.8`` | +----------+--------------+-------------+-----------+ **list** 와 **hint** 는 ``;`` 으로 문자열을 분할 합니다. 예제 코드는 다음과 같습니다. .. code-block:: javascript :linenos: { "rule": "initialize_only", "name": "api_preference", "default_value": "default", "type": "str", "required": true, "valid": { "list": "default;ffmpeg;images;dshow" }, "title": { "en": "API Preference", "ko": "API Preference" }, "help": { "en": "Preferred Capture API backends to use.", "ko": "사용할 백엔드 API." } }