@tabnas/transduce 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/dist/capability.d.ts +6 -0
- package/dist/capability.js +52 -0
- package/dist/capability.js.map +1 -0
- package/dist/datum.d.ts +64 -0
- package/dist/datum.js +391 -0
- package/dist/datum.js.map +1 -0
- package/dist/error.d.ts +43 -0
- package/dist/error.js +169 -0
- package/dist/error.js.map +1 -0
- package/dist/event.d.ts +56 -0
- package/dist/event.js +101 -0
- package/dist/event.js.map +1 -0
- package/dist/guard.d.ts +20 -0
- package/dist/guard.js +90 -0
- package/dist/guard.js.map +1 -0
- package/dist/json.d.ts +4 -0
- package/dist/json.js +92 -0
- package/dist/json.js.map +1 -0
- package/dist/limits.d.ts +36 -0
- package/dist/limits.js +133 -0
- package/dist/limits.js.map +1 -0
- package/dist/lines.d.ts +39 -0
- package/dist/lines.js +1139 -0
- package/dist/lines.js.map +1 -0
- package/dist/matcher.d.ts +26 -0
- package/dist/matcher.js +245 -0
- package/dist/matcher.js.map +1 -0
- package/dist/parser-source.d.ts +27 -0
- package/dist/parser-source.js +194 -0
- package/dist/parser-source.js.map +1 -0
- package/dist/route.d.ts +61 -0
- package/dist/route.js +197 -0
- package/dist/route.js.map +1 -0
- package/dist/rule-events.d.ts +58 -0
- package/dist/rule-events.js +598 -0
- package/dist/rule-events.js.map +1 -0
- package/dist/scan.d.ts +19 -0
- package/dist/scan.js +70 -0
- package/dist/scan.js.map +1 -0
- package/dist/selector.d.ts +40 -0
- package/dist/selector.js +154 -0
- package/dist/selector.js.map +1 -0
- package/dist/sink.d.ts +29 -0
- package/dist/sink.js +184 -0
- package/dist/sink.js.map +1 -0
- package/dist/source.d.ts +37 -0
- package/dist/source.js +113 -0
- package/dist/source.js.map +1 -0
- package/dist/table-from-json.d.ts +12 -0
- package/dist/table-from-json.js +217 -0
- package/dist/table-from-json.js.map +1 -0
- package/dist/table.d.ts +81 -0
- package/dist/table.js +141 -0
- package/dist/table.js.map +1 -0
- package/dist/transduce.d.ts +28 -0
- package/dist/transduce.js +109 -0
- package/dist/transduce.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/value.d.ts +16 -0
- package/dist/value.js +96 -0
- package/dist/value.js.map +1 -0
- package/package.json +65 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":"7.0.2","root":["../src/capability.ts","../src/datum.ts","../src/error.ts","../src/event.ts","../src/guard.ts","../src/json.ts","../src/limits.ts","../src/lines.ts","../src/matcher.ts","../src/parser-source.ts","../src/route.ts","../src/rule-events.ts","../src/scan.ts","../src/selector.ts","../src/sink.ts","../src/source.ts","../src/table-from-json.ts","../src/table.ts","../src/transduce.ts","../src/value.ts"],"packageJsons":["../node_modules/@tabnas/csv/package.json","../node_modules/@tabnas/json/package.json","../node_modules/@tabnas/jsonic/package.json","../node_modules/@tabnas/parser/package.json","../node_modules/@types/node/package.json","../node_modules/undici-types/package.json","../package.json"],"missingPackageJsons":["../node_modules/@tabnas/csv/dist/package.json","../node_modules/@tabnas/json/dist/package.json","../node_modules/@tabnas/parser/dist/package.json","../node_modules/@types/assert/package.json","../node_modules/@types/assert/strict/package.json","../node_modules/@types/async_hooks/package.json","../node_modules/@types/buffer/package.json","../node_modules/@types/child_process/package.json","../node_modules/@types/cluster/package.json","../node_modules/@types/console/package.json","../node_modules/@types/constants/package.json","../node_modules/@types/crypto/package.json","../node_modules/@types/dgram/package.json","../node_modules/@types/diagnostics_channel/package.json","../node_modules/@types/dns/package.json","../node_modules/@types/dns/promises/package.json","../node_modules/@types/domain/package.json","../node_modules/@types/events/package.json","../node_modules/@types/fs/package.json","../node_modules/@types/fs/promises/package.json","../node_modules/@types/http/package.json","../node_modules/@types/http2/package.json","../node_modules/@types/https/package.json","../node_modules/@types/inspector/package.json","../node_modules/@types/inspector/promises/package.json","../node_modules/@types/module/package.json","../node_modules/@types/net/package.json","../node_modules/@types/node/assert/package.json","../node_modules/@types/node/dns/package.json","../node_modules/@types/node/fs/package.json","../node_modules/@types/node/inspector/package.json","../node_modules/@types/node/path/package.json","../node_modules/@types/node/readline/package.json","../node_modules/@types/node/stream/package.json","../node_modules/@types/node/test/package.json","../node_modules/@types/node/timers/package.json","../node_modules/@types/node/util/package.json","../node_modules/@types/node/web-globals/package.json","../node_modules/@types/node/zlib/package.json","../node_modules/@types/os/package.json","../node_modules/@types/path/package.json","../node_modules/@types/path/posix/package.json","../node_modules/@types/path/win32/package.json","../node_modules/@types/perf_hooks/package.json","../node_modules/@types/process/package.json","../node_modules/@types/punycode/package.json","../node_modules/@types/querystring/package.json","../node_modules/@types/readline/package.json","../node_modules/@types/readline/promises/package.json","../node_modules/@types/repl/package.json","../node_modules/@types/stream/consumers/package.json","../node_modules/@types/stream/iter/package.json","../node_modules/@types/stream/package.json","../node_modules/@types/stream/promises/package.json","../node_modules/@types/stream/web/package.json","../node_modules/@types/string_decoder/package.json","../node_modules/@types/timers/package.json","../node_modules/@types/timers/promises/package.json","../node_modules/@types/tls/package.json","../node_modules/@types/trace_events/package.json","../node_modules/@types/tty/package.json","../node_modules/@types/url/package.json","../node_modules/@types/util/package.json","../node_modules/@types/util/types/package.json","../node_modules/@types/v8/package.json","../node_modules/@types/vm/package.json","../node_modules/@types/wasi/package.json","../node_modules/@types/worker_threads/package.json","../node_modules/@types/zlib/package.json","../node_modules/assert/package.json","../node_modules/assert/strict/package.json","../node_modules/async_hooks/package.json","../node_modules/buffer/package.json","../node_modules/child_process/package.json","../node_modules/cluster/package.json","../node_modules/console/package.json","../node_modules/constants/package.json","../node_modules/crypto/package.json","../node_modules/dgram/package.json","../node_modules/diagnostics_channel/package.json","../node_modules/dns/package.json","../node_modules/dns/promises/package.json","../node_modules/domain/package.json","../node_modules/events/package.json","../node_modules/fs/package.json","../node_modules/fs/promises/package.json","../node_modules/http/package.json","../node_modules/http2/package.json","../node_modules/https/package.json","../node_modules/inspector/package.json","../node_modules/inspector/promises/package.json","../node_modules/module/package.json","../node_modules/net/package.json","../node_modules/os/package.json","../node_modules/path/package.json","../node_modules/path/posix/package.json","../node_modules/path/win32/package.json","../node_modules/perf_hooks/package.json","../node_modules/process/package.json","../node_modules/punycode/package.json","../node_modules/querystring/package.json","../node_modules/readline/package.json","../node_modules/readline/promises/package.json","../node_modules/repl/package.json","../node_modules/stream/consumers/package.json","../node_modules/stream/iter/package.json","../node_modules/stream/package.json","../node_modules/stream/promises/package.json","../node_modules/stream/web/package.json","../node_modules/string_decoder/package.json","../node_modules/timers/package.json","../node_modules/timers/promises/package.json","../node_modules/tls/package.json","../node_modules/trace_events/package.json","../node_modules/tty/package.json","../node_modules/url/package.json","../node_modules/util/package.json","../node_modules/util/types/package.json","../node_modules/v8/package.json","../node_modules/vm/package.json","../node_modules/wasi/package.json","../node_modules/worker_threads/package.json","../node_modules/zlib/package.json"]}
|
package/dist/value.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export type EngineScalar = {
|
|
2
|
+
type: 'null';
|
|
3
|
+
} | {
|
|
4
|
+
type: 'bool';
|
|
5
|
+
value: boolean;
|
|
6
|
+
} | {
|
|
7
|
+
type: 'number';
|
|
8
|
+
value: number;
|
|
9
|
+
} | {
|
|
10
|
+
type: 'string';
|
|
11
|
+
value: string;
|
|
12
|
+
};
|
|
13
|
+
export declare function engineScalar(v: unknown): EngineScalar | undefined;
|
|
14
|
+
export declare function isEngineContainer(v: unknown): boolean;
|
|
15
|
+
export declare function isEngineMap(v: unknown): v is Record<string, unknown>;
|
|
16
|
+
export declare function engineKeys(v: unknown): string[];
|
package/dist/value.js
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* Copyright (c) 2026 tabnas, MIT License */
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.engineScalar = engineScalar;
|
|
5
|
+
exports.isEngineContainer = isEngineContainer;
|
|
6
|
+
exports.isEngineMap = isEngineMap;
|
|
7
|
+
exports.engineKeys = engineKeys;
|
|
8
|
+
// Reading the engine's values: what a tabnas parse returns in TypeScript.
|
|
9
|
+
//
|
|
10
|
+
// The engine builds plain JavaScript values: `null` and `undefined`,
|
|
11
|
+
// booleans, numbers, strings, arrays and objects. A few grammars hand over
|
|
12
|
+
// host types, which read as the scalars they stand for: a boxed `String`
|
|
13
|
+
// (the engine's text annotation), a `BigInt`, and a TOML `Date`, which
|
|
14
|
+
// reads as the source text it carries (`__toml__.src`), as the Rust
|
|
15
|
+
// runtime's date does.
|
|
16
|
+
//
|
|
17
|
+
// An object's member order is its insertion order. A plain object
|
|
18
|
+
// enumerates integer-like keys first whatever order they were written in,
|
|
19
|
+
// so the engine records the order on the node under `map.ordered` (read
|
|
20
|
+
// with `KEY_ORDER`); the sources switch that on, and `engineKeys` reads
|
|
21
|
+
// it, falling back to `Object.keys`.
|
|
22
|
+
// The engine's key-order side channel (`keyOrder` in @tabnas/parser).
|
|
23
|
+
const KEY_ORDER = Symbol.for('tabnas.keyOrder');
|
|
24
|
+
const NULL = { type: 'null' };
|
|
25
|
+
// The value as a scalar, or `undefined` when it is a container.
|
|
26
|
+
function engineScalar(v) {
|
|
27
|
+
switch (typeof v) {
|
|
28
|
+
case 'undefined':
|
|
29
|
+
return NULL;
|
|
30
|
+
case 'boolean':
|
|
31
|
+
return { type: 'bool', value: v };
|
|
32
|
+
case 'number':
|
|
33
|
+
return { type: 'number', value: v };
|
|
34
|
+
case 'bigint':
|
|
35
|
+
return { type: 'number', value: Number(v) };
|
|
36
|
+
case 'string':
|
|
37
|
+
return { type: 'string', value: v };
|
|
38
|
+
case 'object':
|
|
39
|
+
if (null === v)
|
|
40
|
+
return NULL;
|
|
41
|
+
if (Array.isArray(v))
|
|
42
|
+
return undefined;
|
|
43
|
+
if (v instanceof String)
|
|
44
|
+
return { type: 'string', value: v.valueOf() };
|
|
45
|
+
if (v instanceof Number)
|
|
46
|
+
return { type: 'number', value: v.valueOf() };
|
|
47
|
+
if (v instanceof Boolean)
|
|
48
|
+
return { type: 'bool', value: v.valueOf() };
|
|
49
|
+
if (v instanceof Date) {
|
|
50
|
+
const src = v.__toml__?.src;
|
|
51
|
+
return { type: 'string', value: 'string' === typeof src ? src : v.toJSON() ?? 'null' };
|
|
52
|
+
}
|
|
53
|
+
return undefined;
|
|
54
|
+
default:
|
|
55
|
+
// A function or a symbol has no JSON form.
|
|
56
|
+
return NULL;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
// Whether the value is a container: an array, or an object that is no
|
|
60
|
+
// scalar's host type.
|
|
61
|
+
function isEngineContainer(v) {
|
|
62
|
+
return null !== v && 'object' === typeof v && undefined === engineScalar(v);
|
|
63
|
+
}
|
|
64
|
+
// Whether the value is a map (a container that is not an array).
|
|
65
|
+
function isEngineMap(v) {
|
|
66
|
+
return isEngineContainer(v) && !Array.isArray(v);
|
|
67
|
+
}
|
|
68
|
+
// A map's member names, in insertion order: the engine's recorded order
|
|
69
|
+
// where it kept one, each name once and only while the map still holds it,
|
|
70
|
+
// then any member the record missed.
|
|
71
|
+
function engineKeys(v) {
|
|
72
|
+
if (null === v || 'object' !== typeof v)
|
|
73
|
+
return [];
|
|
74
|
+
const own = Object.keys(v);
|
|
75
|
+
const order = v[KEY_ORDER];
|
|
76
|
+
if (!Array.isArray(order) || 0 === order.length)
|
|
77
|
+
return own;
|
|
78
|
+
const has = Object.prototype.hasOwnProperty;
|
|
79
|
+
const seen = new Set();
|
|
80
|
+
const out = [];
|
|
81
|
+
for (const k of order) {
|
|
82
|
+
const key = String(k);
|
|
83
|
+
if (seen.has(key) || !has.call(v, key))
|
|
84
|
+
continue;
|
|
85
|
+
seen.add(key);
|
|
86
|
+
out.push(key);
|
|
87
|
+
}
|
|
88
|
+
if (out.length !== own.length) {
|
|
89
|
+
for (const k of own) {
|
|
90
|
+
if (!seen.has(k))
|
|
91
|
+
out.push(k);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return out;
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=value.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"value.js","sourceRoot":"","sources":["../src/value.ts"],"names":[],"mappings":";AAAA,4CAA4C;;;;;;AAE5C,0EAA0E;AAC1E,EAAE;AACF,qEAAqE;AACrE,2EAA2E;AAC3E,yEAAyE;AACzE,uEAAuE;AACvE,oEAAoE;AACpE,uBAAuB;AACvB,EAAE;AACF,kEAAkE;AAClE,0EAA0E;AAC1E,wEAAwE;AACxE,wEAAwE;AACxE,qCAAqC;AAErC,sEAAsE;AACtE,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;AAQ/C,MAAM,IAAI,GAAiB,EAAE,IAAI,EAAE,MAAM,EAAE,CAAA;AAE3C,gEAAgE;AAChE,sBAA6B,CAAU;IACrC,QAAQ,OAAO,CAAC,EAAE,CAAC;QACjB,KAAK,WAAW;YACd,OAAO,IAAI,CAAA;QACb,KAAK,SAAS;YACZ,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAA;QACnC,KAAK,QAAQ;YACX,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,CAAA;QACrC,KAAK,QAAQ;YACX,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAA;QAC7C,KAAK,QAAQ;YACX,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,CAAA;QACrC,KAAK,QAAQ;YACX,IAAI,IAAI,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAA;YAC3B,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;gBAAE,OAAO,SAAS,CAAA;YACtC,IAAI,CAAC,YAAY,MAAM;gBAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAA;YACtE,IAAI,CAAC,YAAY,MAAM;gBAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAA;YACtE,IAAI,CAAC,YAAY,OAAO;gBAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAA;YACrE,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC;gBACtB,MAAM,GAAG,GAAI,CAAS,CAAC,QAAQ,EAAE,GAAG,CAAA;gBACpC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,KAAK,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,MAAM,EAAE,CAAA;YACxF,CAAC;YACD,OAAO,SAAS,CAAA;QAClB;YACE,2CAA2C;YAC3C,OAAO,IAAI,CAAA;IACf,CAAC;AACH,CAAC;AAED,sEAAsE;AACtE,sBAAsB;AACtB,2BAAkC,CAAU;IAC1C,OAAO,IAAI,KAAK,CAAC,IAAI,QAAQ,KAAK,OAAO,CAAC,IAAI,SAAS,KAAK,YAAY,CAAC,CAAC,CAAC,CAAA;AAC7E,CAAC;AAED,iEAAiE;AACjE,qBAA4B,CAAU;IACpC,OAAO,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;AAClD,CAAC;AAED,wEAAwE;AACxE,2EAA2E;AAC3E,qCAAqC;AACrC,oBAA2B,CAAU;IACnC,IAAI,IAAI,KAAK,CAAC,IAAI,QAAQ,KAAK,OAAO,CAAC;QAAE,OAAO,EAAE,CAAA;IAClD,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAW,CAAC,CAAA;IACpC,MAAM,KAAK,GAAa,CAAS,CAAC,SAAS,CAAC,CAAA;IAC5C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,MAAM;QAAE,OAAO,GAAG,CAAA;IAC3D,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAA;IAC3C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAA;IAC9B,MAAM,GAAG,GAAa,EAAE,CAAA;IACxB,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;QACrB,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC;YAAE,SAAQ;QAChD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACb,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACf,CAAC;IACD,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC;QAC9B,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;YACpB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;gBAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC/B,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@tabnas/transduce",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"main": "dist/transduce.js",
|
|
5
|
+
"type": "commonjs",
|
|
6
|
+
"types": "dist/transduce.d.ts",
|
|
7
|
+
"description": "Streaming transducers over any tabnas parser: source events, selectors, bounded captures and the table protocol.",
|
|
8
|
+
"homepage": "https://github.com/tabnas/transduce",
|
|
9
|
+
"keywords": [
|
|
10
|
+
"parser",
|
|
11
|
+
"streaming",
|
|
12
|
+
"transducer",
|
|
13
|
+
"json",
|
|
14
|
+
"csv"
|
|
15
|
+
],
|
|
16
|
+
"author": "Richard Rodger (http://richardrodger.com)",
|
|
17
|
+
"license": "MIT",
|
|
18
|
+
"engines": {
|
|
19
|
+
"node": ">=24"
|
|
20
|
+
},
|
|
21
|
+
"scripts": {
|
|
22
|
+
"build": "tsc --build src && tsc --build test",
|
|
23
|
+
"watch": "tsc --build src test -w",
|
|
24
|
+
"clean": "rm -rf node_modules dist dist-test package-lock.json",
|
|
25
|
+
"reset": "npm run clean && npm i && npm run build && npm test",
|
|
26
|
+
"test": "npm run build && node --enable-source-maps --test \"dist-test/*.test.js\""
|
|
27
|
+
},
|
|
28
|
+
"files": [
|
|
29
|
+
"dist",
|
|
30
|
+
"LICENSE"
|
|
31
|
+
],
|
|
32
|
+
"exports": {
|
|
33
|
+
".": "./dist/transduce.js"
|
|
34
|
+
},
|
|
35
|
+
"peerDependencies": {
|
|
36
|
+
"@tabnas/csv": ">=0",
|
|
37
|
+
"@tabnas/json": ">=0",
|
|
38
|
+
"@tabnas/jsonic": ">=0",
|
|
39
|
+
"@tabnas/parser": ">=0"
|
|
40
|
+
},
|
|
41
|
+
"devDependencies": {
|
|
42
|
+
"@tabnas/csv": "*",
|
|
43
|
+
"@tabnas/feed": "*",
|
|
44
|
+
"@tabnas/ini": "*",
|
|
45
|
+
"@tabnas/json": "*",
|
|
46
|
+
"@tabnas/json5": "*",
|
|
47
|
+
"@tabnas/jsonc": "*",
|
|
48
|
+
"@tabnas/jsonic": "*",
|
|
49
|
+
"@tabnas/jsonl": "*",
|
|
50
|
+
"@tabnas/markdown": "*",
|
|
51
|
+
"@tabnas/parser": "*",
|
|
52
|
+
"@tabnas/support": "*",
|
|
53
|
+
"@tabnas/toml": "*",
|
|
54
|
+
"@tabnas/xml": "*",
|
|
55
|
+
"@tabnas/yaml": "*",
|
|
56
|
+
"@tabnas/zon": "*",
|
|
57
|
+
"@types/node": "26.x",
|
|
58
|
+
"typescript": "7.x"
|
|
59
|
+
},
|
|
60
|
+
"repository": {
|
|
61
|
+
"type": "git",
|
|
62
|
+
"url": "git://github.com/tabnas/transduce.git",
|
|
63
|
+
"directory": "ts"
|
|
64
|
+
}
|
|
65
|
+
}
|