@azure-tools/typespec-azure-examples 0.2.0-dev.2 → 0.2.0-dev.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +30 -1
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/legacy-expand-cli.d.ts +3 -0
- package/dist/src/legacy-expand-cli.d.ts.map +1 -0
- package/dist/src/legacy-expand-cli.js +59 -0
- package/dist/src/legacy-expand-cli.js.map +1 -0
- package/dist/src/legacy.d.ts +29 -0
- package/dist/src/legacy.d.ts.map +1 -0
- package/dist/src/legacy.js +32 -0
- package/dist/src/legacy.js.map +1 -0
- package/dist/src/migrate/emit.js.map +1 -1
- package/dist/src/migrate/migrate.js.map +1 -1
- package/dist/src/migrate/swagger-types.d.ts.map +1 -1
- package/dist/src/resolve/index.d.ts +10 -0
- package/dist/src/resolve/index.d.ts.map +1 -0
- package/dist/src/resolve/index.js +10 -0
- package/dist/src/resolve/index.js.map +1 -0
- package/dist/src/resolve/legacy.d.ts +25 -0
- package/dist/src/resolve/legacy.d.ts.map +1 -0
- package/dist/src/resolve/legacy.js +93 -0
- package/dist/src/resolve/legacy.js.map +1 -0
- package/dist/src/resolve/materialize.d.ts +3 -0
- package/dist/src/resolve/materialize.d.ts.map +1 -0
- package/dist/src/resolve/materialize.js +21 -0
- package/dist/src/resolve/materialize.js.map +1 -0
- package/dist/src/resolve/resolve-dir.d.ts +14 -0
- package/dist/src/resolve/resolve-dir.d.ts.map +1 -0
- package/dist/src/resolve/resolve-dir.js +23 -0
- package/dist/src/resolve/resolve-dir.js.map +1 -0
- package/dist/src/resolve/resolve.d.ts +26 -0
- package/dist/src/resolve/resolve.d.ts.map +1 -0
- package/dist/src/resolve/resolve.js +62 -0
- package/dist/src/resolve/resolve.js.map +1 -0
- package/dist/src/resolve/select.d.ts +18 -0
- package/dist/src/resolve/select.d.ts.map +1 -0
- package/dist/src/resolve/select.js +32 -0
- package/dist/src/resolve/select.js.map +1 -0
- package/dist/src/validate.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +4 -3
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { substituteApiVersion } from "./materialize.js";
|
|
2
|
+
import { selectApplicable } from "./select.js";
|
|
3
|
+
/**
|
|
4
|
+
* Resolve the applicable example for every operation/lineage at `apiVersion`, using the linear
|
|
5
|
+
* `order` from `service.yaml`, and materialize the `{api-version}` placeholder. Operations whose
|
|
6
|
+
* lineage has no applicable entry at the target version are omitted.
|
|
7
|
+
*/
|
|
8
|
+
export function resolveExampleFiles(files, apiVersion, order) {
|
|
9
|
+
const diagnostics = [];
|
|
10
|
+
const examples = [];
|
|
11
|
+
if (!order.includes(apiVersion)) {
|
|
12
|
+
diagnostics.push({
|
|
13
|
+
code: "unknown-target-version",
|
|
14
|
+
message: `Target version "${apiVersion}" is not listed in service.yaml (${order.length === 0 ? "no versions found" : order.join(", ")}).`,
|
|
15
|
+
severity: "error",
|
|
16
|
+
file: "service.yaml",
|
|
17
|
+
});
|
|
18
|
+
return { apiVersion, examples, diagnostics };
|
|
19
|
+
}
|
|
20
|
+
for (const file of files) {
|
|
21
|
+
const data = file.data;
|
|
22
|
+
if (data === null || typeof data !== "object" || Array.isArray(data))
|
|
23
|
+
continue;
|
|
24
|
+
for (const [operation, value] of Object.entries(data)) {
|
|
25
|
+
if (operation.startsWith("$") || !Array.isArray(value))
|
|
26
|
+
continue;
|
|
27
|
+
for (const [title, entries] of groupByLineage(value)) {
|
|
28
|
+
const selected = selectApplicable(entries, apiVersion, order);
|
|
29
|
+
if (selected === undefined)
|
|
30
|
+
continue;
|
|
31
|
+
examples.push({
|
|
32
|
+
operation,
|
|
33
|
+
...(title === "" ? {} : { title }),
|
|
34
|
+
...(typeof selected.legacyFilename === "string"
|
|
35
|
+
? { legacyFilename: selected.legacyFilename }
|
|
36
|
+
: {}),
|
|
37
|
+
request: substituteApiVersion(selected.request, apiVersion),
|
|
38
|
+
responses: substituteApiVersion(selected.responses, apiVersion),
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
examples.sort((a, b) => a.operation.localeCompare(b.operation) || (a.title ?? "").localeCompare(b.title ?? ""));
|
|
44
|
+
return { apiVersion, examples, diagnostics };
|
|
45
|
+
}
|
|
46
|
+
/** Group an operation's variants into lineages keyed by `title` (untitled => the default `""`). */
|
|
47
|
+
function groupByLineage(variants) {
|
|
48
|
+
const lineages = new Map();
|
|
49
|
+
for (const variant of variants) {
|
|
50
|
+
if (variant === null || typeof variant !== "object" || Array.isArray(variant))
|
|
51
|
+
continue;
|
|
52
|
+
const v = variant;
|
|
53
|
+
const title = typeof v.title === "string" ? v.title : "";
|
|
54
|
+
const group = lineages.get(title);
|
|
55
|
+
if (group)
|
|
56
|
+
group.push(v);
|
|
57
|
+
else
|
|
58
|
+
lineages.set(title, [v]);
|
|
59
|
+
}
|
|
60
|
+
return lineages;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=resolve.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../../src/resolve/resolve.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Selection of the applicable example variant for a target API version, using the single linear
|
|
3
|
+
* version order from `service.yaml` (RFC §; no preview/stable special-casing).
|
|
4
|
+
*/
|
|
5
|
+
/** A variant with an optional `since` marker. */
|
|
6
|
+
export interface HasSince {
|
|
7
|
+
readonly since?: unknown;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Within a lineage, pick the entry with the greatest `since` that is `<=` the target version.
|
|
11
|
+
* The base entry (no `since`) applies from the earliest version. Returns `undefined` when nothing
|
|
12
|
+
* applies (e.g. every entry's `since` is newer than the target and there is no base).
|
|
13
|
+
*
|
|
14
|
+
* `apiVersion` and all `since` values are located in `order`; entries whose `since` is not in
|
|
15
|
+
* `order` are ignored. When `apiVersion` itself is not in `order`, nothing resolves.
|
|
16
|
+
*/
|
|
17
|
+
export declare function selectApplicable<T extends HasSince>(entries: readonly T[], apiVersion: string, order: readonly string[]): T | undefined;
|
|
18
|
+
//# sourceMappingURL=select.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../../src/resolve/select.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,iDAAiD;AACjD,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,QAAQ,EACjD,OAAO,EAAE,SAAS,CAAC,EAAE,EACrB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,SAAS,MAAM,EAAE,GACvB,CAAC,GAAG,SAAS,CAmBf"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Selection of the applicable example variant for a target API version, using the single linear
|
|
3
|
+
* version order from `service.yaml` (RFC §; no preview/stable special-casing).
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Within a lineage, pick the entry with the greatest `since` that is `<=` the target version.
|
|
7
|
+
* The base entry (no `since`) applies from the earliest version. Returns `undefined` when nothing
|
|
8
|
+
* applies (e.g. every entry's `since` is newer than the target and there is no base).
|
|
9
|
+
*
|
|
10
|
+
* `apiVersion` and all `since` values are located in `order`; entries whose `since` is not in
|
|
11
|
+
* `order` are ignored. When `apiVersion` itself is not in `order`, nothing resolves.
|
|
12
|
+
*/
|
|
13
|
+
export function selectApplicable(entries, apiVersion, order) {
|
|
14
|
+
const targetIndex = order.indexOf(apiVersion);
|
|
15
|
+
if (targetIndex < 0)
|
|
16
|
+
return undefined;
|
|
17
|
+
let best;
|
|
18
|
+
let bestIndex = Number.NEGATIVE_INFINITY;
|
|
19
|
+
for (const entry of entries) {
|
|
20
|
+
const since = typeof entry.since === "string" ? entry.since : undefined;
|
|
21
|
+
// The base entry sorts below every real version so any `since <= target` wins over it.
|
|
22
|
+
const index = since === undefined ? -1 : order.indexOf(since);
|
|
23
|
+
if (since !== undefined && index < 0)
|
|
24
|
+
continue;
|
|
25
|
+
if (index <= targetIndex && index > bestIndex) {
|
|
26
|
+
best = entry;
|
|
27
|
+
bestIndex = index;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return best;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=select.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select.js","sourceRoot":"","sources":["../../../src/resolve/select.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAAqB,EACrB,UAAkB,EAClB,KAAwB;IAExB,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC9C,IAAI,WAAW,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAEtC,IAAI,IAAmB,CAAC;IACxB,IAAI,SAAS,GAAG,MAAM,CAAC,iBAAiB,CAAC;IAEzC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QACxE,uFAAuF;QACvF,MAAM,KAAK,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC9D,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,GAAG,CAAC;YAAE,SAAS;QAC/C,IAAI,KAAK,IAAI,WAAW,IAAI,KAAK,GAAG,SAAS,EAAE,CAAC;YAC9C,IAAI,GAAG,KAAK,CAAC;YACb,SAAS,GAAG,KAAK,CAAC;QACpB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/dist/src/validate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAA2C,MAAM,kBAAkB,CAAC;AACpF,OAAO,EAA0B,UAAU,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAwB,MAAM,YAAY,CAAC;AACtF,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGjD,IAAI,eAA6C,CAAC;AAElD,SAAS,YAAY;IACnB,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAC5D,eAAe,GAAG,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,cAAc,CAAC,IAAuB;IACpD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACvC,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;IAChC,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IACzC,OAAO,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,oBAAoB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAuB,EAAE,KAAkB;IACvE,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;IACxC,MAAM,IAAI,GAAG,YAAY;SACtB,KAAK,CAAC,GAAG,CAAC;SACV,KAAK,CAAC,CAAC,CAAC;SACR,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;SACjE,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACzE,MAAM,IAAI,GACR,IAAI,CAAC,MAAM,GAAG,CAAC;QACb,CAAC,CAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAA0C;QAC3E,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,YAAY,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC;IAC/D,OAAO;QACL,IAAI,EAAE,mBAAmB;QACzB,OAAO,EAAE,GAAG,QAAQ,IAAI,KAAK,CAAC,OAAO,IAAI,YAAY,EAAE;QACvD,QAAQ,EAAE,OAAO;QACjB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,IAAI,EAAE,GAAG,EAAE,IAAI;QACf,GAAG,EAAE,GAAG,EAAE,GAAG;KACd,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAClC,KAA0B,EAC1B,
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAA2C,MAAM,kBAAkB,CAAC;AACpF,OAAO,EAA0B,UAAU,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAwB,MAAM,YAAY,CAAC;AACtF,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGjD,IAAI,eAA6C,CAAC;AAElD,SAAS,YAAY;IACnB,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAC5D,eAAe,GAAG,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,cAAc,CAAC,IAAuB;IACpD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACvC,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;IAChC,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IACzC,OAAO,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,oBAAoB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAuB,EAAE,KAAkB;IACvE,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;IACxC,MAAM,IAAI,GAAG,YAAY;SACtB,KAAK,CAAC,GAAG,CAAC;SACV,KAAK,CAAC,CAAC,CAAC;SACR,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;SACjE,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACzE,MAAM,IAAI,GACR,IAAI,CAAC,MAAM,GAAG,CAAC;QACb,CAAC,CAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAA0C;QAC3E,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,YAAY,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC;IAC/D,OAAO;QACL,IAAI,EAAE,mBAAmB;QACzB,OAAO,EAAE,GAAG,QAAQ,IAAI,KAAK,CAAC,OAAO,IAAI,YAAY,EAAE;QACvD,QAAQ,EAAE,OAAO;QACjB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,IAAI,EAAE,GAAG,EAAE,IAAI;QACf,GAAG,EAAE,GAAG,EAAE,GAAG;KACd,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAClC,KAA0B,EAC1B,GAAG,GAAoB,EAAE;IAEzB,MAAM,WAAW,GAAwB,EAAE,CAAC;IAE5C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YAClC,WAAW,CAAC,IAAI,CAAC;gBACf,IAAI,EAAE,kBAAkB;gBACxB,OAAO,EAAE,yBAAyB,IAAI,CAAC,UAAU,EAAE;gBACnD,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE,IAAI,CAAC,IAAI;aAChB,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QACD,WAAW,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1C,WAAW,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,WAAW,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;IAE/C,OAAO,WAAW,CAAC;AACrB,CAAC"}
|