Skip to content

Commit

Permalink
fix(pandino): fix root cause of initial service tracking issues
Browse files Browse the repository at this point in the history
  • Loading branch information
noherczeg committed Feb 28, 2023
1 parent c126988 commit 7e2248d
Show file tree
Hide file tree
Showing 9 changed files with 1,871 additions and 802 deletions.
2,579 changes: 1,802 additions & 777 deletions examples/react-systemjs/package-lock.json

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions examples/react-systemjs/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,9 @@
"@rollup/plugin-json": "^6.0.0",
"@rollup/plugin-node-resolve": "^15.0.1",
"@rollup/plugin-replace": "^5.0.2",
"@rollup/plugin-terser": "^0.1.0",
"@rollup/plugin-typescript": "^9.0.2",
"@types/node": "^16.18.4",
"@rollup/plugin-terser": "^0.4.0",
"@rollup/plugin-typescript": "^11.0.0",
"@types/node": "^18.14.2",
"cross-env": "^7.0.3",
"dotenv": "^16.0.3",
"prettier": "^2.7.1",
Expand Down
17 changes: 17 additions & 0 deletions examples/react-systemjs/packages/app/src/main.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,23 @@ const pandino = new Pandino({
await pandino.init();
await pandino.start();

// export const ComponentOne: CustomComponent = (props) => {
// const [data, setData] = useState<{ firstName: string; lastName?: string }>({ ...props });
//
// return (
// <div className="component-one" style={{ border: '1px solid black', padding: '1rem' }}>
// <h3>Component One</h3>
// <p>FirstName: {data.firstName}</p>
// <p>LastName: {data.lastName}</p>
// </div>
// );
// };
//
// const reg = pandino.getBundleContext().registerService<CustomComponent>(CUSTOM_COMPONENT_INTERFACE_KEY, ComponentOne);
// window.setTimeout(() => {
// reg.unregister();
// }, 2000);

(async () => {
const componentOneBundle = await pandino.getBundleContext().installBundle('./component-one.system-manifest.json');
window.setTimeout(() => {
Expand Down
16 changes: 8 additions & 8 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 4 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,13 @@
"@rollup/plugin-node-resolve": "^15.0.1",
"@rollup/plugin-terser": "^0.4.0",
"@rollup/plugin-typescript": "^11.0.0",
"@types/jest": "^29.2.3",
"@types/jest": "^29.4.0",
"conventional-changelog-cli": "^2.2.2",
"jest": "^29.3.1",
"jest": "^29.4.3",
"prettier": "^2.8.4",
"rollup": "^3.15.0",
"rollup": "^3.17.3",
"rollup-plugin-clear": "^2.0.7",
"ts-jest": "^29.0.3",
"ts-jest": "^29.0.5",
"typescript": "^4.9.5"
},
"engines": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -241,6 +241,40 @@ describe('ServiceTrackerImpl', () => {
expect(addServ).toEqual(service);
});

it('track pre-registered service', async () => {
await preparePandino();

const service: TestService = {
sayHello(): string {
return 'Hello!';
},
};
const addingData: [ServiceProperties?, TestService?] = [];
const bundle1 = await installBundle(bundle1Headers);
bundle1.getBundleContext().registerService<TestService>(SERVICE_IDENTIFIER, service, {
prop1: 'test',
});
const tracker = bundle1.getBundleContext().trackService(parse('(prop1=test)'), {
addingService(reference: ServiceReference<TestService>): TestService {
const service = bundle1.getBundleContext().getService(reference);
addingData.push({ ...reference.getProperties() }, service);
return service;
},
});

tracker.open();

const [addProps, addServ] = addingData;

expect(addProps).toEqual({
...expectedBaseProps,
prop1: 'test',
});
expect(addServ).toEqual(service);

tracker.close();
});

it('tracker methods', async () => {
await preparePandino();

Expand Down
2 changes: 2 additions & 0 deletions packages/@pandino/pandino/src/pandino.ts
Original file line number Diff line number Diff line change
Expand Up @@ -567,6 +567,8 @@ export class Pandino extends BundleImpl implements Framework {
effectiveRefList.push(ref);
}
}
} else {
effectiveRefList.push(...refList);
}

if (effectiveRefList.length > 0) {
Expand Down
9 changes: 0 additions & 9 deletions packages/@pandino/react-hooks/src/useTrackService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,6 @@ export const useTrackService: ServiceTrackerHook = <T>(filter: string) => {
});

useEffect(() => {
const refs = bundleContext.getServiceReferences<T>(undefined, filter);

if (refs && refs.length) {
const svc = bundleContext.getService<T>(refs[0]);
setTracker({
service: svc,
});
}

const serviceTracker = bundleContext.trackService(filter, {
addingService(reference: ServiceReference<T>): T {
const service = bundleContext.getService<T>(reference);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,6 @@
},
"devDependencies": {
"webpack": "^5.75.0",
"webpack-cli": "^5.0.0"
"webpack-cli": "^5.0.1"
}
}

0 comments on commit 7e2248d

Please sign in to comment.