Return-Path: X-Original-To: apmail-couchdb-dev-archive@www.apache.org Delivered-To: apmail-couchdb-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 231EA3751 for ; Fri, 6 May 2011 17:18:43 +0000 (UTC) Received: (qmail 98883 invoked by uid 500); 6 May 2011 17:18:42 -0000 Delivered-To: apmail-couchdb-dev-archive@couchdb.apache.org Received: (qmail 98798 invoked by uid 500); 6 May 2011 17:18:42 -0000 Mailing-List: contact dev-help@couchdb.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@couchdb.apache.org Delivered-To: mailing list dev@couchdb.apache.org Received: (qmail 98790 invoked by uid 99); 6 May 2011 17:18:42 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 06 May 2011 17:18:42 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED,T_RP_MATCHES_RCVD X-Spam-Check-By: apache.org Received: from [140.211.11.116] (HELO hel.zones.apache.org) (140.211.11.116) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 06 May 2011 17:18:41 +0000 Received: from hel.zones.apache.org (hel.zones.apache.org [140.211.11.116]) by hel.zones.apache.org (Postfix) with ESMTP id 23B15C4374 for ; Fri, 6 May 2011 17:18:03 +0000 (UTC) Date: Fri, 6 May 2011 17:18:03 +0000 (UTC) From: "Alexander Shorin (JIRA)" To: dev@couchdb.apache.org Message-ID: <261334922.28583.1304702283143.JavaMail.tomcat@hel.zones.apache.org> In-Reply-To: <375643094.27951.1304682485036.JavaMail.tomcat@hel.zones.apache.org> Subject: [jira] [Commented] (COUCHDB-1151) Require function doesnt fullfil specification MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ 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