@backstage-community/plugin-announcements 0.3.0 → 0.4.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # @backstage-community/plugin-announcements
2
2
 
3
+ ## 0.4.0
4
+
5
+ ### Minor Changes
6
+
7
+ - f253ff9: **breaking** - previously deprecated exports have been removed
8
+
9
+ ### Patch Changes
10
+
11
+ - Updated dependencies [f253ff9]
12
+ - @backstage-community/plugin-announcements-react@0.3.1
13
+
3
14
  ## 0.3.0
4
15
 
5
16
  ### Minor Changes
@@ -1,6 +1,5 @@
1
1
  import { ApiBlueprint, createApiFactory, discoveryApiRef, identityApiRef, fetchApiRef, errorApiRef } from '@backstage/frontend-plugin-api';
2
- import { announcementsApiRef } from '@backstage-community/plugin-announcements-react';
3
- import { AnnouncementsClient } from '../api.esm.js';
2
+ import { announcementsApiRef, AnnouncementsClient } from '@backstage-community/plugin-announcements-react';
4
3
 
5
4
  const announcementsApiExtension = ApiBlueprint.make({
6
5
  params: {
@@ -1 +1 @@
1
- {"version":3,"file":"apis.esm.js","sources":["../../src/alpha/apis.ts"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n ApiBlueprint,\n createApiFactory,\n discoveryApiRef,\n errorApiRef,\n fetchApiRef,\n identityApiRef,\n} from '@backstage/frontend-plugin-api';\nimport { announcementsApiRef } from '@backstage-community/plugin-announcements-react';\nimport { AnnouncementsClient } from '../api';\n\n/**\n * @alpha\n */\nexport const announcementsApiExtension = ApiBlueprint.make({\n params: {\n factory: createApiFactory({\n api: announcementsApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n identityApi: identityApiRef,\n fetchApi: fetchApiRef,\n errorApi: errorApiRef,\n },\n factory: ({ discoveryApi, identityApi, fetchApi, errorApi }) =>\n new AnnouncementsClient({\n discoveryApi,\n identityApi,\n fetchApi,\n errorApi,\n }),\n }),\n },\n});\n"],"names":[],"mappings":";;;;AA6Ba,MAAA,yBAAA,GAA4B,aAAa,IAAK,CAAA;AAAA,EACzD,MAAQ,EAAA;AAAA,IACN,SAAS,gBAAiB,CAAA;AAAA,MACxB,GAAK,EAAA,mBAAA;AAAA,MACL,IAAM,EAAA;AAAA,QACJ,YAAc,EAAA,eAAA;AAAA,QACd,WAAa,EAAA,cAAA;AAAA,QACb,QAAU,EAAA,WAAA;AAAA,QACV,QAAU,EAAA;AAAA,OACZ;AAAA,MACA,OAAA,EAAS,CAAC,EAAE,YAAA,EAAc,aAAa,QAAU,EAAA,QAAA,EAC/C,KAAA,IAAI,mBAAoB,CAAA;AAAA,QACtB,YAAA;AAAA,QACA,WAAA;AAAA,QACA,QAAA;AAAA,QACA;AAAA,OACD;AAAA,KACJ;AAAA;AAEL,CAAC;;;;"}
1
+ {"version":3,"file":"apis.esm.js","sources":["../../src/alpha/apis.ts"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n ApiBlueprint,\n createApiFactory,\n discoveryApiRef,\n errorApiRef,\n fetchApiRef,\n identityApiRef,\n} from '@backstage/frontend-plugin-api';\nimport {\n announcementsApiRef,\n AnnouncementsClient,\n} from '@backstage-community/plugin-announcements-react';\n\n/**\n * @alpha\n */\nexport const announcementsApiExtension = ApiBlueprint.make({\n params: {\n factory: createApiFactory({\n api: announcementsApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n identityApi: identityApiRef,\n fetchApi: fetchApiRef,\n errorApi: errorApiRef,\n },\n factory: ({ discoveryApi, identityApi, fetchApi, errorApi }) =>\n new AnnouncementsClient({\n discoveryApi,\n identityApi,\n fetchApi,\n errorApi,\n }),\n }),\n },\n});\n"],"names":[],"mappings":";;;AA+Ba,MAAA,yBAAA,GAA4B,aAAa,IAAK,CAAA;AAAA,EACzD,MAAQ,EAAA;AAAA,IACN,SAAS,gBAAiB,CAAA;AAAA,MACxB,GAAK,EAAA,mBAAA;AAAA,MACL,IAAM,EAAA;AAAA,QACJ,YAAc,EAAA,eAAA;AAAA,QACd,WAAa,EAAA,cAAA;AAAA,QACb,QAAU,EAAA,WAAA;AAAA,QACV,QAAU,EAAA;AAAA,OACZ;AAAA,MACA,OAAA,EAAS,CAAC,EAAE,YAAA,EAAc,aAAa,QAAU,EAAA,QAAA,EAC/C,KAAA,IAAI,mBAAoB,CAAA;AAAA,QACtB,YAAA;AAAA,QACA,WAAA;AAAA,QACA,QAAA;AAAA,QACA;AAAA,OACD;AAAA,KACJ;AAAA;AAEL,CAAC;;;;"}
package/dist/index.d.ts CHANGED
@@ -1,11 +1,9 @@
1
1
  /// <reference types="react" />
2
- import * as _backstage_core_plugin_api_index from '@backstage/core-plugin-api/index';
3
2
  import * as _backstage_core_components_index from '@backstage/core-components/index';
4
3
  import * as react from 'react';
5
4
  import { IndexableDocument, ResultHighlight } from '@backstage/plugin-search-common';
6
5
  import * as _backstage_core_plugin_api from '@backstage/core-plugin-api';
7
6
  import { SearchResultListItemExtensionProps } from '@backstage/plugin-search-react';
8
- import { AnnouncementsApi as AnnouncementsApi$1 } from '@backstage-community/plugin-announcements-react';
9
7
 
10
8
  /**
11
9
  * Props for the AnnouncementsTimeline component.
@@ -101,15 +99,4 @@ declare const NewAnnouncementBanner: (props: {
101
99
  */
102
100
  declare const AnnouncementSearchResultListItem: (props: SearchResultListItemExtensionProps<AnnouncementSearchResultProps>) => JSX.Element | null;
103
101
 
104
- /**
105
- @public
106
- * @deprecated Use `AnnouncementsApi` from `@backstage-community/plugin-announcements-react` instead
107
- */
108
- type AnnouncementsApi = AnnouncementsApi$1;
109
- /**
110
- * @public
111
- * @deprecated Use `announcementsApiRef` from `@backstage-community/plugin-announcements-react` instead
112
- */
113
- declare const announcementsApiRef: _backstage_core_plugin_api_index.ApiRef<AnnouncementsApi$1>;
114
-
115
- export { AnnouncementSearchResultListItem, type AnnouncementSearchResultProps, AnnouncementsAdminPortal, type AnnouncementsApi, AnnouncementsCard, AnnouncementsPage, AnnouncementsTimeline, type AnnouncementsTimelineProps, NewAnnouncementBanner, announcementsApiRef, announcementsPlugin };
102
+ export { AnnouncementSearchResultListItem, type AnnouncementSearchResultProps, AnnouncementsAdminPortal, AnnouncementsCard, AnnouncementsPage, AnnouncementsTimeline, type AnnouncementsTimelineProps, NewAnnouncementBanner, announcementsPlugin };
package/dist/index.esm.js CHANGED
@@ -1,7 +1,2 @@
1
1
  export { AnnouncementSearchResultListItem, AnnouncementsAdminPortal, AnnouncementsCard, AnnouncementsPage, AnnouncementsTimeline, NewAnnouncementBanner, announcementsPlugin } from './plugin.esm.js';
2
- import { announcementsApiRef as announcementsApiRef$1 } from '@backstage-community/plugin-announcements-react';
3
-
4
- const announcementsApiRef = announcementsApiRef$1;
5
-
6
- export { announcementsApiRef };
7
2
  //# sourceMappingURL=index.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../src/index.ts"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport * from './plugin';\n\nimport {\n announcementsApiRef as announcementsApiRef_,\n AnnouncementsApi as AnnouncementsApi_,\n} from '@backstage-community/plugin-announcements-react';\n\n/**\n @public\n * @deprecated Use `AnnouncementsApi` from `@backstage-community/plugin-announcements-react` instead\n */\nexport type AnnouncementsApi = AnnouncementsApi_;\n\n/**\n * @public\n * @deprecated Use `announcementsApiRef` from `@backstage-community/plugin-announcements-react` instead\n */\nexport const announcementsApiRef = announcementsApiRef_;\n\nexport type { AnnouncementsTimelineProps } from './components';\nexport type { AnnouncementSearchResultProps } from './components';\n"],"names":["announcementsApiRef_"],"mappings":";;;AAgCO,MAAM,mBAAsB,GAAAA;;;;"}
1
+ {"version":3,"file":"index.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,8 +1,7 @@
1
1
  import { createPlugin, createApiFactory, discoveryApiRef, identityApiRef, errorApiRef, fetchApiRef, createRoutableExtension, createComponentExtension } from '@backstage/core-plugin-api';
2
2
  import { createSearchResultListItemExtension } from '@backstage/plugin-search-react';
3
3
  import { rootRouteRef } from './routes.esm.js';
4
- import { announcementsApiRef } from '@backstage-community/plugin-announcements-react';
5
- import { AnnouncementsClient } from './api.esm.js';
4
+ import { announcementsApiRef, AnnouncementsClient } from '@backstage-community/plugin-announcements-react';
6
5
 
7
6
  const announcementsPlugin = createPlugin({
8
7
  id: "announcements",
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.esm.js","sources":["../src/plugin.ts"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n createApiFactory,\n createComponentExtension,\n createPlugin,\n createRoutableExtension,\n discoveryApiRef,\n errorApiRef,\n identityApiRef,\n fetchApiRef,\n} from '@backstage/core-plugin-api';\nimport {\n createSearchResultListItemExtension,\n SearchResultListItemExtensionProps,\n} from '@backstage/plugin-search-react';\nimport { AnnouncementSearchResultProps } from './components/AnnouncementSearchResultListItem';\nimport { rootRouteRef } from './routes';\nimport { announcementsApiRef } from '@backstage-community/plugin-announcements-react';\nimport { AnnouncementsClient } from './api';\n\n/**\n * @public\n */\nexport const announcementsPlugin = createPlugin({\n id: 'announcements',\n routes: {\n root: rootRouteRef,\n },\n apis: [\n createApiFactory({\n api: announcementsApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n identityApi: identityApiRef,\n errorApi: errorApiRef,\n fetchApi: fetchApiRef,\n },\n factory: ({ discoveryApi, identityApi, errorApi, fetchApi }) => {\n return new AnnouncementsClient({\n discoveryApi: discoveryApi,\n identityApi: identityApi,\n errorApi: errorApi,\n fetchApi: fetchApi,\n });\n },\n }),\n ],\n});\n\n/**\n * @public\n */\nexport const AnnouncementsPage = announcementsPlugin.provide(\n createRoutableExtension({\n name: 'AnnouncementsPage',\n component: () => import('./components/Router').then(m => m.Router),\n mountPoint: rootRouteRef,\n }),\n);\n\n/**\n * @public\n */\nexport const AnnouncementsAdminPortal = announcementsPlugin.provide(\n createRoutableExtension({\n name: 'AnnouncementsAdminPortal',\n component: () => import('./components/Admin').then(m => m.AdminPortal),\n mountPoint: rootRouteRef,\n }),\n);\n\n/**\n * @public\n */\nexport const AnnouncementsTimeline = announcementsPlugin.provide(\n createComponentExtension({\n name: 'AnnouncementsTimeline',\n component: {\n lazy: () => import('./components').then(m => m.AnnouncementsTimeline),\n },\n }),\n);\n\n/**\n * @public\n */\nexport const AnnouncementsCard = announcementsPlugin.provide(\n createComponentExtension({\n name: 'AnnouncementsCard',\n component: {\n lazy: () =>\n import('./components/AnnouncementsCard').then(m => m.AnnouncementsCard),\n },\n }),\n);\n\n/**\n * @public\n */\nexport const NewAnnouncementBanner = announcementsPlugin.provide(\n createComponentExtension({\n name: 'NewAnnouncementBanner',\n component: {\n lazy: () =>\n import('./components/NewAnnouncementBanner').then(\n m => m.NewAnnouncementBanner,\n ),\n },\n }),\n);\n\n/**\n * @public\n */\nexport const AnnouncementSearchResultListItem: (\n props: SearchResultListItemExtensionProps<AnnouncementSearchResultProps>,\n) => JSX.Element | null = announcementsPlugin.provide(\n createSearchResultListItemExtension({\n name: 'AnnouncementSearchResultListItem',\n component: () =>\n import('./components/AnnouncementSearchResultListItem').then(\n m => m.AnnouncementSearchResultListItem,\n ),\n predicate: result => result.type === 'announcements',\n }),\n);\n"],"names":[],"mappings":";;;;;;AAqCO,MAAM,sBAAsB,YAAa,CAAA;AAAA,EAC9C,EAAI,EAAA,eAAA;AAAA,EACJ,MAAQ,EAAA;AAAA,IACN,IAAM,EAAA;AAAA,GACR;AAAA,EACA,IAAM,EAAA;AAAA,IACJ,gBAAiB,CAAA;AAAA,MACf,GAAK,EAAA,mBAAA;AAAA,MACL,IAAM,EAAA;AAAA,QACJ,YAAc,EAAA,eAAA;AAAA,QACd,WAAa,EAAA,cAAA;AAAA,QACb,QAAU,EAAA,WAAA;AAAA,QACV,QAAU,EAAA;AAAA,OACZ;AAAA,MACA,SAAS,CAAC,EAAE,cAAc,WAAa,EAAA,QAAA,EAAU,UAAe,KAAA;AAC9D,QAAA,OAAO,IAAI,mBAAoB,CAAA;AAAA,UAC7B,YAAA;AAAA,UACA,WAAA;AAAA,UACA,QAAA;AAAA,UACA;AAAA,SACD,CAAA;AAAA;AACH,KACD;AAAA;AAEL,CAAC;AAKM,MAAM,oBAAoB,mBAAoB,CAAA,OAAA;AAAA,EACnD,uBAAwB,CAAA;AAAA,IACtB,IAAM,EAAA,mBAAA;AAAA,IACN,SAAA,EAAW,MAAM,OAAO,4BAAqB,EAAE,IAAK,CAAA,CAAA,CAAA,KAAK,EAAE,MAAM,CAAA;AAAA,IACjE,UAAY,EAAA;AAAA,GACb;AACH;AAKO,MAAM,2BAA2B,mBAAoB,CAAA,OAAA;AAAA,EAC1D,uBAAwB,CAAA;AAAA,IACtB,IAAM,EAAA,0BAAA;AAAA,IACN,SAAA,EAAW,MAAM,OAAO,iCAAoB,EAAE,IAAK,CAAA,CAAA,CAAA,KAAK,EAAE,WAAW,CAAA;AAAA,IACrE,UAAY,EAAA;AAAA,GACb;AACH;AAKO,MAAM,wBAAwB,mBAAoB,CAAA,OAAA;AAAA,EACvD,wBAAyB,CAAA;AAAA,IACvB,IAAM,EAAA,uBAAA;AAAA,IACN,SAAW,EAAA;AAAA,MACT,IAAA,EAAM,MAAM,OAAO,2BAAc,EAAE,IAAK,CAAA,CAAA,CAAA,KAAK,EAAE,qBAAqB;AAAA;AACtE,GACD;AACH;AAKO,MAAM,oBAAoB,mBAAoB,CAAA,OAAA;AAAA,EACnD,wBAAyB,CAAA;AAAA,IACvB,IAAM,EAAA,mBAAA;AAAA,IACN,SAAW,EAAA;AAAA,MACT,IAAA,EAAM,MACJ,OAAO,6CAAgC,EAAE,IAAK,CAAA,CAAA,CAAA,KAAK,EAAE,iBAAiB;AAAA;AAC1E,GACD;AACH;AAKO,MAAM,wBAAwB,mBAAoB,CAAA,OAAA;AAAA,EACvD,wBAAyB,CAAA;AAAA,IACvB,IAAM,EAAA,uBAAA;AAAA,IACN,SAAW,EAAA;AAAA,MACT,IAAM,EAAA,MACJ,OAAO,iDAAoC,CAAE,CAAA,IAAA;AAAA,QAC3C,OAAK,CAAE,CAAA;AAAA;AACT;AACJ,GACD;AACH;AAKO,MAAM,mCAEa,mBAAoB,CAAA,OAAA;AAAA,EAC5C,mCAAoC,CAAA;AAAA,IAClC,IAAM,EAAA,kCAAA;AAAA,IACN,SAAW,EAAA,MACT,OAAO,4DAA+C,CAAE,CAAA,IAAA;AAAA,MACtD,OAAK,CAAE,CAAA;AAAA,KACT;AAAA,IACF,SAAA,EAAW,CAAU,MAAA,KAAA,MAAA,CAAO,IAAS,KAAA;AAAA,GACtC;AACH;;;;"}
1
+ {"version":3,"file":"plugin.esm.js","sources":["../src/plugin.ts"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n createApiFactory,\n createComponentExtension,\n createPlugin,\n createRoutableExtension,\n discoveryApiRef,\n errorApiRef,\n identityApiRef,\n fetchApiRef,\n} from '@backstage/core-plugin-api';\nimport {\n createSearchResultListItemExtension,\n SearchResultListItemExtensionProps,\n} from '@backstage/plugin-search-react';\nimport { AnnouncementSearchResultProps } from './components/AnnouncementSearchResultListItem';\nimport { rootRouteRef } from './routes';\nimport {\n announcementsApiRef,\n AnnouncementsClient,\n} from '@backstage-community/plugin-announcements-react';\n\n/**\n * @public\n */\nexport const announcementsPlugin = createPlugin({\n id: 'announcements',\n routes: {\n root: rootRouteRef,\n },\n apis: [\n createApiFactory({\n api: announcementsApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n identityApi: identityApiRef,\n errorApi: errorApiRef,\n fetchApi: fetchApiRef,\n },\n factory: ({ discoveryApi, identityApi, errorApi, fetchApi }) => {\n return new AnnouncementsClient({\n discoveryApi: discoveryApi,\n identityApi: identityApi,\n errorApi: errorApi,\n fetchApi: fetchApi,\n });\n },\n }),\n ],\n});\n\n/**\n * @public\n */\nexport const AnnouncementsPage = announcementsPlugin.provide(\n createRoutableExtension({\n name: 'AnnouncementsPage',\n component: () => import('./components/Router').then(m => m.Router),\n mountPoint: rootRouteRef,\n }),\n);\n\n/**\n * @public\n */\nexport const AnnouncementsAdminPortal = announcementsPlugin.provide(\n createRoutableExtension({\n name: 'AnnouncementsAdminPortal',\n component: () => import('./components/Admin').then(m => m.AdminPortal),\n mountPoint: rootRouteRef,\n }),\n);\n\n/**\n * @public\n */\nexport const AnnouncementsTimeline = announcementsPlugin.provide(\n createComponentExtension({\n name: 'AnnouncementsTimeline',\n component: {\n lazy: () => import('./components').then(m => m.AnnouncementsTimeline),\n },\n }),\n);\n\n/**\n * @public\n */\nexport const AnnouncementsCard = announcementsPlugin.provide(\n createComponentExtension({\n name: 'AnnouncementsCard',\n component: {\n lazy: () =>\n import('./components/AnnouncementsCard').then(m => m.AnnouncementsCard),\n },\n }),\n);\n\n/**\n * @public\n */\nexport const NewAnnouncementBanner = announcementsPlugin.provide(\n createComponentExtension({\n name: 'NewAnnouncementBanner',\n component: {\n lazy: () =>\n import('./components/NewAnnouncementBanner').then(\n m => m.NewAnnouncementBanner,\n ),\n },\n }),\n);\n\n/**\n * @public\n */\nexport const AnnouncementSearchResultListItem: (\n props: SearchResultListItemExtensionProps<AnnouncementSearchResultProps>,\n) => JSX.Element | null = announcementsPlugin.provide(\n createSearchResultListItemExtension({\n name: 'AnnouncementSearchResultListItem',\n component: () =>\n import('./components/AnnouncementSearchResultListItem').then(\n m => m.AnnouncementSearchResultListItem,\n ),\n predicate: result => result.type === 'announcements',\n }),\n);\n"],"names":[],"mappings":";;;;;AAuCO,MAAM,sBAAsB,YAAa,CAAA;AAAA,EAC9C,EAAI,EAAA,eAAA;AAAA,EACJ,MAAQ,EAAA;AAAA,IACN,IAAM,EAAA;AAAA,GACR;AAAA,EACA,IAAM,EAAA;AAAA,IACJ,gBAAiB,CAAA;AAAA,MACf,GAAK,EAAA,mBAAA;AAAA,MACL,IAAM,EAAA;AAAA,QACJ,YAAc,EAAA,eAAA;AAAA,QACd,WAAa,EAAA,cAAA;AAAA,QACb,QAAU,EAAA,WAAA;AAAA,QACV,QAAU,EAAA;AAAA,OACZ;AAAA,MACA,SAAS,CAAC,EAAE,cAAc,WAAa,EAAA,QAAA,EAAU,UAAe,KAAA;AAC9D,QAAA,OAAO,IAAI,mBAAoB,CAAA;AAAA,UAC7B,YAAA;AAAA,UACA,WAAA;AAAA,UACA,QAAA;AAAA,UACA;AAAA,SACD,CAAA;AAAA;AACH,KACD;AAAA;AAEL,CAAC;AAKM,MAAM,oBAAoB,mBAAoB,CAAA,OAAA;AAAA,EACnD,uBAAwB,CAAA;AAAA,IACtB,IAAM,EAAA,mBAAA;AAAA,IACN,SAAA,EAAW,MAAM,OAAO,4BAAqB,EAAE,IAAK,CAAA,CAAA,CAAA,KAAK,EAAE,MAAM,CAAA;AAAA,IACjE,UAAY,EAAA;AAAA,GACb;AACH;AAKO,MAAM,2BAA2B,mBAAoB,CAAA,OAAA;AAAA,EAC1D,uBAAwB,CAAA;AAAA,IACtB,IAAM,EAAA,0BAAA;AAAA,IACN,SAAA,EAAW,MAAM,OAAO,iCAAoB,EAAE,IAAK,CAAA,CAAA,CAAA,KAAK,EAAE,WAAW,CAAA;AAAA,IACrE,UAAY,EAAA;AAAA,GACb;AACH;AAKO,MAAM,wBAAwB,mBAAoB,CAAA,OAAA;AAAA,EACvD,wBAAyB,CAAA;AAAA,IACvB,IAAM,EAAA,uBAAA;AAAA,IACN,SAAW,EAAA;AAAA,MACT,IAAA,EAAM,MAAM,OAAO,2BAAc,EAAE,IAAK,CAAA,CAAA,CAAA,KAAK,EAAE,qBAAqB;AAAA;AACtE,GACD;AACH;AAKO,MAAM,oBAAoB,mBAAoB,CAAA,OAAA;AAAA,EACnD,wBAAyB,CAAA;AAAA,IACvB,IAAM,EAAA,mBAAA;AAAA,IACN,SAAW,EAAA;AAAA,MACT,IAAA,EAAM,MACJ,OAAO,6CAAgC,EAAE,IAAK,CAAA,CAAA,CAAA,KAAK,EAAE,iBAAiB;AAAA;AAC1E,GACD;AACH;AAKO,MAAM,wBAAwB,mBAAoB,CAAA,OAAA;AAAA,EACvD,wBAAyB,CAAA;AAAA,IACvB,IAAM,EAAA,uBAAA;AAAA,IACN,SAAW,EAAA;AAAA,MACT,IAAM,EAAA,MACJ,OAAO,iDAAoC,CAAE,CAAA,IAAA;AAAA,QAC3C,OAAK,CAAE,CAAA;AAAA;AACT;AACJ,GACD;AACH;AAKO,MAAM,mCAEa,mBAAoB,CAAA,OAAA;AAAA,EAC5C,mCAAoC,CAAA;AAAA,IAClC,IAAM,EAAA,kCAAA;AAAA,IACN,SAAW,EAAA,MACT,OAAO,4DAA+C,CAAE,CAAA,IAAA;AAAA,MACtD,OAAK,CAAE,CAAA;AAAA,KACT;AAAA,IACF,SAAA,EAAW,CAAU,MAAA,KAAA,MAAA,CAAO,IAAS,KAAA;AAAA,GACtC;AACH;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@backstage-community/plugin-announcements",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "main": "./dist/index.esm.js",
5
5
  "types": "./dist/index.d.ts",
6
6
  "license": "Apache-2.0",
@@ -59,7 +59,7 @@
59
59
  },
60
60
  "dependencies": {
61
61
  "@backstage-community/plugin-announcements-common": "^0.2.0",
62
- "@backstage-community/plugin-announcements-react": "^0.3.0",
62
+ "@backstage-community/plugin-announcements-react": "^0.3.1",
63
63
  "@backstage/catalog-model": "^1.7.3",
64
64
  "@backstage/core-app-api": "^1.15.4",
65
65
  "@backstage/core-compat-api": "^0.3.5",
package/dist/api.esm.js DELETED
@@ -1,117 +0,0 @@
1
- import { DateTime } from 'luxon';
2
- import { WebStorage } from '@backstage/core-app-api';
3
- import { ResponseError } from '@backstage/errors';
4
-
5
- const lastSeenKey = "user_last_seen_date";
6
- class AnnouncementsClient {
7
- discoveryApi;
8
- identityApi;
9
- webStorage;
10
- fetchApi;
11
- constructor(opts) {
12
- this.discoveryApi = opts.discoveryApi;
13
- this.identityApi = opts.identityApi;
14
- this.webStorage = new WebStorage("announcements", opts.errorApi);
15
- this.fetchApi = opts.fetchApi;
16
- }
17
- async fetch(input, init) {
18
- const baseApiUrl = await this.discoveryApi.getBaseUrl("announcements");
19
- const { token } = await this.identityApi.getCredentials();
20
- const headers = new Headers(init?.headers);
21
- if (token && !headers.has("authorization")) {
22
- headers.set("authorization", `Bearer ${token}`);
23
- }
24
- return this.fetchApi.fetch(`${baseApiUrl}${input}`, {
25
- ...init,
26
- headers
27
- }).then(async (response) => {
28
- if (!response.ok) {
29
- throw await ResponseError.fromResponse(response);
30
- }
31
- return response.json();
32
- });
33
- }
34
- async delete(input, init) {
35
- const baseApiUrl = await this.discoveryApi.getBaseUrl("announcements");
36
- const { token } = await this.identityApi.getCredentials();
37
- const headers = new Headers(init?.headers);
38
- if (token && !headers.has("authorization")) {
39
- headers.set("authorization", `Bearer ${token}`);
40
- }
41
- return this.fetchApi.fetch(`${baseApiUrl}${input}`, {
42
- ...{ method: "DELETE" },
43
- headers
44
- }).then(async (response) => {
45
- if (!response.ok) {
46
- throw await ResponseError.fromResponse(response);
47
- }
48
- });
49
- }
50
- async announcements({
51
- max,
52
- page,
53
- category,
54
- active
55
- }) {
56
- const params = new URLSearchParams();
57
- if (category) {
58
- params.append("category", category);
59
- }
60
- if (max) {
61
- params.append("max", max.toString());
62
- }
63
- if (page) {
64
- params.append("page", page.toString());
65
- }
66
- if (active) {
67
- params.append("active", active.toString());
68
- }
69
- return this.fetch(`/announcements?${params.toString()}`);
70
- }
71
- async announcementByID(id) {
72
- return this.fetch(`/announcements/${id}`);
73
- }
74
- async createAnnouncement(request) {
75
- return await this.fetch(`/announcements`, {
76
- method: "POST",
77
- headers: { "Content-Type": "application/json" },
78
- body: JSON.stringify(request)
79
- });
80
- }
81
- async updateAnnouncement(id, request) {
82
- return this.fetch(`/announcements/${id}`, {
83
- method: "PUT",
84
- headers: { "Content-Type": "application/json" },
85
- body: JSON.stringify(request)
86
- });
87
- }
88
- async deleteAnnouncementByID(id) {
89
- return this.delete(`/announcements/${id}`, { method: "DELETE" });
90
- }
91
- async categories() {
92
- return this.fetch("/categories");
93
- }
94
- async deleteCategory(slug) {
95
- return this.delete(`/categories/${slug}`, { method: "DELETE" });
96
- }
97
- async createCategory(request) {
98
- await this.fetch(`/categories`, {
99
- method: "POST",
100
- headers: { "Content-Type": "application/json" },
101
- body: JSON.stringify(request)
102
- });
103
- }
104
- lastSeenDate() {
105
- const lastSeen = this.webStorage.get(lastSeenKey);
106
- if (!lastSeen) {
107
- return DateTime.fromISO("1990-01-01");
108
- }
109
- return DateTime.fromISO(lastSeen);
110
- }
111
- markLastSeenDate(date) {
112
- this.webStorage.set(lastSeenKey, date.toISO());
113
- }
114
- }
115
-
116
- export { AnnouncementsClient };
117
- //# sourceMappingURL=api.esm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api.esm.js","sources":["../src/api.ts"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { DateTime } from 'luxon';\nimport { WebStorage } from '@backstage/core-app-api';\nimport {\n DiscoveryApi,\n ErrorApi,\n IdentityApi,\n FetchApi,\n} from '@backstage/core-plugin-api';\nimport { ResponseError } from '@backstage/errors';\nimport {\n CreateAnnouncementRequest,\n CreateCategoryRequest,\n AnnouncementsApi,\n} from '@backstage-community/plugin-announcements-react';\nimport {\n Announcement,\n AnnouncementsList,\n Category,\n} from '@backstage-community/plugin-announcements-common';\n\nconst lastSeenKey = 'user_last_seen_date';\n\ntype AnnouncementsClientOptions = {\n discoveryApi: DiscoveryApi;\n identityApi: IdentityApi;\n errorApi: ErrorApi;\n fetchApi: FetchApi;\n};\n\nexport class AnnouncementsClient implements AnnouncementsApi {\n private readonly discoveryApi: DiscoveryApi;\n private readonly identityApi: IdentityApi;\n private readonly webStorage: WebStorage;\n private readonly fetchApi: FetchApi;\n\n constructor(opts: AnnouncementsClientOptions) {\n this.discoveryApi = opts.discoveryApi;\n this.identityApi = opts.identityApi;\n this.webStorage = new WebStorage('announcements', opts.errorApi);\n this.fetchApi = opts.fetchApi;\n }\n\n private async fetch<T = any>(input: string, init?: RequestInit): Promise<T> {\n const baseApiUrl = await this.discoveryApi.getBaseUrl('announcements');\n const { token } = await this.identityApi.getCredentials();\n\n const headers: HeadersInit = new Headers(init?.headers);\n if (token && !headers.has('authorization')) {\n headers.set('authorization', `Bearer ${token}`);\n }\n\n return this.fetchApi\n .fetch(`${baseApiUrl}${input}`, {\n ...init,\n headers,\n })\n .then(async response => {\n if (!response.ok) {\n throw await ResponseError.fromResponse(response);\n }\n\n return response.json() as Promise<T>;\n });\n }\n\n private async delete(input: string, init?: RequestInit): Promise<void> {\n const baseApiUrl = await this.discoveryApi.getBaseUrl('announcements');\n const { token } = await this.identityApi.getCredentials();\n\n const headers: HeadersInit = new Headers(init?.headers);\n if (token && !headers.has('authorization')) {\n headers.set('authorization', `Bearer ${token}`);\n }\n\n return this.fetchApi\n .fetch(`${baseApiUrl}${input}`, {\n ...{ method: 'DELETE' },\n headers,\n })\n .then(async response => {\n if (!response.ok) {\n throw await ResponseError.fromResponse(response);\n }\n });\n }\n\n async announcements({\n max,\n page,\n category,\n active,\n }: {\n max?: number;\n page?: number;\n category?: string;\n active?: boolean;\n }): Promise<AnnouncementsList> {\n const params = new URLSearchParams();\n if (category) {\n params.append('category', category);\n }\n if (max) {\n params.append('max', max.toString());\n }\n if (page) {\n params.append('page', page.toString());\n }\n if (active) {\n params.append('active', active.toString());\n }\n\n return this.fetch<AnnouncementsList>(`/announcements?${params.toString()}`);\n }\n\n async announcementByID(id: string): Promise<Announcement> {\n return this.fetch<Announcement>(`/announcements/${id}`);\n }\n\n async createAnnouncement(\n request: CreateAnnouncementRequest,\n ): Promise<Announcement> {\n return await this.fetch<Announcement>(`/announcements`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(request),\n });\n }\n\n async updateAnnouncement(\n id: string,\n request: CreateAnnouncementRequest,\n ): Promise<Announcement> {\n return this.fetch<Announcement>(`/announcements/${id}`, {\n method: 'PUT',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(request),\n });\n }\n\n async deleteAnnouncementByID(id: string): Promise<void> {\n return this.delete(`/announcements/${id}`, { method: 'DELETE' });\n }\n\n async categories(): Promise<Category[]> {\n return this.fetch<Category[]>('/categories');\n }\n\n async deleteCategory(slug: string): Promise<void> {\n return this.delete(`/categories/${slug}`, { method: 'DELETE' });\n }\n\n async createCategory(request: CreateCategoryRequest): Promise<void> {\n await this.fetch<Category>(`/categories`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(request),\n });\n }\n\n lastSeenDate(): DateTime {\n const lastSeen = this.webStorage.get<string>(lastSeenKey);\n if (!lastSeen) {\n // magic default date, probably enough in the past to consider every announcement as \"not seen\"\n return DateTime.fromISO('1990-01-01');\n }\n\n return DateTime.fromISO(lastSeen);\n }\n\n markLastSeenDate(date: DateTime): void {\n this.webStorage.set<string>(lastSeenKey, date.toISO()!);\n }\n}\n"],"names":[],"mappings":"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"}