@pikku/addon-console 0.12.26 → 0.12.27
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/dist/.pikku/addon/pikku-addon-types.gen.d.ts +1 -1
- package/dist/.pikku/addon/pikku-addon-types.gen.js +1 -1
- package/dist/.pikku/addon/pikku-package.gen.js +2 -2
- package/dist/.pikku/addon/pikku-package.gen.js.map +1 -1
- package/dist/.pikku/agent/pikku-agent-map.gen.d.ts +1 -1
- package/dist/.pikku/agent/pikku-agent-types.gen.d.ts +3 -2
- package/dist/.pikku/agent/pikku-agent-types.gen.d.ts.map +1 -1
- package/dist/.pikku/agent/pikku-agent-types.gen.js.map +1 -1
- package/dist/.pikku/auth/auth.types.d.ts +1 -1
- package/dist/.pikku/auth/auth.types.js +1 -1
- package/dist/.pikku/channel/pikku-channel-types.gen.d.ts +1 -1
- package/dist/.pikku/channel/pikku-channel-types.gen.js +1 -1
- package/dist/.pikku/console/pikku-node-types.gen.d.ts +1 -1
- package/dist/.pikku/function/pikku-function-types.gen.d.ts +9 -15
- package/dist/.pikku/function/pikku-function-types.gen.d.ts.map +1 -1
- package/dist/.pikku/function/pikku-function-types.gen.js +3 -12
- package/dist/.pikku/function/pikku-function-types.gen.js.map +1 -1
- package/dist/.pikku/function/pikku-functions-meta.gen.js +1 -1
- package/dist/.pikku/function/pikku-functions-meta.gen.json +368 -175
- package/dist/.pikku/function/pikku-functions.gen.js +27 -13
- package/dist/.pikku/function/pikku-functions.gen.js.map +1 -1
- package/dist/.pikku/http/pikku-http-types.gen.d.ts +2 -24
- package/dist/.pikku/http/pikku-http-types.gen.d.ts.map +1 -1
- package/dist/.pikku/http/pikku-http-types.gen.js +2 -24
- package/dist/.pikku/http/pikku-http-types.gen.js.map +1 -1
- package/dist/.pikku/mcp/pikku-mcp-types.gen.d.ts +1 -1
- package/dist/.pikku/mcp/pikku-mcp-types.gen.js +1 -1
- package/dist/.pikku/pikku-bootstrap.gen.d.ts +1 -1
- package/dist/.pikku/pikku-bootstrap.gen.js +1 -1
- package/dist/.pikku/pikku-meta-service.gen.d.ts +1 -1
- package/dist/.pikku/pikku-meta-service.gen.js +1 -1
- package/dist/.pikku/pikku-services.gen.d.ts +6 -4
- package/dist/.pikku/pikku-services.gen.d.ts.map +1 -1
- package/dist/.pikku/pikku-services.gen.js +4 -2
- package/dist/.pikku/pikku-services.gen.js.map +1 -1
- package/dist/.pikku/pikku-types.gen.d.ts +2 -1
- package/dist/.pikku/pikku-types.gen.d.ts.map +1 -1
- package/dist/.pikku/pikku-types.gen.js +3 -1
- package/dist/.pikku/pikku-types.gen.js.map +1 -1
- package/dist/.pikku/queue/pikku-queue-types.gen.d.ts +1 -1
- package/dist/.pikku/queue/pikku-queue-types.gen.js +1 -1
- package/dist/.pikku/rpc/pikku-rpc-wirings-map.gen.d.ts +43 -20
- package/dist/.pikku/rpc/pikku-rpc-wirings-map.internal.gen.d.ts +43 -20
- package/dist/.pikku/rpc/pikku-rpc-wirings-map.remote.gen.d.ts +200 -0
- package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.js +1 -1
- package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.json +13 -6
- package/dist/.pikku/scheduler/pikku-scheduler-types.gen.d.ts +1 -1
- package/dist/.pikku/scheduler/pikku-scheduler-types.gen.js +1 -1
- package/dist/.pikku/schemas/register.gen.js +49 -23
- package/dist/.pikku/schemas/register.gen.js.map +1 -1
- package/dist/.pikku/schemas/schemas/AddonPackageInfo.schema.json +1 -1
- package/dist/.pikku/schemas/schemas/AllMeta.schema.json +1 -1
- package/dist/.pikku/schemas/schemas/GetAddonInstancesInput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/GetAddonInstancesOutput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/GetAddonMetaOutput.schema.json +1 -1
- package/dist/.pikku/schemas/schemas/GetFunctionsMetaOutput.schema.json +1 -1
- package/dist/.pikku/schemas/schemas/GetOpenapisOutput.schema.json +1 -1
- package/dist/.pikku/schemas/schemas/GetWebhookDeliveryInput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/GetWorkflowMetaByIdOutput.schema.json +1 -1
- package/dist/.pikku/schemas/schemas/ListWebhookDeliveriesInput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/ListWebhookDeliveriesOutput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/ScopeAddScopeToUserInput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/ScopeAddScopeToUserOutput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/ScopeAddUserToRoleInput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/ScopeAddUserToRoleOutput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/ScopeCreateRoleInput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/ScopeCreateRoleOutput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/ScopeDeleteRoleInput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/ScopeDeleteRoleOutput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/ScopeListDeclaredOutput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/ScopeListRolesOutput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/ScopeListUserRolesInput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/ScopeListUserRolesOutput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/ScopeRemoveScopeFromUserInput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/ScopeRemoveScopeFromUserOutput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/ScopeRemoveUserFromRoleInput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/ScopeRemoveUserFromRoleOutput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/ScopeSetRoleScopesInput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/ScopeSetRoleScopesOutput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/WebhookDeliveryWithAttempts.schema.json +1 -0
- package/dist/.pikku/scopes/pikku-scope-types.gen.d.ts +6 -0
- package/dist/.pikku/scopes/pikku-scope-types.gen.d.ts.map +1 -0
- package/dist/.pikku/scopes/pikku-scope-types.gen.js +5 -0
- package/dist/.pikku/scopes/pikku-scope-types.gen.js.map +1 -0
- package/dist/.pikku/scopes/pikku-scopes-meta.gen.json +21 -0
- package/dist/.pikku/scopes/pikku-scopes.gen.d.ts +36 -0
- package/dist/.pikku/scopes/pikku-scopes.gen.d.ts.map +1 -0
- package/dist/.pikku/scopes/pikku-scopes.gen.js +30 -0
- package/dist/.pikku/scopes/pikku-scopes.gen.js.map +1 -0
- package/dist/.pikku/secrets/pikku-secret-types.gen.d.ts +1 -1
- package/dist/.pikku/secrets/pikku-secret-types.gen.js +1 -1
- package/dist/.pikku/secrets/pikku-secrets-meta.gen.json +1 -0
- package/dist/.pikku/secrets/pikku-secrets.gen.d.ts +11 -1
- package/dist/.pikku/secrets/pikku-secrets.gen.d.ts.map +1 -1
- package/dist/.pikku/secrets/pikku-secrets.gen.js +11 -1
- package/dist/.pikku/secrets/pikku-secrets.gen.js.map +1 -1
- package/dist/.pikku/trigger/pikku-trigger-types.gen.d.ts +1 -1
- package/dist/.pikku/trigger/pikku-trigger-types.gen.js +1 -1
- package/dist/.pikku/variables/pikku-variable-types.gen.d.ts +1 -1
- package/dist/.pikku/variables/pikku-variable-types.gen.js +1 -1
- package/dist/.pikku/variables/pikku-variables-meta.gen.json +1 -0
- package/dist/.pikku/variables/pikku-variables.gen.d.ts +11 -1
- package/dist/.pikku/variables/pikku-variables.gen.d.ts.map +1 -1
- package/dist/.pikku/variables/pikku-variables.gen.js +13 -3
- package/dist/.pikku/variables/pikku-variables.gen.js.map +1 -1
- package/dist/.pikku/workflow/pikku-workflow-map.gen.d.ts +1 -1
- package/dist/.pikku/workflow/pikku-workflow-types.gen.d.ts +17 -8
- package/dist/.pikku/workflow/pikku-workflow-types.gen.d.ts.map +1 -1
- package/dist/.pikku/workflow/pikku-workflow-types.gen.js +1 -1
- package/dist/.pikku/workflow/pikku-workflow-types.gen.js.map +1 -1
- package/dist/.pikku/workflow/pikku-workflow-wirings-meta.gen.js +1 -1
- package/dist/.pikku/workflow/pikku-workflow-wirings.gen.d.ts +1 -1
- package/dist/.pikku/workflow/pikku-workflow-wirings.gen.js +1 -1
- package/dist/src/functions/get-addon-instances.function.d.ts +25 -0
- package/dist/src/functions/get-addon-instances.function.d.ts.map +1 -0
- package/dist/src/functions/get-addon-instances.function.js +30 -0
- package/dist/src/functions/get-addon-instances.function.js.map +1 -0
- package/dist/src/functions/get-installed-package.function.d.ts.map +1 -1
- package/dist/src/functions/get-installed-package.function.js +13 -13
- package/dist/src/functions/get-installed-package.function.js.map +1 -1
- package/dist/src/functions/get-openapi-detail.function.d.ts.map +1 -1
- package/dist/src/functions/get-openapi-detail.function.js +3 -9
- package/dist/src/functions/get-openapi-detail.function.js.map +1 -1
- package/dist/src/functions/get-openapis.function.d.ts +3 -3
- package/dist/src/functions/get-openapis.function.d.ts.map +1 -1
- package/dist/src/functions/get-openapis.function.js +3 -12
- package/dist/src/functions/get-openapis.function.js.map +1 -1
- package/dist/src/functions/get-webhook-delivery.function.d.ts +9 -0
- package/dist/src/functions/get-webhook-delivery.function.d.ts.map +1 -0
- package/dist/src/functions/get-webhook-delivery.function.js +14 -0
- package/dist/src/functions/get-webhook-delivery.function.js.map +1 -0
- package/dist/src/functions/install-addon.function.d.ts.map +1 -1
- package/dist/src/functions/install-addon.function.js +65 -11
- package/dist/src/functions/install-addon.function.js.map +1 -1
- package/dist/src/functions/list-webhook-deliveries.function.d.ts +12 -0
- package/dist/src/functions/list-webhook-deliveries.function.d.ts.map +1 -0
- package/dist/src/functions/list-webhook-deliveries.function.js +14 -0
- package/dist/src/functions/list-webhook-deliveries.function.js.map +1 -0
- package/dist/src/functions/scope-add-scope-to-user.function.d.ts +17 -0
- package/dist/src/functions/scope-add-scope-to-user.function.d.ts.map +1 -0
- package/dist/src/functions/scope-add-scope-to-user.function.js +16 -0
- package/dist/src/functions/scope-add-scope-to-user.function.js.map +1 -0
- package/dist/src/functions/scope-add-user-to-role.function.d.ts +17 -0
- package/dist/src/functions/scope-add-user-to-role.function.d.ts.map +1 -0
- package/dist/src/functions/scope-add-user-to-role.function.js +16 -0
- package/dist/src/functions/scope-add-user-to-role.function.js.map +1 -0
- package/dist/src/functions/scope-create-role.function.d.ts +20 -0
- package/dist/src/functions/scope-create-role.function.d.ts.map +1 -0
- package/dist/src/functions/scope-create-role.function.js +18 -0
- package/dist/src/functions/scope-create-role.function.js.map +1 -0
- package/dist/src/functions/scope-delete-role.function.d.ts +14 -0
- package/dist/src/functions/scope-delete-role.function.d.ts.map +1 -0
- package/dist/src/functions/scope-delete-role.function.js +16 -0
- package/dist/src/functions/scope-delete-role.function.js.map +1 -0
- package/dist/src/functions/scope-list-declared.function.d.ts +18 -0
- package/dist/src/functions/scope-list-declared.function.d.ts.map +1 -0
- package/dist/src/functions/scope-list-declared.function.js +15 -0
- package/dist/src/functions/scope-list-declared.function.js.map +1 -0
- package/dist/src/functions/scope-list-roles.function.d.ts +9 -0
- package/dist/src/functions/scope-list-roles.function.d.ts.map +1 -0
- package/dist/src/functions/scope-list-roles.function.js +14 -0
- package/dist/src/functions/scope-list-roles.function.js.map +1 -0
- package/dist/src/functions/scope-list-user-roles.function.d.ts +20 -0
- package/dist/src/functions/scope-list-user-roles.function.d.ts.map +1 -0
- package/dist/src/functions/scope-list-user-roles.function.js +23 -0
- package/dist/src/functions/scope-list-user-roles.function.js.map +1 -0
- package/dist/src/functions/scope-remove-scope-from-user.function.d.ts +17 -0
- package/dist/src/functions/scope-remove-scope-from-user.function.d.ts.map +1 -0
- package/dist/src/functions/scope-remove-scope-from-user.function.js +16 -0
- package/dist/src/functions/scope-remove-scope-from-user.function.js.map +1 -0
- package/dist/src/functions/scope-remove-user-from-role.function.d.ts +17 -0
- package/dist/src/functions/scope-remove-user-from-role.function.d.ts.map +1 -0
- package/dist/src/functions/scope-remove-user-from-role.function.js +16 -0
- package/dist/src/functions/scope-remove-user-from-role.function.js.map +1 -0
- package/dist/src/functions/scope-set-role-scopes.function.d.ts +17 -0
- package/dist/src/functions/scope-set-role-scopes.function.d.ts.map +1 -0
- package/dist/src/functions/scope-set-role-scopes.function.js +16 -0
- package/dist/src/functions/scope-set-role-scopes.function.js.map +1 -0
- package/dist/src/lib/derive-instance-overrides.d.ts +31 -0
- package/dist/src/lib/derive-instance-overrides.d.ts.map +1 -0
- package/dist/src/lib/derive-instance-overrides.js +72 -0
- package/dist/src/lib/derive-instance-overrides.js.map +1 -0
- package/dist/src/lib/derive-instance-overrides.test.d.ts +2 -0
- package/dist/src/lib/derive-instance-overrides.test.d.ts.map +1 -0
- package/dist/src/lib/derive-instance-overrides.test.js +59 -0
- package/dist/src/lib/derive-instance-overrides.test.js.map +1 -0
- package/dist/src/scopes.d.ts +2 -0
- package/dist/src/scopes.d.ts.map +1 -0
- package/dist/src/scopes.js +29 -0
- package/dist/src/scopes.js.map +1 -0
- package/dist/src/services/addon.service.d.ts +37 -0
- package/dist/src/services/addon.service.d.ts.map +1 -1
- package/dist/src/services/addon.service.js +24 -0
- package/dist/src/services/addon.service.js.map +1 -1
- package/dist/src/services/addon.service.test.js +17 -0
- package/dist/src/services/addon.service.test.js.map +1 -1
- package/dist/src/services.d.ts.map +1 -1
- package/dist/src/services.js +3 -4
- package/dist/src/services.js.map +1 -1
- package/package.json +4 -4
|
@@ -1,24 +1,25 @@
|
|
|
1
|
-
import { LocalEnvironmentOnlyError } from '@pikku/core/errors';
|
|
1
|
+
import { BadRequestError, ConflictError, LocalEnvironmentOnlyError, } from '@pikku/core/errors';
|
|
2
2
|
import { pikkuSessionlessFunc } from '#pikku';
|
|
3
3
|
import { findProjectRoot } from '../lib/find-project-root.js';
|
|
4
|
+
import { deriveInstanceOverrides, readAddonDeclaredNames, } from '../lib/derive-instance-overrides.js';
|
|
4
5
|
export const installAddon = pikkuSessionlessFunc({
|
|
5
6
|
title: 'Install Addon',
|
|
6
7
|
description: 'Installs a community addon package and creates the wiring file.',
|
|
7
8
|
expose: true,
|
|
8
9
|
auth: false,
|
|
9
10
|
func: async ({ metaService }, { packageName, namespace, version }) => {
|
|
10
|
-
const { readFile, writeFile, mkdir } = await import('node:fs/promises');
|
|
11
|
+
const { readFile, writeFile, mkdir, readdir } = await import('node:fs/promises');
|
|
11
12
|
const { join, dirname } = await import('node:path');
|
|
12
13
|
const { existsSync } = await import('node:fs');
|
|
13
14
|
const validPkg = /^(@[a-z0-9-]+\/)?[a-z0-9._-]+$/;
|
|
14
15
|
if (!validPkg.test(packageName)) {
|
|
15
|
-
throw new
|
|
16
|
+
throw new BadRequestError(`Invalid package name: ${packageName}`);
|
|
16
17
|
}
|
|
17
18
|
if (!/^[a-z0-9-]+$/.test(namespace)) {
|
|
18
|
-
throw new
|
|
19
|
+
throw new BadRequestError(`Invalid namespace: ${namespace}`);
|
|
19
20
|
}
|
|
20
21
|
if (version && !/^[a-z0-9._^~><=|-]+$/i.test(version)) {
|
|
21
|
-
throw new
|
|
22
|
+
throw new BadRequestError(`Invalid version: ${version}`);
|
|
22
23
|
}
|
|
23
24
|
const metaBasePath = metaService?.basePath;
|
|
24
25
|
if (!metaBasePath) {
|
|
@@ -38,7 +39,7 @@ export const installAddon = pikkuSessionlessFunc({
|
|
|
38
39
|
await mkdir(addonDir, { recursive: true });
|
|
39
40
|
const wiringFile = join(addonDir, `${namespace}.addon.ts`);
|
|
40
41
|
if (existsSync(wiringFile)) {
|
|
41
|
-
throw new
|
|
42
|
+
throw new ConflictError(`An addon is already installed under the name "${namespace}". Pick a different instance name.`);
|
|
42
43
|
}
|
|
43
44
|
const pkg = version ? `${packageName}@${version}` : packageName;
|
|
44
45
|
const pmLock = {
|
|
@@ -63,12 +64,23 @@ export const installAddon = pikkuSessionlessFunc({
|
|
|
63
64
|
const cp = 'node:child_process';
|
|
64
65
|
const { execFileSync } = await import(cp);
|
|
65
66
|
execFileSync(pm, installArgs[pm], { cwd: rootDir, stdio: 'pipe' });
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
67
|
+
// A second-or-later instance of the SAME package would otherwise resolve to
|
|
68
|
+
// the same secrets/variables/credentials as the first — namespace-scope the
|
|
69
|
+
// new one so the two instances stay isolated. The first instance keeps the
|
|
70
|
+
// package's documented logical names (no overrides). Overrides are a
|
|
71
|
+
// sensible default only; the user owns this file and can drop or edit them.
|
|
72
|
+
const alreadyWired = await packageIsAlreadyWired(addonDir, packageName, readdir, readFile);
|
|
73
|
+
const overrides = alreadyWired
|
|
74
|
+
? deriveInstanceOverrides(namespace, packageName, await readAddonDeclaredNames(rootDir, packageName))
|
|
75
|
+
: {};
|
|
76
|
+
// Import via the project's `#pikku` subpath alias, not a computed relative
|
|
77
|
+
// path: every pikku project defines `#pikku/*`, and it resolves to the
|
|
78
|
+
// generated types regardless of where the addon wiring physically sits (a
|
|
79
|
+
// relative guess breaks the moment scaffold.pikkuDir and the real .pikku
|
|
80
|
+
// location diverge).
|
|
81
|
+
const wiringContent = `import { wireAddon } from '#pikku/pikku-types.gen.js'
|
|
70
82
|
|
|
71
|
-
wireAddon(
|
|
83
|
+
wireAddon(${serializeWireAddon(namespace, packageName, overrides)})
|
|
72
84
|
`;
|
|
73
85
|
await writeFile(wiringFile, wiringContent, 'utf-8');
|
|
74
86
|
return {
|
|
@@ -77,4 +89,46 @@ wireAddon({ name: '${namespace}', package: '${packageName}' })
|
|
|
77
89
|
};
|
|
78
90
|
},
|
|
79
91
|
});
|
|
92
|
+
/** True if any existing `*.addon.ts` in the addons dir already wires this
|
|
93
|
+
* package — i.e. this install is a second-or-later instance. */
|
|
94
|
+
async function packageIsAlreadyWired(addonDir, packageName, readdir, readFile) {
|
|
95
|
+
let entries;
|
|
96
|
+
try {
|
|
97
|
+
entries = await readdir(addonDir);
|
|
98
|
+
}
|
|
99
|
+
catch {
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
102
|
+
for (const entry of entries) {
|
|
103
|
+
if (!entry.endsWith('.addon.ts'))
|
|
104
|
+
continue;
|
|
105
|
+
const content = await readFile(`${addonDir}/${entry}`, 'utf-8').catch(() => '');
|
|
106
|
+
// Match `package: 'x'` / `package: "x"` for this exact package name.
|
|
107
|
+
if (new RegExp(`package:\\s*['"]${packageName.replace(/[.*+?^${}()|[\]\\/-]/g, '\\$&')}['"]`).test(content)) {
|
|
108
|
+
return true;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return false;
|
|
112
|
+
}
|
|
113
|
+
/** Serialize the `wireAddon({...})` argument. A plain instance stays a compact
|
|
114
|
+
* one-liner; an instance with overrides expands to a readable multi-line form. */
|
|
115
|
+
function serializeWireAddon(namespace, packageName, overrides) {
|
|
116
|
+
const maps = Object.entries(overrides).filter(([, m]) => m && Object.keys(m).length > 0);
|
|
117
|
+
if (maps.length === 0) {
|
|
118
|
+
return `{ name: '${namespace}', package: '${packageName}' }`;
|
|
119
|
+
}
|
|
120
|
+
const lines = [
|
|
121
|
+
`{`,
|
|
122
|
+
` name: '${namespace}',`,
|
|
123
|
+
` package: '${packageName}',`,
|
|
124
|
+
...maps.map(([kind, map]) => {
|
|
125
|
+
const pairs = Object.entries(map)
|
|
126
|
+
.map(([k, v]) => `'${k}': '${v}'`)
|
|
127
|
+
.join(', ');
|
|
128
|
+
return ` ${kind}: { ${pairs} },`;
|
|
129
|
+
}),
|
|
130
|
+
`}`,
|
|
131
|
+
];
|
|
132
|
+
return lines.join('\n');
|
|
133
|
+
}
|
|
80
134
|
//# sourceMappingURL=install-addon.function.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install-addon.function.js","sourceRoot":"","sources":["../../../src/functions/install-addon.function.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"install-addon.function.js","sourceRoot":"","sources":["../../../src/functions/install-addon.function.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { WebhookDeliveryRecord } from '@pikku/core/services';
|
|
2
|
+
export declare const listWebhookDeliveries: import("#pikku").PikkuFunctionConfig<{
|
|
3
|
+
organizationId?: string;
|
|
4
|
+
limit?: number;
|
|
5
|
+
}, WebhookDeliveryRecord[], "rpc" | "session", import("#pikku").PikkuFunction<{
|
|
6
|
+
organizationId?: string;
|
|
7
|
+
limit?: number;
|
|
8
|
+
}, WebhookDeliveryRecord[], "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunctionSessionless<{
|
|
9
|
+
organizationId?: string;
|
|
10
|
+
limit?: number;
|
|
11
|
+
}, WebhookDeliveryRecord[], "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
|
|
12
|
+
//# sourceMappingURL=list-webhook-deliveries.function.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-webhook-deliveries.function.d.ts","sourceRoot":"","sources":["../../../src/functions/list-webhook-deliveries.function.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAGjE,eAAO,MAAM,qBAAqB;qBACb,MAAM;YAAU,MAAM;;qBAAtB,MAAM;YAAU,MAAM;;qBAAtB,MAAM;YAAU,MAAM;gGAazC,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { MissingServiceError } from '@pikku/core/errors';
|
|
2
|
+
import { pikkuFunc } from '#pikku';
|
|
3
|
+
export const listWebhookDeliveries = pikkuFunc({
|
|
4
|
+
title: 'List Webhook Deliveries',
|
|
5
|
+
description: 'Lists outgoing webhook deliveries (most recent first), optionally scoped to an organization.',
|
|
6
|
+
expose: true,
|
|
7
|
+
func: async ({ webhookService }, input) => {
|
|
8
|
+
if (!webhookService) {
|
|
9
|
+
throw new MissingServiceError('webhookService is not configured');
|
|
10
|
+
}
|
|
11
|
+
return webhookService.listDeliveries(input ?? undefined);
|
|
12
|
+
},
|
|
13
|
+
});
|
|
14
|
+
//# sourceMappingURL=list-webhook-deliveries.function.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-webhook-deliveries.function.js","sourceRoot":"","sources":["../../../src/functions/list-webhook-deliveries.function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAExD,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAElC,MAAM,CAAC,MAAM,qBAAqB,GAAG,SAAS,CAG5C;IACA,KAAK,EAAE,yBAAyB;IAChC,WAAW,EACT,8FAA8F;IAChG,MAAM,EAAE,IAAI;IACZ,IAAI,EAAE,KAAK,EAAE,EAAE,cAAc,EAAE,EAAE,KAAK,EAAE,EAAE;QACxC,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,MAAM,IAAI,mBAAmB,CAAC,kCAAkC,CAAC,CAAA;QACnE,CAAC;QACD,OAAO,cAAc,CAAC,cAAc,CAAC,KAAK,IAAI,SAAS,CAAC,CAAA;IAC1D,CAAC;CACF,CAAC,CAAA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare const scopeAddScopeToUser: import("#pikku").PikkuFunctionConfig<{
|
|
2
|
+
userId: string;
|
|
3
|
+
scope: string;
|
|
4
|
+
}, {
|
|
5
|
+
success: boolean;
|
|
6
|
+
}, "rpc" | "session", import("#pikku").PikkuFunction<{
|
|
7
|
+
userId: string;
|
|
8
|
+
scope: string;
|
|
9
|
+
}, {
|
|
10
|
+
success: boolean;
|
|
11
|
+
}, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunctionSessionless<{
|
|
12
|
+
userId: string;
|
|
13
|
+
scope: string;
|
|
14
|
+
}, {
|
|
15
|
+
success: boolean;
|
|
16
|
+
}, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
|
|
17
|
+
//# sourceMappingURL=scope-add-scope-to-user.function.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scope-add-scope-to-user.function.d.ts","sourceRoot":"","sources":["../../../src/functions/scope-add-scope-to-user.function.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,mBAAmB;YACpB,MAAM;WAAS,MAAM;;aACpB,OAAO;;YADR,MAAM;WAAS,MAAM;;aACpB,OAAO;;YADR,MAAM;WAAS,MAAM;;aACpB,OAAO;uEAclB,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { MissingServiceError } from '@pikku/core/errors';
|
|
2
|
+
import { pikkuFunc } from '#pikku';
|
|
3
|
+
export const scopeAddScopeToUser = pikkuFunc({
|
|
4
|
+
title: 'Grant Scope',
|
|
5
|
+
description: 'Grants a scope directly to a user, outside of any role. Takes effect on their next request — no re-login.',
|
|
6
|
+
expose: true,
|
|
7
|
+
scopes: ['pikku:scopes:manage'],
|
|
8
|
+
func: async ({ scopeService }, { userId, scope }, { session }) => {
|
|
9
|
+
if (!scopeService) {
|
|
10
|
+
throw new MissingServiceError('ScopeService is not configured');
|
|
11
|
+
}
|
|
12
|
+
await scopeService.addScopeToUser(userId, scope, session?.userId);
|
|
13
|
+
return { success: true };
|
|
14
|
+
},
|
|
15
|
+
});
|
|
16
|
+
//# sourceMappingURL=scope-add-scope-to-user.function.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scope-add-scope-to-user.function.js","sourceRoot":"","sources":["../../../src/functions/scope-add-scope-to-user.function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAElC,MAAM,CAAC,MAAM,mBAAmB,GAAG,SAAS,CAG1C;IACA,KAAK,EAAE,aAAa;IACpB,WAAW,EACT,2GAA2G;IAC7G,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,CAAC,qBAAqB,CAAC;IAC/B,IAAI,EAAE,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;QAC/D,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,mBAAmB,CAAC,gCAAgC,CAAC,CAAA;QACjE,CAAC;QACD,MAAM,YAAY,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;QACjE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;IAC1B,CAAC;CACF,CAAC,CAAA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare const scopeAddUserToRole: import("#pikku").PikkuFunctionConfig<{
|
|
2
|
+
userId: string;
|
|
3
|
+
role: string;
|
|
4
|
+
}, {
|
|
5
|
+
success: boolean;
|
|
6
|
+
}, "rpc" | "session", import("#pikku").PikkuFunction<{
|
|
7
|
+
userId: string;
|
|
8
|
+
role: string;
|
|
9
|
+
}, {
|
|
10
|
+
success: boolean;
|
|
11
|
+
}, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunctionSessionless<{
|
|
12
|
+
userId: string;
|
|
13
|
+
role: string;
|
|
14
|
+
}, {
|
|
15
|
+
success: boolean;
|
|
16
|
+
}, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
|
|
17
|
+
//# sourceMappingURL=scope-add-user-to-role.function.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scope-add-user-to-role.function.d.ts","sourceRoot":"","sources":["../../../src/functions/scope-add-user-to-role.function.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,kBAAkB;YACnB,MAAM;UAAQ,MAAM;;aACnB,OAAO;;YADR,MAAM;UAAQ,MAAM;;aACnB,OAAO;;YADR,MAAM;UAAQ,MAAM;;aACnB,OAAO;uEAclB,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { MissingServiceError } from '@pikku/core/errors';
|
|
2
|
+
import { pikkuFunc } from '#pikku';
|
|
3
|
+
export const scopeAddUserToRole = pikkuFunc({
|
|
4
|
+
title: 'Grant Role',
|
|
5
|
+
description: 'Grants a role to a user. Takes effect on their next request — no re-login.',
|
|
6
|
+
expose: true,
|
|
7
|
+
scopes: ['pikku:scopes:manage'],
|
|
8
|
+
func: async ({ scopeService }, { userId, role }, { session }) => {
|
|
9
|
+
if (!scopeService) {
|
|
10
|
+
throw new MissingServiceError('ScopeService is not configured');
|
|
11
|
+
}
|
|
12
|
+
await scopeService.addUserToRole(userId, role, session?.userId);
|
|
13
|
+
return { success: true };
|
|
14
|
+
},
|
|
15
|
+
});
|
|
16
|
+
//# sourceMappingURL=scope-add-user-to-role.function.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scope-add-user-to-role.function.js","sourceRoot":"","sources":["../../../src/functions/scope-add-user-to-role.function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAElC,MAAM,CAAC,MAAM,kBAAkB,GAAG,SAAS,CAGzC;IACA,KAAK,EAAE,YAAY;IACnB,WAAW,EACT,4EAA4E;IAC9E,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,CAAC,qBAAqB,CAAC;IAC/B,IAAI,EAAE,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;QAC9D,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,mBAAmB,CAAC,gCAAgC,CAAC,CAAA;QACjE,CAAC;QACD,MAAM,YAAY,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;QAC/D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;IAC1B,CAAC;CACF,CAAC,CAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export declare const scopeCreateRole: import("#pikku").PikkuFunctionConfig<{
|
|
2
|
+
name: string;
|
|
3
|
+
description?: string;
|
|
4
|
+
scopes: string[];
|
|
5
|
+
}, {
|
|
6
|
+
success: boolean;
|
|
7
|
+
}, "rpc" | "session", import("#pikku").PikkuFunction<{
|
|
8
|
+
name: string;
|
|
9
|
+
description?: string;
|
|
10
|
+
scopes: string[];
|
|
11
|
+
}, {
|
|
12
|
+
success: boolean;
|
|
13
|
+
}, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunctionSessionless<{
|
|
14
|
+
name: string;
|
|
15
|
+
description?: string;
|
|
16
|
+
scopes: string[];
|
|
17
|
+
}, {
|
|
18
|
+
success: boolean;
|
|
19
|
+
}, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
|
|
20
|
+
//# sourceMappingURL=scope-create-role.function.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scope-create-role.function.d.ts","sourceRoot":"","sources":["../../../src/functions/scope-create-role.function.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,eAAe;UAClB,MAAM;kBAAgB,MAAM;YAAU,MAAM,EAAE;;aAC3C,OAAO;;UADV,MAAM;kBAAgB,MAAM;YAAU,MAAM,EAAE;;aAC3C,OAAO;;UADV,MAAM;kBAAgB,MAAM;YAAU,MAAM,EAAE;;aAC3C,OAAO;uEAelB,CAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { MissingServiceError } from '@pikku/core/errors';
|
|
2
|
+
import { pikkuFunc } from '#pikku';
|
|
3
|
+
export const scopeCreateRole = pikkuFunc({
|
|
4
|
+
title: 'Create Role',
|
|
5
|
+
description: 'Creates a role granting the given scopes.',
|
|
6
|
+
expose: true,
|
|
7
|
+
scopes: ['pikku:scopes:manage'],
|
|
8
|
+
func: async ({ scopeService }, { name, description, scopes }) => {
|
|
9
|
+
if (!scopeService) {
|
|
10
|
+
throw new MissingServiceError('ScopeService is not configured');
|
|
11
|
+
}
|
|
12
|
+
// An undeclared scope is rejected by the pikku_scopes foreign key, so the
|
|
13
|
+
// database is the one enforcing the vocabulary — not this function.
|
|
14
|
+
await scopeService.createRole({ name, description, scopes });
|
|
15
|
+
return { success: true };
|
|
16
|
+
},
|
|
17
|
+
});
|
|
18
|
+
//# sourceMappingURL=scope-create-role.function.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scope-create-role.function.js","sourceRoot":"","sources":["../../../src/functions/scope-create-role.function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAElC,MAAM,CAAC,MAAM,eAAe,GAAG,SAAS,CAGtC;IACA,KAAK,EAAE,aAAa;IACpB,WAAW,EAAE,2CAA2C;IACxD,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,CAAC,qBAAqB,CAAC;IAC/B,IAAI,EAAE,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE;QAC9D,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,mBAAmB,CAAC,gCAAgC,CAAC,CAAA;QACjE,CAAC;QACD,0EAA0E;QAC1E,oEAAoE;QACpE,MAAM,YAAY,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAA;QAC5D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;IAC1B,CAAC;CACF,CAAC,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare const scopeDeleteRole: import("#pikku").PikkuFunctionConfig<{
|
|
2
|
+
name: string;
|
|
3
|
+
}, {
|
|
4
|
+
success: boolean;
|
|
5
|
+
}, "rpc" | "session", import("#pikku").PikkuFunction<{
|
|
6
|
+
name: string;
|
|
7
|
+
}, {
|
|
8
|
+
success: boolean;
|
|
9
|
+
}, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunctionSessionless<{
|
|
10
|
+
name: string;
|
|
11
|
+
}, {
|
|
12
|
+
success: boolean;
|
|
13
|
+
}, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
|
|
14
|
+
//# sourceMappingURL=scope-delete-role.function.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scope-delete-role.function.d.ts","sourceRoot":"","sources":["../../../src/functions/scope-delete-role.function.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,eAAe;UAClB,MAAM;;aACH,OAAO;;UADV,MAAM;;aACH,OAAO;;UADV,MAAM;;aACH,OAAO;uEAalB,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { MissingServiceError } from '@pikku/core/errors';
|
|
2
|
+
import { pikkuFunc } from '#pikku';
|
|
3
|
+
export const scopeDeleteRole = pikkuFunc({
|
|
4
|
+
title: 'Delete Role',
|
|
5
|
+
description: 'Deletes a role, revoking it from every user who holds it.',
|
|
6
|
+
expose: true,
|
|
7
|
+
scopes: ['pikku:scopes:manage'],
|
|
8
|
+
func: async ({ scopeService }, { name }) => {
|
|
9
|
+
if (!scopeService) {
|
|
10
|
+
throw new MissingServiceError('ScopeService is not configured');
|
|
11
|
+
}
|
|
12
|
+
await scopeService.deleteRole(name);
|
|
13
|
+
return { success: true };
|
|
14
|
+
},
|
|
15
|
+
});
|
|
16
|
+
//# sourceMappingURL=scope-delete-role.function.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scope-delete-role.function.js","sourceRoot":"","sources":["../../../src/functions/scope-delete-role.function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAElC,MAAM,CAAC,MAAM,eAAe,GAAG,SAAS,CAGtC;IACA,KAAK,EAAE,aAAa;IACpB,WAAW,EAAE,2DAA2D;IACxE,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,CAAC,qBAAqB,CAAC;IAC/B,IAAI,EAAE,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QACzC,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,mBAAmB,CAAC,gCAAgC,CAAC,CAAA;QACjE,CAAC;QACD,MAAM,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QACnC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;IAC1B,CAAC;CACF,CAAC,CAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export type DeclaredScopeEntry = {
|
|
2
|
+
id: string;
|
|
3
|
+
description?: string;
|
|
4
|
+
/**
|
|
5
|
+
* False for a scope still in the store but no longer declared in code. It
|
|
6
|
+
* authorizes nothing — no function can require it — and is awaiting
|
|
7
|
+
* `pikku scopes prune`.
|
|
8
|
+
*/
|
|
9
|
+
declared: boolean;
|
|
10
|
+
};
|
|
11
|
+
export declare const scopeListDeclared: import("#pikku").PikkuFunctionConfig<null, {
|
|
12
|
+
scopes: DeclaredScopeEntry[];
|
|
13
|
+
}, "rpc" | "session", import("#pikku").PikkuFunction<null, {
|
|
14
|
+
scopes: DeclaredScopeEntry[];
|
|
15
|
+
}, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunctionSessionless<null, {
|
|
16
|
+
scopes: DeclaredScopeEntry[];
|
|
17
|
+
}, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
|
|
18
|
+
//# sourceMappingURL=scope-list-declared.function.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scope-list-declared.function.d.ts","sourceRoot":"","sources":["../../../src/functions/scope-list-declared.function.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,EAAE,MAAM,CAAA;IACV,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;OAIG;IACH,QAAQ,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,iBAAiB;YAElB,kBAAkB,EAAE;;YAApB,kBAAkB,EAAE;;YAApB,kBAAkB,EAAE;uEAe9B,CAAA"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { pikkuFunc } from '#pikku';
|
|
2
|
+
export const scopeListDeclared = pikkuFunc({
|
|
3
|
+
title: 'List Declared Scopes',
|
|
4
|
+
description: 'Lists the scope vocabulary a role can be composed from, flagging any that are no longer declared in code.',
|
|
5
|
+
expose: true,
|
|
6
|
+
scopes: ['pikku:scopes:read'],
|
|
7
|
+
func: async ({ scopeService }) => {
|
|
8
|
+
if (!scopeService) {
|
|
9
|
+
return { scopes: [] };
|
|
10
|
+
}
|
|
11
|
+
const scopes = await scopeService.listScopes();
|
|
12
|
+
return { scopes: scopes.sort((a, b) => a.id.localeCompare(b.id)) };
|
|
13
|
+
},
|
|
14
|
+
});
|
|
15
|
+
//# sourceMappingURL=scope-list-declared.function.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scope-list-declared.function.js","sourceRoot":"","sources":["../../../src/functions/scope-list-declared.function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAalC,MAAM,CAAC,MAAM,iBAAiB,GAAG,SAAS,CAGxC;IACA,KAAK,EAAE,sBAAsB;IAC7B,WAAW,EACT,2GAA2G;IAC7G,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,CAAC,mBAAmB,CAAC;IAC7B,IAAI,EAAE,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE;QAC/B,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,CAAA;QACvB,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,UAAU,EAAE,CAAA;QAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAA;IACpE,CAAC;CACF,CAAC,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Role } from '@pikku/core/services';
|
|
2
|
+
export declare const scopeListRoles: import("#pikku").PikkuFunctionConfig<null, {
|
|
3
|
+
roles: Role[];
|
|
4
|
+
}, "rpc" | "session", import("#pikku").PikkuFunction<null, {
|
|
5
|
+
roles: Role[];
|
|
6
|
+
}, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunctionSessionless<null, {
|
|
7
|
+
roles: Role[];
|
|
8
|
+
}, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
|
|
9
|
+
//# sourceMappingURL=scope-list-roles.function.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scope-list-roles.function.d.ts","sourceRoot":"","sources":["../../../src/functions/scope-list-roles.function.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAEhD,eAAO,MAAM,cAAc;WAA4B,IAAI,EAAE;;WAAN,IAAI,EAAE;;WAAN,IAAI,EAAE;uEAW3D,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { pikkuFunc } from '#pikku';
|
|
2
|
+
export const scopeListRoles = pikkuFunc({
|
|
3
|
+
title: 'List Roles',
|
|
4
|
+
description: 'Lists every role and the scopes it grants.',
|
|
5
|
+
expose: true,
|
|
6
|
+
scopes: ['pikku:scopes:read'],
|
|
7
|
+
func: async ({ scopeService }) => {
|
|
8
|
+
if (!scopeService) {
|
|
9
|
+
return { roles: [] };
|
|
10
|
+
}
|
|
11
|
+
return { roles: await scopeService.listRoles() };
|
|
12
|
+
},
|
|
13
|
+
});
|
|
14
|
+
//# sourceMappingURL=scope-list-roles.function.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scope-list-roles.function.js","sourceRoot":"","sources":["../../../src/functions/scope-list-roles.function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAGlC,MAAM,CAAC,MAAM,cAAc,GAAG,SAAS,CAA0B;IAC/D,KAAK,EAAE,YAAY;IACnB,WAAW,EAAE,4CAA4C;IACzD,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,CAAC,mBAAmB,CAAC;IAC7B,IAAI,EAAE,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE;QAC/B,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAA;QACtB,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC,SAAS,EAAE,EAAE,CAAA;IAClD,CAAC;CACF,CAAC,CAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export declare const scopeListUserRoles: import("#pikku").PikkuFunctionConfig<{
|
|
2
|
+
userId: string;
|
|
3
|
+
}, {
|
|
4
|
+
roles: string[];
|
|
5
|
+
scopes: string[];
|
|
6
|
+
directScopes: string[];
|
|
7
|
+
}, "rpc" | "session", import("#pikku").PikkuFunction<{
|
|
8
|
+
userId: string;
|
|
9
|
+
}, {
|
|
10
|
+
roles: string[];
|
|
11
|
+
scopes: string[];
|
|
12
|
+
directScopes: string[];
|
|
13
|
+
}, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunctionSessionless<{
|
|
14
|
+
userId: string;
|
|
15
|
+
}, {
|
|
16
|
+
roles: string[];
|
|
17
|
+
scopes: string[];
|
|
18
|
+
directScopes: string[];
|
|
19
|
+
}, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
|
|
20
|
+
//# sourceMappingURL=scope-list-user-roles.function.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scope-list-user-roles.function.d.ts","sourceRoot":"","sources":["../../../src/functions/scope-list-user-roles.function.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,kBAAkB;YACnB,MAAM;;WACP,MAAM,EAAE;YAAU,MAAM,EAAE;kBAAgB,MAAM,EAAE;;YADjD,MAAM;;WACP,MAAM,EAAE;YAAU,MAAM,EAAE;kBAAgB,MAAM,EAAE;;YADjD,MAAM;;WACP,MAAM,EAAE;YAAU,MAAM,EAAE;kBAAgB,MAAM,EAAE;uEAwB3D,CAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { pikkuFunc } from '#pikku';
|
|
2
|
+
export const scopeListUserRoles = pikkuFunc({
|
|
3
|
+
title: 'List User Roles',
|
|
4
|
+
description: 'Lists the roles a user holds, the scopes granted to them directly, and the full set those resolve to.',
|
|
5
|
+
expose: true,
|
|
6
|
+
scopes: ['pikku:scopes:read'],
|
|
7
|
+
func: async ({ scopeService }, { userId }) => {
|
|
8
|
+
if (!scopeService) {
|
|
9
|
+
return { roles: [], scopes: [], directScopes: [] };
|
|
10
|
+
}
|
|
11
|
+
const [roles, scopes, directScopes] = await Promise.all([
|
|
12
|
+
scopeService.listUserRoles(userId),
|
|
13
|
+
scopeService.resolveScopes(userId),
|
|
14
|
+
scopeService.listUserScopes(userId),
|
|
15
|
+
]);
|
|
16
|
+
return {
|
|
17
|
+
roles: roles.sort(),
|
|
18
|
+
scopes: scopes.sort(),
|
|
19
|
+
directScopes: directScopes.sort(),
|
|
20
|
+
};
|
|
21
|
+
},
|
|
22
|
+
});
|
|
23
|
+
//# sourceMappingURL=scope-list-user-roles.function.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scope-list-user-roles.function.js","sourceRoot":"","sources":["../../../src/functions/scope-list-user-roles.function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAElC,MAAM,CAAC,MAAM,kBAAkB,GAAG,SAAS,CAGzC;IACA,KAAK,EAAE,iBAAiB;IACxB,WAAW,EACT,uGAAuG;IACzG,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,CAAC,mBAAmB,CAAC;IAC7B,IAAI,EAAE,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;QAC3C,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,CAAA;QACpD,CAAC;QAED,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACtD,YAAY,CAAC,aAAa,CAAC,MAAM,CAAC;YAClC,YAAY,CAAC,aAAa,CAAC,MAAM,CAAC;YAClC,YAAY,CAAC,cAAc,CAAC,MAAM,CAAC;SACpC,CAAC,CAAA;QAEF,OAAO;YACL,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE;YACnB,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE;YACrB,YAAY,EAAE,YAAY,CAAC,IAAI,EAAE;SAClC,CAAA;IACH,CAAC;CACF,CAAC,CAAA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare const scopeRemoveScopeFromUser: import("#pikku").PikkuFunctionConfig<{
|
|
2
|
+
userId: string;
|
|
3
|
+
scope: string;
|
|
4
|
+
}, {
|
|
5
|
+
success: boolean;
|
|
6
|
+
}, "rpc" | "session", import("#pikku").PikkuFunction<{
|
|
7
|
+
userId: string;
|
|
8
|
+
scope: string;
|
|
9
|
+
}, {
|
|
10
|
+
success: boolean;
|
|
11
|
+
}, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunctionSessionless<{
|
|
12
|
+
userId: string;
|
|
13
|
+
scope: string;
|
|
14
|
+
}, {
|
|
15
|
+
success: boolean;
|
|
16
|
+
}, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
|
|
17
|
+
//# sourceMappingURL=scope-remove-scope-from-user.function.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scope-remove-scope-from-user.function.d.ts","sourceRoot":"","sources":["../../../src/functions/scope-remove-scope-from-user.function.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,wBAAwB;YACzB,MAAM;WAAS,MAAM;;aACpB,OAAO;;YADR,MAAM;WAAS,MAAM;;aACpB,OAAO;;YADR,MAAM;WAAS,MAAM;;aACpB,OAAO;uEAclB,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { MissingServiceError } from '@pikku/core/errors';
|
|
2
|
+
import { pikkuFunc } from '#pikku';
|
|
3
|
+
export const scopeRemoveScopeFromUser = pikkuFunc({
|
|
4
|
+
title: 'Revoke Scope',
|
|
5
|
+
description: 'Revokes a directly-granted scope from a user. Takes effect on their next request — no re-login.',
|
|
6
|
+
expose: true,
|
|
7
|
+
scopes: ['pikku:scopes:manage'],
|
|
8
|
+
func: async ({ scopeService }, { userId, scope }) => {
|
|
9
|
+
if (!scopeService) {
|
|
10
|
+
throw new MissingServiceError('ScopeService is not configured');
|
|
11
|
+
}
|
|
12
|
+
await scopeService.removeScopeFromUser(userId, scope);
|
|
13
|
+
return { success: true };
|
|
14
|
+
},
|
|
15
|
+
});
|
|
16
|
+
//# sourceMappingURL=scope-remove-scope-from-user.function.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scope-remove-scope-from-user.function.js","sourceRoot":"","sources":["../../../src/functions/scope-remove-scope-from-user.function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAElC,MAAM,CAAC,MAAM,wBAAwB,GAAG,SAAS,CAG/C;IACA,KAAK,EAAE,cAAc;IACrB,WAAW,EACT,iGAAiG;IACnG,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,CAAC,qBAAqB,CAAC;IAC/B,IAAI,EAAE,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;QAClD,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,mBAAmB,CAAC,gCAAgC,CAAC,CAAA;QACjE,CAAC;QACD,MAAM,YAAY,CAAC,mBAAmB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;QACrD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;IAC1B,CAAC;CACF,CAAC,CAAA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare const scopeRemoveUserFromRole: import("#pikku").PikkuFunctionConfig<{
|
|
2
|
+
userId: string;
|
|
3
|
+
role: string;
|
|
4
|
+
}, {
|
|
5
|
+
success: boolean;
|
|
6
|
+
}, "rpc" | "session", import("#pikku").PikkuFunction<{
|
|
7
|
+
userId: string;
|
|
8
|
+
role: string;
|
|
9
|
+
}, {
|
|
10
|
+
success: boolean;
|
|
11
|
+
}, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunctionSessionless<{
|
|
12
|
+
userId: string;
|
|
13
|
+
role: string;
|
|
14
|
+
}, {
|
|
15
|
+
success: boolean;
|
|
16
|
+
}, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
|
|
17
|
+
//# sourceMappingURL=scope-remove-user-from-role.function.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scope-remove-user-from-role.function.d.ts","sourceRoot":"","sources":["../../../src/functions/scope-remove-user-from-role.function.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,uBAAuB;YACxB,MAAM;UAAQ,MAAM;;aACnB,OAAO;;YADR,MAAM;UAAQ,MAAM;;aACnB,OAAO;;YADR,MAAM;UAAQ,MAAM;;aACnB,OAAO;uEAclB,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { MissingServiceError } from '@pikku/core/errors';
|
|
2
|
+
import { pikkuFunc } from '#pikku';
|
|
3
|
+
export const scopeRemoveUserFromRole = pikkuFunc({
|
|
4
|
+
title: 'Revoke Role',
|
|
5
|
+
description: 'Revokes a role from a user. Takes effect on their next request — no re-login.',
|
|
6
|
+
expose: true,
|
|
7
|
+
scopes: ['pikku:scopes:manage'],
|
|
8
|
+
func: async ({ scopeService }, { userId, role }) => {
|
|
9
|
+
if (!scopeService) {
|
|
10
|
+
throw new MissingServiceError('ScopeService is not configured');
|
|
11
|
+
}
|
|
12
|
+
await scopeService.removeUserFromRole(userId, role);
|
|
13
|
+
return { success: true };
|
|
14
|
+
},
|
|
15
|
+
});
|
|
16
|
+
//# sourceMappingURL=scope-remove-user-from-role.function.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scope-remove-user-from-role.function.js","sourceRoot":"","sources":["../../../src/functions/scope-remove-user-from-role.function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAElC,MAAM,CAAC,MAAM,uBAAuB,GAAG,SAAS,CAG9C;IACA,KAAK,EAAE,aAAa;IACpB,WAAW,EACT,+EAA+E;IACjF,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,CAAC,qBAAqB,CAAC;IAC/B,IAAI,EAAE,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;QACjD,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,mBAAmB,CAAC,gCAAgC,CAAC,CAAA;QACjE,CAAC;QACD,MAAM,YAAY,CAAC,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QACnD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;IAC1B,CAAC;CACF,CAAC,CAAA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare const scopeSetRoleScopes: import("#pikku").PikkuFunctionConfig<{
|
|
2
|
+
name: string;
|
|
3
|
+
scopes: string[];
|
|
4
|
+
}, {
|
|
5
|
+
success: boolean;
|
|
6
|
+
}, "rpc" | "session", import("#pikku").PikkuFunction<{
|
|
7
|
+
name: string;
|
|
8
|
+
scopes: string[];
|
|
9
|
+
}, {
|
|
10
|
+
success: boolean;
|
|
11
|
+
}, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunctionSessionless<{
|
|
12
|
+
name: string;
|
|
13
|
+
scopes: string[];
|
|
14
|
+
}, {
|
|
15
|
+
success: boolean;
|
|
16
|
+
}, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
|
|
17
|
+
//# sourceMappingURL=scope-set-role-scopes.function.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scope-set-role-scopes.function.d.ts","sourceRoot":"","sources":["../../../src/functions/scope-set-role-scopes.function.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,kBAAkB;UACrB,MAAM;YAAU,MAAM,EAAE;;aACrB,OAAO;;UADV,MAAM;YAAU,MAAM,EAAE;;aACrB,OAAO;;UADV,MAAM;YAAU,MAAM,EAAE;;aACrB,OAAO;uEAclB,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { MissingServiceError } from '@pikku/core/errors';
|
|
2
|
+
import { pikkuFunc } from '#pikku';
|
|
3
|
+
export const scopeSetRoleScopes = pikkuFunc({
|
|
4
|
+
title: 'Set Role Scopes',
|
|
5
|
+
description: 'Replaces the scopes a role grants. Users holding it see the change on their next request.',
|
|
6
|
+
expose: true,
|
|
7
|
+
scopes: ['pikku:scopes:manage'],
|
|
8
|
+
func: async ({ scopeService }, { name, scopes }) => {
|
|
9
|
+
if (!scopeService) {
|
|
10
|
+
throw new MissingServiceError('ScopeService is not configured');
|
|
11
|
+
}
|
|
12
|
+
await scopeService.setRoleScopes(name, scopes);
|
|
13
|
+
return { success: true };
|
|
14
|
+
},
|
|
15
|
+
});
|
|
16
|
+
//# sourceMappingURL=scope-set-role-scopes.function.js.map
|