Skip to content
This repository was archived by the owner on Jun 13, 2019. It is now read-only.

Typescript - #119

Open
hansmbakker wants to merge 5 commits into
intel:masterfrom
hansmbakker:typings
Open

Typescript#119
hansmbakker wants to merge 5 commits into
intel:masterfrom
hansmbakker:typings

Conversation

@hansmbakker

Copy link
Copy Markdown
Contributor

I started working on typescript definitions for iotivity-node.
The strong typing prevents mistakes and assists during programming with intellisense in VS Code.

This is a work in progress, because I'm basically reverse engineering the JavaScript which is not always clear (e.g. objects are extended in several places with lodash, so that you don't have a clear overview of an object's properties, sometimes the return types of methods are not clear).

I yet have to start the lowlevel typings.

I could use some help and feedback from somebody who has more experience with programming for iotivity-node. Also I'm interested in hearing the rationale behind the code style (lots of lodash use and code nesting).

Is there anybody who would like to give me feedback or help a hand?

@zolkis

Copy link
Copy Markdown

Actually this is something we've been thinking about, and will consider adding TypeScript definitions to the spec. I hope to update on this during the coming days.

For time being, we can use an issue in this repo to discuss unclear things. So please check the spec, and point out where should it be more clear.

@coveralls

Copy link
Copy Markdown

Coverage Status

Coverage remained the same at 87.083% when pulling e1c08f1 on wind-rider:typings into ab0e6f3 on otcshare:master.

@hansmbakker

Copy link
Copy Markdown
ContributorAuthor

@zolkis thank you for linking to that spec, it helps a lot! I didn't know that iotivity-node was an implementation of that spec so it serves as good documentation!

I found out that the spec seems not to be followed wrt. the Error types - the spec uses Error subclasses (https://github.com/01org/iot-js-api/tree/master/api/ocf#error-handling) while iotivity-node uses the Error base class for everything, I'll make an issue for that

@coveralls

Copy link
Copy Markdown

Coverage Status

Coverage remained the same at 87.083% when pulling 82624cd on wind-rider:typings into ab0e6f3 on otcshare:master.

@hansmbakkerhansmbakker mentioned this pull request Feb 13, 2017
@coveralls

Copy link
Copy Markdown

Coverage Status

Coverage remained the same at 87.083% when pulling 9c4f92b on wind-rider:typings into ab0e6f3 on otcshare:master.

@coveralls

Copy link
Copy Markdown

Coverage Status

Coverage remained the same at 87.083% when pulling 9c4f92b on wind-rider:typings into ab0e6f3 on otcshare:master.

@coveralls

Copy link
Copy Markdown

Coverage Status

Coverage remained the same at 87.083% when pulling 2231e0c on wind-rider:typings into a4c1fd3 on otcshare:master.

@coveralls

Copy link
Copy Markdown

Coverage Status

Coverage remained the same at 87.083% when pulling 2231e0c on wind-rider:typings into a4c1fd3 on otcshare:master.

@hansmbakker

Copy link
Copy Markdown
ContributorAuthor

@zolkis, @gabrielschulhof do you have any feedback?

@zolkis

Copy link
Copy Markdown

Give it some more time, ELC is ongoing :)

@hansmbakker

Copy link
Copy Markdown
ContributorAuthor

Sorry, I didn't know that

@gabrielschulhof

Copy link
Copy Markdown

@Wind-rider Sorry about the delay!

The change looks good overall, however, I am concerned that it adds a lot of weight to the installed size of this package, because it pulls type definitions for all of lodash.

Would it be possible to create a new npm package which provides these definitions and depends on iotivity-node?

@hansmbakker

Copy link
Copy Markdown
ContributorAuthor

@gabrielschulhof it is possible to add something to https://github.com/DefinitelyTyped/DefinitelyTyped/ but I don't know how the npm publishing process works then...

@gabrielschulhof

Copy link
Copy Markdown

@Wind-rider, I'm not sure that having a symbolic link (such as js/node_modules/iotivity-node/index.d.ts) is portable across platforms. Have you tested the TypeScript examples on Windows?

@hansmbakker

Copy link
Copy Markdown
ContributorAuthor

@gabrielschulhof you're right, Windows doesn't understand the symbolic link. It was only in there to make the examples work, but I see I moved the ts examples to a separate folder so it's not needed there anymore.

As for whether the examples work on windows - they are not platform-dependent; Typescript itself is not platform dependent. I'm having installation issues with iotivity-node on Windows (line ending issue probably; annoying...) so I couldn't test running them.

There is are two issues left in the high-level-resource-creation-server code - Promise.then(...) seems to expect a promise-like parameter but there are () => void style functions used on lines 43 and 50, which makes the compiler complain.

@hansmbakker

Copy link
Copy Markdown
ContributorAuthor

Is there any feedback or thoughts on this?

@gabrielschulhof

Copy link
Copy Markdown

@Wind-rider just so you know, I'm still considering merging this PR, however, it may need to be updated because we're likely going to do a revamp of the high-level API to reflect the changes in the spec.

It would also be nice if you could add a test to make sure that the declarations are in sync with the actual API. That way you'd force a build failure every time we update the API, and we'd remember to also change the declarations ;)

@gabrielschulhof

Copy link
Copy Markdown

@Wind-rider I guess, depending on the timing of the implementation of the API change, this PR could land first, and then the API change would also involve the .ts files.

@hansmbakker

hansmbakker commented Aug 30, 2017

Copy link
Copy Markdown
ContributorAuthor

it also depends on the choice of whether to have iotivity-node written in typescript that compiles to js + typings, or whether to have it as js + manual typings.

Technically, having it written in typescript would be the most elegant solution (no need to keep typings in sync, cleaner code in the library)

@hansmbakker

Copy link
Copy Markdown
ContributorAuthor

@gabrielschulhof quite some time has passed, how is the new api coming along? Have you been able to take a look into TypeScript?

@gabrielschulhof

Copy link
Copy Markdown

@Wind-rider got distracted with security and API revamps, and other projects. I'll take another look ASAP. Thanks for sticking with it!

Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@hansmbakker@zolkis@coveralls@gabrielschulhof
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Typescript by hansmbakker · Pull Request #119 · intel/iotivity-node · GitHub
Skip to content
This repository was archived by the owner on Jun 13, 2019. It is now read-only.

Typescript - #119

Open
hansmbakker wants to merge 5 commits into
intel:masterfrom
hansmbakker:typings
Open

Typescript#119
hansmbakker wants to merge 5 commits into
intel:masterfrom
hansmbakker:typings

Conversation

@hansmbakker

Copy link
Copy Markdown
Contributor

I started working on typescript definitions for iotivity-node.
The strong typing prevents mistakes and assists during programming with intellisense in VS Code.

This is a work in progress, because I'm basically reverse engineering the JavaScript which is not always clear (e.g. objects are extended in several places with lodash, so that you don't have a clear overview of an object's properties, sometimes the return types of methods are not clear).

I yet have to start the lowlevel typings.

I could use some help and feedback from somebody who has more experience with programming for iotivity-node. Also I'm interested in hearing the rationale behind the code style (lots of lodash use and code nesting).

Is there anybody who would like to give me feedback or help a hand?

@zolkis

Copy link
Copy Markdown

Actually this is something we've been thinking about, and will consider adding TypeScript definitions to the spec. I hope to update on this during the coming days.

For time being, we can use an issue in this repo to discuss unclear things. So please check the spec, and point out where should it be more clear.

@coveralls

Copy link
Copy Markdown

Coverage Status

Coverage remained the same at 87.083% when pulling e1c08f1 on wind-rider:typings into ab0e6f3 on otcshare:master.

@hansmbakker

Copy link
Copy Markdown
ContributorAuthor

@zolkis thank you for linking to that spec, it helps a lot! I didn't know that iotivity-node was an implementation of that spec so it serves as good documentation!

I found out that the spec seems not to be followed wrt. the Error types - the spec uses Error subclasses (https://github.com/01org/iot-js-api/tree/master/api/ocf#error-handling) while iotivity-node uses the Error base class for everything, I'll make an issue for that

@coveralls

Copy link
Copy Markdown

Coverage Status

Coverage remained the same at 87.083% when pulling 82624cd on wind-rider:typings into ab0e6f3 on otcshare:master.

@hansmbakkerhansmbakker mentioned this pull request Feb 13, 2017
@coveralls

Copy link
Copy Markdown

Coverage Status

Coverage remained the same at 87.083% when pulling 9c4f92b on wind-rider:typings into ab0e6f3 on otcshare:master.

@coveralls

Copy link
Copy Markdown

Coverage Status

Coverage remained the same at 87.083% when pulling 9c4f92b on wind-rider:typings into ab0e6f3 on otcshare:master.

@coveralls

Copy link
Copy Markdown

Coverage Status

Coverage remained the same at 87.083% when pulling 2231e0c on wind-rider:typings into a4c1fd3 on otcshare:master.

@coveralls

Copy link
Copy Markdown

Coverage Status

Coverage remained the same at 87.083% when pulling 2231e0c on wind-rider:typings into a4c1fd3 on otcshare:master.

@hansmbakker

Copy link
Copy Markdown
ContributorAuthor

@zolkis, @gabrielschulhof do you have any feedback?

@zolkis

Copy link
Copy Markdown

Give it some more time, ELC is ongoing :)

@hansmbakker

Copy link
Copy Markdown
ContributorAuthor

Sorry, I didn't know that

@gabrielschulhof

Copy link
Copy Markdown

@Wind-rider Sorry about the delay!

The change looks good overall, however, I am concerned that it adds a lot of weight to the installed size of this package, because it pulls type definitions for all of lodash.

Would it be possible to create a new npm package which provides these definitions and depends on iotivity-node?

@hansmbakker

Copy link
Copy Markdown
ContributorAuthor

@gabrielschulhof it is possible to add something to https://github.com/DefinitelyTyped/DefinitelyTyped/ but I don't know how the npm publishing process works then...

@gabrielschulhof

Copy link
Copy Markdown

@Wind-rider, I'm not sure that having a symbolic link (such as js/node_modules/iotivity-node/index.d.ts) is portable across platforms. Have you tested the TypeScript examples on Windows?

@hansmbakker

Copy link
Copy Markdown
ContributorAuthor

@gabrielschulhof you're right, Windows doesn't understand the symbolic link. It was only in there to make the examples work, but I see I moved the ts examples to a separate folder so it's not needed there anymore.

As for whether the examples work on windows - they are not platform-dependent; Typescript itself is not platform dependent. I'm having installation issues with iotivity-node on Windows (line ending issue probably; annoying...) so I couldn't test running them.

There is are two issues left in the high-level-resource-creation-server code - Promise.then(...) seems to expect a promise-like parameter but there are () => void style functions used on lines 43 and 50, which makes the compiler complain.

@hansmbakker

Copy link
Copy Markdown
ContributorAuthor

Is there any feedback or thoughts on this?

@gabrielschulhof

Copy link
Copy Markdown

@Wind-rider just so you know, I'm still considering merging this PR, however, it may need to be updated because we're likely going to do a revamp of the high-level API to reflect the changes in the spec.

It would also be nice if you could add a test to make sure that the declarations are in sync with the actual API. That way you'd force a build failure every time we update the API, and we'd remember to also change the declarations ;)

@gabrielschulhof

Copy link
Copy Markdown

@Wind-rider I guess, depending on the timing of the implementation of the API change, this PR could land first, and then the API change would also involve the .ts files.

@hansmbakker

hansmbakker commented Aug 30, 2017

Copy link
Copy Markdown
ContributorAuthor

it also depends on the choice of whether to have iotivity-node written in typescript that compiles to js + typings, or whether to have it as js + manual typings.

Technically, having it written in typescript would be the most elegant solution (no need to keep typings in sync, cleaner code in the library)

@hansmbakker

Copy link
Copy Markdown
ContributorAuthor

@gabrielschulhof quite some time has passed, how is the new api coming along? Have you been able to take a look into TypeScript?

@gabrielschulhof

Copy link
Copy Markdown

@Wind-rider got distracted with security and API revamps, and other projects. I'll take another look ASAP. Thanks for sticking with it!

Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@hansmbakker@zolkis@coveralls@gabrielschulhof
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Typescript by hansmbakker · Pull Request #119 · intel/iotivity-node · GitHub
Skip to content
This repository was archived by the owner on Jun 13, 2019. It is now read-only.

Typescript - #119

Open
hansmbakker wants to merge 5 commits into
intel:masterfrom
hansmbakker:typings
Open

Typescript#119
hansmbakker wants to merge 5 commits into
intel:masterfrom
hansmbakker:typings

Conversation

@hansmbakker

Copy link
Copy Markdown
Contributor

I started working on typescript definitions for iotivity-node.
The strong typing prevents mistakes and assists during programming with intellisense in VS Code.

This is a work in progress, because I'm basically reverse engineering the JavaScript which is not always clear (e.g. objects are extended in several places with lodash, so that you don't have a clear overview of an object's properties, sometimes the return types of methods are not clear).

I yet have to start the lowlevel typings.

I could use some help and feedback from somebody who has more experience with programming for iotivity-node. Also I'm interested in hearing the rationale behind the code style (lots of lodash use and code nesting).

Is there anybody who would like to give me feedback or help a hand?

@zolkis

Copy link
Copy Markdown

Actually this is something we've been thinking about, and will consider adding TypeScript definitions to the spec. I hope to update on this during the coming days.

For time being, we can use an issue in this repo to discuss unclear things. So please check the spec, and point out where should it be more clear.

@coveralls

Copy link
Copy Markdown

Coverage Status

Coverage remained the same at 87.083% when pulling e1c08f1 on wind-rider:typings into ab0e6f3 on otcshare:master.

@hansmbakker

Copy link
Copy Markdown
ContributorAuthor

@zolkis thank you for linking to that spec, it helps a lot! I didn't know that iotivity-node was an implementation of that spec so it serves as good documentation!

I found out that the spec seems not to be followed wrt. the Error types - the spec uses Error subclasses (https://github.com/01org/iot-js-api/tree/master/api/ocf#error-handling) while iotivity-node uses the Error base class for everything, I'll make an issue for that

@coveralls

Copy link
Copy Markdown

Coverage Status

Coverage remained the same at 87.083% when pulling 82624cd on wind-rider:typings into ab0e6f3 on otcshare:master.

@hansmbakkerhansmbakker mentioned this pull request Feb 13, 2017
@coveralls

Copy link
Copy Markdown

Coverage Status

Coverage remained the same at 87.083% when pulling 9c4f92b on wind-rider:typings into ab0e6f3 on otcshare:master.

@coveralls

Copy link
Copy Markdown

Coverage Status

Coverage remained the same at 87.083% when pulling 9c4f92b on wind-rider:typings into ab0e6f3 on otcshare:master.

@coveralls

Copy link
Copy Markdown

Coverage Status

Coverage remained the same at 87.083% when pulling 2231e0c on wind-rider:typings into a4c1fd3 on otcshare:master.

@coveralls

Copy link
Copy Markdown

Coverage Status

Coverage remained the same at 87.083% when pulling 2231e0c on wind-rider:typings into a4c1fd3 on otcshare:master.

@hansmbakker

Copy link
Copy Markdown
ContributorAuthor

@zolkis, @gabrielschulhof do you have any feedback?

@zolkis

Copy link
Copy Markdown

Give it some more time, ELC is ongoing :)

@hansmbakker

Copy link
Copy Markdown
ContributorAuthor

Sorry, I didn't know that

@gabrielschulhof

Copy link
Copy Markdown

@Wind-rider Sorry about the delay!

The change looks good overall, however, I am concerned that it adds a lot of weight to the installed size of this package, because it pulls type definitions for all of lodash.

Would it be possible to create a new npm package which provides these definitions and depends on iotivity-node?

@hansmbakker

Copy link
Copy Markdown
ContributorAuthor

@gabrielschulhof it is possible to add something to https://github.com/DefinitelyTyped/DefinitelyTyped/ but I don't know how the npm publishing process works then...

@gabrielschulhof

Copy link
Copy Markdown

@Wind-rider, I'm not sure that having a symbolic link (such as js/node_modules/iotivity-node/index.d.ts) is portable across platforms. Have you tested the TypeScript examples on Windows?

@hansmbakker

Copy link
Copy Markdown
ContributorAuthor

@gabrielschulhof you're right, Windows doesn't understand the symbolic link. It was only in there to make the examples work, but I see I moved the ts examples to a separate folder so it's not needed there anymore.

As for whether the examples work on windows - they are not platform-dependent; Typescript itself is not platform dependent. I'm having installation issues with iotivity-node on Windows (line ending issue probably; annoying...) so I couldn't test running them.

There is are two issues left in the high-level-resource-creation-server code - Promise.then(...) seems to expect a promise-like parameter but there are () => void style functions used on lines 43 and 50, which makes the compiler complain.

@hansmbakker

Copy link
Copy Markdown
ContributorAuthor

Is there any feedback or thoughts on this?

@gabrielschulhof

Copy link
Copy Markdown

@Wind-rider just so you know, I'm still considering merging this PR, however, it may need to be updated because we're likely going to do a revamp of the high-level API to reflect the changes in the spec.

It would also be nice if you could add a test to make sure that the declarations are in sync with the actual API. That way you'd force a build failure every time we update the API, and we'd remember to also change the declarations ;)

@gabrielschulhof

Copy link
Copy Markdown

@Wind-rider I guess, depending on the timing of the implementation of the API change, this PR could land first, and then the API change would also involve the .ts files.

@hansmbakker

hansmbakker commented Aug 30, 2017

Copy link
Copy Markdown
ContributorAuthor

it also depends on the choice of whether to have iotivity-node written in typescript that compiles to js + typings, or whether to have it as js + manual typings.

Technically, having it written in typescript would be the most elegant solution (no need to keep typings in sync, cleaner code in the library)

@hansmbakker

Copy link
Copy Markdown
ContributorAuthor

@gabrielschulhof quite some time has passed, how is the new api coming along? Have you been able to take a look into TypeScript?

@gabrielschulhof

Copy link
Copy Markdown

@Wind-rider got distracted with security and API revamps, and other projects. I'll take another look ASAP. Thanks for sticking with it!

Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@hansmbakker@zolkis@coveralls@gabrielschulhof
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Typescript by hansmbakker · Pull Request #119 · intel/iotivity-node · GitHub
Skip to content
This repository was archived by the owner on Jun 13, 2019. It is now read-only.

Typescript - #119

Open
hansmbakker wants to merge 5 commits into
intel:masterfrom
hansmbakker:typings
Open

Typescript#119
hansmbakker wants to merge 5 commits into
intel:masterfrom
hansmbakker:typings

Conversation

@hansmbakker

Copy link
Copy Markdown
Contributor

I started working on typescript definitions for iotivity-node.
The strong typing prevents mistakes and assists during programming with intellisense in VS Code.

This is a work in progress, because I'm basically reverse engineering the JavaScript which is not always clear (e.g. objects are extended in several places with lodash, so that you don't have a clear overview of an object's properties, sometimes the return types of methods are not clear).

I yet have to start the lowlevel typings.

I could use some help and feedback from somebody who has more experience with programming for iotivity-node. Also I'm interested in hearing the rationale behind the code style (lots of lodash use and code nesting).

Is there anybody who would like to give me feedback or help a hand?

@zolkis

Copy link
Copy Markdown

Actually this is something we've been thinking about, and will consider adding TypeScript definitions to the spec. I hope to update on this during the coming days.

For time being, we can use an issue in this repo to discuss unclear things. So please check the spec, and point out where should it be more clear.

@coveralls

Copy link
Copy Markdown

Coverage Status

Coverage remained the same at 87.083% when pulling e1c08f1 on wind-rider:typings into ab0e6f3 on otcshare:master.

@hansmbakker

Copy link
Copy Markdown
ContributorAuthor

@zolkis thank you for linking to that spec, it helps a lot! I didn't know that iotivity-node was an implementation of that spec so it serves as good documentation!

I found out that the spec seems not to be followed wrt. the Error types - the spec uses Error subclasses (https://github.com/01org/iot-js-api/tree/master/api/ocf#error-handling) while iotivity-node uses the Error base class for everything, I'll make an issue for that

@coveralls

Copy link
Copy Markdown

Coverage Status

Coverage remained the same at 87.083% when pulling 82624cd on wind-rider:typings into ab0e6f3 on otcshare:master.

@hansmbakkerhansmbakker mentioned this pull request Feb 13, 2017
@coveralls

Copy link
Copy Markdown

Coverage Status

Coverage remained the same at 87.083% when pulling 9c4f92b on wind-rider:typings into ab0e6f3 on otcshare:master.

@coveralls

Copy link
Copy Markdown

Coverage Status

Coverage remained the same at 87.083% when pulling 9c4f92b on wind-rider:typings into ab0e6f3 on otcshare:master.

@coveralls

Copy link
Copy Markdown

Coverage Status

Coverage remained the same at 87.083% when pulling 2231e0c on wind-rider:typings into a4c1fd3 on otcshare:master.

@coveralls

Copy link
Copy Markdown

Coverage Status

Coverage remained the same at 87.083% when pulling 2231e0c on wind-rider:typings into a4c1fd3 on otcshare:master.

@hansmbakker

Copy link
Copy Markdown
ContributorAuthor

@zolkis, @gabrielschulhof do you have any feedback?

@zolkis

Copy link
Copy Markdown

Give it some more time, ELC is ongoing :)

@hansmbakker

Copy link
Copy Markdown
ContributorAuthor

Sorry, I didn't know that

@gabrielschulhof

Copy link
Copy Markdown

@Wind-rider Sorry about the delay!

The change looks good overall, however, I am concerned that it adds a lot of weight to the installed size of this package, because it pulls type definitions for all of lodash.

Would it be possible to create a new npm package which provides these definitions and depends on iotivity-node?

@hansmbakker

Copy link
Copy Markdown
ContributorAuthor

@gabrielschulhof it is possible to add something to https://github.com/DefinitelyTyped/DefinitelyTyped/ but I don't know how the npm publishing process works then...

@gabrielschulhof

Copy link
Copy Markdown

@Wind-rider, I'm not sure that having a symbolic link (such as js/node_modules/iotivity-node/index.d.ts) is portable across platforms. Have you tested the TypeScript examples on Windows?

@hansmbakker

Copy link
Copy Markdown
ContributorAuthor

@gabrielschulhof you're right, Windows doesn't understand the symbolic link. It was only in there to make the examples work, but I see I moved the ts examples to a separate folder so it's not needed there anymore.

As for whether the examples work on windows - they are not platform-dependent; Typescript itself is not platform dependent. I'm having installation issues with iotivity-node on Windows (line ending issue probably; annoying...) so I couldn't test running them.

There is are two issues left in the high-level-resource-creation-server code - Promise.then(...) seems to expect a promise-like parameter but there are () => void style functions used on lines 43 and 50, which makes the compiler complain.

@hansmbakker

Copy link
Copy Markdown
ContributorAuthor

Is there any feedback or thoughts on this?

@gabrielschulhof

Copy link
Copy Markdown

@Wind-rider just so you know, I'm still considering merging this PR, however, it may need to be updated because we're likely going to do a revamp of the high-level API to reflect the changes in the spec.

It would also be nice if you could add a test to make sure that the declarations are in sync with the actual API. That way you'd force a build failure every time we update the API, and we'd remember to also change the declarations ;)

@gabrielschulhof

Copy link
Copy Markdown

@Wind-rider I guess, depending on the timing of the implementation of the API change, this PR could land first, and then the API change would also involve the .ts files.

@hansmbakker

hansmbakker commented Aug 30, 2017

Copy link
Copy Markdown
ContributorAuthor

it also depends on the choice of whether to have iotivity-node written in typescript that compiles to js + typings, or whether to have it as js + manual typings.

Technically, having it written in typescript would be the most elegant solution (no need to keep typings in sync, cleaner code in the library)

@hansmbakker

Copy link
Copy Markdown
ContributorAuthor

@gabrielschulhof quite some time has passed, how is the new api coming along? Have you been able to take a look into TypeScript?

@gabrielschulhof

Copy link
Copy Markdown

@Wind-rider got distracted with security and API revamps, and other projects. I'll take another look ASAP. Thanks for sticking with it!

Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@hansmbakker@zolkis@coveralls@gabrielschulhof
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' Typescript by hansmbakker · Pull Request #119 · intel/iotivity-node · GitHub
Skip to content
This repository was archived by the owner on Jun 13, 2019. It is now read-only.

Typescript - #119

Open
hansmbakker wants to merge 5 commits into
intel:masterfrom
hansmbakker:typings
Open

Typescript#119
hansmbakker wants to merge 5 commits into
intel:masterfrom
hansmbakker:typings

Conversation

@hansmbakker

Copy link
Copy Markdown
Contributor

I started working on typescript definitions for iotivity-node.
The strong typing prevents mistakes and assists during programming with intellisense in VS Code.

This is a work in progress, because I'm basically reverse engineering the JavaScript which is not always clear (e.g. objects are extended in several places with lodash, so that you don't have a clear overview of an object's properties, sometimes the return types of methods are not clear).

I yet have to start the lowlevel typings.

I could use some help and feedback from somebody who has more experience with programming for iotivity-node. Also I'm interested in hearing the rationale behind the code style (lots of lodash use and code nesting).

Is there anybody who would like to give me feedback or help a hand?

@zolkis

Copy link
Copy Markdown

Actually this is something we've been thinking about, and will consider adding TypeScript definitions to the spec. I hope to update on this during the coming days.

For time being, we can use an issue in this repo to discuss unclear things. So please check the spec, and point out where should it be more clear.

@coveralls

Copy link
Copy Markdown

Coverage Status

Coverage remained the same at 87.083% when pulling e1c08f1 on wind-rider:typings into ab0e6f3 on otcshare:master.

@hansmbakker

Copy link
Copy Markdown
ContributorAuthor

@zolkis thank you for linking to that spec, it helps a lot! I didn't know that iotivity-node was an implementation of that spec so it serves as good documentation!

I found out that the spec seems not to be followed wrt. the Error types - the spec uses Error subclasses (https://github.com/01org/iot-js-api/tree/master/api/ocf#error-handling) while iotivity-node uses the Error base class for everything, I'll make an issue for that

@coveralls

Copy link
Copy Markdown

Coverage Status

Coverage remained the same at 87.083% when pulling 82624cd on wind-rider:typings into ab0e6f3 on otcshare:master.

@hansmbakkerhansmbakker mentioned this pull request Feb 13, 2017
@coveralls

Copy link
Copy Markdown

Coverage Status

Coverage remained the same at 87.083% when pulling 9c4f92b on wind-rider:typings into ab0e6f3 on otcshare:master.

@coveralls

Copy link
Copy Markdown

Coverage Status

Coverage remained the same at 87.083% when pulling 9c4f92b on wind-rider:typings into ab0e6f3 on otcshare:master.

@coveralls

Copy link
Copy Markdown

Coverage Status

Coverage remained the same at 87.083% when pulling 2231e0c on wind-rider:typings into a4c1fd3 on otcshare:master.

@coveralls

Copy link
Copy Markdown

Coverage Status

Coverage remained the same at 87.083% when pulling 2231e0c on wind-rider:typings into a4c1fd3 on otcshare:master.

@hansmbakker

Copy link
Copy Markdown
ContributorAuthor

@zolkis, @gabrielschulhof do you have any feedback?

@zolkis

Copy link
Copy Markdown

Give it some more time, ELC is ongoing :)

@hansmbakker

Copy link
Copy Markdown
ContributorAuthor

Sorry, I didn't know that

@gabrielschulhof

Copy link
Copy Markdown

@Wind-rider Sorry about the delay!

The change looks good overall, however, I am concerned that it adds a lot of weight to the installed size of this package, because it pulls type definitions for all of lodash.

Would it be possible to create a new npm package which provides these definitions and depends on iotivity-node?

@hansmbakker

Copy link
Copy Markdown
ContributorAuthor

@gabrielschulhof it is possible to add something to https://github.com/DefinitelyTyped/DefinitelyTyped/ but I don't know how the npm publishing process works then...

@gabrielschulhof

Copy link
Copy Markdown

@Wind-rider, I'm not sure that having a symbolic link (such as js/node_modules/iotivity-node/index.d.ts) is portable across platforms. Have you tested the TypeScript examples on Windows?

@hansmbakker

Copy link
Copy Markdown
ContributorAuthor

@gabrielschulhof you're right, Windows doesn't understand the symbolic link. It was only in there to make the examples work, but I see I moved the ts examples to a separate folder so it's not needed there anymore.

As for whether the examples work on windows - they are not platform-dependent; Typescript itself is not platform dependent. I'm having installation issues with iotivity-node on Windows (line ending issue probably; annoying...) so I couldn't test running them.

There is are two issues left in the high-level-resource-creation-server code - Promise.then(...) seems to expect a promise-like parameter but there are () => void style functions used on lines 43 and 50, which makes the compiler complain.

@hansmbakker

Copy link
Copy Markdown
ContributorAuthor

Is there any feedback or thoughts on this?

@gabrielschulhof

Copy link
Copy Markdown

@Wind-rider just so you know, I'm still considering merging this PR, however, it may need to be updated because we're likely going to do a revamp of the high-level API to reflect the changes in the spec.

It would also be nice if you could add a test to make sure that the declarations are in sync with the actual API. That way you'd force a build failure every time we update the API, and we'd remember to also change the declarations ;)

@gabrielschulhof

Copy link
Copy Markdown

@Wind-rider I guess, depending on the timing of the implementation of the API change, this PR could land first, and then the API change would also involve the .ts files.

@hansmbakker

hansmbakker commented Aug 30, 2017

Copy link
Copy Markdown
ContributorAuthor

it also depends on the choice of whether to have iotivity-node written in typescript that compiles to js + typings, or whether to have it as js + manual typings.

Technically, having it written in typescript would be the most elegant solution (no need to keep typings in sync, cleaner code in the library)

@hansmbakker

Copy link
Copy Markdown
ContributorAuthor

@gabrielschulhof quite some time has passed, how is the new api coming along? Have you been able to take a look into TypeScript?

@gabrielschulhof

Copy link
Copy Markdown

@Wind-rider got distracted with security and API revamps, and other projects. I'll take another look ASAP. Thanks for sticking with it!

Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@hansmbakker@zolkis@coveralls@gabrielschulhof
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Typescript by hansmbakker · Pull Request #119 · intel/iotivity-node · GitHub
Skip to content
This repository was archived by the owner on Jun 13, 2019. It is now read-only.

Typescript - #119

Open
hansmbakker wants to merge 5 commits into
intel:masterfrom
hansmbakker:typings
Open

Typescript#119
hansmbakker wants to merge 5 commits into
intel:masterfrom
hansmbakker:typings

Conversation

@hansmbakker

Copy link
Copy Markdown
Contributor

I started working on typescript definitions for iotivity-node.
The strong typing prevents mistakes and assists during programming with intellisense in VS Code.

This is a work in progress, because I'm basically reverse engineering the JavaScript which is not always clear (e.g. objects are extended in several places with lodash, so that you don't have a clear overview of an object's properties, sometimes the return types of methods are not clear).

I yet have to start the lowlevel typings.

I could use some help and feedback from somebody who has more experience with programming for iotivity-node. Also I'm interested in hearing the rationale behind the code style (lots of lodash use and code nesting).

Is there anybody who would like to give me feedback or help a hand?

@zolkis

Copy link
Copy Markdown

Actually this is something we've been thinking about, and will consider adding TypeScript definitions to the spec. I hope to update on this during the coming days.

For time being, we can use an issue in this repo to discuss unclear things. So please check the spec, and point out where should it be more clear.

@coveralls

Copy link
Copy Markdown

Coverage Status

Coverage remained the same at 87.083% when pulling e1c08f1 on wind-rider:typings into ab0e6f3 on otcshare:master.

@hansmbakker

Copy link
Copy Markdown
ContributorAuthor

@zolkis thank you for linking to that spec, it helps a lot! I didn't know that iotivity-node was an implementation of that spec so it serves as good documentation!

I found out that the spec seems not to be followed wrt. the Error types - the spec uses Error subclasses (https://github.com/01org/iot-js-api/tree/master/api/ocf#error-handling) while iotivity-node uses the Error base class for everything, I'll make an issue for that

@coveralls

Copy link
Copy Markdown

Coverage Status

Coverage remained the same at 87.083% when pulling 82624cd on wind-rider:typings into ab0e6f3 on otcshare:master.

@hansmbakkerhansmbakker mentioned this pull request Feb 13, 2017
@coveralls

Copy link
Copy Markdown

Coverage Status

Coverage remained the same at 87.083% when pulling 9c4f92b on wind-rider:typings into ab0e6f3 on otcshare:master.

@coveralls

Copy link
Copy Markdown

Coverage Status

Coverage remained the same at 87.083% when pulling 9c4f92b on wind-rider:typings into ab0e6f3 on otcshare:master.

@coveralls

Copy link
Copy Markdown

Coverage Status

Coverage remained the same at 87.083% when pulling 2231e0c on wind-rider:typings into a4c1fd3 on otcshare:master.

@coveralls

Copy link
Copy Markdown

Coverage Status

Coverage remained the same at 87.083% when pulling 2231e0c on wind-rider:typings into a4c1fd3 on otcshare:master.

@hansmbakker

Copy link
Copy Markdown
ContributorAuthor

@zolkis, @gabrielschulhof do you have any feedback?

@zolkis

Copy link
Copy Markdown

Give it some more time, ELC is ongoing :)

@hansmbakker

Copy link
Copy Markdown
ContributorAuthor

Sorry, I didn't know that

@gabrielschulhof

Copy link
Copy Markdown

@Wind-rider Sorry about the delay!

The change looks good overall, however, I am concerned that it adds a lot of weight to the installed size of this package, because it pulls type definitions for all of lodash.

Would it be possible to create a new npm package which provides these definitions and depends on iotivity-node?

@hansmbakker

Copy link
Copy Markdown
ContributorAuthor

@gabrielschulhof it is possible to add something to https://github.com/DefinitelyTyped/DefinitelyTyped/ but I don't know how the npm publishing process works then...

@gabrielschulhof

Copy link
Copy Markdown

@Wind-rider, I'm not sure that having a symbolic link (such as js/node_modules/iotivity-node/index.d.ts) is portable across platforms. Have you tested the TypeScript examples on Windows?

@hansmbakker

Copy link
Copy Markdown
ContributorAuthor

@gabrielschulhof you're right, Windows doesn't understand the symbolic link. It was only in there to make the examples work, but I see I moved the ts examples to a separate folder so it's not needed there anymore.

As for whether the examples work on windows - they are not platform-dependent; Typescript itself is not platform dependent. I'm having installation issues with iotivity-node on Windows (line ending issue probably; annoying...) so I couldn't test running them.

There is are two issues left in the high-level-resource-creation-server code - Promise.then(...) seems to expect a promise-like parameter but there are () => void style functions used on lines 43 and 50, which makes the compiler complain.

@hansmbakker

Copy link
Copy Markdown
ContributorAuthor

Is there any feedback or thoughts on this?

@gabrielschulhof

Copy link
Copy Markdown

@Wind-rider just so you know, I'm still considering merging this PR, however, it may need to be updated because we're likely going to do a revamp of the high-level API to reflect the changes in the spec.

It would also be nice if you could add a test to make sure that the declarations are in sync with the actual API. That way you'd force a build failure every time we update the API, and we'd remember to also change the declarations ;)

@gabrielschulhof

Copy link
Copy Markdown

@Wind-rider I guess, depending on the timing of the implementation of the API change, this PR could land first, and then the API change would also involve the .ts files.

@hansmbakker

hansmbakker commented Aug 30, 2017

Copy link
Copy Markdown
ContributorAuthor

it also depends on the choice of whether to have iotivity-node written in typescript that compiles to js + typings, or whether to have it as js + manual typings.

Technically, having it written in typescript would be the most elegant solution (no need to keep typings in sync, cleaner code in the library)

@hansmbakker

Copy link
Copy Markdown
ContributorAuthor

@gabrielschulhof quite some time has passed, how is the new api coming along? Have you been able to take a look into TypeScript?

@gabrielschulhof

Copy link
Copy Markdown

@Wind-rider got distracted with security and API revamps, and other projects. I'll take another look ASAP. Thanks for sticking with it!

Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@hansmbakker@zolkis@coveralls@gabrielschulhof
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Typescript by hansmbakker · Pull Request #119 · intel/iotivity-node · GitHub
Skip to content
This repository was archived by the owner on Jun 13, 2019. It is now read-only.

Typescript - #119

Open
hansmbakker wants to merge 5 commits into
intel:masterfrom
hansmbakker:typings
Open

Typescript#119
hansmbakker wants to merge 5 commits into
intel:masterfrom
hansmbakker:typings

Conversation

@hansmbakker

Copy link
Copy Markdown
Contributor

I started working on typescript definitions for iotivity-node.
The strong typing prevents mistakes and assists during programming with intellisense in VS Code.

This is a work in progress, because I'm basically reverse engineering the JavaScript which is not always clear (e.g. objects are extended in several places with lodash, so that you don't have a clear overview of an object's properties, sometimes the return types of methods are not clear).

I yet have to start the lowlevel typings.

I could use some help and feedback from somebody who has more experience with programming for iotivity-node. Also I'm interested in hearing the rationale behind the code style (lots of lodash use and code nesting).

Is there anybody who would like to give me feedback or help a hand?

@zolkis

Copy link
Copy Markdown

Actually this is something we've been thinking about, and will consider adding TypeScript definitions to the spec. I hope to update on this during the coming days.

For time being, we can use an issue in this repo to discuss unclear things. So please check the spec, and point out where should it be more clear.

@coveralls

Copy link
Copy Markdown

Coverage Status

Coverage remained the same at 87.083% when pulling e1c08f1 on wind-rider:typings into ab0e6f3 on otcshare:master.

@hansmbakker

Copy link
Copy Markdown
ContributorAuthor

@zolkis thank you for linking to that spec, it helps a lot! I didn't know that iotivity-node was an implementation of that spec so it serves as good documentation!

I found out that the spec seems not to be followed wrt. the Error types - the spec uses Error subclasses (https://github.com/01org/iot-js-api/tree/master/api/ocf#error-handling) while iotivity-node uses the Error base class for everything, I'll make an issue for that

@coveralls

Copy link
Copy Markdown

Coverage Status

Coverage remained the same at 87.083% when pulling 82624cd on wind-rider:typings into ab0e6f3 on otcshare:master.

@hansmbakkerhansmbakker mentioned this pull request Feb 13, 2017
@coveralls

Copy link
Copy Markdown

Coverage Status

Coverage remained the same at 87.083% when pulling 9c4f92b on wind-rider:typings into ab0e6f3 on otcshare:master.

@coveralls

Copy link
Copy Markdown

Coverage Status

Coverage remained the same at 87.083% when pulling 9c4f92b on wind-rider:typings into ab0e6f3 on otcshare:master.

@coveralls

Copy link
Copy Markdown

Coverage Status

Coverage remained the same at 87.083% when pulling 2231e0c on wind-rider:typings into a4c1fd3 on otcshare:master.

@coveralls

Copy link
Copy Markdown

Coverage Status

Coverage remained the same at 87.083% when pulling 2231e0c on wind-rider:typings into a4c1fd3 on otcshare:master.

@hansmbakker

Copy link
Copy Markdown
ContributorAuthor

@zolkis, @gabrielschulhof do you have any feedback?

@zolkis

Copy link
Copy Markdown

Give it some more time, ELC is ongoing :)

@hansmbakker

Copy link
Copy Markdown
ContributorAuthor

Sorry, I didn't know that

@gabrielschulhof

Copy link
Copy Markdown

@Wind-rider Sorry about the delay!

The change looks good overall, however, I am concerned that it adds a lot of weight to the installed size of this package, because it pulls type definitions for all of lodash.

Would it be possible to create a new npm package which provides these definitions and depends on iotivity-node?

@hansmbakker

Copy link
Copy Markdown
ContributorAuthor

@gabrielschulhof it is possible to add something to https://github.com/DefinitelyTyped/DefinitelyTyped/ but I don't know how the npm publishing process works then...

@gabrielschulhof

Copy link
Copy Markdown

@Wind-rider, I'm not sure that having a symbolic link (such as js/node_modules/iotivity-node/index.d.ts) is portable across platforms. Have you tested the TypeScript examples on Windows?

@hansmbakker

Copy link
Copy Markdown
ContributorAuthor

@gabrielschulhof you're right, Windows doesn't understand the symbolic link. It was only in there to make the examples work, but I see I moved the ts examples to a separate folder so it's not needed there anymore.

As for whether the examples work on windows - they are not platform-dependent; Typescript itself is not platform dependent. I'm having installation issues with iotivity-node on Windows (line ending issue probably; annoying...) so I couldn't test running them.

There is are two issues left in the high-level-resource-creation-server code - Promise.then(...) seems to expect a promise-like parameter but there are () => void style functions used on lines 43 and 50, which makes the compiler complain.

@hansmbakker

Copy link
Copy Markdown
ContributorAuthor

Is there any feedback or thoughts on this?

@gabrielschulhof

Copy link
Copy Markdown

@Wind-rider just so you know, I'm still considering merging this PR, however, it may need to be updated because we're likely going to do a revamp of the high-level API to reflect the changes in the spec.

It would also be nice if you could add a test to make sure that the declarations are in sync with the actual API. That way you'd force a build failure every time we update the API, and we'd remember to also change the declarations ;)

@gabrielschulhof

Copy link
Copy Markdown

@Wind-rider I guess, depending on the timing of the implementation of the API change, this PR could land first, and then the API change would also involve the .ts files.

@hansmbakker

hansmbakker commented Aug 30, 2017

Copy link
Copy Markdown
ContributorAuthor

it also depends on the choice of whether to have iotivity-node written in typescript that compiles to js + typings, or whether to have it as js + manual typings.

Technically, having it written in typescript would be the most elegant solution (no need to keep typings in sync, cleaner code in the library)

@hansmbakker

Copy link
Copy Markdown
ContributorAuthor

@gabrielschulhof quite some time has passed, how is the new api coming along? Have you been able to take a look into TypeScript?

@gabrielschulhof

Copy link
Copy Markdown

@Wind-rider got distracted with security and API revamps, and other projects. I'll take another look ASAP. Thanks for sticking with it!

Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@hansmbakker@zolkis@coveralls@gabrielschulhof
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); Typescript by hansmbakker · Pull Request #119 · intel/iotivity-node · GitHub
Skip to content
This repository was archived by the owner on Jun 13, 2019. It is now read-only.

Typescript - #119

Open
hansmbakker wants to merge 5 commits into
intel:masterfrom
hansmbakker:typings
Open

Typescript#119
hansmbakker wants to merge 5 commits into
intel:masterfrom
hansmbakker:typings

Conversation

@hansmbakker

Copy link
Copy Markdown
Contributor

I started working on typescript definitions for iotivity-node.
The strong typing prevents mistakes and assists during programming with intellisense in VS Code.

This is a work in progress, because I'm basically reverse engineering the JavaScript which is not always clear (e.g. objects are extended in several places with lodash, so that you don't have a clear overview of an object's properties, sometimes the return types of methods are not clear).

I yet have to start the lowlevel typings.

I could use some help and feedback from somebody who has more experience with programming for iotivity-node. Also I'm interested in hearing the rationale behind the code style (lots of lodash use and code nesting).

Is there anybody who would like to give me feedback or help a hand?

@zolkis

Copy link
Copy Markdown

Actually this is something we've been thinking about, and will consider adding TypeScript definitions to the spec. I hope to update on this during the coming days.

For time being, we can use an issue in this repo to discuss unclear things. So please check the spec, and point out where should it be more clear.

@coveralls

Copy link
Copy Markdown

Coverage Status

Coverage remained the same at 87.083% when pulling e1c08f1 on wind-rider:typings into ab0e6f3 on otcshare:master.

@hansmbakker

Copy link
Copy Markdown
ContributorAuthor

@zolkis thank you for linking to that spec, it helps a lot! I didn't know that iotivity-node was an implementation of that spec so it serves as good documentation!

I found out that the spec seems not to be followed wrt. the Error types - the spec uses Error subclasses (https://github.com/01org/iot-js-api/tree/master/api/ocf#error-handling) while iotivity-node uses the Error base class for everything, I'll make an issue for that

@coveralls

Copy link
Copy Markdown

Coverage Status

Coverage remained the same at 87.083% when pulling 82624cd on wind-rider:typings into ab0e6f3 on otcshare:master.

@hansmbakkerhansmbakker mentioned this pull request Feb 13, 2017
@coveralls

Copy link
Copy Markdown

Coverage Status

Coverage remained the same at 87.083% when pulling 9c4f92b on wind-rider:typings into ab0e6f3 on otcshare:master.

@coveralls

Copy link
Copy Markdown

Coverage Status

Coverage remained the same at 87.083% when pulling 9c4f92b on wind-rider:typings into ab0e6f3 on otcshare:master.

@coveralls

Copy link
Copy Markdown

Coverage Status

Coverage remained the same at 87.083% when pulling 2231e0c on wind-rider:typings into a4c1fd3 on otcshare:master.

@coveralls

Copy link
Copy Markdown

Coverage Status

Coverage remained the same at 87.083% when pulling 2231e0c on wind-rider:typings into a4c1fd3 on otcshare:master.

@hansmbakker

Copy link
Copy Markdown
ContributorAuthor

@zolkis, @gabrielschulhof do you have any feedback?

@zolkis

Copy link
Copy Markdown

Give it some more time, ELC is ongoing :)

@hansmbakker

Copy link
Copy Markdown
ContributorAuthor

Sorry, I didn't know that

@gabrielschulhof

Copy link
Copy Markdown

@Wind-rider Sorry about the delay!

The change looks good overall, however, I am concerned that it adds a lot of weight to the installed size of this package, because it pulls type definitions for all of lodash.

Would it be possible to create a new npm package which provides these definitions and depends on iotivity-node?

@hansmbakker

Copy link
Copy Markdown
ContributorAuthor

@gabrielschulhof it is possible to add something to https://github.com/DefinitelyTyped/DefinitelyTyped/ but I don't know how the npm publishing process works then...

@gabrielschulhof

Copy link
Copy Markdown

@Wind-rider, I'm not sure that having a symbolic link (such as js/node_modules/iotivity-node/index.d.ts) is portable across platforms. Have you tested the TypeScript examples on Windows?

@hansmbakker

Copy link
Copy Markdown
ContributorAuthor

@gabrielschulhof you're right, Windows doesn't understand the symbolic link. It was only in there to make the examples work, but I see I moved the ts examples to a separate folder so it's not needed there anymore.

As for whether the examples work on windows - they are not platform-dependent; Typescript itself is not platform dependent. I'm having installation issues with iotivity-node on Windows (line ending issue probably; annoying...) so I couldn't test running them.

There is are two issues left in the high-level-resource-creation-server code - Promise.then(...) seems to expect a promise-like parameter but there are () => void style functions used on lines 43 and 50, which makes the compiler complain.

@hansmbakker

Copy link
Copy Markdown
ContributorAuthor

Is there any feedback or thoughts on this?

@gabrielschulhof

Copy link
Copy Markdown

@Wind-rider just so you know, I'm still considering merging this PR, however, it may need to be updated because we're likely going to do a revamp of the high-level API to reflect the changes in the spec.

It would also be nice if you could add a test to make sure that the declarations are in sync with the actual API. That way you'd force a build failure every time we update the API, and we'd remember to also change the declarations ;)

@gabrielschulhof

Copy link
Copy Markdown

@Wind-rider I guess, depending on the timing of the implementation of the API change, this PR could land first, and then the API change would also involve the .ts files.

@hansmbakker

hansmbakker commented Aug 30, 2017

Copy link
Copy Markdown
ContributorAuthor

it also depends on the choice of whether to have iotivity-node written in typescript that compiles to js + typings, or whether to have it as js + manual typings.

Technically, having it written in typescript would be the most elegant solution (no need to keep typings in sync, cleaner code in the library)

@hansmbakker

Copy link
Copy Markdown
ContributorAuthor

@gabrielschulhof quite some time has passed, how is the new api coming along? Have you been able to take a look into TypeScript?

@gabrielschulhof

Copy link
Copy Markdown

@Wind-rider got distracted with security and API revamps, and other projects. I'll take another look ASAP. Thanks for sticking with it!

Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@hansmbakker@zolkis@coveralls@gabrielschulhof