Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
histhub
geolinker-common
Commits
66c561c6
Commit
66c561c6
authored
Oct 10, 2019
by
Tobinsk
Browse files
Merge branch '19-add-streamfiltertransformer' into 'master'
Resolve "Add StreamFilterTransformer" Closes
#19
See merge request
!17
parents
2c5e9723
07cca1d8
Changes
6
Hide whitespace changes
Inline
Side-by-side
dist/stream/stream-filter-transformer.d.ts
0 → 100644
View file @
66c561c6
/// <reference types="node" />
import
{
Transform
,
TransformOptions
}
from
'
stream
'
;
/**
* Options interface
*/
export
interface
IStreamFilterOptions
extends
TransformOptions
{
filter
:
(
chunk
:
any
,
encode
:
string
)
=>
[
null
|
string
,
any
];
}
/**
* Filter a stream of data with a simple function
*/
declare
class
StreamFilterTransformer
extends
Transform
{
private
readonly
filter
;
constructor
(
options
:
IStreamFilterOptions
);
/**
* @inheritDoc
* @param chunk
* @param encoding
* @param callback
* @private
*/
_transform
(
chunk
:
any
,
encoding
:
any
,
callback
:
any
):
void
;
}
export
default
StreamFilterTransformer
;
dist/stream/stream-filter-transformer.js
0 → 100644
View file @
66c561c6
"
use strict
"
;
Object
.
defineProperty
(
exports
,
"
__esModule
"
,
{
value
:
true
});
const
stream_1
=
require
(
"
stream
"
);
/**
* Filter a stream of data with a simple function
*/
class
StreamFilterTransformer
extends
stream_1
.
Transform
{
constructor
(
options
)
{
super
(
options
);
this
.
filter
=
options
.
filter
;
}
/**
* @inheritDoc
* @param chunk
* @param encoding
* @param callback
* @private
*/
_transform
(
chunk
,
encoding
,
callback
)
{
callback
(...
this
.
filter
(
chunk
,
encoding
));
}
}
exports
.
default
=
StreamFilterTransformer
;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyZWFtLWZpbHRlci10cmFuc2Zvcm1lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdHJlYW0vc3RyZWFtLWZpbHRlci10cmFuc2Zvcm1lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLG1DQUFtRDtBQVNuRDs7R0FFRztBQUNILDZCQUE4QixTQUFRLGtCQUFTO0lBRTNDLFlBQVksT0FBNkI7UUFDckMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxVQUFVLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRO1FBQ3ZDLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDOUMsQ0FBQztDQUNKO0FBRUQsa0JBQWUsdUJBQXVCLENBQUMifQ==
\ No newline at end of file
dist/uri-builder.js
View file @
66c561c6
...
...
@@ -38,4 +38,4 @@ exports.default = UrlBuilder;
// More configurable. We like to generate those links from a small interface. So we cann simply add and delete them
// we wana have a file from which we can load stuff into memory. We do not want to have DB overhead
// perhaps e need a rest interface. Otherwise we will have problem to "live" reload the config
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXJpLWJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdXJpLWJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxnQ0FBaUM7QUFDakMseUJBQTRCO0FBc0I1QjtJQVFFLFlBQVksTUFBTTtRQUNoQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQix1Q0FBdUM7UUFDdkMsSUFBSTtZQUNGLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLFNBQVMsR0FBQyxrQkFBa0IsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1NBQ3ZGO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixNQUFNLENBQUMsS0FBSyxDQUFDLHFDQUFxQyxDQUFDLENBQUE7U0FDcEQ7SUFDSCxDQUFDO0lBQ0Q7Ozs7O09BS0c7SUFDSCxXQUFXLENBQUMsUUFBZ0IsRUFBRSxVQUFrQjtRQUM5Qyw2QkFBNkI7UUFDN0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUMzQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEtBQUssUUFBUSxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQy9ELENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLElBQUksVUFBVSxFQUFFO1lBQzVCLDBCQUEwQjtZQUMxQixJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxlQUFlLENBQUMsRUFBRTtnQkFDM0QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO2FBQ3BFO1lBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxVQUFVLDRCQUE0QixDQUFDLENBQUM7U0FDN0Q7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FDRjtBQXRDRCw2QkFzQ0M7QUFHRCxtSEFBbUg7QUFDbkgsbUdBQW1HO0FBQ25HLDhGQUE4RiJ9
\ No newline at end of file
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXJpLWJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdXJpLWJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxnQ0FBaUM7QUFDakMseUJBQTRCO0FBc0I1QjtJQVFFLFlBQVksTUFBTTtRQUNoQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQix1Q0FBdUM7UUFDdkMsSUFBSTtZQUNGLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLFNBQVMsR0FBQyxrQkFBa0IsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1NBQ3ZGO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixNQUFNLENBQUMsS0FBSyxDQUFDLHFDQUFxQyxDQUFDLENBQUE7U0FDcEQ7SUFDSCxDQUFDO0lBQ0Q7Ozs7O09BS0c7SUFDSSxXQUFXLENBQUMsUUFBZ0IsRUFBRSxVQUFrQjtRQUNyRCw2QkFBNkI7UUFDN0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUMzQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEtBQUssUUFBUSxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQy9ELENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLElBQUksVUFBVSxFQUFFO1lBQzVCLDBCQUEwQjtZQUMxQixJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxlQUFlLENBQUMsRUFBRTtnQkFDM0QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO2FBQ3BFO1lBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxVQUFVLDRCQUE0QixDQUFDLENBQUM7U0FDN0Q7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FDRjtBQXRDRCw2QkFzQ0M7QUFFRCxtSEFBbUg7QUFDbkgsbUdBQW1HO0FBQ25HLDhGQUE4RiJ9
\ No newline at end of file
src/stream/stream-filter-transformer.ts
0 → 100644
View file @
66c561c6
import
{
Transform
,
TransformOptions
}
from
'
stream
'
;
/**
* Options interface
*/
export
interface
IStreamFilterOptions
extends
TransformOptions
{
filter
:
(
chunk
:
any
,
encode
:
string
)
=>
[
null
|
string
,
any
];
}
/**
* Filter a stream of data with a simple function
*/
class
StreamFilterTransformer
extends
Transform
{
private
readonly
filter
;
constructor
(
options
:
IStreamFilterOptions
)
{
super
(
options
);
this
.
filter
=
options
.
filter
;
}
/**
* @inheritDoc
* @param chunk
* @param encoding
* @param callback
* @private
*/
public
_transform
(
chunk
,
encoding
,
callback
)
{
callback
(...
this
.
filter
(
chunk
,
encoding
));
}
}
export
default
StreamFilterTransformer
;
src/uri-builder.ts
View file @
66c561c6
...
...
@@ -44,7 +44,7 @@ export default class UrlBuilder {
* @param {string} identifier
* @returns {string | null}
*/
urlResolver
(
provider
:
string
,
identifier
:
string
):
string
|
null
{
public
urlResolver
(
provider
:
string
,
identifier
:
string
):
string
|
null
{
// check for a the identifier
const
index
=
this
.
providers
.
findIndex
((
p
)
=>
{
return
p
.
slug
===
provider
||
p
.
alias
.
indexOf
(
provider
)
>
-
1
;
...
...
@@ -61,7 +61,6 @@ export default class UrlBuilder {
}
}
// More configurable. We like to generate those links from a small interface. So we cann simply add and delete them
// we wana have a file from which we can load stuff into memory. We do not want to have DB overhead
// perhaps e need a rest interface. Otherwise we will have problem to "live" reload the config
test/stream/stream-filter-transformer.spec.ts
0 → 100644
View file @
66c561c6
import
chai
=
require
(
'
chai
'
);
import
{
describe
,
it
}
from
'
mocha
'
;
import
StreamFilterTransformer
from
'
../../src/stream/stream-filter-transformer
'
;
process
.
env
.
NODE_ENV
=
'
test
'
;
describe
(
'
Test stream-filter-transformer
'
,
()
=>
{
before
((
done
)
=>
{
chai
.
should
();
done
();
});
it
(
'
Try to transform a stream with a function
'
,
(
done
)
=>
{
const
filter
=
(
chunk
:
any
,
encode
:
string
):
[
null
,
any
]
=>
{
chunk
.
total
++
;
return
[
null
,
chunk
];
};
const
stream
=
new
StreamFilterTransformer
({
objectMode
:
true
,
filter
});
// listener to check output
stream
.
on
(
'
data
'
,
(
data
:
any
)
=>
{
data
.
total
.
should
.
be
.
equal
(
1
);
done
();
});
stream
.
write
({
total
:
0
});
});
});
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment