@aglyn/plugins-redirects 1.0.0-beta.269 → 1.0.0-beta.270
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/plugins-redirects",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
3
|
+
"version": "1.0.0-beta.270",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"homepage": "https://aglyn.com",
|
|
6
6
|
"repository": {
|
|
@@ -25,16 +25,16 @@
|
|
|
25
25
|
"./package.json": "./package.json"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@aglyn/aglyn": "1.0.0-beta.
|
|
29
|
-
"@aglyn/shared-data-mdi": "1.0.0-beta.
|
|
30
|
-
"@aglyn/shared-ui-jsx": "1.0.0-beta.
|
|
31
|
-
"@aglyn/shared-ui-snackstack": "1.0.0-beta.
|
|
32
|
-
"@aglyn/shared-util-email": "1.0.0-beta.
|
|
33
|
-
"@aglyn/shared-util-http": "1.0.0-beta.
|
|
34
|
-
"@aglyn/shared-util-timestamp": "1.0.0-beta.
|
|
35
|
-
"@aglyn/shared-util-tools": "1.0.0-beta.
|
|
36
|
-
"@aglyn/tenant-data-admin": "1.0.0-beta.
|
|
37
|
-
"@aglyn/tenant-feature-instance": "1.0.0-beta.
|
|
28
|
+
"@aglyn/aglyn": "1.0.0-beta.270",
|
|
29
|
+
"@aglyn/shared-data-mdi": "1.0.0-beta.270",
|
|
30
|
+
"@aglyn/shared-ui-jsx": "1.0.0-beta.270",
|
|
31
|
+
"@aglyn/shared-ui-snackstack": "1.0.0-beta.270",
|
|
32
|
+
"@aglyn/shared-util-email": "1.0.0-beta.270",
|
|
33
|
+
"@aglyn/shared-util-http": "1.0.0-beta.270",
|
|
34
|
+
"@aglyn/shared-util-timestamp": "1.0.0-beta.270",
|
|
35
|
+
"@aglyn/shared-util-tools": "1.0.0-beta.270",
|
|
36
|
+
"@aglyn/tenant-data-admin": "1.0.0-beta.270",
|
|
37
|
+
"@aglyn/tenant-feature-instance": "1.0.0-beta.270",
|
|
38
38
|
"@swc/helpers": "0.5.23"
|
|
39
39
|
},
|
|
40
40
|
"peerDependencies": {
|
|
@@ -18,6 +18,8 @@
|
|
|
18
18
|
import { registerPluginTransferResource } from "@aglyn/aglyn/plugin-manager/plugin-transfer-resources";
|
|
19
19
|
import { registerPluginResourceDraftWriter } from "@aglyn/aglyn/plugin-manager/plugin-resource-drafts";
|
|
20
20
|
import { BUNDLE_ID } from "./constants/bundle-common.js";
|
|
21
|
+
import { registerPluginSearchSources } from "@aglyn/aglyn/plugin-manager/plugin-search-sources";
|
|
22
|
+
import { REDIRECTS_SEARCH_SOURCES } from "./model/redirects-search-sources.js";
|
|
21
23
|
import { REDIRECT_DRAFT_RESOURCE, checkRedirectDraftContent } from "./model/redirect-draft-content.js";
|
|
22
24
|
import { registerRedirectAiCapability } from "./server/redirect-ai-capability.js";
|
|
23
25
|
import { REDIRECTS_ALIAS_DICTIONARIES, REDIRECTS_DEFAULT_POLICY, REDIRECTS_MATCH_KEYS, REDIRECTS_TRANSFER_KEY, redirectValuesEqual, redirectsTransferCatalog } from "./transfer/redirects-transfer-fields.js";
|
|
@@ -91,6 +93,12 @@ let writerLoading = null;
|
|
|
91
93
|
});
|
|
92
94
|
// …and the operation an AI build plans for it, which that writer executes.
|
|
93
95
|
registerRedirectAiCapability();
|
|
96
|
+
// What the native apps' one box finds among a site's redirects (AGL-3943):
|
|
97
|
+
// the palette's own group, under the extension's plan flag.
|
|
98
|
+
registerPluginSearchSources(REDIRECTS_SEARCH_SOURCES, {
|
|
99
|
+
pluginId: BUNDLE_ID,
|
|
100
|
+
featureFlag: 'redirects'
|
|
101
|
+
});
|
|
94
102
|
}
|
|
95
103
|
|
|
96
104
|
//# sourceMappingURL=declarations.console-server.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../libs/plugins/redirects/src/lib/declarations.console-server.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\n// The registry's own module, not the `@aglyn/aglyn/server` barrel: boot needs\n// one registry, not the whole server surface.\nimport {\n registerPluginTransferResource,\n type PluginTransferResource,\n type TransferRecordsHooks,\n} from '@aglyn/aglyn/plugin-manager/plugin-transfer-resources'\nimport {\n registerPluginResourceDraftWriter,\n type PluginResourceDraftWriter,\n} from '@aglyn/aglyn/plugin-manager/plugin-resource-drafts'\nimport { BUNDLE_ID } from './constants/bundle-common'\nimport { REDIRECT_DRAFT_RESOURCE, checkRedirectDraftContent } from './model/redirect-draft-content'\nimport { registerRedirectAiCapability } from './server/redirect-ai-capability'\nimport {\n REDIRECTS_ALIAS_DICTIONARIES,\n REDIRECTS_DEFAULT_POLICY,\n REDIRECTS_MATCH_KEYS,\n REDIRECTS_TRANSFER_KEY,\n redirectValuesEqual,\n redirectsTransferCatalog,\n} from './transfer/redirects-transfer-fields'\n\n/** The resource that reads and writes, loaded with the first import or export. */\nasync function load(): Promise<TransferRecordsHooks> {\n return (await import('./transfer/redirects-transfer-console')).redirectsTransferResource() as TransferRecordsHooks\n}\n\nlet writerLoading: Promise<PluginResourceDraftWriter> | null = null\n\n/** The `redirect` writer over the Admin SDK, loaded on its first read or write. */\nfunction redirectWriter(): Promise<PluginResourceDraftWriter> {\n writerLoading ??= import('./server/redirect-ai-writer.console')\n .then(({ redirectAiWriter }) => redirectAiWriter())\n .catch((error: unknown) => {\n writerLoading = null\n throw error\n })\n return writerLoading\n}\n\n/**\n * The `redirect` writer as boot registers it (AGL-3745): the check is pure\n * and answers at once, from the content's own rules; the hooks that read or\n * write load the Admin SDK half on first use, which checks again against the\n * site.\n */\nexport const lazyRedirectAiWriter: PluginResourceDraftWriter = {\n check: (content) => checkRedirectDraftContent(content),\n refusal: async (context) => (await redirectWriter()).refusal(context),\n read: async (context) => (await redirectWriter()).read(context),\n write: async (request) => (await redirectWriter()).write(request),\n}\n\n/**\n * The redirects plugin's CONSOLE-ONLY server declarations, named under\n * `consoleServerDeclarations` in `plugins.config.json` and run at the\n * console's boot. The tenant runtime registers none of it.\n *\n * The `redirects` transfer resource: a site's redirect rules, imported and\n * exported through the data-transfer jobs, written through the same checks\n * as the redirects page and the create route (`transfer/redirects-transfer.ts`).\n * The catalog, the match keys, the alias dictionaries, the starting policy\n * and the value comparator are answered from here; every hook that reads or writes loads the Admin SDK with its first\n * call, so boot pays for none of it.\n */\nexport function registerRedirectsConsoleServerDeclarations(): void {\n const resource: PluginTransferResource = {\n fields: () => redirectsTransferCatalog(),\n matchKeys: REDIRECTS_MATCH_KEYS,\n aliases: REDIRECTS_ALIAS_DICTIONARIES,\n // A rule already on the site takes the file's values unless the person\n // chooses otherwise; the review compares values as the page stores them.\n defaultPolicy: REDIRECTS_DEFAULT_POLICY,\n valuesEqual: redirectValuesEqual,\n match: async (ctx, input) => {\n const hooks = await load()\n if (!hooks.match) throw new Error('The redirects resource has no matching.')\n return hooks.match(ctx, input)\n },\n count: async (ctx, options) => (await load()).count?.(ctx, options) ?? 0,\n readPage: async (ctx, cursor, fieldIds, options) => (await load()).readPage(ctx, cursor, fieldIds, options),\n lookup: async (ctx, requests) => (await load()).lookup(ctx, requests),\n plan: async (ctx, input) => {\n const hooks = await load()\n if (!hooks.plan) throw new Error('The redirects resource has no plan.')\n return hooks.plan(ctx, input)\n },\n apply: async (ctx, chunk, writer) => (await load()).apply(ctx, chunk, writer),\n revert: async (ctx, snapshot, decisions) => (await load()).revert(ctx, snapshot, decisions),\n }\n registerPluginTransferResource(REDIRECTS_TRANSFER_KEY, resource, { pluginId: BUNDLE_ID })\n registerPluginResourceDraftWriter(REDIRECT_DRAFT_RESOURCE, lazyRedirectAiWriter, { pluginId: BUNDLE_ID })\n // …and the operation an AI build plans for it, which that writer executes.\n registerRedirectAiCapability()\n}\n"],"names":["registerPluginTransferResource","registerPluginResourceDraftWriter","BUNDLE_ID","REDIRECT_DRAFT_RESOURCE","checkRedirectDraftContent","registerRedirectAiCapability","REDIRECTS_ALIAS_DICTIONARIES","REDIRECTS_DEFAULT_POLICY","REDIRECTS_MATCH_KEYS","REDIRECTS_TRANSFER_KEY","redirectValuesEqual","redirectsTransferCatalog","load","redirectsTransferResource","writerLoading","redirectWriter","then","redirectAiWriter","catch","error","lazyRedirectAiWriter","check","content","refusal","context","read","write","request","registerRedirectsConsoleServerDeclarations","resource","fields","matchKeys","aliases","defaultPolicy","valuesEqual","match","ctx","input","hooks","Error","count","options","readPage","cursor","fieldIds","lookup","requests","plan","apply","chunk","writer","revert","snapshot","decisions","pluginId"],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC,GAED,8EAA8E;AAC9E,8CAA8C;AAC9C,SACEA,8BAA8B,QAGzB,wDAAuD;AAC9D,SACEC,iCAAiC,QAE5B,qDAAoD;AAC3D,SAASC,SAAS,QAAQ,+BAA2B;AACrD,SAASC,uBAAuB,EAAEC,yBAAyB,QAAQ,oCAAgC;AACnG,SAASC,4BAA4B,QAAQ,qCAAiC;AAC9E,SACEC,4BAA4B,EAC5BC,wBAAwB,EACxBC,oBAAoB,EACpBC,sBAAsB,EACtBC,mBAAmB,EACnBC,wBAAwB,QACnB,0CAAsC;AAE7C,gFAAgF,GAChF,eAAeC;IACb,OAAO,AAAC,CAAA,MAAM,MAAM,CAAC,2CAAuC,EAAGC,yBAAyB;AAC1F;AAEA,IAAIC,gBAA2D;AAE/D,iFAAiF,GACjF,SAASC;IACPD,wBAAAA,gBAAAA,gBAAkB,MAAM,CAAC,0CACtBE,IAAI,CAAC,CAAC,EAAEC,gBAAgB,EAAE,GAAKA,oBAC/BC,KAAK,CAAC,CAACC;QACNL,gBAAgB;QAChB,MAAMK;IACR;IACF,OAAOL;AACT;AAEA;;;;;CAKC,GACD,OAAO,MAAMM,uBAAkD;IAC7DC,OAAO,CAACC,UAAYlB,0BAA0BkB;IAC9CC,SAAS,OAAOC,UAAY,AAAC,CAAA,MAAMT,gBAAe,EAAGQ,OAAO,CAACC;IAC7DC,MAAM,OAAOD,UAAY,AAAC,CAAA,MAAMT,gBAAe,EAAGU,IAAI,CAACD;IACvDE,OAAO,OAAOC,UAAY,AAAC,CAAA,MAAMZ,gBAAe,EAAGW,KAAK,CAACC;AAC3D,EAAC;AAED;;;;;;;;;;;CAWC,GACD,OAAO,SAASC;IACd,MAAMC,WAAmC;QACvCC,QAAQ,IAAMnB;QACdoB,WAAWvB;QACXwB,SAAS1B;QACT,uEAAuE;QACvE,yEAAyE;QACzE2B,eAAe1B;QACf2B,aAAaxB;QACbyB,OAAO,OAAOC,KAAKC;YACjB,MAAMC,QAAQ,MAAM1B;YACpB,IAAI,CAAC0B,MAAMH,KAAK,EAAE,MAAM,IAAII,MAAM;YAClC,OAAOD,MAAMH,KAAK,CAACC,KAAKC;QAC1B;QACAG,OAAO,OAAOJ,KAAKK;;gBAAY,QAAC;4BAAD,SAAA,CAAC,QAAA,MAAM7B,QAAQ4B,KAAK,qBAApB,YAAC,OAAsBJ,KAAKK,2BAAY;;QACvEC,UAAU,OAAON,KAAKO,QAAQC,UAAUH,UAAY,AAAC,CAAA,MAAM7B,MAAK,EAAG8B,QAAQ,CAACN,KAAKO,QAAQC,UAAUH;QACnGI,QAAQ,OAAOT,KAAKU,WAAa,AAAC,CAAA,MAAMlC,MAAK,EAAGiC,MAAM,CAACT,KAAKU;QAC5DC,MAAM,OAAOX,KAAKC;YAChB,MAAMC,QAAQ,MAAM1B;YACpB,IAAI,CAAC0B,MAAMS,IAAI,EAAE,MAAM,IAAIR,MAAM;YACjC,OAAOD,MAAMS,IAAI,CAACX,KAAKC;QACzB;QACAW,OAAO,OAAOZ,KAAKa,OAAOC,SAAW,AAAC,CAAA,MAAMtC,MAAK,EAAGoC,KAAK,CAACZ,KAAKa,OAAOC;QACtEC,QAAQ,OAAOf,KAAKgB,UAAUC,YAAc,AAAC,CAAA,MAAMzC,MAAK,EAAGuC,MAAM,CAACf,KAAKgB,UAAUC;IACnF;
|
|
1
|
+
{"version":3,"sources":["../../../../../../libs/plugins/redirects/src/lib/declarations.console-server.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\n// The registry's own module, not the `@aglyn/aglyn/server` barrel: boot needs\n// one registry, not the whole server surface.\nimport {\n registerPluginTransferResource,\n type PluginTransferResource,\n type TransferRecordsHooks,\n} from '@aglyn/aglyn/plugin-manager/plugin-transfer-resources'\nimport {\n registerPluginResourceDraftWriter,\n type PluginResourceDraftWriter,\n} from '@aglyn/aglyn/plugin-manager/plugin-resource-drafts'\nimport { BUNDLE_ID } from './constants/bundle-common'\nimport { registerPluginSearchSources } from '@aglyn/aglyn/plugin-manager/plugin-search-sources'\nimport { REDIRECTS_SEARCH_SOURCES } from './model/redirects-search-sources'\nimport { REDIRECT_DRAFT_RESOURCE, checkRedirectDraftContent } from './model/redirect-draft-content'\nimport { registerRedirectAiCapability } from './server/redirect-ai-capability'\nimport {\n REDIRECTS_ALIAS_DICTIONARIES,\n REDIRECTS_DEFAULT_POLICY,\n REDIRECTS_MATCH_KEYS,\n REDIRECTS_TRANSFER_KEY,\n redirectValuesEqual,\n redirectsTransferCatalog,\n} from './transfer/redirects-transfer-fields'\n\n/** The resource that reads and writes, loaded with the first import or export. */\nasync function load(): Promise<TransferRecordsHooks> {\n return (await import('./transfer/redirects-transfer-console')).redirectsTransferResource() as TransferRecordsHooks\n}\n\nlet writerLoading: Promise<PluginResourceDraftWriter> | null = null\n\n/** The `redirect` writer over the Admin SDK, loaded on its first read or write. */\nfunction redirectWriter(): Promise<PluginResourceDraftWriter> {\n writerLoading ??= import('./server/redirect-ai-writer.console')\n .then(({ redirectAiWriter }) => redirectAiWriter())\n .catch((error: unknown) => {\n writerLoading = null\n throw error\n })\n return writerLoading\n}\n\n/**\n * The `redirect` writer as boot registers it (AGL-3745): the check is pure\n * and answers at once, from the content's own rules; the hooks that read or\n * write load the Admin SDK half on first use, which checks again against the\n * site.\n */\nexport const lazyRedirectAiWriter: PluginResourceDraftWriter = {\n check: (content) => checkRedirectDraftContent(content),\n refusal: async (context) => (await redirectWriter()).refusal(context),\n read: async (context) => (await redirectWriter()).read(context),\n write: async (request) => (await redirectWriter()).write(request),\n}\n\n/**\n * The redirects plugin's CONSOLE-ONLY server declarations, named under\n * `consoleServerDeclarations` in `plugins.config.json` and run at the\n * console's boot. The tenant runtime registers none of it.\n *\n * The `redirects` transfer resource: a site's redirect rules, imported and\n * exported through the data-transfer jobs, written through the same checks\n * as the redirects page and the create route (`transfer/redirects-transfer.ts`).\n * The catalog, the match keys, the alias dictionaries, the starting policy\n * and the value comparator are answered from here; every hook that reads or writes loads the Admin SDK with its first\n * call, so boot pays for none of it.\n */\nexport function registerRedirectsConsoleServerDeclarations(): void {\n const resource: PluginTransferResource = {\n fields: () => redirectsTransferCatalog(),\n matchKeys: REDIRECTS_MATCH_KEYS,\n aliases: REDIRECTS_ALIAS_DICTIONARIES,\n // A rule already on the site takes the file's values unless the person\n // chooses otherwise; the review compares values as the page stores them.\n defaultPolicy: REDIRECTS_DEFAULT_POLICY,\n valuesEqual: redirectValuesEqual,\n match: async (ctx, input) => {\n const hooks = await load()\n if (!hooks.match) throw new Error('The redirects resource has no matching.')\n return hooks.match(ctx, input)\n },\n count: async (ctx, options) => (await load()).count?.(ctx, options) ?? 0,\n readPage: async (ctx, cursor, fieldIds, options) => (await load()).readPage(ctx, cursor, fieldIds, options),\n lookup: async (ctx, requests) => (await load()).lookup(ctx, requests),\n plan: async (ctx, input) => {\n const hooks = await load()\n if (!hooks.plan) throw new Error('The redirects resource has no plan.')\n return hooks.plan(ctx, input)\n },\n apply: async (ctx, chunk, writer) => (await load()).apply(ctx, chunk, writer),\n revert: async (ctx, snapshot, decisions) => (await load()).revert(ctx, snapshot, decisions),\n }\n registerPluginTransferResource(REDIRECTS_TRANSFER_KEY, resource, { pluginId: BUNDLE_ID })\n registerPluginResourceDraftWriter(REDIRECT_DRAFT_RESOURCE, lazyRedirectAiWriter, { pluginId: BUNDLE_ID })\n // …and the operation an AI build plans for it, which that writer executes.\n registerRedirectAiCapability()\n // What the native apps' one box finds among a site's redirects (AGL-3943):\n // the palette's own group, under the extension's plan flag.\n registerPluginSearchSources(REDIRECTS_SEARCH_SOURCES, { pluginId: BUNDLE_ID, featureFlag: 'redirects' })\n}\n"],"names":["registerPluginTransferResource","registerPluginResourceDraftWriter","BUNDLE_ID","registerPluginSearchSources","REDIRECTS_SEARCH_SOURCES","REDIRECT_DRAFT_RESOURCE","checkRedirectDraftContent","registerRedirectAiCapability","REDIRECTS_ALIAS_DICTIONARIES","REDIRECTS_DEFAULT_POLICY","REDIRECTS_MATCH_KEYS","REDIRECTS_TRANSFER_KEY","redirectValuesEqual","redirectsTransferCatalog","load","redirectsTransferResource","writerLoading","redirectWriter","then","redirectAiWriter","catch","error","lazyRedirectAiWriter","check","content","refusal","context","read","write","request","registerRedirectsConsoleServerDeclarations","resource","fields","matchKeys","aliases","defaultPolicy","valuesEqual","match","ctx","input","hooks","Error","count","options","readPage","cursor","fieldIds","lookup","requests","plan","apply","chunk","writer","revert","snapshot","decisions","pluginId","featureFlag"],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
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
|
+
import { type NativeNavContribution } from '@aglyn/aglyn/app-utils/native-nav';
|
|
18
|
+
/**
|
|
19
|
+
* Redirects in the native apps' navigation (AGL-3943): the rows this plugin
|
|
20
|
+
* adds to the manifest the shells draw, placed into the core's lists by
|
|
21
|
+
* `order` (`assembleNativeNav`, `generate:native-contracts`). Labels are the
|
|
22
|
+
* console's words, held by `apps/console/specs/native-nav-manifest.spec.ts`.
|
|
23
|
+
*
|
|
24
|
+
* Imports only the core's plain nav module, so the native contracts read it.
|
|
25
|
+
*/
|
|
26
|
+
export declare const NATIVE_NAV_ROWS: readonly NativeNavContribution[];
|
|
@@ -0,0 +1,41 @@
|
|
|
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 { nativeNavIcon, nativeNavRef } from "@aglyn/aglyn/app-utils/native-nav";
|
|
17
|
+
/**
|
|
18
|
+
* Redirects in the native apps' navigation (AGL-3943): the rows this plugin
|
|
19
|
+
* adds to the manifest the shells draw, placed into the core's lists by
|
|
20
|
+
* `order` (`assembleNativeNav`, `generate:native-contracts`). Labels are the
|
|
21
|
+
* console's words, held by `apps/console/specs/native-nav-manifest.spec.ts`.
|
|
22
|
+
*
|
|
23
|
+
* Imports only the core's plain nav module, so the native contracts read it.
|
|
24
|
+
*/ export const NATIVE_NAV_ROWS = [
|
|
25
|
+
{
|
|
26
|
+
list: 'site',
|
|
27
|
+
group: 'more',
|
|
28
|
+
row: {
|
|
29
|
+
id: 'redirects',
|
|
30
|
+
label: 'Redirects',
|
|
31
|
+
icon: nativeNavIcon('arrow.triangle.branch', 'alt_route'),
|
|
32
|
+
screen: 'redirects.list',
|
|
33
|
+
pluginId: 'redirects',
|
|
34
|
+
order: 20,
|
|
35
|
+
docs: '/building-sites/redirects/overview',
|
|
36
|
+
console: nativeNavRef('hostPluginTab', '/redirects')
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
];
|
|
40
|
+
|
|
41
|
+
//# sourceMappingURL=native-nav.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../libs/plugins/redirects/src/lib/native-nav.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 {\n nativeNavIcon,\n nativeNavRef,\n type NativeNavContribution,\n} from '@aglyn/aglyn/app-utils/native-nav'\n\n/**\n * Redirects in the native apps' navigation (AGL-3943): the rows this plugin\n * adds to the manifest the shells draw, placed into the core's lists by\n * `order` (`assembleNativeNav`, `generate:native-contracts`). Labels are the\n * console's words, held by `apps/console/specs/native-nav-manifest.spec.ts`.\n *\n * Imports only the core's plain nav module, so the native contracts read it.\n */\n\nexport const NATIVE_NAV_ROWS: readonly NativeNavContribution[] = [\n {\n list: 'site',\n group: 'more',\n row: {\n id: 'redirects',\n label: 'Redirects',\n icon: nativeNavIcon('arrow.triangle.branch', 'alt_route'),\n screen: 'redirects.list',\n pluginId: 'redirects',\n order: 20,\n docs: '/building-sites/redirects/overview',\n console: nativeNavRef('hostPluginTab', '/redirects'),\n },\n },\n]\n"],"names":["nativeNavIcon","nativeNavRef","NATIVE_NAV_ROWS","list","group","row","id","label","icon","screen","pluginId","order","docs","console"],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC,GAED,SACEA,aAAa,EACbC,YAAY,QAEP,oCAAmC;AAE1C;;;;;;;CAOC,GAED,OAAO,MAAMC,kBAAoD;IAC/D;QACEC,MAAM;QACNC,OAAO;QACPC,KAAK;YACHC,IAAI;YACJC,OAAO;YACPC,MAAMR,cAAc,yBAAyB;YAC7CS,QAAQ;YACRC,UAAU;YACVC,OAAO;YACPC,MAAM;YACNC,SAASZ,aAAa,iBAAiB;QACzC;IACF;CACD,CAAA"}
|