From fc4fe2fc3d12f188b5ffdaf95371ca3a7022a885 Mon Sep 17 00:00:00 2001 From: Dan Lynch Date: Wed, 30 Oct 2024 10:57:19 -0700 Subject: [PATCH] updates --- __fixtures__/decorators/src/class.ts | 7 ++++-- __fixtures__/decorators/src/index.ts | 7 ++++-- __output__/decorators/bundle.js | 3 +++ __output__/decorators/bundle.js.map | 4 ++-- __output__/decorators/decorators.json | 32 ++++++++++++++++++--------- packages/build/src/decorators.ts | 4 ++-- 6 files changed, 39 insertions(+), 18 deletions(-) diff --git a/__fixtures__/decorators/src/class.ts b/__fixtures__/decorators/src/class.ts index 3bf9b8f..483cc07 100644 --- a/__fixtures__/decorators/src/class.ts +++ b/__fixtures__/decorators/src/class.ts @@ -1,4 +1,4 @@ -import { admin, creator } from '@hyperweb/decorators'; +import { admin, creator, external, internal } from '@hyperweb/decorators'; import { BigNumber } from 'jsd-std'; export interface State { @@ -13,11 +13,14 @@ export class Counter { } // Public by default (no decorator needed) + @external + @admin public getCount(): BigNumber { return this.state.count; } - + // Only admin and creator can increment + @internal @admin public increment(amount: BigNumber): void { this.state.count = this.state.count.add(amount); diff --git a/__fixtures__/decorators/src/index.ts b/__fixtures__/decorators/src/index.ts index 6a15ab2..8a3bce7 100644 --- a/__fixtures__/decorators/src/index.ts +++ b/__fixtures__/decorators/src/index.ts @@ -1,9 +1,12 @@ export * from './class'; export * from './object'; class MyClass { - @log('debug') + @permission('debug', 'level') @performance async fetchData() { // ... method implementation } -} \ No newline at end of file +} + +export default MyClass; +export {MyClass}; \ No newline at end of file diff --git a/__output__/decorators/bundle.js b/__output__/decorators/bundle.js index 82740a0..60d0183 100644 --- a/__output__/decorators/bundle.js +++ b/__output__/decorators/bundle.js @@ -47,8 +47,11 @@ var MyClass = class { async fetchData() { } }; +var src_default = MyClass; export { Counter, + MyClass, + src_default as default, start }; //# sourceMappingURL=bundle.js.map diff --git a/__output__/decorators/bundle.js.map b/__output__/decorators/bundle.js.map index 5558753..5d35b25 100644 --- a/__output__/decorators/bundle.js.map +++ b/__output__/decorators/bundle.js.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["../../__fixtures__/decorators/src/class.ts", "../../__fixtures__/decorators/src/object.ts", "../../__fixtures__/decorators/src/index.ts"], - "sourcesContent": ["import { admin, creator } from '@hyperweb/decorators';\nimport { BigNumber } from 'jsd-std';\nexport interface State {\n count: BigNumber;\n}\nexport class Counter {\n private state: State;\n constructor(initialState: State) {\n this.state.count = initialState;\n }\n\n // Public by default (no decorator needed)\n public getCount(): BigNumber {\n return this.state.count;\n }\n\n // Only admin and creator can increment\n public increment(amount: BigNumber): void {\n this.state.count = this.state.count.add(amount);\n }\n\n // Only creator can decrement\n public decrement(amount: BigNumber): void {\n if (this.state.count.lt(amount)) {\n throw new Error('Count cannot be negative');\n }\n this.state.count = this.state.count.sub(amount);\n }\n}", "import { BigNumber } from \"jsd-std\";\n\ninterface State {\n count: BigNumber;\n}\n\n// Core contract logic\nexport const start = (initialCount: BigNumber) => {\n let state: State = {\n count: initialCount\n };\n\n // HOW TO EVEN DO DECORATORS\n return {\n getCount: () => state.count,\n \n increment: (amount: BigNumber) => {\n state.count = state.count.add(amount);\n return state.count;\n },\n \n decrement: (amount: BigNumber) => {\n if (state.count.lt(amount)) {\n throw new Error(\"Count cannot be negative\");\n }\n state.count = state.count.sub(amount);\n return state.count;\n }\n };\n};", "export * from './class';\nexport * from './object';\nclass MyClass {\n async fetchData() {\n // ... method implementation\n }\n}"], - "mappings": ";AAKO,IAAM,UAAN,MAAc;AAAA,EACX;AAAA,EACR,YAAY,cAAqB;AAC/B,SAAK,MAAM,QAAQ;AAAA,EACrB;AAAA;AAAA,EAGO,WAAsB;AAC3B,WAAO,KAAK,MAAM;AAAA,EACpB;AAAA;AAAA,EAGO,UAAU,QAAyB;AACxC,SAAK,MAAM,QAAQ,KAAK,MAAM,MAAM,IAAI,MAAM;AAAA,EAChD;AAAA;AAAA,EAGO,UAAU,QAAyB;AACxC,QAAI,KAAK,MAAM,MAAM,GAAG,MAAM,GAAG;AAC/B,YAAM,IAAI,MAAM,0BAA0B;AAAA,IAC5C;AACA,SAAK,MAAM,QAAQ,KAAK,MAAM,MAAM,IAAI,MAAM;AAAA,EAChD;AACF;;;ACrBO,IAAM,QAAQ,CAAC,iBAA4B;AAChD,MAAI,QAAe;AAAA,IACjB,OAAO;AAAA,EACT;AAGA,SAAO;AAAA,IACL,UAAU,MAAM,MAAM;AAAA,IAEtB,WAAW,CAAC,WAAsB;AAChC,YAAM,QAAQ,MAAM,MAAM,IAAI,MAAM;AACpC,aAAO,MAAM;AAAA,IACf;AAAA,IAEA,WAAW,CAAC,WAAsB;AAChC,UAAI,MAAM,MAAM,GAAG,MAAM,GAAG;AAC1B,cAAM,IAAI,MAAM,0BAA0B;AAAA,MAC5C;AACA,YAAM,QAAQ,MAAM,MAAM,IAAI,MAAM;AACpC,aAAO,MAAM;AAAA,IACf;AAAA,EACF;AACF;;;AC3BA,IAAM,UAAN,MAAc;AAAA,EACZ,MAAM,YAAY;AAAA,EAElB;AACF;", + "sourcesContent": ["import { admin, creator, external, internal } from '@hyperweb/decorators';\nimport { BigNumber } from 'jsd-std';\nexport interface State {\n count: BigNumber;\n}\nexport class Counter {\n private state: State;\n constructor(initialState: State) {\n this.state.count = initialState;\n }\n\n // Public by default (no decorator needed)\n public getCount(): BigNumber {\n return this.state.count;\n }\n\n // Only admin and creator can increment\n public increment(amount: BigNumber): void {\n this.state.count = this.state.count.add(amount);\n }\n\n // Only creator can decrement\n public decrement(amount: BigNumber): void {\n if (this.state.count.lt(amount)) {\n throw new Error('Count cannot be negative');\n }\n this.state.count = this.state.count.sub(amount);\n }\n}", "import { BigNumber } from \"jsd-std\";\n\ninterface State {\n count: BigNumber;\n}\n\n// Core contract logic\nexport const start = (initialCount: BigNumber) => {\n let state: State = {\n count: initialCount\n };\n\n // HOW TO EVEN DO DECORATORS\n return {\n getCount: () => state.count,\n \n increment: (amount: BigNumber) => {\n state.count = state.count.add(amount);\n return state.count;\n },\n \n decrement: (amount: BigNumber) => {\n if (state.count.lt(amount)) {\n throw new Error(\"Count cannot be negative\");\n }\n state.count = state.count.sub(amount);\n return state.count;\n }\n };\n};", "export * from './class';\nexport * from './object';\nclass MyClass {\n async fetchData() {\n // ... method implementation\n }\n}\nexport default MyClass;\nexport { MyClass };"], + "mappings": ";AAKO,IAAM,UAAN,MAAc;AAAA,EACX;AAAA,EACR,YAAY,cAAqB;AAC/B,SAAK,MAAM,QAAQ;AAAA,EACrB;AAAA;AAAA,EAGO,WAAsB;AAC3B,WAAO,KAAK,MAAM;AAAA,EACpB;AAAA;AAAA,EAGO,UAAU,QAAyB;AACxC,SAAK,MAAM,QAAQ,KAAK,MAAM,MAAM,IAAI,MAAM;AAAA,EAChD;AAAA;AAAA,EAGO,UAAU,QAAyB;AACxC,QAAI,KAAK,MAAM,MAAM,GAAG,MAAM,GAAG;AAC/B,YAAM,IAAI,MAAM,0BAA0B;AAAA,IAC5C;AACA,SAAK,MAAM,QAAQ,KAAK,MAAM,MAAM,IAAI,MAAM;AAAA,EAChD;AACF;;;ACrBO,IAAM,QAAQ,CAAC,iBAA4B;AAChD,MAAI,QAAe;AAAA,IACjB,OAAO;AAAA,EACT;AAGA,SAAO;AAAA,IACL,UAAU,MAAM,MAAM;AAAA,IAEtB,WAAW,CAAC,WAAsB;AAChC,YAAM,QAAQ,MAAM,MAAM,IAAI,MAAM;AACpC,aAAO,MAAM;AAAA,IACf;AAAA,IAEA,WAAW,CAAC,WAAsB;AAChC,UAAI,MAAM,MAAM,GAAG,MAAM,GAAG;AAC1B,cAAM,IAAI,MAAM,0BAA0B;AAAA,MAC5C;AACA,YAAM,QAAQ,MAAM,MAAM,IAAI,MAAM;AACpC,aAAO,MAAM;AAAA,IACf;AAAA,EACF;AACF;;;AC3BA,IAAM,UAAN,MAAc;AAAA,EACZ,MAAM,YAAY;AAAA,EAElB;AACF;AACA,IAAO,cAAQ;", "names": [] } diff --git a/__output__/decorators/decorators.json b/__output__/decorators/decorators.json index 84081df..428186b 100644 --- a/__output__/decorators/decorators.json +++ b/__output__/decorators/decorators.json @@ -1,32 +1,44 @@ { "../../__fixtures__/decorators/src/index.ts": [ { - "name": "log", + "name": "permission", "args": [ - "debug" + "debug", + "level" ], - "targetName": "fetchData", - "targetType": "method" + "targetName": "fetchData" }, { "name": "performance", "args": [], - "targetName": "fetchData", - "targetType": "method" + "targetName": "fetchData" } ], "../../__fixtures__/decorators/src/class.ts": [ + { + "name": "external", + "args": [], + "targetName": "getCount" + }, + { + "name": "admin", + "args": [], + "targetName": "getCount" + }, + { + "name": "internal", + "args": [], + "targetName": "increment" + }, { "name": "admin", "args": [], - "targetName": "increment", - "targetType": "method" + "targetName": "increment" }, { "name": "creator", "args": [], - "targetName": "decrement", - "targetType": "method" + "targetName": "decrement" } ] } \ No newline at end of file diff --git a/packages/build/src/decorators.ts b/packages/build/src/decorators.ts index af518b7..a515e94 100644 --- a/packages/build/src/decorators.ts +++ b/packages/build/src/decorators.ts @@ -11,7 +11,7 @@ interface DecoratorInfo { name: string; args: any[]; targetName: string; - targetType: 'method' | 'function'; + targetType?: 'method' | 'function'; location?: { file: string; line: number; @@ -102,7 +102,7 @@ export const createDecoratorExtractorPlugin = ( ? (parent.key as t.Identifier).name : (parent as t.FunctionDeclaration).id?.name || 'anonymous', // @ts-ignore - targetType: t.isClassMethod(parent) ? 'method' : 'function', + // targetType: t.isClassMethod(parent) ? 'method' : 'function', // location: { // file: normalizedPath,