couchdb-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alexander Shorin (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (COUCHDB-1151) Require function doesnt fullfil specification
Date Fri, 06 May 2011 17:18:03 GMT

    [ https://issues.apache.org/jira/browse/COUCHDB-1151?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13030035#comment-13030035
] 

Alexander Shorin commented on COUCHDB-1151:
-------------------------------------------

Yes, this patch breaks current module system with complex relative paths because there was
1 step back per '.' in frame with no id change and 2 steps back per '..' plus id truncating
for 1 slash. However, this is a little incorrect, because '.' means "current" level and no
step back should be provided and '..' means "parent" level and only 1 step should be done.
All same as you've done, Caolan, but there is also additional 1 step back in frame for relative
paths at resolving start due to at the final step "current" and "id" points to module source,
not module source level, so without this step function would generate a little invalid module
id's. 
Current realization works well, but only if one '..' or '.' has occurred at the beginning
of relative path.

> Require function doesnt fullfil specification
> ---------------------------------------------
>
>                 Key: COUCHDB-1151
>                 URL: https://issues.apache.org/jira/browse/COUCHDB-1151
>             Project: CouchDB
>          Issue Type: Bug
>          Components: JavaScript View Server
>    Affects Versions: 0.11.2, 1.0.2, 1.1
>            Reporter: Alexander Shorin
>            Priority: Critical
>              Labels: commonjs, javascript, require
>         Attachments: design.require.txt, design_docs.js.patch, utils.js.patch
>
>   Original Estimate: 1h
>  Remaining Estimate: 1h
>
> According CommonJS Modules specification [1]:
> > 4.  Module identifiers may be "relative" or "top-level". A module identifier is
"relative" if the first term is "." or "..".
> > 5.  Top-level identifiers are resolved off the conceptual module name space root.
> This specification is broken in current realization at those terms. See design test case.
> Actually problems:
> 1. Module id is broken if module imports from same level (as via '.') or from parent
level (as via '..'). AFAIK, module id should be valid to make require(mod.id) call successful.
See`_show/relative-id`, `_show/require-relative-id` and `_show/relative-parent-id` function.
> 2. Absolute module import is broken from relative imported module. See`_show/absolute-require`
function.
> 3. Multiple relative imports from same level(as via '.') breaks require function. See
`_show/maze` function.
> Those problems makes require function works unexpectedly and obstructs solving at least
one more issue #1075 [2]
> I know that all relative imports are discouraged, but if they are supported, why they
shouldn't work properly?(:
> [1] http://wiki.commonjs.org/wiki/Modules/1.1.1
> [2] https://issues.apache.org/jira/browse/COUCHDB-1075

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message