@activepieces/piece-algolia 0.0.1
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 +17 -0
- package/src/index.d.ts +4 -0
- package/src/index.js +42 -0
- package/src/index.js.map +1 -0
- package/src/lib/actions/browse-records.d.ts +13 -0
- package/src/lib/actions/browse-records.js +36 -0
- package/src/lib/actions/browse-records.js.map +1 -0
- package/src/lib/actions/delete-records.d.ts +13 -0
- package/src/lib/actions/delete-records.js +35 -0
- package/src/lib/actions/delete-records.js.map +1 -0
- package/src/lib/actions/save-records.d.ts +7 -0
- package/src/lib/actions/save-records.js +38 -0
- package/src/lib/actions/save-records.js.map +1 -0
- package/src/lib/common/auth.d.ts +4 -0
- package/src/lib/common/auth.js +50 -0
- package/src/lib/common/auth.js.map +1 -0
- package/src/lib/common/client.d.ts +21 -0
- package/src/lib/common/client.js +139 -0
- package/src/lib/common/client.js.map +1 -0
- package/src/lib/common/props.d.ts +9 -0
- package/src/lib/common/props.js +52 -0
- package/src/lib/common/props.js.map +1 -0
- package/src/lib/common/types.d.ts +31 -0
- package/src/lib/common/types.js +3 -0
- package/src/lib/common/types.js.map +1 -0
- package/src/lib/common/utils.d.ts +5 -0
- package/src/lib/common/utils.js +69 -0
- package/src/lib/common/utils.js.map +1 -0
package/package.json
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@activepieces/piece-algolia",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"type": "commonjs",
|
|
5
|
+
"main": "./src/index.js",
|
|
6
|
+
"types": "./src/index.d.ts",
|
|
7
|
+
"dependencies": {
|
|
8
|
+
"@activepieces/pieces-common": "0.12.0",
|
|
9
|
+
"@activepieces/pieces-framework": "0.26.0",
|
|
10
|
+
"@activepieces/shared": "0.50.0",
|
|
11
|
+
"tslib": "^2.3.0"
|
|
12
|
+
},
|
|
13
|
+
"scripts": {
|
|
14
|
+
"build": "tsc -p tsconfig.lib.json && cp package.json dist/",
|
|
15
|
+
"lint": "eslint 'src/**/*.ts'"
|
|
16
|
+
}
|
|
17
|
+
}
|
package/src/index.d.ts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare const algolia: import("@activepieces/pieces-framework").Piece<import("@activepieces/pieces-framework").CustomAuthProperty<{
|
|
2
|
+
applicationId: import("@activepieces/pieces-framework").ShortTextProperty<true>;
|
|
3
|
+
apiKey: import("@activepieces/pieces-framework").SecretTextProperty<true>;
|
|
4
|
+
}>>;
|
package/src/index.js
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.algolia = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const pieces_common_1 = require("@activepieces/pieces-common");
|
|
6
|
+
const pieces_framework_1 = require("@activepieces/pieces-framework");
|
|
7
|
+
const shared_1 = require("@activepieces/shared");
|
|
8
|
+
const browse_records_1 = require("./lib/actions/browse-records");
|
|
9
|
+
const delete_records_1 = require("./lib/actions/delete-records");
|
|
10
|
+
const save_records_1 = require("./lib/actions/save-records");
|
|
11
|
+
const auth_1 = require("./lib/common/auth");
|
|
12
|
+
exports.algolia = (0, pieces_framework_1.createPiece)({
|
|
13
|
+
displayName: 'Algolia',
|
|
14
|
+
description: 'Manage your Algolia search indices — add, browse, and delete records.',
|
|
15
|
+
minimumSupportedRelease: '0.36.1',
|
|
16
|
+
logoUrl: 'https://cdn.activepieces.com/pieces/algolia.png',
|
|
17
|
+
categories: [shared_1.PieceCategory.DEVELOPER_TOOLS],
|
|
18
|
+
authors: ['veri5ied'],
|
|
19
|
+
auth: auth_1.algoliaAuth,
|
|
20
|
+
actions: [
|
|
21
|
+
save_records_1.saveRecordsAction,
|
|
22
|
+
browse_records_1.browseRecordsAction,
|
|
23
|
+
delete_records_1.deleteRecordsAction,
|
|
24
|
+
(0, pieces_common_1.createCustomApiCallAction)({
|
|
25
|
+
auth: auth_1.algoliaAuth,
|
|
26
|
+
baseUrl: (auth) => {
|
|
27
|
+
if (!auth) {
|
|
28
|
+
return '';
|
|
29
|
+
}
|
|
30
|
+
return `https://${auth.props.applicationId}.algolia.net/1`;
|
|
31
|
+
},
|
|
32
|
+
authMapping: (auth) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
33
|
+
return ({
|
|
34
|
+
'x-algolia-application-id': auth.props.applicationId,
|
|
35
|
+
'x-algolia-api-key': auth.props.apiKey,
|
|
36
|
+
});
|
|
37
|
+
}),
|
|
38
|
+
}),
|
|
39
|
+
],
|
|
40
|
+
triggers: [],
|
|
41
|
+
});
|
|
42
|
+
//# sourceMappingURL=index.js.map
|
package/src/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;AAAA,+DAAwE;AACxE,qEAA6D;AAC7D,iDAAqD;AAErD,iEAAmE;AACnE,iEAAmE;AACnE,6DAA+D;AAC/D,4CAAgD;AAEnC,QAAA,OAAO,GAAG,IAAA,8BAAW,EAAC;IACjC,WAAW,EAAE,SAAS;IACtB,WAAW,EACT,uEAAuE;IACzE,uBAAuB,EAAE,QAAQ;IACjC,OAAO,EAAE,iDAAiD;IAC1D,UAAU,EAAE,CAAC,sBAAa,CAAC,eAAe,CAAC;IAC3C,OAAO,EAAE,CAAC,UAAU,CAAC;IACrB,IAAI,EAAE,kBAAW;IACjB,OAAO,EAAE;QACP,gCAAiB;QACjB,oCAAmB;QACnB,oCAAmB;QACnB,IAAA,yCAAyB,EAAC;YACxB,IAAI,EAAE,kBAAW;YACjB,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;gBAChB,IAAI,CAAC,IAAI,EAAE,CAAC;oBACV,OAAO,EAAE,CAAC;gBACZ,CAAC;gBAED,OAAO,WAAW,IAAI,CAAC,KAAK,CAAC,aAAa,gBAAgB,CAAC;YAC7D,CAAC;YACD,WAAW,EAAE,CAAO,IAAI,EAAE,EAAE;gBAAC,OAAA,CAAC;oBAC5B,0BAA0B,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa;oBACpD,mBAAmB,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;iBACvC,CAAC,CAAA;cAAA;SACH,CAAC;KACH;IACD,QAAQ,EAAE,EAAE;CACb,CAAC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare const browseRecordsAction: import("@activepieces/pieces-framework").IAction<import("@activepieces/pieces-framework").CustomAuthProperty<{
|
|
2
|
+
applicationId: import("@activepieces/pieces-framework").ShortTextProperty<true>;
|
|
3
|
+
apiKey: import("@activepieces/pieces-framework").SecretTextProperty<true>;
|
|
4
|
+
}>, {
|
|
5
|
+
indexName: import("@activepieces/pieces-framework").DropdownProperty<string, false, import("@activepieces/pieces-framework").CustomAuthProperty<{
|
|
6
|
+
applicationId: import("@activepieces/pieces-framework").ShortTextProperty<true>;
|
|
7
|
+
apiKey: import("@activepieces/pieces-framework").SecretTextProperty<true>;
|
|
8
|
+
}>> | import("@activepieces/pieces-framework").DropdownProperty<string, true, import("@activepieces/pieces-framework").CustomAuthProperty<{
|
|
9
|
+
applicationId: import("@activepieces/pieces-framework").ShortTextProperty<true>;
|
|
10
|
+
apiKey: import("@activepieces/pieces-framework").SecretTextProperty<true>;
|
|
11
|
+
}>>;
|
|
12
|
+
limit: import("@activepieces/pieces-framework").NumberProperty<false>;
|
|
13
|
+
}>;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.browseRecordsAction = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const pieces_framework_1 = require("@activepieces/pieces-framework");
|
|
6
|
+
const auth_1 = require("../common/auth");
|
|
7
|
+
const client_1 = require("../common/client");
|
|
8
|
+
const props_1 = require("../common/props");
|
|
9
|
+
const utils_1 = require("../common/utils");
|
|
10
|
+
exports.browseRecordsAction = (0, pieces_framework_1.createAction)({
|
|
11
|
+
auth: auth_1.algoliaAuth,
|
|
12
|
+
name: 'browse-records',
|
|
13
|
+
displayName: 'Browse Records',
|
|
14
|
+
description: 'Retrieves records from an Algolia index.',
|
|
15
|
+
props: {
|
|
16
|
+
indexName: props_1.algoliaProps.index(),
|
|
17
|
+
limit: pieces_framework_1.Property.Number({
|
|
18
|
+
displayName: 'Limit',
|
|
19
|
+
description: 'Maximum number of records to retrieve. Defaults to 10,000.',
|
|
20
|
+
required: false,
|
|
21
|
+
defaultValue: 10000,
|
|
22
|
+
}),
|
|
23
|
+
},
|
|
24
|
+
run(context) {
|
|
25
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
26
|
+
var _a;
|
|
27
|
+
const indexName = (0, utils_1.parseRequiredString)(context.propsValue.indexName, 'Index');
|
|
28
|
+
return (0, client_1.browseAlgoliaRecords)({
|
|
29
|
+
auth: context.auth,
|
|
30
|
+
indexName,
|
|
31
|
+
limit: (_a = context.propsValue.limit) !== null && _a !== void 0 ? _a : 10000,
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
},
|
|
35
|
+
});
|
|
36
|
+
//# sourceMappingURL=browse-records.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browse-records.js","sourceRoot":"","sources":["../../../../src/lib/actions/browse-records.ts"],"names":[],"mappings":";;;;AAAA,qEAAwE;AAExE,yCAA6C;AAC7C,6CAAwD;AACxD,2CAA+C;AAC/C,2CAAsD;AAEzC,QAAA,mBAAmB,GAAG,IAAA,+BAAY,EAAC;IAC9C,IAAI,EAAE,kBAAW;IACjB,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE,gBAAgB;IAC7B,WAAW,EAAE,0CAA0C;IACvD,KAAK,EAAE;QACL,SAAS,EAAE,oBAAY,CAAC,KAAK,EAAE;QAC/B,KAAK,EAAE,2BAAQ,CAAC,MAAM,CAAC;YACrB,WAAW,EAAE,OAAO;YACpB,WAAW,EAAE,4DAA4D;YACzE,QAAQ,EAAE,KAAK;YACf,YAAY,EAAE,KAAM;SACrB,CAAC;KACH;IACK,GAAG,CAAC,OAAO;;;YACf,MAAM,SAAS,GAAG,IAAA,2BAAmB,EAAC,OAAO,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAE7E,OAAO,IAAA,6BAAoB,EAAC;gBAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,SAAS;gBACT,KAAK,EAAE,MAAA,OAAO,CAAC,UAAU,CAAC,KAAK,mCAAI,KAAM;aAC1C,CAAC,CAAC;QACL,CAAC;KAAA;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare const deleteRecordsAction: import("@activepieces/pieces-framework").IAction<import("@activepieces/pieces-framework").CustomAuthProperty<{
|
|
2
|
+
applicationId: import("@activepieces/pieces-framework").ShortTextProperty<true>;
|
|
3
|
+
apiKey: import("@activepieces/pieces-framework").SecretTextProperty<true>;
|
|
4
|
+
}>, {
|
|
5
|
+
indexName: import("@activepieces/pieces-framework").DropdownProperty<string, false, import("@activepieces/pieces-framework").CustomAuthProperty<{
|
|
6
|
+
applicationId: import("@activepieces/pieces-framework").ShortTextProperty<true>;
|
|
7
|
+
apiKey: import("@activepieces/pieces-framework").SecretTextProperty<true>;
|
|
8
|
+
}>> | import("@activepieces/pieces-framework").DropdownProperty<string, true, import("@activepieces/pieces-framework").CustomAuthProperty<{
|
|
9
|
+
applicationId: import("@activepieces/pieces-framework").ShortTextProperty<true>;
|
|
10
|
+
apiKey: import("@activepieces/pieces-framework").SecretTextProperty<true>;
|
|
11
|
+
}>>;
|
|
12
|
+
recordIds: import("@activepieces/pieces-framework").ArrayProperty<true>;
|
|
13
|
+
}>;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.deleteRecordsAction = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const pieces_framework_1 = require("@activepieces/pieces-framework");
|
|
6
|
+
const auth_1 = require("../common/auth");
|
|
7
|
+
const client_1 = require("../common/client");
|
|
8
|
+
const props_1 = require("../common/props");
|
|
9
|
+
const utils_1 = require("../common/utils");
|
|
10
|
+
exports.deleteRecordsAction = (0, pieces_framework_1.createAction)({
|
|
11
|
+
auth: auth_1.algoliaAuth,
|
|
12
|
+
name: 'delete-records',
|
|
13
|
+
displayName: 'Delete Records',
|
|
14
|
+
description: 'Deletes records from an Algolia index by objectID.',
|
|
15
|
+
props: {
|
|
16
|
+
indexName: props_1.algoliaProps.index(),
|
|
17
|
+
recordIds: pieces_framework_1.Property.Array({
|
|
18
|
+
displayName: 'Record IDs',
|
|
19
|
+
description: 'Provide the Algolia objectIDs to delete from the selected index.',
|
|
20
|
+
required: true,
|
|
21
|
+
}),
|
|
22
|
+
},
|
|
23
|
+
run(context) {
|
|
24
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
25
|
+
const indexName = (0, utils_1.parseRequiredString)(context.propsValue.indexName, 'Index');
|
|
26
|
+
const objectIDs = (0, utils_1.parseStringArray)(context.propsValue.recordIds, 'Record IDs');
|
|
27
|
+
return (0, client_1.deleteAlgoliaRecords)({
|
|
28
|
+
auth: context.auth,
|
|
29
|
+
indexName,
|
|
30
|
+
objectIDs,
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
},
|
|
34
|
+
});
|
|
35
|
+
//# sourceMappingURL=delete-records.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete-records.js","sourceRoot":"","sources":["../../../../src/lib/actions/delete-records.ts"],"names":[],"mappings":";;;;AAAA,qEAAwE;AAExE,yCAA6C;AAC7C,6CAAwD;AACxD,2CAA+C;AAC/C,2CAAwE;AAE3D,QAAA,mBAAmB,GAAG,IAAA,+BAAY,EAAC;IAC9C,IAAI,EAAE,kBAAW;IACjB,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE,gBAAgB;IAC7B,WAAW,EAAE,oDAAoD;IACjE,KAAK,EAAE;QACL,SAAS,EAAE,oBAAY,CAAC,KAAK,EAAE;QAC/B,SAAS,EAAE,2BAAQ,CAAC,KAAK,CAAC;YACxB,WAAW,EAAE,YAAY;YACzB,WAAW,EACT,kEAAkE;YACpE,QAAQ,EAAE,IAAI;SACf,CAAC;KACH;IACK,GAAG,CAAC,OAAO;;YACf,MAAM,SAAS,GAAG,IAAA,2BAAmB,EAAC,OAAO,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAC7E,MAAM,SAAS,GAAG,IAAA,wBAAgB,EAAC,OAAO,CAAC,UAAU,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;YAE/E,OAAO,IAAA,6BAAoB,EAAC;gBAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,SAAS;gBACT,SAAS;aACV,CAAC,CAAC;QACL,CAAC;KAAA;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare const saveRecordsAction: import("@activepieces/pieces-framework").IAction<import("@activepieces/pieces-framework").CustomAuthProperty<{
|
|
2
|
+
applicationId: import("@activepieces/pieces-framework").ShortTextProperty<true>;
|
|
3
|
+
apiKey: import("@activepieces/pieces-framework").SecretTextProperty<true>;
|
|
4
|
+
}>, {
|
|
5
|
+
indexName: import("@activepieces/pieces-framework").ShortTextProperty<true>;
|
|
6
|
+
records: import("@activepieces/pieces-framework").JsonProperty<true>;
|
|
7
|
+
}>;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.saveRecordsAction = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const pieces_framework_1 = require("@activepieces/pieces-framework");
|
|
6
|
+
const auth_1 = require("../common/auth");
|
|
7
|
+
const client_1 = require("../common/client");
|
|
8
|
+
const utils_1 = require("../common/utils");
|
|
9
|
+
exports.saveRecordsAction = (0, pieces_framework_1.createAction)({
|
|
10
|
+
auth: auth_1.algoliaAuth,
|
|
11
|
+
name: 'save-records',
|
|
12
|
+
displayName: 'Save Records',
|
|
13
|
+
description: 'Adds or updates records in an Algolia index.',
|
|
14
|
+
props: {
|
|
15
|
+
indexName: pieces_framework_1.Property.ShortText({
|
|
16
|
+
displayName: 'Index Name',
|
|
17
|
+
description: 'Enter an existing index name or a new one — Algolia creates it automatically.',
|
|
18
|
+
required: true,
|
|
19
|
+
}),
|
|
20
|
+
records: pieces_framework_1.Property.Json({
|
|
21
|
+
displayName: 'Records',
|
|
22
|
+
description: 'Provide an array of JSON objects to save. Include `objectID` to update an existing record, or omit it to let Algolia create one.',
|
|
23
|
+
required: true,
|
|
24
|
+
}),
|
|
25
|
+
},
|
|
26
|
+
run(context) {
|
|
27
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
28
|
+
const indexName = (0, utils_1.parseRequiredString)(context.propsValue.indexName, 'Index Name');
|
|
29
|
+
const records = (0, utils_1.parseAlgoliaRecordArray)(context.propsValue.records);
|
|
30
|
+
return (0, client_1.saveAlgoliaRecords)({
|
|
31
|
+
auth: context.auth,
|
|
32
|
+
indexName,
|
|
33
|
+
records,
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
},
|
|
37
|
+
});
|
|
38
|
+
//# sourceMappingURL=save-records.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"save-records.js","sourceRoot":"","sources":["../../../../src/lib/actions/save-records.ts"],"names":[],"mappings":";;;;AAAA,qEAAwE;AAExE,yCAA6C;AAC7C,6CAAsD;AACtD,2CAA+E;AAElE,QAAA,iBAAiB,GAAG,IAAA,+BAAY,EAAC;IAC5C,IAAI,EAAE,kBAAW;IACjB,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,cAAc;IAC3B,WAAW,EAAE,8CAA8C;IAC3D,KAAK,EAAE;QACL,SAAS,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC5B,WAAW,EAAE,YAAY;YACzB,WAAW,EACT,+EAA+E;YACjF,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,OAAO,EAAE,2BAAQ,CAAC,IAAI,CAAC;YACrB,WAAW,EAAE,SAAS;YACtB,WAAW,EACT,kIAAkI;YACpI,QAAQ,EAAE,IAAI;SACf,CAAC;KACH;IACK,GAAG,CAAC,OAAO;;YACf,MAAM,SAAS,GAAG,IAAA,2BAAmB,EAAC,OAAO,CAAC,UAAU,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;YAClF,MAAM,OAAO,GAAG,IAAA,+BAAuB,EAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAEpE,OAAO,IAAA,2BAAkB,EAAC;gBACxB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,SAAS;gBACT,OAAO;aACR,CAAC,CAAC;QACL,CAAC;KAAA;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.algoliaAuth = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const pieces_framework_1 = require("@activepieces/pieces-framework");
|
|
6
|
+
const shared_1 = require("@activepieces/shared");
|
|
7
|
+
const client_1 = require("./client");
|
|
8
|
+
exports.algoliaAuth = pieces_framework_1.PieceAuth.CustomAuth({
|
|
9
|
+
displayName: 'Connection',
|
|
10
|
+
description: `Authenticate with your Algolia Application ID and API key.
|
|
11
|
+
|
|
12
|
+
To get your credentials:
|
|
13
|
+
1. Sign in to the Algolia dashboard.
|
|
14
|
+
2. Open **Settings > API Keys**.
|
|
15
|
+
3. Copy your **Application ID**.
|
|
16
|
+
4. Copy an API key that can list indexes and manage records.
|
|
17
|
+
|
|
18
|
+
This piece needs permissions for \`listIndexes\`, \`browse\`, \`addObject\`, and \`deleteObject\`. Search-only API keys won't work for these actions.`,
|
|
19
|
+
required: true,
|
|
20
|
+
props: {
|
|
21
|
+
applicationId: pieces_framework_1.Property.ShortText({
|
|
22
|
+
displayName: 'Application ID',
|
|
23
|
+
description: 'Your Algolia application ID.',
|
|
24
|
+
required: true,
|
|
25
|
+
}),
|
|
26
|
+
apiKey: pieces_framework_1.PieceAuth.SecretText({
|
|
27
|
+
displayName: 'API Key',
|
|
28
|
+
description: 'An Algolia API key with index browsing and record write permissions.',
|
|
29
|
+
required: true,
|
|
30
|
+
}),
|
|
31
|
+
},
|
|
32
|
+
validate: (_a) => tslib_1.__awaiter(void 0, [_a], void 0, function* ({ auth }) {
|
|
33
|
+
const { error } = yield (0, shared_1.tryCatch)(() => (0, client_1.validateAlgoliaAuth)({
|
|
34
|
+
props: {
|
|
35
|
+
applicationId: auth.applicationId,
|
|
36
|
+
apiKey: auth.apiKey,
|
|
37
|
+
},
|
|
38
|
+
}));
|
|
39
|
+
if (error) {
|
|
40
|
+
return {
|
|
41
|
+
valid: false,
|
|
42
|
+
error: 'Invalid Algolia credentials or missing required index permissions.',
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
valid: true,
|
|
47
|
+
};
|
|
48
|
+
}),
|
|
49
|
+
});
|
|
50
|
+
//# sourceMappingURL=auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../../src/lib/common/auth.ts"],"names":[],"mappings":";;;;AAAA,qEAAqE;AACrE,iDAAgD;AAEhD,qCAA+C;AAElC,QAAA,WAAW,GAAG,4BAAS,CAAC,UAAU,CAAC;IAC9C,WAAW,EAAE,YAAY;IACzB,WAAW,EAAE;;;;;;;;sJAQuI;IACpJ,QAAQ,EAAE,IAAI;IACd,KAAK,EAAE;QACL,aAAa,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAChC,WAAW,EAAE,gBAAgB;YAC7B,WAAW,EAAE,8BAA8B;YAC3C,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,MAAM,EAAE,4BAAS,CAAC,UAAU,CAAC;YAC3B,WAAW,EAAE,SAAS;YACtB,WAAW,EAAE,sEAAsE;YACnF,QAAQ,EAAE,IAAI;SACf,CAAC;KACH;IACD,QAAQ,EAAE,KAAiB,EAAE,oDAAZ,EAAE,IAAI,EAAE;QACvB,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAA,iBAAQ,EAAC,GAAG,EAAE,CACpC,IAAA,4BAAmB,EAAC;YAClB,KAAK,EAAE;gBACL,aAAa,EAAE,IAAI,CAAC,aAAa;gBACjC,MAAM,EAAE,IAAI,CAAC,MAAM;aACpB;SACF,CAAC,CACH,CAAC;QAEF,IAAI,KAAK,EAAE,CAAC;YACV,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,KAAK,EACH,oEAAoE;aACvE,CAAC;QACJ,CAAC;QAED,OAAO;YACL,KAAK,EAAE,IAAI;SACZ,CAAC;IACJ,CAAC,CAAA;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { AlgoliaAuthValue, AlgoliaBatchResponse, AlgoliaIndex, AlgoliaRecord } from './types';
|
|
2
|
+
export declare function validateAlgoliaAuth(auth: AlgoliaAuthValue): Promise<void>;
|
|
3
|
+
export declare function listAlgoliaIndices({ auth, limit, }: {
|
|
4
|
+
auth: AlgoliaAuthValue;
|
|
5
|
+
limit?: number;
|
|
6
|
+
}): Promise<AlgoliaIndex[]>;
|
|
7
|
+
export declare function saveAlgoliaRecords({ auth, indexName, records, }: {
|
|
8
|
+
auth: AlgoliaAuthValue;
|
|
9
|
+
indexName: string;
|
|
10
|
+
records: AlgoliaRecord[];
|
|
11
|
+
}): Promise<AlgoliaBatchResponse>;
|
|
12
|
+
export declare function browseAlgoliaRecords({ auth, indexName, limit, }: {
|
|
13
|
+
auth: AlgoliaAuthValue;
|
|
14
|
+
indexName: string;
|
|
15
|
+
limit?: number;
|
|
16
|
+
}): Promise<AlgoliaRecord[]>;
|
|
17
|
+
export declare function deleteAlgoliaRecords({ auth, indexName, objectIDs, }: {
|
|
18
|
+
auth: AlgoliaAuthValue;
|
|
19
|
+
indexName: string;
|
|
20
|
+
objectIDs: string[];
|
|
21
|
+
}): Promise<AlgoliaBatchResponse>;
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateAlgoliaAuth = validateAlgoliaAuth;
|
|
4
|
+
exports.listAlgoliaIndices = listAlgoliaIndices;
|
|
5
|
+
exports.saveAlgoliaRecords = saveAlgoliaRecords;
|
|
6
|
+
exports.browseAlgoliaRecords = browseAlgoliaRecords;
|
|
7
|
+
exports.deleteAlgoliaRecords = deleteAlgoliaRecords;
|
|
8
|
+
const tslib_1 = require("tslib");
|
|
9
|
+
const pieces_common_1 = require("@activepieces/pieces-common");
|
|
10
|
+
function validateAlgoliaAuth(auth) {
|
|
11
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
12
|
+
yield listAlgoliaIndices({
|
|
13
|
+
auth,
|
|
14
|
+
limit: 1,
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
function listAlgoliaIndices(_a) {
|
|
19
|
+
return tslib_1.__awaiter(this, arguments, void 0, function* ({ auth, limit = 1000, }) {
|
|
20
|
+
const indices = [];
|
|
21
|
+
let page = 0;
|
|
22
|
+
while (indices.length < limit) {
|
|
23
|
+
const remaining = limit - indices.length;
|
|
24
|
+
const response = yield sendRequest({
|
|
25
|
+
auth,
|
|
26
|
+
method: pieces_common_1.HttpMethod.GET,
|
|
27
|
+
path: '/indexes',
|
|
28
|
+
queryParams: {
|
|
29
|
+
page: String(page),
|
|
30
|
+
hitsPerPage: String(Math.min(remaining, ALGOLIA_MAX_PAGE_SIZE)),
|
|
31
|
+
},
|
|
32
|
+
});
|
|
33
|
+
indices.push(...response.items);
|
|
34
|
+
if (response.items.length === 0 || page + 1 >= response.nbPages) {
|
|
35
|
+
break;
|
|
36
|
+
}
|
|
37
|
+
page += 1;
|
|
38
|
+
}
|
|
39
|
+
return indices;
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
function saveAlgoliaRecords(_a) {
|
|
43
|
+
return tslib_1.__awaiter(this, arguments, void 0, function* ({ auth, indexName, records, }) {
|
|
44
|
+
const response = yield sendRequest({
|
|
45
|
+
auth,
|
|
46
|
+
method: pieces_common_1.HttpMethod.POST,
|
|
47
|
+
path: `/indexes/${encodeURIComponent(indexName)}/batch`,
|
|
48
|
+
body: {
|
|
49
|
+
requests: records.map((record) => ({
|
|
50
|
+
action: 'addObject',
|
|
51
|
+
body: record,
|
|
52
|
+
})),
|
|
53
|
+
},
|
|
54
|
+
});
|
|
55
|
+
yield waitForTask({
|
|
56
|
+
auth,
|
|
57
|
+
indexName,
|
|
58
|
+
taskId: response.taskID,
|
|
59
|
+
});
|
|
60
|
+
return response;
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
function browseAlgoliaRecords(_a) {
|
|
64
|
+
return tslib_1.__awaiter(this, arguments, void 0, function* ({ auth, indexName, limit = 10000, }) {
|
|
65
|
+
const records = [];
|
|
66
|
+
let cursor;
|
|
67
|
+
do {
|
|
68
|
+
const response = yield sendRequest({
|
|
69
|
+
auth,
|
|
70
|
+
method: pieces_common_1.HttpMethod.POST,
|
|
71
|
+
path: `/indexes/${encodeURIComponent(indexName)}/browse`,
|
|
72
|
+
body: cursor ? { cursor } : {},
|
|
73
|
+
});
|
|
74
|
+
records.push(...response.hits);
|
|
75
|
+
cursor = response.cursor;
|
|
76
|
+
} while (cursor && records.length < limit);
|
|
77
|
+
return records.slice(0, limit);
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
function deleteAlgoliaRecords(_a) {
|
|
81
|
+
return tslib_1.__awaiter(this, arguments, void 0, function* ({ auth, indexName, objectIDs, }) {
|
|
82
|
+
const response = yield sendRequest({
|
|
83
|
+
auth,
|
|
84
|
+
method: pieces_common_1.HttpMethod.POST,
|
|
85
|
+
path: `/indexes/${encodeURIComponent(indexName)}/batch`,
|
|
86
|
+
body: {
|
|
87
|
+
requests: objectIDs.map((objectID) => ({
|
|
88
|
+
action: 'deleteObject',
|
|
89
|
+
body: {
|
|
90
|
+
objectID,
|
|
91
|
+
},
|
|
92
|
+
})),
|
|
93
|
+
},
|
|
94
|
+
});
|
|
95
|
+
yield waitForTask({
|
|
96
|
+
auth,
|
|
97
|
+
indexName,
|
|
98
|
+
taskId: response.taskID,
|
|
99
|
+
});
|
|
100
|
+
return response;
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
function waitForTask(_a) {
|
|
104
|
+
return tslib_1.__awaiter(this, arguments, void 0, function* ({ auth, indexName, taskId, }) {
|
|
105
|
+
for (let attempt = 0; attempt < ALGOLIA_TASK_MAX_ATTEMPTS; attempt += 1) {
|
|
106
|
+
const response = yield sendRequest({
|
|
107
|
+
auth,
|
|
108
|
+
method: pieces_common_1.HttpMethod.GET,
|
|
109
|
+
path: `/indexes/${encodeURIComponent(indexName)}/task/${taskId}`,
|
|
110
|
+
});
|
|
111
|
+
if (response.status === 'published') {
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
yield sleep(ALGOLIA_TASK_POLL_INTERVAL_MILLISECONDS);
|
|
115
|
+
}
|
|
116
|
+
throw new Error('The Algolia operation is taking too long. Try again or check your Algolia dashboard for the task status.');
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
function sendRequest(_a) {
|
|
120
|
+
return tslib_1.__awaiter(this, arguments, void 0, function* ({ auth, method, path, body, queryParams, }) {
|
|
121
|
+
const request = Object.assign(Object.assign({ method, url: `https://${auth.props.applicationId}.algolia.net/1${path}`, headers: {
|
|
122
|
+
'x-algolia-application-id': auth.props.applicationId,
|
|
123
|
+
'x-algolia-api-key': auth.props.apiKey,
|
|
124
|
+
Accept: 'application/json',
|
|
125
|
+
'Content-Type': 'application/json',
|
|
126
|
+
} }, (body ? { body } : {})), (queryParams ? { queryParams } : {}));
|
|
127
|
+
const response = yield pieces_common_1.httpClient.sendRequest(request);
|
|
128
|
+
return response.body;
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
function sleep(milliseconds) {
|
|
132
|
+
return new Promise((resolve) => {
|
|
133
|
+
setTimeout(resolve, milliseconds);
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
const ALGOLIA_MAX_PAGE_SIZE = 1000;
|
|
137
|
+
const ALGOLIA_TASK_MAX_ATTEMPTS = 30;
|
|
138
|
+
const ALGOLIA_TASK_POLL_INTERVAL_MILLISECONDS = 1000;
|
|
139
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../src/lib/common/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare const algoliaProps: {
|
|
2
|
+
index: (required?: boolean) => import("@activepieces/pieces-framework").DropdownProperty<string, false, import("@activepieces/pieces-framework").CustomAuthProperty<{
|
|
3
|
+
applicationId: import("@activepieces/pieces-framework").ShortTextProperty<true>;
|
|
4
|
+
apiKey: import("@activepieces/pieces-framework").SecretTextProperty<true>;
|
|
5
|
+
}>> | import("@activepieces/pieces-framework").DropdownProperty<string, true, import("@activepieces/pieces-framework").CustomAuthProperty<{
|
|
6
|
+
applicationId: import("@activepieces/pieces-framework").ShortTextProperty<true>;
|
|
7
|
+
apiKey: import("@activepieces/pieces-framework").SecretTextProperty<true>;
|
|
8
|
+
}>>;
|
|
9
|
+
};
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.algoliaProps = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const pieces_framework_1 = require("@activepieces/pieces-framework");
|
|
6
|
+
const shared_1 = require("@activepieces/shared");
|
|
7
|
+
const auth_1 = require("./auth");
|
|
8
|
+
const client_1 = require("./client");
|
|
9
|
+
const utils_1 = require("./utils");
|
|
10
|
+
exports.algoliaProps = {
|
|
11
|
+
index: (required = true) => pieces_framework_1.Property.Dropdown({
|
|
12
|
+
auth: auth_1.algoliaAuth,
|
|
13
|
+
displayName: 'Index',
|
|
14
|
+
description: 'Select the Algolia index to use.',
|
|
15
|
+
required,
|
|
16
|
+
refreshers: ['auth'],
|
|
17
|
+
options: (_a) => tslib_1.__awaiter(void 0, [_a], void 0, function* ({ auth }) {
|
|
18
|
+
if (!(0, utils_1.isAlgoliaAuthValue)(auth)) {
|
|
19
|
+
return {
|
|
20
|
+
disabled: true,
|
|
21
|
+
options: [],
|
|
22
|
+
placeholder: 'Connect your account first',
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
const { data: indices, error } = yield (0, shared_1.tryCatch)(() => (0, client_1.listAlgoliaIndices)({
|
|
26
|
+
auth,
|
|
27
|
+
}));
|
|
28
|
+
if (error) {
|
|
29
|
+
return {
|
|
30
|
+
disabled: true,
|
|
31
|
+
options: [],
|
|
32
|
+
placeholder: 'Failed to load indices. Check your connection.',
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
if (indices.length === 0) {
|
|
36
|
+
return {
|
|
37
|
+
disabled: false,
|
|
38
|
+
options: [],
|
|
39
|
+
placeholder: 'No indices found. Save records to a new index first.',
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
return {
|
|
43
|
+
disabled: false,
|
|
44
|
+
options: indices.map((index) => ({
|
|
45
|
+
label: index.name,
|
|
46
|
+
value: index.name,
|
|
47
|
+
})),
|
|
48
|
+
};
|
|
49
|
+
}),
|
|
50
|
+
}),
|
|
51
|
+
};
|
|
52
|
+
//# sourceMappingURL=props.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"props.js","sourceRoot":"","sources":["../../../../src/lib/common/props.ts"],"names":[],"mappings":";;;;AAAA,qEAA0D;AAC1D,iDAAgD;AAEhD,iCAAqC;AACrC,qCAA8C;AAC9C,mCAA6C;AAEhC,QAAA,YAAY,GAAG;IAC1B,KAAK,EAAE,CAAC,QAAQ,GAAG,IAAI,EAAE,EAAE,CACzB,2BAAQ,CAAC,QAAQ,CAAC;QAChB,IAAI,EAAE,kBAAW;QACjB,WAAW,EAAE,OAAO;QACpB,WAAW,EAAE,kCAAkC;QAC/C,QAAQ;QACR,UAAU,EAAE,CAAC,MAAM,CAAC;QACpB,OAAO,EAAE,KAAiB,EAAE,oDAAZ,EAAE,IAAI,EAAE;YACtB,IAAI,CAAC,IAAA,0BAAkB,EAAC,IAAI,CAAC,EAAE,CAAC;gBAC9B,OAAO;oBACL,QAAQ,EAAE,IAAI;oBACd,OAAO,EAAE,EAAE;oBACX,WAAW,EAAE,4BAA4B;iBAC1C,CAAC;YACJ,CAAC;YAED,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,MAAM,IAAA,iBAAQ,EAAC,GAAG,EAAE,CACnD,IAAA,2BAAkB,EAAC;gBACjB,IAAI;aACL,CAAC,CACH,CAAC;YAEF,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO;oBACL,QAAQ,EAAE,IAAI;oBACd,OAAO,EAAE,EAAE;oBACX,WAAW,EAAE,gDAAgD;iBAC9D,CAAC;YACJ,CAAC;YAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO;oBACL,QAAQ,EAAE,KAAK;oBACf,OAAO,EAAE,EAAE;oBACX,WAAW,EAAE,sDAAsD;iBACpE,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,QAAQ,EAAE,KAAK;gBACf,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;oBAC/B,KAAK,EAAE,KAAK,CAAC,IAAI;oBACjB,KAAK,EAAE,KAAK,CAAC,IAAI;iBAClB,CAAC,CAAC;aACJ,CAAC;QACJ,CAAC,CAAA;KACF,CAAC;CACL,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export type AlgoliaAuthValue = {
|
|
2
|
+
props: {
|
|
3
|
+
applicationId: string;
|
|
4
|
+
apiKey: string;
|
|
5
|
+
};
|
|
6
|
+
};
|
|
7
|
+
export type AlgoliaRecord = {
|
|
8
|
+
[key: string]: AlgoliaJsonValue;
|
|
9
|
+
};
|
|
10
|
+
export type AlgoliaJsonValue = string | number | boolean | null | AlgoliaRecord | AlgoliaJsonValue[];
|
|
11
|
+
export type AlgoliaIndex = {
|
|
12
|
+
name: string;
|
|
13
|
+
entries?: number;
|
|
14
|
+
dataSize?: number;
|
|
15
|
+
updatedAt?: string;
|
|
16
|
+
};
|
|
17
|
+
export type AlgoliaIndexListResponse = {
|
|
18
|
+
items: AlgoliaIndex[];
|
|
19
|
+
nbPages: number;
|
|
20
|
+
};
|
|
21
|
+
export type AlgoliaBrowseResponse = {
|
|
22
|
+
hits: AlgoliaRecord[];
|
|
23
|
+
cursor?: string;
|
|
24
|
+
};
|
|
25
|
+
export type AlgoliaBatchResponse = {
|
|
26
|
+
taskID: number;
|
|
27
|
+
objectIDs?: string[];
|
|
28
|
+
};
|
|
29
|
+
export type AlgoliaTaskStatusResponse = {
|
|
30
|
+
status: 'published' | 'notPublished';
|
|
31
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/lib/common/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { AlgoliaAuthValue, AlgoliaRecord } from './types';
|
|
2
|
+
export declare function parseRequiredString(value: unknown, fieldName: string): string;
|
|
3
|
+
export declare function parseStringArray(value: unknown, fieldName: string): string[];
|
|
4
|
+
export declare function parseAlgoliaRecordArray(value: unknown): AlgoliaRecord[];
|
|
5
|
+
export declare function isAlgoliaAuthValue(value: unknown): value is AlgoliaAuthValue;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseRequiredString = parseRequiredString;
|
|
4
|
+
exports.parseStringArray = parseStringArray;
|
|
5
|
+
exports.parseAlgoliaRecordArray = parseAlgoliaRecordArray;
|
|
6
|
+
exports.isAlgoliaAuthValue = isAlgoliaAuthValue;
|
|
7
|
+
function parseRequiredString(value, fieldName) {
|
|
8
|
+
if (typeof value !== 'string' || value.trim().length === 0) {
|
|
9
|
+
throw new Error(`${fieldName} is required.`);
|
|
10
|
+
}
|
|
11
|
+
return value.trim();
|
|
12
|
+
}
|
|
13
|
+
function parseStringArray(value, fieldName) {
|
|
14
|
+
if (!Array.isArray(value) || value.length === 0) {
|
|
15
|
+
throw new Error(`${fieldName} must contain at least one value.`);
|
|
16
|
+
}
|
|
17
|
+
return value.map((entry, index) => {
|
|
18
|
+
if (typeof entry !== 'string' || entry.trim().length === 0) {
|
|
19
|
+
throw new Error(`${fieldName} item ${index + 1} must be a non-empty string.`);
|
|
20
|
+
}
|
|
21
|
+
return entry.trim();
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
function parseAlgoliaRecordArray(value) {
|
|
25
|
+
if (!Array.isArray(value) || value.length === 0) {
|
|
26
|
+
throw new Error('Records must be a non-empty array of JSON objects.');
|
|
27
|
+
}
|
|
28
|
+
return value.map((entry, index) => {
|
|
29
|
+
if (!isAlgoliaRecord(entry)) {
|
|
30
|
+
throw new Error(`Record ${index + 1} must be a JSON object with JSON-compatible values.`);
|
|
31
|
+
}
|
|
32
|
+
return entry;
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
function isAlgoliaAuthValue(value) {
|
|
36
|
+
if (!isObject(value)) {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
const props = value['props'];
|
|
40
|
+
if (!isObject(props)) {
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
return (typeof props['applicationId'] === 'string' &&
|
|
44
|
+
props['applicationId'].trim().length > 0 &&
|
|
45
|
+
typeof props['apiKey'] === 'string' &&
|
|
46
|
+
props['apiKey'].trim().length > 0);
|
|
47
|
+
}
|
|
48
|
+
function isAlgoliaRecord(value) {
|
|
49
|
+
if (!isObject(value)) {
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
return Object.values(value).every(isAlgoliaJsonValue);
|
|
53
|
+
}
|
|
54
|
+
function isAlgoliaJsonValue(value) {
|
|
55
|
+
if (typeof value === 'string' ||
|
|
56
|
+
typeof value === 'number' ||
|
|
57
|
+
typeof value === 'boolean' ||
|
|
58
|
+
value === null) {
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
61
|
+
if (Array.isArray(value)) {
|
|
62
|
+
return value.every(isAlgoliaJsonValue);
|
|
63
|
+
}
|
|
64
|
+
return isObject(value) && Object.values(value).every(isAlgoliaJsonValue);
|
|
65
|
+
}
|
|
66
|
+
function isObject(value) {
|
|
67
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/lib/common/utils.ts"],"names":[],"mappings":"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"}
|