- Merged pull request #130. Header value should be a string.
- Merged pull request #129. Не падать, если ответ пуст или сформирован некорректно.
- Merged pull request #126. Экранируем HTTP-заголовки в ответе.
- Merged pull request #124. Don't treat
//
specially.
- Merged pull request #118. Fix for PUT and body option.
- Fixed #123. Fix for PATCH and body option.
- Merged pull request #117. Небольшие улучшения логирования.
- Merged pull request #114. Параметр body http-блока, для явного задания тела пост-запроса.
- Merged pull request #108. Фикс: когда блок успевает выполниться до того, как мы установили таймер таймаута в логи пишется ошибка таймаута.
- Merged pull request #103. Вычислять значение Content-Length с учетом UTF-8.
- Merged pull request #102. fix overwrite dirname in include block.
- Merged pull request #101. support of JSON in post requests.
- Merged pull request #100. clear timeout when block fails.
- Merged pull request #99. https support + http_options support.
- Fix для 0.0.56.
- Fixed #96. Странное поведение include блока.
- Date format support in
de.config
. Merged pull requests #90, #92. - Fixed #93. Флаг
only_status
возвращает заголовки. Merged pull request #94. - Merged pull request #95.
options.headers
in http block.
- Fixed #84. Local block.
- Merged pull request #83. Log code and signal on fork process exit
- Merged pull request #82. Removed duplicated method
- Merged pull request #80. Debug log found in cache with key message
- Merged pull request #78. Декларативная конструкция для гибкой работы со state.
- Merged pull request #76. de.script.init() config support.
- Merged pull request #75. Fixes #73.
- Merged pull request #72. logging http get params.
- Merged pull request #56. Specify filename for running block.
- Fix для 0.0.49. Опечатка.
- Fix для 0.0.49. Парсим тело ошибки, если там JSON.
- Fix для 0.0.49. Приводим буфер к строке.
- Fixed #41. Добавляем в http-ошибки тело ответа.
- В
de.http.js
ловим все 4xx/5xx ошибки (раньше был фиксированные и неполный список).
- Merged pull request #60.
- Откатил #57.
- Merged pull request #57.
- Merged pull request #55.
- Merged pull request #54.
-
Merged pull request #51.
-
require
должен работать в исполняемых descript'ом файлах. Например, в шаблонах, в jsx-файлах и т.д. -
nommon
версии0.0.28
.
- Merged pull request #50.
de.server.route
— метод, возвращающий либо строку с путем к jsx-файлу, либо инсансde.Block.*
.
- Пофикшен баг, когда внутри
de.Result.Value
оказываетсяundefined
(например, если в блоке естьoptions.result
, который вычисляется вundefined
), после чего методwrite()
падает, потому что в поток можно вывести толькоBuffer
илиString
.
-
Разные доработки по логированию.
-
nommon
версии0.0.26
.
- Merged pull request #48.
-
Базовое логирование.
В конфиге можно задать уровень логирования и logger:
log: { // По-умолчанию: 'debug'. // Возможные значения: 'off', 'error', 'warn', 'info', 'debug'. level: 'debug', // См. 'lib/de.logger.js' — дефолтный logger. logger: './my-logger.js' }
-
nommon
версии0.0.24
.
- Merged pull request #44.
- Merged pull request #42.
-
В
.jsx
-файлах доступен конфиг:de.object({ // Выводим весь конфиг целиком. config: de.value(de.config), // Выводим отдельное поле конфига host: de.value(de.config.backend.host) })
-
Ключик
--cpus
переименован в--workers
. Вместо--cpus 2
нужно использовать--workers 1
. Дефолтное значение параметра--workers
—require('os').cpus().length - 1
. -
Изменена сигнатура в
options.after
на(params, context, result)
. При этомresult
это инстанс классаde.Result.*
, а не готовый объект с данными. Если нужен доступ к какому-то его содержимому нужно использовать методobject()
:after: function(params, context, result) { var o = result.object(); console.log(o.foo.bar); }
-
Поправлено JS API. Минимально работающий вариант:
var de = require('descript'); de.script.init(); de.Block.compile('http://yandex.ru/yandsearch?') .run({ text: 'descript' }) .then(function(result) { console.log( result.string() ); });
В этом примере контекст создается автоматически (при этом и доступа к нему нет). В
result
находится инстансde.Result
.Более сложный вариант:
var http = require('http'); var de = require('descript'); de.script.init(); var block = de.Block.compile('http://yandex.ru/yandsearch?'); http .createServer(function(req, res) { // Создаем (асинхронно) контекст. de.Context.create(req).done(function(context) { block .run({ text: 'descript' }) .then(function(result) { // Этот метод выставляет все заголовки и т.д., // а также выводит результат в выходной поток (res) и закрывает поток. context.response.end(res, result); }); }); }) .listen(2000);
Альтернативный вариант — использовать
de.server.start()
для поднятия сервера автоматически:var de = require('descript'); de.server.init(); de.server.start();
-
Изменения в
de.Context
:-
Конструктор
de.Context()
первым параметром принимает или нодовский реквест (http.IncomingMessage
), или просто объект с параметрами. -
Инстанс
de.Context
содержит поля:-
request
— может быть null, если в конструктор были переданы просто параметры. Либо инстансde.Request
. -
response
— инстансde.Response
. -
query
— все параметры (включая извлеченные из body запроса приpost
-запросе). -
state
— общий стейт для обмена информацией между блоками. -
config
— ссылка наde.config
.
-
-
de.Context.create(request)
— метод для создания контекста, возвращает promise, в который уже приходит готовый контекст. Сделано так потому, что если этоpost
-запрос, то тело запроса (и параметры из него) получаются асинхронно.
-
-
Изменения в
de.Response
:-
Больше не содержит ссылку на нодовский
http.ServerResponse
. -
Появился метод
end(response, result)
— первым параметром принимаетhttp.ServerResponse
, второй (опциональный) —de.Result
. Метод выставляет заголовки, код ответа, редиректы и т.д. Если переданresult
, то выводит его в поток (попутно выставляяcontent-type
) и закрывает поток.
-
-
Изменения в
de.Request
:-
Больше не содержит ссылку на нодовский
http.IncomingMessage
. -
Имеет поля:
-
headers
— http-заголовки, пришедшие в реквесте. -
cookies
— куки. -
url
— объект, получающийся изrequire('url').parse(req.url, true, true)
. (http://nodejs.org/api/url.html#url_url)[http://nodejs.org/api/url.html#url_url].Если это был
POST
-запрос, то вurl.query
будут параметры из тела запроса. -
method
— метод (GET
,POST
, ...).
-
-