diff --git a/babel.config.cjs b/babel.config.cjs new file mode 100644 index 0000000..79d2391 --- /dev/null +++ b/babel.config.cjs @@ -0,0 +1,6 @@ +module.exports = { + presets: [ + ['@babel/preset-env', {targets: {node: 'current'}}], + '@babel/preset-typescript', + ], +}; diff --git a/docs/API/assets/main.d.ts b/docs/API/assets/main.d.ts new file mode 100644 index 0000000..e69de29 diff --git a/docs/API/assets/search.d.ts b/docs/API/assets/search.d.ts new file mode 100644 index 0000000..e69de29 diff --git a/docs/assets/js/search.d.ts b/docs/assets/js/search.d.ts new file mode 100644 index 0000000..bd6f097 --- /dev/null +++ b/docs/assets/js/search.d.ts @@ -0,0 +1,33 @@ +declare namespace typedoc { + namespace search { + namespace data { + const kinds: { + "32": string; + "64": string; + "128": string; + "256": string; + "512": string; + "1024": string; + "2048": string; + "65536": string; + "262144": string; + "4194304": string; + }; + const rows: ({ + id: number; + kind: number; + name: string; + url: string; + classes: string; + parent?: undefined; + } | { + id: number; + kind: number; + name: string; + url: string; + classes: string; + parent: string; + })[]; + } + } +} diff --git a/docs/scripts/linenumber.d.ts b/docs/scripts/linenumber.d.ts new file mode 100644 index 0000000..e69de29 diff --git a/docs/scripts/prettify/lang-css.d.ts b/docs/scripts/prettify/lang-css.d.ts new file mode 100644 index 0000000..e69de29 diff --git a/docs/scripts/prettify/prettify.d.ts b/docs/scripts/prettify/prettify.d.ts new file mode 100644 index 0000000..e57621f --- /dev/null +++ b/docs/scripts/prettify/prettify.d.ts @@ -0,0 +1 @@ +declare var q: any; diff --git a/docs/scripts/search.d.ts b/docs/scripts/search.d.ts new file mode 100644 index 0000000..e69de29 diff --git a/jest.config.ts b/jest.config.ts new file mode 100644 index 0000000..3f11958 --- /dev/null +++ b/jest.config.ts @@ -0,0 +1,3 @@ +export default { + roots: [ './src' ] +} diff --git a/out/scripts/linenumber.d.ts b/out/scripts/linenumber.d.ts new file mode 100644 index 0000000..e69de29 diff --git a/out/scripts/prettify/lang-css.d.ts b/out/scripts/prettify/lang-css.d.ts new file mode 100644 index 0000000..e69de29 diff --git a/out/scripts/prettify/prettify.d.ts b/out/scripts/prettify/prettify.d.ts new file mode 100644 index 0000000..e57621f --- /dev/null +++ b/out/scripts/prettify/prettify.d.ts @@ -0,0 +1 @@ +declare var q: any; diff --git a/package.json b/package.json index 6aa9bb7..45262dc 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,4 @@ { - "type": "module", "dependencies": { "@yanick/updeep": "link:../updeep", "lodash": "^4.17.15", @@ -7,7 +6,6 @@ "moize": "^6.1.0", "redux": "^4.0.5", "ts-action": "^11.0.0", - "ts-node": "^8.6.2", "updeep": "^1.2.1" }, "devDependencies": { @@ -15,6 +13,8 @@ "@babel/core": "^7.15.5", "@babel/plugin-transform-modules-commonjs": "^7.15.4", "@babel/preset-env": "^7.8.7", + "@babel/preset-typescript": "^7.15.0", + "@types/jest": "^27.0.2", "@types/lodash": "^4.14.149", "@types/sinon": "^7.5.2", "@typescript-eslint/eslint-plugin": "^2.23.0", @@ -29,12 +29,14 @@ "eslint-plugin-import": "^2.20.1", "eslint-plugin-prettier": "^3.1.2", "glob": "^7.1.6", + "jest": "^27.2.5", "jsdoc": "^3.6.7", "prettier": "^2.4.1", "promake": "^3.1.3", "sinon": "^9.0.1", "standard-version": "^8.0.0", "tap": "15", + "ts-node": "^8.10.2", "tsd": "^0.17.0", "typedoc": "0.22.5", "typescript": "^4.4.3" diff --git a/src/Updux.js b/src/Updux.ts similarity index 76% rename from src/Updux.js rename to src/Updux.ts index 2e18570..76e32e2 100644 --- a/src/Updux.js +++ b/src/Updux.ts @@ -2,17 +2,73 @@ import moize from 'moize'; import u from '@yanick/updeep'; import { createStore as reduxCreateStore, applyMiddleware } from 'redux'; -import { get, map, mapValues, merge, difference } from 'lodash-es'; +import { get, map, mapValues, merge, difference } from 'lodash'; -import { buildInitial } from './buildInitial/index.js'; -import { buildActions } from './buildActions/index.js'; -import { buildSelectors } from './buildSelectors/index.js'; -import { action } from './actions.js'; -import { buildUpreducer } from './buildUpreducer.js'; +import { buildInitial } from './buildInitial'; +import { buildActions } from './buildActions'; +import { buildSelectors } from './buildSelectors'; +import { action } from './actions'; +import { buildUpreducer } from './buildUpreducer'; import { buildMiddleware, augmentMiddlewareApi, -} from './buildMiddleware/index.js'; +} from './buildMiddleware'; + +import { Dict } from './types'; + +/** + * Configuration object typically passed to the constructor of the class Updux. + */ +export interface UpduxConfig { + /** + * Local initial state. + * @default {} + */ + initial?: TState; + + /** + * Subduxes to be merged to this dux. + */ + subduxes?: Dict; + + /** + * Local actions. + */ + actions?: Record; + + /** + * Local selectors. + */ + selectors?: Record; + + /** + * Local mutations + */ + mutations?: Record; + + /** + * Selectors to apply to the mapped subduxes. Only + * applicable if the dux is a mapping dux. + */ + mappedSelectors?: Record; + + /** + * Local effects. + */ + effects?: Record; + + /** + * Local reactions. + */ + reactions?: Function[]; + + /** + * If true, enables mapped reactions. Additionally, it can be + * a reaction function, which will treated as a regular + * reaction for the mapped dux. + */ + mappedReaction?: Function | boolean; +} export class Updux { /** @type { unknown } */ @@ -24,11 +80,11 @@ export class Updux { #selectors = {}; #mutations = {}; #effects = []; - #subscriptions = []; - #splatSelector = undefined; - #splatReaction = undefined; + #reactions = []; + #mappedSelectors = undefined; + #mappedReaction = undefined; - constructor(config) { + constructor(config: UpduxConfig) { this.#initial = config.initial ?? {}; this.#subduxes = config.subduxes ?? {}; @@ -49,7 +105,7 @@ export class Updux { } this.#selectors = config.selectors ?? {}; - this.#splatSelector = config.splatSelector; + this.#mappedSelectors = config.mappedSelectors; this.#mutations = config.mutations ?? {}; @@ -64,9 +120,9 @@ export class Updux { this.#effects = Object.entries(config.effects); } - this.#subscriptions = config.subscriptions ?? []; + this.#reactions = config.reactions ?? []; - this.#splatReaction = config.splatReaction; + this.#mappedReaction = config.mappedReaction; } #memoInitial = moize(buildInitial); @@ -75,12 +131,11 @@ export class Updux { #memoUpreducer = moize(buildUpreducer); #memoMiddleware = moize(buildMiddleware); - get subscriptions() { - return this.#subscriptions; - } - - setSplatSelector(name, f) { - this.#splatSelector = [name, f]; + setMappedSelector(name, f) { + this.#mappedSelectors = { + ...this.#mappedSelectors, + [name]: f, + } } get middleware() { @@ -107,7 +162,7 @@ export class Updux { get selectors() { return this.#memoSelectors( this.#selectors, - this.#splatSelector, + this.#mappedSelectors, this.#subduxes ); } @@ -125,7 +180,7 @@ export class Updux { } addSubscription(subscription) { - this.#subscriptions = [...this.#subscriptions, subscription]; + this.#reactions = [...this.#reactions, subscription]; } setAction(type, payloadFunc) { @@ -235,7 +290,7 @@ export class Updux { } subscribeAll(store) { - let results = this.#subscriptions.map((sub) => + let results = this.#reactions.map((sub) => this.subscribeTo(store, sub) ); @@ -249,14 +304,14 @@ export class Updux { } } - if (this.#splatReaction) { + if (this.#mappedReaction) { results.push( this.subscribeTo( store, this.splatSubscriber( store, this.#subduxes['*'], - this.#splatReaction + this.#mappedReaction ) ) ); @@ -271,11 +326,16 @@ export class Updux { } createStore(initial) { - const store = reduxCreateStore( + const store : { + getState: Function, + dispatch: Function, + selectors: Record, + actions: Record, + } = reduxCreateStore( this.reducer, initial ?? this.initial, applyMiddleware(this.middleware) - ); + ) as any; store.actions = this.actions; diff --git a/src/buildActions/index.js b/src/buildActions/index.ts similarity index 100% rename from src/buildActions/index.js rename to src/buildActions/index.ts diff --git a/src/buildInitial/index.js b/src/buildInitial/index.ts similarity index 84% rename from src/buildInitial/index.js rename to src/buildInitial/index.ts index 9f2b68b..568f7b0 100644 --- a/src/buildInitial/index.js +++ b/src/buildInitial/index.ts @@ -1,5 +1,5 @@ -import { isPlainObject, mapValues } from 'lodash-es'; -import u from '@yanick/updeep'; +import { isPlainObject, mapValues } from 'lodash'; +import u from 'updeep'; export function buildInitial(initial, subduxes = {}) { if (!isPlainObject(initial) && Object.keys(subduxes).length > 0) diff --git a/src/buildInitial/test.js b/src/buildInitial/test.js index aea9ab8..5a1eb12 100644 --- a/src/buildInitial/test.js +++ b/src/buildInitial/test.js @@ -1,6 +1,6 @@ import { test } from 'tap'; -import { buildInitial } from './index.js'; +import { buildInitial } from './index.ts'; test('basic', async (t) => { t.same(buildInitial({ a: 1 }, { b: { initial: { c: 2 } } }), { diff --git a/src/buildInitial/test.ts b/src/buildInitial/test.ts new file mode 100644 index 0000000..3118e04 --- /dev/null +++ b/src/buildInitial/test.ts @@ -0,0 +1,10 @@ +import { buildInitial } from '.'; + +test('basic', () => { + expect( + buildInitial({ a: 1 }, { b: { initial: { c: 2 } } }) + ).toMatchObject({ + a: 1, + b: { c: 2 }, + }); +}); diff --git a/src/buildMiddleware/index.js b/src/buildMiddleware/index.ts similarity index 96% rename from src/buildMiddleware/index.js rename to src/buildMiddleware/index.ts index e941244..2f7a47e 100644 --- a/src/buildMiddleware/index.js +++ b/src/buildMiddleware/index.ts @@ -1,5 +1,5 @@ -import u from '@yanick/updeep'; -import { mapValues, map, get } from 'lodash-es'; +import u from 'updeep'; +import { mapValues, map, get } from 'lodash'; import { Updux } from '../Updux.js'; const middlewareFor = (type, middleware) => (api) => (next) => (action) => { diff --git a/src/buildSelectors/index.js b/src/buildSelectors/index.ts similarity index 94% rename from src/buildSelectors/index.js rename to src/buildSelectors/index.ts index 98c9acd..1dc3478 100644 --- a/src/buildSelectors/index.js +++ b/src/buildSelectors/index.ts @@ -1,4 +1,4 @@ -import { map, mapValues, merge } from 'lodash-es'; +import { map, mapValues, merge } from 'lodash'; export function buildSelectors(localSelectors, splatSelector, subduxes) { const subSelectors = map(subduxes, ({ selectors }, slice) => { diff --git a/src/buildUpreducer.js b/src/buildUpreducer.js index 6486e19..ba53fba 100644 --- a/src/buildUpreducer.js +++ b/src/buildUpreducer.js @@ -1,5 +1,5 @@ -import u from '@yanick/updeep'; -import { mapValues } from 'lodash-es'; +import u from 'updeep'; +import { mapValues } from 'lodash'; export function buildUpreducer(initial, mutations, subduxes = {}) { const subReducers = diff --git a/src/documentation.test.js b/src/documentation.test.js deleted file mode 100644 index a62ed57..0000000 --- a/src/documentation.test.js +++ /dev/null @@ -1,50 +0,0 @@ -import { test } from 'tap'; -import u from 'updeep'; -import add from 'lodash/fp/add.js'; - -import { Updux } from './index.js'; - -test('README.md', async (t) => { - const otherDux = new Updux({}); - - const dux = new Updux({ - initial: { - counter: 0, - }, - actions: { - inc: null, - }, - subduxes: { - otherDux, - }, - }); - - dux.setMutation('inc', (increment) => u({ counter: add(increment) })); - - dux.addEffect('*', (api) => (next) => (action) => { - next(action); - }); - - const store = dux.createStore(); - - store.dispatch.inc(1); - - t.equal(store.getState().counter, 1); -}); - - -test('tutorial', async (t) => { - - const todosDux = new Updux({ - initial: { - next_id: 1, - todos: [], - } - }); - - todosDux.setAction( 'addTodo' ); - todosDux.setAction( 'todoDone' ); - - t.same( todosDux.actions.addTodo('write tutorial') , { type: 'addTodo', payload: 'write tutorial' }); - -}) diff --git a/src/index.d.ts b/src/index.d.ts deleted file mode 100644 index 25a85a1..0000000 --- a/src/index.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { Updux }; diff --git a/src/index.js b/src/index.js index e0135b8..9484e74 100644 --- a/src/index.js +++ b/src/index.js @@ -1,2 +1,2 @@ -export { Updux } from './Updux.js'; -export { action } from './actions.js'; +export { Updux } from './Updux'; +export { action } from './actions'; diff --git a/src/reducer.test.js b/src/reducer.test.js index 62421b2..62cd0e7 100644 --- a/src/reducer.test.js +++ b/src/reducer.test.js @@ -1,25 +1,24 @@ -import { test } from 'tap'; -import u from '@yanick/updeep'; +import u from 'updeep'; -import { Updux } from './Updux.js'; +import { Updux } from './Updux'; -test('basic reducer', async (t) => { +test('basic reducer', () => { const dux = new Updux({}); - t.type(dux.reducer, 'function'); + expect(typeof dux.reducer).toBe('function'); - t.same(dux.reducer({ a: 1 }, { type: 'foo' }), { a: 1 }, 'noop'); + expect(dux.reducer({ a: 1 }, { type: 'foo' })).toMatchObject({a:1}); // noop }); -test('basic upreducer', async (t) => { +test('basic upreducer', () => { const dux = new Updux({}); - t.type(dux.upreducer, 'function'); + expect(typeof dux.upreducer).toBe('function'); - t.same(dux.upreducer({ type: 'foo' })({ a: 1 }), { a: 1 }, 'noop'); + expect(dux.upreducer({type:'foo'})({ a: 1 })).toMatchObject({a:1}); // noop }); -test('reducer with action', async (t) => { +test('reducer with action', () => { const dux = new Updux({ actions: { inc: null, @@ -29,5 +28,5 @@ test('reducer with action', async (t) => { }, }); - t.same(dux.reducer({ a: 1 }, { type: 'inc' }), { a: 2 }); + expect(dux.reducer({ a: 1 }, { type: 'inc' })).toMatchObject({a:2}); }); diff --git a/src/types.ts b/src/types.ts new file mode 100644 index 0000000..8cfddb8 --- /dev/null +++ b/src/types.ts @@ -0,0 +1,2 @@ + +export type Dict = Record; diff --git a/tsconfig.json b/tsconfig.json index a22e7a1..daa9702 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,74 +1,19 @@ { - "include": ["./types/*.d.ts"], - "exclude": [ "types/index.test-d.ts" ], + "include": [ "./src" ], + "exclude": [ "./docs", "./dist" ], "compilerOptions": { - /* Visit https://aka.ms/tsconfig.json to read more about this file */ - - /* Basic Options */ - "incremental": false, /* Enable incremental compilation */ - "target": "es5", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', 'ES2021', or 'ESNEXT'. */ - "module": "ESNext", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */ - // "lib": [], /* Specify library files to be included in the compilation. */ - "allowJs": true, /* Allow javascript files to be compiled. */ - // "checkJs": true, /* Report errors in .js files. */ - // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', 'react', 'react-jsx' or 'react-jsxdev'. */ - "declaration": true, /* Generates corresponding '.d.ts' file. */ - // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ - // "sourceMap": true, /* Generates corresponding '.map' file. */ - // "outFile": "./", /* Concatenate and emit output to single file. */ - "outDir": "./ts-out", /* Redirect output structure to the directory. */ - // "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ - // "composite": true, /* Enable project compilation */ - // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ - // "removeComments": true, /* Do not emit comments to output. */ - "noEmit": true, /* Do not emit outputs. */ - // "importHelpers": true, /* Import emit helpers from 'tslib'. */ - // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ - // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ - - /* Strict Type-Checking Options */ - "strict": true, /* Enable all strict type-checking options. */ - // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ - // "strictNullChecks": true, /* Enable strict null checks. */ - // "strictFunctionTypes": true, /* Enable strict checking of function types. */ - // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ - // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ - // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ - // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ - - /* Additional Checks */ - // "noUnusedLocals": true, /* Report errors on unused locals. */ - // "noUnusedParameters": true, /* Report errors on unused parameters. */ - // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ - // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ - // "noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */ - // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an 'override' modifier. */ - // "noPropertyAccessFromIndexSignature": true, /* Require undeclared properties from index signatures to use element accesses. */ - - /* Module Resolution Options */ - "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ - // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ - // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ - "rootDirs": ["./types"], /* List of root folders whose combined content represents the structure of the project at runtime. */ - "typeRoots": ["./types"], /* List of folders to include type definitions from. */ - // "types": [], /* Type declaration files to be included in compilation. */ - // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ - "esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ - // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ - // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ - - /* Source Map Options */ - // "sourceRoot": "./types", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ - // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ - // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ - // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ - - /* Experimental Options */ - // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ - // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ - - /* Advanced Options */ - "skipLibCheck": true, /* Skip type checking of declaration files. */ - "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ + "rootDir": "src", + "outDir": "dist", + "target": "es2020", + "lib": [ + "es2020" + ], + "module": "ES2020", + "moduleResolution": "Node", + "strict": false, + "sourceMap": true, + "allowSyntheticDefaultImports": true, + "declaration": true, + "allowJs": true } } diff --git a/types/index.d.ts b/types/index.d.ts index d092e49..f4cd501 100644 --- a/types/index.d.ts +++ b/types/index.d.ts @@ -7,58 +7,6 @@ type Mutation = ( export * from './actions'; -/** - * Configuration object typically passed to the constructor of the class Updux. - */ -export interface UpduxConfig { - /** - * Local initial state. - * @default {} - */ - initial?: TState; - - /** - * Subduxes to be merged to this dux. - */ - subduxes?: Dict; - - /** - * Local actions. - */ - actions?: Record; - - /** - * Local selectors. - */ - selectors?: Record; - - /** - * Local mutations - */ - mutations?: Record; - - /** - * Selectors to apply to the mapped subduxes. Only - * applicable if the dux is a mapping dux. - */ - mappedSelectors?: Record; - - /** - * Local effects. - */ - effects?: Record; - - /** - * Local reactions. - */ - reactions?: Record; - /** - * If true, enables mapped reactions. Additionally, it can be - * a reaction function, which will treated as a regular - * reaction for the mapped dux. - */ - mappedReaction?: Function | boolean; -} export class Updux { constructor(config: Partial>); diff --git a/types/index.test-d.d.ts b/types/index.test-d.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/types/index.test-d.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/types/index.test-d.js b/types/index.test-d.js new file mode 100644 index 0000000..302e68f --- /dev/null +++ b/types/index.test-d.js @@ -0,0 +1,18 @@ +import { expectAssignable, expectType } from 'tsd'; +import { Updux, action } from '.'; +const dux = new Updux({}); +expectType(dux.initial); +() => { + const dux = new Updux({}); + expectAssignable(dux); +}; +// ActionGenerator +() => { + let a = action('a'); + expectAssignable(a); + expectAssignable(a); + let b = action('b', (() => ({}))); + const c = b("foo"); + expectAssignable(c); +}; +//# sourceMappingURL=index.test-d.js.map \ No newline at end of file diff --git a/types/index.test-d.js.map b/types/index.test-d.js.map new file mode 100644 index 0000000..1d2e61b --- /dev/null +++ b/types/index.test-d.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.test-d.js","sourceRoot":"","sources":["index.test-d.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,gBAAgB,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAE9D,OAAO,EAAE,KAAK,EAAmB,MAAM,EAAE,MAAM,GAAG,CAAC;AAEnD,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC;AAC1B,UAAU,CAAW,GAAG,CAAC,OAAO,CAAE,CAAC;AAGnC,GAAG,EAAE;IAED,MAAM,GAAG,GAAG,IAAI,KAAK,CAAc,EAAE,CAAC,CAAC;IAEvC,gBAAgB,CAAwB,GAAG,CAAC,CAAC;AACjD,CAAC,CAAA;AAED,kBAAkB;AAClB,GAAG,EAAE;IACD,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACpB,gBAAgB,CAAiB,CAAC,CAAC,CAAC;IACpC,gBAAgB,CAA4B,CAAC,CAAC,CAAC;IAE/C,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAkD,CAAE,CAAC;IACpF,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACnB,gBAAgB,CAA+B,CAAC,CAAC,CAAC;AAGtD,CAAC,CAAA"} \ No newline at end of file diff --git a/types/test.d.ts b/types/test.d.ts new file mode 100644 index 0000000..22b4797 --- /dev/null +++ b/types/test.d.ts @@ -0,0 +1 @@ +export var __esModule: boolean;