@aglyn/tenant-feature-instance 1.0.0-beta.200 → 1.0.0-beta.201

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aglyn/tenant-feature-instance",
3
- "version": "1.0.0-beta.200",
3
+ "version": "1.0.0-beta.201",
4
4
  "license": "Apache-2.0",
5
5
  "homepage": "https://aglyn.com",
6
6
  "repository": {
@@ -25,11 +25,11 @@
25
25
  "./package.json": "./package.json"
26
26
  },
27
27
  "dependencies": {
28
- "@aglyn/aglyn": "1.0.0-beta.200",
29
- "@aglyn/shared-data-enums": "1.0.0-beta.200",
30
- "@aglyn/shared-ui-jsx": "1.0.0-beta.200",
31
- "@aglyn/shared-util-http": "1.0.0-beta.200",
32
- "@aglyn/shared-util-timestamp": "1.0.0-beta.200",
28
+ "@aglyn/aglyn": "1.0.0-beta.201",
29
+ "@aglyn/shared-data-enums": "1.0.0-beta.201",
30
+ "@aglyn/shared-ui-jsx": "1.0.0-beta.201",
31
+ "@aglyn/shared-util-http": "1.0.0-beta.201",
32
+ "@aglyn/shared-util-timestamp": "1.0.0-beta.201",
33
33
  "@swc/helpers": "0.5.23",
34
34
  "lodash-es": "^4.18.1"
35
35
  },
@@ -0,0 +1,30 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Aglyn LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ /**
18
+ * Posts a JSON body to a plugin's console API as the signed-in user, as a
19
+ * FOLLOW-UP to something that has already happened: a figure recounted after
20
+ * a delete, a mirror restamped after a switch (AGL-3330).
21
+ *
22
+ * Best effort, and it never throws: the act that prompted it has already
23
+ * landed, so a follow-up that fails is logged and answered `false`, and the
24
+ * caller carries on. Anything whose outcome the reader must see belongs on a
25
+ * call that reports it, not here.
26
+ *
27
+ * @returns whether the route answered 2xx.
28
+ */
29
+ export declare function usePluginApiPost(): (path: string, body: unknown) => Promise<boolean>;
30
+ export default usePluginApiPost;
@@ -0,0 +1,53 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Aglyn LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */ import { authorizedFetch } from "@aglyn/shared-util-http/authorized-token";
17
+ import { useCallback } from "react";
18
+ import { useUser } from "./firebase/firebase-services.js";
19
+ /**
20
+ * Posts a JSON body to a plugin's console API as the signed-in user, as a
21
+ * FOLLOW-UP to something that has already happened: a figure recounted after
22
+ * a delete, a mirror restamped after a switch (AGL-3330).
23
+ *
24
+ * Best effort, and it never throws: the act that prompted it has already
25
+ * landed, so a follow-up that fails is logged and answered `false`, and the
26
+ * caller carries on. Anything whose outcome the reader must see belongs on a
27
+ * call that reports it, not here.
28
+ *
29
+ * @returns whether the route answered 2xx.
30
+ */ export function usePluginApiPost() {
31
+ const { data: user } = useUser();
32
+ return useCallback(async (path, body)=>{
33
+ try {
34
+ const response = await authorizedFetch(user, path, {
35
+ method: 'POST',
36
+ headers: {
37
+ 'Content-Type': 'application/json'
38
+ },
39
+ body: JSON.stringify(body)
40
+ });
41
+ if (!response.ok) console.error(`${path} answered ${response.status}`);
42
+ return response.ok;
43
+ } catch (error) {
44
+ console.error(`${path} failed`, error);
45
+ return false;
46
+ }
47
+ }, [
48
+ user
49
+ ]);
50
+ }
51
+ export default usePluginApiPost;
52
+
53
+ //# sourceMappingURL=use-plugin-api-post.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../../libs/tenant/feature/instance/src/lib/hooks/use-plugin-api-post.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\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 */\n\nimport { authorizedFetch } from '@aglyn/shared-util-http/authorized-token'\nimport { useCallback } from 'react'\nimport { useUser } from './firebase/firebase-services'\n\n/**\n * Posts a JSON body to a plugin's console API as the signed-in user, as a\n * FOLLOW-UP to something that has already happened: a figure recounted after\n * a delete, a mirror restamped after a switch (AGL-3330).\n *\n * Best effort, and it never throws: the act that prompted it has already\n * landed, so a follow-up that fails is logged and answered `false`, and the\n * caller carries on. Anything whose outcome the reader must see belongs on a\n * call that reports it, not here.\n *\n * @returns whether the route answered 2xx.\n */\nexport function usePluginApiPost(): (path: string, body: unknown) => Promise<boolean> {\n const { data: user } = useUser()\n return useCallback(\n async (path, body) => {\n try {\n const response = await authorizedFetch(user, path, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(body),\n })\n if (!response.ok) console.error(`${path} answered ${response.status}`)\n return response.ok\n } catch (error) {\n console.error(`${path} failed`, error)\n return false\n }\n },\n [user],\n )\n}\n\nexport default usePluginApiPost\n"],"names":["authorizedFetch","useCallback","useUser","usePluginApiPost","data","user","path","body","response","method","headers","JSON","stringify","ok","console","error","status"],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC,GAED,SAASA,eAAe,QAAQ,2CAA0C;AAC1E,SAASC,WAAW,QAAQ,QAAO;AACnC,SAASC,OAAO,QAAQ,kCAA8B;AAEtD;;;;;;;;;;;CAWC,GACD,OAAO,SAASC;IACd,MAAM,EAAEC,MAAMC,IAAI,EAAE,GAAGH;IACvB,OAAOD,YACL,OAAOK,MAAMC;QACX,IAAI;YACF,MAAMC,WAAW,MAAMR,gBAAgBK,MAAMC,MAAM;gBACjDG,QAAQ;gBACRC,SAAS;oBAAE,gBAAgB;gBAAmB;gBAC9CH,MAAMI,KAAKC,SAAS,CAACL;YACvB;YACA,IAAI,CAACC,SAASK,EAAE,EAAEC,QAAQC,KAAK,CAAC,GAAGT,KAAK,UAAU,EAAEE,SAASQ,MAAM,EAAE;YACrE,OAAOR,SAASK,EAAE;QACpB,EAAE,OAAOE,OAAO;YACdD,QAAQC,KAAK,CAAC,GAAGT,KAAK,OAAO,CAAC,EAAES;YAChC,OAAO;QACT;IACF,GACA;QAACV;KAAK;AAEV;AAEA,eAAeF,iBAAgB"}
@@ -50,6 +50,7 @@ export * from './hooks/use-scope-tokens';
50
50
  export * from './hooks/use-host-resource-api';
51
51
  export * from './hooks/use-host-version-api';
52
52
  export * from './hooks/use-duplicate-resource-api';
53
+ export * from './hooks/use-plugin-api-post';
53
54
  export * from './components/duplicate-resource-dialog';
54
55
  export * from './hooks/use-plugin-config';
55
56
  export * from './hooks/use-host';
package/src/lib/tenant.js CHANGED
@@ -49,6 +49,7 @@ export * from "./hooks/use-scope-tokens.js";
49
49
  export * from "./hooks/use-host-resource-api.js";
50
50
  export * from "./hooks/use-host-version-api.js";
51
51
  export * from "./hooks/use-duplicate-resource-api.js";
52
+ export * from "./hooks/use-plugin-api-post.js";
52
53
  export * from "./components/duplicate-resource-dialog.js";
53
54
  export * from "./hooks/use-plugin-config.js";
54
55
  export * from "./hooks/use-host.js";
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../libs/tenant/feature/instance/src/lib/tenant.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2022 Aglyn LLC\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 */\n\nexport * from './constants/mock-data'\nexport * from './constants/site-paths'\nexport * from './constants/firebase-config'\nexport * from './constants/firebase-emulator-hosts'\n\nexport * from './hooks/firebase/auth-persistence'\nexport * from './hooks/firebase/firebase-services'\nexport * from './hooks/firebase/firestore-cache'\nexport * from './hooks/helpers/use-doc'\nexport * from './hooks/helpers/use-modify-doc-callback'\nexport * from './hooks/helpers/besigner-nodes-converter'\nexport * from './hooks/helpers/guarded-nodes-save'\nexport * from './hooks/helpers/guarded-seed-write'\n\nexport * from './hooks/firestore-denial-reporter'\nexport * from './hooks/use-firestore-collection'\nexport * from './hooks/use-paged-collection'\nexport * from './hooks/use-sorted-paged-collection'\nexport * from './hooks/sorted-collection-window'\nexport * from './hooks/host-collection-queries'\nexport * from './hooks/list-filter-constraints'\nexport * from './hooks/use-firestore-doc'\nexport * from './hooks/use-switcher-collection'\nexport * from './hooks/use-host-activity-logger'\nexport * from './hooks/use-live-artifact-count'\nexport * from './hooks/use-component'\nexport * from './hooks/use-component-version'\nexport * from './hooks/use-form-version'\nexport * from './hooks/use-host-template'\nexport * from './hooks/use-console-host-route'\nexport * from './hooks/use-host-org-id'\nexport * from './hooks/use-host-campaigns'\nexport * from './hooks/use-org-member-options'\nexport * from './hooks/use-org-plan'\nexport * from './hooks/use-scope-tokens'\nexport * from './hooks/use-host-resource-api'\nexport * from './hooks/use-host-version-api'\nexport * from './hooks/use-duplicate-resource-api'\nexport * from './components/duplicate-resource-dialog'\nexport * from './hooks/use-plugin-config'\nexport * from './hooks/use-host'\nexport * from './hooks/use-layout'\nexport * from './hooks/use-layout-version'\nexport * from './hooks/use-screen'\nexport * from './hooks/use-screen-version'\nexport * from './hooks/use-user-name'\nexport * from './hooks/use-user-photo'\n"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC,GAED,cAAc,2BAAuB;AACrC,cAAc,4BAAwB;AACtC,cAAc,iCAA6B;AAC3C,cAAc,yCAAqC;AAEnD,cAAc,uCAAmC;AACjD,cAAc,wCAAoC;AAClD,cAAc,sCAAkC;AAChD,cAAc,6BAAyB;AACvC,cAAc,6CAAyC;AACvD,cAAc,8CAA0C;AACxD,cAAc,wCAAoC;AAClD,cAAc,wCAAoC;AAElD,cAAc,uCAAmC;AACjD,cAAc,sCAAkC;AAChD,cAAc,kCAA8B;AAC5C,cAAc,yCAAqC;AACnD,cAAc,sCAAkC;AAChD,cAAc,qCAAiC;AAC/C,cAAc,qCAAiC;AAC/C,cAAc,+BAA2B;AACzC,cAAc,qCAAiC;AAC/C,cAAc,sCAAkC;AAChD,cAAc,qCAAiC;AAC/C,cAAc,2BAAuB;AACrC,cAAc,mCAA+B;AAC7C,cAAc,8BAA0B;AACxC,cAAc,+BAA2B;AACzC,cAAc,oCAAgC;AAC9C,cAAc,6BAAyB;AACvC,cAAc,gCAA4B;AAC1C,cAAc,oCAAgC;AAC9C,cAAc,0BAAsB;AACpC,cAAc,8BAA0B;AACxC,cAAc,mCAA+B;AAC7C,cAAc,kCAA8B;AAC5C,cAAc,wCAAoC;AAClD,cAAc,4CAAwC;AACtD,cAAc,+BAA2B;AACzC,cAAc,sBAAkB;AAChC,cAAc,wBAAoB;AAClC,cAAc,gCAA4B;AAC1C,cAAc,wBAAoB;AAClC,cAAc,gCAA4B;AAC1C,cAAc,2BAAuB;AACrC,cAAc,4BAAwB"}
1
+ {"version":3,"sources":["../../../../../../../libs/tenant/feature/instance/src/lib/tenant.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2022 Aglyn LLC\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 */\n\nexport * from './constants/mock-data'\nexport * from './constants/site-paths'\nexport * from './constants/firebase-config'\nexport * from './constants/firebase-emulator-hosts'\n\nexport * from './hooks/firebase/auth-persistence'\nexport * from './hooks/firebase/firebase-services'\nexport * from './hooks/firebase/firestore-cache'\nexport * from './hooks/helpers/use-doc'\nexport * from './hooks/helpers/use-modify-doc-callback'\nexport * from './hooks/helpers/besigner-nodes-converter'\nexport * from './hooks/helpers/guarded-nodes-save'\nexport * from './hooks/helpers/guarded-seed-write'\n\nexport * from './hooks/firestore-denial-reporter'\nexport * from './hooks/use-firestore-collection'\nexport * from './hooks/use-paged-collection'\nexport * from './hooks/use-sorted-paged-collection'\nexport * from './hooks/sorted-collection-window'\nexport * from './hooks/host-collection-queries'\nexport * from './hooks/list-filter-constraints'\nexport * from './hooks/use-firestore-doc'\nexport * from './hooks/use-switcher-collection'\nexport * from './hooks/use-host-activity-logger'\nexport * from './hooks/use-live-artifact-count'\nexport * from './hooks/use-component'\nexport * from './hooks/use-component-version'\nexport * from './hooks/use-form-version'\nexport * from './hooks/use-host-template'\nexport * from './hooks/use-console-host-route'\nexport * from './hooks/use-host-org-id'\nexport * from './hooks/use-host-campaigns'\nexport * from './hooks/use-org-member-options'\nexport * from './hooks/use-org-plan'\nexport * from './hooks/use-scope-tokens'\nexport * from './hooks/use-host-resource-api'\nexport * from './hooks/use-host-version-api'\nexport * from './hooks/use-duplicate-resource-api'\nexport * from './hooks/use-plugin-api-post'\nexport * from './components/duplicate-resource-dialog'\nexport * from './hooks/use-plugin-config'\nexport * from './hooks/use-host'\nexport * from './hooks/use-layout'\nexport * from './hooks/use-layout-version'\nexport * from './hooks/use-screen'\nexport * from './hooks/use-screen-version'\nexport * from './hooks/use-user-name'\nexport * from './hooks/use-user-photo'\n"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC,GAED,cAAc,2BAAuB;AACrC,cAAc,4BAAwB;AACtC,cAAc,iCAA6B;AAC3C,cAAc,yCAAqC;AAEnD,cAAc,uCAAmC;AACjD,cAAc,wCAAoC;AAClD,cAAc,sCAAkC;AAChD,cAAc,6BAAyB;AACvC,cAAc,6CAAyC;AACvD,cAAc,8CAA0C;AACxD,cAAc,wCAAoC;AAClD,cAAc,wCAAoC;AAElD,cAAc,uCAAmC;AACjD,cAAc,sCAAkC;AAChD,cAAc,kCAA8B;AAC5C,cAAc,yCAAqC;AACnD,cAAc,sCAAkC;AAChD,cAAc,qCAAiC;AAC/C,cAAc,qCAAiC;AAC/C,cAAc,+BAA2B;AACzC,cAAc,qCAAiC;AAC/C,cAAc,sCAAkC;AAChD,cAAc,qCAAiC;AAC/C,cAAc,2BAAuB;AACrC,cAAc,mCAA+B;AAC7C,cAAc,8BAA0B;AACxC,cAAc,+BAA2B;AACzC,cAAc,oCAAgC;AAC9C,cAAc,6BAAyB;AACvC,cAAc,gCAA4B;AAC1C,cAAc,oCAAgC;AAC9C,cAAc,0BAAsB;AACpC,cAAc,8BAA0B;AACxC,cAAc,mCAA+B;AAC7C,cAAc,kCAA8B;AAC5C,cAAc,wCAAoC;AAClD,cAAc,iCAA6B;AAC3C,cAAc,4CAAwC;AACtD,cAAc,+BAA2B;AACzC,cAAc,sBAAkB;AAChC,cAAc,wBAAoB;AAClC,cAAc,gCAA4B;AAC1C,cAAc,wBAAoB;AAClC,cAAc,gCAA4B;AAC1C,cAAc,2BAAuB;AACrC,cAAc,4BAAwB"}