mirror of
https://code.forgejo.org/actions/setup-node.git
synced 2025-05-21 05:24:45 +00:00
Add auth support (#21)
* Updates * Update * Update * Update * Update * Yarn sometimes prefers npmrc, so use same token * Description * Update readme * Feedback * Add type * new toolkit and scoped registries * npmrc in RUNNER_TEMP * Dont always auth * Try exporting blank token * Get auth working for now pending runner changes * Fix string interpolation for auth token. * Don't export both userconfigs * Update authutil.js * Add single quotes for authString * Fix the registry string. * Use userconfig and append trailing slash * Keep in root of repo * Try just adding auth token * Remove auth token * Try changes again * Add tests * Npm and GPR samples * Add types
This commit is contained in:
parent
0675b87d74
commit
78148dae50
391 changed files with 79848 additions and 43 deletions
90
node_modules/url-template/uritemplate-test/README.md
generated
vendored
Normal file
90
node_modules/url-template/uritemplate-test/README.md
generated
vendored
Normal file
|
@ -0,0 +1,90 @@
|
|||
|
||||
URI Template Tests
|
||||
==================
|
||||
|
||||
This is a set of tests for implementations of
|
||||
[RFC6570](http://tools.ietf.org/html/rfc6570) - URI Template. It is designed
|
||||
to be reused by any implementation, to improve interoperability and
|
||||
implementation quality.
|
||||
|
||||
If your project uses Git for version control, you can make uritemplate-tests into a [submodule](http://help.github.com/submodules/).
|
||||
|
||||
Test Format
|
||||
-----------
|
||||
|
||||
Each test file is a [JSON](http://tools.ietf.org/html/RFC6627) document
|
||||
containing an object whose properties are groups of related tests.
|
||||
Alternatively, all tests are available in XML as well, with the XML files
|
||||
being generated by transform-json-tests.xslt which uses json2xml.xslt as a
|
||||
general-purpose JSON-to-XML parsing library.
|
||||
|
||||
Each group, in turn, is an object with three children:
|
||||
|
||||
* level - the level of the tests covered, as per the RFC (optional; if absent,
|
||||
assume level 4).
|
||||
* variables - an object representing the variables that are available to the
|
||||
tests in the suite
|
||||
* testcases - a list of testcases, where each case is a two-member list, the
|
||||
first being the template, the second being the result of expanding the
|
||||
template with the provided variables.
|
||||
|
||||
Note that the result string can be a few different things:
|
||||
|
||||
* string - if the second member is a string, the result of expansion is
|
||||
expected to match it, character-for-character.
|
||||
* list - if the second member is a list of strings, the result of expansion
|
||||
is expected to match one of them; this allows for templates that can
|
||||
expand into different, equally-acceptable URIs.
|
||||
* false - if the second member is boolean false, expansion is expected to
|
||||
fail (i.e., the template was invalid).
|
||||
|
||||
For example:
|
||||
|
||||
{
|
||||
"Level 1 Examples" :
|
||||
{
|
||||
"level": 1,
|
||||
"variables": {
|
||||
"var" : "value",
|
||||
"hello" : "Hello World!"
|
||||
},
|
||||
"testcases" : [
|
||||
["{var}", "value"],
|
||||
["{hello}", "Hello%20World%21"]
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Tests Included
|
||||
--------------
|
||||
|
||||
The following test files are included:
|
||||
|
||||
* spec-examples.json - The complete set of example templates from the RFC
|
||||
* spec-examples-by-section.json - The examples, section by section
|
||||
* extended-tests.json - more complex test cases
|
||||
* negative-tests.json - invalid templates
|
||||
|
||||
For all these test files, XML versions with the names *.xml can be
|
||||
generated with the transform-json-tests.xslt XSLT stylesheet. The XSLT
|
||||
contains the names of the above test files as a parameter, and can be
|
||||
started with any XML as input (i.e., the XML input is ignored).
|
||||
|
||||
License
|
||||
-------
|
||||
|
||||
Copyright 2011-2012 The Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
118
node_modules/url-template/uritemplate-test/extended-tests.json
generated
vendored
Normal file
118
node_modules/url-template/uritemplate-test/extended-tests.json
generated
vendored
Normal file
|
@ -0,0 +1,118 @@
|
|||
{
|
||||
"Additional Examples 1":{
|
||||
"level":4,
|
||||
"variables":{
|
||||
"id" : "person",
|
||||
"token" : "12345",
|
||||
"fields" : ["id", "name", "picture"],
|
||||
"format" : "json",
|
||||
"q" : "URI Templates",
|
||||
"page" : "5",
|
||||
"lang" : "en",
|
||||
"geocode" : ["37.76","-122.427"],
|
||||
"first_name" : "John",
|
||||
"last.name" : "Doe",
|
||||
"Some%20Thing" : "foo",
|
||||
"number" : 6,
|
||||
"long" : 37.76,
|
||||
"lat" : -122.427,
|
||||
"group_id" : "12345",
|
||||
"query" : "PREFIX dc: <http://purl.org/dc/elements/1.1/> SELECT ?book ?who WHERE { ?book dc:creator ?who }",
|
||||
"uri" : "http://example.org/?uri=http%3A%2F%2Fexample.org%2F",
|
||||
"word" : "drücken",
|
||||
"Stra%C3%9Fe" : "Grüner Weg",
|
||||
"random" : "šö䟜ñꀣ¥‡ÑÒÓÔÕÖרÙÚàáâãäåæçÿ",
|
||||
"assoc_special_chars" :
|
||||
{ "šö䟜ñꀣ¥‡ÑÒÓÔÕ" : "ÖרÙÚàáâãäåæçÿ" }
|
||||
},
|
||||
"testcases":[
|
||||
|
||||
[ "{/id*}" , "/person" ],
|
||||
[ "{/id*}{?fields,first_name,last.name,token}" , [
|
||||
"/person?fields=id,name,picture&first_name=John&last.name=Doe&token=12345",
|
||||
"/person?fields=id,picture,name&first_name=John&last.name=Doe&token=12345",
|
||||
"/person?fields=picture,name,id&first_name=John&last.name=Doe&token=12345",
|
||||
"/person?fields=picture,id,name&first_name=John&last.name=Doe&token=12345",
|
||||
"/person?fields=name,picture,id&first_name=John&last.name=Doe&token=12345",
|
||||
"/person?fields=name,id,picture&first_name=John&last.name=Doe&token=12345"]
|
||||
],
|
||||
["/search.{format}{?q,geocode,lang,locale,page,result_type}",
|
||||
[ "/search.json?q=URI%20Templates&geocode=37.76,-122.427&lang=en&page=5",
|
||||
"/search.json?q=URI%20Templates&geocode=-122.427,37.76&lang=en&page=5"]
|
||||
],
|
||||
["/test{/Some%20Thing}", "/test/foo" ],
|
||||
["/set{?number}", "/set?number=6"],
|
||||
["/loc{?long,lat}" , "/loc?long=37.76&lat=-122.427"],
|
||||
["/base{/group_id,first_name}/pages{/page,lang}{?format,q}","/base/12345/John/pages/5/en?format=json&q=URI%20Templates"],
|
||||
["/sparql{?query}", "/sparql?query=PREFIX%20dc%3A%20%3Chttp%3A%2F%2Fpurl.org%2Fdc%2Felements%2F1.1%2F%3E%20SELECT%20%3Fbook%20%3Fwho%20WHERE%20%7B%20%3Fbook%20dc%3Acreator%20%3Fwho%20%7D"],
|
||||
["/go{?uri}", "/go?uri=http%3A%2F%2Fexample.org%2F%3Furi%3Dhttp%253A%252F%252Fexample.org%252F"],
|
||||
["/service{?word}", "/service?word=dr%C3%BCcken"],
|
||||
["/lookup{?Stra%C3%9Fe}", "/lookup?Stra%C3%9Fe=Gr%C3%BCner%20Weg"],
|
||||
["{random}" , "%C5%A1%C3%B6%C3%A4%C5%B8%C5%93%C3%B1%C3%AA%E2%82%AC%C2%A3%C2%A5%E2%80%A1%C3%91%C3%92%C3%93%C3%94%C3%95%C3%96%C3%97%C3%98%C3%99%C3%9A%C3%A0%C3%A1%C3%A2%C3%A3%C3%A4%C3%A5%C3%A6%C3%A7%C3%BF"],
|
||||
["{?assoc_special_chars*}", "?%C5%A1%C3%B6%C3%A4%C5%B8%C5%93%C3%B1%C3%AA%E2%82%AC%C2%A3%C2%A5%E2%80%A1%C3%91%C3%92%C3%93%C3%94%C3%95=%C3%96%C3%97%C3%98%C3%99%C3%9A%C3%A0%C3%A1%C3%A2%C3%A3%C3%A4%C3%A5%C3%A6%C3%A7%C3%BF"]
|
||||
]
|
||||
},
|
||||
"Additional Examples 2":{
|
||||
"level":4,
|
||||
"variables":{
|
||||
"id" : ["person","albums"],
|
||||
"token" : "12345",
|
||||
"fields" : ["id", "name", "picture"],
|
||||
"format" : "atom",
|
||||
"q" : "URI Templates",
|
||||
"page" : "10",
|
||||
"start" : "5",
|
||||
"lang" : "en",
|
||||
"geocode" : ["37.76","-122.427"]
|
||||
},
|
||||
"testcases":[
|
||||
|
||||
[ "{/id*}" , ["/person/albums","/albums/person"] ],
|
||||
[ "{/id*}{?fields,token}" , [
|
||||
"/person/albums?fields=id,name,picture&token=12345",
|
||||
"/person/albums?fields=id,picture,name&token=12345",
|
||||
"/person/albums?fields=picture,name,id&token=12345",
|
||||
"/person/albums?fields=picture,id,name&token=12345",
|
||||
"/person/albums?fields=name,picture,id&token=12345",
|
||||
"/person/albums?fields=name,id,picture&token=12345",
|
||||
"/albums/person?fields=id,name,picture&token=12345",
|
||||
"/albums/person?fields=id,picture,name&token=12345",
|
||||
"/albums/person?fields=picture,name,id&token=12345",
|
||||
"/albums/person?fields=picture,id,name&token=12345",
|
||||
"/albums/person?fields=name,picture,id&token=12345",
|
||||
"/albums/person?fields=name,id,picture&token=12345"]
|
||||
]
|
||||
]
|
||||
},
|
||||
"Additional Examples 3: Empty Variables":{
|
||||
"variables" : {
|
||||
"empty_list" : [],
|
||||
"empty_assoc" : {}
|
||||
},
|
||||
"testcases":[
|
||||
[ "{/empty_list}", [ "" ] ],
|
||||
[ "{/empty_list*}", [ "" ] ],
|
||||
[ "{?empty_list}", [ ""] ],
|
||||
[ "{?empty_list*}", [ "" ] ],
|
||||
[ "{?empty_assoc}", [ "" ] ],
|
||||
[ "{?empty_assoc*}", [ "" ] ]
|
||||
]
|
||||
},
|
||||
"Additional Examples 4: Numeric Keys":{
|
||||
"variables" : {
|
||||
"42" : "The Answer to the Ultimate Question of Life, the Universe, and Everything",
|
||||
"1337" : ["leet", "as","it", "can","be"],
|
||||
"german" : {
|
||||
"11": "elf",
|
||||
"12": "zwölf"
|
||||
}
|
||||
},
|
||||
"testcases":[
|
||||
[ "{42}", "The%20Answer%20to%20the%20Ultimate%20Question%20of%20Life%2C%20the%20Universe%2C%20and%20Everything"],
|
||||
[ "{?42}", "?42=The%20Answer%20to%20the%20Ultimate%20Question%20of%20Life%2C%20the%20Universe%2C%20and%20Everything"],
|
||||
[ "{1337}", "leet,as,it,can,be"],
|
||||
[ "{?1337*}", "?1337=leet&1337=as&1337=it&1337=can&1337=be"],
|
||||
[ "{?german*}", [ "?11=elf&12=zw%C3%B6lf", "?12=zw%C3%B6lf&11=elf"] ]
|
||||
]
|
||||
}
|
||||
}
|
201
node_modules/url-template/uritemplate-test/json2xml.xslt
generated
vendored
Normal file
201
node_modules/url-template/uritemplate-test/json2xml.xslt
generated
vendored
Normal file
|
@ -0,0 +1,201 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Downloaded on 12/6/2012 from http://www.gerixsoft.com/blog/xslt/json2xml -->
|
||||
|
||||
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
||||
|
||||
<xsl:template match="json">
|
||||
<xsl:copy>
|
||||
<xsl:copy-of select="@*"/>
|
||||
<xsl:call-template name="json2xml">
|
||||
<xsl:with-param name="text" select="."/>
|
||||
</xsl:call-template>
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="json2xml">
|
||||
<xsl:param name="text"/>
|
||||
<xsl:variable name="mode0">
|
||||
<xsl:variable name="regexps" select="'//(.*?)\n', '/\*(.*?)\*/', '(''|")(([^\\]|\\[\\"''/btnvfr])*?)\3', '(-?\d+(\.\d+([eE][+-]?\d+)?|[eE][+-]?\d+))', '(-?[1-9]\d*)', '(-?0[0-7]+)', '(-?0x[0-9a-fA-F]+)', '([:,\{\}\[\]])', '(true|false)', '(null)'"/>
|
||||
<xsl:analyze-string select="$text" regex="{string-join($regexps,'|')}" flags="s">
|
||||
<xsl:matching-substring>
|
||||
<xsl:choose>
|
||||
<!-- single line comment -->
|
||||
<xsl:when test="regex-group(1)">
|
||||
<xsl:comment>
|
||||
<xsl:value-of select="regex-group(1)"/>
|
||||
</xsl:comment>
|
||||
<xsl:text> </xsl:text>
|
||||
</xsl:when>
|
||||
<!-- multi line comment -->
|
||||
<xsl:when test="regex-group(2)">
|
||||
<xsl:comment>
|
||||
<xsl:value-of select="regex-group(2)"/>
|
||||
</xsl:comment>
|
||||
</xsl:when>
|
||||
<!-- string -->
|
||||
<xsl:when test="regex-group(3)">
|
||||
<string>
|
||||
<xsl:analyze-string select="regex-group(4)" regex="\\([\\"'/btnvfr])" flags="s">
|
||||
<xsl:matching-substring>
|
||||
<xsl:variable name="s" select="regex-group(1)"/>
|
||||
<xsl:choose>
|
||||
<xsl:when test="$s=('\', '"', '''', '/')">
|
||||
<xsl:value-of select="regex-group(1)"/>
|
||||
</xsl:when>
|
||||
<xsl:when test="$s='b'">
|
||||
<!--xsl:text></xsl:text-->
|
||||
<xsl:message select="'escape sequense \b is not supported by XML'"/>
|
||||
<xsl:text>\b</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$s='t'">
|
||||
<xsl:text>	</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$s='n'">
|
||||
<xsl:text> </xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$s='v'">
|
||||
<!--xsl:text></xsl:text-->
|
||||
<xsl:message select="'escape sequence \v is not supported by XML'"/>
|
||||
<xsl:text>\v</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$s='f'">
|
||||
<!--xsl:text></xsl:text-->
|
||||
<xsl:message select="'escape sequence \f is not supported by XML'"/>
|
||||
<xsl:text>\f</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$s='r'">
|
||||
<xsl:text> </xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:message terminate="yes" select="'internal error'"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:matching-substring>
|
||||
<xsl:non-matching-substring>
|
||||
<xsl:value-of select="."/>
|
||||
</xsl:non-matching-substring>
|
||||
</xsl:analyze-string>
|
||||
</string>
|
||||
</xsl:when>
|
||||
<!-- double -->
|
||||
<xsl:when test="regex-group(6)">
|
||||
<double>
|
||||
<xsl:value-of select="regex-group(6)"/>
|
||||
</double>
|
||||
</xsl:when>
|
||||
<!-- integer -->
|
||||
<xsl:when test="regex-group(9)">
|
||||
<integer>
|
||||
<xsl:value-of select="regex-group(9)"/>
|
||||
</integer>
|
||||
</xsl:when>
|
||||
<!-- octal -->
|
||||
<xsl:when test="regex-group(10)">
|
||||
<integer>
|
||||
<xsl:value-of xmlns:Integer="java:java.lang.Integer" select="Integer:parseInt(regex-group(10), 8)"/>
|
||||
</integer>
|
||||
</xsl:when>
|
||||
<!-- hex -->
|
||||
<xsl:when test="regex-group(11)">
|
||||
<integer>
|
||||
<xsl:value-of xmlns:Integer="java:java.lang.Integer" select="Integer:parseInt(replace(regex-group(11), '0x', ''), 16)"/>
|
||||
</integer>
|
||||
</xsl:when>
|
||||
<!-- symbol -->
|
||||
<xsl:when test="regex-group(12)">
|
||||
<symbol>
|
||||
<xsl:value-of select="regex-group(12)"/>
|
||||
</symbol>
|
||||
</xsl:when>
|
||||
<!-- boolean -->
|
||||
<xsl:when test="regex-group(13)">
|
||||
<boolean>
|
||||
<xsl:value-of select="regex-group(13)"/>
|
||||
</boolean>
|
||||
</xsl:when>
|
||||
<!-- null -->
|
||||
<xsl:when test="regex-group(14)">
|
||||
<null />
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:message terminate="yes" select="'internal error'"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:matching-substring>
|
||||
<xsl:non-matching-substring>
|
||||
<xsl:if test="normalize-space()!=''">
|
||||
<xsl:message select="concat('unknown token: ', .)"/>
|
||||
<xsl:value-of select="."/>
|
||||
</xsl:if>
|
||||
</xsl:non-matching-substring>
|
||||
</xsl:analyze-string>
|
||||
</xsl:variable>
|
||||
<xsl:variable name="mode1">
|
||||
<xsl:apply-templates mode="json2xml1" select="$mode0/node()[1]"/>
|
||||
</xsl:variable>
|
||||
<xsl:variable name="mode2">
|
||||
<xsl:apply-templates mode="json2xml2" select="$mode1"/>
|
||||
</xsl:variable>
|
||||
<xsl:variable name="mode3">
|
||||
<xsl:apply-templates mode="json2xml3" select="$mode2"/>
|
||||
</xsl:variable>
|
||||
<xsl:copy-of select="$mode3"/> <!-- change $mode3 to $mode[0-2] for easy debug -->
|
||||
</xsl:template>
|
||||
|
||||
<!-- json2xml1 mode: group content between {} and [] into object and array elements -->
|
||||
|
||||
<xsl:template mode="json2xml1" match="node()" priority="-9">
|
||||
<xsl:copy-of select="."/>
|
||||
<xsl:apply-templates mode="json2xml1" select="following-sibling::node()[1]"/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template mode="json2xml1" match="symbol[.=('}',']')]"/>
|
||||
|
||||
<xsl:template mode="json2xml1" match="symbol[.=('{','[')]">
|
||||
<xsl:element name="{if (.='{') then 'object' else 'array'}">
|
||||
<xsl:apply-templates mode="json2xml1" select="following-sibling::node()[1]"/>
|
||||
</xsl:element>
|
||||
<xsl:variable name="level" select="count(preceding-sibling::symbol[.=('{','[')])-count(preceding-sibling::symbol[.=('}',']')])+1"/>
|
||||
<xsl:variable name="ender"
|
||||
select="following-sibling::symbol[.=('}',']') and count(preceding-sibling::symbol[.=('{','[')])-count(preceding-sibling::symbol[.=('}',']')])=$level][1]"/>
|
||||
<xsl:apply-templates mode="json2xml1" select="$ender/following-sibling::node()[1]"/>
|
||||
</xsl:template>
|
||||
|
||||
<!-- json2xml2 mode: group <string>:<string|integer|double|object|array> into field element -->
|
||||
|
||||
<xsl:template priority="-9" mode="json2xml2" match="@*|node()">
|
||||
<xsl:copy>
|
||||
<xsl:apply-templates mode="json2xml2" select="@*|node()"/>
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template mode="json2xml2"
|
||||
match="string[following-sibling::*[1]/self::symbol[.=':'] and following-sibling::*[2]/(self::string|self::integer|self::double|self::boolean|self::object|self::array|self::null)]"/>
|
||||
|
||||
<xsl:template mode="json2xml2"
|
||||
match="symbol[.=':'][preceding-sibling::*[1]/self::string and following-sibling::*[1]/(self::string|self::integer|self::double|self::boolean|self::object|self::array|self::null)]">
|
||||
<field name="{preceding-sibling::*[1]}">
|
||||
<xsl:for-each select="following-sibling::*[1]">
|
||||
<xsl:copy>
|
||||
<xsl:apply-templates mode="json2xml2" select="@*|node()"/>
|
||||
</xsl:copy>
|
||||
</xsl:for-each>
|
||||
</field>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template mode="json2xml2"
|
||||
match="*[self::string|self::integer|self::double|self::boolean|self::object|self::array|self::null][preceding-sibling::*[2]/self::string and preceding-sibling::*[1]/self::symbol[.=':']]"/>
|
||||
|
||||
<!-- json2xml3 mode: drop comma between consecutive field and object elements -->
|
||||
|
||||
<xsl:template priority="-9" mode="json2xml3" match="@*|node()">
|
||||
<xsl:copy>
|
||||
<xsl:apply-templates mode="json2xml3" select="@*|node()"/>
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template mode="json2xml3" match="object/symbol[.=','][preceding-sibling::*[1]/self::field and following-sibling::*[1]/self::field]"/>
|
||||
|
||||
<xsl:template mode="json2xml3" match="array/symbol[.=','][preceding-sibling::*[1]/(self::string|self::integer|self::double|self::boolean|self::object|self::array|self::null) and following-sibling::*[1]/(self::string|self::integer|self::double|self::boolean|self::object|self::array|self::null)]"/>
|
||||
|
||||
</xsl:stylesheet>
|
57
node_modules/url-template/uritemplate-test/negative-tests.json
generated
vendored
Normal file
57
node_modules/url-template/uritemplate-test/negative-tests.json
generated
vendored
Normal file
|
@ -0,0 +1,57 @@
|
|||
{
|
||||
"Failure Tests":{
|
||||
"level":4,
|
||||
"variables":{
|
||||
"id" : "thing",
|
||||
"var" : "value",
|
||||
"hello" : "Hello World!",
|
||||
"with space" : "fail",
|
||||
" leading_space" : "Hi!",
|
||||
"trailing_space " : "Bye!",
|
||||
"empty" : "",
|
||||
"path" : "/foo/bar",
|
||||
"x" : "1024",
|
||||
"y" : "768",
|
||||
"list" : ["red", "green", "blue"],
|
||||
"keys" : { "semi" : ";", "dot" : ".", "comma" : ","},
|
||||
"example" : "red",
|
||||
"searchTerms" : "uri templates",
|
||||
"~thing" : "some-user",
|
||||
"default-graph-uri" : ["http://www.example/book/","http://www.example/papers/"],
|
||||
"query" : "PREFIX dc: <http://purl.org/dc/elements/1.1/> SELECT ?book ?who WHERE { ?book dc:creator ?who }"
|
||||
|
||||
},
|
||||
"testcases":[
|
||||
[ "{/id*", false ],
|
||||
[ "/id*}", false ],
|
||||
[ "{/?id}", false ],
|
||||
[ "{var:prefix}", false ],
|
||||
[ "{hello:2*}", false ] ,
|
||||
[ "{??hello}", false ] ,
|
||||
[ "{!hello}", false ] ,
|
||||
[ "{with space}", false],
|
||||
[ "{ leading_space}", false],
|
||||
[ "{trailing_space }", false],
|
||||
[ "{=path}", false ] ,
|
||||
[ "{$var}", false ],
|
||||
[ "{|var*}", false ],
|
||||
[ "{*keys?}", false ],
|
||||
[ "{?empty=default,var}", false ],
|
||||
[ "{var}{-prefix|/-/|var}" , false ],
|
||||
[ "?q={searchTerms}&c={example:color?}" , false ],
|
||||
[ "x{?empty|foo=none}" , false ],
|
||||
[ "/h{#hello+}" , false ],
|
||||
[ "/h#{hello+}" , false ],
|
||||
[ "{keys:1}", false ],
|
||||
[ "{+keys:1}", false ],
|
||||
[ "{;keys:1*}", false ],
|
||||
[ "?{-join|&|var,list}" , false ],
|
||||
[ "/people/{~thing}", false],
|
||||
[ "/{default-graph-uri}", false ],
|
||||
[ "/sparql{?query,default-graph-uri}", false ],
|
||||
[ "/sparql{?query){&default-graph-uri*}", false ],
|
||||
[ "/resolution{?x, y}" , false ]
|
||||
|
||||
]
|
||||
}
|
||||
}
|
439
node_modules/url-template/uritemplate-test/spec-examples-by-section.json
generated
vendored
Normal file
439
node_modules/url-template/uritemplate-test/spec-examples-by-section.json
generated
vendored
Normal file
|
@ -0,0 +1,439 @@
|
|||
{
|
||||
"3.2.1 Variable Expansion" :
|
||||
{
|
||||
"variables": {
|
||||
"count" : ["one", "two", "three"],
|
||||
"dom" : ["example", "com"],
|
||||
"dub" : "me/too",
|
||||
"hello" : "Hello World!",
|
||||
"half" : "50%",
|
||||
"var" : "value",
|
||||
"who" : "fred",
|
||||
"base" : "http://example.com/home/",
|
||||
"path" : "/foo/bar",
|
||||
"list" : ["red", "green", "blue"],
|
||||
"keys" : { "semi" : ";", "dot" : ".", "comma" : ","},
|
||||
"v" : "6",
|
||||
"x" : "1024",
|
||||
"y" : "768",
|
||||
"empty" : "",
|
||||
"empty_keys" : [],
|
||||
"undef" : null
|
||||
},
|
||||
"testcases" : [
|
||||
["{count}", "one,two,three"],
|
||||
["{count*}", "one,two,three"],
|
||||
["{/count}", "/one,two,three"],
|
||||
["{/count*}", "/one/two/three"],
|
||||
["{;count}", ";count=one,two,three"],
|
||||
["{;count*}", ";count=one;count=two;count=three"],
|
||||
["{?count}", "?count=one,two,three"],
|
||||
["{?count*}", "?count=one&count=two&count=three"],
|
||||
["{&count*}", "&count=one&count=two&count=three"]
|
||||
]
|
||||
},
|
||||
"3.2.2 Simple String Expansion" :
|
||||
{
|
||||
"variables": {
|
||||
"count" : ["one", "two", "three"],
|
||||
"dom" : ["example", "com"],
|
||||
"dub" : "me/too",
|
||||
"hello" : "Hello World!",
|
||||
"half" : "50%",
|
||||
"var" : "value",
|
||||
"who" : "fred",
|
||||
"base" : "http://example.com/home/",
|
||||
"path" : "/foo/bar",
|
||||
"list" : ["red", "green", "blue"],
|
||||
"keys" : { "semi" : ";", "dot" : ".", "comma" : ","},
|
||||
"v" : "6",
|
||||
"x" : "1024",
|
||||
"y" : "768",
|
||||
"empty" : "",
|
||||
"empty_keys" : [],
|
||||
"undef" : null
|
||||
},
|
||||
"testcases" : [
|
||||
["{var}", "value"],
|
||||
["{hello}", "Hello%20World%21"],
|
||||
["{half}", "50%25"],
|
||||
["O{empty}X", "OX"],
|
||||
["O{undef}X", "OX"],
|
||||
["{x,y}", "1024,768"],
|
||||
["{x,hello,y}", "1024,Hello%20World%21,768"],
|
||||
["?{x,empty}", "?1024,"],
|
||||
["?{x,undef}", "?1024"],
|
||||
["?{undef,y}", "?768"],
|
||||
["{var:3}", "val"],
|
||||
["{var:30}", "value"],
|
||||
["{list}", "red,green,blue"],
|
||||
["{list*}", "red,green,blue"],
|
||||
["{keys}", [
|
||||
"comma,%2C,dot,.,semi,%3B",
|
||||
"comma,%2C,semi,%3B,dot,.",
|
||||
"dot,.,comma,%2C,semi,%3B",
|
||||
"dot,.,semi,%3B,comma,%2C",
|
||||
"semi,%3B,comma,%2C,dot,.",
|
||||
"semi,%3B,dot,.,comma,%2C"
|
||||
]],
|
||||
["{keys*}", [
|
||||
"comma=%2C,dot=.,semi=%3B",
|
||||
"comma=%2C,semi=%3B,dot=.",
|
||||
"dot=.,comma=%2C,semi=%3B",
|
||||
"dot=.,semi=%3B,comma=%2C",
|
||||
"semi=%3B,comma=%2C,dot=.",
|
||||
"semi=%3B,dot=.,comma=%2C"
|
||||
]]
|
||||
]
|
||||
},
|
||||
"3.2.3 Reserved Expansion" :
|
||||
{
|
||||
"variables": {
|
||||
"count" : ["one", "two", "three"],
|
||||
"dom" : ["example", "com"],
|
||||
"dub" : "me/too",
|
||||
"hello" : "Hello World!",
|
||||
"half" : "50%",
|
||||
"var" : "value",
|
||||
"who" : "fred",
|
||||
"base" : "http://example.com/home/",
|
||||
"path" : "/foo/bar",
|
||||
"list" : ["red", "green", "blue"],
|
||||
"keys" : { "semi" : ";", "dot" : ".", "comma" : ","},
|
||||
"v" : "6",
|
||||
"x" : "1024",
|
||||
"y" : "768",
|
||||
"empty" : "",
|
||||
"empty_keys" : [],
|
||||
"undef" : null
|
||||
},
|
||||
"testcases" : [
|
||||
["{+var}", "value"],
|
||||
["{/var,empty}", "/value/"],
|
||||
["{/var,undef}", "/value"],
|
||||
["{+hello}", "Hello%20World!"],
|
||||
["{+half}", "50%25"],
|
||||
["{base}index", "http%3A%2F%2Fexample.com%2Fhome%2Findex"],
|
||||
["{+base}index", "http://example.com/home/index"],
|
||||
["O{+empty}X", "OX"],
|
||||
["O{+undef}X", "OX"],
|
||||
["{+path}/here", "/foo/bar/here"],
|
||||
["{+path:6}/here", "/foo/b/here"],
|
||||
["here?ref={+path}", "here?ref=/foo/bar"],
|
||||
["up{+path}{var}/here", "up/foo/barvalue/here"],
|
||||
["{+x,hello,y}", "1024,Hello%20World!,768"],
|
||||
["{+path,x}/here", "/foo/bar,1024/here"],
|
||||
["{+list}", "red,green,blue"],
|
||||
["{+list*}", "red,green,blue"],
|
||||
["{+keys}", [
|
||||
"comma,,,dot,.,semi,;",
|
||||
"comma,,,semi,;,dot,.",
|
||||
"dot,.,comma,,,semi,;",
|
||||
"dot,.,semi,;,comma,,",
|
||||
"semi,;,comma,,,dot,.",
|
||||
"semi,;,dot,.,comma,,"
|
||||
]],
|
||||
["{+keys*}", [
|
||||
"comma=,,dot=.,semi=;",
|
||||
"comma=,,semi=;,dot=.",
|
||||
"dot=.,comma=,,semi=;",
|
||||
"dot=.,semi=;,comma=,",
|
||||
"semi=;,comma=,,dot=.",
|
||||
"semi=;,dot=.,comma=,"
|
||||
]]
|
||||
]
|
||||
},
|
||||
"3.2.4 Fragment Expansion" :
|
||||
{
|
||||
"variables": {
|
||||
"count" : ["one", "two", "three"],
|
||||
"dom" : ["example", "com"],
|
||||
"dub" : "me/too",
|
||||
"hello" : "Hello World!",
|
||||
"half" : "50%",
|
||||
"var" : "value",
|
||||
"who" : "fred",
|
||||
"base" : "http://example.com/home/",
|
||||
"path" : "/foo/bar",
|
||||
"list" : ["red", "green", "blue"],
|
||||
"keys" : { "semi" : ";", "dot" : ".", "comma" : ","},
|
||||
"v" : "6",
|
||||
"x" : "1024",
|
||||
"y" : "768",
|
||||
"empty" : "",
|
||||
"empty_keys" : [],
|
||||
"undef" : null
|
||||
},
|
||||
"testcases" : [
|
||||
["{#var}", "#value"],
|
||||
["{#hello}", "#Hello%20World!"],
|
||||
["{#half}", "#50%25"],
|
||||
["foo{#empty}", "foo#"],
|
||||
["foo{#undef}", "foo"],
|
||||
["{#x,hello,y}", "#1024,Hello%20World!,768"],
|
||||
["{#path,x}/here", "#/foo/bar,1024/here"],
|
||||
["{#path:6}/here", "#/foo/b/here"],
|
||||
["{#list}", "#red,green,blue"],
|
||||
["{#list*}", "#red,green,blue"],
|
||||
["{#keys}", [
|
||||
"#comma,,,dot,.,semi,;",
|
||||
"#comma,,,semi,;,dot,.",
|
||||
"#dot,.,comma,,,semi,;",
|
||||
"#dot,.,semi,;,comma,,",
|
||||
"#semi,;,comma,,,dot,.",
|
||||
"#semi,;,dot,.,comma,,"
|
||||
]]
|
||||
]
|
||||
},
|
||||
"3.2.5 Label Expansion with Dot-Prefix" :
|
||||
{
|
||||
"variables": {
|
||||
"count" : ["one", "two", "three"],
|
||||
"dom" : ["example", "com"],
|
||||
"dub" : "me/too",
|
||||
"hello" : "Hello World!",
|
||||
"half" : "50%",
|
||||
"var" : "value",
|
||||
"who" : "fred",
|
||||
"base" : "http://example.com/home/",
|
||||
"path" : "/foo/bar",
|
||||
"list" : ["red", "green", "blue"],
|
||||
"keys" : { "semi" : ";", "dot" : ".", "comma" : ","},
|
||||
"v" : "6",
|
||||
"x" : "1024",
|
||||
"y" : "768",
|
||||
"empty" : "",
|
||||
"empty_keys" : [],
|
||||
"undef" : null
|
||||
},
|
||||
"testcases" : [
|
||||
["{.who}", ".fred"],
|
||||
["{.who,who}", ".fred.fred"],
|
||||
["{.half,who}", ".50%25.fred"],
|
||||
["www{.dom*}", "www.example.com"],
|
||||
["X{.var}", "X.value"],
|
||||
["X{.var:3}", "X.val"],
|
||||
["X{.empty}", "X."],
|
||||
["X{.undef}", "X"],
|
||||
["X{.list}", "X.red,green,blue"],
|
||||
["X{.list*}", "X.red.green.blue"],
|
||||
["{#keys}", [
|
||||
"#comma,,,dot,.,semi,;",
|
||||
"#comma,,,semi,;,dot,.",
|
||||
"#dot,.,comma,,,semi,;",
|
||||
"#dot,.,semi,;,comma,,",
|
||||
"#semi,;,comma,,,dot,.",
|
||||
"#semi,;,dot,.,comma,,"
|
||||
]],
|
||||
["{#keys*}", [
|
||||
"#comma=,,dot=.,semi=;",
|
||||
"#comma=,,semi=;,dot=.",
|
||||
"#dot=.,comma=,,semi=;",
|
||||
"#dot=.,semi=;,comma=,",
|
||||
"#semi=;,comma=,,dot=.",
|
||||
"#semi=;,dot=.,comma=,"
|
||||
]],
|
||||
["X{.empty_keys}", "X"],
|
||||
["X{.empty_keys*}", "X"]
|
||||
]
|
||||
},
|
||||
"3.2.6 Path Segment Expansion" :
|
||||
{
|
||||
"variables": {
|
||||
"count" : ["one", "two", "three"],
|
||||
"dom" : ["example", "com"],
|
||||
"dub" : "me/too",
|
||||
"hello" : "Hello World!",
|
||||
"half" : "50%",
|
||||
"var" : "value",
|
||||
"who" : "fred",
|
||||
"base" : "http://example.com/home/",
|
||||
"path" : "/foo/bar",
|
||||
"list" : ["red", "green", "blue"],
|
||||
"keys" : { "semi" : ";", "dot" : ".", "comma" : ","},
|
||||
"v" : "6",
|
||||
"x" : "1024",
|
||||
"y" : "768",
|
||||
"empty" : "",
|
||||
"empty_keys" : [],
|
||||
"undef" : null
|
||||
},
|
||||
"testcases" : [
|
||||
["{/who}", "/fred"],
|
||||
["{/who,who}", "/fred/fred"],
|
||||
["{/half,who}", "/50%25/fred"],
|
||||
["{/who,dub}", "/fred/me%2Ftoo"],
|
||||
["{/var}", "/value"],
|
||||
["{/var,empty}", "/value/"],
|
||||
["{/var,undef}", "/value"],
|
||||
["{/var,x}/here", "/value/1024/here"],
|
||||
["{/var:1,var}", "/v/value"],
|
||||
["{/list}", "/red,green,blue"],
|
||||
["{/list*}", "/red/green/blue"],
|
||||
["{/list*,path:4}", "/red/green/blue/%2Ffoo"],
|
||||
["{/keys}", [
|
||||
"/comma,%2C,dot,.,semi,%3B",
|
||||
"/comma,%2C,semi,%3B,dot,.",
|
||||
"/dot,.,comma,%2C,semi,%3B",
|
||||
"/dot,.,semi,%3B,comma,%2C",
|
||||
"/semi,%3B,comma,%2C,dot,.",
|
||||
"/semi,%3B,dot,.,comma,%2C"
|
||||
]],
|
||||
["{/keys*}", [
|
||||
"/comma=%2C/dot=./semi=%3B",
|
||||
"/comma=%2C/semi=%3B/dot=.",
|
||||
"/dot=./comma=%2C/semi=%3B",
|
||||
"/dot=./semi=%3B/comma=%2C",
|
||||
"/semi=%3B/comma=%2C/dot=.",
|
||||
"/semi=%3B/dot=./comma=%2C"
|
||||
]]
|
||||
]
|
||||
},
|
||||
"3.2.7 Path-Style Parameter Expansion" :
|
||||
{
|
||||
"variables": {
|
||||
"count" : ["one", "two", "three"],
|
||||
"dom" : ["example", "com"],
|
||||
"dub" : "me/too",
|
||||
"hello" : "Hello World!",
|
||||
"half" : "50%",
|
||||
"var" : "value",
|
||||
"who" : "fred",
|
||||
"base" : "http://example.com/home/",
|
||||
"path" : "/foo/bar",
|
||||
"list" : ["red", "green", "blue"],
|
||||
"keys" : { "semi" : ";", "dot" : ".", "comma" : ","},
|
||||
"v" : "6",
|
||||
"x" : "1024",
|
||||
"y" : "768",
|
||||
"empty" : "",
|
||||
"empty_keys" : [],
|
||||
"undef" : null
|
||||
},
|
||||
"testcases" : [
|
||||
["{;who}", ";who=fred"],
|
||||
["{;half}", ";half=50%25"],
|
||||
["{;empty}", ";empty"],
|
||||
["{;hello:5}", ";hello=Hello"],
|
||||
["{;v,empty,who}", ";v=6;empty;who=fred"],
|
||||
["{;v,bar,who}", ";v=6;who=fred"],
|
||||
["{;x,y}", ";x=1024;y=768"],
|
||||
["{;x,y,empty}", ";x=1024;y=768;empty"],
|
||||
["{;x,y,undef}", ";x=1024;y=768"],
|
||||
["{;list}", ";list=red,green,blue"],
|
||||
["{;list*}", ";list=red;list=green;list=blue"],
|
||||
["{;keys}", [
|
||||
";keys=comma,%2C,dot,.,semi,%3B",
|
||||
";keys=comma,%2C,semi,%3B,dot,.",
|
||||
";keys=dot,.,comma,%2C,semi,%3B",
|
||||
";keys=dot,.,semi,%3B,comma,%2C",
|
||||
";keys=semi,%3B,comma,%2C,dot,.",
|
||||
";keys=semi,%3B,dot,.,comma,%2C"
|
||||
]],
|
||||
["{;keys*}", [
|
||||
";comma=%2C;dot=.;semi=%3B",
|
||||
";comma=%2C;semi=%3B;dot=.",
|
||||
";dot=.;comma=%2C;semi=%3B",
|
||||
";dot=.;semi=%3B;comma=%2C",
|
||||
";semi=%3B;comma=%2C;dot=.",
|
||||
";semi=%3B;dot=.;comma=%2C"
|
||||
]]
|
||||
]
|
||||
},
|
||||
"3.2.8 Form-Style Query Expansion" :
|
||||
{
|
||||
"variables": {
|
||||
"count" : ["one", "two", "three"],
|
||||
"dom" : ["example", "com"],
|
||||
"dub" : "me/too",
|
||||
"hello" : "Hello World!",
|
||||
"half" : "50%",
|
||||
"var" : "value",
|
||||
"who" : "fred",
|
||||
"base" : "http://example.com/home/",
|
||||
"path" : "/foo/bar",
|
||||
"list" : ["red", "green", "blue"],
|
||||
"keys" : { "semi" : ";", "dot" : ".", "comma" : ","},
|
||||
"v" : "6",
|
||||
"x" : "1024",
|
||||
"y" : "768",
|
||||
"empty" : "",
|
||||
"empty_keys" : [],
|
||||
"undef" : null
|
||||
},
|
||||
"testcases" : [
|
||||
["{?who}", "?who=fred"],
|
||||
["{?half}", "?half=50%25"],
|
||||
["{?x,y}", "?x=1024&y=768"],
|
||||
["{?x,y,empty}", "?x=1024&y=768&empty="],
|
||||
["{?x,y,undef}", "?x=1024&y=768"],
|
||||
["{?var:3}", "?var=val"],
|
||||
["{?list}", "?list=red,green,blue"],
|
||||
["{?list*}", "?list=red&list=green&list=blue"],
|
||||
["{?keys}", [
|
||||
"?keys=comma,%2C,dot,.,semi,%3B",
|
||||
"?keys=comma,%2C,semi,%3B,dot,.",
|
||||
"?keys=dot,.,comma,%2C,semi,%3B",
|
||||
"?keys=dot,.,semi,%3B,comma,%2C",
|
||||
"?keys=semi,%3B,comma,%2C,dot,.",
|
||||
"?keys=semi,%3B,dot,.,comma,%2C"
|
||||
]],
|
||||
["{?keys*}", [
|
||||
"?comma=%2C&dot=.&semi=%3B",
|
||||
"?comma=%2C&semi=%3B&dot=.",
|
||||
"?dot=.&comma=%2C&semi=%3B",
|
||||
"?dot=.&semi=%3B&comma=%2C",
|
||||
"?semi=%3B&comma=%2C&dot=.",
|
||||
"?semi=%3B&dot=.&comma=%2C"
|
||||
]]
|
||||
]
|
||||
},
|
||||
"3.2.9 Form-Style Query Continuation" :
|
||||
{
|
||||
"variables": {
|
||||
"count" : ["one", "two", "three"],
|
||||
"dom" : ["example", "com"],
|
||||
"dub" : "me/too",
|
||||
"hello" : "Hello World!",
|
||||
"half" : "50%",
|
||||
"var" : "value",
|
||||
"who" : "fred",
|
||||
"base" : "http://example.com/home/",
|
||||
"path" : "/foo/bar",
|
||||
"list" : ["red", "green", "blue"],
|
||||
"keys" : { "semi" : ";", "dot" : ".", "comma" : ","},
|
||||
"v" : "6",
|
||||
"x" : "1024",
|
||||
"y" : "768",
|
||||
"empty" : "",
|
||||
"empty_keys" : [],
|
||||
"undef" : null
|
||||
},
|
||||
"testcases" : [
|
||||
["{&who}", "&who=fred"],
|
||||
["{&half}", "&half=50%25"],
|
||||
["?fixed=yes{&x}", "?fixed=yes&x=1024"],
|
||||
["{&var:3}", "&var=val"],
|
||||
["{&x,y,empty}", "&x=1024&y=768&empty="],
|
||||
["{&x,y,undef}", "&x=1024&y=768"],
|
||||
["{&list}", "&list=red,green,blue"],
|
||||
["{&list*}", "&list=red&list=green&list=blue"],
|
||||
["{&keys}", [
|
||||
"&keys=comma,%2C,dot,.,semi,%3B",
|
||||
"&keys=comma,%2C,semi,%3B,dot,.",
|
||||
"&keys=dot,.,comma,%2C,semi,%3B",
|
||||
"&keys=dot,.,semi,%3B,comma,%2C",
|
||||
"&keys=semi,%3B,comma,%2C,dot,.",
|
||||
"&keys=semi,%3B,dot,.,comma,%2C"
|
||||
]],
|
||||
["{&keys*}", [
|
||||
"&comma=%2C&dot=.&semi=%3B",
|
||||
"&comma=%2C&semi=%3B&dot=.",
|
||||
"&dot=.&comma=%2C&semi=%3B",
|
||||
"&dot=.&semi=%3B&comma=%2C",
|
||||
"&semi=%3B&comma=%2C&dot=.",
|
||||
"&semi=%3B&dot=.&comma=%2C"
|
||||
]]
|
||||
]
|
||||
}
|
||||
}
|
218
node_modules/url-template/uritemplate-test/spec-examples.json
generated
vendored
Normal file
218
node_modules/url-template/uritemplate-test/spec-examples.json
generated
vendored
Normal file
|
@ -0,0 +1,218 @@
|
|||
{
|
||||
"Level 1 Examples" :
|
||||
{
|
||||
"level": 1,
|
||||
"variables": {
|
||||
"var" : "value",
|
||||
"hello" : "Hello World!"
|
||||
},
|
||||
"testcases" : [
|
||||
["{var}", "value"],
|
||||
["{hello}", "Hello%20World%21"]
|
||||
]
|
||||
},
|
||||
"Level 2 Examples" :
|
||||
{
|
||||
"level": 2,
|
||||
"variables": {
|
||||
"var" : "value",
|
||||
"hello" : "Hello World!",
|
||||
"path" : "/foo/bar"
|
||||
},
|
||||
"testcases" : [
|
||||
["{+var}", "value"],
|
||||
["{+hello}", "Hello%20World!"],
|
||||
["{+path}/here", "/foo/bar/here"],
|
||||
["here?ref={+path}", "here?ref=/foo/bar"]
|
||||
]
|
||||
},
|
||||
"Level 3 Examples" :
|
||||
{
|
||||
"level": 3,
|
||||
"variables": {
|
||||
"var" : "value",
|
||||
"hello" : "Hello World!",
|
||||
"empty" : "",
|
||||
"path" : "/foo/bar",
|
||||
"x" : "1024",
|
||||
"y" : "768"
|
||||
},
|
||||
"testcases" : [
|
||||
["map?{x,y}", "map?1024,768"],
|
||||
["{x,hello,y}", "1024,Hello%20World%21,768"],
|
||||
["{+x,hello,y}", "1024,Hello%20World!,768"],
|
||||
["{+path,x}/here", "/foo/bar,1024/here"],
|
||||
["{#x,hello,y}", "#1024,Hello%20World!,768"],
|
||||
["{#path,x}/here", "#/foo/bar,1024/here"],
|
||||
["X{.var}", "X.value"],
|
||||
["X{.x,y}", "X.1024.768"],
|
||||
["{/var}", "/value"],
|
||||
["{/var,x}/here", "/value/1024/here"],
|
||||
["{;x,y}", ";x=1024;y=768"],
|
||||
["{;x,y,empty}", ";x=1024;y=768;empty"],
|
||||
["{?x,y}", "?x=1024&y=768"],
|
||||
["{?x,y,empty}", "?x=1024&y=768&empty="],
|
||||
["?fixed=yes{&x}", "?fixed=yes&x=1024"],
|
||||
["{&x,y,empty}", "&x=1024&y=768&empty="]
|
||||
]
|
||||
},
|
||||
"Level 4 Examples" :
|
||||
{
|
||||
"level": 4,
|
||||
"variables": {
|
||||
"var": "value",
|
||||
"hello": "Hello World!",
|
||||
"path": "/foo/bar",
|
||||
"list": ["red", "green", "blue"],
|
||||
"keys": {"semi": ";", "dot": ".", "comma":","}
|
||||
},
|
||||
"testcases": [
|
||||
["{var:3}", "val"],
|
||||
["{var:30}", "value"],
|
||||
["{list}", "red,green,blue"],
|
||||
["{list*}", "red,green,blue"],
|
||||
["{keys}", [
|
||||
"comma,%2C,dot,.,semi,%3B",
|
||||
"comma,%2C,semi,%3B,dot,.",
|
||||
"dot,.,comma,%2C,semi,%3B",
|
||||
"dot,.,semi,%3B,comma,%2C",
|
||||
"semi,%3B,comma,%2C,dot,.",
|
||||
"semi,%3B,dot,.,comma,%2C"
|
||||
]],
|
||||
["{keys*}", [
|
||||
"comma=%2C,dot=.,semi=%3B",
|
||||
"comma=%2C,semi=%3B,dot=.",
|
||||
"dot=.,comma=%2C,semi=%3B",
|
||||
"dot=.,semi=%3B,comma=%2C",
|
||||
"semi=%3B,comma=%2C,dot=.",
|
||||
"semi=%3B,dot=.,comma=%2C"
|
||||
]],
|
||||
["{+path:6}/here", "/foo/b/here"],
|
||||
["{+list}", "red,green,blue"],
|
||||
["{+list*}", "red,green,blue"],
|
||||
["{+keys}", [
|
||||
"comma,,,dot,.,semi,;",
|
||||
"comma,,,semi,;,dot,.",
|
||||
"dot,.,comma,,,semi,;",
|
||||
"dot,.,semi,;,comma,,",
|
||||
"semi,;,comma,,,dot,.",
|
||||
"semi,;,dot,.,comma,,"
|
||||
]],
|
||||
["{+keys*}", [
|
||||
"comma=,,dot=.,semi=;",
|
||||
"comma=,,semi=;,dot=.",
|
||||
"dot=.,comma=,,semi=;",
|
||||
"dot=.,semi=;,comma=,",
|
||||
"semi=;,comma=,,dot=.",
|
||||
"semi=;,dot=.,comma=,"
|
||||
]],
|
||||
["{#path:6}/here", "#/foo/b/here"],
|
||||
["{#list}", "#red,green,blue"],
|
||||
["{#list*}", "#red,green,blue"],
|
||||
["{#keys}", [
|
||||
"#comma,,,dot,.,semi,;",
|
||||
"#comma,,,semi,;,dot,.",
|
||||
"#dot,.,comma,,,semi,;",
|
||||
"#dot,.,semi,;,comma,,",
|
||||
"#semi,;,comma,,,dot,.",
|
||||
"#semi,;,dot,.,comma,,"
|
||||
]],
|
||||
["{#keys*}", [
|
||||
"#comma=,,dot=.,semi=;",
|
||||
"#comma=,,semi=;,dot=.",
|
||||
"#dot=.,comma=,,semi=;",
|
||||
"#dot=.,semi=;,comma=,",
|
||||
"#semi=;,comma=,,dot=.",
|
||||
"#semi=;,dot=.,comma=,"
|
||||
]],
|
||||
["X{.var:3}", "X.val"],
|
||||
["X{.list}", "X.red,green,blue"],
|
||||
["X{.list*}", "X.red.green.blue"],
|
||||
["X{.keys}", [
|
||||
"X.comma,%2C,dot,.,semi,%3B",
|
||||
"X.comma,%2C,semi,%3B,dot,.",
|
||||
"X.dot,.,comma,%2C,semi,%3B",
|
||||
"X.dot,.,semi,%3B,comma,%2C",
|
||||
"X.semi,%3B,comma,%2C,dot,.",
|
||||
"X.semi,%3B,dot,.,comma,%2C"
|
||||
]],
|
||||
["{/var:1,var}", "/v/value"],
|
||||
["{/list}", "/red,green,blue"],
|
||||
["{/list*}", "/red/green/blue"],
|
||||
["{/list*,path:4}", "/red/green/blue/%2Ffoo"],
|
||||
["{/keys}", [
|
||||
"/comma,%2C,dot,.,semi,%3B",
|
||||
"/comma,%2C,semi,%3B,dot,.",
|
||||
"/dot,.,comma,%2C,semi,%3B",
|
||||
"/dot,.,semi,%3B,comma,%2C",
|
||||
"/semi,%3B,comma,%2C,dot,.",
|
||||
"/semi,%3B,dot,.,comma,%2C"
|
||||
]],
|
||||
["{/keys*}", [
|
||||
"/comma=%2C/dot=./semi=%3B",
|
||||
"/comma=%2C/semi=%3B/dot=.",
|
||||
"/dot=./comma=%2C/semi=%3B",
|
||||
"/dot=./semi=%3B/comma=%2C",
|
||||
"/semi=%3B/comma=%2C/dot=.",
|
||||
"/semi=%3B/dot=./comma=%2C"
|
||||
]],
|
||||
["{;hello:5}", ";hello=Hello"],
|
||||
["{;list}", ";list=red,green,blue"],
|
||||
["{;list*}", ";list=red;list=green;list=blue"],
|
||||
["{;keys}", [
|
||||
";keys=comma,%2C,dot,.,semi,%3B",
|
||||
";keys=comma,%2C,semi,%3B,dot,.",
|
||||
";keys=dot,.,comma,%2C,semi,%3B",
|
||||
";keys=dot,.,semi,%3B,comma,%2C",
|
||||
";keys=semi,%3B,comma,%2C,dot,.",
|
||||
";keys=semi,%3B,dot,.,comma,%2C"
|
||||
]],
|
||||
["{;keys*}", [
|
||||
";comma=%2C;dot=.;semi=%3B",
|
||||
";comma=%2C;semi=%3B;dot=.",
|
||||
";dot=.;comma=%2C;semi=%3B",
|
||||
";dot=.;semi=%3B;comma=%2C",
|
||||
";semi=%3B;comma=%2C;dot=.",
|
||||
";semi=%3B;dot=.;comma=%2C"
|
||||
]],
|
||||
["{?var:3}", "?var=val"],
|
||||
["{?list}", "?list=red,green,blue"],
|
||||
["{?list*}", "?list=red&list=green&list=blue"],
|
||||
["{?keys}", [
|
||||
"?keys=comma,%2C,dot,.,semi,%3B",
|
||||
"?keys=comma,%2C,semi,%3B,dot,.",
|
||||
"?keys=dot,.,comma,%2C,semi,%3B",
|
||||
"?keys=dot,.,semi,%3B,comma,%2C",
|
||||
"?keys=semi,%3B,comma,%2C,dot,.",
|
||||
"?keys=semi,%3B,dot,.,comma,%2C"
|
||||
]],
|
||||
["{?keys*}", [
|
||||
"?comma=%2C&dot=.&semi=%3B",
|
||||
"?comma=%2C&semi=%3B&dot=.",
|
||||
"?dot=.&comma=%2C&semi=%3B",
|
||||
"?dot=.&semi=%3B&comma=%2C",
|
||||
"?semi=%3B&comma=%2C&dot=.",
|
||||
"?semi=%3B&dot=.&comma=%2C"
|
||||
]],
|
||||
["{&var:3}", "&var=val"],
|
||||
["{&list}", "&list=red,green,blue"],
|
||||
["{&list*}", "&list=red&list=green&list=blue"],
|
||||
["{&keys}", [
|
||||
"&keys=comma,%2C,dot,.,semi,%3B",
|
||||
"&keys=comma,%2C,semi,%3B,dot,.",
|
||||
"&keys=dot,.,comma,%2C,semi,%3B",
|
||||
"&keys=dot,.,semi,%3B,comma,%2C",
|
||||
"&keys=semi,%3B,comma,%2C,dot,.",
|
||||
"&keys=semi,%3B,dot,.,comma,%2C"
|
||||
]],
|
||||
["{&keys*}", [
|
||||
"&comma=%2C&dot=.&semi=%3B",
|
||||
"&comma=%2C&semi=%3B&dot=.",
|
||||
"&dot=.&comma=%2C&semi=%3B",
|
||||
"&dot=.&semi=%3B&comma=%2C",
|
||||
"&semi=%3B&comma=%2C&dot=.",
|
||||
"&semi=%3B&dot=.&comma=%2C"
|
||||
]]
|
||||
]
|
||||
}
|
||||
}
|
51
node_modules/url-template/uritemplate-test/transform-json-tests.xslt
generated
vendored
Normal file
51
node_modules/url-template/uritemplate-test/transform-json-tests.xslt
generated
vendored
Normal file
|
@ -0,0 +1,51 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
||||
|
||||
<xsl:include href="json2xml.xslt"/>
|
||||
|
||||
<!-- the input test files need to be supplied as a sequence of file names only (no extension) -->
|
||||
<xsl:param name="tests" select="('extended-tests', 'negative-tests', 'spec-examples-by-section', 'spec-examples')"/>
|
||||
<xsl:param name="json-ext" select="'json'"/>
|
||||
<xsl:param name="xml-ext" select="'xml'"/>
|
||||
|
||||
<!-- run this stylesheet with any input to generate the XML test files at output. -->
|
||||
<!-- (a popular way of doing this is to supply the XSLT to itself as the input file.) -->
|
||||
|
||||
<xsl:template match="/">
|
||||
<xsl:for-each select="$tests">
|
||||
<xsl:variable name="file" select="current()"/>
|
||||
<xsl:variable name="json">
|
||||
<json>
|
||||
<xsl:value-of select="unparsed-text(concat($file, '.', $json-ext))"/>
|
||||
</json>
|
||||
</xsl:variable>
|
||||
<xsl:variable name="xml">
|
||||
<xsl:apply-templates select="$json/json"/>
|
||||
</xsl:variable>
|
||||
<xsl:result-document href="{$file}.{$xml-ext}" method="xml" indent="yes">
|
||||
<tests>
|
||||
<xsl:for-each select="$xml/json/object/field">
|
||||
<test name="{@name}">
|
||||
<xsl:if test="exists(object/field[1][@name eq 'level'])">
|
||||
<xsl:attribute name="level" select="object/field[1][@name eq 'level']/integer/text()"/>
|
||||
</xsl:if>
|
||||
<variables>
|
||||
<xsl:for-each select="object/field[@name eq 'variables']/object/field">
|
||||
<variable name="{@name}">
|
||||
<xsl:copy-of select="*"/>
|
||||
</variable>
|
||||
</xsl:for-each>
|
||||
</variables>
|
||||
<testcases>
|
||||
<xsl:for-each select="object/field[@name eq 'testcases']/array/array">
|
||||
<testcase template="{*[1]}" result="{*[2]}"/>
|
||||
</xsl:for-each> </testcases>
|
||||
</test>
|
||||
</xsl:for-each>
|
||||
</tests>
|
||||
</xsl:result-document>
|
||||
</xsl:for-each>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
Loading…
Add table
Add a link
Reference in a new issue