@alloy-js/csharp 0.18.0-dev.5 → 0.18.0-dev.6
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/dist/src/components/ClassDeclaration.d.ts +8 -2
- package/dist/src/components/ClassDeclaration.d.ts.map +1 -1
- package/dist/src/components/ClassDeclaration.js +3 -2
- package/dist/src/components/EnumDeclaration.d.ts +2 -2
- package/dist/src/components/EnumDeclaration.d.ts.map +1 -1
- package/dist/src/components/stc/index.d.ts +2 -2
- package/dist/src/components/stc/index.d.ts.map +1 -1
- package/dist/src/modifiers.d.ts +3 -2
- package/dist/src/modifiers.d.ts.map +1 -1
- package/dist/src/modifiers.js +7 -6
- package/dist/test/class.test.js +52 -10
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/components/ClassDeclaration.tsx +23 -4
- package/src/components/EnumDeclaration.tsx +2 -2
- package/src/modifiers.ts +22 -21
- package/temp/api.json +370 -176
- package/test/class.test.tsx +40 -10
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
import * as core from "@alloy-js/core";
|
|
2
2
|
import { AccessModifiers } from "../modifiers.js";
|
|
3
3
|
import { ParameterProps } from "./Parameters.jsx";
|
|
4
|
-
export interface
|
|
4
|
+
export interface ClassModifiers {
|
|
5
|
+
readonly abstract?: boolean;
|
|
6
|
+
readonly partial?: boolean;
|
|
7
|
+
readonly sealed?: boolean;
|
|
8
|
+
readonly static?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export interface ClassDeclarationProps extends Omit<core.DeclarationProps, "nameKind">, AccessModifiers, ClassModifiers {
|
|
5
11
|
name: string;
|
|
6
12
|
refkey?: core.Refkey;
|
|
7
13
|
typeParameters?: Record<string, core.Refkey>;
|
|
@@ -30,7 +36,7 @@ export interface ClassProps extends Omit<core.DeclarationProps, "nameKind">, Acc
|
|
|
30
36
|
* }
|
|
31
37
|
* ```
|
|
32
38
|
*/
|
|
33
|
-
export declare function ClassDeclaration(props:
|
|
39
|
+
export declare function ClassDeclaration(props: ClassDeclarationProps): core.Children;
|
|
34
40
|
export interface ClassConstructorProps extends AccessModifiers {
|
|
35
41
|
parameters?: Array<ParameterProps>;
|
|
36
42
|
refkey?: core.Refkey;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClassDeclaration.d.ts","sourceRoot":"","sources":["../../../src/components/ClassDeclaration.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAC;AACvC,OAAO,EACL,eAAe,
|
|
1
|
+
{"version":3,"file":"ClassDeclaration.d.ts","sourceRoot":"","sources":["../../../src/components/ClassDeclaration.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAC;AACvC,OAAO,EACL,eAAe,EAIhB,MAAM,iBAAiB,CAAC;AAKzB,OAAO,EAAE,cAAc,EAAc,MAAM,kBAAkB,CAAC;AAE9D,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAUD,MAAM,WAAW,qBACf,SAAQ,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC,EAC7C,eAAe,EACf,cAAc;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;CAC9C;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,iBAwD5D;AAED,MAAM,WAAW,qBAAsB,SAAQ,eAAe;IAC5D,UAAU,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;IACnC,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC;IAC3B,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC;CAC1B;AAGD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,iBAkC5D;AAGD,MAAM,WAAW,gBAAiB,SAAQ,eAAe;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC;IACpB,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC;CACtB;AAGD,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,iBAyBlD"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { createComponent as _$createComponent, createIntrinsic as _$createIntrinsic, memo as _$memo } from "@alloy-js/core/jsx-runtime";
|
|
2
2
|
import * as core from "@alloy-js/core";
|
|
3
|
-
import { computeModifiersPrefix, getAccessModifier } from "../modifiers.js";
|
|
3
|
+
import { computeModifiersPrefix, getAccessModifier, makeModifiers } from "../modifiers.js";
|
|
4
4
|
import { useCSharpNamePolicy } from "../name-policy.js";
|
|
5
5
|
import { CSharpOutputSymbol } from "../symbols/csharp-output-symbol.js";
|
|
6
6
|
import { CSharpMemberScope, useCSharpScope } from "../symbols/scopes.js";
|
|
7
7
|
import { Name } from "./Name.js";
|
|
8
8
|
import { Parameters } from "./Parameters.js";
|
|
9
|
+
const getClassModifiers = makeModifiers(["abstract", "partial", "sealed", "static"]);
|
|
9
10
|
|
|
10
11
|
// properties for creating a class
|
|
11
12
|
|
|
@@ -69,7 +70,7 @@ export function ClassDeclaration(props) {
|
|
|
69
70
|
}
|
|
70
71
|
});
|
|
71
72
|
}
|
|
72
|
-
const modifiers = computeModifiersPrefix([getAccessModifier(props)]);
|
|
73
|
+
const modifiers = computeModifiersPrefix([getAccessModifier(props), getClassModifiers(props)]);
|
|
73
74
|
return _$createComponent(core.Declaration, {
|
|
74
75
|
symbol: thisClassSymbol,
|
|
75
76
|
get children() {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as core from "@alloy-js/core";
|
|
2
2
|
import { AccessModifiers } from "../modifiers.js";
|
|
3
|
-
export interface
|
|
3
|
+
export interface EnumDeclarationProps extends AccessModifiers {
|
|
4
4
|
name: string;
|
|
5
5
|
refkey?: core.Refkey;
|
|
6
6
|
children?: core.Children;
|
|
@@ -25,7 +25,7 @@ export interface EnumProps extends AccessModifiers {
|
|
|
25
25
|
* }
|
|
26
26
|
* ```
|
|
27
27
|
*/
|
|
28
|
-
export declare function EnumDeclaration(props:
|
|
28
|
+
export declare function EnumDeclaration(props: EnumDeclarationProps): core.Children;
|
|
29
29
|
export interface EnumMemberProps {
|
|
30
30
|
name: string;
|
|
31
31
|
refkey?: core.Refkey;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EnumDeclaration.d.ts","sourceRoot":"","sources":["../../../src/components/EnumDeclaration.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAC;AACvC,OAAO,EACL,eAAe,EAGhB,MAAM,iBAAiB,CAAC;AAOzB,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"EnumDeclaration.d.ts","sourceRoot":"","sources":["../../../src/components/EnumDeclaration.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAC;AACvC,OAAO,EACL,eAAe,EAGhB,MAAM,iBAAiB,CAAC;AAOzB,MAAM,WAAW,oBAAqB,SAAQ,eAAe;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,iBAgC1D;AAGD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC;CACtB;AAGD,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,iBAmBhD"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as core from "@alloy-js/core";
|
|
2
2
|
import * as base from "../index.js";
|
|
3
|
-
export declare const ClassDeclaration: core.StcSignature<base.
|
|
3
|
+
export declare const ClassDeclaration: core.StcSignature<base.ClassDeclarationProps>;
|
|
4
4
|
export declare const ClassConstructor: core.StcSignature<base.ClassConstructorProps>;
|
|
5
5
|
export declare const ClassMember: core.StcSignature<base.ClassMemberProps>;
|
|
6
6
|
export declare const ClassMethod: core.StcSignature<base.ClassMethodProps>;
|
|
7
|
-
export declare const EnumDeclaration: core.StcSignature<base.
|
|
7
|
+
export declare const EnumDeclaration: core.StcSignature<base.EnumDeclarationProps>;
|
|
8
8
|
export declare const EnumMember: core.StcSignature<base.EnumMemberProps>;
|
|
9
9
|
export declare const Parameter: core.StcSignature<base.ParameterProps>;
|
|
10
10
|
export declare const Parameters: core.StcSignature<base.ParametersProps>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/stc/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,aAAa,CAAC;AAEpC,eAAO,MAAM,gBAAgB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/stc/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,aAAa,CAAC;AAEpC,eAAO,MAAM,gBAAgB,+CAAkC,CAAC;AAChE,eAAO,MAAM,gBAAgB,+CAAkC,CAAC;AAChE,eAAO,MAAM,WAAW,0CAA6B,CAAC;AACtD,eAAO,MAAM,WAAW,0CAA6B,CAAC;AACtD,eAAO,MAAM,eAAe,8CAAiC,CAAC;AAC9D,eAAO,MAAM,UAAU,yCAA4B,CAAC;AACpD,eAAO,MAAM,SAAS,wCAA2B,CAAC;AAClD,eAAO,MAAM,UAAU,yCAA4B,CAAC;AACpD,eAAO,MAAM,gBAAgB,+CAAkC,CAAC;AAChE,eAAO,MAAM,cAAc,6CAAgC,CAAC"}
|
package/dist/src/modifiers.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ export interface AccessModifiers {
|
|
|
6
6
|
readonly internal?: boolean;
|
|
7
7
|
readonly file?: boolean;
|
|
8
8
|
}
|
|
9
|
-
export declare
|
|
9
|
+
export declare const getAccessModifier: (data: AccessModifiers) => string;
|
|
10
10
|
/** Method modifiers. Can only be one. */
|
|
11
11
|
export interface MethodModifiers {
|
|
12
12
|
readonly abstract?: boolean;
|
|
@@ -14,8 +14,9 @@ export interface MethodModifiers {
|
|
|
14
14
|
readonly static?: boolean;
|
|
15
15
|
readonly virtual?: boolean;
|
|
16
16
|
}
|
|
17
|
-
export declare
|
|
17
|
+
export declare const getMethodModifier: (data: MethodModifiers) => string;
|
|
18
18
|
export declare function getAsyncModifier(async?: boolean): string;
|
|
19
19
|
/** Resolve the modifier prefix */
|
|
20
20
|
export declare function computeModifiersPrefix(modifiers: Array<string | undefined>): string;
|
|
21
|
+
export declare function makeModifiers<T>(obj: Array<keyof T>): (data: T) => string;
|
|
21
22
|
//# sourceMappingURL=modifiers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modifiers.d.ts","sourceRoot":"","sources":["../../src/modifiers.ts"],"names":[],"mappings":"AAGA,yBAAyB;AACzB,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,
|
|
1
|
+
{"version":3,"file":"modifiers.d.ts","sourceRoot":"","sources":["../../src/modifiers.ts"],"names":[],"mappings":"AAGA,yBAAyB;AACzB,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,eAAO,MAAM,iBAAiB,mCAM5B,CAAC;AAEH,yCAAyC;AACzC,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,eAAO,MAAM,iBAAiB,mCAK5B,CAAC;AAEH,wBAAgB,gBAAgB,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAExD;AAED,kCAAkC;AAClC,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,GACnC,MAAM,CAGR;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,IAC1C,MAAM,CAAC,YAMhB"}
|
package/dist/src/modifiers.js
CHANGED
|
@@ -3,15 +3,11 @@
|
|
|
3
3
|
|
|
4
4
|
/** Access modifiers. */
|
|
5
5
|
|
|
6
|
-
export
|
|
7
|
-
return [data.public && "public", data.protected && "protected", data.private && "private", data.internal && "internal", data.file && "file"].filter(x => x).join(" ");
|
|
8
|
-
}
|
|
6
|
+
export const getAccessModifier = makeModifiers(["public", "protected", "private", "internal", "file"]);
|
|
9
7
|
|
|
10
8
|
/** Method modifiers. Can only be one. */
|
|
11
9
|
|
|
12
|
-
export
|
|
13
|
-
return [data.abstract && "abstract", data.sealed && "sealed", data.static && "static", data.virtual && "virtual"].filter(x => x).join(" ");
|
|
14
|
-
}
|
|
10
|
+
export const getMethodModifier = makeModifiers(["abstract", "sealed", "static", "virtual"]);
|
|
15
11
|
export function getAsyncModifier(async) {
|
|
16
12
|
return async ? "async" : "";
|
|
17
13
|
}
|
|
@@ -20,4 +16,9 @@ export function getAsyncModifier(async) {
|
|
|
20
16
|
export function computeModifiersPrefix(modifiers) {
|
|
21
17
|
const resolved = modifiers.filter(x => x);
|
|
22
18
|
return resolved.length > 0 ? resolved.join(" ") + " " : "";
|
|
19
|
+
}
|
|
20
|
+
export function makeModifiers(obj) {
|
|
21
|
+
return data => {
|
|
22
|
+
return obj.map(key => data[key] ? key : undefined).filter(x => x).join(" ");
|
|
23
|
+
};
|
|
23
24
|
}
|
package/dist/test/class.test.js
CHANGED
|
@@ -1,21 +1,63 @@
|
|
|
1
|
-
import { createComponent as _$createComponent, createIntrinsic as _$createIntrinsic } from "@alloy-js/core/jsx-runtime";
|
|
1
|
+
import { createComponent as _$createComponent, mergeProps as _$mergeProps, createIntrinsic as _$createIntrinsic } from "@alloy-js/core/jsx-runtime";
|
|
2
2
|
import * as core from "@alloy-js/core";
|
|
3
3
|
import * as coretest from "@alloy-js/core/testing";
|
|
4
|
-
import { expect, it } from "vitest";
|
|
4
|
+
import { describe, expect, it } from "vitest";
|
|
5
5
|
import * as csharp from "../src/index.js";
|
|
6
|
+
import { ClassDeclaration } from "../src/index.js";
|
|
6
7
|
import * as utils from "./utils.js";
|
|
7
8
|
it("declares class with no members", () => {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
namespace TestCode
|
|
14
|
-
{
|
|
15
|
-
public class TestClass;
|
|
9
|
+
expect(_$createComponent(utils.TestNamespace, {
|
|
10
|
+
get children() {
|
|
11
|
+
return _$createComponent(ClassDeclaration, {
|
|
12
|
+
name: "TestClass"
|
|
13
|
+
});
|
|
16
14
|
}
|
|
15
|
+
})).toRenderTo(`
|
|
16
|
+
class TestClass;
|
|
17
17
|
`);
|
|
18
18
|
});
|
|
19
|
+
describe("modifiers", () => {
|
|
20
|
+
it.each(["public", "private"])("%s", mod => {
|
|
21
|
+
expect(_$createComponent(utils.TestNamespace, {
|
|
22
|
+
get children() {
|
|
23
|
+
return _$createComponent(ClassDeclaration, _$mergeProps({
|
|
24
|
+
[mod]: true
|
|
25
|
+
}, {
|
|
26
|
+
name: "TestClass"
|
|
27
|
+
}));
|
|
28
|
+
}
|
|
29
|
+
})).toRenderTo(`
|
|
30
|
+
${mod} class TestClass;
|
|
31
|
+
`);
|
|
32
|
+
});
|
|
33
|
+
it.each(["partial", "abstract", "static", "sealed"])("%s", mod => {
|
|
34
|
+
expect(_$createComponent(utils.TestNamespace, {
|
|
35
|
+
get children() {
|
|
36
|
+
return _$createComponent(ClassDeclaration, _$mergeProps({
|
|
37
|
+
[mod]: true
|
|
38
|
+
}, {
|
|
39
|
+
name: "TestClass"
|
|
40
|
+
}));
|
|
41
|
+
}
|
|
42
|
+
})).toRenderTo(`
|
|
43
|
+
${mod} class TestClass;
|
|
44
|
+
`);
|
|
45
|
+
});
|
|
46
|
+
it("combines modifiers", () => {
|
|
47
|
+
expect(_$createComponent(utils.TestNamespace, {
|
|
48
|
+
get children() {
|
|
49
|
+
return _$createComponent(ClassDeclaration, {
|
|
50
|
+
"public": true,
|
|
51
|
+
abstract: true,
|
|
52
|
+
partial: true,
|
|
53
|
+
name: "TestClass"
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
})).toRenderTo(`
|
|
57
|
+
public abstract partial class TestClass;
|
|
58
|
+
`);
|
|
59
|
+
});
|
|
60
|
+
});
|
|
19
61
|
it("declares class with some members", () => {
|
|
20
62
|
const res = utils.toSourceText(_$createComponent(csharp.ClassDeclaration, {
|
|
21
63
|
"public": true,
|