@azure-tools/typespec-rust 0.1.0 → 0.3.0

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.
Files changed (75) hide show
  1. package/dist/src/codegen/cargotoml.d.ts +6 -0
  2. package/dist/src/codegen/cargotoml.d.ts.map +1 -1
  3. package/dist/src/codegen/cargotoml.js +6 -1
  4. package/dist/src/codegen/cargotoml.js.map +1 -1
  5. package/dist/src/codegen/clients.d.ts +19 -2
  6. package/dist/src/codegen/clients.d.ts.map +1 -1
  7. package/dist/src/codegen/clients.js +489 -250
  8. package/dist/src/codegen/clients.js.map +1 -1
  9. package/dist/src/codegen/codeGenerator.d.ts +29 -6
  10. package/dist/src/codegen/codeGenerator.d.ts.map +1 -1
  11. package/dist/src/codegen/codeGenerator.js +64 -25
  12. package/dist/src/codegen/codeGenerator.js.map +1 -1
  13. package/dist/src/codegen/context.d.ts +41 -0
  14. package/dist/src/codegen/context.d.ts.map +1 -1
  15. package/dist/src/codegen/context.js +94 -15
  16. package/dist/src/codegen/context.js.map +1 -1
  17. package/dist/src/codegen/enums.d.ts +9 -1
  18. package/dist/src/codegen/enums.d.ts.map +1 -1
  19. package/dist/src/codegen/enums.js +34 -20
  20. package/dist/src/codegen/enums.js.map +1 -1
  21. package/dist/src/codegen/helpers.d.ts +116 -2
  22. package/dist/src/codegen/helpers.d.ts.map +1 -1
  23. package/dist/src/codegen/helpers.js +148 -18
  24. package/dist/src/codegen/helpers.js.map +1 -1
  25. package/dist/src/codegen/lib.d.ts +7 -1
  26. package/dist/src/codegen/lib.d.ts.map +1 -1
  27. package/dist/src/codegen/lib.js +10 -5
  28. package/dist/src/codegen/lib.js.map +1 -1
  29. package/dist/src/codegen/mod.d.ts +6 -1
  30. package/dist/src/codegen/mod.d.ts.map +1 -1
  31. package/dist/src/codegen/mod.js +9 -10
  32. package/dist/src/codegen/mod.js.map +1 -1
  33. package/dist/src/codegen/models.d.ts +20 -1
  34. package/dist/src/codegen/models.d.ts.map +1 -1
  35. package/dist/src/codegen/models.js +250 -13
  36. package/dist/src/codegen/models.js.map +1 -1
  37. package/dist/src/codegen/use.d.ts +32 -0
  38. package/dist/src/codegen/use.d.ts.map +1 -1
  39. package/dist/src/codegen/use.js +42 -15
  40. package/dist/src/codegen/use.js.map +1 -1
  41. package/dist/src/codemodel/client.d.ts +150 -11
  42. package/dist/src/codemodel/client.d.ts.map +1 -1
  43. package/dist/src/codemodel/client.js +60 -17
  44. package/dist/src/codemodel/client.js.map +1 -1
  45. package/dist/src/codemodel/crate.d.ts +33 -0
  46. package/dist/src/codemodel/crate.d.ts.map +1 -1
  47. package/dist/src/codemodel/crate.js +17 -0
  48. package/dist/src/codemodel/crate.js.map +1 -1
  49. package/dist/src/codemodel/method.d.ts +17 -0
  50. package/dist/src/codemodel/method.d.ts.map +1 -1
  51. package/dist/src/codemodel/types.d.ts +152 -24
  52. package/dist/src/codemodel/types.d.ts.map +1 -1
  53. package/dist/src/codemodel/types.js +39 -25
  54. package/dist/src/codemodel/types.js.map +1 -1
  55. package/dist/src/emitter.d.ts +5 -0
  56. package/dist/src/emitter.d.ts.map +1 -1
  57. package/dist/src/emitter.js +36 -23
  58. package/dist/src/emitter.js.map +1 -1
  59. package/dist/src/lib.d.ts +2 -0
  60. package/dist/src/lib.d.ts.map +1 -1
  61. package/dist/src/lib.js +6 -1
  62. package/dist/src/lib.js.map +1 -1
  63. package/dist/src/tcgcadapter/adapter.d.ts +73 -1
  64. package/dist/src/tcgcadapter/adapter.d.ts.map +1 -1
  65. package/dist/src/tcgcadapter/adapter.js +342 -81
  66. package/dist/src/tcgcadapter/adapter.js.map +1 -1
  67. package/dist/src/tcgcadapter/helpers.d.ts +18 -0
  68. package/dist/src/tcgcadapter/helpers.d.ts.map +1 -1
  69. package/dist/src/tcgcadapter/helpers.js +23 -2
  70. package/dist/src/tcgcadapter/helpers.js.map +1 -1
  71. package/dist/src/tcgcadapter/naming.d.ts +8 -0
  72. package/dist/src/tcgcadapter/naming.d.ts.map +1 -1
  73. package/dist/src/tcgcadapter/naming.js +8 -5
  74. package/dist/src/tcgcadapter/naming.js.map +1 -1
  75. package/package.json +21 -23
@@ -1 +1 @@
1
- {"version":3,"file":"enums.js","sourceRoot":"","sources":["../../../src/codegen/enums.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAG/F,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAG/B,yCAAyC;AACzC,MAAM,UAAU,SAAS,CAAC,KAAiB,EAAE,OAAgB;IAC3D,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;QAC5B,OAAO,EAAE,CAAC;KACX;IAED,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC9B,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC;IAEpD,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAE9C,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;QAClC,IAAI,IAAI,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAChD,mCAAmC;QACnC,IAAI,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;QACxF,IAAI,IAAI,OAAO,CAAC,uBAAuB,CAAC;QACxC,IAAI,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,QAAQ,CAAC,IAAI,MAAM,CAAC;QAEpE,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE;YACnC,IAAI,IAAI,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC7C,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,KAAK,EAAE;gBAC9B,6DAA6D;gBAC7D,IAAI,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE,qBAAqB,KAAK,CAAC,KAAK,OAAO,CAAC;aACrE;YACD,IAAI,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,IAAI,KAAK,CAAC;SAChD;QAED,IAAI,QAAQ,CAAC,UAAU,EAAE;YACvB,IAAI,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE,sBAAsB,CAAC;YACnD,+BAA+B;YAC/B,mDAAmD;YACnD,IAAI,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE,yBAAyB,CAAC;SACvD;QACD,IAAI,IAAI,OAAO,CAAC;KACjB;IAED,2BAA2B;IAC3B,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;QAClC,IAAI,IAAI,OAAO,CAAC,2BAA2B,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC3D,IAAI,IAAI,OAAO,CAAC,yBAAyB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;KAC1D;IAED,IAAI,OAAO,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IACxC,OAAO,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;IACtB,OAAO,IAAI,IAAI,CAAC;IAEhB,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"enums.js","sourceRoot":"","sources":["../../../src/codegen/enums.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAG/F,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAG/B;;;;;;;GAOG;AACH,MAAM,UAAU,SAAS,CAAC,KAAiB,EAAE,OAAgB;IAC3D,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC9B,+EAA+E;IAC/E,GAAG,CAAC,OAAO,CAAC,sBAAsB,EAAE,aAAa,CAAC,CAAC;IAEnD,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAEzC,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QACnC,IAAI,QAAQ,GAAG,aAAa,CAAC;QAC7B,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;YACxB,GAAG,CAAC,OAAO,CAAC,sBAAsB,EAAE,wBAAwB,CAAC,CAAC;YAC9D,QAAQ,GAAG,wBAAwB,CAAC;QACtC,CAAC;QAED,IAAI,IAAI,GAAG,QAAQ,MAAM,CAAC;QAC1B,MAAM,IAAI,GAAG,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACrD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,IAAI,IAAI,GAAG,MAAM,CAAC,GAAG,EAAE,cAAc,IAAI,OAAO,CAAC;QACnD,CAAC;QACD,IAAI,IAAI,GAAG,MAAM,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,IAAI,KAAK,CAAC;QAE7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;YAChD,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACjC,MAAM,IAAI,GAAG,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAClD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpB,IAAI,IAAI,GAAG,MAAM,CAAC,GAAG,EAAE,cAAc,IAAI,OAAO,CAAC;YACnD,CAAC;YACD,+BAA+B;YAC/B,mDAAmD;YACnD,IAAI,IAAI,GAAG,MAAM,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,KAAK,IAAI,CAAC;YAC3D,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACnC,IAAI,IAAI,GAAG,CAAC;YACd,CAAC;YACD,IAAI,IAAI,IAAI,CAAC;QACf,CAAC;QAED,IAAI,IAAI,QAAQ,CAAC,CAAC,iBAAiB;IACrC,CAAC;IAED,2BAA2B;IAC3B,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QACnC,IAAI,IAAI,OAAO,CAAC,2BAA2B,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC3D,IAAI,IAAI,OAAO,CAAC,yBAAyB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI,OAAO,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IACxC,OAAO,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;IACtB,OAAO,IAAI,IAAI,CAAC;IAEhB,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -1,18 +1,132 @@
1
1
  import * as rust from '../codemodel/index.js';
2
2
  export declare const AnnotationNonExhaustive = "#[non_exhaustive]\n";
3
3
  export declare const AnonymousLifetimeAnnotation = "<'_>";
4
+ /**
5
+ * returns the content preamble common to all emitted files
6
+ *
7
+ * @returns the preamble content
8
+ */
4
9
  export declare function contentPreamble(): string;
10
+ /**
11
+ * formats doc comments if available
12
+ *
13
+ * @param docs contains any doc comments
14
+ * @returns formatted doc comments or the empty string
15
+ */
5
16
  export declare function formatDocComment(docs: rust.Docs): string;
17
+ /**
18
+ * returns 'pub ' prefix as required
19
+ *
20
+ * @param pub true if the prefix is required
21
+ * @returns the prefix or the empty string
22
+ */
6
23
  export declare function emitPub(pub: boolean): string;
7
- export declare function getTypeDeclaration(type: rust.Type, withAnonymousLifetime?: boolean): string;
24
+ /**
25
+ * returns the type declaration string for the specified Rust type
26
+ *
27
+ * @param type is the Rust type for which to emit the declaration
28
+ * @param withAnonymousLifetime indicates if an existing lifetime annotation should be substituted with the anonymous lifetime
29
+ * @returns
30
+ */
31
+ export declare function getTypeDeclaration(type: rust.Client | rust.Type, withAnonymousLifetime?: boolean): string;
32
+ /** helper for managing indentation levels */
8
33
  export declare class indentation {
9
34
  private level;
10
- constructor();
35
+ constructor(level?: number);
36
+ /**
37
+ * returns spaces for the current indentation level
38
+ *
39
+ * @returns a string with the current indentation level
40
+ */
11
41
  get(): string;
42
+ /**
43
+ * increments the indentation level
44
+ *
45
+ * @returns this indentation instance
46
+ */
12
47
  push(): indentation;
48
+ /**
49
+ * decrements the indentation level
50
+ *
51
+ * @returns this indentation instance
52
+ */
13
53
  pop(): indentation;
14
54
  }
55
+ /**
56
+ * emits the derive annotation with the standard and any additional values
57
+ *
58
+ * @param extra contains any extra derive values
59
+ * @returns a derive macro
60
+ */
15
61
  export declare function annotationDerive(...extra: Array<string>): string;
62
+ /**
63
+ * used to sort strings in ascending order
64
+ *
65
+ * @param a is the value on the left side
66
+ * @param b is the value on the right side
67
+ * @returns -1 if a < b, 1 if a > b, or 0 if they're equal
68
+ */
16
69
  export declare function sortAscending(a: string, b: string): number;
70
+ /**
71
+ * returns the generic lifetime annotation string for lifetime (e.g. <'a>)
72
+ *
73
+ * @param lifetime contains the Rust lifetime value
74
+ * @returns the properly formatted lifetime annotation
75
+ */
17
76
  export declare function getGenericLifetimeAnnotation(lifetime: rust.Lifetime): string;
77
+ /** the if condition in an if block */
78
+ export interface ifBlock {
79
+ /** the condition in the if block */
80
+ condition: string;
81
+ /** the body of the if block */
82
+ body: (indent: indentation) => string;
83
+ }
84
+ /**
85
+ * constructs an if block (can expand to include else if/else as necessary)
86
+ *
87
+ * @param indent the current indentation helper in scope
88
+ * @param ifBlock the if block definition
89
+ * @returns the text for the if block
90
+ */
91
+ export declare function buildIfBlock(indent: indentation, ifBlock: ifBlock): string;
92
+ /** an arm in a match expression */
93
+ export interface matchArm {
94
+ /** the pattern being matched */
95
+ pattern: string;
96
+ /** optional return type for this match arm */
97
+ returns?: string;
98
+ /** the body of this match arm */
99
+ body: (indent: indentation) => string;
100
+ }
101
+ /**
102
+ * constructs a match expression at the provided indentation level
103
+ *
104
+ * @param indent the current indentation helper in scope
105
+ * @param expr the expression to match
106
+ * @param arms one or more match arms
107
+ * @returns the text for the match block
108
+ */
109
+ export declare function buildMatch(indent: indentation, expr: string, arms: Array<matchArm>): string;
110
+ /**
111
+ * returns capitalized str
112
+ * e.g. foo -> Foo
113
+ *
114
+ * @param str the string to capitalize
115
+ * @returns the capitalized value
116
+ */
117
+ export declare function capitalize(str: string): string;
118
+ /**
119
+ * if type is an Option<T>, returns the T, else returns type
120
+ *
121
+ * @param type is the type to unwrap
122
+ * @returns the wrapped type or the original type if it wasn't wrapped
123
+ */
124
+ export declare function unwrapOption(type: rust.Type): rust.Type;
125
+ /**
126
+ * recursively unwraps a type. if type is an Option<Vec<T>>, returns the T
127
+ *
128
+ * @param type is the type to unwrap
129
+ * @returns the wrapped type or the original type if it wasn't wrapped
130
+ */
131
+ export declare function unwrapType(type: rust.Type): rust.Type;
18
132
  //# sourceMappingURL=helpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/codegen/helpers.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,IAAI,MAAM,uBAAuB,CAAC;AAS9C,eAAO,MAAM,uBAAuB,wBAAwB,CAAC;AAE7D,eAAO,MAAM,2BAA2B,SAAU,CAAC;AAGnD,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAGD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,MAAM,CAkBxD;AAGD,wBAAgB,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAE5C;AAGD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,qBAAqB,UAAQ,GAAG,MAAM,CA4CzF;AAMD,qBAAa,WAAW;IACtB,OAAO,CAAC,KAAK,CAAS;;IAOtB,GAAG,IAAI,MAAM;IASb,IAAI,IAAI,WAAW;IAMnB,GAAG,IAAI,WAAW;CAOnB;AAGD,wBAAgB,gBAAgB,CAAC,GAAG,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,MAAM,CAOhE;AAGD,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAE1D;AAGD,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,GAAG,MAAM,CAE5E"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/codegen/helpers.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,IAAI,MAAM,uBAAuB,CAAC;AAS9C,eAAO,MAAM,uBAAuB,wBAAwB,CAAC;AAE7D,eAAO,MAAM,2BAA2B,SAAU,CAAC;AAEnD;;;;GAIG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,MAAM,CAkBxD;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAE5C;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,qBAAqB,UAAQ,GAAG,MAAM,CAgDvG;AAKD,6CAA6C;AAC7C,qBAAa,WAAW;IACtB,OAAO,CAAC,KAAK,CAAS;gBACV,KAAK,CAAC,EAAE,MAAM;IAS1B;;;;OAIG;IACH,GAAG,IAAI,MAAM;IAQb;;;;OAIG;IACH,IAAI,IAAI,WAAW;IAKnB;;;;OAIG;IACH,GAAG,IAAI,WAAW;CAOnB;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,MAAM,CAOhE;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,GAAG,MAAM,CAE5E;AAED,sCAAsC;AACtC,MAAM,WAAW,OAAO;IACtB,oCAAoC;IACpC,SAAS,EAAE,MAAM,CAAC;IAElB,+BAA+B;IAC/B,IAAI,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,MAAM,CAAC;CACvC;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAK1E;AAED,mCAAmC;AACnC,MAAM,WAAW,QAAQ;IACvB,gCAAgC;IAChC,OAAO,EAAE,MAAM,CAAC;IAEhB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,iCAAiC;IACjC,IAAI,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,MAAM,CAAC;CACvC;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,MAAM,CAa3F;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAKvD;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CASrD"}
@@ -11,11 +11,20 @@ const headerText = `// Copyright (c) Microsoft Corporation. All rights reserved.
11
11
  `;
12
12
  export const AnnotationNonExhaustive = '#[non_exhaustive]\n';
13
13
  export const AnonymousLifetimeAnnotation = '<\'_>';
14
- // returns the content preamble common to all emitted files
14
+ /**
15
+ * returns the content preamble common to all emitted files
16
+ *
17
+ * @returns the preamble content
18
+ */
15
19
  export function contentPreamble() {
16
20
  return headerText;
17
21
  }
18
- // formats doc comments if available
22
+ /**
23
+ * formats doc comments if available
24
+ *
25
+ * @param docs contains any doc comments
26
+ * @returns formatted doc comments or the empty string
27
+ */
19
28
  export function formatDocComment(docs) {
20
29
  if (!docs.summary && !docs.description) {
21
30
  return '';
@@ -32,15 +41,28 @@ export function formatDocComment(docs) {
32
41
  }
33
42
  return docStr;
34
43
  }
35
- // returns 'pub ' prefix as required
44
+ /**
45
+ * returns 'pub ' prefix as required
46
+ *
47
+ * @param pub true if the prefix is required
48
+ * @returns the prefix or the empty string
49
+ */
36
50
  export function emitPub(pub) {
37
51
  return pub ? 'pub ' : '';
38
52
  }
39
- // returns the type declaration string for the specified Rust type
53
+ /**
54
+ * returns the type declaration string for the specified Rust type
55
+ *
56
+ * @param type is the Rust type for which to emit the declaration
57
+ * @param withAnonymousLifetime indicates if an existing lifetime annotation should be substituted with the anonymous lifetime
58
+ * @returns
59
+ */
40
60
  export function getTypeDeclaration(type, withAnonymousLifetime = false) {
41
61
  switch (type.kind) {
42
62
  case 'arc':
43
63
  return `${type.name}<dyn ${getTypeDeclaration(type.type)}>`;
64
+ case 'client':
65
+ return type.name;
44
66
  case 'encodedBytes':
45
67
  return 'Vec<u8>';
46
68
  case 'hashmap':
@@ -50,7 +72,9 @@ export function getTypeDeclaration(type, withAnonymousLifetime = false) {
50
72
  case 'literal':
51
73
  return `${type.value}`;
52
74
  case 'option':
53
- return `Option<${type.ref ? '&' : ''}${getTypeDeclaration(type.type, withAnonymousLifetime)}>`;
75
+ return `Option<${getTypeDeclaration(type.type, withAnonymousLifetime)}>`;
76
+ case 'pager':
77
+ return `Pager<${getTypeDeclaration(type.type, withAnonymousLifetime)}>`;
54
78
  case 'requestContent':
55
79
  case 'response':
56
80
  case 'result':
@@ -85,35 +109,57 @@ export function getTypeDeclaration(type, withAnonymousLifetime = false) {
85
109
  }
86
110
  // four spaces per indent level
87
111
  const oneIndentation = ' ';
88
- // helper for managing indentation levels
112
+ /** helper for managing indentation levels */
89
113
  export class indentation {
90
- constructor() {
91
- // level is one-based.
92
- this.level = 1;
114
+ constructor(level) {
115
+ if (level !== undefined) {
116
+ this.level = level;
117
+ }
118
+ else {
119
+ // default to one level of indentation
120
+ this.level = 1;
121
+ }
93
122
  }
94
- // returns spaces for the current indentation level
123
+ /**
124
+ * returns spaces for the current indentation level
125
+ *
126
+ * @returns a string with the current indentation level
127
+ */
95
128
  get() {
96
- let indent = oneIndentation;
97
- for (let i = 1; i < this.level; ++i) {
129
+ let indent = '';
130
+ for (let i = 0; i < this.level; ++i) {
98
131
  indent += oneIndentation;
99
132
  }
100
133
  return indent;
101
134
  }
102
- // increments the indentation level
135
+ /**
136
+ * increments the indentation level
137
+ *
138
+ * @returns this indentation instance
139
+ */
103
140
  push() {
104
141
  ++this.level;
105
142
  return this;
106
143
  }
107
- // decrements the indentation level
144
+ /**
145
+ * decrements the indentation level
146
+ *
147
+ * @returns this indentation instance
148
+ */
108
149
  pop() {
109
150
  --this.level;
110
- if (this.level < 1) {
151
+ if (this.level < 0) {
111
152
  throw new Error('indentation stack underflow');
112
153
  }
113
154
  return this;
114
155
  }
115
156
  }
116
- // emits the derive annotation with the standard and any additional values
157
+ /**
158
+ * emits the derive annotation with the standard and any additional values
159
+ *
160
+ * @param extra contains any extra derive values
161
+ * @returns a derive macro
162
+ */
117
163
  export function annotationDerive(...extra) {
118
164
  const derive = new Array('Clone', 'Debug', 'Deserialize', 'Serialize');
119
165
  // remove any empty values
@@ -122,12 +168,96 @@ export function annotationDerive(...extra) {
122
168
  derive.sort();
123
169
  return `#[derive(${derive.join(', ')})]\n`;
124
170
  }
125
- // used to sort strings in ascending order
171
+ /**
172
+ * used to sort strings in ascending order
173
+ *
174
+ * @param a is the value on the left side
175
+ * @param b is the value on the right side
176
+ * @returns -1 if a < b, 1 if a > b, or 0 if they're equal
177
+ */
126
178
  export function sortAscending(a, b) {
127
179
  return a < b ? -1 : a > b ? 1 : 0;
128
180
  }
129
- // returns the generic lifetime annotation string for lifetime (e.g. <'a>)
181
+ /**
182
+ * returns the generic lifetime annotation string for lifetime (e.g. <'a>)
183
+ *
184
+ * @param lifetime contains the Rust lifetime value
185
+ * @returns the properly formatted lifetime annotation
186
+ */
130
187
  export function getGenericLifetimeAnnotation(lifetime) {
131
188
  return `<${lifetime.name}>`;
132
189
  }
190
+ /**
191
+ * constructs an if block (can expand to include else if/else as necessary)
192
+ *
193
+ * @param indent the current indentation helper in scope
194
+ * @param ifBlock the if block definition
195
+ * @returns the text for the if block
196
+ */
197
+ export function buildIfBlock(indent, ifBlock) {
198
+ let body = `if ${ifBlock.condition} {\n`;
199
+ body += ifBlock.body(indent.push());
200
+ body += `${indent.pop().get()}}`;
201
+ return body;
202
+ }
203
+ /**
204
+ * constructs a match expression at the provided indentation level
205
+ *
206
+ * @param indent the current indentation helper in scope
207
+ * @param expr the expression to match
208
+ * @param arms one or more match arms
209
+ * @returns the text for the match block
210
+ */
211
+ export function buildMatch(indent, expr, arms) {
212
+ let match = `match ${expr} {\n`;
213
+ indent.push();
214
+ for (const arm of arms) {
215
+ match += `${indent.get()}${arm.pattern} => ${arm.returns ? arm.returns + ' ' : ''}{\n`;
216
+ match += arm.body(indent.push());
217
+ // the comma after an arm block is optional depending on the number
218
+ // of lines in the block. we'll always emit it and rely on cargo fmt
219
+ // to remove it as required.
220
+ match += `${indent.pop().get()}},\n`;
221
+ }
222
+ match += `${indent.pop().get()}}`;
223
+ return match;
224
+ }
225
+ /**
226
+ * returns capitalized str
227
+ * e.g. foo -> Foo
228
+ *
229
+ * @param str the string to capitalize
230
+ * @returns the capitalized value
231
+ */
232
+ export function capitalize(str) {
233
+ return codegen.capitalize(str);
234
+ }
235
+ /**
236
+ * if type is an Option<T>, returns the T, else returns type
237
+ *
238
+ * @param type is the type to unwrap
239
+ * @returns the wrapped type or the original type if it wasn't wrapped
240
+ */
241
+ export function unwrapOption(type) {
242
+ if (type.kind === 'option') {
243
+ return type.type;
244
+ }
245
+ return type;
246
+ }
247
+ /**
248
+ * recursively unwraps a type. if type is an Option<Vec<T>>, returns the T
249
+ *
250
+ * @param type is the type to unwrap
251
+ * @returns the wrapped type or the original type if it wasn't wrapped
252
+ */
253
+ export function unwrapType(type) {
254
+ switch (type.kind) {
255
+ case 'option':
256
+ case 'hashmap':
257
+ case 'vector':
258
+ return unwrapType(type.type);
259
+ default:
260
+ return type;
261
+ }
262
+ }
133
263
  //# sourceMappingURL=helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/codegen/helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/codegen/helpers.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,9 @@
1
1
  import * as rust from '../codemodel/index.js';
2
- export declare function emitLib(crate: rust.Crate): string;
2
+ /**
3
+ * emits the contents of the lib.rs file
4
+ *
5
+ * @param crate the crate for which to emit a lib.rs file
6
+ * @returns the contents of the lib.rs file
7
+ */
8
+ export declare function emitLibRs(crate: rust.Crate): string;
3
9
  //# sourceMappingURL=lib.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../../../src/codegen/lib.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,IAAI,MAAM,uBAAuB,CAAC;AAG9C,wBAAgB,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAoCjD"}
1
+ {"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../../../src/codegen/lib.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,IAAI,MAAM,uBAAuB,CAAC;AAE9C;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAoCnD"}
@@ -4,8 +4,13 @@
4
4
  *--------------------------------------------------------------------------------------------*/
5
5
  import * as codegen from '@azure-tools/codegen';
6
6
  import * as helpers from './helpers.js';
7
- // emits the lib.rs file
8
- export function emitLib(crate) {
7
+ /**
8
+ * emits the contents of the lib.rs file
9
+ *
10
+ * @param crate the crate for which to emit a lib.rs file
11
+ * @returns the contents of the lib.rs file
12
+ */
13
+ export function emitLibRs(crate) {
9
14
  let content = helpers.contentPreamble();
10
15
  content += 'mod generated;\n\n';
11
16
  if (crate.clients.length > 0) {
@@ -16,12 +21,12 @@ export function emitLib(crate) {
16
21
  closeModels = true;
17
22
  content += 'pub mod models {\n';
18
23
  }
19
- const indentation = new helpers.indentation();
24
+ const indent = new helpers.indentation();
20
25
  if (crate.enums.length > 0) {
21
- content += `${indentation.get()}pub use crate::generated::enums::*;\n`;
26
+ content += `${indent.get()}pub use crate::generated::enums::*;\n`;
22
27
  }
23
28
  if (crate.models.length > 0) {
24
- content += `${indentation.get()}pub use crate::generated::models::*;\n`;
29
+ content += `${indent.get()}pub use crate::generated::models::*;\n`;
25
30
  }
26
31
  if (closeModels) {
27
32
  content += '}\n';
@@ -1 +1 @@
1
- {"version":3,"file":"lib.js","sourceRoot":"","sources":["../../../src/codegen/lib.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AAGxC,wBAAwB;AACxB,MAAM,UAAU,OAAO,CAAC,KAAiB;IACvC,IAAI,OAAO,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IACxC,OAAO,IAAI,oBAAoB,CAAC;IAEhC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;QAC5B,OAAO,IAAI,2CAA2C,CAAC;KACxD;IAED,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;QACrD,WAAW,GAAG,IAAI,CAAC;QACnB,OAAO,IAAI,oBAAoB,CAAC;KACjC;IAED,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAE9C,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;QAC1B,OAAO,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE,uCAAuC,CAAC;KACxE;IAED,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;QAC3B,OAAO,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE,wCAAwC,CAAC;KACzE;IAED,IAAI,WAAW,EAAE;QACf,OAAO,IAAI,KAAK,CAAC;KAClB;IAED,6DAA6D;IAC7D,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE;QAClC,IAAI,MAAM,CAAC,aAAa,EAAE;YACxB,OAAO,IAAI,aAAa,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC;SACzF;KACF;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"lib.js","sourceRoot":"","sources":["../../../src/codegen/lib.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AAGxC;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,KAAiB;IACzC,IAAI,OAAO,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IACxC,OAAO,IAAI,oBAAoB,CAAC;IAEhC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAI,2CAA2C,CAAC;IACzD,CAAC;IAED,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtD,WAAW,GAAG,IAAI,CAAC;QACnB,OAAO,IAAI,oBAAoB,CAAC;IAClC,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAEzC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,OAAO,IAAI,GAAG,MAAM,CAAC,GAAG,EAAE,uCAAuC,CAAC;IACpE,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,IAAI,GAAG,MAAM,CAAC,GAAG,EAAE,wCAAwC,CAAC;IACrE,CAAC;IAED,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,IAAI,KAAK,CAAC;IACnB,CAAC;IAED,6DAA6D;IAC7D,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QACnC,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;YACzB,OAAO,IAAI,aAAa,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC;QAC1F,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -1,3 +1,8 @@
1
1
  import * as rust from '../codemodel/index.js';
2
- export declare function emitMod(crate: rust.Crate): string;
2
+ /**
3
+ * emits the contents of a mod.rs file
4
+ * @param modules the list of modules to include in the mod.rs file
5
+ * @returns the contents of the mod.rs file
6
+ */
7
+ export declare function emitModRs(modules: Array<rust.Module>): string;
3
8
  //# sourceMappingURL=mod.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../src/codegen/mod.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,IAAI,MAAM,uBAAuB,CAAC;AAG9C,wBAAgB,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAYjD"}
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../src/codegen/mod.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,IAAI,MAAM,uBAAuB,CAAC;AAE9C;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,MAAM,CAO7D"}
@@ -3,17 +3,16 @@
3
3
  * Licensed under the MIT License. See License.txt in the project root for license information.
4
4
  *--------------------------------------------------------------------------------------------*/
5
5
  import * as helpers from './helpers.js';
6
- // emits the mod.rs file
7
- export function emitMod(crate) {
6
+ /**
7
+ * emits the contents of a mod.rs file
8
+ * @param modules the list of modules to include in the mod.rs file
9
+ * @returns the contents of the mod.rs file
10
+ */
11
+ export function emitModRs(modules) {
12
+ modules.sort((a, b) => { return helpers.sortAscending(a.name, b.name); });
8
13
  let content = helpers.contentPreamble();
9
- if (crate.clients.length > 0) {
10
- content += 'pub mod clients;\n';
11
- }
12
- if (crate.enums.length > 0) {
13
- content += 'pub mod enums;\n';
14
- }
15
- if (crate.models.length > 0) {
16
- content += 'pub mod models;\n';
14
+ for (const module of modules) {
15
+ content += `${module.pub ? 'pub ' : ''}mod ${module.name};\n`;
17
16
  }
18
17
  return content;
19
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mod.js","sourceRoot":"","sources":["../../../src/codegen/mod.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AAGxC,wBAAwB;AACxB,MAAM,UAAU,OAAO,CAAC,KAAiB;IACvC,IAAI,OAAO,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IACxC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;QAC5B,OAAO,IAAI,oBAAoB,CAAC;KACjC;IACD,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;QAC1B,OAAO,IAAI,kBAAkB,CAAC;KAC/B;IACD,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;QAC3B,OAAO,IAAI,mBAAmB,CAAC;KAChC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"mod.js","sourceRoot":"","sources":["../../../src/codegen/mod.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAE/F,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AAGxC;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,OAA2B;IACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,OAAO,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1E,IAAI,OAAO,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IACxC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,OAAO,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,MAAM,CAAC,IAAI,KAAK,CAAC;IAChE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -1,4 +1,23 @@
1
1
  import { Context } from './context.js';
2
2
  import * as rust from '../codemodel/index.js';
3
- export declare function emitModels(crate: rust.Crate, context: Context): string;
3
+ /** contains different types of models to emit */
4
+ export interface Models {
5
+ /** models that are part of public surface area */
6
+ public?: string;
7
+ /** serde helpers for public models */
8
+ serde?: string;
9
+ /** models that are for internal use only */
10
+ internal?: string;
11
+ /** XML-specific helpers for internal use only */
12
+ xmlHelpers?: string;
13
+ }
14
+ /**
15
+ * returns the emitted model types, or empty if the
16
+ * crate contains no model types.
17
+ *
18
+ * @param crate the crate for which to emit models
19
+ * @param context the context for the provided crate
20
+ * @returns the model content or empty
21
+ */
22
+ export declare function emitModels(crate: rust.Crate, context: Context): Models;
4
23
  //# sourceMappingURL=models.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../src/codegen/models.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGvC,OAAO,KAAK,IAAI,MAAM,uBAAuB,CAAC;AAG9C,wBAAgB,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CA6CtE"}
1
+ {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../src/codegen/models.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGvC,OAAO,KAAK,IAAI,MAAM,uBAAuB,CAAC;AAE9C,iDAAiD;AACjD,MAAM,WAAW,MAAM;IACrB,kDAAkD;IAClD,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,iDAAiD;IACjD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAWtE"}